Skip to content

fix(crane_world_model_publisher): グローバル減速度最適化の初速度推定を制約付き回帰に修正#1393

Open
HansRobo wants to merge 1 commit into
developfrom
fix/ball-calib-global-decel-v0
Open

fix(crane_world_model_publisher): グローバル減速度最適化の初速度推定を制約付き回帰に修正#1393
HansRobo wants to merge 1 commit into
developfrom
fix/ball-calib-global-decel-v0

Conversation

@HansRobo

Copy link
Copy Markdown
Member

概要

crane_world_model_publisher のグローバル減速度最適化(グリッドサーチ)における初速度 v0 の推定を、自由回帰の切片から固定傾きモデルの制約付き推定へ修正します。

問題

simple_ball_physics_optimizer.cpp のグローバル減速度探索では、減速度候補 decel ごとに固定減速度モデル v(t) = v0 - decel * t を仮定して各軌道の RMSE を評価しています。しかし v0 の推定に performLinearRegression(expected_velocities, velocities) の切片を用いていたため、推定 v0 が傾きを自由に持つ回帰の切片となり、候補 decel に依存しない定数になっていました。

その結果、各 decel 候補の RMSE 評価が固定傾き(-decel)モデルの最適 v0 を反映せず歪み、グローバル減速度選定がバイアスする問題がありました。

原因

説明変数 x = expected_velocities (= -decel * t) に対する OLS の切片を v0 として採用していたため、モデルの傾きが 1 に固定されず、v0 が候補 decel と無関係になっていました。固定傾きモデルの最適 v0 とは一致しません。

修正内容

固定傾き(-decel)モデルの最適初速度は残差の平均で与えられます。

  • 最適 v0 = mean(velocities - expected_velocities) = mean(v + decel * t)

performLinearRegression の切片を用いる処理を廃止し、各軌道について mean(velocities[i] + decel * time_points[i]) を直接計算して estimated_v0 とするよう置換しました。これにより各 decel 候補ごとに正しい最適 v0 が用いられ、RMSE 評価とグローバル減速度選定のバイアスが解消されます。

変更は当該推定ロジックのみに限定し、後続の RMSE 計算・品質フィルタリングなどは従来どおりです。

検証

cwm の独立オーバーレイ worktree 上で colcon build(--no-rdeps)によるコンパイル確認を実施し、crane_world_model_publisher のビルドが成功することを確認しました(Build complete.)。本変更はオフライン較正ツールであり、実機・シミュレーション環境での減速度推定の数値検証を併せて推奨します。

レビュー観点

  • 固定傾きモデルの最適 v0 = mean(v + decel * t) という数式が妥当であることの確認
  • 各 decel 候補で v0 が候補依存となり、RMSE 評価のバイアスが解消されていること
  • 減速度推定結果の数値検証(較正データに対する回帰前後の比較)

本PRはソースコード監査ワークフローで検出・敵対的検証されたバグに対する単一修正です。

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