网站制作深,网络公司网站建,建设银行资讯网站,东莞建设网问题描述#xff1a; 自己的移动机器人在为激光雷达和IMU配置动态指定的端口时#xff0c;发现激光雷达和深度相机配置的 idVendor 和 idProduct 相同#xff0c;但是两个设备都具有不同的ttyUSB号#xff0c;如下图所示 idVendor#xff1a;代表着设备的生产商ID,由USB设… 问题描述 自己的移动机器人在为激光雷达和IMU配置动态指定的端口时发现激光雷达和深度相机配置的 idVendor 和 idProduct 相同但是两个设备都具有不同的ttyUSB号如下图所示 idVendor代表着设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请。idProduct代表着该生产商生产的产品编号同一厂商下的不同idProduct代表着该公司不同的产品系列。 解决方法 出现此问题的原因是两个串口芯片都是CP2102……芯片ID号都一致。但是可以通过查询USB口的具体信息发现一个地方可以区分开那就是端口路径这个端口就是我们字面的意思不同的USB的插口 1、使用如下 使用如下的指令分别查询ttyUSB0和ttyUSB1的端口具体信息 1查询 USB0的具体信息其中主要关注 ATTR{devpath}
# 查询 USB0 的信息
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 查询 USB1 的具体信息其中主要关注 ATTR{devpath}
# 查询 USB1 的信息
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB1) 可以看出在Ubuntuh中可以通过 ATTR{devpath} 的不同来对两个设备进行区别。需要记住这两个端口路径号在下面的规则设定中需要使用这个编号。
2、修改IMU和激光雷达的端口配置规则
1激光雷达的规则修改 # 这里的 ATTRS{devpath}2 对应于刚刚上面查询 ttyUSB1 的信息因为查询时激光雷达对应 ttyUSB1 端口 KERNELttyUSB*, ATTRS{idVendor}10c4, ATTRS{idProduct}ea60,ATTRS{devpath}2, MODE:0777, SYMLINKlaser2IMU的规则修改 # 这里的 ATTRS{devpath}3 对应于刚刚上面查询 ttyUSB0 的信息因为查询时激光雷达对应 ttyUSB0 端口 KERNELttyUSB*, ATTRS{idVendor}10c4, ATTRS{idProduct}ea60,ATTRS{devpath}3, MODE:0777, SYMLINKIMU3、验证配置结果
将上述的两个配置完成后重新执行上述修改的规则然后将Ubuntu系统重启或者重新拔插后使用如下指令即可查询到配置结果即可看到设备分别指向其所在的ttyUSB端口。
ll /dev/ | grep ttyUSB*
1把两个设备插在刚开始查询的端口可以看到如下效果 2我再调转下插接先后顺序把两个设备调换接口 此时便可以不管两个设备插入到主机上的先后顺序了规则都会映射到对应的端口上。 只是此处需要注意的是两个设备的端口相当于刚刚在配置时已经锁定便不能插接其他端口插接其他端口就不能找到此设备了。 参考博客 【ROS学习】修改串口的别名_ros的串口号会变-CSDN博客