Webots講座の9回目,最終回です.Webots講座4:自分の位置を知ろうでデッドレコニングを実装するハンズオンがありました.デッドレコニングを実装するには,そのロボットのホイールベースなどのパラメータがわらないと実装できません.WebotsのPROTOは,ロボットや環境の構成要素を再利用可能な形で定義するテンプレートファイルで,C++やPythonのクラスのような役割を果たします.そのPROTOファイルにロボットのパラメータが書かれています.では,引き続き自動運転シミュレータで使ってきたロボットカーBMW X5のPROTOファイルを見てみましょう.
レファレンス
- PROTO (Cyberbotics Ltd.)
- Tutorial 7: Your First PROTO (Cyberbotics Ltd.)
- AckermannVehicle (Cyberbotics Ltd.)
- Webots for Automobiles (Cyberbotics Ltd.)
PROTOファイル
- Webotsの自動運転シミュレータの車モデルはアッカーマン操舵機構で,その車(アッカーマンビークル)のパラメータはPROTOファイルでは次のとおりです.このうち,デッドレコニングにはフロント/リアの左右の車輪間隔となるtrackFront/trackRear,ホイールベースwheelbaseが必要な情報となります.
trackFront/trackRear: フロント/リアの左右の車輪間隔wheelbase: ホイールベース.フロントとリア軸間の距離minSteeringAngle/maxSteeringAngle: フロント車輪の最少/最大操舵角suspension...: サスペンション諸元の定義wheelsDampingConstant: 各車輪ジョイントのdampingConstant(減衰定数).車の摩擦のシミュレーション計算に使われる.maxSteeringTorque: フロントホイールのy軸にかかる最大トルクextensionSlot: センサや車の形状などの他ノードを追加boundingObject: 車の物理ジオメトリ.なお,物理ジオメトリは衝突の対象となる物体の属性.physics: 車の物理パラメータradarCrossSection: レーダ反射断面積.0以上の場合,レーダセンサに検出される可能性がある.recognitionColors: 空欄でなければ,カメラセンサにより認識される可能性がある.wheelX:VehicleWheelを追加するスロットaxisDevicesX: 車輪ジョイントにBrake, PositionSensor,Motorなどのデバイスを追加するスロットdata: Robot ノードのユーザ定義データ(文字列)
- なお,車の位置(0, 0, 0)はリアホイール軸の中心であり,extensionSlotのどのノードもこの中心からの相対位置になります.Transformノードはこの中心からのextensionノードを移動させます.また,AckermannVehicle PROTOを継承することで簡単に自分のPROTOを作成できます.
ハンズオン
- Webotsを起動.
- cityワールドを開く.
- メニュー→ファイル→Open Sample World…→vehicles→city.wbt
- シーンツリーのBmwX5を右マウスボタンでクリックして,開いた項目から[view PROTO source]を選択する.

- テキストエディタにBmwX5のPROTOファイルBmwX5protoが表示される.長いので全部掲載できないがアッカーマン機構に関連する部分は67~69行目となる.

- Webots講座4:自分の位置を知ろうのプチプロジェクトにBMW X5のデッドレコニング実装があります.上のパラメータ等を使い実装してみよう!
終わり


コメント