移动机器人上有两个USB串口设备,分别是激光雷达和机器人底盘,Ubuntu为这两个设备的设备名分配的设备名ttyUSB0和ttyUSB1,但是设备名与设备之间的对应关系并不是固定的,是按设备接入系统的顺序依次分配的。先插入一个设备再插另一个设备可以确定设备与设备名的关系,但每次系统启动都需要插拔设备,十分麻烦。
可以将串口映射到一个固定的设备名上,不论插入顺序如何都会讲设备映射到新的设备名上,我们只要使用新的设备名对设备进行读写操作就可以了。
查看USB端口信息
$ lsusb
第一个设备是移动机器人底盘,第二个设备是激光雷达。我们需要的是这两个设备的ID,分别是1a86:7523
和10c4:ea60
。
建立端口映射关系
- 创建base映射关系
$ sudo vim /etc/udev/rules.d/base.rules
在文件中添加如下内容:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="base"
- 创建lidar映射关系
$ sudo vim /etc/udev/rules.d/lidar.rules
在文件中添加如下内容:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", SYMLINK+="lidar"
查看映射结果
$ ll /dev | grep ttyUSB