コントローラのリスト

このページでは、本フレームワークで用意されているサンプルコントローラーのリストに加えて、各コントローラーの実行方法と各コントローラーで実現できる内容について概説します。より複雑なコントローラーについては、各コントローラーのチュートリアルのページで詳しく説明されています。

Posture

Posture(姿勢制御)コントローラー(オンラインデモを参照)は、本フレームワーク内で最もシンプルなコントローラーです。このコントローラーは、以下のタスクと制約条件を二次計画法ソルバーに追加します。

タスク

  • mc_tasks::PostureTask: 指定された関節の位置を、ロボットの各目標自由度として設定します。このコントローラーは、デフォルトでは、エンコーダー値を利用できる場合はロボットの現在のエンコーダー値を目標として設定し、そうでない場合はデフォルトの姿勢(mc_rbdyn::RobotModule::stance())を目標として設定します。また、GUIのスライダーを使用して関節を動かすことができます(Tasks -> posture_jvrc1 -> Target)。

制約条件

サポートされているロボット: 本フレームワークでサポートされているすべてのロボット。カスタムロボットの場合は、必要に応じて、CompoundJointConstraintに関する衝突メッシュのペアと可動範囲から成るデフォルトのセットを定義する必要があります(新しいロボットの組み込みに関するチュートリアルを参照)。

実行方法: このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意のインターフェイスを使用してコントローラーを実行します。

MainRobot: JVRC1
Enabled: Posture

CoM

CoM(質量中心)サンプルコントローラー(オンラインデモを参照)は、前述のPostureコントローラーと同様のタスクと制約条件が定義されています。

タスク

  • mc_tasks::PostureTask: すべての関節にデフォルトの目標を設定するための姿勢制御タスク(このタスクには低い重みが設定されています)
  • mc_tasks::CoMTask: ロボットの質量中心を制御するタスク。デフォルトでは、このコントローラーは現在のタスクの位置を目標として設定します。GUI(RViz)の対話形式のマーカーを使用して、この目標を動かすことができます。

*制約条件

サポートされているロボット: 本フレームワークでサポートされているすべての二足歩行ロボット。カスタムロボットの場合は、ロボットの記述においてLeftFoot(左足)とRightFoot(右足)の裏の面を定義する必要があります。

実行方法: このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意のインターフェイスを使用してコントローラーを実行します。

MainRobot: JVRC1
Enabled: CoM

EndEffector

EndEffector(エンドエフェクター)コントローラー(オンラインデモを参照)は、前述のCoMコントローラーと同じタスクと制約条件が定義されています。このコントローラーでは、質量中心の位置の制御に加えて、ロボットのエンドエフェクターの位置と向きを制御するためのmc_tasks::EndEffectorTaskが追加されています。

サポートされているロボット: 本フレームワークでサポートされているすべての二足歩行ロボット。カスタムロボットの場合は、ロボットの記述においてLeftFootRightFootの裏とr_wristボディを定義する必要があります。

実行方法: このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意のインターフェイスを使用してコントローラーを実行します。

MainRobot: JVRC1
Enabled: EndEffector

Text

Text(テキスト)サンプルコントローラーでは、YAMLで記述された設定からタスク制約条件を読み込むためのmc_tasks::MetaTaskLoadermc_solver::ConstraintSetLoaderの使い方が示されています。

実行方法: このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意のインターフェイスを使用してコントローラーを実行します。

MainRobot: JVRC1
Enabled: Text

このコントローラーのデフォルトの設定は、EndEffectorコントローラーと似ています。また、~/.config/mc_rtc/controllers/Text.yamlに独自の設定を記述できます。例えば以下の設定は、CoMコントローラーを再度構成して

Text:
  constraints:
  - type: dynamics
  - type: contact
  - type: collision
  - type: compoundJoint
  tasks:
  - type: com
    weight: 1000
    above: [LeftFoot]
  contacts:
  - r1Surface: LeftFoot
    r2Surface: AllGround
    isFixed: false
  - r1Surface: RightFoot
    r2Surface: AllGround
    isFixed: false

