Skip to content

RVO2 Local Planner

概要

**RVO2 Local Planner**は、RVO2 Library (Reciprocal Velocity Obstacles) をベースにしたローカルパスプランナーです。Velocity Obstacle (VO) の概念を用いて、動的な障害物(他のロボット)を回避しながら目標位置へ移動する速度ベクトルを計算します。また、SSL特有のルール(ペナルティエリア侵入禁止など)やボール回避のロジックも統合されています。

実装詳細

コアアルゴリズム

  • RVO2 Simulator: ロボットをエージェントとして登録し、相互の衝突回避速度を計算します。
  • BangBangTrajectory: 現在位置・速度から目標位置へ最短時間で到達するための軌道を生成し、それをRVOの推奨速度(Preferred Velocity)として入力します。

パラメータ設定

ROS 2パラメータを通じて、RVOシミュレーションの挙動を調整可能です。

パラメータ名 デフォルト値 説明
rvo_time_step 0.1 シミュレーションのタイムステップ [s]
rvo_neighbor_dist 1.0 近傍エージェントを探索する距離 [m]
rvo_max_neighbors 10 考慮する最大エージェント数
rvo_time_horizon 2.0 何秒先の衝突まで考慮するか(対エージェント) [s]
rvo_time_horizon_obst 1.0 何秒先の衝突まで考慮するか(対静的障害物) [s]
rvo_radius 0.15 エージェントの半径 [m]
rvo_max_speed 4.0 エージェントの最大速度 [m/s]

回避ロジック

RVO2による動的障害物回避に加え、以下のルールベースの回避ロジックが実装されています。これらは目標位置(Target Position)を修正することで実現されます。

1. ペナルティエリア回避

自チームおよび相手チームのペナルティエリアへの侵入を防ぎます。

  • 侵入検知: 目標位置がペナルティエリア内、または移動経路がペナルティエリアを横切る場合。
  • 回避動作:
    • 目標位置がエリア内の場合:エリア外の最近傍点へ修正。
    • 経路が横切る場合:ペナルティエリアの角を経由する迂回ルートを設定。

2. ボール回避

ルール(ボールから一定距離を保つ)およびボールとの衝突防止のため、ボール周辺を回避します。

  • 無効化フラグ: disable_ball_avoidance がtrueの場合は無効。
  • 距離閾値: 試合状況(STOP, FREE_KICK等)に応じて 0.2m ~ 0.7m の範囲で変動。
  • 回避動作: 目標位置または経路がボールに近い場合、ボールから離れる方向に目標をずらします。

3. ボールプレイスメントエリア回避

ボールプレイスメント中、配置エリア(ボールと配置点周辺)への侵入を防ぎます。

  • 回避動作: 現在位置や目標位置が配置エリア内の場合、エリア外へ退避する目標位置を計算します。

速度・加速度制御

  • BangBangTrajectory: 目標位置への到達時間を最小化する速度プロファイルを生成。
  • 減速制御: 目標付近でのオーバーシュートを防ぐため、距離に応じた減速(Planning Deceleration)を適用。
  • 回転制御: 加速初期に進行方向とロボットの向きが大きく異なる場合、回転を優先するために角速度制限を調整。

依存関係

  • RVO2 Library: コアアルゴリズム
  • crane_msgs: 通信メッセージ
  • crane_physics: 軌道生成(BangBangTrajectory)
  • crane_world_model_publisher: 環境情報の取得

関連リンク