fix(world_model_publisher): Tracker欠落時の短期LOST判定を抑制#1355
Open
HansRobo wants to merge 12 commits into
Open
Conversation
TrackerWrapperPacketのフレームからロボットが1フレーム欠落するだけで available_vision/available_trackerが即false(LOST扱い)になる問題を修正。 robot_vision_hold_sec(デフォルト0.15秒)以内に検出されていたロボットは 次フレームでTrackerに含まれなくても状態を維持する。保持時間を超えた 場合のみリセットする。 背景: zunoh戦後半でbot=1がautoref側では検出されているのにcraneの WorldModelではdetected=Falseになり制御不能となり、autorefから ATTACKER_TOO_CLOSE_TO_DEFENSE_AREAファールを取られた。これは autoref TrackerのlosyなTrackerWrapperPacket出力を一時的に 補う短期保持で軽減できる。
キックオフ時にチップキックで固定距離を蹴る実装から、GoalKickスキルを 活用した実装に変更する。 変更内容: - chip_kick=true / target_chip_distance=2.0 の設定を削除 - Kick スキルの代わりに GoalKick スキルを保持するよう変更 - ターゲットをゴールセンター固定から GoalKick が計算する最適角度に変更 これにより、敵ロボット配置を考慮してゴール枠内の隙間を狙うストレート キック(target_kick_speed=6.0)でシュートするようになる。
回り込み速度を低く設定(zonoh線ハーフタイム後有効化)
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.
背景・問題
zunoh戦 後半rosbag解析で判明した事象:ibis(YELLOW)が
ATTACKER_TOO_CLOSE_TO_DEFENSE_AREAを3回取られた(t=156.88, 157.18, 183.23、すべてbot=1 at (-6.00, 1.10))。rosbag調査で、bot=1 は t=82.35付近で crane の WorldModel上で
detected=False(available_vision=false)になり、姿勢が (-0.505, 4.144) で凍結・制御不能状態になっていた。一方、autorefはraw SSL-Visionを直接見るため、bot=1 を実フィールド上で検出し続けてファールを発火していた。根本原因
processTrackedFrameの現実装では毎フレーム冒頭で全ロボットのavailable_vision/available_trackerを一旦falseに落とし、今回 TrackerWrapperPacket フレームに含まれるロボットだけtrueに戻す。そのため:detected=False修正内容
robot_vision_hold_sec(デフォルト 0.15秒 = Tracker 60Hz で約9フレーム分)の保持タイムアウトを追加。robot_vision_hold_sec以内に検出されていたロボットはフレームから消えてもavailable_visionを維持falseにリセット(長期lostは正しくlost扱い)robot_vision_hold_sec)変更ファイル
crane_world_model_publisher/src/world_model_data_provider.cpp—processTrackedFrameリセットロジック変更crane_world_model_publisher/include/crane_world_model_publisher/world_model_data_provider.hpp—robot_vision_hold_sec_メンバ変数追加テスト計画
colcon build --packages-select crane_world_model_publisher→ 成功済みavailable_visionが即 false にならないこと)available_vision=falseになることスコープ外