导航中的姿态变换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文主要介绍导航定位或SLAM中关于坐标旋转的一些基础知识,包括什么是姿态角,什么是欧拉角、如何由姿态角得到旋转矩阵、所得到的旋转矩阵有什么几何意义、旋转矩阵的左乘和右乘分别代表什么等


一、姿态角与欧拉角

1. 姿态角

在导航解算中,通常有三种姿态表示方式,欧拉角、方向余弦矩阵、四元数,一般选取较为常用的方向余弦矩阵来描述姿态。对于姿态角,是根据导航系(当地水平坐标系 n系)与载体系(b系)之间的转动关系进行定义的,而且从n系转到b系,首先假想载体完全水平且前向指北(假想载体系与导航系完全重合),那么经过旋转,该假想载体可以完全与真实载体重合,在这个过程中三轴旋转角度即为姿态角,姿态角就是一种特殊的欧拉角
其中,我们假定载体的xyz三轴指向为前右下,则:
x轴的旋转角为翻滚角(roll)
y轴的旋转角为俯仰角(pitch)
z轴的旋转角为航向角(yaw)
注意:roll和pitch的正负都符合右手定律,顺时针为负,逆时针为正;yaw角为北偏东为正,范围为(0~360度),因此当z轴指下时,符合右手定律,当z轴指上时(例如:右前上),其旋转方向不符合右手定律,因此这时一般会将yaw角范围转换到(-180~180)来使用。

2. 欧拉角

上文说到姿态角就是一组特殊的欧拉角,用来表示导航系与载体系之间的旋转关系,也可以说是载体系在导航系中的姿态。空间内的任何一个旋转运动,都可以分解为绕xyz三个轴的三次旋转,这三个角就是欧拉角,但是欧拉角的定义不是唯一的,根据旋转方式内旋、外旋)和旋转顺序的不同存在着多种定义,因此我们在讨论欧拉角时要确定其旋转方式和旋转顺序。
在导航领域中讨论的欧拉角默认旋转方式为内旋,旋转顺序为*yaw-pitch-roll*
在这里插入图片描述

二、旋转矩阵

我们上文谈到了用姿态角和欧拉角来表示b系在n系中的姿态,这种表示方式是直观的,但是不能直接用于计算,因此我们一般根据姿态角计算旋转矩阵(姿态矩阵)来表示姿态或旋转(注意,我们这里提到的旋转是坐标系的旋转,不是坐标的旋转)。

1. 什么是旋转矩阵

