設定

mc_rtcの全般オプションは、使用するインターフェイスにかかわらず、お使いのシステム内にある設定ファイルで定義されています。また、インターフェイスによっては、別の設定ファイルを指定することもできます(通常、コマンドラインで指定)。

このセクションでは、設定ファイルの読み込み元と、このファイルで使用可能な主なオプションについて説明します。

mc_rtc設定ファイルの格納場所

mc_rtcによって、以下の2つのファイルが系統的に読み取られます(ファイルが存在する場合)。

  1. $INSTALL_PREFIX/etc/mc_rtc.yaml
    • Linux/MacOS: $HOME/.config/mc_rtc/mc_rtc.yaml
    • Windows: %APPDATA%/mc_rtc/mc_rtc.yaml

インターフェイスによっては、追加の設定ファイルが読み込まれる場合があります。詳細については、インターフェイスのドキュメントを参照してください。

設定エントリ

エントリ 説明 例/デフォルト
Main entries
このエントリは、通常考えられるほとんどのニーズをカバーします。
MainRobot このエントリは、すべてのコントローラーで使用されるメインロボットを指定します。ほとんどのインターフェイスは、どのモジュールを使用すべきかをシミュレーション環境に基づいて推測することはできません。そのため、シミュレーション環境に応じてユーザーがモジュールを指定する必要があります。
MainRobot: JVRC1

または

# ロボット名の変更をサポート
MainRobot:
  name: MyRobot
  module: JVRC1
Enabled 有効なコントローラーのリストを提供します。利用可能なサンプルコントローラーのリストを参照してください。.
Enabled: [Posture, EndEffector, CoM]
Default 有効なコントローラーのうちどれを最初に起動するかを選択します。なお、デフォルトとして指定されたコントローラーが有効になっていない場合や、デフォルトのコントローラーが指定されていない場合は、リスト内で最初に登場する有効なコントローラーがデフォルトコントローラーとして選択されます。
Default: Posture
Timestep コントローラーのタイムステップ
Timestep: 0.005
Log コントローラーの出力をログに記録するかどうかを指定します。
Log: true
InitAttitudeFromSensor センサーとロボットモジュールのどちらでロボットの姿勢を初期化するかを指定します。
InitAttitudeFromSensor: false
InitAttitudeSensor ロボットの姿勢の初期化に使用されるボディセンサーの名前。名前が空の場合、デフォルトのボディセンサーが使用されます。このエントリは、
InitAttitudeFromSensor=true
の場合にだけ使用されます。
InitAttitudeSensor: ""
ロギングオプション
T以下のオプションは、mc_rtcによってコントローラーのアクティビティがどのようにログに記録されるかを規定します。ロギングが無効の場合は効果がありません。
LogDirectory このオプションは、ログファイルをどこに保存するかを指定します。デフォルトではシステムの一時ディレクトリに保存されます。
LogDirectory: "/tmp"
LogTemplate このオプションは、ログのプレフィックスを指定します。ログファイルには以下のように名前が付けられます。
[LogTemplate]-[ControllerName]-[date].log
LogTemplate: "mc-control"
LogPolicy このオプションは、ロギング関連のディスク操作を別スレッドで実行するか("threaded"))、run()ループと同じスレッドで実行するか("non-threaded")を指定します。デフォルトではnon-threadedポリシーが使用されます。リアルタイムシステムではthreadedポリシーの使用を強く推奨します。
LogPolicy: "non-threaded"
モジュール読み込みオプション
以下のオプションは、mc_rtcによって追加モジュール(コントローラー、ロボットモジュール、観測器、プラグインの追加モジュール)がライブラリからどのように読み込まれるかを規定します。
ControllerModulePaths このオプションは、mc_rtcにコントローラーモジュールを検索させる追加のディレクトリを指定します。
ControllerModulePaths: ["/one/path/to/controller/", "/another/path/"]
RobotModulePaths このオプションは、mc_rtcにロボットモジュールを検索させる追加のディレクトリを指定します。
RobotModulePaths: ["/one/path/to/robot/", "/another/path/"]
ObserverModulePaths このオプションは、mc_rtcに状態観測モジュールを検索させる追加のディレクトリを指定します。
ObserverModulePaths: ["/one/path/to/observer/", "/another/path/"]
GlobalPluginPaths このオプションは、mc_rtcにグローバルプラグインを検索させる追加のディレクトリを指定します。
GlobalPluginPaths: ["/one/path/to/global/plugin/", "/another/path/"]

ROSプラグインの設定

設定の読み取り元

mc_rtcによって、以下の2つのファイルが系統的に読み取られます(ファイルが存在する場合)。

  1. ${MC_PLUGINS_RUNTIME_INSTALL_PREFIX}/etc/ROS.yaml
    • Linux/MacOS: $HOME/.config/mc_rtc/plugins/ROS.yaml
    • Windows: %APPDATA%/mc_rtc/plugins/ROS.yaml

設定エントリ

ROSプラグインの設定の各セクションとそのエントリを以下の表に示します。

エントリ 説明 例/デフォルト
パブリッシュに関するエントリ
以下のオプションは、ROS内におけるロボットの状態のパブリッシュにのみ影響します。
control ロボットの制御状態(mc_rtcのコントローラー出力)をパブリッシュするかどうか
control: true
env 他のロボットの制御状態(メインロボット以外のロボットに関するmc_rtcのコントローラー出力)をパブリッシュするかどうか
env: true
real ロボットの観測状態(観測器パイプラインから得られたロボットの状態)をパブリッシュするかどうか
real: true
timestep ロボットの制御状態と実際の状態をパブリッシュする頻度
timestep: 0.01

設定例

# パブリッシュするデータと頻度を制御する:
  # 制御対象ロボットの状態をパブリッシュする(ROS)
  control: true
  # 他のロボットの状態をパブリッシュする(ROS)
  env: true
  # ロボットの実際の状態をパブリッシュする(ROS)
  real: true
  # パブリッシュのタイムステップ(ROS)
  timestep: 0.01