机械臂与摄像头设备文件绑定
在Linux中,默认情况下:不同的设备建立的设备文件名称,会取决于上电的顺序,而不是与物理硬件绑定。
这给实际部署应用带来不便。
比如同一个机械臂的串口,连上电脑后可能是 /dev/ttyACM0,也可能是 /dev/ttyACM1。
1. 串口绑定
目标:希望机械臂的端口号与物理硬件绑定下来,避免重复查看端口号。
比如,同一个机械臂的串口,连上电脑后,我们希望他固定是 /dev/so101_follower 或 /dev/so101_leader 这样的。
原理:将序列号与文件序号的映射规则写入设备rules,保证每次机械臂上电的顺序不一样也可以绑定到正确的端口ID。
配置步骤如下:
(1) 连接机械臂的驱动板的 TypeC 到电脑,输入如下指令:
udevadm info -a -n /dev/ttyACM0 | grep serial
将输出类似ID号:
ATTRS{serial}=="57FB083124"
ATTRS{serial}=="3610000.usb"
(2) 将输出的上面那一行的编码值替换下面ATTRS{serial}=号后面的引号标红内容,保存到 lerobot/examples/99_so101_serial.rules 文件中(没有的话就创建一个)
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) 运行下面的指令,将规则文件写入Ubuntu系统目录,此后将会自动识别左、右机械臂
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 trigger
record, eval 时的参数,更新为
--robot.port=/dev/so101_follower_left
--teleop.port=/dev/so101_leader_left
2. 摄像头绑定
USB摄像头,ATTRS{idVendor} 限定 VID;ATTRS{idProduct} 限定PID;ATTRS{serial} 限定序列号。
MODE:="0777",设定完全可读写的权限。
SYMLINK+="camera_top",添加一个符号链接,原来 /dev/video# 的设备文件仍可以继续用。
KERNEL=="video[0,2,4,6,8]*", ATTRS{idVendor}=="2bdf", ATTRS{idProduct}=="0289", ATTRS{serial}=="44434000_P030C01_SN0002", MODE:="0777", SYMLINK+="camera_top"