mc_rtc::Configuration
設定mc_rtcでは、どのインターフェイスでも、mc_control::MCGlobalController
クラスを使用して本フレームワークのコントローラーが初期化されて実行されます。特に、反復実行時にはmc_control::MCGlobalController::run()
関数が実行されます。
本フレームワークではプラグインシステムが採用されており、このrun関数の開始時と終了時に実行されるコンポーネントを記述できます。
このプラグインはさまざまな用途に使用できます。
プラグインを記述するには、mc_control::GlobalPlugin
クラスから継承したクラスを記述します。さらに、以下の関数を実装します。
mc_control::GlobalPlugin::init()
は、mc_control::MCGlobalController::init()
が呼び出されたときにmc_rtcによって呼び出されます。mc_control::GlobalPlugin::reset()
は、コントローラーが変更されたときにmc_rtcによって呼び出されます。mc_control::GlobalPlugin::before()
は、実行関数の開始時に呼び出されます。mc_control::GlobalPlugin::after()
は、実行関数の終了時に呼び出されます。最後に、mc_rtcに読み込み可能な共有ライブラリに、作成したクラスをエクスポートします。これを実現するには、mc_rtcで用意されているEXPORT_MC_RTC_PLUGIN
マクロを使用するのが最も簡単です。これは、コントローラー、状態、ロボットモジュール用のマクロと似ています。
mc_cotrol::GlobalPlugin::configuration()メソッドを置き換えることもできます。これにより、実行ループの前後でプラグインを実行させないようにmc_rtcに指示したり、コントローラーが実行されていないときにプラグインを実行するかどうかをmc_rtcに指示することが可能です。
デフォルトでは、before
メソッドとafter
メソッドは常に呼び出されます。
CMakeマクロadd_plugin
によって、AUTOLOAD_${PLUGIN}_PLUGIN
. という名前のCMakeオプションが自動的に作成されます。このオプションがON
の場合、特殊なファイルが${MC_RTC_INSTALL_PREFIX}/lib/mc_plugins/autoload
にインストールされます。このファイルが存在する場合、Plugins
設定エントリの内容にかかわらず、プラグインが自動的に読み込まれます。
mc-rtc/new-pluginテンプレートプロジェクトを使用すると、すぐに始められます。このテンプレートには、C++GlobalPlugin
用の必要最小限の構造が記述されています。