假设空间内有一点P,在导航系中坐标为Pn,在载体系中坐标为Pb,则:
[ e n 1 e n 2 e n 3 ] P n = [ e b 1 e b 2 e b 3 ] P b ( 1 ) 其中 [ e n 1 e n 2 e n 3 ] 表示导航系的正交基组成的矩阵 [ e b 1 e b 2 e b 3 ] 表示载体系的正交基组成的矩阵 \begin{bmatrix}e_n^1 &e_n^2&e_n^3\end{bmatrix}P_n = \begin{bmatrix}e_b^1 &e_b^2&e_b^3\end{bmatrix}P_b \quad\quad\quad(1)\\ \quad \\ 其中\begin{bmatrix}e_n^1 &e_n^2&e_n^3\end{bmatrix}表示导航系的正交基组成的矩阵\\ \quad \\ \begin{bmatrix}e_b^1 &e_b^2&e_b^3\end{bmatrix}表示载体系的正交基组成的矩阵 [en1en2en3]Pn=[eb1eb2eb3]Pb1其中[en1en2en3]表示导航系的正交基组成的矩阵[eb1eb2eb3]表示载体系的正交基组成的矩阵
P n = [ e n 1 e n 2 e n 3 ] T [ e b 1 e b 2 e b 3 ] P b ( 2 ) P n = [ e n 1 T e n 2 T e n 3 T ] [ e b 1 e b 2 e b 3 ] P b ( 3 ) P n = [ e n 1 T e b 1 e n 1 T e b 2 e n 1 T e b 3 e n 2 T e b 1 e n 2 T e b 2 e n 2 T e b 3 e n 3 T e b 1 e n 3 T e b 2 e n 3 T e b 3 ] P b ( 4 ) P_n =\begin{bmatrix}e_n^1 &e_n^2&e_n^3\end{bmatrix}^T \begin{bmatrix}e_b^1 &e_b^2&e_b^3\end{bmatrix}P_b \quad\quad\quad(2)\\ \quad \\ P_n=\begin{bmatrix}{e_n^1}^T \\ {e_n^2}^T \\ {e_n^3}^T\end{bmatrix} \begin{bmatrix}e_b^1 &e_b^2&e_b^3\end{bmatrix}P_b \quad\quad (3)\quad\\ \quad \\ P_n=\begin{bmatrix} {e_n^1}^T e_b^1 &{e_n^1}^T e_b^2 & {e_n^1}^T e_b^3 \\{e_n^2}^T e_b^1 &{e_n^2}^T e_b^2 & {e_n^2}^T e_b^3 \\{e_n^3}^T e_b^1 &{e_n^3}^T e_b^2 & {e_n^3}^T e_b^3 \end{bmatrix}P_b \quad\quad(4) Pn=[en1en2en3]T[eb1eb2eb3]Pb2Pn= en1Ten2Ten3T [eb1eb2eb3]Pb(3)Pn= en1Teb1en2Teb1en3Teb1en1Teb2en2Teb2en3Teb2en1Teb3en2Teb3en3Teb3 Pb4
式(4)等号右侧的矩阵即为旋转矩阵姿态矩阵,由向量内积的几何意义可知,该矩阵第一列表示载体系x轴在导航系三轴上的投影,第二列表示载体系y轴在导航系三轴上的的投影,第三列同理。因此可以说导航坐标系到载体坐标系的旋转矩阵就是载体系的基底在导航系的投影。上式也可以这么理解,向量P在导航系下的坐标为P~n~,在载体系下的坐标为P~b~.

下面我们来讨论下坐标旋转和坐标系旋转的区别,设Rnb表示从导航坐标系载体坐标系的旋转矩阵(载体系在导航系中的姿态矩阵),也是载体系坐标导航系坐标的旋转矩阵(注意:表示坐标系旋转矩阵是n->b,表示坐标旋转矩阵是b->n);另Rnb的逆矩阵或说转置矩阵(该矩阵由三个正交基组成,因此是正交矩阵)为载体坐标系到导航坐标系的旋转矩阵,也是导航系坐标到载体系坐标的旋转矩阵。

2. 旋转矩阵(坐标系的旋转矩阵)为什么是右乘

根据上文的描述,我们用姿态角来计算旋转矩阵:
R ( x ) = [ 1 0 0 c o s α − s i n α 0 s i n α c o s α 1 ] ( 5 ) R ( y ) = [ c o s α 0 s i n α 0 1 0 − s i n α 0 c o s α ] ( 6 ) R ( z ) = [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] ( 7 ) R(x) = \begin{bmatrix}1&0&0\\cos\alpha &-sin\alpha &0 \\sin\alpha&cos\alpha&1\end{bmatrix}\quad \quad (5)\\ \quad \\ R(y) = \begin{bmatrix}cos\alpha&0&sin\alpha\\ 0&1&0 \\-sin\alpha&0&cos\alpha\end{bmatrix}\quad \quad (6)\\ \quad \\ R(z) = \begin{bmatrix}cos\alpha &-sin\alpha &0 \\sin\alpha&cos\alpha&0\\0&0&1\end{bmatrix}\quad \quad (7)\\ R(x)= 1cosαsinα0sinαcosα001 (5)R(y)= cosα0sinα010sinα0cosα (6)R(z)= cosαsinα0sinαcosα0001 (7)
这里根据前右下的定义,旋转顺序为yaw-pitch-roll(321)
R = R ( z ) R ( y ) R ( x ) ( 8 ) R=R(z)R(y)R(x)\quad \quad (8) R=R(z)R(y)R(x)(8)
矩阵R表示的是从导航坐标系到载体坐标系的旋转矩阵,可以看出这里的顺序是右乘,即后转的矩阵乘在右边,与我们平时用的左乘(左乘用于坐标旋转)是不同的。
假设空间内有一点P,在导航系中坐标为Pn,在载体系中坐标为Pb,则:
P n = R ∗ P b = R ( z ) ∗ R ( y ) ∗ R ( x ) ∗ P b ( 9 ) P_n = R*P_b=R(z)*R(y)*R(x)*P_b\quad \quad (9) Pn=RPb=R(z)R(y)R(x)Pb(9)
现在我们来一步一步的分解,

