環境
Ubuntu 20.04
Ignition Citadel
共有ライブラリを作ってみる1
公式
Ignition Gazebo: Create System Plugins
を参考に
とにかく共有ライブラリを作ってみる
この通りに作成すると、
CMake Error at CMakeLists.txt:3 (ign_find_package): Unknown CMake command "ign_find_package".
最初のビルドがつまづきました。
共有ライブラリを作ってみる2
ign-gazebo/examples/plugin/system_plugin at ign-gazebo4 · ignitionrobotics/ign-gazebo · GitHub
こちらにPluginのサンプルがある。
$ mkdir build $ cmake .. $ make
このサンプルがあるign-gazeboをクローンすると、うまくビルドできます。
Ignition Gazeboのpluginsはパスのデフォルトでは
/usr/lib/x86_64-linux-gnu/ign-gazebo-3/plugins
です。
ということで先程、生成したlibSampleSystem.soをそのディレクトリへコピペします。
$ cd build $ sudo cp libSampleSystem.so /usr/lib/x86_64-linux-gnu/ign-gazebo-3/plugins
もしくは実行時にプラグインパスの上書きをします。
$ export IGN_GAZEBO_SYSTEM_PLUGIN_PATH=`pwd`/build
SDF書き換え
$ cd /usr/share/ignition/ignition-gazebo3/worlds
default.sdfにプラグインを追加します
$ sudo gedit default.sdf
追記内容
<plugin filename="libSampleSystem.so" name="sample_system::SampleSystem"> </plugin> <plugin filename="libSampleSystem.so" name="sample_system::SampleSystem2"> </plugin>
実行
$ ign gazebo default.sdf
ちなみにメッセージレベルを4にすることによってignmsgを表示することができます。
$ ign gazebo -v4 default.sdf
参考
Ignition Gazebo: Create System Plugins
ign-gazebo/src/systems at main · ignitionrobotics/ign-gazebo · GitHub
https://ignitionrobotics.org/api/gazebo/3.0/migrationplugins.html