Webots講座2024の9回目,最終回です.Webots講座4:自分の位置を知ろう(Python)でデッドレコニングを実装するハンズオンがありました.デッドレコニングを実装するには,そのロボットのホイールベースなどのパラメータがわらないと実装できません.WebotsではPROTOという仕組みがあり,その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:自分の位置を知ろう (Python)のプチプロジェクトにBMW X5のデッドレコニング実装があります.上のパラメータ等を使い実装してみよう!
終わり
コメント