Files
calibration/results/vehicle_20260808/final_T_RTK_lidar.json

337 lines
9.5 KiB
JSON

{
"schema_version": 1,
"success": true,
"convention": "T_RTK_lidar maps raw LiDAR points into the RTK navigation frame",
"equation": "A_RTK_ij X = X B_LiDAR_ij",
"frames": {
"RTK": {
"origin": "GGA positioning reference point; confirm ANT1/reference antenna in receiver configuration",
"x_axis": "vehicle forward after applying the configured G90 heading offset",
"y_axis": "left of the RTK X/baseline axis (not necessarily vehicle-left)",
"z_axis": "up",
"yaw_enu_deg": "90 - (rawHeadingDeg + -90)",
"frame_mode": "vehicle_forward_heading_offset"
},
"LiDAR": {
"description": "raw Helios sensor frame from points_raw polar decode",
"x_axis": "+X at azimuth 0° (forward when aviation connector faces vehicle rear)",
"y_axis": "+Y at azimuth +90° (left when +X is vehicle-forward)",
"z_axis": "up",
"origin_note": "optical/center per Helios manual; mounting height includes 63.5 mm base offset when deriving mechanical ΔZ"
}
},
"backend": "consensus",
"measured_lidar_extrinsic_used_as_initial": true,
"solver_initial_extrinsic": "D:\\First-dev-dept\\calibration-rtk-run\\run\\rtk_lidar_mechanical_initial.json",
"body_heading_offset_deg": -90.0,
"body_heading_offset_used": true,
"body_antenna_lever_xy_used": false,
"translation_m": [
0.21782224963960972,
-0.41134780227275347,
0.1065423366878719
],
"rotation_rpy_deg_xyz": [
0.06623859235262805,
0.8096624730962496,
-0.5513220563826681
],
"quaternion_xyzw": [
0.00061201333859398,
0.007062715262034178,
-0.004815137247499642,
0.9999632782988027
],
"coordinate_contract_audit": {
"status": "no_near_180_degree_axis_conflict",
"requires_physical_axis_confirmation": false,
"mechanical_initial_path": "D:\\First-dev-dept\\calibration-rtk-run\\run\\rtk_lidar_mechanical_initial.json",
"mechanical_self_consistency": {
"baseline_points": "vehicle_right",
"frame_mode": "vehicle_forward_heading_offset",
"heading_offset_deg": -90.0,
"consistent": true,
"issues": []
},
"solution_vs_declared_baseline_side": {
"baseline_points": "vehicle_right",
"solution_yaw_deg": -0.5513220563826681,
"expected_yaw_deg": 0.0,
"yaw_error_deg": 0.5513220563826735,
"xy_error_m": 0.007516661287052368,
"z_error_m": 0.0280423356878719,
"mixed_translation_rotation_inheritance": false,
"near_expected_pose": true
},
"solution_relative_to_mechanical_initial": {
"translation_m": 0.029032271487700816,
"rotation_deg": 0.9820426535863694,
"delta_matrix_4x4": [
[
0.9998538650128304,
0.009638565806830942,
0.014119017957784103,
0.006962889639609726
],
[
-0.009621275903042714,
0.9999528797859223,
-0.0012919976154994906,
0.002831671727246521
],
[
-0.014130805670674627,
0.0011559658421926345,
0.9998994869856016,
0.0280423356878719
],
[
0.0,
0.0,
0.0,
1.0
]
]
},
"note": "No automatic 180-degree correction was applied. Confirm static GNHPR left/right vs vehicle heading and Helios +X vs vehicle forward before deployment."
},
"matrix_4x4": [
[
0.9998538650128304,
0.009638565806830942,
0.014119017957784103,
0.21782224963960972
],
[
-0.009621275903042714,
0.9999528797859223,
-0.0012919976154994906,
-0.41134780227275347
],
[
-0.014130805670674627,
0.0011559658421926345,
0.9998994869856016,
0.1065423366878719
],
[
0.0,
0.0,
0.0,
1.0
]
],
"quality": {
"stations": 27,
"pairs": 20,
"residuals": {
"pairs": 20,
"translation_m": {
"rms": 0.07116027693011169,
"median": 0.048258124379040895,
"p90": 0.10707349630410129,
"p95": 0.12100345665884242,
"max": 0.1859157912711514
},
"rotation_deg": {
"rms": 0.9820870524210346,
"median": 0.6015253089423158,
"p90": 1.626986719630708,
"p95": 1.7485896823567941,
"max": 2.6898815510329674
},
"per_pair": [
{
"pair_index": 0,
"translation_m": 0.10590532722733068,
"rotation_deg": 0.5565962122599133
},
{
"pair_index": 1,
"translation_m": 0.11758701799503664,
"rotation_deg": 0.36543717366192036
},
{
"pair_index": 2,
"translation_m": 0.07568813061789224,
"rotation_deg": 1.6990480050580474
},
{
"pair_index": 3,
"translation_m": 0.07918615709103373,
"rotation_deg": 0.33723851079591255
},
{
"pair_index": 4,
"translation_m": 0.04618587731787657,
"rotation_deg": 0.21044665580544528
},
{
"pair_index": 5,
"translation_m": 0.1859157912711514,
"rotation_deg": 2.6898815510329674
},
{
"pair_index": 6,
"translation_m": 0.015032558607699278,
"rotation_deg": 0.2283712127949818
},
{
"pair_index": 7,
"translation_m": 0.013237326674396453,
"rotation_deg": 1.6189799101387812
},
{
"pair_index": 8,
"translation_m": 0.07003654121179845,
"rotation_deg": 0.6464544056247182
},
{
"pair_index": 9,
"translation_m": 0.093450766078183,
"rotation_deg": 0.6476769159531274
},
{
"pair_index": 10,
"translation_m": 0.015054656507824072,
"rotation_deg": 1.041955302231996
},
{
"pair_index": 11,
"translation_m": 0.02338150242985638,
"rotation_deg": 0.9212619385214977
},
{
"pair_index": 12,
"translation_m": 0.01577916809950981,
"rotation_deg": 0.5021648028537498
},
{
"pair_index": 13,
"translation_m": 0.05033037144020521,
"rotation_deg": 0.31352985458971655
},
{
"pair_index": 14,
"translation_m": 0.059761151158357104,
"rotation_deg": 0.8078349560587313
},
{
"pair_index": 15,
"translation_m": 0.04160156756834453,
"rotation_deg": 0.32936437427192145
},
{
"pair_index": 16,
"translation_m": 0.02424387832291359,
"rotation_deg": 0.430799739443549
},
{
"pair_index": 17,
"translation_m": 0.05938006964566194,
"rotation_deg": 0.3855347569405268
},
{
"pair_index": 18,
"translation_m": 0.003922740066294881,
"rotation_deg": 0.8803664894801937
},
{
"pair_index": 19,
"translation_m": 0.02258390614293418,
"rotation_deg": 0.9489255319885953
}
]
},
"weighted_jacobian_condition_number": 7.551077537197385,
"linearized_one_sigma": {
"translation_m": [
0.01109415838733884,
0.011043247019191056,
0.0049617743728656676
],
"rotation_deg": [
0.08809558088476348,
0.08691570892756702,
0.13552099560800782
],
"warning": "conditional local estimate; bootstrap is the primary stability check"
},
"bootstrap": {
"runs": 200,
"order": [
"x_m",
"y_m",
"z_m",
"roll_deg",
"pitch_deg",
"yaw_deg"
],
"std": [
0.006235825930578342,
0.004851737742140203,
0.0004474159829207979,
0.07186455153709871,
0.11762318545143821,
0.061763211598034336
],
"p025": [
0.20955504469154063,
-0.4174678620205485,
0.10568919463688603,
-0.06202286115194262,
0.5207464314096704,
-0.6639417037512721
],
"p975": [
0.23211472114546824,
-0.4001091835786546,
0.1074353326322909,
0.23746760471402314,
1.0462704287205609,
-0.43455346485967655
]
}
},
"z_constraint": {
"observable_from_planar_AX_XB": false,
"method": "LiDAR ground planes plus externally supplied RTK reference-point height above ground",
"rtk_reference_height_above_ground_m": 1.9165,
"warning": "z is conditional on the supplied RTK antenna height; it is not independently identified by planar Ackermann motion"
},
"important_limit": "AX residual and bootstrap quantify internal consistency, not independent centimetre-grade absolute certification",
"selection": {
"recommended": true,
"reason": "Uses only motion pairs accepted independently by both Open3D GICP and small_gicp",
"open3d_vs_small_gicp": {
"translation_m": 0.00312519750472982,
"rotation_deg": 0.11907006217018351,
"delta_matrix_4x4": [
[
0.9999996872332217,
-0.00030752729270551075,
-0.0007286703114418758,
0.000533303946557151
],
[
0.00030892706731572284,
0.9999981058814015,
0.0019216653392719056,
-0.002909732881513971
],
[
0.0007280779667146176,
-0.0019218898442212235,
0.9999978881187204,
0.001007919095162138
],
[
0.0,
0.0,
0.0,
1.0
]
]
}
}
}