Admittance

Admittance(アドミッタンス制御)サンプルコントローラーでは、所定の力でJVRC1ロボットを壁に押し付けるシンプルな有限オートマトンの例を使用して、mc_tasks::force::AdmittanceTaskの使い方が示されています。

詳しい説明: アドミッタンス制御のサンプルコントローラーのチュートリアルを参照してください。

サポートされているロボット: JVRC1に遷移します。

前提条件: ForceSensorCalibrationコントローラーを使用して手の力覚センサーが事前に較正されているか確認してください。

実行方法

このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意の動力学的シミュレーション(Choreonoidなど)使用してコントローラーを実行します。

参考

より高度な例については、ExternalForcesのサンプルを参照してください。

MainRobot: JVRC1
Enabled: AdmittanceSample

Impedance

Impedance(インピーダンス制御)サンプルコントローラーでは、ロボットのエンドエフェクターの位置と力を同時に制御するためのmc_tasks::force::ImpedanceTaskの使い方が示されています。

サポートされているロボット: JVRC1Fixedに遷移します。

前提条件: ForceSensorCalibrationコントローラーを使用して手の力覚センサーが事前に較正されているか確認してください。

実行方法

このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意の動力学的シミュレーション(Choreonoidなど)使用してコントローラーを実行します。Choreonoidでは、動いている手をクリックしてドラッグすることで、外力を加えることができます。このとき、外力を加えられた手は、所定の範囲内でユーザーの操作に追従します。その後、外力を解放すると、それまでの移動経路をたどって所定の位置に手が戻ります。なお、GUIを使用して、フリーな状態のエンドエフェクターにmc_tasks::force::ImpedanceTaskを追加できます(Global -> Add Tasks -> ImpedanceTask)。

MainRobot: JVRC1Fixed
Enabled: Impedance

LIPMStabilizer

LIPMStabilizer(LIPMスタビライザー)サンプルコントローラーでは、バランスを取りながら立って前進するロボットを実現するシンプルな準静的有限オートマトンの例を使用して、mc_tasks::StabilizerTaskとこのタスクの実現に役立つ有限オートマトン状態mc_state::StabilizerStandingStateの使い方が示されています。

詳しい説明: LIPMスタビライザーのチュートリアルを参照してください。

サポートされているロボット: 本フレームワークでサポートされているすべての二足歩行ロボット

実行方法

このコントローラーを実行するには、mc_rtcの設定でこのコントローラーを指定し、任意の動力学的シミュレーション(Choreonoidなど)使用してコントローラーを実行します。

MainRobot: JVRC1
Enabled: LIPMStabilizer

ExternalForces

ExternalForces(外力)サンプルコントローラーでは、所定の力で壁を押すJVRC1ロボットを実現するシンプルな有限オートマトンの例を使用して、指定された外力を行使する二足歩行ロボットをmc_tasks::lipm_stabilizer::StabilizerTaskとmc_tasks::force::ImpedanceTaskで実現する方法が示されています。

サポートされているロボット: JVRC1に遷移します。

前提条件: ForceSensorCalibrationコントローラーを使用して手の力覚センサーが事前に較正されているか確認してください。

実行方法

このサンプルを実行するには、力覚センサーをシミュレート可能な動力学的シミュレーターが必要です。このチュートリアルは、mc_openrtmChoreonoid、それに本フレームワークで用意されたシミュレーションファイルsim_mc_wall.cnoidを使用することを前提としています。他のシミュレーターを使用する場合は、必要に応じて命令を変更し、ロボットと壁が55cm離れて配置されているシーンを作成してください。

mc_rtcの設定でこのコントローラーを指定し、Choreonoidでコントローラーを実行してください。このロボットは、両手を壁に触れた後、前に倒れながら、指定された正弦波状の外力を壁に行使します。

MainRobot: JVRC1
Enabled: ExternalForces