多传感器融合定位GNSS、IMU、Lidar、Camera

概述

0.坐标系

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
为了求解速度分量,相当于local
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动驾驶如何应用这些坐标系:
在这里插入图片描述

坐标系直接的转换公式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述航向角:
北东地,北偏东某某度
在这里插入图片描述

1.纯激光雷达点云定位
2.融合GNSS的点云定位
3.融合IMU的点云定位

IMU介绍
在这里插入图片描述

在这里插入图片描述
https://blog.csdn.net/hbsyaaa/article/details/108186892
IMU,即惯性测量单元,一般包含三轴陀螺仪与三轴加速度计。
1:通过其内部的DMP处理单元直接得到姿态解算的四元数结果。
2:通过软件解算的方式,利用欧拉角与旋转矩阵来对陀螺仪与加速度计的原始数据进行姿态求解,并将两种姿态进行互补融合,最终得到IMU的实时姿态
在这里插入图片描述

在这里插入图片描述我们使用IMU器件最终想要获取的是位姿数据,包含位置和姿态,而实际IMU直接测量的数据是加速度和角速度,需要对角速度进行一次积分计算角度,也就是姿态;对加速度进行二次积分获取距离,也就是位置。由于种种原因,所有的传感器测量数据,都有测量误差,而IMU是通过积分实现间接测量值,且其参考数据是上时刻数据,这就造成其误差也会随着时间传递下去,时间越久,其误差越大,这一特性成为数据漂移,所以IMU一般需要与其它传感器配合使用。

某些IMU只有线加速度和角加速度,没有四元素;
那么如何求解

在这里插入图片描述
在这里插入图片描述
根据加速度计解算姿态角,会有误差,因为靠重力加速度
在这里插入图片描述
方式二还可以利用重力分离求解roll pitch,但是yaw无法求解

// 订阅IMU
void imuHandler(const sensor_msgs::Imu::ConstPtr& imuIn)
{
    #ifdef INITIAL_BY_IMU
    if(!initialImu)
    {
        // float imupitch_ = atan2(-imuIn->linear_acceleration.x, 
        //                   sqrt(imuIn->linear_acceleration.z*imuIn->linear_acceleration.z + 
        //                   imuIn->linear_acceleration.y*imuIn->linear_acceleration.y));
        int signAccZ;
        if(imuIn->linear_acceleration.z >= 0) signAccZ = 1;
        else signAccZ = -1;
        float imupitch_ = -signAccZ * asin(imuIn->linear_acceleration.x);
        float imuroll_ = signAccZ * asin(imuIn->linear_acceleration.y);
        // float imuroll_ = atan2(imuIn->linear_acceleration.y, imuIn->linear_acceleration.z);
        Eigen::AngleAxisf imuPitch = Eigen::AngleAxisf(imupitch_, Eigen::Vector3f::UnitY());
        Eigen::AngleAxisf imuRoll = Eigen::AngleAxisf(imuroll_, Eigen::Vector3f::UnitX());
        Ext_Livox.rotate(imuRoll * imuPitch);
        // Ext_Livox.pretranslate();
        initialImu = true;
    }
    #endif
}

IMU预积分

https://maimai.cn/article/detail?fid=1658970578&efid=XAH0JEgstI0sq0-pwwnJUg
在这里插入图片描述

预积分问题引入

这种融合模型的核心问题在于,IMU的约束是通过惯性积分得到的,而惯性积分是以它前一时刻的位姿为初始值得到的,但是位姿每次优化后会发生变化,这导致其后的IMU惯性积分就要重新进行,显然运算量过大。

这个问题的解决思路就是直接计算两帧之间的相对位姿,而不依赖初始值影响,即所谓的预积分。本篇文章剩余的篇幅就几乎全在讨论预积分的问题。

  1. 使用思路
    在这里插入图片描述
  2. 残差设计
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    类似于kalman滤波

IMU与GPS

在自动驾驶定位算法中,IMU+GPS被称为黄金搭档,其主要原因是这两种器件互补性比较好,其数据有以下特征:

① 频率互补,GPS频率一般为10Hz,IMU频率一般为100Hz。
② 数据干扰互补,GPS数据易受环境影响,例如高楼、隧道等;IMU不易受外界干扰。
③ 数据误差互补,如上述第六点所述,IMU存在数据漂移,GPS每次测量都是独立的,即与上次测量无关,所以不存在误差累计。
④ IMU测量的是相对位置,GPS测量的是绝对位置。


    // add imu msg
    sensor_msgs::ImuConstPtr imu_msg = m.instantiate<sensor_msgs::Imu>();
    if (imu_msg) {
      ImuData data;
      data.acc = Eigen::Vector3d(imu_msg->linear_acceleration.x, //表示线加速度
                                 imu_msg->linear_acceleration.y,
                                 imu_msg->linear_acceleration.z);
      data.gyr = Eigen::Vector3d(imu_msg->angular_velocity.x, //角速度
                                 imu_msg->angular_velocity.y,
                                 imu_msg->angular_velocity.z);
      // orientation是由linear_acceleration和angular_velocity计算而得
      data.rot =
          Eigen::Quaterniond(imu_msg->orientation.w, //姿态,使用四元数表示
                             imu_msg->orientation.x, imu_msg->orientation.y,
                             imu_msg->orientation.z);
      data.stamp = imu_msg->header.stamp.toSec();

4.融合GNSS、IMU的点云定位
5.融合Camera的点云定位

参考AutoWare 或者 Apollo

AutoWare:
https://github.com/autowarefoundation/autoware_ai_perception
Apollo:
https://github.com/ApolloAuto/apollo/tree/master/modules/localization

在这里插入图片描述

1.纯激光雷达点云定位

LOAM系列算法配置及建图测试:LIO-SAM、LeGO、A-LOAM、LIO-mapping

2.融合GNSS的点云定位

3.融合IMU的点云定位

4.融合GNSS、IMU的点云定位

5.融合Camera的点云定位

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: GNSS(全球导航卫星系统)多传感器融合是一种将多个传感器数据集合起来以提高定位和导航精度的技术。这些传感器可以包括GNSS接收器、惯性导航系统(INS)、地面测量设备等。 GNSS本身具有定位精度较高的优点,但在许多情况下,如高楼大厦、山谷、城市峡谷等地形复杂的区域,接收到的卫星信号可能会遭受遮挡或多径效应的干扰,导致定位不准确。 为了解决这个问题,多传感器融合技术被引入。这种技术将GNSS接收器与其他传感器结合起来,比如INS、地面测量设备等,来增强定位和导航的准确性。在GNSS信号受阻的时候,其他传感器可以提供附加的位置信息,从而填补定位中的空白。 通过融合多个传感器的数据,系统可以实现更可靠的位置估计和导航解决方案。例如,在车载导航系统中,多传感器融合可以提供准确的位置和导向信息,使司机能够更精确地知道自己的位置和如何到达目的地。 总而言之,GNSS多传感器融合是一种有效的技术,可以通过结合多个传感器的数据来提高定位和导航的精确性。这种技术在许多领域都有应用,包括航空、航海、车辆导航等。 ### 回答2: GNSS多传感器融合是指将全球导航卫星系统(GNSS)与其他传感器相结合,以提高导航和定位的精度和可靠性。传感器可以包括惯性测量单元(IMU)、气压计、陀螺仪、加速度计等。通过融合这些传感器的数据,可以弥补GNSS单独定位容易受到多路径效应、信号遮挡和干扰等因素的限制,从而提高定位的准确性和稳定性。 GNSS多传感器融合的核心是将多个传感器的测量数据进行优化和整合。首先,需要进行传感器数据的预处理,包括去噪、滤波和校准等步骤,以确保传感器数据的准确性和一致性。接下来,可以使用滤波算法(如卡尔曼滤波器或粒子滤波器)来融合多个传感器的数据,并估计出最优的位置和姿态估计结果。 采用GNSS多传感器融合技术可以在很多应用场景中获得更好的定位性能。例如,在自动驾驶领域,GNSS单独定位的精度可能无法满足需求,而融合车载IMU、摄像头和雷达等传感器的数据可以提供更准确的定位和导航信息。在室内定位中,GNSS无法提供可靠的信号,而借助其他传感器(如加速度计和地磁传感器)的数据可以实现室内准确的定位。 总之,GNSS多传感器融合是一种利用多个传感器的数据来提高导航和定位性能的技术。通过优化和整合传感器数据,可以获得更可靠、准确的位置和姿态估计结果,为各种应用提供更高精度的定位服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值