之前叙述的三旋转角度表示方式中,一个重要的问题是奇异点。当中间的绕旋转轴旋转到另外两个轴平行时,这个情况就会发生。对于万向节锁(因电影《阿波罗13号》而出名的术语),也存在同样的问题。

用于导航的机械陀螺仪如图所示。在其最核心的装配结构中有 333 个相互正交的框架,它们能使安装于其中的稳定体相对于宇宙静止。陀螺仪通过这个万向节机构连接到飞船机体上,这样无论飞船做任何机动飞行,都不会给陀螺仪内部的稳定平台施加外力矩。通过测量这些万向框架的轴相对于稳定平台的转动角度,就可以确定飞船的航行姿态——直接显示出飞船的横滚-俯仰-偏航角,图示设计中是卡尔丹角的 YZXYZXYZX 序列。(“登月舱坐标系是右手坐标系,+X+X+X 轴朝上,+Z+Z+Z 轴朝前,+Y+Y+Y 轴指向右边。旋转变换矩阵由一个基于 2−3−12-3-12−3−1 顺序的欧拉角构成,即:首先关于 YYY 轴倾斜,然后绕 ZZZ 轴滚动,最后关于 XXX 轴俯仰。正旋转分别是上倾,右滚,左偏)

现在考虑陀螺仪中间万向架旋转角(相对于飞船的z轴旋转)为 90°90°90° 时的情况。这时陀螺仪的内万向架与外万向架的轴对齐,它们的旋转轴线重合。因为这两个旋转轴平行,这时陀螺仪只有两个有效的旋转轴,而不是原来的三个——我们称之为丢失了一个自由度。

从数学(而非机械)上看,这个问题可以通过建立一种登月舱坐标系来解释,其中固联在飞船机体上的坐标系 {B}\{B\}{B} 相对于固联在稳定平台上的坐标系 {S}\{S\}{S} 做旋转,并且可以表示为
SRB=Ry(θp)Rz(θr)Rx(θy)^SR_B=R_y(\theta_p)R_z(\theta_r)R_x(\theta_y) SRB​=Ry​(θp​)Rz​(θr​)Rx​(θy​)

旋转须服从循环旋转规则:
RX(π/2)RY(θ)RX(π/2)T≡RZ(θ)R_X(\pi/2)R_Y(\theta)R_X(\pi/2)^T \equiv R_Z(\theta) RX​(π/2)RY​(θ)RX​(π/2)T≡RZ​(θ)RY(π/2)RZ(θ)RY(π/2)T≡RX(θ)R_Y(\pi/2)R_Z(\theta)R_Y(\pi/2)^T \equiv R_X(\theta) RY​(π/2)RZ​(θ)RY​(π/2)T≡RX​(θ)RZ(π/2)RX(θ)RZ(π/2)T≡RY(θ)R_Z(\pi/2)R_X(\theta)R_Z(\pi/2)^T \equiv R_Y(\theta) RZ​(π/2)RX​(θ)RZ​(π/2)T≡RY​(θ)以及反循环旋转规则:
RY(π/2)TRX(θ)RY(π/2)≡RZ(θ)R_Y(\pi/2)^TR_X(\theta)R_Y(\pi/2) \equiv R_Z(\theta) RY​(π/2)TRX​(θ)RY​(π/2)≡RZ​(θ)RZ(π/2)TRY(θ)RZ(π/2)≡RX(θ)R_Z(\pi/2)^TR_Y(\theta)R_Z(\pi/2) \equiv R_X(\theta) RZ​(π/2)TRY​(θ)RZ​(π/2)≡RX​(θ)

当 θr=π/2\theta_r=\pi/2θr​=π/2 时,可以应用循环旋转规则得到下面的恒等式:
Ry(θ)Rz(π2)=Rz(π2)Rx(θ)R_y(\theta)R_z(\frac{\pi}{2}) = R_z(\frac{\pi}{2})R_x(\theta) Ry​(θ)Rz​(2π​)=Rz​(2π​)Rx​(θ)进而得到
SRB=Rz(π2)Rx(θp)Rx(θy)=Rz(π2)Rx(θp+θy)^SR_B= R_z(\frac{\pi}{2})R_x(\theta_p)R_x(\theta_y)=R_z(\frac{\pi}{2})R_x(\theta_p+\theta_y) SRB​=Rz​(2π​)Rx​(θp​)Rx​(θy​)=Rz​(2π​)Rx​(θp​+θy​)上式中没有表示出飞船绕 yyy 轴的旋转。这就带来了问题,因为航天器绕 yyy 轴的旋转将使稳定平台也旋转,从而破坏其相对于恒星的精确对准。

一个自由度的缺失意味着在数学上我们不能反变换(相当于被降维打击了),我们只能建立两个角度之间的线性关系。在这种情况下,我们最多也只能确定俯仰角和偏航角的总和。前面我们用欧拉角的奇异点也看到了类似的现象。

所有三角度形式的姿态表示,无论欧拉式或卡尔丹式,当两连续轴共线时都会遇到万向节锁同样的问题。对于 ZYZZYZZYZ 形式的欧拉角,它发生在 θ=kπ,k∈Z\theta=k\pi, k\in\mathbb{Z}θ=kπ,k∈Z 时,对于用横滚-俯仰-偏航角的情况,会发生在θ=±(2k+1)π/2\theta= \pm(2k+1)\pi/2θ=±(2k+1)π/2时。虽然都存在奇异点,但我们可以想办法让奇异点不在航行体正常运行时出现,这需要明智地选择角度序列和坐标系。

