IMU参数辨识及标定

本文详细介绍了IMU(惯性测量单元)的标定过程,涉及参数辨识、零偏、标度因数和安装误差的分析,以及利用imu_utils和kalibr_allan工具进行随机误差标定的方法。通过Allan方差评估噪声和随机游走,提供了一套完整的IMU参数标定流程和注意事项。
摘要由CSDN通过智能技术生成

IMU参数辨识及标定

、标定参数分析

        标定的本质是参数辨识。首先明确哪些参数可辨识,其次弄清怎样辨识。

        参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。

  • IMU需要标定的参数主要是确定性误差随机误差,确定性误差主要标定biasscalemisalignment,随机误差主要标定noiserandom walkkalibr_allan 是用于求取随机误差的开源工具。

可以中英对照 

1.参数项

1) 零偏

        这个比较好理解,就是输出比输入多了一个常值误差。

        需要注意的是,通过Allan方差分析,得到了器件的量化噪声、角度随机游走、角速率随机游走、零偏不稳定性噪声、速率斜坡,仔细看,这些都是对零偏质量的分析,也可以直观的理解为零偏的波动和漂移程度,这里面并没有分析零偏本身的大小,而这个才是我们标定里要去估计的那个常值误差。

                加速度计的零偏在这里表示为

        陀螺仪的零偏在这里表示为

2) 标度因数误差

        也叫刻度因数误差。假设器件输出的是标准单位角速度(rad/s),那么输出和输入的比就是1。如果不是,就得需要标定,修正这个比例。

        加速度计的标度因数这里表示如下:

        陀螺仪的标度因数这里表示为:

  1. 修改配置文件

        进入之前编译好的imu_utils文件夹下xxxx.launch文件(自己添加的)查看相关设置:

3) 安装误差

        这里面b坐标系是正交的imu坐标系,g坐标系的三个轴是分别对应三个陀螺仪。由于加工工艺原因,陀螺仪的三个轴并不正交,和我们导航中使用的正交轴不重合。我们需要仔细想一想,这个安装误差怎么在陀螺输出中体现出来的,因为我们标定时只能采集到陀螺的输出,而无法直接去测量安装误差。理论上,在陀螺坐标轴和b系重合的情况下,我们沿b系某一个坐标轴旋转,那么其他两个轴是不会有角速度输出的,而有了安装误差以后,便有了输出,据此,我们就可以建立输出和误差之间的关系了。以图中一项误差为例,Sgxy表示的就是y轴的单位输入,在x陀螺上由安装误差造成的输出。由此,我们可以把所有的安装误差都成矩阵形式,即:

        加速度计的安装误差原理和它一样,直接给出公式。

        这样一共有12项安装误差参数。有的时候,可以简化为9项,具体什么情况下简化,以及怎样简化,我们会在本文的后面讲。

2)启动launch文件

source devel/setup.bash

roslaunch imu_utils xxxx.launch

2. 误差模型

        通过上面的参数分析,我们已经可以很容易地写出误差模型了。

        陀螺仪:

        其中W是陀螺输出,ω是各坐标轴真实输入。该公式的展开形式为

        同理,可以得到加速度计的展开形式为:

二、利用imu_utils 标定IMU参数

        imu_utils是用于求取IMU随机误差的开源工具。

1. 下载imu_utils和code_utils

imu_utils下载地址为:GitHub - gaowenliang/imu_utils: A ROS package tool to analyze the IMU performance.
code_utils下载地址为:GitHub - gaowenliang/code_utils: my code utils

注意:

1、全局安装ceres库,code_imu依赖ceres

2、不要同时把imu_utilscode_utils一起放到src下进行编译。由于imu_utils依赖code_utils,所以先把code_utils放在工作空间的src下面,进行编译。然后再将imu_utils放到src下面,再编译。

2. 安装依赖并编译

sudo apt-get install libdw-dev

 2.1 编译code_utils
2.2 安装Ceres

Ubuntu20.04安装Ceres1.14.0 - 知乎

2.3 构建工作空间编译code_utils

问题:

sumpixel_test.cpp文件

