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

2023-05-16

最近在做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改大一点,给传感器预留更多的启动时间。

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

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

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

---------------------------------------------------------------------------------------------------------------------------

补充:

有可能是没有加入组的问题,但是当时由于没有设备进行验证,所以也没有尝试上面的方法。后面跟同事修改频率跟波特率时也出现了上面的问题,所以也有可能是自己不小心修改了其中一个但是没有适配而导致的问题。

问题阐述:

1.could not find proper MT device,上位机配置的IMU的波特率与PC串口使用的波特率不一致

2.The device generates more data than the bus communication can handle(baud rate may be too low),输出的频率使用了太高的,导致数据量太大,虽然修改了波特率,但是一运行launch文件后又变成了默认的波特率(115200)

解决方案:先用MT Manager查看IMU的波特率,然后使用$ stty -a -F /dev/ttyUSB0 命令查看PC使用的波特率是否一致,不一致的话可以使用命令修改$ stty -F /dev/ttyUSB0 ispeed 921600 ospeed 921600 cs8。虽然两边都修改了波特率,但是还是会报第2个错误。后面找到了是launch文件中设备号也要设置为当前使用的端口号

---------------------------------------------------------------------------------------------------------------------------

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

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

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

$ rostopic list

 会输出以下主题:

 然后输入以下命令,查看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可以跑出数据。等后续用自己的数据标定成功再跟大家分享不成功的原因是什么。

--------------------------------------------------------------------------------------------------------------------------

后续:bag包需要录制xsens_driver.launch,如果录制了其他launch文件的,虽然也包含有imu/datade话题,但是可能数据格式不对也无法得出正确结果。我使用的是xsens_mti_driver display.launch录制的数据,所以无法得出标定结果

---------------------------------------------------------------------------------------------------------------------------

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

至此,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
# 修改code_utils功能包下sumpixel_test.cpp中 #include "backward.hpp"为 #include <code_utils/backward.hpp>
$ cd ..
# 返回到catkin_ws目录
$ catkin_make
# 编译

注:在 code_utils下面找到 sumpixel_test.cpp,修改#include "backward.hpp"为 #include <code_utils/backward.hpp>,再编译。否则报错: code_utils-master/src/sumpixel_test.cpp:2:24: fatal error: backward.hpp:No such file or directory ;
 

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话题保持一致)

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

6.开始标定

$ rosbag play -r 200 ~/Datasets/imu_xsens.bag 
# 不能循环播放bag,imu_utils程序中有时间判断,200是回放的速率,数字越大,回放越快
# 先在录制bag的终端输入上述命令,暂不执行
$ roslaunch imu_utils xsens.launch
# 打开一个终端输入上述命令,执行此命令后尽快执行bag回放的命令

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

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

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

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

其他:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定 的相关文章

