schema_version: slac.imu_lidar_rotation/v0.1
method: angular_rate_alignment/v0.1
solver_status: converged
policy_status: pass
policy_reasons:
- every rotation axis is estimated and held-out windows detect every control
calibrated_dofs:
- roll
- pitch
- yaw
- time_offset
- gyro_bias_x
- gyro_bias_y
- gyro_bias_z
rotation_quat_xyzw:
- -0.000851059063929538
- 0.0009991080311700005
- -0.0020228329935849444
- 0.99999709280992
time_offset_s: 0.010203740597923151
gyro_bias_rps:
- 0.01980879670889618
- -0.002739282631906773
- 0.0023867081891900937
dofs:
- name: roll
  unit: deg
  value: -0.09775573618339131
  std_analytic: 0.023042431407896653
  std_jackknife: 0.020483086472628816
  std_reported: 0.023042431407896653
  status: estimated
  reference_value: 0.0
  error_to_reference: -0.09775573618339131
  known_bad_control:
    amount: 1.0
    unit: deg
    holdout_delta_chi2: 1079.3453167420466
    detected: true
- name: pitch
  unit: deg
  value: 0.1142918147424655
  std_analytic: 0.02180047758232608
  std_jackknife: 0.016526782367050793
  std_reported: 0.02180047758232608
  status: estimated
  reference_value: 0.0
  error_to_reference: 0.1142918147424655
  known_bad_control:
    amount: 1.0
    unit: deg
    holdout_delta_chi2: 1228.1097121279945
    detected: true
- name: yaw
  unit: deg
  value: -0.23189744419298897
  std_analytic: 0.026816024138507335
  std_jackknife: 0.03910930194145133
  std_reported: 0.03910930194145133
  status: estimated
  reference_value: 0.0
  error_to_reference: -0.23189744419298897
  known_bad_control:
    amount: 1.0
    unit: deg
    holdout_delta_chi2: 862.8746303739463
    detected: true
- name: time_offset
  unit: s
  value: 0.010203740597923151
  std_analytic: 2.4631732788409022e-05
  std_jackknife: 2.157642966880258e-05
  std_reported: 2.4631732788409022e-05
  status: estimated
  known_bad_control:
    amount: 0.01
    unit: s
    holdout_delta_chi2: 40143.30159892146
    detected: true
- name: gyro_bias_x
  unit: rad/s
  value: 0.01980879670889618
  std_analytic: 8.17636908770761e-05
  std_jackknife: 0.0005992984701552571
  std_reported: 0.0005992984701552571
  status: estimated
- name: gyro_bias_y
  unit: rad/s
  value: -0.002739282631906773
  std_analytic: 8.196362518303036e-05
  std_jackknife: 5.345463698799254e-05
  std_reported: 8.196362518303036e-05
  status: estimated
- name: gyro_bias_z
  unit: rad/s
  value: 0.0023867081891900937
  std_analytic: 8.109354136283087e-05
  std_jackknife: 0.00020900473844216112
  std_reported: 0.00020900473844216112
  status: estimated
options:
  holdout_every: 3
  jackknife_groups: 8
  rotation_control_deg: 1.0
  time_control_s: 0.01
  detection_delta_chi2: 9.0
  window_duration_s: 10.0
  local_map_scans: 5
  deskew_iterations: 1
  gyro_deskew_passes: 5
  deskew_convergence_sigma: 0.25
  feedback_check_deg: 2.0
  model: preintegrated
  pair_steps:
  - 1
  rate_sigma_floor_rps: 0.01
  rate_sigma_fraction: 0.02
  observable_rotation_std_deg: 0.1
  observable_time_offset_std_s: 0.002
windows:
  scans_read: 5878
  odometry_segments: 1
  unreliable_registrations: 137
  windows: 59
  rate_intervals: 5667
  imu_samples: 119819
train_windows: 39
holdout_windows: 20
jackknife_fits: 8
train_median_rate_residual_rps: 0.008179746685867824
holdout_median_rate_residual_rps: 0.008362665138657879
reference: 'Livox MID360 manual: IMU axes aligned with the LiDAR frame'
deskew_passes:
- deskew: lidar_constant_velocity
  policy_status: inconclusive
  time_offset_s: 0.013389307074890975
  holdout_median_rate_residual_rps: 0.07603812840762494
  rotation_rpy_deg:
  - -0.23897049452907657
  - 0.6685615728507277
  - -1.2387829894606264
- deskew: gyro
  policy_status: pass
  time_offset_s: 0.0120150868511994
  holdout_median_rate_residual_rps: 0.012496742030245284
  rotation_rpy_deg:
  - -0.1997997442062005
  - 0.1983523409237814
  - -0.5786357516505567
- deskew: gyro
  policy_status: pass
  time_offset_s: 0.01119154865637433
  holdout_median_rate_residual_rps: 0.01000875622472235
  rotation_rpy_deg:
  - -0.13672688143070655
  - 0.12703923018744295
  - -0.3627723096888271
- deskew: gyro
  policy_status: pass
  time_offset_s: 0.010691532596135797
  holdout_median_rate_residual_rps: 0.009075136104684137
  rotation_rpy_deg:
  - -0.10561281110261223
  - 0.11280305462706505
  - -0.2802751991797181
- deskew: gyro
  policy_status: pass
  time_offset_s: 0.010387531087983227
  holdout_median_rate_residual_rps: 0.008587663836272259
  rotation_rpy_deg:
  - -0.09070328936734257
  - 0.11614421736663832
  - -0.24358181401243123
- deskew: gyro
  policy_status: pass
  time_offset_s: 0.010203740597923151
  holdout_median_rate_residual_rps: 0.008362665138657879
  rotation_rpy_deg:
  - -0.09775573618339131
  - 0.1142918147424655
  - -0.23189744419298897
- deskew: gyro_feedback_check
  policy_status: pass
  time_offset_s: 0.01015350119147613
  holdout_median_rate_residual_rps: 0.00971246955040725
  rotation_rpy_deg:
  - 0.1194681040436073
  - 0.3475508244339433
  - 0.06648918782248905
deskew_feedback_ratio: 0.21800675708644765
limitations:
- The reference rotation is the MID360 design value (IMU axes aligned with the LiDAR);
  it is not a measurement.
- Mean angular rates over one LiDAR period approximate the rotation increment; the
  second-order error grows with the rotation per period.
- The translation of T_lidar_imu is not estimated by this method.
provenance:
  generator: calibrex.evaluation.imu_lidar_rotation
  generator_version: 0.4.1
  git_commit: 5f7e694
  command:
  - calibrex
  - imu-lidar
  - livox
  - construction_seq2
  - --profile
  - rtk-slam
  - --dataset-family
  - rtk_slam
  - --dataset-license
  - see https://huggingface.co/datasets/Willyzw/rtk-slam-dataset
  - --output
  - docs/assets/mid360_imu_lidar_rotation_rtk_slam_construction_seq2.yaml
  dataset_family: rtk_slam
  sequence_ids:
  - construction_seq2
  stream_profile: rtk-slam
  input_sha256: 63ef720a8ef758ec0539c2f076ab1e9eaebfbb0678af452c7f5114459aeb2fbe
  input_digest_scope: bag metadata.yaml in full; bag databases by size and first 64
    MiB
  dataset_license: see https://huggingface.co/datasets/Willyzw/rtk-slam-dataset
  created_at: '2026-09-30T08:31:01.856833+00:00'
