fix 3D wheel Q matrix: assign noise to correct rotation/translation axes - #85
Merged
Conversation
Unit Test Results
5/5 passed |
…independent noise sources
… axis assignments
Simulation regression report - master vs PR8 seeds/config, sim full
stereo_gps
vicon
vicon_lidar
vio_stereo
wheel_2d_ang
wheel_2d_cen
wheel_2d_lin
wheel_3d_ang
wheel_3d_cen
wheel_3d_lin
|
…ng noise axis assignments" This reverts commit 603407b.
Calibration Convergence Report10 seeds · sim
Per-parameter details✅ Camera Time Offset| Parameter | final |error| | final σ | ±3σ |
|
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.











Fixes two noise covariance bugs in
preintegration_3Dfor the 3D wheel types.Bug 1 - wrong noise index assignment (all three 3D types)
The 6-DOF preintegration state is
[delta_R (roll, pitch, yaw), delta_p (x, y, z)]. For a differential-drive wheel on a flat surface, yaw (index 2) and forward x (index 3) are the measured DOFs; roll, pitch, lateral, and vertical are planar constraints.The original Q matrix had the measured noise and planar constraint noise swapped on the rotation axes:
noise_w/noise_v/bnoise_pnoise_pnoise_w/noise_v/bnoise_wnoise_vThis is invisible in simulation where
noise_w == noise_v == noise_p, but causes filter inconsistency on real robots where the planar constraint noise is tuned much tighter than velocity noise (noise_p << noise_w): yaw uncertainty is underestimated, which propagates into position and causes high position NEES.Bug 2 - Wheel3DLin variance missing factor of 2
For
Wheel3DLin, raw measurements are left/right wheel linear speeds (vl, vr), each with noisenoise_v. The derived quantities areomega = (vr-vl)/bandvx = (vr+vl)/2. Because vl and vr are independent, the correct variance is the sum of two contributions:noise_v^2/b^22*noise_v^2/b^2noise_v^2/4noise_v^2/2The
/2/2on the vx line was computing(noise_v/2)^2instead ofVar((vr+vl)/2) = noise_v^2/2.Closes #59.