新增原始数据一步导出到 combined:对齐 Lidar-IMU 导出入口,适配 H32/G90/N300

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
lichun.qu
2026-08-03 16:08:37 +08:00
co-authored by Cursor
parent 24eaa8508e
commit 13624b0be8
14 changed files with 1600 additions and 130 deletions
+38 -16
View File
@@ -29,10 +29,9 @@ T_body_lidar = T_body_rtk · T_RTK_lidar
## 2. 算法流程
```text
逐站LiDAR dlog + RTK.rscap + IMU.rscap
分别解析并保留原始字段
以LiDAR帧时间为索引关联RTK/IMU,生成combined NPZ
→ 每站选择一帧静态点云,GGA转局部ENUrawHeading构造yaw-only RTK pose
逐站 H32.rscap + 全程 RTK.rscap + IMU.rscap
tools/export_raw_to_combined.py(一步导出标定中间包 combined/)
每站选择一帧静态点云,位置转局部ENUrawHeading构造yaw-only RTK pose
→ Open3D GICP和small_gicp分别求 B_ij = T_Li_Lj
→ 留出点、Hessian、正反向、多初值和旋转共轭不变量筛选
→ 两后端共同认可的边形成consensus B
@@ -51,21 +50,21 @@ X = T_RTK_lidar
## 3. 原始数据目录
大体积数据不提交Git。`DataRoot`下每个站点必须是一个独立dlog目录,至少包含
大体积数据不提交Git。**新车默认布局**H32 / G90 / N300 新插件,不再出 dlog
```text
raw_dataset/
├── stations/
│ ├── 001/
│ ├── dobject/
│ │ └── dobject_recording/
│ ├── 002/
├── stations/ # 每站停稳后单独录一段雷达
│ ├── 001/h32.rscap
│ ├── 002/h32.rscap
│ └── ...
└── captures/
├── rtk.rscap
└── imu.rscap
├── rtk.rscap # 进场到收工连续录(G90#PVTSLNA + #UNIHEADINGA
└── imu.rscap # 连续录(N300;仅关联,不参与外参求解)
```
一键导出默认:雷达用 **MSOP 设备时间**RTK 用 **GNSS week/TOW** 做最近邻关联(`-TimeBasis device_gnss`)。旧 dlog 数据集可继续放在同结构的 `dobject/` + `dobject_recording/` 下,并用 `-TimeBasis host`
每个站点应在车辆完全静止后记录点云;建议不少于30站,并包含充足的直行、左转、右转和大角度转向姿态变化。
## 4. 环境安装
@@ -80,7 +79,30 @@ python -m pip install -r requirements.txt
## 5. 从原始数据一键复现
在仓库根目录执行,路径由使用者通过参数传入,脚本内没有本机绝对路径:
导出与 Lidar-IMU 的 `export_rscap_to_v1` 同级:**一条命令**把原始 rscap 变成标定可直接使用的 `combined/`
仅导出中间包:
```powershell
python tools\export_raw_to_combined.py `
--stations-root "$Raw\stations" `
--rtk-rscap "$Raw\captures\rtk.rscap" `
--imu-rscap "$Raw\captures\imu.rscap" `
--out "$Out\exported" `
--overwrite
```
产物:
```text
$Out\exported\
├── export/ # 内部:各站雷达帧(调试用)
├── parsed/ # 内部:RTK/IMU JSONL
├── combined/ # ★ 标定入口:关联后的多传感器 NPZ + manifest.csv
└── export_summary.json
```
完整求解(导出 + prepare + AX=XB)在仓库根目录执行:
```powershell
$Repo = (Resolve-Path ".").Path
@@ -101,9 +123,9 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_full_pipe
```text
$Out/
├── exported/
│ ├── export/ # 各站LiDAR逐帧NPZ
│ ├── parsed/ # RTK/IMU JSONL
│ └── combined/ # 按LiDAR帧关联后的多传感器NPZ
│ ├── export/ # 内部各站LiDAR
│ ├── parsed/ # 内部 RTK/IMU JSONL
│ └── combined/ # 按LiDAR帧关联后的多传感器NPZ
├── prepared_rtk_direct/
│ ├── frames_all/ # 每站选中的静态帧
│ └── reference_poses_rtk_gga_raw_heading.csv