175 lines
5.6 KiB
Markdown
175 lines
5.6 KiB
Markdown
# LiDAR–IMU 外参标定
|
||
|
||
用连续行驶中的 LiDAR 与 IMU 相对运动,估计安装外参与时间偏置:
|
||
|
||
```text
|
||
p_IMU = T_IMU_lidar · p_lidar
|
||
```
|
||
|
||
**当前阶段:** 算法与合成自检已闭环;已提供 `tools/export_rscap_to_v1.py`(N300 `.rscap` + H32 dlog/MSOP → 中间格式);**合格实车验收尚未完成**,故正式外参尚未对实车落盘交付。
|
||
|
||
---
|
||
|
||
## 先看什么(对外三份就够)
|
||
|
||
|
||
| 顺序 | 文档 | 用途 |
|
||
| --- | -------------------------------------- | -------------------- |
|
||
| 1 | **本 README** | 做什么、怎么跑、结果怎么判 |
|
||
| 2 | [docs/V1_数据格式.md](docs/V1_数据格式.md) | 中间格式 + 原始数据导出命令 |
|
||
| 3 | [docs/标定流程与采集清单.md](docs/标定流程与采集清单.md) | 现场怎么采(合格数据要求) |
|
||
|
||
|
||
其余(方法细述、测试说明、源码职责、CHANGELOG)给深入阅读 / 改代码时用,见文末。
|
||
|
||
---
|
||
|
||
|
||
|
||
## 1. 输入 / 输出
|
||
|
||
|
||
| 输入 | 说明 |
|
||
| --------- | ----------------------------------------------------------- |
|
||
| `imu.csv` | `t,gx,gy,gz,ax,ay,az`(秒;rad/s;m/s²);`t` 用设备时间 |
|
||
| 雷达会话目录 | `frames_index.csv` + `frames/*.npz`(米制 XYZ) |
|
||
| 车辆 YAML | 轴向与时间语义;外参真值可空(`config/vehicle_installation.template.yaml`) |
|
||
|
||
|
||
|
||
| 输出 | 说明 |
|
||
| ------------------ | ---------------------- |
|
||
| `T_IMU_lidar.json` | 外参 |
|
||
| `time_offset.json` | `t_imu = t_lidar + δt` |
|
||
| `summary.json` | 状态、残差、可观性 |
|
||
|
||
|
||
新车原始数据导出(H32 dlog/zip + HI13 rscap):
|
||
|
||
```powershell
|
||
python tools\export_rscap_to_v1.py `
|
||
--imu-rscap path\to\hi13r4-imu.rscap `
|
||
--imu-kind hi13 `
|
||
--lidar-dlog path\to\session_or_recovered.zip `
|
||
--host-start 2026-08-08T17:40:05 `
|
||
--host-end 2026-08-08T17:45:15 `
|
||
--out path\to\session_v1 `
|
||
--require-difop
|
||
```
|
||
|
||
---
|
||
|
||
|
||
|
||
## 2. 一键复现(合成,不需实车)
|
||
|
||
```powershell
|
||
cd <本仓库根目录>
|
||
python -m pip install -e ".[dev]"
|
||
python -m pip install -e ".[open3d]" # 推荐
|
||
powershell -File tools\reproduce_synthetic.ps1
|
||
```
|
||
|
||
证明:链路可跑通,能收回已知 yaw / δt。
|
||
不证明:实车安装精度、平移可交付。
|
||
|
||
产物在 `examples/synthetic_session/out/`。叠点查看:
|
||
|
||
```powershell
|
||
python tools\visualize_pair_3d.py `
|
||
--lidar examples\synthetic_session\lidar `
|
||
--imu examples\synthetic_session\imu.csv `
|
||
--summary examples\synthetic_session\out\summary.json `
|
||
--pair-index 0
|
||
```
|
||
|
||
键 `1`–`4` 切换叠点模式;`N`/`P` 切换运动对。
|
||
|
||
---
|
||
|
||
|
||
|
||
## 3. 真实数据怎么跑
|
||
|
||
1. 按采集清单录制(设备时间;静止 + 低速转弯;有结构场景)
|
||
2. 导出中间格式(第1节命令)
|
||
3. 填写车辆 YAML 的轴向与时间语义
|
||
4. 标定:
|
||
|
||
```powershell
|
||
python -m imu_lidar.cli run `
|
||
--vehicle-config config\vehicle_installation.template.yaml `
|
||
--imu path\to\session_v1\imu.csv `
|
||
--lidar path\to\session_v1\lidar `
|
||
--output path\to\out `
|
||
--mode rotation_only `
|
||
--time-offset-search-s 2.0
|
||
```
|
||
|
||
1. 看 `summary.json`,再叠点 / 用验证会话复核后才交付
|
||
|
||
|
||
| 模式 | 交付 | 成功标志 |
|
||
| ------------------- | ------- | --------------------------- |
|
||
| `rotation_only`(先做) | 旋转 + δt | `rotation_only_accepted` |
|
||
| `full_se3`(激励够再试) | + 可观平移 | `full_se3_accepted`(否则平移拒绝) |
|
||
|
||
|
||
|
||
| `summary.json` 状态 | 含义 |
|
||
| ---------------------------------------------- | ----------- |
|
||
| `rotation_only_accepted` / `full_se3_accepted` | 可进入验证 |
|
||
| `full_se3_rejected_due_to_observability` | 旋转可用,平移不交 |
|
||
| `blocked` | **不可作安装参数** |
|
||
|
||
|
||
预期量级:旋转约 0.5°–2°;水平平移数厘米~十几厘米;无坡时竖直常不可观。
|
||
|
||
---
|
||
|
||
|
||
|
||
## 4. 方法(一句话)
|
||
|
||
关键帧雷达配准得 **B**,同区间 IMU 预积分得 **A**,解 `R_A R_X ≈ R_X R_B`;再估 δt。可观时才在 `full_se3` 下交平移。
|
||
|
||
---
|
||
|
||
|
||
|
||
## 5. 试验边界(勿误读)
|
||
|
||
|
||
| | 合成 pytest | 旧车 S2 线下 |
|
||
| ------ | ------------------------ | ----------------- |
|
||
| 目的 | 回归算法 | 验证旧主机时间数据上链路能跑完 |
|
||
| 期望 | `rotation_only_accepted` | `blocked`**(预期)** |
|
||
| 当安装参数? | 否 | **否** |
|
||
|
||
|
||
细节:[tests/README.md](tests/README.md)。
|
||
|
||
---
|
||
|
||
|
||
|
||
## 6. 仓库结构与其余文档
|
||
|
||
```text
|
||
imu_lidar/ 算法与 CLI
|
||
config/ 车辆配置模板
|
||
docs/ 采集清单、数据格式、方法细述
|
||
tools/ 导出、合成复现、可视化
|
||
tests/ 自动化测试
|
||
```
|
||
|
||
|
||
| 文档 | 何时看 |
|
||
| ------------------------------------------------ | ---------------- |
|
||
| [docs/IMU-LiDAR标定.md](docs/IMU-LiDAR标定.md) | 要看方法约定与实现状态表 |
|
||
| [tests/README.md](tests/README.md) | 要看合成用例 / S2 烟测记录 |
|
||
| [imu_lidar/文件职责说明.md](imu_lidar/文件职责说明.md) | 要改源码 |
|
||
| [imu_lidar/CHANGELOG.md](imu_lidar/CHANGELOG.md) | 要查改动史 |
|
||
|
||
|
||
改算法请同步职责说明与 CHANGELOG;改对外用法请更新本 README。 |