logo资料库

全角度欧拉角的转换.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
1. 引 言
2. 欧拉角与四元数
2.1欧拉角
2.2四元数
3. 欧拉角转四元数
4. 四元数转欧拉角
5. 结论
6. 结论
参考文献
http://www.paper.edu.cn 全角度欧拉角与四元数转换研究1 陈志明 ,王惠南 ,刘海颖 1 南京航空航天大学自动化学院,南京(210016) E-mail:goki@163.com 摘 要: 对于四元数转换为欧拉角算法,普通的参考文献上都局限在 90± ° 内,或是俯仰角 内。本文利用前一时刻的角度信息对当前角度进行修正, 局限在 内其它两角局限于 180± 90± ° ° 内的欧拉角与四元数互转算法,仿真效果证明本算法在 360± ° 成功地实现了 好。 关键词:欧拉角;四元数;姿态 中图分类号:V448.22 1. 引 言 360± ° 可行且效果 欧拉角与四元数姿态表示方法是目前工程上最常用的两种方法。欧拉角表示法具有简 便、几何意义明显等优点,同时姿态敏感器可以直接测出这些参数,能较方便地求解用这些 姿态参数描述的姿态动力学方程。但采用欧拉角的姿态描述方法存在奇点问题,且需多次三 角运算。而采用四元数表示方法则可以避免这些问题,因此目前工程上开始采用四元数来描 述飞行器运动及动力学方程中的姿态,而在设计控制规律时,由于欧拉角的直观性和几何意 义,仍然采用欧拉角描述。但这里存在一个转换的问题,对于欧拉角转换为四元数是一对一 90± ° 的关系,很容易运算,而四元数转换为欧拉角时并非一对一关系,常规的方法只能完成 以内的四元数转欧拉角 [2],[3], 因此无法实现大姿态机动时的欧拉角表示。文献[1]提出了 180± 稳定。本文设计了一个全新的算法,通过象限判断将四元数成功地在 360± 2. 欧拉角与四元数 ° 内的转换程序,但不 ° 内转换为欧拉角。 2.1 欧拉角 根据欧拉定理,刚体绕固定点的位移也可以是绕该点的若干次有限转动的合成。在欧拉 转动中,将参与坐标系转动三次得到星体坐标系。在三次转动中每次的旋转轴是被转动坐标 系的某一坐标轴,每次的转动角即为欧拉角。因此,用欧拉角确定的姿态矩阵是三次坐标转 换矩阵的乘积。这些坐标转换矩阵都有如下标准形式: R x ( ) ϕ = 1 0 0 ⎡ ⎢ ⎢ ⎢ ⎣ 0 cos sin − ⎤ ⎥ ϕ ⎥ ⎥ ϕ ϕ ⎦ 0 sin ( ) ϕ θ cos R y = θ cos 0 sin θ ⎡ ⎢ ⎢ ⎢ ⎣ 0 1 0 − sin 0 cos θ ⎤ ⎥ ⎥ ⎥ ⎦ θ R z ( ) ψ ⎡ ⎢ = − ⎢ ⎢ ⎣ cos sin 0 ψ ψ ψ ψ sin cos 0 0 0 1 ⎤ ⎥ ⎥ ⎥⎦ (1) 最终的姿态矩阵还与三次转动的顺序有关,本文采用 3-2-1 的方法,即按照 Z-Y-X 轴的 1 本课题得到高等学校博士学科点专项科研基金(20030287005)资助。 - 1 -
顺序旋转。 于是可得姿态矩阵[4] ) = R ( ) A R z s θ − ⎤ ⎥ s c s s c ( ψ θ ϕ ϕθψ ϕψ ϕθψ ϕψ ϕθ ⎥ c c c s c ⎥ ϕθψ ϕψ ϕθψ ϕψ ϕθ ⎦ c s θψ + − 式中,字符"c","s"分别为"cos"和"sin"的缩写形式。 c c θψ − + s s s c s s c c s c c s s s ( ) ⎡ ⎢ ⎢ ⎢ ⎣ R x = y 2.2 四元数 http://www.paper.edu.cn (2) 在刚体定点转动理论中有一个著名的欧拉定理:刚体绕固定点的任一位移,可由绕通过 此点的某一轴转过一个角度而得到[5]。在单位时间间隔 tΔ 内假设刚体角速度为ω ,则该转 动轴的方向 及绕该轴转过的角度 e φ分别为: e ω , ω= t φ ω= Δ 相应四元数表示式为: q = ( q q q q , 0 3 , , 1 2 ) T = q 0 q ⎡ ⎢ ⎣ ⎤ ⎥ ⎦ q 2 满足约束条件 1 以超复数形式表示有 q 2 0 + + q 2 2 ⎡ ⎢ = ⎢ ⎢ ⎢ ⎣ q 2 3 e + cos( φ ⎤ ) ⎥ 2 ⎥ φ ⎥ ) sin( ⎥ 2 ⎦ 。 = 1 (3) q = cos( φ ) 2 + i sin( + j sin( 满足约束条件: i j 2 = k 2 φ ) 2 2 = k φ sin( ) 2 = − = ij i ; = − ki ik j 。 = 利用三角公式: cos φ= 2cos 1 − , sin ,可将四元数转化成姿态矩阵 2 + ; φ ) 2 1 = − φ 2 q q + 0 3 q 2 − + 2 q q − 0 1 φ= ji k ; = − = 2sin cos jk kj φ φ 2 2 q q q q 2( ⎤ − 0 2 1 3 ⎥ q q q q 2( + ⎥ 0 1 2 3 ⎥ q q q 2 2 2 + − − ⎦ 2 1 0 ) ) q 2 3 ) q 2 3 ) A = q q 2 2 + 1 0 q q 2( 1 2 q q 2( 1 3 q 2 − − 2 q q − 0 3 q q + 0 2 q 2 3 ) ) ⎡ ⎢ ⎢ ⎢ ⎣ q q 2( 1 2 q q 2 2 − 0 1 q q 2( 2 3 (4) 3. 欧拉角转四元数 根据四元数的定义,可以将欧拉角式转换为四元数,以欧拉 3-2-1 转动为例: 第一次先绕 Z 轴转动, ϕ θ= = ,四元数表示为: 0 第二次先绕 Y 轴转动, ϕ ψ= = ,四元数表示为: 0 第三次先绕 X 轴转动, θ ψ= = ,四元数表示为: 0 qψ = qθ = qϕ = 则绕三轴转动的合成为 q = q q qϕ θ ψ 有: - 2 - cos − k sin ψ 2 θ 2 ϕ 2 cos − j cos − i ψ 2 θ 2 ϕ 2 sin sin
q 0 q 1 q 2 q 3 ⎡ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ⎢ ⎢ ⎤ ⎢ ⎥ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ ⎢ ⎦ ⎢ ⎢ ⎣ c s c c 2 2 2 2 2 ) + s ( s ) ( ) − c ( s ) ( s ) ( c ) ( c ) ( c ) ( c ) ( ϕ θ ψ ϕ θ ψ ( ) 2 2 ϕ θ ψ ϕ θ ψ ( ) 2 2 ϕ θ ψ ϕ θ ψ ) ( 2 2 ϕ θ ψ ϕ θ ψ ( ) 2 2 c ) ( c ) ( c ) ( c ) ( s ) ( s ) ( s ) ( s ) ( s ) ( ) − s ( ) + s ( 2 2 2 2 2 2 2 2 http://www.paper.edu.cn ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ 2 2 ° 内均有效,是一对一的关系。 2 该转换方法在 360± 4. 四元数转欧拉角 为了验证算法本文建立仿真程序,先将原始欧拉角转换为四元数,再将四元数转换为欧 拉角。 根据式(2)可得欧拉角表述: ϕ = arctan( A (2,3) A (3,3) ); θ = arcsin[ A (1,3)]; ψ = arctan( A (1,2) A (1,1) ) 将式(4)代入可得欧拉角的四元数表述式: = ϕ θ= ψ = ) arctan( q q q q 2( + 0 1 2 3 q q q 2 2 2 − + − 2 0 1 q q q q arcsin( 2( − − 1 3 0 2 q q q q 2( + 0 3 1 2 q q q 2 2 2 + − − 2 0 1 arctan( ) q 2 3 )) ) q 2 3 ) (5) 但这里存在一个问题, arcsin 函数的值域在 ( − )π π 2 2 , 内, arctan 函数值域在 ( )ππ− , 内, 无法完成 360± ° 内的角度转换。效果见图 1 与图 2。 图 1 原始欧拉角 图 2 转换后的欧拉角 - 3 -
在 360± ° 角度信息对当前得到的角度进行修正,来决定当前时刻的正确角度。在这里令 内一个四元数可以对应不只一个欧拉角。这就需要采取修正,根据前一时刻的 ( )kθ′ 为 时 k 刻由式 (5)得到的角度, ( )kθ 为 k 时刻经修正后的角度。 http://www.paper.edu.cn − ,误差最小的即为正确的当前角度 ( )kθ 。 1) 对于横滚角与偏航角,由于是反正切函数,其值有以下几种可能性。 k k ( ) ( ) ′= θ θ ⎧ ⎪ k k ( ) ( ) ′= + π θ θ ⎪⎪ k k ( ) ( ) ′= π θ θ − ⎨ ⎪ k k ( ) 2 ( ) ′= + π θ θ ⎪ k k ( ) 2 ( ) ′= π θ θ − ⎪⎩ k k 分别比较 ( ) ( θ θ− 对于俯仰角,为反正弦函数,因此将 360± ⎧ ′= θ θ ⎪ ⎪ ⎪ k ( ), ′ θ π θ ⎪ ⎪⎪ θ ⎨ ⎪ ⎪ θ ⎪ ⎪ ⎪ θ ⎪⎩ 同时要考虑的是在角度从一个区段跨越到另一区段时要进行判断并进行相应处理。 π π ) 2 2 3 π π [ , ) 2 2 3 π 2 3 π π ] 2 2 3 π ( 2 , ] π 2 ° 划分为五个区段,修正算式为: k ( ), 2 ′ = − π θ k ( ), ′ π θ = − − k ( ), ′ π θ ( 1) − ∈ − 1) − ∈ − ( 1) − ∈ − k ( ) 2 = 1) − ∈ 1) − ∈ = − ,2 ) π ( θ k ( θ k k ( ) k ( ) k ( ) k ( ) , − − ( θ k ( θ k + + [ k ( ), ( θ k , 图 3 角度跨区段示意 当 ( )kθ′ 在区段一内,且在点 A 附近,则先按照区段一的计算式计算 ( )kθ ,判断 ( )kθ 、 θ − 间的差值,如果反差较大,则表示 ( )kθ 应该落在区段二内,因此应按照 2k ) ( 1k ) θ − 、 ( 区段二的修正算式计算 ( )kθ 。B 点同理。 转换效果如图: - 4 -
http://www.paper.edu.cn 图 4 修正后的欧拉角 比较图 4 与图 1,曲线是重合的,算法成功地在 360± ° 内完成了由四元数向欧拉角的转 换。 5. 结论 本文设计了 内的欧拉角与四元数转换方法,利用前一时刻角度信息修正了传统转换方 法的角度局限问题。仿真效果显示本算法成功实现了转换过程。 本文提出的转换方法对于飞机器及卫星的姿态描述有重要意义,解决了大姿态机动情况 下欧拉角无法正确表述的问题。 6. 结论 本文采用某型号小卫星模型,以四元数表述姿态,采用磁力计及太阳敏感器进行矢量观 测,应用 UKF 算法进行滤波。并与 EKF 算法进行效果对比。 为了在 UKF 算法中采用四元数,本文将四元数转换为旋转矢量处理,并设计了四元数 求加权均值的叠代算法。 仿真结果表明 EKF 算法有其局限性,对初始姿态值依赖性较大,而 UKF 则克服了 EKF 算法的不足处,且其算法复杂度基本相同,无须求解雅克比矩阵,精度则较 EKF 要高,收 敛速度高,稳定性好。 另外传统的方向余弦阵表述法,参量多且约束条件多,运算量大实时性差,而采用四元 数表述姿态运算速度快且不具奇异点,系统实时性得到充分提高,适合工程应用。 参考文献 [1] 张帆,“一种新的全角度四元数与欧拉角的转换算法”,《南京理工大学学报》,2002 年,第 4 期 [2] 许佩珍、董长虹,四元数在战斗机飞行仿真中的应用,《北京航空航天大学学报》,1997,23(4),487~491 [3] 田春华,卫星姿态控制系统的分析、设计和仿真研究,哈尔滨:哈尔滨工业大学,2000. [4] 章仁为,《卫星轨道姿态动力学与控制》,北京,北京航空航天大学出版社,1998.5 [5] E Dam, M Koch, and M Lillholm, “Quaternions, Interpolation and Animation, in Technical Re-port DIKU-TR-98/5, Department of Computer Science. 1998: Univ. Copenhagen, Denmark. - 5 -
Research on Large-scale Transformation Algorithm of Quaternion to Euler Angle http://www.paper.edu.cn College of Automation Engineering, Nanjing University of Aeronautics & Astronautics, Nanjing, CHEN Zhi-ming, WANG Hui-nan, LIU Hai-ying 210016, China Abstract Usually, transformation between quaternion and Euler angle is restricted in . As described in paper[1], a new Algorithm can complete the transformation in ,however not absolutely successful. In this paper a new Algorithm was presented to complete the transformation in with the quadrant information, and is proved to be successful. Keywords: Quaternion, Euler Angle, attitude 作者简介:陈志明(1982-) 男,博士,研究方向:卫星姿态测量与控制,GPS 导航 - 6 -
分享到:
收藏