OOoCalcRTCのチュートリアル(その4)

このチュートリアルではV-REPとV-REPのOpenRTM-aistプラグインを用いて蛇型ロボットのシミュレーションをシミュレーションを行います。

OOoCalcRTCのver 0.7.0以降でしか動作しないため、古いバージョンをインストールしている場合はver 0.7.0以降のバージョンをインストールしてください。

モデルの追加

まず、V-REPとV-REPのOpenRTM-aistプラグインをインストールしてください。このサイトに詳しく書いてあるようです。

次にV-REPで蛇型ロボットのモデルを追加します。

左のツリーから、Models→robots→mobileを選択して、ACM-R5を選択後、シミュレーション空間にドラッグしてください。

あらかじめ動作をスクリプトファイルに記述してありますが、今回のシミュレーションでは必要ないので削除します。

左のサイドバーからScriptsを選択してください。

そして表示されたウインドウからACMR関連のスクリプトを選択してDeleteキーを押下してください。

RobotRTCの起動

次にV-REPのOpenRTM-aistプラグインのSimulationManagerを起動して、VREPRTC0と接続してアクティブ化してください。

そして作成したプロジェクトを開いていない場合はSimulation Project Fileに保存したファイル名を入力してLoadボタンを押してしてください。
ACM-R5を操作するRTCを追加するために、Robot Object NameにACMRと入力してSpawnRobotボタンを押してください。

OOoCalcRTCの起動

このページからデモプログラム2をダウンロードして、解凍したフォルダのSnakeControl.odsを開いてください。
そしてRTC起動ボタンを押すとRTCが起動します。

あと、OpenRTM-aist-Python付属のSliderComp.pyを起動してください。

データポートの接続

データポートを以下のように接続してください。

コンフィギュレーションパラメータの設定

RobotRTC0のコンフィギュレーションパラメータのcontroledJointNames、obserbedJointNamesを以下のように設定してください。


ACMR_vJoint, ACMR_vJoint#0, ACMR_vJoint#1, ACMR_vJoint#2, ACMR_vJoint#3, ACMR_vJoint#4, ACMR_vJoint#5, ACMR_vJoint#6

これで必要なジョイントだけ操作、検出ができるようになりました。

実行コンテキストのアタッチ

RTCの周期実行を同期させるため、RobotRTC0の実行コンテキストをOOoCalcControl0にアタッチします。
まず、RobotRTC0を選択して、Execution Context Viewタブを開いてください。そしてExecution Contextでownedを選択してアタッチボタンを押してください。

そしてOOoCalcControlを選択してOKボタンを押してください。

シミュレーション開始

V-REPでシミュレーション開始ボタンを押すとシミュレーションを開始します。

そしてRTシステムエディタでOOoCalcControl0を選択してExecution Context Viewタブを開いてExecution Contextからparticipate0を選択してアクティブ化ボタンを押してください。

さらにSliderComp0もアクティブにしてください。

SnakeControl.odsのシートの緑色のセルから、S形状の数、初期くねり角を変更すると体形曲線の形状を変更できます。

ちなみに、サーペノイド曲線の曲率、離散化した場合の各関節角度は以下の式で導出してあります。

まずは曲率です。

次に各関節角度です。

各変数は以下のように定義してあります。

SliderCompのGUIで左のスライダーを操作することでバイアス曲率を変化される事ができます。スライダーを操作すると蛇型ロボットの進行方向が左右に動きます。