标题# Ubuntu系统下多传感器输入冲突,USB改串口别名
雷达IMU底盘一起启动就报错 每个单独启动都可以 那你大概率是串口冲突啦
查询各端口信息
这里强烈建议每次只插一个设备方便我们查询
udevadm info --attribute-walk --name=/dev/ttyUSB0
在这里会显示该串口的一些信息,我们主要关注带注释的部分
ATTRS{devpath}=="2.3"
ATTRS{idProduct}=="ea60" #设备id
ATTRS{idVendor}=="10c4" #供应商id
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Silicon Labs"
ATTRS{maxchild}=="0"
ATTRS{product}=="CP2102N USB to UART Bridge Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="9c1d818b48aeeb119d082897637728c5" #序列号
串口绑定别名
接着新建一个.sh文件
touch test.sh
文件内容如下,在管理设备节点内添加一个设备,并为该设备创建一个别名,然后重启设备端口
#!/bin/bash
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{serial}=="9c1d818b48aeeb119d082897637728c5", MODE:="0666", SYMLINK+="ydlidar"' >/etc/udev/rules.d/ydlidar.rules
service udev reload
sleep 2
service udev restart
运行test.sh
chmod +x test.sh
./test.sh
MODE:=“0666”:定义了创建的设备节点的权限,对所有用户都具有读写权限。
SYMLINK+=“ydlidar”:创建了一个串口别名,在程序里调用雷达直接用
serialPort = "/dev/ydlidar";
再也不用担心它今天是ttyUSB0,明天是ttyUSB1了