随机推荐

  • 阿里云Ubuntu16.04 python升级

    Ubuntu16 04 python2 7升级python3 5 正常情况下 xff0c 你安装好ubuntu16 04版本之后 xff0c 系统会自带 python2 7版本 xff0c 如果需要下载新版本的python3 5 xff0c
  • react 脚手架 run eject 之后 打包生成map文件 体积过大

    react 脚手架 打包生成map文件 体积过大 写在前面 xff0c map文件是帮助我们查看报错的位置的 map文件由devtool属性控制 xff0c 然后全文搜索devtool 发现在webpack config js文件 150
  • 机器学习实战分享:用 Python 进行信用卡欺诈检测

    本文旨在使用 XGBoost 随机森林 KNN 逻辑回归 SVM 和决策树解决分类问题 xff0c 内容较长 xff0c 建议收藏 关注 点赞 案例简介 假设你受雇于帮助一家信用卡公司检测潜在的欺诈案件 xff0c 你的工作是确保客户不会因
  • 麻将算法之 ------ 胡牌算法

    麻将数据牌集合 span class hljs keyword private span span class hljs keyword int span cardDataArray 61 span class hljs number 0x
  • ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

    前言 xff1a 很久之前 xff0c 用TK1玩过一段时间的ROS xff0c 再加上各种硬件 Arduino 激光雷达 编码电机等 xff0c 模仿着做过Turtlebot小车 xff0c 实现了部分Turtlebot部分的功能 xff
  • 享年94岁,图灵奖得主、计算复杂性理论先驱Juris Hartmanis逝世

    7月29日 xff0c 1993年图灵奖得主 计算复杂性理论创始人之一Juris Hartmanis去世 xff0c 享年94岁 从物理学到数学 xff0c 最终深耕计算机科学领域 Hartmanis于1928年7月5日出生于拉脱维亚 xf
  • DSST目标跟踪算法

    DSST算法也是基于KCF算法改的较好的一种 DSST xff08 Accurate Scale Estimation for RobustVisual Tracking xff09 是2015年BMVC xff08 InProceedin
  • 解决workman部署到Linux环境无法启动和连接的问题(结合TP6框架)

    0 检查Linux是否满足workman的环境要求 span class token function curl span span class token parameter variable Ss span www workerman
  • 按照 STAR 法则介绍自己做过的项目

    大家好啊 xff0c 我是大田 介绍项目注意两点 xff1a 1 自己真的做过 2 逻辑表达能力 为什么推荐你用 STAR 法则说呢 xff1f STAR 法则是结构化面试中非常重要的理论 面试官通过这样的描述全面了解你的测试知识 经验 技
  • 汇总最近遇到的 Linux 面试题

    大家好啊 xff0c 我是大田 今天汇总最近小伙伴遇到的 Linux 面试题 1 你之前在公司使 linux 命令做什么 xff1f 搭建测试环境 查看后台 志 2 在之前公司 xff0c 测试环境使 的是哪个 linux 版本 xff1f
  • vio

    VIO概述 0 IMU与视觉进行比较 IMU视觉惯性测量单元利用图像的VIO六自由度IMU xff0c 陀螺仪测量角加速度 加速度计测量加速度利用图像通过特征 像素 xff08 直接法 xff09 进行位姿估计高频 gt 61 100hz
  • ZUPT的相关初步理解

    参考至https zhuanlan zhihu com p 115529319 零速修正 Zero Velocity Update ZUPT 即 xff0c 当载体处于静止状态时 xff0c 载体此时的速度为零 xff0c 利用载体中的惯性
  • 误差状态方程与雅可比矩阵

    误差状态方程 在惯性的优化中包括p v q ba bg 外参等等优化变量 预积分量由陀螺 加计的示数得到 xff0c 以及陀螺 加计的白噪声 偏置 可以先将白噪声从预积分量中剥离出来 xff0c 作为预积分量测的协方差阵 xff1b 计算预
  • java核心内容——int和Integer有什么区别?

    java核心内容 int和Integer有什么区别 xff1f 1 典型回答2 知识扩展1 理解自动装箱 拆箱2 源码分析3 原始类型线程安全4 Java 原始数据类型和引用类型局限性 1 典型回答 int 是我们常说的整形数字 xff0c
  • docker虚拟机(可显示界面)

    1 docker是什么 xff1f 官方解释是容器 xff0c 是一种轻量化的虚拟机 与virtual box等虚拟机应用相比 xff0c 个人的使用体验是 xff0c 更加的方便快捷 xff0c 适合一个应用起一个虚拟机 2 docker
  • 编译DBoW2出现:fatal error: opencv/cv.h: 没有那个文件或目录 错误

    解决方法 xff1a 将各文件中的 include lt opencv cv h gt 替换为 include lt opencv2 opencv hpp gt 即可 另外 xff0c ORB SLAM要求OpenCV 3 0 xff0c
  • 揭晓3类AI无法取代的工作,高学历竟没有优势!

    整理 朱珂欣 出品 CSDN程序人生 xff08 ID xff1a coder life xff09 上周 xff0c IBM 就打响 AI 取代潮 的第一枪 xff0c CEO Arvind Krishna 在接受彭博社采访时表示 xff
  • 嵌入式Linux书籍清单

    原文链接 xff1a 重磅推荐 嵌入式Linux书籍清单 Linux入门C语言数据结构ARM裸机Linux驱动Linux应用Shell脚本Makefile Linux入门 作为嵌入式开发人员 xff0c 我们没有必要把精力放到使用哪个Lin
  • STM32串口之环形队列接收数据

    原文链接 xff1a STM32串口之环形队列接收数据 码代码的应该学数据结构都学过队列 环形队列是队列的一种特殊形式 xff0c 应用挺广泛的 因为有太多文章关于这方面的内容 xff0c 理论知识可以看别人的 xff0c 下面写得挺好的
  • Ubuntu18下xsens IMU的驱动安装及使用imu_utils标定

    最近在做xsens IMU的标定工作 xff0c 网上资源很多很杂 xff0c 打算按自己的操作过程 细节及遇到的问题记录一下 xff0c 里面有参考的博文都附了链接 主体可参考此博文 xff1a VIO 中 IMU 的标定流程 1 3 i