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