Merged
Conversation
## 問題 HALTレフェリーコマンド中にキーパーが自陣ペナルティエリア外へ向かって動いてしまう。 waiter_sessionがstopHere()を発行しても、rvo2_plannerのPA回避ロジックが 「PA内で停止指示 → 脱出目標を生成して外へ押し出す」という処理を行っていたため。 ## 根本原因 2026-04-05のリファクタ(ea9b4262)でRVO前段処理をパイプライン化した際、 overrideTargetPositionに存在したHALTガードが機能しなくなりデッドコード化していた。 その結果、以下の処理がHALT時にも走り続けていた: - adjustForPenaltyAreaAvoidance: stopHere()でtarget==currentでも 「ゴールから5cm離す方向」を初期目標として脱出ループを起動(rvo2_planner.cpp:770-778) - applyPenaltyAreaBrakingConstraint: PA内のロボットに0.5m/sの脱出速度を加算 また、HALT時はgoalie_skillセッションが起動しないため、 goalie.cpp内でdisableGoalAreaAvoidance()を呼ぶ経路も通らなかった。 ## 修正内容 二重防御で対処: 1. waiter_session(一次防御) stopHere()に加えてdisableAnyAreaAvoidance()/disableCollisionAvoidance()を呼び出し、 LocalPlannerConfigレベルで全回避を無効化する 2. rvo2_planner(二次防御・根本修正) adjustForPenaltyAreaAvoidanceとapplyPenaltyAreaBrakingConstraintの 冒頭でPlaySituation::HALTを検出した場合に早期リターン。 将来HALTに別セッションが追加された場合の保険にもなる。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
HALTレフェリーコマンド中に、キーパーが自陣ペナルティエリア外へ向かって動いてしまう問題を修正する。
背景・根本原因
2026-04-05のリファクタ(ea9b4262)でRVO前段処理をパイプライン化した際、
overrideTargetPositionに存在していたHALTガードが機能しなくなりデッドコード化した。その結果、以下の処理がHALT時にも走り続けていた:
adjustForPenaltyAreaAvoidance:stopHere()でtarget == currentでも「ゴールから5cm離す方向」を初期目標として脱出ループを起動するapplyPenaltyAreaBrakingConstraint: PA内のロボットに 0.5 m/s の脱出速度を加算するまた、HALT時は
goalie_skillセッションが起動しないため、goalie.cpp内でdisableGoalAreaAvoidance()を呼ぶ経路も通らなかった。変更内容
二重防御で対処:
crane_sessions/src/waiter_session.cpp(一次防御):stopHere()に加えてdisableAnyAreaAvoidance()/disableCollisionAvoidance()を呼び出し、LocalPlannerConfig レベルで全回避を無効化するcrane_local_planner/src/rvo2_planner.cpp(二次防御・根本修正):adjustForPenaltyAreaAvoidance: 条件にplay_situation != HALTを追加applyPenaltyAreaBrakingConstraint: 冒頭に HALT 早期リターンを追加(将来 HALT に別セッションが追加された場合の保険にもなる)