Skip to content

fix: HALT時にキーパーがペナルティエリア回避で動く問題を修正#1352

Merged
HansRobo merged 1 commit intodevelopfrom
fix/halt-goalie-penalty-avoidance
Apr 23, 2026
Merged

fix: HALT時にキーパーがペナルティエリア回避で動く問題を修正#1352
HansRobo merged 1 commit intodevelopfrom
fix/halt-goalie-penalty-avoidance

Conversation

@HansRobo
Copy link
Copy Markdown
Member

概要

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 に別セッションが追加された場合の保険にもなる)

## 問題

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に別セッションが追加された場合の保険にもなる。
@HansRobo HansRobo merged commit 1db5575 into develop Apr 23, 2026
8 checks passed
@HansRobo HansRobo deleted the fix/halt-goalie-penalty-avoidance branch April 23, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant