为何需将旋转向量转为旋转矩阵计算ARUco标记间夹角?
ARUco标记相对旋转计算的问题解答
1. 为何要将旋转向量转换为旋转矩阵?
- 旋转向量(Rodrigues向量)是用「旋转轴+旋转角度」的形式简化表示3D旋转,但它仅能单一描述旋转状态,无法直接完成旋转复合、坐标系变换这类复杂操作。
- 旋转矩阵是3×3的正交矩阵,天生适配3D坐标系变换的数学逻辑:
- 可直接通过矩阵乘法实现多个旋转动作的叠加;
- 正交矩阵的逆矩阵等于自身转置,让坐标系的逆变换计算简单高效;
- 计算两个ARUco标记的相对姿态时,本质是完成两次坐标系变换的复合,这类操作只有旋转矩阵能直接、准确地实现。
2. relative_rmat = rmat1@rmat.T 的几何意义与公式来源
先明确OpenCV中ARUco姿态输出的定义:
rmat:相机坐标系转换到标记1坐标系的旋转矩阵(可将相机内的点坐标转为标记1坐标系下的坐标)rmat1:相机坐标系转换到标记2坐标系的旋转矩阵
我们的目标是求标记2相对于标记1的旋转矩阵——即把标记1坐标系下的点,转换为标记2坐标系下点的变换。这个变换可拆解为两步:
- 把标记1坐标系的点转回相机坐标系:这是
rmat的逆变换,由于旋转矩阵是正交矩阵,逆矩阵等于自身转置,因此用rmat.T实现; - 把相机坐标系的点转换到标记2坐标系:直接用
rmat1实现。
将这两步变换通过矩阵乘法复合(矩阵乘法顺序对应变换的先后顺序),就得到了相对旋转矩阵:relative_rmat = rmat1@rmat.T。
内容的提问来源于stack exchange,提问作者pikachu
相关产品推荐
相关产品推荐

