关于LOAM中IMU去除重力加速度的个人理解

引言:最近把LOAM系列的文章和代码都看了一遍,最开始看的时候只知道LOAM中在IMU的回调函数中对IMU进行了重力加速度对线加速度linear_acceleration影响的消除,后面回过头结合一些博客再来看的时候发现一直不明白为什么最后的RzRyRx旋转矩阵要进行转置以后再与重力加速度相乘,我最开始的时候认为不需要转置,但是发现手推了一遍,如若不转置的话就和源代码对不上了,搞了两天终于有点自己的理解了,不知道对不对,写出来和大家探讨一下。

前提:大部分IMU输出的线加速度linear_acceleration.xyz都是受到重力加速度的影响的,这不能代表车体或者机器人相对世界坐标系W的实际线加速度,需要将重力加速度对IMU影响给消除才能得到世界坐标系下车体的实际加速度。

自己的理解:首先我们知道,重力加速度是在世界坐标系下的,表示为[0,0,g]T(T代表转置),我们要将世界坐标系下的重力加速度分别投影到IMU坐标系下的三个轴上得到重力加速度在IMU坐标轴上的分量,然后才能用测量值减去这个分量得到实际值。现在问题就变成了如何得到IMU坐标系和世界坐标系的旋转矩阵,我们只有知道了这个旋转矩阵才能进行投影

这个时候我们可以通过IMU测量数据中的四元数orientation,通过四元数计算得到相对于世界坐标系的旋转角RPY,此时我们要注意啊,这里的RPY是IMU相对于世界坐标系的RPY,由于在LOAM中,IMU坐标系为前(X)->左(Y)->上(Z),那么Roll角就对应X轴,Pitch角就对应Y轴,Yaw角就对应Z轴。此时我们遵循常规欧拉角物理定义,按照实际意义的Yaw、Pitch、Roll角进行旋转,可以得到IMU相对于世界坐标系的旋转矩阵R_iw(即IMU坐标系到世界坐标系的转换):

R_iw = Rz * Ry * Rx

但是我们回过头去看,我们要做的是将世界坐标系下的重力加速度投影到IMU坐标系,就是要得到世界坐标系相对于IMU的旋转矩阵R_wi,而R_wi正好就是R_iw的转置,即为[Rz * Ry * Rx]T

Rz,Ry,Rx如下所示:

就可以得到R_wi = [Rz * Ry * Rx]T如下:

得到R_wi以后就可以让测量值减去R_wi * [0,0,g]的结果,就可以得到实际的线加速度了。

        float accX = imuIn->linear_acceleration.y - sin(roll) * cos(pitch) * 9.81;
        float accY = imuIn->linear_acceleration.z - cos(roll) * cos(pitch) * 9.81;
        float accZ = imuIn->linear_acceleration.x + sin(pitch) * 9.81;

大家有不懂的上面哪一步的,或者觉得我哪一步讲错了的可以直接发在评论区,我们一起来讨论,我肯定会回复的!感谢大家!!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要将IMU信息添加到LEGO-LOAM,需要进行以下步骤: 1. 首先,需要在代码添加IMU数据的读取和处理功能。可以使用ROSIMU消息类型来读取IMU数据,并将其转换为适合LEGO-LOAM使用的格式。 2. 接下来,需要将IMU数据与激光雷达数据进行同步。可以使用时间戳来将两者同步,确保它们在同一时刻被处理。 3. 最后,需要将IMU数据与激光雷达数据进行融合,以提高定位和建图的精度。可以使用卡尔曼滤波或扩展卡尔曼滤波等技术来实现融合。 总之,将IMU信息添加到LEGO-LOAM需要进行一些代码修改和算法调整,以确保IMU数据能够与激光雷达数据有效地融合。 ### 回答2: LEGO-LOAM是一个基于LEGO Mindstorms EV3硬件平台和三维激光雷达(3D Lidar)的开源SLAM系统。在实际的应用场景,通常需要加入IMU(惯性测量单元)信息来提高其定位精度和鲁棒性。那么,LEGO-LOAM如何加入IMU信息呢? 在LEGO-LOAMIMU信息是通过IMU传感器进行获取的。具体来说,IMU传感器能够测量设备的加速度和角速度信息,通过对这些信息进行积分可以获取设备的位置和姿态信息。因此,将IMU传感器的输出信息与3D Lidar的测量数据进行融合,便可以提高LEGO-LOAM系统的定位精度和鲁棒性。 在LEGO-LOAM,可以通过以下步骤将IMU信息加入到系统: 1.将IMU传感器与LEGO Mindstorms EV3设备相连接,通过EV3软件获取IMU传感器的输出数据。可以使用EV3DEV系统配合Python命令行工具对IMU传感器进行操作。 2.利用IMU传感器获取到设备的加速度和角速度信息,并进行积分得到设备的位置和姿态信息。 3.通过将IMU信息与3D Lidar测量数据进行融合,得到更可靠和精准的定位信息。 4.在代码实现,可以运用卡尔曼滤波等算法进行IMU信息的融合和滤波,进一步提高系统的精度和稳定性。 总之,在LEGO-LOAM系统加入IMU信息,能够显著提高系统的定位精度和鲁棒性,为实际的应用场景带来更多便利和价值。 ### 回答3: LEGO-LOAM是一种基于激光雷达的无人驾驶系统,它利用点云数据进行建图和定位。但是,对于具有运动状态的无人车辆而言,仅仅使用激光雷达并不能很好地实现建图和定位。因此,LEGO-LOAM需要结合IMU(惯性测量单元)的信息。 惯性测量单元(IMU)是一种能够测量物体姿态和运动状态的仪器。它通常包括加速度计和陀螺仪。加速度计可以测量物体的加速度,从而可以得到物体的姿态信息。而陀螺仪可以测量物体的角速度,从而可以得到物体的旋转信息。 在LEGO-LOAM,可以通过将IMU的信息加入激光雷达数据,使得无人车辆能够更准确地进行建图和定位。 具体来讲,首先需要读取IMU的数据,并将其转换为IMU坐标系下的加速度和角速度信息。然后,需要将IMU坐标系和激光雷达坐标系之间的关系进行校准,从而得到准确的坐标系转换矩阵。最后,将转换后的IMU信息与激光雷达数据进行融合,从而得到更加准确的点云数据,进而进行建图和定位。 总的来说,加入IMU信息可以提高LEGO-LOAM的定位精度和建图效果,使得无人车辆能够更加准确和稳定地进行自主导航和控制。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值