ライブラリとして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用のライブラリもあった。