四元数转欧拉角代码解析资料下载.pdf

上传人:wj 文档编号:5969328 上传时间:2023-05-05 格式:PDF 页数:5 大小:1.39MB
下载 相关 举报
四元数转欧拉角代码解析资料下载.pdf_第1页
第1页 / 共5页
四元数转欧拉角代码解析资料下载.pdf_第2页
第2页 / 共5页
四元数转欧拉角代码解析资料下载.pdf_第3页
第3页 / 共5页
四元数转欧拉角代码解析资料下载.pdf_第4页
第4页 / 共5页
四元数转欧拉角代码解析资料下载.pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

四元数转欧拉角代码解析资料下载.pdf

《四元数转欧拉角代码解析资料下载.pdf》由会员分享,可在线阅读,更多相关《四元数转欧拉角代码解析资料下载.pdf(5页珍藏版)》请在冰点文库上搜索。

四元数转欧拉角代码解析资料下载.pdf

因此,我将从1.四元数矩阵的得到;

2.欧拉角矩阵的得到;

3.两个矩阵的等价运算三个部分进行说明。

1.四元数矩阵的得到四元数矩阵的得到/先规定坐标轴OO=(ru)u=|r|u|cos(AOO)u由于u为单位向量,故|u|=1;

角AOO为直角。

|r|u|cos(AOO)表示OO的长度;

再点乘u加上方向;

故表示了OO向量OB=UXOA=|U|OA|sin(AOO)由于u为单位向量,故|u|=1;

角AOO为直角,即sin(AOO)=1;

OB=OA均为圆半径,根据叉乘右手定义的方向确定OB方向:

故表示了OB向量三重矢量计算公式:

AX(BXC)=B(AC)-C(AB)这个公式很好记,右边部分就是BACK-CAB(后面的出租车)1.这里矢量的叉乘均采用上页注解的公式,简单来说就是将第一个3x1矢量化为3x3矩阵,而第二个矢量保持不变。

2.3x3矩阵叉乘3x1矢量,在几何意义上可以把矩阵看做是一次作用于矢量的拉伸和旋转的变化信息。

在叉乘后加上一次投影运算,不妨看做一次对矢量的投影,这也是投影运算不作用与矩阵,只作用于矢量的原因。

这个”I”表示的是主对角线为1,其余元素均为0的3x3单位矩阵。

这里涉及UU三阶矩阵的乘法运算,仔细点即可,很简单,不赘述。

q0到q3就是描述四轴旋转变换的四元数的四个参数了。

如此定义,除了一部分约定俗成的因素外,还是有一定原因的。

首先,我们需要一个单位化的四元数即四个参数的平方和为1,其次,选择单位向量u利用其lmn三个参数(平方和为1),也是出于单位化的考虑。

从这里我们可以知道:

什么叫四元数,四元数又如何描述一次旋转变换。

四元数是通过其q1q2q3这三个参数描述这次旋转变换是绕哪条轴旋转,旋转的方向又是什么;

通过q0参数间接地指明这样的旋转需要旋转多少角度。

因此,在参考坐标已知的情况下,利用四元数的四个参数就能描述一次坐标变换。

这里的计算很简单,但也比较繁琐:

就是把9.2.31代入9.2.30b后,再合并一下就可以了,仔细点即可。

2.欧拉角矩阵的得到欧拉角矩阵的得到02+12+22+32=1从9.2.33到9.2.34的化简,其实就是利用进行化简,把1去掉即可。

简单的直角坐标运算将右侧的矩阵乘开,可得到一个3x1矩阵,与左边3x1矩阵对应元素相等,这个相等的关系,就是上个框框中求出的三个等式。

各轴上的单位1,就是图1.2.2矩阵任意行与列各个元素的平方和为1。

到这里,用欧拉角表示描述一次旋转变换已经结束了。

然而,上述的姿态矩阵仅仅是惯性导航这本书先Z,再X,最后Y旋转变换而形成的姿态矩阵,这样的旋转顺序其实是和很多大家实际使用的飞控代码不一样的(同样的,关于的实际意义其实也没有明确的规定)。

此文目的就是解析“正点原子”飞控代码中四元数转欧拉角部分,因此,接下来,这里再举例解释一下第三个(旋转Y轴)的变换矩阵。

首先,由于是旋转Y轴,即Y轴在旋转前后不变,Y2=Y1即第二行第二列为1。

假设旋转的角度为,易知:

OD=OF+FE+ED=OAxcos+AExsin+EBxsin=OAxcos+ABxsin/对应x方向坐标变换,即第一列两个系数OC=AH-AF=ABxcos-AOxsin/对应z方向坐标变换,即第三列两个系数剩下一个矩阵计算同理,不再赘述。

X1X2Z1Z2OADBCEFGH直接矩阵相乘后就能得到此结果,仔细即可进行一次补充说明,如图所示:

即为俯仰角(pitch):

即为横滚角(roll):

即为航向角(yaw)我将采用此代码所使用的旋转顺序,先Z,再Y,最后X的旋转变换重新计算旋转矩阵。

=000010010010000=+3.两个矩阵的等价运算两个矩阵的等价运算至此,我们已经分别用四元数法与欧拉角法共同描述了一次旋转变换。

这一节,将利用前两节最后得到的结论,进行等价运算。

为了观察方便,这里将两个矩阵再次列出。

+为了运算方便,只需比对两个矩阵的第三行与第一列即可得出结论。

=sin1(2(1302))俯仰角=tan1(2(23+01)021222+32)横滚角=tan1(2(12+03)02+122232)航向角在最终得到实际运算代码前,说明两个小细节:

1.三个欧拉角最终在代码中体现时,会有正负号的区别,这个很好理解,四轴向上,向右,顺时针滚动为正还是负呢?

你喜欢怎样,只要不离谱,代码是自己的,可以自行调整。

可以看到正点原子的代码的方向选取与惯性导航这本书的方向选取,在pitch角与roll角上是相反的。

2.计算横滚角时,上述计算式子分母和实际代码有些许差异,是因为进行了一次02+12+22+32的等价代换。

下面,我们再来看看这段四元数转欧拉角的代码,是不是很清晰了呢?

/*roll=atan2(2*q2*q3+2*q0*q1,-2*q1*q1-2*q2*q2+1)*57.3;

/*yaw=atan2(2*(q1*q2+q0*q3),q0*q0+q1*q1-q2*q2-q3*q3)*57.3;

/4.结语结语刚刚接触stm32控制下的四旋翼设计,才疏学浅,如有错误,欢迎大家指正交流!

本文参考书目秦永元的惯性导航。

作者:

朱一尘2016.5.30

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2