Xsens传感器使用笔记

2023-10-14 04:10
文章标签 使用 笔记 传感器 xsens

本文主要是介绍Xsens传感器使用笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Xsens MTi-300系列传感器使用笔记

  • 1、引言
  • 2、传感器使用说明
  • 3、在ROS下使用
  • 4、制作端口别名
  • 5、参考文献

1、引言

IMU是移动机器人导航中比较常见的传感器。IMU有许多的品牌,我用过的是Xsens的传感器,在ROS中使用,也是比较主流的传感器。Xsens有很多的系列,MTi-100,MTi-300,MTi-700系列等,MTi-300可以测加速度和角速度,能提供的功能都包含了。MTi-700系列还带了一个GPS接口,可以速度信息。不过,我没有尝试过用GPS,虽然实验室里面也有这款设配。本文是我使用MTi-300系列IMU的笔记,为自己的工作做个记录,也为他人提供参考。

2、传感器使用说明

Xsens的传感器设置必须通过Xsens MT Manager,如信息的发布频率,需要输出哪些信息都可以设置。这个MT- Manager以前在windous下只支持win7,还要序列码,现在别的系统都支持了,而且都不用序列码了。需要在官网上下载驱动和软件,现在可能改名字不叫MT-Manager了,反正功能是不会变的。

在这里插入图片描述
用这个Manager打开是这样的,可以选择相应的选项看数据。

在这里插入图片描述点红圈,可以设置参数,具体内容得自己研究了,少改,可以改改发布频率的。
在这里插入图片描述

3、在ROS下使用

前面说了要更改传感器的设置只能通过MT Manager,在ROS下只是读取传感器数据而已。这个传感器前几年ROS的驱动包更改过了,我是看它官网的论坛的回答才明白这个东西该怎么装,一直没有时间总结,后来我看也有人写了驱动的安装过程,部分内容我借鉴了一下。官方说是支持kinetic以上的版本,indigo中我没有试过到底能不能用。我装的驱动是Xsens_mti_driver,可以看ROS官网,我用的是这个方法,亲测有效。

将MT SDK中的xsens_mti_driver文件夹复制到catkin工作区的src文件夹中。确保在文件和目录中将权限设置为o+rw。
这个xsens_mti_driver,得把第一张图中linux下的压缩文件下下来,然后运行mtsdk_linux-x##_####.#.sh,才会出现。

1.从catkin工作区构建xspublic:

pushd src/xsens_ros_mti_driver/lib/xspublic && make && popd

2.构建Xsens MTi驱动程序包:

catkin_make

3.source工作空间,这步如果你工作空间在.bashrc中设置过不运行也许:

source devel/setup.bash

4.给USB权限:

 sudo chmod 777 /dev/ttyUSB*

5.启动Xsens MTi驱动程序,显示示例(应启用方向数据):

roslaunch xsens_mti_driver display.launch

效果:

在这里插入图片描述

4、制作端口别名

为了解决每次用都要输入sudo chmod 777 /dev/ttyUSB*的麻烦,可以设置端口别名的方法来解决。绑定软件设备号,即idVendor和idProduct。

1、查看设备

xxx:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 04ca:707f Lite-On Technology Corp. 
Bus 001 Device 004: ID 2639:0013 Xsens MTi-300 AHRS
Bus 001 Device 003: ID 8087:0aaa Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

2、新建 /etc/udev/rules.d/MTi-300.rules文件:

sudo gedit MTi-300.rules

具体内容为:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="2639", ATTRS{idProduct}=="0013", MODE:="0666", GROUP:="dialout",  SYMLINK+="MTi-300"  

GROUP用来分组的,可以不用这个。这个SYMLINK+="MTi-300" 设置的就是别名,也可以设置其他名字。

3、增加当前用户对串口的默认访问权限:

$ sudo usermod -a -G dialout 用户名

4、使UDEV配置生效:(使串口的默认访问权限生效,需要重启机器)

$ sudo service udev reload
$ sudo service udev restart

或者不用上面两行命令用下面的命令,重新创建新的链接:

sudo udevadm trigger

5、如果不想重启,可以运行下面的指令:

sudo chmod 777 /dev/tty*

这样每次用就不用输入sudo chmod 777 /dev/ttyUSB*,插上去运行节点就可以用。此方法适用其他使用usb通信的硬件设备。

6、特殊情况,当有多个usb设备,且ID名称一模一样

解决方法:将硬件端口号KERNELS也绑定。
首先查看KERNELS,插上一个USB设备,使用以下命令看一下KERNELS

udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB(查找的设备号) 

或者

udevadm info --attribute-walk --name=/dev/ttyUSB(查找的设备号)

一般插上会分配ttyUSB0,就查一下这个udevadm info --attribute-walk --name=/dev/ttyUSB0请添加图片描述
有时候这个号会比较长,取前面关键几位能区别开就行。修改.rules文件。

KERNEL=="ttyUSB*", KERNELS=="2-3:1.0", ATTRS{idVendor}=="2639", ATTRS{idProduct}=="0013", MODE:="0666", GROUP:="dialout",  SYMLINK+="MTi-300"  

重复第4步,可以用这个命令查看一下映射关系。ls -l /dev |grep ttyUSB

如果硬件端口都绑定,设备启动还是不正常,查查这个别名在传感器驱动文件中是否被正确使用。

5、参考文献

【1】https://blog.csdn.net/learning_tortosie/article/details/97806633
【2】https://www.ncnynl.com/archives/201611/1090.html
【3】https://blog.csdn.net/weixin_40622974/article/details/83718129

这篇关于Xsens传感器使用笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208029

相关文章

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本