Conversation
キックオフ時にチップキックで固定距離を蹴る実装から、GoalKickスキルを 活用した実装に変更する。 変更内容: - chip_kick=true / target_chip_distance=2.0 の設定を削除 - Kick スキルの代わりに GoalKick スキルを保持するよう変更 - ターゲットをゴールセンター固定から GoalKick が計算する最適角度に変更 これにより、敵ロボット配置を考慮してゴール枠内の隙間を狙うストレート キック(target_kick_speed=6.0)でシュートするようになる。
回り込み速度を低く設定(zonoh線ハーフタイム後有効化)
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線ハーフタイム後有効化)
# Conflicts: # crane_robot_skills/include/crane_robot_skills/simple_kickoff.hpp
JO2026 rion戦でコート外開始地点のボールプレイスメントが無限ループに 陥る問題に対処した。ドリブラーではない側面でボールを押し続けてball_sensor が反応せずPULL_BACK_FROM_EDGE_TOUCHに16.8秒間張り付く現象が発生していた。 onPostUpdate()で毎フレーム更新する2つのグローバルタイマーを導入し、 しきい値(各10秒)を超えたらENTRY_POINTに戻して無限リトライさせる: - outside_field_timeout: ロボットがコート外に連続滞在した時間 - approach_timeout: アプローチ系状態に連続滞在した時間 タイムアウト遷移はPULL_BACK_FROM_EDGE_PREPARE/TOUCH/PULL, GO_OVER_BALL, PASS_TO_TARGET, CONTACT_BALL, MOVE_TO_TARGETの全アプローチ状態に追加。 リトライ上限は設けず、レフェリーの30秒タイムアウトに任せる。
THEIR_BALL_PLACEMENT中、カプセル形状回避の押し出し先が相手PA内に なることがあり、プレイスメント終了→STOP遷移時に 「Attacker Too Close To Penalty Area」ファールが連発する問題を修正。 BallPlacementAvoidanceSessionの目標位置生成に敵PA回避を追加: - 押し出し主候補の無効判定を「フィールド外 or 敵PA内」に拡張 - 垂直2候補・放射8候補の有効性チェックにも敵PAチェックを追加 - THEIR_BALL_PLACEMENT時のみenableGoalAreaAvoidance()でB層保険も有効化 (OUR_BALL_PLACEMENTは従来通りdisableGoalAreaAvoidance()) PAオフセットはball_nearby_positioner.cppと同じ0.35mを踏襲。
autoBallPlacementEnabled・autoCenterAfterGoalEnabledをfalseに変更。 手動で制御する運用に合わせた設定。
ハーフコート練習で攻撃方向が反転する場合にも正しく動作させるため、 getTheir*Goal* 系を getAttack*Goal* 系に置き換え。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- engine.yaml: 全gameEventを BEHAVIOR_LOG 化(autorefの自動判定を抑制)、 teams/activeTrackerSource を更新 - ssl-vision-client-config.json: 末尾改行を削除 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
YAMLの各セッションに fixed_robots: [id,...] を指定すると、 suitabilityスコアによる動的割当を無視してそのIDを優先取得する。 ハーフコート練習中にdefender/forward等のロールが入れ替わるのを防ぐ目的。 - SessionSlot/SessionRequirement に fixed_robots を追加 - ConfigurationManager で YAML をパース - allocateRobotsGreedy で固定割当の分岐を追加(不在IDは warn してスキップ) - HALF_FIELD_PRACTICE に仮IDを設定(実機構成に応じて要調整) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
【根本原因1】getAttackSideSign()の符号定義が実態と逆だった - world_model_wrapper.hpp: 通常モードでgetOurSideSign()を返しており 「攻撃方向の符号」のはずが自陣側符号と同じ値+1を返していた - FreeKicker内でこれを直接使用したため、fallbackターゲット計算 (sign * field_half_x * 0.4)が敵陣-X方向でなく自陣+X方向を指し、 パス評価の攻撃半面ボーナスも逆に自陣ロボへ×1.5、敵陣へ×0.1となっていた - 修正: `getOurSideSign() : -getOurSideSign()` に反転(逆も然り) - ForwardSessionはワークアラウンドとして-の否定を付けていたため合わせて除去 【根本原因2】KICKステートでキック電力設定をクロバーしていた - setKickWithChipTargetDistance(2.5) でoverride=trueに設定した直後に kickWithChip(1.0) がoverride=falseに戻しフルパワーキックとなっていた - 目標距離2.5mのチップが6m以上飛んで自陣に着弾していた - kick_old.cpp/kick.cpp のif/else排他パターンに合わせて修正 (setKickWith*は内部でchip_enableも自動セットするため二度呼び不要) 【根本原因3】チップ距離が固定2.5mだった - chip_distance_メンバを追加し、パス選定時にrequired_chip_distance+0.2で動的計算 - fallbackターゲット時は実際のターゲット距離をclampして使用 【防御策】selectPassTarget()で自陣ロボを事前除外 - getOurSideSign()で半面判定し、pos.x()*our_sign>0の自陣ロボを候補から除外 - pass_target_metrics.cppと同じフィルタ条件(getOurSideSign直接使用)で統一 - getAttackSideSign()のセマンティクスに依存しない安全網として機能する
ボールプレイスメントで使われていたローテ+成功/失敗履歴の選定ロジックを 共通基底 (RotatingSingleSkillSession + rotation_suitability + SkillAssignmentHistory) に切り出し、フリーキックにも適用。 履歴ファイルはスキルごとに別 (free_kicker_history.yaml)。 フリーキックの成否は以下の優先順で判定: 1. 試行中に発生した game_event に NO_PROGRESS_IN_GAME / 自チームの BOT_DRIBBLED_BALL_TOO_FAR / ATTACKER_DOUBLE_TOUCHED_BALL があれば失敗 2. FreeKicker が FINISH 到達 → kick_actually_launched をそのまま (KICK 状態のタイムアウト空振りは失敗扱い) 3. それ以外 (FINISH 未到達で割当解除) は失敗 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ALIGN状態の目標位置を press_point (ball - dir·0.12m) から APPROACH最終地点と同じ ball - dir·approach_distance (0.25m) に変更し、 APPROACH→ALIGN遷移時の0.13mの目標ジャンプを排除した。 また、ALIGN進入時に目標位置を1回だけ計算してロック (align_target_locked_) することで、ボール検出ジッタによる 目標振動も排除した。これにより、コーナー付近など press_pointが物理的に到達不能だった状況でも ロボットがALIGN開始位置でそのまま安定し、 KICKへの遷移が確実かつ迅速に行われるようになる。 パラメータ変更: - align_distance パラメータを削除 (approach_distance で代替) - align_position_tolerance: 0.05 → 0.07 - align_stable_frames: 5 → 3
位置・速度・角速度の安定判定(align_stable_frames等)を廃止し、 ALIGN進入から1秒経過したらKICKへ遷移するように変更した。 コーナーなど到達困難なpress_pointへの収束を待つ必要がなくなり、 ALIGN→KICKの遷移が確実かつ一定時間で行われる。 - FK_ALIGN_PHASE_TIMEOUT を FK_ALIGN_WAIT_SEC (1.0s) に置き換え - align_position/speed/omega_tolerance、align_stable_frames パラメータを削除 - align_stable_count_ メンバを削除
位置・速度・角速度の安定判定(align_stable_frames等)を廃止し、 ALIGN進入から1秒経過したらKICKへ遷移するように変更した。 コーナーなど到達困難なpress_pointへの収束を待つ必要がなくなり、 ALIGN→KICKの遷移が確実かつ一定時間で行われる。 - FK_ALIGN_PHASE_TIMEOUT を FK_ALIGN_WAIT_SEC (1.0s) に置き換え - align_position/speed/omega_tolerance、align_stable_frames パラメータを削除 - align_stable_count_ メンバを削除
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.
No description provided.