2. V-REPの基本的な使い方
V-REPを起動すると,図のような画面が開かれます.
ここでは簡単なV-REPの使い方を解説します.
2.1 シミュレーションを試す
そこからロボットをシミュレーション空間にドラッグするとロボットが実体化します.
カタログの横のツリービューが,ロボットのモデルデータのツリーです.
たとえば,今,Pioneer(移動台車)のモデルを追加しましょう.
カタログの左上を確認してください.ファイルツリーが表示されており,ロボット以外にも,家具やセンサなども用意されていることがわかります.
Pioneerを選択してドラッグすると,オブジェクトツリーにPioneerが表示されました.このとき,ダイアログが表示されます.一読して,ありがとう,と心で呟いてから閉じてください.
再生ボタンを押すとシミュレーションが始まります.Pioneerが動き出してびっくりしましたか?デフォルトでPioneerには動作確認用のスクリプトが付いているのです.
再生ボタンの所には,シミュレーションを制御するボタンが並んでいます.
再生ボタンは今見た通り,シミュレーションの開始です.一時停止ボタンを押すとシミュレーションが一旦止まります.停止ボタンを押すとシミュレーションが終了します.
ウサギさんボタンを押すと,レンダリングを何度かスキップすることで,シミュレーション時間を早めます.ロボットがカクカクと動きますよね.
カメさんボタンは逆です.
ロケットボタンは,シミュレーションの時間ステップに同期しないで,別のスレッドとして描画を行います.僕の環境 (15inch MacBook Retina)だとびっくりするほどは早くなりませんが.
その左側のドロップダウンメニューは,シミュレーション時の物理演算エンジンを変更したり,時間ステップを変更したり,計算精度の設定をします.
メニューから,Simulation > Simulation Settingでダイアログを表示すると,より細かい設定も出来ます.
オブジェクトカタログの横には,オブジェクトのツリーが表示されます.
Pioneerの名前の左側のボックスをクリックしてツリーを展開すると,関節(モータ)やセンサなどが追加されたのがわかります.
2.2 オブジェクトツリーを見る
オブジェクトの左側のアイコンがいろんな種類があるのがわかります.代表的なところでは,
- Shape : ただのオブジェクト.接触検知も可能
- Joint : ジョイント
- Force Sensor : 力センサ
- Proximity Sensor : 距離センサ
- Vision Sensor : 画像センサ.Kinectのような深度センサを兼ねる
- Camera : カメラ.シミュレーションを記録する
- Light : ライト.シミュレーション世界を照らす
- Graph : グラフ
- Path : 軌道を表現するのに使う
- Mill : 加工用のエンドミル
Camera, Light, Graphなんてのはシミュレーションを管理するためのツールのようなもんです.
PathとMillはFA用のロボットのシミュレーションによく使うものですが,研究用にも使えることがあります.
2.3 視点を変えてみる
左上の矢印三つが,シミュレーションの視点を変えるためのツールに対応しています.
これ以外に,カメラの視野を広げるツール
オブジェクトを対象にカメラを設定し直すツールがあります.これはロボットを見失った場合に便利です.
ズームツールが少し使いづらいです.いちどズームインし始めるとズームイン方向のみ,ズームアウトするとアウト方向のみしか調整が効きません.一度,ボタンを離して,再度ドラッグするとズーム・イン・アウトを調整できます.
ざっと視点を変えてみましたか?
2.4 ロボットやオブジェクトの位置を変える
次は,ロボット自体の位置を動かします.
まず,ロボットを選択します.これはオブジェクトツリーでやると良いです.シミュレーション画面をクリックしても良いですが,混んでくると使いにくいのと,選択しているツールによっては上手く選択出来ないからです.
ロボットが選択されると,ロボットの周囲がボックスで囲われます.これが見にくいロボットもあるので慎重に.
この状態で,Object/item shiftボタンを選ぶと,ロボットの並進移動が可能になります.
ダイアログを見てください.デフォルトでは,Allowがalong Xとalong Yになっているので,マウスで動かすとX-Y平面上で動く,ということがわかります.マウスで何となく動かしたいときは,この選択を調整しつつ動かします.
通常は,ダイアログの中段,Object / item positionで,X軸,Y軸,Z軸方向の位置を決定します.ためしに,(0, 0, 0.1388) に移動しましょう.0.1388はZ軸方向の高さで,つまりロボットの中心座標の地面からの距離で,この数値がデフォルトで地面にタイヤが設置しているときの高さです.
ダイアログ上段で,Orientation / Rotationを選ぶと,回転させることも出来ます.
では,これを使って,壁をたくさん配置してみましょう.
モデルカタログツリーから,Models > Equipment > Panesと選択すると,工場用の間仕切りが見つかります.
これを使って床を囲ってみましょう.
2.5 シーンを保存する
この状態で,シミュレーションのシーンを保存します.File > Save Scene as … で保存できますが,この方法だと,デフォルトで拡張子が付きません (Mac版で確認).拡張子は.tttです..tttを付けて保存してください.
この状態でシミュレーションを動かすと壁をよけながら床から落ちなくなりますよね.
2.6 ロボットを組み合わせる
ロボットにセンサを乗せてみましょう.
Models > Components > Sensors > Hokuyo URG 04LX UG01を選択してドロップしてください.とりあえず床に置きます.
Pioneerのオブジェクトツリーを展開すると,Pioneer_p3dx_connectionというShapeがあって,これがPioneerに何かを置くときの目印になってくれます (まあ,Force Sensorですが・・・) .もちろん,これに縛られる必要はありません.
とりあえず,前面のバンパスイッチの上に置きましょう.Pioneer_p3dx_connection11です.
では,接続の手順です.この作業はオブジェクトツリーでやります.シミュレーション画面でもやれますが,やりにくいです.おすすめしないです.
まず,Pioneer_p3dx_connection11を選びます.次に,Shitfを押しながら,URGを選びます.すると,Assemble/Disassembleボタンがアクティブになるので,押すと合体します.
この状態で,URGがPioneerのツリーの中に入れば成功です.さらにオブジェクト移動と同じ手順で,Object / item shifボタンを押して,TransitionやRotationを設定することも出来ます.
ここでシミュレーションを一度保存しておきましょう.
2.7 オブジェクトのスクリプト
オブジェクトツリーを眺めて,Pioneerの名前の横に,アイコンがあります.これはPioneerにスクリプトが追加されていることを示しています.
スクリプトはLuaという言語で書かれており,Pioneerが前方に設置されている超音波距離センサを使って,障害物を回避しながら動く,というようなプログラムが書かれています.
これを書くことによってシミュレーションを実行しますが,より再利用性の高い開発を考えれば,Luaでどんどんシミュレーションを作っていくのは遠回りな道に思えます.
この記事では最終的にRTミドルウエアでの開発を行います.
(文責 菅 佑樹)