1、根据设备ID绑定
方法原理:根据设备使用的串口芯片的型号来进行绑定
好处:不需要固定设备插入的USB口,每次拔插到计算机上的任意USB口都可以识别为同一个设备
坏处:如果计算机中有多个设备并且使用的是同一款串口芯片就会混乱,因为设备ID都是一样的
1.1 查看ID
查看需要绑定的设备的idVendor
和idpProduct
,我这里是绑定一个陀螺仪,首先通过usb把设备连接到电脑
$ lsusb
可以看到这块陀螺仪使用的串口芯片是CP210x,设备ID是10c4:ea60
1.2 编写USB规则文件
首先进入到我们usb设备规则存放的目录下
$ cd /etc/udev/rules.d
可以看到这里存放着各种规则,我们新建一个USB端口映射规则
扫描二维码关注公众号,回复:
15413751 查看本文章
$ sudo vim com_imu.rules
写入如下内容
1.3 查看绑定结果
查看一下我们的外设
$ ls /dev/tty*
可以看到没有起效,因为我们还需要重新载入一下我们的规则才能实现端口映射
$ sudo udevadm trigger
再次查看设备
可以看到设备已经绑定成功了,之后不管设备插入哪个USB口最后都会被识别为 /dev/IMU0
2、 根据电脑USB口绑定
实现原理:根据电脑自身的USB硬件地址进行绑定
好处:可以解决设备使用同一款串口芯片导致ID相同的问题
坏处:对应的设备必须每次都要插入同一个USB端口
2.1 找到USB端口名称
先拔掉设备,输入命令
$ ls /dev/tty*
插入设备,输入命令
$ ls /dev/tty*
可以看到当前设备插入的USB端口为 /dev/ttyUSB0
, 查看这个端口的信息
$ udevadm info --attribute-walk --name=/dev/ttyUSB0
可以看到现在使用的端口号为“1-4.3:1.0”
2.2 编写绑定规则
同样地在/etc/udev/rules.d/
目录下新建一个绑定规则
$ sudo vim /etc/udev/rules.d/ttyUSB_Link_imu.rules
写入如下内容:
保存并重启电脑,在终端中查看是否绑定成功
可以看到已经绑定成功,后面我们尝试在ROS里面把IMU数据读出来。
3、 通过ROS读数据
我这里已经编译好了IMU的功能包,直接roslaunch启动IMU节点,通过rostopic list
查看当前话题
可以看到已经有/imu话题了,下面我们看看话题的数据
可以看到一帧数据中包含了:姿态角、加速度、角速度