Index
動的障害物停止#
役割#
dynamic_obstacle_stop
は、自律走行車がダイナミックオブジェクトの 直近の パスに進入することを防止するモジュールです。
オブジェクトの 直近の パスとは、一定の速度と向きを想定した場合に、そのオブジェクトが特定の時間枠内に移動する領域のことです。
起動タイミング#
このモジュールは、モーションプランニング起動ファイルで起動パラメータ launch_dynamic_obstacle_stop_module
が true に設定されている場合に起動します。
内部構造/アルゴリズム#
このモジュールは、自律走行車の軌跡とオブジェクトの直近のパスが衝突する位置に停止点を挿入します。 このモジュールの全体的な流れは、次の 4 つのステップで要約できます。
- 動的オブジェクトのフィルタリング
- 動的オブジェクトの直近のパス矩形の計算
- 自律走行車が直近のパス矩形と衝突する、最も早い衝突箇所の検出
- 衝突前に停止点を挿入
これらの 4 つのステップに加えて、2 つのメカニズムが、このモジュールの停止点をより安定させるために用意されています。ヒステリシスと決定期間のバッファです。
hysteresis
パラメータは、前のイテレーションで停止点が既に挿入されていた場合に使用され、動的オブジェクトがモジュールで使用するための自律走行車の軌跡に十分近いとみなされる範囲を拡大します。
動的オブジェクトのフィルタリング#
オブジェクトは、次の条件をすべて満たす場合にのみモジュールによって考慮されます。
- 車両である(歩行者は無視する)
minimum_object_velocity
パラメータで定義されている以上の速度で走行している- 自律走行車の現在位置にあまりにも近くない
- 回避不可能ではない(
ignore_unavoidable_collisions
パラメータがtrue
に設定されている場合のみ) - 自律走行車の軌跡に近い
自律走行車が停止しても衝突が発生する(オブジェクトが直線走行を続けると仮定した場合)ため、オブジェクトは自律走行車の方向に走行している場合に回避不可能とみなされます。
最後の条件では、自律走行車の軌跡からのオブジェクトの側方距離が、minimum_object_distance_from_ego_trajectory
パラメータのしきい値に自律走行車とオブジェクトの幅の半分(extra_object_width
パラメータを含む)を足した値未満の場合に、オブジェクトは十分に近いとみなされます。
さらに、前のイテレーションで停止点が挿入されていた場合は、hysteresis
パラメータの値が最小距離に追加されます。
直近のパス矩形の計算#
考慮される各オブジェクトについて、その 直近の パスを表す矩形が作成されます。
矩形の幅は、オブジェクトの幅に extra_object_width
パラメータを加えたもので、長さは、オブジェクトの現在の速度に time_horizon
を掛けたものです。
最も早い衝突箇所の検出#
次に、これらの自車軌跡フットプリントと、以前に計算された直近経路長方形との交差点を計算します。 交差点は、オブジェクトが自車に向かって走行していない場合(つまり、オブジェクトと軌跡点の間の絶対角度が \(\frac{3 \pi}{4}\) より大きい場合)無視されます。
自車軌跡に投影したときの距離が最も短い衝突点は、最終停止点の計算に使用されます。
停止点を挿入する#
停止点を挿入する前に、挿入可能な軌跡距離範囲を計算します。
最小値は、車両の加速度とジャークの制約を満たすように計算されます。
前のモジュール反復に停止点が挿入された場合、その距離の範囲が最大値として使用されます。
最後に、停止点の距離の範囲は、以前に検出された衝突点の距離の範囲から「stop_distance_buffer
」と自車車両の車軸方向のオフセットを減じたもので、最小値と最大値の間でクリッピングされます。
持続時間バッファ#
ノイズの多い認識によるチャタリングを防ぐために、2 つの持続時間パラメータが使用されます。
add_stop_duration_buffer
は、対応する停止点が追加されるオブジェクトとの連続衝突検出の持続時間を表します。remove_stop_duration_buffer
は、対応する停止点が削除されるオブジェクトとの衝突の非検出の連続持続時間を表します。
タイマーと衝突点は、各ダイナミックオブジェクトに対して独立して追跡されます。
モジュールパラメータ#
パラメーター | タイプ | 説明 |
---|---|---|
extra_object_width |
double | [m] 検出したオブジェクト周辺の余分な幅 |
minimum_object_velocity |
double | [m/s] この値以下の速度のオブジェクトは無視されます |
stop_distance_buffer |
double | [m] 停止点と衝突点の間に追加する余分な距離 |
time_horizon |
double | [s] 衝突チェックに使用される時間的視野 |
hysteresis |
double | [m] 衝突が検出されると、このヒステリシスが衝突検出に使用されます |
add_stop_duration_buffer |
double | [s] 停止の判断が追加される前に、衝突が継続的に検出されなければならない時間 |
remove_stop_duration_buffer |
double | [s] 衝突が検出されなくなってから停止の判断が削除されるまでの時間 |
minimum_object_distance_from_ego_trajectory |
double | [m] 衝突を考慮する場合の、自己軌跡とオブジェクトの足跡間の最小距離 |
ignore_unavoidable_collisions |
bool | [-] trueの場合、停止では回避できない衝突を無視します(障害物が直進し続けると仮定した場合) |