三维刚体运动
Rigid body motion in three dimensions
1.点与坐标系
-
2D 的情况下:用两个坐标加旋转角表达,即
。 -
3D 的情况下:则使用
来表平移,而旋转则有很多其他的表示方式,例如欧拉角,旋转向量,四元数,旋转矩阵等,后面将分别介绍。 -
向量的运算
-
内积
-
外积
其中
成为向量 的反对陈矩阵。
-
-
在 SLAM 中,世界坐标系是固定,而和机器人坐标系则是移动的,同时还有很多传感器坐标系。那么如何描述坐标系之间的一个变化呢,直观上来说分为两个部分
- 原点之间的平移
- 三个轴的旋转
2. 旋转矩阵
考虑一次旋转:
- 坐标系
发生了旋转,变成了 ,但是向量 不动,那么他们的坐标系如何变化。具体的变化过程用数学的方式展现如下所示:
无论坐标系如何变化,其实世界坐标系也只是相对的,一个真实世界中的障碍物,无论在任何一个坐标系下的障碍物,其映射到真实世界中其实都应当是一个。
上式中从上到下的一个变换是等式左右两边同时左乘了矩阵:
其中
是一个正交矩阵 ->
的行列式为 -> 满足这两个性质的矩阵称为旋转矩阵,可以扩展到
维空间: 其中
即我们通常所叫的特殊正交群
于是,1到2的旋转可表达为:
反之:
矩阵关系:
其中
旋转加平移可以表示为:
欧拉定理(
):刚体在三维空间里的一般运动,可分解为刚体上方某一点的平移,以及绕经过此点的旋转轴的转动。
在实际的使用过程中我们一般使用的是齐次坐标的形式进行表示,其将二维空间中的坐标为度扩展到三维,将三维空间中的坐标扩展到四维,增加的一个维度一般用
其中,
变换矩阵的集合称为特殊欧氏群
逆形式:
3. 旋转向量与欧拉角
除了旋转矩阵/变换矩阵之外,还存在其他的表示方式,旋转矩阵 R 有九个元素,但仅有三个自由度,能否以更少的元素表达旋转?答案是可以的。
3.1 旋转向量
-
方向为旋转轴,长度为转过的角度
-
称为角轴/轴角(
)或旋转向量( ) -
旋转向量与矩阵的不同:
- 仅有三个量
- 无约束
- 更直观
-
旋转向量与旋转矩阵之间的变化关系可以通过罗格里德斯公式给出,在已知旋转向量的情况下得到旋转矩阵:
-
旋转矩阵转向量:
第二个公式则是因为在旋转矩阵为正交矩阵,且
本身为旋转轴,旋转之后 是不变的。
3.2 欧拉角
将旋转分解为三个方向上的转动例,按
- 绕物体的Z轴旋转,得到偏航角yaw;
- 绕旋转之后的Y轴旋转,得到俯仰角pitch;
- 绕旋转之后的X轴旋转,得到滚转角roll;
4.四元数
四元数其实才是当今 SLAM 中使用最多的旋转表示方式,其只是殿太过于庞大,笔者也是花得了大量时间查阅证明进行理解,这里放出笔者认为目前网络上最好的一个全部证明,供大家参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App