From 6bb8d8825e732c94dd874deb51216e0bc973629d Mon Sep 17 00:00:00 2001 From: HansRobo Date: Thu, 3 Oct 2024 15:36:54 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20synced=20local=20'docs/ai'=20wit?= =?UTF-8?q?h=20remote=20'docs'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ai/rvo2_local_planner.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/ai/rvo2_local_planner.md diff --git a/docs/ai/rvo2_local_planner.md b/docs/ai/rvo2_local_planner.md new file mode 100644 index 0000000..24c912e --- /dev/null +++ b/docs/ai/rvo2_local_planner.md @@ -0,0 +1,27 @@ +# RVO2 Local Planner + +## 概要 + +Velocity Obstacle(VO)という考え方をベースに速度空間で計算を行って障害物回避を行うローカルプランナー。 + +## SSLのローカルプランナとしての実装 + +SSLでは単に障害物を回避するだけではなく、ルールによる禁止エリアへの侵入を防ぐ必要がある。 +アルゴリズムに則った実装を行うならば、禁止エリアへ向かう速度を選択しないような速度空間における線形制約を追加する必要がある。 + +しかし、RVO2ライブラリの中に手を加える必要があったり、この操作をわざわざ速度空間で行う必要性もない。 +そこで、ここではRVO2に受け渡す前に禁止エリア内に目標位置がある場合は、禁止エリア外に設定し直すなどの前処理を行うことで対応する。 +この処理の便利なところは、目標位置が必ず禁止エリア外になるため、ロボットが既に禁止エリア内にいる場合でも、目標位置を設定するだけで自動的に禁止エリアから退避できるところである。 + +### ボールプレイスメントエリアの退避 + +ボールプレイスメントエリアの退避は以下のような特殊性をもつ。 + +- ボールプレイスメントは一つのシーンである。 + - したがって、session_controllerで独自のPlannerを割り当てることができる。 +- ボールプレイスメントは特定の条件下でのみ発生する。 + - コマンドのフラグで管理しづらい + +よって、ボールプレイスメントエリアの回避は専用のPlanner作成するのが良い。 +幸い、ボールプレイスメント中はエリアを避けることしか考えなくて良いので、非常にシンプルなPlannerを書くことができる。 +(厳密には、ボールプレイスメント後の敵のフリーキックのことを考える必要はあるが...)