ros 配置udev
显示已经链接设备
lsusb
显示挂载点
ls /dev/ttyACM* /dev/ttyUSB*
可以看到 ttyUSB0
和 ttyUSB1
对应哪一个设备不确定,因此,我们就需要一种方法来保证每次开机后唯一的设备挂载点对应一个确定的设备,这样我们的程序就可以正确操控相应的USB设备了。
到 /etc/udev/rules.d
文件夹创建一个 .rules
文件,比如叫做 car.rules
比如添加一下内容
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="666", SYMLINK+="car"
ATTRS为设备号,是lsusb看到的。MODE权限,SYMLINK挂载名为car,这样在程序调用 /dev/car
就得到实际设备,从而自己会对应ttyUSB* 。这样不管插那个口都能识别了。
弄完时候重启udev 就可以了
sudo service udev reload
sudo service udev restart
最后插上设备,看看绑定是否成功
ls -l /dev/car
设备ID相同时
使用 dmesg | grep -i usb
检测USB的情况
拔可以得到变化的USB设备详细信息,就算是设备的ID相同,那硬件的kernel值也是不同的。假设我们的目标硬件是1-3。
我们进入rules进行编辑:
KERNELS=="1-3*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",MODE:="0666", SYMLINK+="laser"
注意这里是KERNELS 不是KERNEL。可以只是追加该参数