| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 利用已知矢量在IMU、磁力计的三轴分布获得部分姿态的实例思考与总结 -> 正文阅读 |
|
[数据结构与算法]利用已知矢量在IMU、磁力计的三轴分布获得部分姿态的实例思考与总结 |
文章目录在惯导系统的初始对准,或者AHRS(航姿参考系统)算法中,我们经常通过一些已知方向或者大小的矢量(比如重力、磁力、地球自转角速率),来计算部分姿态参数。 虽然这些做法已经是老生常谈,但是最近看到一个专利,让自己突然意识到这种思路其实有更加广阔的应用,我们不应该把自己的思维局限在这些有限的、已知的应用中。所以写个博客总结一下自己已知的应用实例,巩固一下这种思维方式,希望自己在未来的技术难题中能借鉴这种思路、迸发灵感。 实例一:利用重力在加速度计的三轴分布计算俯仰、横滚在粗对准中,当载体静止时,通常会根据地球重力在加速度计三轴分布情况,从而计算得到横滚和俯仰。为什么通过加速度只能得到横滚和俯仰,而不能得到航向呢?这个也比较直观,想象一个载体在水平面,转动它的航向,并不能改变重力在加速度计三轴上的分布,但是转动横滚和俯仰却可以。 由于目前加速度计的精度一般都还比较好(多数都能做到
1
0
?
4
g
10^{-4}g
10?4g),相对来说,1g的重力是一个比较大的测量值,所以一般在静止情况下,这种对准方法精度还是不错的。如果选择北东地为地理系N,前右下为机体系B,则利用加速度计测量值计算粗略横滚、俯仰的方法如下[1]:
实例二:利用地球自转角速率在陀螺的三轴分布计算航向在粗对准中,如果陀螺的精度比较高(可以敏感地球自转角速率约 15 ° / h 15°/h 15°/h),在静止情况下,可以采用地球自转角速率在IMU的三轴分布来确定航向。 不同的纬度,地球自转角速率不同,且只有北向和地向有值,东向无值。 假设航向角为A,那么水平面上陀螺x轴和y轴的分量为:
w
x
=
w
i
e
c
o
s
L
?
c
o
s
A
w_x = w_{ie}cosL*cosA
wx?=wie?cosL?cosA 因此,通过如下计算即可航向角A: A = ? a t a n 2 f ( w y , w x ) A = -atan2f(w_y, w_x) A=?atan2f(wy?,wx?) 利用这种方法计算出来的航向精度和纬度、陀螺精度都有关系。在博客惯性导航原理(九)-INS的初始对准-初始姿态确定+双矢量定姿中,分析了用这种方法计算航向的精度与维度之间的关系。如果纬度越高,那么在该纬度的北向地球自转角速率分量就越小(天向分量更大),陀螺自身误差的影响就越大,从而导致计算得到的航向误差会越大。 地球自转角速率的量级相对于陀螺精度,其实是一个比较小的量测,因此对陀螺的精度高度要求更高。PX4的ECL中没有这部分的代码,主要原因也可能是无人机所用的IMU一般来说精度偏低,无法通过自对准获得航向信息。 此外,在严恭敏老师的讲义《捷联惯导算法与组合导航原理》中也提到用双矢量定姿法得到初始姿态角。其实本质与实例一、二相同。 实例三:利用地磁在磁力计的三轴分布计算磁航向利用磁力计获得航向的过程中,通过会利用磁力的分布情况得到磁航向。由于磁力计所测得地磁矢量沿磁感线,如果已知正确的姿态角,磁力计的测量值经过正确Cbn旋转矩阵从载体系B转到地理系N,因为地球磁场的切线在南北方向上,理论上水平方向上只有磁北方向有值。与实例二相同,在航向角未知的情况下,可以设航向角为0,利用已知的俯仰、横滚将磁力计测量值转到水平面上,再通过计算 ? a t a n 2 f ( m y , m x ) -atan2f(m_y, m_x) ?atan2f(my?,mx?),即可得到磁航向角。 不过需要注意的是磁北和地理北向之间存在磁偏角,需要根据模型进行修正,才能真正得到航向角。 PX4的ECL开源代码ekf_helper.cpp中的resetMagHeading函数即是用这种方法重置航向角:
实例四:Trimble专利-计算推土机和推土铲之间的相对航向在Trimble 2021的专利(参考[3])中,IMU1装在C-frame上,IMU2装在推土铲上,如下图中所示。 由于C-frame和推土铲半固连,因此他们拥有同样的俯仰角和俯仰角速率,但是横滚和航向可能不同。IMU的横滚、俯仰通常可以通过加速度计得到,两个IMU的相对航向可以通过给他们施加一个同样的、在俯仰方向的角速率得到。这个施加的俯仰角速率,由于两个IMU的姿态不同,因此在两个IMU上有不同的三轴分布。 利用加速度计通过实例一中的方法,可以获得每个IMU的横滚和俯仰,因此可以将航向角设置为0,利用各自的横滚、俯仰值将陀螺量测量转到水平面。那么两个陀螺仪在水平方向的矢量和相同,因此可以同以下方式求得相对航向: 参考资料[1] 如何利用惯性测量单元(IMU)进行动态姿态计算? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/30 0:42:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |