無限軌道(クローラ)の区分剛体シミュレーション¶
概要¶
「無限軌道」は戦車や建設機械、レスキューロボット等で広く用いられている移動機構で、「クローラ」や「キャタピラー」とも呼ばれます。Choreonoidはこの無限軌道をシミュレートするためのデバイスとして「区分剛体無限軌道(Piecewise Rigid Continuous Track)」を備えています。本ページではこのデバイスの利用方法について解説します。
無限軌道の物理シミュレーションでは、履帯を構成するシュー1枚1枚を剛体としてモデリングする手法が精密ですが、剛体数・拘束数が多くなり計算コストが大きくなります。区分剛体無限軌道はこれに対して、駆動輪と誘導輪の間に巻き回された履帯を、上下の直線部分と車輪に巻き付く部分といった少数の「区分的な剛体」で近似して扱います。履帯の周回は駆動輪の回転と同期され、シュー(グローサ)が実際に周回して地面を捉える挙動が再現されます。これにより、計算コストを大幅に抑えつつ、履帯特有の接地挙動を安定にシミュレーションすることができます。
なお、より簡易な無限軌道のシミュレーション手法として、 無限軌道(クローラ)の簡易シミュレーション も利用できます。そちらは履帯の見た目や車輪への巻き付きは表現されませんが、最も手軽に利用できる方法です。逆により精密な手法としては、AGXシミュレータ向けの AGX Vehicle Continuous Track (AGXクローラ) があります。用途に応じて使い分けてください。
対応シミュレータ¶
区分剛体無限軌道によるシミュレーションは、以下のシミュレータアイテムに対応しています。
PhysXシミュレータ( PhysXプラグイン )
Bulletシミュレータ( Bulletプラグイン )
デバイス本体はCMakeオプション BUILD_PIECEWISE_RIGID_CONTINUOUS_TRACK (デフォルトON)でビルドされ、上記プラグインのシミュレータがこのデバイスを認識してシミュレーションを行います。
モデルの記述方法¶
区分剛体無限軌道を利用するモデルは、以下のように構成します。
駆動輪(スプロケット)と誘導輪(アイドラ)を、それぞれ回転関節をもつ通常の車輪リンクとして定義する
履帯全体に対応するリンクを定義し、そのリンクの
elementsにPiecewiseRigidContinuousTrackデバイスノードを記述するデバイスノードの
sprocket・idlerキーで、駆動輪・誘導輪のリンクを名前で参照する
シミュレーションでは、駆動輪の関節を速度指令等で回転させることで、それに同期して履帯が周回し、ロボットが駆動されます。
以下はサンプルモデル(share/model/Tank/PRCTrackTank.body)における記述例です。
type: PiecewiseRigidContinuousTrack
name: TRACK_L
sprocket: WHEEL_L0
sprocket_radius: 0.075
idler: WHEEL_L2
idler_radius: 0.075
width: 0.09
thickness: 0.01
num_shoes: 46
grouser_height: 0.012
grouser_thickness: 0.01
mass: 2.5
contact_material: TankTracks
drive_damping: 2000.0
drive_max_force: 200.0
デバイスノードでは以下のパラメータを設定できます。
パラメータ |
デフォルト値 |
意味 |
|---|---|---|
|
(必須) |
駆動輪(スプロケット)のリンク名です。 |
|
(必須) |
駆動輪の半径です [m]。 |
|
(必須) |
誘導輪(アイドラ)のリンク名です。 |
|
(必須) |
誘導輪の半径です [m]。 |
|
0.1 |
履帯の幅です [m]。 |
|
0.005 |
履帯(ベルト部分)の厚さです [m]。 |
|
20 |
履帯を構成するシューの枚数です。描画されるグローサの密度に対応します。 |
|
0.01 |
グローサ(履帯表面の突起)の高さです [m]。 |
|
(thicknessと同値) |
グローサの厚さです [m]。省略した場合は |
|
(自動) |
履帯全体の質量です [kg]。省略した場合は駆動輪と誘導輪の質量の合計が使用されます。 |
|
— |
履帯に適用するマテリアル名です。 接触マテリアル の機構により、履帯と地面の間の摩擦等を設定できます。 |
|
— |
履帯の描画に使用する外観マテリアル(diffuse等)です。 |
|
10000.0 |
履帯の駆動に用いる拘束のダンピング係数です。 |
|
(無制限) |
履帯の駆動力の上限です [N]。省略した場合は制限されません。 |
注釈
本デバイスは以前 "PxContinuousTrack" という名称でPhysXプラグイン専用に提供されていました。旧名称のデバイスノードも後方互換のため読み込み可能ですが、非推奨となっていますので、新規のモデルでは PiecewiseRigidContinuousTrack を使用してください。
サンプル¶
区分剛体無限軌道を利用したサンプルプロジェクトが choreonoid/sample/PiecewiseRigidContinuousTrack/ ディレクトリに用意されています。いずれもPhysXシミュレータとBulletシミュレータの両方を含んでおり、ジョイスティック(または仮想ジョイスティックビュー)で操縦できます。
PRCTrackTank.cnoid: 戦車型ロボットのサンプルです。左右の履帯と砲塔をジョイスティックで操作できます。PRCTrackVehicle.cnoid: クローラ型走行車両を起伏のある地形上で走行させるサンプルです。