改为车头向前整链:主从装反机械初值、双天线 pitch/roll 姿态与默认 HeadingOffsetDeg=-90

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
lichun.qu
2026-08-11 18:07:54 +08:00
co-authored by Cursor
parent 6242fd1081
commit 5f59bcd795
13 changed files with 698 additions and 199 deletions
+10 -10
View File
@@ -6,18 +6,18 @@
|---|---|
| `run_full_pipeline.ps1` | 站目录导出 `combined/` 后跑到 `T_RTK_lidar` |
| `export_multisensor_stations.ps1` | 薄封装:`tools/export_raw_to_combined.py` |
| `prepare_multisensor_dataset.ps1` | 每站一帧 + yaw-only RTK 位姿 |
| `run_direct_rtk_lidar.ps1` | 从 `combined/` 标定并封装最终结果(**默认基线系** |
| `prepare_multisensor_dataset.ps1` | 每站一帧 + RTK 位姿(默认含双天线 pitch/roll |
| `run_direct_rtk_lidar.ps1` | 从 `combined/` 标定并封装最终结果(**默认车头向前 -90** |
| `run_single_dataset.ps1` | 地面、双 GICP、精筛、共识、AX=XB |
| `run_joint_rtk_lidar.ps1` | 多批共识对联合求解 |
| `view_result.ps1` | 3D 运动对对比 |
| `rtk_lidar_mechanical_initial.json` | 仅 AX=XB 初值;**禁止**用于 pair |
## 默认参数(匹配当前约 2 m 车顶雷达 / 基线系
## 默认参数(匹配当前约 2 m 车顶雷达 / 车头向前
| 参数 | 默认 |
|---|---|
| `HeadingOffsetDeg` | `0`基线系 |
| `HeadingOffsetDeg` | `-90`车头向前;主从装反、基线朝右 |
| `GroundZMin/Max` | `-2.5` / `-1.5` |
| `ExpectedStations` | `27` |
| `MinStations` | `20` |
@@ -53,10 +53,10 @@ python tools\export_g90_h32_windows_to_combined.py `
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_direct_rtk_lidar.ps1" `
-CombinedRoot "D:\data\rtk_lidar_run\combined" `
-WorkRoot "D:\data\rtk_lidar_run\prepared_baseline_h19165" `
-OutputRoot "D:\data\rtk_lidar_run\outputs_baseline_h19165" `
-WorkRoot "D:\data\rtk_lidar_run\prepared_vehicle_h19165" `
-OutputRoot "D:\data\rtk_lidar_run\outputs_vehicle_h19165" `
-RtkReferenceHeightAboveGroundM 1.9165 `
-HeadingOffsetDeg 0 `
-HeadingOffsetDeg -90 `
-ExpectedStations 27 `
-GroundZMin -2.5 -GroundZMax -1.5
```
@@ -65,8 +65,8 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_direct_rt
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_result.ps1" `
-Frames "D:\data\rtk_lidar_run\prepared_baseline_h19165\frames_all" `
-Pairs "D:\data\rtk_lidar_run\outputs_baseline_h19165\consensus\B_consensus.npz" `
-Extrinsic "D:\data\rtk_lidar_run\outputs_baseline_h19165\final_T_RTK_lidar.json" `
-Frames "D:\data\rtk_lidar_run\prepared_vehicle_h19165\frames_all" `
-Pairs "D:\data\rtk_lidar_run\outputs_vehicle_h19165\consensus\B_consensus.npz" `
-Extrinsic "D:\data\rtk_lidar_run\outputs_vehicle_h19165\final_T_RTK_lidar.json" `
-PairIndex 0
```
+28 -10
View File
@@ -1,23 +1,41 @@
{
"schema_version": 1,
"convention": "T_RTK_lidar maps raw LiDAR points into the RTK baseline frame (X = rawHeading baseline, Y left, Z up; heading_offset_deg = 0)",
"translation_m": [
0.414179474,
"schema_version": 3,
"convention": "T_RTK_lidar maps raw LiDAR points into the vehicle-forward RTK body frame (X forward, Y left, Z up) after HeadingOffsetDeg=-90",
"frame_mode": "vehicle_forward_heading_offset",
"heading_offset_deg": -90.0,
"baseline_points": "vehicle_right",
"baseline_points_note": "Field-confirmed: master/slave assignment reversed vs G90 diagram, antennas left-right symmetric about rear-axle centerline. Master/GGA on vehicle left, slave on right; rawHeading points vehicle right.",
"vehicle_flu_lever_master_to_lidar_m": [
0.210859360,
0.004000001
-0.414179474,
0.078500001
],
"vehicle_flu_note": "Vehicle FLU: LiDAR origin relative to master/GGA = ahead, right, above. CAD drawing X was opposite vehicle-forward; longitudinal sign is +X in true FLU (solver also converges to +X).",
"antenna_symmetry_note": "Master/slave are mirrors about the rear-axle centerline; swap flips baseline 180° and the vehicle-Y sign of the master→LiDAR lever",
"translation_m": [
0.210859360,
-0.414179474,
0.078500001
],
"rotation_rpy_deg_xyz": [
0.0,
0.0,
90.0
0.0
],
"matrix_4x4": [
[0.0, -1.0, 0.0, 0.414179474],
[1.0, 0.0, 0.0, 0.210859360],
[0.0, 0.0, 1.0, 0.004000001],
[0.0, 1.0, 0.0, -0.414179474],
[0.0, 0.0, 1.0, 0.078500001],
[0.0, 0.0, 0.0, 1.0]
],
"use": "Final AX=XB solver initialization only; never use for LiDAR pair registration",
"yaw_note": "≈90 deg yaw is expected when LiDAR X is vehicle-forward and the dual-antenna baseline is left-right",
"z_note": "CAD/mechanical z only; final z is constrained by measured GGA/ANT1 phase-center height above ground"
"yaw_note": "In vehicle-forward delivery, LiDAR +X vehicle forward ⇒ mechanical yaw ≈ 0",
"z_note": "78.500001 mm = H_L - H_R with H_L=1994.999879 mm, H_R=1916.499878 mm",
"attitude_composition": "R_W_body = Rz(yaw_raw) Ry(-pitch) Rx(roll) Rz(-heading_offset); pitch/roll stay in baseline frame",
"baseline_frame_equivalent": {
"heading_offset_deg": 0.0,
"translation_m": [0.414179474, 0.210859360, 0.078500001],
"rotation_rpy_deg_xyz": [0.0, 0.0, 90.0],
"note": "Same physical install expressed in rawHeading baseline frame"
}
}
+3 -2
View File
@@ -14,8 +14,9 @@ param(
[int]$SmallGicpMaxGap = 26,
[int]$Open3DMaxGap = 26,
[double]$MaxReferenceTranslationM = 8.0,
# Baseline frame: rawHeading as RTK X. Use 90 only when deliberately targeting vehicle-forward.
[double]$HeadingOffsetDeg = 0.0,
# Baseline frame: rawHeading as RTK X. Default vehicle-forward for this car: -90
# (master/slave swapped, baseline points vehicle-right).
[double]$HeadingOffsetDeg = -90.0,
[string]$SolverInitialExtrinsic = "",
[double]$RefineMinInlierRatio = 0.63,
[double]$RefineMaxInlierRmseM = 0.14
+1 -1
View File
@@ -15,7 +15,7 @@
# Roof-mounted H32 (~2 m). Do not reuse [-1.4, -0.4] on this vehicle.
[double]$GroundZMin = -2.5,
[double]$GroundZMax = -1.5,
[double]$HeadingOffsetDeg = 0.0
[double]$HeadingOffsetDeg = -90.0
)
$ErrorActionPreference = "Stop"