知识库/参考文档/机械臂与摄像头设备文件绑定

机械臂与摄像头设备文件绑定

在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"