1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 组合导航(GNSS+惯性导航)

组合导航(GNSS+惯性导航)

时间:2023-07-05 10:48:43

相关推荐

组合导航(GNSS+惯性导航)

一、GNSS

至少需要四颗星。怎么判断GNSS数据是否准确?数据中是否携带星数?

二、惯性导航

关于磁力计的使用:

1)类似重力,磁力也是一个矢量。地球任意位置的磁力在东北天地理系下的表示为(0,y,z)即永远指向北极。但是区别于重力,磁力的大小不是常量,因此,在后面的使用中需要借助重力得到初始姿态,然后计算磁力的大小。

2)利用磁力计可以计算pitch roll yaw. 原理和重力计算姿态一样。因此,想使用磁力计计算yaw, 必须将磁力计的坐标系和IMU的坐标系对齐

3)在惯性导航中如何使用磁力计呢?

a. 首先计算磁力计的标准值(0,y,z) 类似重力的(0,0,1)

b. 类似重力,已知某一向量在两个坐标系的表示,计算坐标系的变换矩阵。

三、组合导航

参考:非常棒!

四、kitti数据集中的 gnss 信息

1. GNSS 得到的位置,速度信息是表示在东北天地理坐标系的

2.惯性导航得到的姿态也是表示在东北天地理坐标系的(需要借助磁力计)。速度和位置表示在哪个坐标系,视自己的航迹推演怎么设计:

1)默认的,IMU得到的加速度是表示的实时的载体系的,因此速度也是表示在载体系。如果使用这样的默认设置,得到的位置,是表示在 第一个IMU数据所在的载体系

2) 如果利用IMU得到的姿态信息,将加速度变换到东北天地理坐标系,则 速度,位置 都是表示在,以第一个IMU数据为原点的地理坐标系

3. 如果将GNSS和惯性导航进行融合,松耦合,卡尔曼滤波的形式。GNSS的位置和速度作为观测,来更新 IMU的 速度,位置,姿态。仅仅需要磁力计提供粗略的初始航向信息。

GNSS的位置和速度都是表示在地理坐标系的,而且原点在地心。IMU的速度,位置都是第一种情况。其中的坐标系统一过程如下:

1)速度:通过实时IMU的姿态,将GNSS的速度变换到载体系

2)位置:通过第一帧IMU的姿态+位置(姿态是磁力计+加速度计粗略给的,位置是此时的GNSS位置给的),将GNSS的位置信息,变换到 第一帧IMU所在的载体系

以上,1)中包含了 IMU实时姿态信息,这是我们需要优化的;2)中包含了 第一帧IMU姿态信息,这也是需要优化的。因此,这也证实了,我们后续不需要磁力计来提供yaw了,后续系统会自动优化;而且初始姿态不准都没关系,后续也会优化。

这个松耦合的系统输出的是惯性导航的PVQ结果,因此是表示在 载体系中的结果。不过,我们可以随意转换到 地理系中。

现在我们有了三组数据:

1)GNSS数据

2)惯性导航数据

3)GNSS+惯性导航 融合数据

那么,我们接收到的 组合导航模块输出的结果到底是哪个呢?正常来说,应该是 第3)个结果,且PVQ都表示在东北天地理系, 而且原点在地心。

简要表示如下:我们将地理系记为 w , IMU载体系表示为 b (随着载体实时变化,不固定),lidar 载体系表示为 l .

--- 组合导航输出的结果表示 IMU这个玩意 在 地理系中的位姿 Twb。

----- 也不难理解,Twl = Twb*Tbl 表示 lidar 这个玩意在 地理系中的位姿。

实践: kitti 数据集中的 组合导航数据如下:

- /kitti/oxts/imu : 包括 姿态,加速度,角速度。姿态表示在 东北天地理系,是绝对姿态(这个应该是融合后的结果);角速度和加速度应该是载体系(应该是IMU的原始测量值)。

- /kitti/oxts/gps/fix :包括位置,表示在东北天地理系,且原点在地心。(不知道是否为融合后的结果 or GNSS 原始结果)(应该是融合后的结果,因为 这个话题的time 和imu 一样,原始的GNSS 结果肯定没这么高的频率)

-/kitti/oxts/gps/vel: 包括线速度,角速度。 (这个应该是融合的结果吧,GNSS自己原始数据中有角速度?) ( 经过测试 线速度,角速度 都表示在载体系! 这个很重要!)

总之,上面三个话题分别提供了姿态,位置,速度信息。姿态和位置都是表示在地理坐标系,地心为原点。速度信息表示在载体系。

================ 关于任乾代码中的两个疑问 =====

1.

velocity_ = rotate_matrix * velocity_;

angular_rate_ = rotate_matrix * angular_rate_;

不应该乘以 rotate_matrix.inverse() 吗?

2. VelocityData::TransformCoordinate 函数的两个问题:

1). 传入的应该是 imu_2_lidar, 大佬自己已经在知乎评论中指出了。

2). delta_v 应该等于 Ril.transpose() * w ^ * til 而不是代码中的 (Ril.transpose() * w)^ * til

===== 以上,都是根据 第二章 基于地图的定位 的作业 来展开的 =====

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。