机械臂与摄像头设备文件绑定
在Linux中,默认情况下:不同的设备建立的设备文件名称,会取决于上电的顺序,而不是与物理硬件绑定。
这给实际部署应用带来不便。
比如同一个机械臂的串口,连上电脑后可能是 /dev/ttyACM0,也可能是 /dev/ttyACM1。
1. 串口绑定
目标:希望机械臂的端口号与物理硬件绑定下来,避免重复查看端口号。
比如,同一个机械臂的串口,连上电脑后,我们希望他固定是 /dev/so101_follower 或 /dev/so101_leader 这样的。
原理:将序列号与文件序号的映射规则写入设备rules,保证每次机械臂上电的顺序不一样也可以绑定到正确的端口ID。
配置步骤如下:
(1) 连接机械臂的驱动板的 TypeC 到电脑,输入如下指令:
Bash
udevadm info -a -n /dev/ttyACM0 | grep serial将输出类似ID号:
Bash
ATTRS{serial}=="57FB083124"
ATTRS{serial}=="3610000.usb"(2) 将输出的编码值写入 udev 规则文件
Bash
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d3", ATTRS{serial}=="57FB083124", MODE="0777", SYMLINK+="so101_follower_left"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d3", ATTRS{serial}=="57FB083125", MODE="0777", SYMLINK+="so101_leader_left"(3) 将规则文件部署到系统目录
Bash
sudo cp lerobot/examples/99-so101-serial.rules /etc/udev/rules.d/
sudo chmod +x /etc/udev/rules.d/99_so101_serial.rules
sudo udevadm control --reload-rules && sudo udevadm triggerrecord, eval 时的参数,更新为
Bash
--robot.port=/dev/so101_follower_left
--teleop.port=/dev/so101_leader_left2. 摄像头绑定
USB摄像头,ATTRS{idVendor} 限定 VID;ATTRS{idProduct} 限定PID;ATTRS{serial} 限定序列号。
MODE:="0777",设定完全可读写的权限。
SYMLINK+="camera_top",添加一个符号链接,原来 /dev/video# 的设备文件仍可以继续用。
Bash
KERNEL=="video[0,2,4,6,8]*", ATTRS{idVendor}=="2bdf", ATTRS{idProduct}=="0289", ATTRS{serial}=="44434000_P030C01_SN0002", MODE:="0777", SYMLINK+="camera_top"