补充data4与data5联合标定流程并显式配置RTK高度
This commit is contained in:
@@ -92,7 +92,7 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_full_pipe
|
||||
-RtkCapture "$Raw\captures\rtk.rscap" `
|
||||
-ImuCapture "$Raw\captures\imu.rscap" `
|
||||
-OutputRoot $Out `
|
||||
-RtkReferenceHeightAboveGroundM 0.8535 `
|
||||
-RtkReferenceHeightAboveGroundM 0.758 `
|
||||
-ExpectedStations 34
|
||||
```
|
||||
|
||||
@@ -122,7 +122,7 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_direct_rt
|
||||
-CombinedRoot "E:\calibration_output\exported\combined" `
|
||||
-WorkRoot "E:\calibration_output\prepared_rtk_direct" `
|
||||
-OutputRoot "E:\calibration_output\calibration" `
|
||||
-RtkReferenceHeightAboveGroundM 0.8535 `
|
||||
-RtkReferenceHeightAboveGroundM 0.758 `
|
||||
-ExpectedStations 34
|
||||
```
|
||||
|
||||
@@ -147,27 +147,68 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_result.p
|
||||
|
||||
模式3和4应让同一墙面、立柱、路缘和地面尽量重合。终端同时打印 `B^-1(X^-1AX)` 的平移和旋转增量。应查看多对,不能只挑视觉效果最好的一对。
|
||||
|
||||
## 7. data4参考结果
|
||||
## 7. data4与data4+data5结果对比
|
||||
|
||||
仓库保留了精简参考产物,见[`results/reference_data4`](results/reference_data4/README.md):
|
||||
data5补充了30个有效静态站点及两个法向方向不同的固定平面板。当前联合流程只合并data4、data5各自的批内运动对,不构造跨批次运动,因此两次采集的时间、ENU原点和绝对位置不同不会直接影响共享外参;前提是传感器安装未改变,并且两批数据使用相同的RTK坐标定义和LiDAR原始坐标定义。
|
||||
|
||||
两块平面板在现有代码中作为点云场景结构参与GICP配准,但没有作为已知RTK/ENU平面方程单独加入优化;若后续能测得板面方程,才可新增绝对平面约束。
|
||||
|
||||
为公平比较,下面两组结果都使用ANT1参考点离地高度`0.758 m`重新求解:
|
||||
|
||||
| 指标 | data4单独 | data4+data5联合 | 变化 |
|
||||
|---|---:|---:|---:|
|
||||
| 有效站点 | 34 | 64 | +30 |
|
||||
| 共识运动对 | 25 | 36 | +11 |
|
||||
| 平移残差RMS | 0.100394 m | 0.086902 m | -13.4% |
|
||||
| 平移残差中位数 | 0.062075 m | 0.053647 m | -13.6% |
|
||||
| 平移残差P95 | 0.123039 m | 0.125166 m | +1.7% |
|
||||
| 平移残差最大值 | 0.353438 m | 0.355864 m | +0.7% |
|
||||
| 旋转残差RMS | 1.252391° | 1.115207° | -11.0% |
|
||||
| 旋转残差中位数 | 0.747183° | 0.685164° | -8.3% |
|
||||
| 旋转残差P90 | 1.825297° | 1.481369° | -18.8% |
|
||||
| 旋转残差P95 | 1.965290° | 1.875860° | -4.6% |
|
||||
| Weighted Jacobian condition | 7.713973 | 8.379217 | +8.6% |
|
||||
| bootstrap z标准差 | 0.003147 m | 0.001957 m | -37.8% |
|
||||
| bootstrap roll标准差 | 0.099319° | 0.062245° | -37.3% |
|
||||
| bootstrap pitch标准差 | 0.096049° | 0.064370° | -33.0% |
|
||||
|
||||
联合结果为:
|
||||
|
||||
```text
|
||||
translation_m = [1.638179350, -0.240844799, 0.084481236]
|
||||
RPY_deg_xyz = [-0.817167459, 1.323288119, -22.104163318]
|
||||
translation_m = [1.642932528, -0.242302311, 0.180599708]
|
||||
RPY_deg_xyz = [-0.886210651, 1.372780243, -22.112054052]
|
||||
|
||||
站点:34
|
||||
共识运动对:25
|
||||
AX Translation RMS:0.100207 m
|
||||
AX Rotation RMS:1.252794°
|
||||
Weighted Jacobian condition:7.739413
|
||||
Open3D vs small_gicp:0.003889 m / 0.188431°
|
||||
T_RTK_lidar =
|
||||
0.926183553 0.376030869 0.028014474 1.642932528
|
||||
-0.376311142 0.926478119 0.005312208 -0.242302311
|
||||
-0.023957243 -0.015462238 0.999593402 0.180599708
|
||||
0.000000000 0.000000000 0.000000000 1.000000000
|
||||
```
|
||||
|
||||
唯一建议下游读取的参考结果是[`final_T_RTK_lidar.json`](results/reference_data4/final_T_RTK_lidar.json)。
|
||||
与相同高度下的data4单独结果相比,联合外参相差`5.25 mm / 0.064°`。data5使RMS、中位数、旋转P90和bootstrap稳定性改善,但平移P95及最大值没有改善,说明少数高残差运动对仍然存在;不应仅为降低最大值而按最终外参残差删边。
|
||||
|
||||
已经分别得到各批次的共识运动对和地面平面时,可运行:
|
||||
|
||||
```powershell
|
||||
$Names = @("data4", "data5")
|
||||
$Pairs = @("E:\data4\consensus\B_consensus.npz", "E:\data5\consensus\B_consensus.npz")
|
||||
$Planes = @("E:\data4\common\ground_planes.csv", "E:\data5\common\ground_planes.csv")
|
||||
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_joint_rtk_lidar.ps1" `
|
||||
-BatchNames $Names -Pairs $Pairs -GroundPlanes $Planes `
|
||||
-OutputRoot "E:\calibration_output\data4_data5_joint" `
|
||||
-RtkReferenceHeightAboveGroundM 0.758 -Bootstrap 200
|
||||
```
|
||||
|
||||
脚本会先分别拟合各批次外参;任一批与首批相差超过`0.25 m`或`5°`时中止,提示检查RTK航向/坐标定义和传感器安装。阈值可通过`-MaxBatchTranslationDifferenceM`和`-MaxBatchRotationDifferenceDeg`显式调整。
|
||||
|
||||
仓库内[`results/reference_data4`](results/reference_data4/README.md)是历史data4参考产物,使用旧高度配置,不应与上表直接比较,也不应继续作为当前联合外参下发。
|
||||
|
||||
## 8. z与精度限制
|
||||
|
||||
平面阿克曼运动不能独立观测z。参考结果使用34站地面平面和RTK参考点离地`0.8535 m`约束z;该高度必须量到实际GGA参考点/天线相位中心。更改参考高度后必须重新求解。
|
||||
平面阿克曼运动不能独立观测z。当前联合结果使用64站地面平面和ANT1参考点离地`0.758 m`约束z;其中`0.758 m`来自本次现场粗测的天线底部安装参考高度`0.710 m`,加上天线标签给出的L1/L2 PCO高度`46/50 mm`的中值`48 mm`。该值仍是测量输入,不是手眼运动方程自行估计出来的量。
|
||||
|
||||
旧联合结果曾使用`0.8535 m = 0.2335 m + 0.620 m`,得到`z = 0.085093 m`;改用`0.758 m`并重新求解后得到`z = 0.180600 m`,z增加约`0.095507 m`,而x、y和旋转基本不变。所有标定入口现均要求显式提供参考高度,更改高度后必须重新求解,不能只手工修改输出JSON中的z。
|
||||
|
||||
AX残差、Hessian/Jacobian条件数、bootstrap和双后端一致性只证明内部一致性,不能单独证明逐帧GT达到±3 cm。当前关联仍以LiDAR和串口主机接收时间为主;GNSS周/周内时间和IMU设备时间被保留,但没有联合估计时钟偏移与漂移。用于连续GT pose前,应补做严格设备时间同步和独立轨迹验证。
|
||||
|
||||
@@ -180,7 +221,7 @@ AX残差、Hessian/Jacobian条件数、bootstrap和双后端一致性只证明
|
||||
| [`code/`](code/) | GICP、运动对质量评价、AX=XB求解、结果封装和3D可视化 |
|
||||
| [`tools/`](tools/) | 原始dlog/rscap解析、按LiDAR帧关联及静态站点prepared生成 |
|
||||
| [`run/`](run/) | PowerShell入口;所有数据和输出路径都通过参数传入 |
|
||||
| [`results/reference_data4/`](results/reference_data4/) | 可提交Git的精简参考结果,不包含点云和本机过程目录 |
|
||||
| [`results/reference_data4/`](results/reference_data4/) | 历史data4精简参考结果,不包含点云和本机过程目录 |
|
||||
| `work/`、`outputs/` | 本地运行生成物,已由`.gitignore`排除 |
|
||||
|
||||
各代码文件职责见[`code/README.md`](code/README.md),命令索引见[`run/README.md`](run/README.md),工具说明见[`tools/README.md`](tools/README.md)。
|
||||
|
||||
Reference in New Issue
Block a user