Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

最近在做xsens IMU的标定工作,网上资源很多很杂,打算按自己的操作过程、细节及遇到的问题记录一下,里面有参考的博文都附了链接。主体可参考此博文:VIO 中 IMU 的标定流程 (1/3) – imu_utils 使用备忘_勤能补拙的编程备忘录-CSDN博客_imu_utils标定

目录

IMU的驱动

bag录制

imu_utils标定工具

其他:

IMU的驱动

注:以下1、2、3、4步可以在一个终端中完成

1.驱动安装:

$ sudo apt-get install ros-melodic-xsens-driver

驱动安装好之后输入命令:

$ roscd xsens_driver/launch/
$ ls

launch目录下有一个文件 xsens_driver.launch,打开查看文件内容,输入命令:

$ sudo gedit xsens_driver.launch

如下,可以适当将 timeout default改大一点,给传感器预留更多的启动时间。

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

2.接入xsens传感器,先查看端口号(我使用的是ttyUSB0,如果使用的是其他的端口则修改为对应的端口号就可以了):

$ ls /dev/ttyUSB0

然后会输出 /dev/ttyUSB0,则表示连接正确,串口已被识别。

3.修改访问MTi设备的权限,若USB状态权限不够,否则无法读取传感器的信息:

$ sudo chmod 777 /dev/ttyUSB0

注意:每次重启或者重新连接IMU都需要配置,否则无法识别到IMU。或者可以将此端口号改为默认执行

4.启动xsens传感器:

$ roslaunch xsens_driver xsens_driver.launch

不知道是不是依赖没装好,运行上面命令时会报以下错误:

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

查找资料,有博主说Fatal: could not find proper MT device是因为没有给端口设置权限,如果我是先执行了前面第2、3步的话,按道理来说不会有这个问题。后面找到了一篇博文:ROS kinetic Xsens传感器(MTI-G-710)驱动安装_qq_34911636的博客-CSDN博客

重新运行上面第4步:$ roslaunch xsens_driver xsens_driver.launch,可以获取到设备的数据。

传感器启动成功,暂时不要关掉当前的终端

5.查看传感器启动后的主题,重新开启一个终端

$ rostopic list

会输出以下主题:

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

然后输入以下命令,查看IMU输出的数据

$ rostopic echo /imu/data

以上两个终端可以暂时不用关闭

bag录制

IMU驱动安装好之后,且能正常启动,可以先录制好bag为后面用imu_utils标定作准备。

