オリジナルのプロジェクトの作成

このチュートリアルでは、オリジナルのプロジェクトを作成する方法を学習します。

hrpsys-gazebo-simulatorのプロジェクトファイルはXML形式のファイルです。プロジェクトファイルの作成には好きなテキストエディタを使うことができます。

サンプルプロジェクトをローカルディレクトリにコピーします:

$ cp `pkg-config --variable=prefix hrpsys-base`/share/hrpsys/samples/PA10/PA10simulation.xml mysimulation.xml

ロボットモデルの変換とワールドファイルの作成

hrpsys-gazebo-simulatorは内部でgazeboシミュレータを使っています。そのためsdf形式で配布されている様々なロボットモデルを利用することができますが、ここでは前のチュートリアルで使っていたものと同じロボットモデルを使います。以下のコマンドを実行してロボットモデルの変換とワールドファイルの作成を行ってください:

$ simtrans -i `pkg-config openhrp3.1 --variable=prefix`/share/OpenHRP-3.1/sample/model/simple_vehicle_with_camera.wrl -o $HOME/.gazebo/models/simple_vehicle_with_camera.world

プロジェクトファイルの基本構成

好きなテキストエディタを使ってプロジェクトファイルを開いてください:

$ emacs mysimulation.xml

テキストエディタでプロジェクトファイルを開くと以下の内容になっているはずです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<grxui>
   <mode name="Simulation">
     <item class="com.generalrobotix.ui.item.GrxRTSItem" name="untitled" select="true">
         <property name="PA10Controller(Robot)0.period" value="0.005"/>
         <property name="HGcontroller0.period" value="0.005"/>
         <property name="HGcontroller0.factory" value="HGcontroller"/>
         <property name="connection" value="HGcontroller0.qOut:PA10Controller(Robot)0.qRef"/>
         <property name="connection" value="HGcontroller0.dqOut:PA10Controller(Robot)0.dqRef"/>
         <property name="connection" value="HGcontroller0.ddqOut:PA10Controller(Robot)0.ddqRef"/>
     </item>
     <item class="com.generalrobotix.ui.item.GrxModelItem" name="pa10" select="true" url="$(PROJECT_DIR)/../model/PA10/pa10.main.wrl">
         <property name="rtcName" value="PA10Controller(Robot)0"/>
         <property name="inport" value="qRef:JOINT_VALUE"/>
         <property name="inport" value="dqRef:JOINT_VELOCITY"/>
         <property name="inport" value="ddqRef:JOINT_ACCELERATION"/>
         <property name="outport" value="q:JOINT_VALUE"/>
   ..snip..
   </mode>
</grxui>

ロボットモデルの変更

このチュートリアルではOpenHRPサンプルに付属する”simple_vehicle_with_camera”ロボットモデルを使います。

まずは、モデル名とURLを変更します。以下の部分を:

1
<item class="com.generalrobotix.ui.item.GrxModelItem" name="pa10" select="true" url="$(PROJECT_DIR)/../model/PA10/pa10.main.wrl">

以下のように変更してください:

1
<item class="com.generalrobotix.ui.item.GrxModelItem" name="simple_vehicle_with_camera" select="true" url="model://simple_vehicle_with_camera">

次に、ロボットモデルの各プロパティを設定していきます。 rtcNamein[out]port プロパティは、ロボットモデルにRTコンポーネントとしてのインターフェースを作成するための設定です。 ここでは rtcName を”vehicle0”と設定しましょう。 in[out]port プロパティは、元のファイルのままにしておいてください(この設定は、関節角、角速度、角加速度の各制御をロボットモデルに加えることができる設定です)。

このロボットモデルについては仮想カメラを用いることができます。以下の例にある最後のoutport定義は仮想カメラに関するものです。”/simple_vehicle_with_camera/VISION_SENSOR1/left/image_raw”はgazebo-rosプラグインによって作成されたrosトピックです。最後の”VISION_SENSOR”の部分はデータ型を定義します。

1
2
3
4
5
6
7
8
9
<item class="com.generalrobotix.ui.item.GrxModelItem" name="simple_vehicle_with_camera" select="true" url="model://simple_vehicle_with_camera">
   <property name="isRobot" value="true"/>
   <property name="rtcName" value="vehicle0"/>
   <property name="inport" value="qRef:JOINT_VALUE"/>
   <property name="inport" value="dqRef:JOINT_VELOCITY"/>
   <property name="inport" value="ddqRef:JOINT_ACCELERATION"/>
   <property name="outport" value="q:JOINT_VALUE"/>
   <property name="outport" value="VISION_SENSOR1:/simple_vehicle_with_camera/VISION_SENSOR1/left/image_raw:VISION_SENSOR"/>
</item>

シミュレーションプロジェクトの作成が終わったので、hrpsys-gazebo-simulatorでプロジェクトを開いてみましょう:

$ hrpsys-gazebo-simulator mysimulation.xml $HOME/.gazebo/models/simple_vehicle_with_camera.world -endless

次のチュートリアルでは、オリジナルのコントローラにロボットを接続する方法を学習します。