一. IMU误差标定

1. 安装

需要安装两个工具:imu_utils和code_utils

1.1 安装依赖项

sudo apt-get install libdw-dev

imu_utils工具还需要ceres和eigen,本人已预装,具体安装步骤可以自行上网查阅。

1.2 安装code_utils

这个一定要先安装编译,不然会报错

cd ..catkin/src
git clone https://github.com/gaowenliang/code_utils 
cd ..
catkin_make #编译这个空间

运行这个步骤会报错,找不到backward.hpp这个头文件,有三种解决方案,本人使用的是第一种方案:

  • 方案一:
    把src/code_utils/CMakeList.txt中,添加路径:include_directories(“include/code_utils”
  • 方案二:
    把src/code_utils/src/sumpixel_test.cpp中的#include "backward.hpp"改为#include “code_utils/backward.hpp”
  • 方案三:
    把src/code_utils/include/backward.hpp文件扔到src/code_utils/src中

1.3 安装imu_utils

cd ..catkin/src
git clone https://github.com/gaowenliang/imu_utils
cd ..
catkin_make #编译imu_utils

2 录制数据

使用rosbag record命令录制imu的数据,录制过程中,保持imu静止2小时以上。命令类似于下例:

rosbag record /mynteye/imu/data_raw -O imu.bag

3 标定imu

标定的命令文件在src/imu_utils/launch下,命令如下:

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/imu0"/>
        <param name="imu_name" type="string" value= "BMI160"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "120"/>
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>
  • 参数说明:
  • imu_topic:表示自己录制的imu话题名字
  • imu_name:自己的imu名字,可以随便取,最后标定数据的结果也会根据这个保存。
  • data_save_path:表示存放的目录,默认在imu_utils/data下,找到相应的yaml即可查看标定的结果。
  • max_time_min:取数据的时长,一般默认120分钟,程序会在最大时间截断读取数据。

运行完上面的launch后,播放自己的录制bag包:rosbag play -r 200 imu-.bag (200倍速度发布)

  • yaml文件中的数据为偏置稳定性和白噪声:

在这里插入图片描述

4 绘制allan方差曲线

在/catkin_ws/src/imu_utils/scripts文件夹下,有一些matlab的脚本,用于绘制allan方差曲线。需要修改data文件存放的路径和名字。

allan方差曲线查看方法,可以参考下面这篇文章:

https://blog.csdn.net/waihekor/article/details/107335430

二. IMU姿态解算(imu_tools)

互补滤波器的理论基础来自于论文《Keeping a Good Attitude: A Quaternion-Based Orientation Filter for IMUs and MARGs》,它将陀螺仪数据与加速度计和磁场读数融合在一起,以获得四元数形式的方向估计。该算法因其低计算量,鲁棒性和快速收敛性而在机载情况下很好的被应用。

imu_tools官方介绍地址:http://wiki.ros.org/imu_tools

github源代码地址:https://github.com/ccny-ros-pkg/imu_tools

它的参数配置如下:

<!-- ComplementaryFilter launch file -->
<launch>
  #### Complementary filter
  <node pkg="imu_complementary_filter" type="complementary_filter_node"
      name="complementary_filter_gain_node" output="screen">
    <param name="do_bias_estimation" value="true"/>
    <param name="do_adaptive_gain" value="true"/>
    <param name="use_mag" value="false"/>
    <param name="gain_acc" value="0.01"/>
    <param name="gain_mag" value="0.01"/>
    <param name="publish_debug_topics" value="false"/>
    <param name="publish_tf" value="true"/>
  </node>
</launch>

可以选择加速度计或者磁力计的数据进行计算。打开rviz即可查看相应的姿态结算结果。其中rviz插件rviz_imu_plugin,可显示sensor_msgs::Imu消息。打开imu话题消息可查看角度信息。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