首先,R(z) 是导航系绕其z 轴旋转了yaw 角,到了C1 坐标系
然后,R(y)C1 坐标系绕其y 轴旋转了pitch 角,到了C2 坐标系
最后,R(x)C2 坐标系绕其x 轴旋转了roll 角,到了载体系
导航系----->C1 坐标系----->C2 坐标系----->载体系

现在将公式(9)从右往左看,Pb 是点P在载体系下的坐标,那么根据1中所介绍过的坐标系旋转矩阵的意义可知,Pb 左乘R(x) 表示P 点在C2 坐标系中的坐标,即
P c 2 = R ( x ) ∗ P b ( 10 ) P_{c2} = R(x)*P_b\quad \quad (10) Pc2=R(x)Pb(10)
同理,Pc2 左乘R(y)表示点PC1坐标系下的坐标P~c1P~c1 左乘R(z)表示点P在导航坐标系下的坐标Pn,即
P c 1 = R ( y ) ∗ P c 2 ( 11 ) P n = R ( z ) ∗ P c 1 ( 12 ) P_{c1} = R(y)*P_{c2} \quad \quad (11)\\ P_n = R(z)*P_{c1} \quad \quad (12) Pc1=R(y)Pc2(11)Pn=R(z)Pc1(12)

注意:左乘右乘的关键点在于谁到谁的什么旋转,例如:
A系到B系坐标系旋转矩阵为R1,则R1也是B系到A系坐标旋转矩阵;
B系到C系的坐标系旋转矩阵R2,则R2也是C系到B系坐标旋转矩阵;

坐标系旋转矩阵坐标旋转矩阵
A->BR1R1T
B->AR1TR1
B->CR2R2T
C->BR2TR2

P a = R 1 ∗ R 2 ∗ P c ( 13 ) P c = R 2 T ∗ R 1 T ∗ P a ( 14 ) P_a = R_1*R_2*P_c \quad \quad (13)\\ P_c = R_2^T*R_1^T*P_a\quad \quad (14) Pa=R1R2Pc(13)Pc=R2TR1TPa(14)
我们利用公式(13)来解释左乘右乘,
如果R2、R1分别表示C系到B系的坐标旋转矩阵、B系到A系的坐标旋转矩阵,那式(13)明显是左乘,Pc到Pa ,先转R2再转R1;
如果R2、R1分别表示B系到C系的坐标系旋转矩阵、A系到B系的坐标系旋转矩阵,那式(13)明显是右乘,A系到C系 ,先转R2再转R1;

实际应用中我们无需考虑那么多,因为左乘右乘是互逆的,记住一种就行

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
载体坐标系到导航坐标系的转换通常是通过姿态变换来实现的。在导航,最重要的两个坐标系是载体坐标系和导航坐标系。载体坐标系是以载体为心,用于处理与传感器直接测得的物理量。导航坐标系可以是地固坐标系、地理坐标系等等,通常使用的是当地水平坐标系,俗称有“东北天”、“北东地”坐标系。\[1\] 具体到姿态变换,可以使用ENU到NED的转换。ENU和NED是导航坐标系的两种常用表示方法。ENU表示东北天坐标系,NED表示北东地坐标系。在姿态变换,可以通过相应的数学计算将ENU坐标系转换为NED坐标系。\[2\] 在地理坐标系,通常使用oxgygzg表示。地理坐标系也称为当地水平坐标系,其包括“东北天”坐标系和“北东地”坐标系。在载体的姿态描述,横滚、俯仰和偏航是在地理坐标系下定义的。\[3\] 因此,载体坐标系到导航坐标系的转换可以通过姿态变换实现,其包括ENU到NED的转换和地理坐标系的使用。 #### 引用[.reference_title] - *1* *3* [导航基础之坐标系整理——导航坐标系、地球坐标系、载体坐标系](https://blog.csdn.net/weixin_43032593/article/details/103877536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [导航坐标系变换关系](https://blog.csdn.net/Barry_123/article/details/116501977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值