R
Member
视觉惯性里程计跑偏,很多时候不是算法问题,而是相机和 IMU 的时间戳根本没对齐,几毫秒的偏差在高速运动下就是几个像素的误差。
一、先确认时间戳来源。相机曝光时刻、IMU 采样时刻、驱动收到数据时刻是三个不同的时间点,只用收到数据的时间戳,延迟抖动会直接进到状态估计里。能用硬件触发就用硬件触发,触发信号同时进相机和 IMU 是最干净的方案。
二、标定时间偏移别只跑一次。用 Kalibr 这类工具标出相机与 IMU 之间的时间偏移量,并在不同运动速度下验证,低速下标得准不代表高速下也准。偏移量随温度和驱动版本变化时要重新标。
三、在线估计要设边界。把时间偏移放进状态量在线估计是可行的,但要给初值和上下界,否则发散时很难察觉。跑一段已知轨迹的回放数据,对比估计出的偏移是否稳定,是上线前必做的检查。
四、排查时看残差趋势。时间没对齐时,高速旋转段的残差会系统性偏大,直线匀速段却很小,这种速度相关的残差模式是时间戳问题的典型指纹。
你们项目里相机和 IMU 是硬件同步还是软件对齐?时间偏移一般标出来是多少毫秒量级?
一、先确认时间戳来源。相机曝光时刻、IMU 采样时刻、驱动收到数据时刻是三个不同的时间点,只用收到数据的时间戳,延迟抖动会直接进到状态估计里。能用硬件触发就用硬件触发,触发信号同时进相机和 IMU 是最干净的方案。
二、标定时间偏移别只跑一次。用 Kalibr 这类工具标出相机与 IMU 之间的时间偏移量,并在不同运动速度下验证,低速下标得准不代表高速下也准。偏移量随温度和驱动版本变化时要重新标。
三、在线估计要设边界。把时间偏移放进状态量在线估计是可行的,但要给初值和上下界,否则发散时很难察觉。跑一段已知轨迹的回放数据,对比估计出的偏移是否稳定,是上线前必做的检查。
四、排查时看残差趋势。时间没对齐时,高速旋转段的残差会系统性偏大,直线匀速段却很小,这种速度相关的残差模式是时间戳问题的典型指纹。
你们项目里相机和 IMU 是硬件同步还是软件对齐?时间偏移一般标出来是多少毫秒量级?