问题1修改#include "backward.hpp"为 #include“code_utils/backward.hpp”

问题2

解决:添加头文件:#include"opencv2/imgcodecs/legacy/constants_c.h"

问题3

解决:V_MINMAX 改为 NORM_MINMAX

mat_io_test.cpp文件

问题:

解决:

opencv4.x以上,有些宏,API名字改了,需要改为新的:

CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGED

CV_LOAD_IMAGE_GRAYSCALE 改为 cv::IMREAD_GRAYSCALE

CV_LOAD_IMAGE_COLOR 改为 cv::IMREAD_COLOR

CV_LOAD_IMAGE_ANYDEPTH 改为 cv::IMREAD_ANYDEPTH

3 imu_utils编译

文件结构:

        将 ROS 包imu_utils放入code_utils的工作区src下面进行编译使用catkin_make;进行构建

        CMakeLists.txt文件下

        代码修改如下:

修改set(CMAKE_CXX_FLAGS "-std=c++11")为set(CMAKE_CXX_FLAGS "-std=c++14")

4 播放bag文件,进行离线标定IMU(使用imu_utils计算allan方差)

4.1 播放rosbag

rosbag play -r 200 imu.bag               // 200 倍速播放rosbag

4.2 运行标定文件

source ./devel/setup.bash

roslaunch imu_utils gh5a5s1.launch

注意:等rosbag播放两秒左右在启动launch文件,因为在IMU前几分钟录制的数据误差比较大。

4.3 标定结果

        数据包播放结束之后,在/imu_utils/data/这个文件夹下会出现一系列的参数文件,如上图所示。

        打开xxxx_imu_param.yaml这个文件,会看到计算出来的噪声和随机游走的系数值,如下所示:

        虽然我们得到了标定结果,但这个标定结果并不是我们最终的结果。现在得到的结果的单位是rad/s和m/s^2,噪声是个能量概念或者说功率概念,我们还要把标定得到的参数归一化到每单位sqrt(hz)尺度下,即/aqrt(Hz)。

        加速度allan方差图

        加速度每个轴的allan方差

        陀螺的allan方差

        陀螺每个轴的allan方差

有时候播放完数据,程序没有任何反映。试试300rete 播放。

三、 利用kalibr_allan标定IMU随机误差

        该方法需要安装Matlab,才能编译kalibr_allan。

1. 下载kalibr_allan并编译

        问题:

        在/kalibr_allan-master/bagconvert/cmake目录下找到FindMatlab.cmake文件,更改matlab的地址。

find_program(MATLAB_EXE_PATH matlab

    PATHS /usr/local/MATLAB/R2018a/bin)

        把 /usr/local/MATLAB/R2018a/bin更换成自己matlab的地址

        修改之后,删除build和dev文件夹,再次catkin_make

2. 生成mat文件

        rosrun bagconvert bagconvert bag名字 topic名字

3. matlab计算IMU误差

        利用/kalibr_allan/matlab/SCRIPT_allan_matparallel.m生成误差文件。

生成误差的.m文件:

注意:修改路径,最好改为绝对路径

/kalibr_allan/matlab/SCRIPT_allan_matparallel.m

4. 绘制allan方差曲线

4.1 运行/kalibr_allan/matlab/SCRIPT_process_results.m文件

修改路径mat_path的路径修改为步骤3中得到的.mat文件

4.2 标定结果

accelerometer_noise_density = 0.00102011

accelerometer_random_walk   = 0.00003924

gyroscope_noise_density     = 0.00001248

