使用D435i运行ORB-SLAM3时,纯视觉模式与视觉-惯性模式的位姿矩阵定义问题探讨
在使用D435i运行ORB-SLAM3时,纯视觉模式(不加入IMU)与视觉-惯性模式(加入IMU)得到的位姿矩阵相差一个绕X轴旋转90度的变换,这主要是由于两种模式的世界坐标系定义不同导致的。
1. 坐标系定义差异
- 相机坐标系(D435i):Z轴向前(正前方),Y轴向下(垂直于地面),X轴向右(右手坐标系)。
- IMU坐标系(D435i):与相机坐标系一致(Z向前、Y向下、X向右)。
- 纯视觉模式(无IMU):
ORB-SLAM3以第一帧的相机坐标系作为世界坐标系。此时,世界坐标系的Y轴向下(与相机坐标系一致)。 - 视觉-惯性模式(有IMU):
ORB-SLAM3以重力方向定义世界坐标系:Z轴向上(与重力方向相反)、X轴向右、Y轴向前。系统通过IMU的加速度计数据感知重力方向,并据此对齐世界坐标系。
2. 坐标系转换关系
- 重力方向在D435i中的IMU坐标系测量值为
(0, g, 0)
- 为了将IMU坐标系转换到世界坐标系(Z向上),需要执行一个旋转:
旋转矩阵 R = [1, 0, 0][0, 0, 1][0, -1, 0]
3. 位姿矩阵差异的来源
- 在视觉-惯性模式中,ORB-SLAM3在初始化时应用上述旋转,将IMU数据转换到Z向上的世界坐标系。
- 而纯视觉模式没有重力对齐,世界坐标系保持第一帧相机的Y轴向下的方向。
- 因此,同一个相机位姿在两种模式下的表示不同。
4. 注意
-
轨迹对齐:
若需比较两种模式的轨迹,先将纯视觉的轨迹左乘2中的旋转矩阵。 -
ORB-SLAM3配置:
检查相机-IMU外参(Tbc
)是否设置正确。D435i的相机与IMU坐标系一致,外参旋转矩阵应为单位矩阵。
总结
差异的根本原因是世界坐标系的定义不同:
- 无IMU时:世界坐标系Y向下(与第一帧相机坐标系一致)。
- 有IMU时:世界坐标系Z向上(重力对齐)。