Main Content

単純追跡コントローラー

単純追跡はパス追従アルゴリズムです。ロボットを現在位置からロボットの前方にある前方注視点に達するまで動かす角速度コマンドを計算します。線形速度は一定とみなされているため、任意の点でロボットの線形速度を変更できます。次に、アルゴリズムはロボットの現在位置に基づいて、パス上の前方注視点をパスの最終点まで動かします。これは、ロボットが常に自身の前にある点を追いかけていると考えることができます。プロパティ LookAheadDistance は、前方注視点が配置される距離を決定します。

controllerPurePursuit オブジェクトは従来型のコントローラーではなく、パス追従用の追跡アルゴリズムとして機能します。コントローラーは指定されたウェイポイントのリストで一意です。目的とする線形速度と最大角速度を指定できます。これらのプロパティはビークルの仕様に基づいて決定されます。ビークルの姿勢 (位置と向き) を入力として指定すると、オブジェクトを使用してロボットの線形速度コマンドと角速度コマンドを計算することができます。ロボットがこれらのコマンドを使用する方法は使用しているシステムによって異なるため、これらのコマンドを指定するとロボットがどのように運動を実行できるかを考慮してください。最後の重要なプロパティは LookAheadDistance です。これはロボットに対し、パスに沿って前方の、どの程度の距離を追跡するかを指定します。このプロパティは、以下の節で詳しく説明しています。

参照座標系

単純追跡アルゴリズムが入力と出力に使用している参照座標系を理解することが重要です。以下の図に、参照座標系を示します。入力ウェイポイントは [x y] 座標で、ロボットの速度コマンドの計算に使用します。ロボットの姿勢は xy 位置と [x y theta] 形式の角度で構成されます。正の x 方向と y 方向は、それぞれ右方向と上方向です (図では青で示す)。theta 値は、ロボットの角度方向で、x 軸から反時計回りに、ラジアン単位で測定します (ロボットの現在位置は 0 ラジアンです)。

前方注視距離

LookAheadDistance プロパティは、コントローラーの主要な調整プロパティです。前方注視距離とは、角速度コマンドを計算するために、ロボットが現在の位置からパスに沿って読み取る距離です。以下の図は、ロボットと前方注視点を示しています。この図に示すように、実際のパスはウェイポイント同士を直接結ぶ線に一致しないことに注意してください。

このパラメーターの変更によって、ロボットがパスを追跡する方法を変えることができます。これには、パスの再取得とパスの維持という主に 2 つの目標があります。ウェイポイントの間のパスを迅速に再取得するには、小さい LookAheadDistance を設定すると、ロボットがパスに向かって速く動きます。しかし、以下の図に示すように、ロボットはパスをオーバーシュートし、目的のパスに沿って振動します。パスに沿った振動を軽減するには、長い前方注視距離を選択することができます。ただし、コーナー付近の曲率が大きくなる場合があります。

LookAheadDistance プロパティは、アプリケーションとロボット システムに合わせて調整しなければなりません。また、線形速度と角速度が異なるとこの応答も変わるため、コントローラーに追従するパスにおいて考慮しなければなりません。

制限

この単純追跡アルゴリズムには、注意すべき制限がいくつかあります。

  • 上記のように、コントローラーはウェイポイントの間の直接パスに正確に追従できるわけではありません。パフォーマンスを最適化し、時間の経過に伴ってパスを収束させるようにパラメーターを調整しなければなりません。

  • この単純追跡アルゴリズムは、ロボットを 1 か所に安定させません。アプリケーションでゴール位置の距離しきい値を適用して、目的のゴール付近にロボットを停止させなければなりません。

参照

[1] Coulter, R. Implementation of the Pure Pursuit Path Tracking Algorithm. Carnegie Mellon University, Pittsburgh, Pennsylvania, Jan 1990.

参考

| (Navigation Toolbox)