视觉SLAM十四讲-(3.15)罗德里格斯公式推导

视觉SLAM十四讲-(3.15)罗德里格斯公式推导

罗德里格斯公式详细推导过程

罗德里格斯公式(Rodrigues’ Rotation Formula)用于将旋转向量(轴角表示)转换为旋转矩阵。其核心推导步骤如下:

1. 旋转向量的定义
  • 旋转由旋转轴(单位向量 ( \mathbf{k} = [k_x, k_y, k_z]^TKaTeX parse error: Can't use function '\(' in math mode at position 7: )和旋转角 \̲(̲ \theta描述。
  • 旋转向量表示为 ( \boldsymbol{\theta} = \theta \mathbf{k}KaTeX parse error: Can't use function '\(' in math mode at position 5: ,其中 \̲(̲ \|\mathbf{k}\|…
2. 向量分解

任意向量 ( \mathbf{v}KaTeX parse error: Can't use function '\(' in math mode at position 15: 可分解为平行于旋转轴的分量 \̲(̲ \mathbf{v}_{\p…和垂直于旋转轴的分量 ( \mathbf{v}_{\perp}$:

  • 平行分量:( \mathbf{v}_{\parallel} = (\mathbf{v} \cdot \mathbf{k}) \mathbf{k}$
  • 垂直分量:( \mathbf{v}{\perp} = \mathbf{v} - \mathbf{v}{\parallel} = \mathbf{v} - (\mathbf{v} \cdot \mathbf{k}) \mathbf{k}$
3. 旋转后的向量分量

旋转后,平行分量 ( \mathbf{v}_{\parallel}KaTeX parse error: Can't use function '\(' in math mode at position 11: 保持不变,垂直分量 \̲(̲ \mathbf{v}_{\p…绕轴旋转 ( \theta$角:

  • 平行分量旋转:( \mathbf{v}{\parallel \text{rot}} = \mathbf{v}{\parallel}$
  • 垂直分量旋转:( \mathbf{v}{\perp \text{rot}} = \cos \theta \mathbf{v}{\perp} + \sin \theta (\mathbf{k} \times \mathbf{v})$
4. 合并旋转向量表达式

旋转后的向量 ( \mathbf{v}_{\text{rot}}$为:
vrot=v∥rot+v⊥rot=(v⋅k)k+cos⁡θ(v−(v⋅k)k)+sin⁡θ(k×v)\mathbf{v}_{\text{rot}} = \mathbf{v}_{\parallel \text{rot}} + \mathbf{v}_{\perp \text{rot}} = (\mathbf{v} \cdot \mathbf{k}) \mathbf{k} + \cos \theta (\mathbf{v} - (\mathbf{v} \cdot \mathbf{k}) \mathbf{k}) + \sin \theta (\mathbf{k} \times \mathbf{v})vrot=vrot+vrot=(vk)k+cosθ(v(vk)k)+sinθ(k×v)

5. 矩阵形式转换

将点积和叉积转换为矩阵运算:

  • 点积项:( (\mathbf{v} \cdot \mathbf{k}) \mathbf{k} = \mathbf{k} \mathbf{k}^T \mathbf{v}$
  • 叉积项:( \mathbf{k} \times \mathbf{v} = \mathbf{K} \mathbf{v}KaTeX parse error: Can't use function '\(' in math mode at position 5: ,其中 \̲(̲ \mathbf{K}是 ( \mathbf{k}$的反对称矩阵:
    K=[0−kzkykz0−kx−kykx0]\mathbf{K} = \begin{bmatrix} 0 & -k_z & k_y \\ k_z & 0 & -k_x \\ -k_y & k_x & 0 \end{bmatrix}K=0kzkykz0kxkykx0

代入后,表达式变为:
vrot=cos⁡θv+(1−cos⁡θ)kkTv+sin⁡θKv\mathbf{v}_{\text{rot}} = \cos \theta \mathbf{v} + (1 - \cos \theta) \mathbf{k} \mathbf{k}^T \mathbf{v} + \sin \theta \mathbf{K} \mathbf{v}vrot=cosθv+(1cosθ)kkTv+sinθKv

6. 旋转矩阵的推导

提取公共矩阵项,得到旋转矩阵 ( \mathbf{R}$:
vrot=[cos⁡θI+(1−cos⁡θ)kkT+sin⁡θK]v\mathbf{v}_{\text{rot}} = \left[ \cos \theta \mathbf{I} + (1 - \cos \theta) \mathbf{k} \mathbf{k}^T + \sin \theta \mathbf{K} \right] \mathbf{v}vrot=[cosθI+(1cosθ)kkT+sinθK]v
因此,旋转矩阵 ( \mathbf{R}$为:
R=cos⁡θI+(1−cos⁡θ)kkT+sin⁡θK\mathbf{R} = \cos \theta \mathbf{I} + (1 - \cos \theta) \mathbf{k} \mathbf{k}^T + \sin \theta \mathbf{K}R=cosθI+(1cosθ)kkT+sinθK

7. 公式总结

罗德里格斯公式的最终形式为:
R=I+sin⁡θK+(1−cos⁡θ)K2\mathbf{R} = \mathbf{I} + \sin \theta \mathbf{K} + (1 - \cos \theta) \mathbf{K}^2R=I+sinθK+(1cosθ)K2
其中 ( \mathbf{K}^2$是反对称矩阵的平方,可展开为:
K2=[−ky2−kz2kxkykxkzkxky−kx2−kz2kykzkxkzkykz−kx2−ky2]\mathbf{K}^2 = \begin{bmatrix} -k_y^2 - k_z^2 & k_x k_y & k_x k_z \\ k_x k_y & -k_x^2 - k_z^2 & k_y k_z \\ k_x k_z & k_y k_z & -k_x^2 - k_y^2 \end{bmatrix}K2=ky2kz2kxkykxkzkxkykx2kz2kykzkxkzkykzkx2ky2

几何意义与验证

  • 平行分量:保持原方向,对应公式中的 ( (\mathbf{v} \cdot \mathbf{k}) \mathbf{k}$。
  • 垂直分量:在垂直平面内旋转 ( \thetaKaTeX parse error: Can't use function '\(' in math mode at position 5: 角,由 \̲(̲ \cos \theta \m…和 ( \sin \theta (\mathbf{k} \times \mathbf{v})$组合。
  • 等号条件:当 ( \theta = 0KaTeX parse error: Can't use function '\(' in math mode at position 3: 时,\̲(̲ \mathbf{R} = \…;当 ( \theta = 2\pi$时,旋转一周回到原位。

应用场景

  • 计算机视觉:相机位姿估计、SLAM中的旋转表示。
  • 机器人学:机械臂运动规划、姿态控制。
  • 航空航天:飞行器姿态动力学、导航系统。

罗德里格斯公式通过简洁的矩阵运算实现了旋转向量的高效转换,是三维旋转表示的核心工具之一。

### 视觉SLAM十四第五章内容概要 #### 5.1 相机模型简介 相机作为视觉SLAM系统中的重要传感器,其成像原理和模型对于理解整个系统的运作至关重要。本章节介绍了针孔相机模型及其变种,并讨论了如何通过内参矩阵来描述这些模型[^1]。 #### 5.2 图像特征提取与匹配 为了实现环境感知,在视觉SLAM中通常会利用图像中的显著特征来进行跟踪和地图构建工作。这部分解了几种常用的局部特征检测方法以及它们之间的相互比较;还探讨了基于ORB等快速算法的特点及应用场合。 #### 5.3 像素坐标系下的重投影误差计算 当给定三维空间点P的世界坐标(x,y,z),可以通过已知的位姿T将其转换到相机坐标系下(X,Y,Z)再映射至像素平面上(u,v)。理想情况下,该位置应该正好位于由同一时刻另一视角所拍摄图片中标记出来的对应特征点处。然而实际操作过程中由于噪声等因素影响,两者之间往往存在偏差ε=(u'-u, v'-v),这就是所谓的“重投影误差”。此概念不仅适用于单目情况也广泛应用于双目标定等领域[^2]。 ```cpp // 计算重投影误差的一个简单例子 Eigen::Vector2d computeReprojectionError(const Eigen::Vector3d& point_world, const Sophus::SE3d& pose_camera_to_world, const CameraIntrinsics& intrinsics, const Eigen::Vector2d& observed_point_image){ // 将世界坐标转为相机坐标 auto point_cam = pose_camera_to_world * point_world; // 归一化平面坐标 double inv_z = 1.0 / point_cam.z(); double u_proj = intrinsics.fx() * (point_cam.x() * inv_z) + intrinsics.cx(); double v_proj = intrinsics.fy() * (point_cam.y() * inv_z) + intrinsics.cy(); // 返回重投影误差 return {observed_point_image.x()-u_proj, observed_point_image.y()-v_proj}; } ``` #### 5.4 单应性矩阵H的应用场景分析 除了基本理论外,书中还特别提到了单应性矩阵(Homography Matrix,H)这一工具可以用来处理两帧间仅有旋转和平移变化的情况。具体而言就是说如果两个摄像设备在同一时间分别获取了一张照片,则只要满足上述条件就可以借助于它完成一些特定的任务比如拼接全景图等等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老黄编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值