在存放bag的路径下打开新的终端:(可根据自己需要命名bag名字,当前只录制/imu/data的数据即可,rosbag record命令的使用参考:ROS 中 rosbag 相关命令总结 – 简书

$  rosbag record -o /imu/data test_imu

IMU静止不动,录制两个小时以上,录制完毕后 ctrl + C停止即可。录制两个小时跟imu_utils脚本的设置有关,官网也是建议最好录制两个小时以上。当前我自己录制的bag没有成功标定过,用网上下载的bag可以跑出数据。等后续用自己的数据标定成功再跟大家分享不成功的原因是什么。

当前终端也可以先不关闭,后面还需要用来回放刚刚录制的数据。

至此,IMU的驱动已安装完毕且为后续用imu_utils标定录制了数据。

imu_utils标定工具

1.先安装依赖:

$ sudo apt-get install libdw-dev

2.全局安装ceres

由于code_utils 依赖 ceres,imu_utils依赖code_utils,所以先装ceres,可参考:Ubuntu:安装Ceres_SSS_369-CSDN博客_linux安装ceres 进行安装。里面步骤很详细,而且安装不会出什么问题,所以就不在此赘述了。

3.创建ros工作空间,并初始化工作空间:

可参考ROS学习–第3篇:ROS基础—创建工作空间_BIT王大东-CSDN博客_ros创建工作空间

$ mkdir -p ~/catkin_ws/src

3.下载code_utils

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

$ cd catkin_ws/src
进入到src目录
$ git clone https://github.com/gaowenliang/code_utils.git
&#x4FEE;&#x6539;code_utils&#x529F;&#x80FD;&#x5305;&#x4E0B;sumpixel_test.cpp&#x4E2D; #include "backward.hpp"&#x4E3A; #include <code_utils backward.hpp>
$ cd ..

&#x8FD4;&#x56DE;&#x5230;catkin_ws&#x76EE;&#x5F55;
$ catkin_make
&#x7F16;&#x8BD1;
</code_utils>

注:在 code_utils下面找到 sumpixel_test.cpp,修改#include “backward.hpp”为 #include

4.下载imu_utils

$ cd catkin_vio/src
$ git clone https://github.com/gaowenliang/imu_utils.git
$ cd ..

$ catkin_make

5.查看imu_utils下的xsens.launch文件(也可以使用其他launch文件,但是话题要跟前面录制的的bag话题保持一致)

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

前面录制两个小时以上的数据就跟这个launch文件有关,需要注意标定的时长设置要小于bag的录制时长,即 max_time_min的值。

6.开始标定

$ rosbag play -r 200 ~/Datasets/imu_xsens.bag
&#x4E0D;&#x80FD;&#x5FAA;&#x73AF;&#x64AD;&#x653E;bag&#xFF0C;imu_utils&#x7A0B;&#x5E8F;&#x4E2D;&#x6709;&#x65F6;&#x95F4;&#x5224;&#x65AD;&#xFF0C;200&#x662F;&#x56DE;&#x653E;&#x7684;&#x901F;&#x7387;&#xFF0C;&#x6570;&#x5B57;&#x8D8A;&#x5927;&#xFF0C;&#x56DE;&#x653E;&#x8D8A;&#x5FEB;
&#x5148;&#x5728;&#x5F55;&#x5236;bag&#x7684;&#x7EC8;&#x7AEF;&#x8F93;&#x5165;&#x4E0A;&#x8FF0;&#x547D;&#x4EE4;&#xFF0C;&#x6682;&#x4E0D;&#x6267;&#x884C;
$ roslaunch imu_utils xsens.launch
&#x6253;&#x5F00;&#x4E00;&#x4E2A;&#x7EC8;&#x7AEF;&#x8F93;&#x5165;&#x4E0A;&#x8FF0;&#x547D;&#x4EE4;&#xFF0C;&#x6267;&#x884C;&#x6B64;&#x547D;&#x4EE4;&#x540E;&#x5C3D;&#x5FEB;&#x6267;&#x884C;bag&#x56DE;&#x653E;&#x7684;&#x547D;&#x4EE4;

bag包加速回放完毕后,执行 launch的窗口仍然会显示 <strong>wait for imu data</strong>.,等待一段时间计算,计算完毕后会显示计算结果。显示 done之后,在 catkin_ws/src/imu_utils/data这个文件夹下会出现一系列的 data文件,查看 xsens_imu_param.yaml,会看到计算出来的噪声和零偏的系数值。

如果话题对不上或者录的数据包有问题,会一直卡在这里,无法得出标定的结果, xsens_imu_param.yaml文件的值全是0。

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

如果标定成功,会得到本次标定的噪声和零偏的系数值(不为0)。

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

得到噪声值和零偏值,用测量值减去这个噪声和零偏就是理论上的真值了,可以减少后续计算的误差。

其他:

ROS运行roslaunch报错RLException: [turtlebot3_fake.launch] is neither a launch file in package [turtlebot3_fake] nor is [turtlebot3_fake] a launch file name

解决方案:错误原因为环境变量设置有问题,运行source后再运行roslaunch

$ source ~/catkin_ws/devel/setup.bash

Original: https://blog.csdn.net/weixin_38296260/article/details/122533307
Author: KingL_wu
Title: Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/559262/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球