姿态(Orientation)
2016-10-19 17:28
906 查看
物体姿态
物体在三维空间中的姿态、旋转,用旋转矩阵、欧拉角、四元素来表示。旋转矩阵
旋转矩阵定义
旋转矩阵(英语:Rotation matrix)是在乘以一个向量的时候有改变向量的方向但不改变大小的效果并保持了手性的矩阵。(手性:左/右手坐标系)二维旋转矩阵表达式:
三维旋转矩阵表达式:
旋转矩阵优缺点
优点:旋转轴任意选择。缺点:占用的内存空间大,计算量也大。
欧拉角
用来确定物体姿态,由章动角a、旋进角(即进动角)b和自转角r组成,如:(a,r,b)。欧拉角定义
静态定义对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。参考系又称为实验室参考系,是静止不动的。而坐标系则固定于刚体,随着刚体的旋转而旋转。
参阅下图。设定xyz-轴为参考系的参考轴。称xy-平面与XY-平面的相交为交点线,用英文字母(N)代表。zxz顺规的欧拉角可以静态地这样定义:
a 是x-轴与交点线的夹角,
b是z-轴与Z-轴的夹角,
r是交点线与X-轴的夹角。
动态定义
我们也可以给予欧拉角两种不同的动态定义。一种是绕着固定于刚体的坐标轴的三个旋转的复合;另外一种是绕着实验室参考轴的三个旋转的复合。用动态的定义,我们能更了解,欧拉角在物理上的含义与应用。特别注意,以下的描述, XYZ坐标轴是旋转的刚体坐标轴;而xyz坐标轴是静止不动的实验室参考轴。
A)绕着XYZ坐标轴旋转:最初,两个坐标系统xyz与XYZ的坐标轴都是重叠著的。开始先绕着Z-轴旋转\alpha ,角值。然后,绕着X-轴旋转\beta,角值。最后,绕着Z-轴作角值\gamma,的旋转。
B)绕着xyz坐标轴旋转:最初,两个坐标系统xyz与XYZ的坐标轴都是重叠著的。开始先绕着z-轴旋转\gamma,角值。然后,绕着x-轴旋转\beta,角值。最后,绕着z-轴作角值\alpha ,的旋转。
欧拉角公式
欧拉角转为旋转矩阵欧拉角转化为四元素
欧拉角优缺点
优点:直观、容易理解,可以表示超过180度角度的旋转。缺点:存在万向锁(Gimbal Lock)的问题,关于万向锁这里有个视频说的很清楚。
四元素
四元素是一个高阶复数。(听起来就比较难理解,这里推荐一个链接,从容易理解的角度介绍四元素,其中2/3维平面的旋转解释的很清楚)。四元素定义
a + bi + cj + dk四元素公式
四元素转化为欧拉角四元素转化为旋转矩阵
四元素优缺点
优点:不存在Gimbal Lock的问题缺点:不容易理解,且单个四元素无法表示超过180度的旋转。
总结
目前最理想的表示姿态的方式是四元素,下面是Oculars对传感器的文章有提到:因为欧拉角存在Gimbal lock的问题,所以不使用欧拉角,而使用四元素来表示姿态。Now turn to the problem of tracking a human head, which has three rotational degrees of freedom. The orientation of a 3D rigid body is often described by yaw, pitch, and roll angles. They are convenient for making figures like the one on the left, but later cause a lot of trouble due to numerical singularities (see gimbal lock) and a huge variety of alternative, incompatible definitions (see Euler angles–pronounced by Americans as “oiler angles”). We therefore use quaternions internally for representing orientation.
参考链接:
wikipedia
unity官方文档
understanding-quaternions
相关文章推荐
- SOA&Webservice系列课程(1)--The Essentials of Service Orientation
- “小鹰号”战斗姿态驶过台湾海峡
- Project Management Orientation - Define the project team (Concepts -1)
- 放低姿态是种人生智慧
- 关于android:screenOrientation="portrait"
- Android之screenOrientation和configChanges使用和注意事项
- 使用Orientation Changed Notification遇到的问题及解决办法
- android videoview,旋转 视频 orientation,rotation 等
- 基于四元数法的捷联式惯性导航系统的姿态解算(完善中)
- 如何避免ViewController打开时Orientation错误
- About device orientation
- UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法 (实例)
- UIViewController.interfaceOrientation 在ios5版本下 横屏是初始化判断无效
- MATLAB & STK构建卫星轨道姿态控制仿真演示系统
- android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
- Android入门笔记之 根据手机姿态改变手机模式
- ios7(自动旋屏)iOS6不支持shouldAutorotateToInterfaceOrientation
- Android Wrong orientation
- android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
- 关于ios里webview的orientation控制的一些小结