gyroscope_random_walk       = NaN

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: IMU(惯性测量单元)系统级标定是一种用于提高IMU系统性能的重要技术。其原理是利用已知真实姿态进行标定,从而获得IMU传感器的误差参数,进而减小系统误差,提高测量精度。 IMU系统级标定通常包括陀螺仪标定和加速度计标定。陀螺仪标定主要针对陀螺仪的零偏、比例因子误差和常值漂移等进行校正。加速度计标定主要针对加速度计的偏差、非正交性和比例因素误差等进行校正。 在IMU系统级标定中,通常采用静态和动态标定相结合的方法。静态标定包括放置IMU在固定位置的静态静止过程,通过测量不同位置下的加速度和角速度,推导出误差参数。动态标定则是通过在复杂运动状态下进行标定,例如旋转、线性运动等。这样可以更全面地了解IMU系统在不同姿态和运动下的性能。 在具体的标定过程中,需要使用精密的测量设备(如全息光学陀螺仪或GPS),以获得高精度的真实姿态信息作为参考。通过比较IMU测量结果与真实姿态之间的差距,即可得到误差参数。 IMU系统级标定的方法还包括静态标定和动态标定两种。静态标定主要利用IMU放置静止状态下的重力和正东向进行校正,动态标定则在运动状态下通过转动平台等方式进行校正。 总之,IMU系统级标定通过准确的姿态信息参考,结合静态和动态标定方法,来校正IMU系统的误差参数,从而提高系统的测量精度和准确性。 ### 回答2: IMU系统级标定是指对惯性测量单元系统(IMU)进行标定,以提高其测量精度和准确性。IMU是由加速度计和陀螺仪组成的传感器,用于测量物体的线性加速度和角速度。 IMU系统级标定的原理是通过在已知场景下对IMU进行一系列数据采集和处理,建立IMU模型,从而减小或消除传感器产生的误差。标定过程需要包括加速度计标定和陀螺仪标定。 加速度计标定是通过将IMU固定在静止的平面上,测量静止状态下的加速度,以得到加速度计的零偏和尺度因子误差。在标定时,需要将IMU在不同方向上旋转,以获得不同静止状态下的加速度数据,最后通过数学模型进行误差校正。 陀螺仪标定是通过将IMU固定在旋转的平面上,测量旋转状态下的角速度,以得到陀螺仪的零偏和尺度因子误差。标定时,需要对IMU进行不同方向上的旋转,以获得旋转状态下的角速度数据,最后通过数学模型进行误差校正。 标定结果可以用于预处理IMU测量数据,通过将之前获得的误差校正数据与实际测量数据相结合,提高IMU系统的测量精度和准确性。IMU系统级标定在无人驾驶、航空航天、机器人等领域具有广泛的应用。 ### 回答3: IMU系统级标定是指对惯性测量单元(IMU)中的传感器进行校准,以消除其本身存在的误差,从而提高测量的准确性和可靠性。IMU通常由加速度计和陀螺仪组成,通过对这些传感器进行标定,可以得到更准确的输出结果。 IMU系统级标定的原理主要包括以下几个方面: 1. 误差模型:IMU的加速度计和陀螺仪都存在着固有的误差,比如偏置、尺度因子误差、非正交性等。通过建立适当的误差模型,可以描述传感器的误差特性。 2. 多点标定IMU系统级标定通常采用多点标定的方法,即在不同的姿态和运动状态下采集传感器数据。通过收集大量的标定数据,可以获得传感器在各种条件下的准确输出。 3. 数据处理:收集到的标定数据需要经过一系列的数据处理步骤,包括数据预处理、误差估计和校准参数计算等。其中,误差估计可以采用最小二乘法等统计方法进行。 IMU系统级标定的方法有多种,常见的包括以下几种: 1. 静态标定:将IMU固定在静止状态下,采集加速度计和陀螺仪的测量值,并通过计算获得标定参数。这种方法适用于校准偏置和尺度因子等静态误差。 2. 旋转法标定:将IMU放置在旋转台上,通过控制旋转台进行不同姿态的旋转,采集传感器数据,并通过计算得到标定参数。这种方法适用于校准非正交性和其它动态误差。 3. 外部测量法标定:将IMU与外部高精度传感器(如GPS或视觉传感器)进行组合使用,通过比对两者的数据,得到IMU标定参数。这种方法的精度较高,适用于需要更精确标定结果的情况。 总之,IMU系统级标定是通过收集大量传感器数据,并对其进行处理和计算,以消除IMU系统中的各种误差,提高测量的准确性和稳定性。具体的标定方法可以根据实际需求和条件选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值