奇异点是采用最简化方法带来的一个不幸后果。为了消除这个问题,我们必须采取其他的姿态描述方法。其中,阿波罗登月舱团队的人提出一种用四个万向支架的系统,其成功的关键是引进了第四个参数,我们之后会讨论相关的四元数的内容。

机器人学——1.5-奇异点及万向节锁相关推荐

  1. 使用四元数解决万向节锁(Gimbal Lock)问题

    使用四元数解决万向节锁(Gimbal Lock)问题 参考文章: (1)使用四元数解决万向节锁(Gimbal Lock)问题 (2)https://www.cnblogs.com/psklf/p/56 ...

  2. 欧拉角,万向节锁和四元数

    一.欧拉角 对于一个3D空间中的一个物体的旋转,我们都可以理解为围绕三维空间中的绕着基向量为轴的三次旋转的结果. 绕基向量为轴的旋转我们可以用旋转矩阵来表示,其中Rx,Ry,Rz是沿着x,y,z轴旋转 ...

  3. 万向节锁--简单解释

    以前一直以为自己已经清楚了这是怎么回事,也没去细想,然而最近又遇到角度的问题,发现还是迷糊,于是又静下心来看了网上的相关文档,并以直白简单的方式分享一下. 还是以unity为例吧 首先,万向节锁只发生 ...

  4. Unity 欧拉角万向节锁的原理

    网上文章很多,有些写的很详细,但是我个人理解起来有不是很顺畅,把几个重要的知识点整理一下 欧拉角:欧拉角用于控制物体的旋转角度,在Unity中欧拉角的表示就是一个Vector3,例如  Vector3 ...

  5. 万向节锁(Gimbal Lock)的理解

    转自:https://www.cnblogs.com/psklf/p/5656938.html 严正声明: 作者:psklf 出处: https://www.cnblogs.com/psklf/p/5 ...

  6. 3D游戏世界里的万向节锁

    我们通常认为当前世界是一个三维的世界,用坐标系来表示就是XYZ,在3D游戏世界里也是用这样的三维坐标系来表示的. X代表水平坐标,Y代表垂直坐标,Z代表的是由屏幕往里的一个深度坐标,也就是垂直于屏幕的 ...

  7. Unity史上最全旋转详解(Rotate,rotation,localEulerAngles,localRotation,万向节锁)

    Unity史上最全旋转详解 前言 旋转的方法Rotate以及五种重载参数的超级详细理解 Rotate(float xAngle, float yAngle, float zAngle); Unity绕 ...

  8. GimbalLock万向节锁、 欧拉角坐标旋转、 四元数旋转

    也许你都知道四元数这么个东西,也许你还知道万向锁.但是对于弄懂它们还是不那么容易的--起码对于我就是如此了.今天是丢三落四日,我就自己来捡捡吧.--ZwqXin.com 事先声明,原理神马的,其实我也 ...

  9. GimbalLock万向节锁与四元数旋转

    GimbalLock万向节锁与四元数旋转 2011-3-4 22:54:50 | 发布:zwqxin 也许你都知道四元数这么个东西,也许你还知道万向锁.但是对于弄懂它们还是不那么容易的--起码对于我就 ...

  10. 万向节死锁_欧拉角的奇异问题和万向节死锁问题,会对实际的哪些应用带来什么问题?...

    谢邀,这个问题打算认真回答一次,所以要准备准备,先留个爪子,后面娓娓道来,先简单点的说几句,起个头: 1.俯仰角90°的这个问题,又或者有时候我们称呼为横滚角,我一般会用横滚角说超过90°,这是依据实 ...

最新文章

  1. 你的二次元老婆,被AI变成了暗黑系
  2. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp
  3. java 实现图片上传功能
  4. eeglab教程系列(4)-绘制通道光谱图
  5. [剑指offer]面试题第[59-1]题[Leetcode][第239题][JAVA][滑动窗口的最大值][单调队列][优先队列]
  6. 关于bc中小数点length,scale,(())以及进制转换
  7. c#switch语句判断成绩_switch语句成绩等级例子
  8. docker管理应用程序数据、容器网络
  9. 《你好,李焕英》口碑爆棚,原来秘诀都隐藏在了影迷的评论里面
  10. IOS中,在两个ViewController之间传值
  11. 冬至了,回家羊肉。:)
  12. 「leetcode」973. 最接近原点的 K 个点【优先级队列】详解
  13. Keil自动格式化代码
  14. Tightvncserver 连接树莓派的方法及步骤
  15. android耳机检测驱动,[RK3288][Android6.0] 有线耳机驱动小结
  16. jetbrains(IDEA/PyCharm)官网地址打不开
  17. 若依如何手动修改项目包路径呢?
  18. 嵌入式关键字英文对照
  19. Java8--20道关于Stream流的题目练习
  20. python画趋势图_python 绘制走势图

热门文章

  1. windows10正式版官方原版镜像iso下载地址
  2. C语言:计算三角形面积与周长
  3. APP开发定制开发语言
  4. 【个人经验】关于BFM
  5. Banner 怎么实现轮播不同尺寸的图片
  6. 批量爬取链家房源信息
  7. 三亿顶级流量社区,下厨房APP变现三部曲
  8. 使用kvm部署虚拟化服务器,KVM虚拟化(KVM的部署及使用)
  9. Google算法更新记录-你想了解的全在这
  10. 计算机在段前加项目符号,word中给段落添加项目符号的方法