ROSでCoppeliaSim(旧V-REP)を使う:ライブラリのインストール

ライブラリとしてsimExtROSInterfaceをビルドする必要があるのだが、これが鬼門だった(ドキュメントがない)

simExtROSInterfaceライブラリ本体のレポジトリは以下だが、これのビルドにlibPluginが必要
github.com

理由→普通にビルドすると、CmakeLists.txt仲のcoppeliasim_add_pluginというコマンドが未定義といエラーでコケる。これはsimExtROSInterfaceレポジトリではなく、libPluginレポジトリのcmakeファイル、FindCoppeliaSim.cmakeのなかで定義されている。l

libPluginをどうやってビルドするのかが不明だったが、以下のように試行錯誤したらビルドできた。

事前準備

依存関係のインストール

$ sudo apt install xsltproc
$ python3 -m pip install xmlschema

0. 環境変数の設定(CoppeliasimをUbunutuにインストールした前提。インストールはCoppeliasimをダウンロードしてきて適当な場所に解凍する)
~/.bashrc

export COPPELIASIM_ROOT_DIR=~/Documents/CoppeliaSim/

1. simExtROSInterfaceをクローン(フォルダ名をsim_ros_interfaceに変更しないとビルドが失敗する)

$ cd ~/catkin_ws/src
$ git clone --recursive https://github.com/CoppeliaRobotics/simExtROSInterface.git sim_ros_interface

2. libPluginをクローン

$ cd sim_ros_interface
$ git clone  https://github.com/CoppeliaRobotics/libPlugin

3. フォルダの構成をいじる

$ mv libPlugin/cmake .
$ mv libPlugin/simPlusPlus .
$ mv libPlugin/simStubsGen .
$ mv libPlugin/simTest .
$ rm -rf liPlugin

4. CMakeの編集

$ vim CMakeLists.txt
  1 cmake_minimum_required(VERSION 3.16)
  2 project(sim_ros_interface)
  3 #ここから追加
  4 set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake"    )
  5 include(FindCoppeliaSim)
  6 #ここまで追加

5. ビルド

$ cd ~/catkin_ws/src
$ catkin_make


ビルドが成功した。
これでsimExtROSInterface.soができるのかと思ったけど、フォルダのなかに見当たらない。

install.shというスクリプトがあったので、実行してみた

$ chmod +x install.sh
$ ./install.sh

buildというフォルダができたので、この中に入ってみた。
makeファイルがあったので、makeしてみたところ、makeが完了した。

devel/lib/のなかに、libsimExtROSInterface.soができていたので、これをCoppeliaSimフォルダの下のコピーして使うことにする。

と思ったら!

CoppeliaSimのフォルダの中に、すでにlibsimExtROSInterface.soが存在した。。しかもlibsimExtROS2Interface.soというROS2用のライブラリもあった。