=================================
hrpsys-simulatorからchoronoidへ
=================================
ここでは、hrpsys-simulator用のプロジェクトをchoreonoid用に変換する方法を説明します。
hrpsys-simulatorのサンプルは、下記から入手し、動作確認できるサンプルを使用しました。
http://wiki.ros.org/indigo/Installation/Ubuntu
からROSをインストール。
.. code-block:: ini
sudo apt-get install ros-hydro-hrpsys-ros-bridge
rtmlaunch hrpsys samplerobot.launch
rosrun hrpsys samplerobot_walk.py
1を選択
準備
======
コントローラRTコンポーネントのファイル(HGcontroller.so)を(choreonoidのインストール先)/lib/choreonoid-1.5/rtcの中に置きます。
Pythonスクリプト(samplerobot_walk.py)は、(choreonoidのインストール先)/lib/choreonoid-1.5/pythonに置きます。
プロジェクトの作成
==================
シミュレーションアイテム
---------------------------
choreonoidを起動し、アイテムを追加して行きます。ここでは、hrpsys-simulator用のプロジェクトと対応付けて解説します。
.. code-block:: xml
:linenos:
-
この設定は、シミュレーションアイテムに相当します。前の章の手順に従って、Worldアイテム、AISTSimulatorアイテムを作成します。
AISTSimulatorアイテムは以下の用に設定します:
* 実時間同期:true
* 時間範囲:無制限
* 動力学モード:順動力学、ハイゲイン動力学を選択
* 積分モード:オイラー、ルンゲクッタを選択
.. image:: sampleWalk-AISTItem.png
シミュレーションの刻み時間は、次のようにして設定します。
図のタイムバーの設定ボタンを押すと、ダイアログが開きます。
.. image:: timebar.png
.. image:: timebar-conf.png
内部フレームレートを変更します。内部フレームレートが500のとき、シミュレーションは1/500(=0.002)秒間隔で実行されます。
モデルアイテムとBodyRTCアイテム
---------------------------------------
.. code-block:: xml
:linenos:
-
......
-
これらの設定は、Modelアイテム、BodyRTCアイテムに相当します。前の章の手順に従って、モデルファイルをロードし、初期姿勢などを設定してください。
BodyRTCアイテムは以下のように設定します:
* 自動ポート接続: false
* RTCインスタンス名: SampleRobot
* コントローラのモジュール名: HGcontroller
* 設定モード: 設定ファイルを使用
* 設定ファイル名: sampleWalkHG.conf
.. image:: sampleWalk-BodyRTCItem.png
inport,outport,connectionの設定は、設定ファイル名で指定したファイルに記述します。これは後で説明します。
これらのコンポーネントはシミュレーションの実行周期に同期して実行されます。
他に必要なアイテム
----------------------
.. code-block:: xml
:linenos:
-
-
....
床のモデルアイテムも作成してください。 干渉ペアの設定はchoreonoidではありません。基本設定では、全てのモデルが干渉チェックの対象になっています。対象から外したい場合はモデルアイテムの干渉検出プロパティをfalseに設定します。また、モデルの自己干渉を行わないようにする場合は、自己干渉検出をfalseに設定します。摩擦係数の設定は、Simulationアイテムで行います。
更に、メインメニューからpythonスクリプト用に以下のアイテムを作成します。
* ModelLoaderアイテムを作成( “ファイル” -> “新規” -> “外部コマンド”を選択。名前欄にModelLoaderと入力して、生成)。
* pythonスクリプトアイテムをロード( "ファイル" -> "読み込み" -> "シミュレーション用Pythonスクリプト"を選択。samplerobot_walk.pyファイルを選択)。
modelファイルとpythonスクリプトファイルにはチェックを入れて、図のような構成にします。
.. image:: sampleWalk-item.png
ModelLoaderアイテムは以下のように設定します:
* コマンド: openhrp-model-loader
.. image:: sampleWalk-ModelloaderItem.png
Pythonアイテムは以下のように設定します:
* バックグラウンド実行: true
.. image:: samplWalk-PythonItem.png
作成したプロジェクトは、名前を付けてファイルに保存しておきます。
BodyRTCの設定ファイルの作成
================================
BodyRTCアイテムで説明した設定ファイルsampleWalkHG.confを(choreonoidのインストール先)/lib/choreonoid-1.5/rtcに作成します。
hrpsys-simulator用のプロジェクトに記述してあった、inport,outport,connectionの設定を以下の様に記述します。
.. code-block:: ini
:linenos:
in-port = qRef:JOINT_VALUE
in-port = dqRef:JOINT_VELOCITY
in-port = ddqRef:JOINT_ACCELERATION
out-port = q:JOINT_VALUE
out-port = tau:JOINT_TORQUE
out-port = lfsensor:lfsensor:FORCE_SENSOR
out-port = rfsensor:rfsensor:FORCE_SENSOR
out-port = lhsensor:lhsensor:FORCE_SENSOR
out-port = rhsensor:rhsensor:FORCE_SENSOR
out-port = gyrometer:gyrometer:RATE_GYRO_SENSOR
out-port = gsensor:gsensor:ACCELERATION_SENSOR
out-port = WAIST:WAIST:ABS_TRANSFORM
connection = qRef:HGcontroller0:qOut
connection = dqRef:HGcontroller0:dqOut
connection = ddqRef:HGcontroller0:ddqOut
RTコンポーネントの設定ファイルの作成
=======================================
rtc.conf ファイルをカレントフォルダに作成します。各RTコンポーネントの設定ファイル(SampleRobot.500.conf)も、ここに置きます。
rtc.confには、以下の様に記述します。
.. code-block:: ini
:linenos:
corba.nameservers: 127.0.0.1
naming.formats: %n.rtc
logger.enable: YES
logger.log_level: NORMAL
logger.file_name: stdout
manager.shutdown_onrtcs: NO
manager.is_master: YES
manager.modules.load_path: /usr/local/lib
example.HGcontroller.config_file: SampleRobot.500.conf
example.PDcontroller.config_file: SampleRobot.500.conf
example.SequencePlayer.config_file: SampleRobot.500.conf
example.StateHolder.config_file: SampleRobot.500.conf
example.ForwardKinematics.config_file: SampleRobot.500.conf
example.HGcontroller.config_file: SampleRobot.500.conf は、HGcontrollerの設定ファイルがSampleRobot.500.confであることを指定しています。
Pythonスクリプトの修正
===========================
hrpsys-simulatorで使用したPythonスクリプトは、一部修正が必要です。
例えば、 samplerobot_walk.pyの場合、下の様に黄色で示した5行目を修正、25,26行を追加します。
.. code-block:: python
:linenos:
:emphasize-lines: 5,25-26
#!/usr/bin/env python
try:
from hrpsys_config import *
import hrpsys.OpenHRP
except:
print "import without hrpsys"
import rtm
from rtm import *
from OpenHRP import *
import waitInput
from waitInput import *
import socket
import time
def getRTCList ():
return [
['seq', "SequencePlayer"],
['sh', "StateHolder"],
['fk', "ForwardKinematics"]
]
def init ():
global hcf
sys.argv = []
rtm.nsport=2809
hcf = HrpsysConfigurator()
hcf.getRTCList = getRTCList
hcf.init ("SampleRobot")
def loadPattern(basename, tm=1.0):
hcf.loadPattern(basename, tm)
hcf.waitInterpolation()
def demo():
init()
loadPattern("/opt/ros/indigo/share/OpenHRP-3.1/sample/controller/SampleController/etc/Sample")
if __name__ == '__main__':
demo()
シミュレーションの実行
============================
カレントディレクトリから、 choreonoidを起動し、保存したプロジェクトファイルを読み込みます。
シミュレーション実行ボタンを押します。