2.8 KiB
2.8 KiB
V1 标准中间数据格式
用途: 标定程序读入的 CSV/NPZ 约定,以及新车原始数据如何导出。总览见根目录 README。
从原始数据导出
推荐(新 H32 插件 RSLidarH32_3D_DLogCaptureNet48): N300 .rscap + 雷达 Medulla dlog(含 raw MSOP / DIFOP)。
python tools\export_rscap_to_v1.py `
--imu-rscap path\to\n300.rscap `
--lidar-dlog path\to\session_or_dlog `
--out path\to\session_v1 `
--frame-stride 1 `
--require-difop
--lidar-dlog 指向含 dobject/ + dobject_recording/ 的目录(或其上级含 dlog/ 子目录亦可)。
默认 DObject:frontlidar-msop-raw、frontlidar-difop-raw(可用 --msop-object / --difop-object 覆盖)。
有 DIFOP 时用设备通道角做 XYZ;--require-difop 在缺少有效 DIFOP 时直接失败。
兼容旧 MSOP-only .rscap:
python tools\export_rscap_to_v1.py `
--imu-rscap path\to\n300.rscap `
--lidar-rscap path\to\h32_msop.rscap `
--out path\to\session_v1 `
--frame-stride 1
产出:imu.csv、lidar/(含 frames_index.csv)、export_summary.json。
时间轴为设备时间:N300 device_timestamp_us→秒;H32 MSOP 设备时间戳→秒。主机接收时间不写入标定主轴。
IMU
文件:imu.csv 或 imu.npz
CSV
t,gx,gy,gz,ax,ay,az
0.000000000,0.01,-0.02,0.00,0.05,-0.03,9.81
...
| 列 | 含义 | 单位 |
|---|---|---|
| t | IMU 时钟时间 | s |
| gx,gy,gz | 角速度 | rad/s |
| ax,ay,az | 比力/加速度 | m/s² |
NPZ
数组:t (N,), gyro (N,3), acc (N,3),含义同上。
IMU 与 LiDAR 的时间原点可以不同。流水线会估计常值偏置:
t_imu = t_lidar + delta_t。
LiDAR
目录结构:
lidar_session/
├── frames_index.csv
└── frames/
├── frame_00000.npz
├── frame_00001.npz
└── ...
frames_index.csv
frame_id,filename,t_start,t_end
0,frames/frame_00000.npz,10.000,10.100
1,frames/frame_00001.npz,10.100,10.200
也兼容旧列名 file(NumPy 读取时可能变成 file_)。
每帧 NPZ
points:float64/float32,形状(N, 3),LiDAR 直角坐标系,单位米
时间不同步能不能用?
可以,前提是:
- 两边都覆盖同一段有角速度激励的物理运动(尤其是转弯);
- 偏置近似为常数(短会话);
--time-offset-search-s足够覆盖可能的偏移(默认 ±1 s,可加大)。
若两段数据完全不是同一趟行驶,或只有静止 IMU、没有重叠运动,则无法估 δt,标定会被 blocked。
最小可用会话
- IMU:建议含静止段 + 运动段,采样率稳定
- LiDAR:建议 ≥ 20 帧,场景有墙/柱等结构,含转弯