机器人运动学(二)-欧拉角

书接上文,本篇文章主要介绍欧拉角
学习参考资料
# 旋转变换(二)欧拉角
# 「 SLAM lesson-3.4 」欧拉角度定义、应用、缺点
# 欧拉角细节/旋转顺序/内旋外旋

欧拉角

欧拉角来自欧拉旋转定理

在三维空间里,假设一个刚体在做一个旋转的时候,刚体内部至少有一点固定不动,则此位移等价于一个绕着包含那固定点的固定轴的旋转。

换句话讲,三维空间中任意旋转都可以用绕某点旋转的三个角度来表示

然而想要规范地使用欧拉角,还需要搞清楚以下几个问题:

1.三个旋转角的组合方式
2.参照的坐标轴
3.三个旋转角如何记

1.旋转角的组合

欧拉角一般具有两大类表示方式,按照旋转次序又分为6小类

Proper Euler angles(z-x-z,x-y-x,y-z-y,z-y-z,x-z-x,y-x-y)
Tait-Bryan angles(x-y-z,y-z-x,z-x-y,x-z-y,z-y-x,y-x-z)

一般使用Tait-Bryan angles

2.内旋/外旋

现假设世界坐标系XYZ中存在一个物体,物体相对自己的坐标系xyz,初始状态下,XYZ与xyz重合,当物体旋转的同时,相对物体的坐标系xyz也随之旋转。

因此有内旋外旋的区别: 外旋按照坐标系XYZ旋转,内旋按照坐标系xyz旋转。

3.三个旋转角的记法

顺序 飞行器 望远镜 符号 角速度
第一 heading azimuth θ yaw
第二 attitude elevation ϕ pitch
第三 bank tilt ψ roll

如图

在欧拉角中,较常用“偏航-俯仰-滚转”(yaw-pitch-roll)三个角度来描述一个旋转

在解决了这三个问题后,描述一个能表示确定姿态/旋转的欧拉角,形式应类似下述例子:

旋转角度(α,β,γ),旋转顺序(z->y->x),外旋

4.欧拉角的缺点-连续与万向锁问题(Gimbal lock)

对于 连续的旋转 ,这边要指出:
如果有两组旋转角(α1,β1,γ1)(α2,β2,γ2),并不能够用一组旋转角(α1+α2,β1+β2,γ1+γ2)来表示两次连续的旋转。

万向锁问题(Gimbal lock) 是欧拉角的一个重大缺点:在仰俯角为±90的时候,两个旋转轴重合,系统会丢失一个旋转的自由度。
理论上可以证明,只要我们想用三个实数表达三维旋转的时候,就不可避免地碰到奇异性的问题。

这边从数学意义上去理解,顺带引出欧拉角的旋转矩阵表示

旋转角度(α,β,γ),旋转顺序(x->y->z),内旋

很容易得到其旋转矩阵为Rx(α)Ry(β)Rz(γ)

R=[1000cosαsinα0sinαcosα][cosβ0sinβ010sinβ0cosβ][cosγsinγ0sinγcosγ0001]

β=π2的时候

R=[1000cosαsinα0sinαcosα][001010100][cosγsinγ0sinγcosγ0001]

R=[001sinαcosα0cosαsinα0][cosγsinγ0sinγcosγ0001]=[001sin(α+γ)cos(α+γ)0cos(α+γ)sin(α+γ)0]

可以看到,这个情况下,修改α与修改γ效果是一样的,也就是出现了万向锁问题

这边顺带提一嘴:每种特定顺序的外旋等价于其相反顺序的内旋

既然欧拉角有如此问题,下一篇文章将学习另一种描述三维旋转的方式——四元数
欲知后事如何,且听下回分解!─=≡Σ(((つ•̀ω•́)つ

posted @   槭枫  阅读(547)  评论(0编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类
点击右上角即可分享
微信分享提示