Skip to content

Commit

Permalink
🔄 synced local 'docs/ai' with remote 'docs'
Browse files Browse the repository at this point in the history
  • Loading branch information
HansRobo committed Oct 3, 2024
1 parent 451a7e9 commit 6bb8d88
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions docs/ai/rvo2_local_planner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# RVO2 Local Planner

## 概要

Velocity Obstacle(VO)という考え方をベースに速度空間で計算を行って障害物回避を行うローカルプランナー。

## SSLのローカルプランナとしての実装

SSLでは単に障害物を回避するだけではなく、ルールによる禁止エリアへの侵入を防ぐ必要がある。
アルゴリズムに則った実装を行うならば、禁止エリアへ向かう速度を選択しないような速度空間における線形制約を追加する必要がある。

しかし、RVO2ライブラリの中に手を加える必要があったり、この操作をわざわざ速度空間で行う必要性もない。
そこで、ここではRVO2に受け渡す前に禁止エリア内に目標位置がある場合は、禁止エリア外に設定し直すなどの前処理を行うことで対応する。
この処理の便利なところは、目標位置が必ず禁止エリア外になるため、ロボットが既に禁止エリア内にいる場合でも、目標位置を設定するだけで自動的に禁止エリアから退避できるところである。

### ボールプレイスメントエリアの退避

ボールプレイスメントエリアの退避は以下のような特殊性をもつ。

- ボールプレイスメントは一つのシーンである。
- したがって、session_controllerで独自のPlannerを割り当てることができる。
- ボールプレイスメントは特定の条件下でのみ発生する。
- コマンドのフラグで管理しづらい

よって、ボールプレイスメントエリアの回避は専用のPlanner作成するのが良い。
幸い、ボールプレイスメント中はエリアを避けることしか考えなくて良いので、非常にシンプルなPlannerを書くことができる。
(厳密には、ボールプレイスメント後の敵のフリーキックのことを考える必要はあるが...)

0 comments on commit 6bb8d88

Please sign in to comment.