前言
一般情况下,主控板(树莓派、Jetson等)会同时和多个串口进行通信,这时,我们希望,用一个固定名称代表特定串口,比如用serial_motor_drive绑定电机驱动控制板,使ROS2的配置、编程和运行更加方便。
下面是在VM(ubuntu22.04)中绑定YB-ERF01-V2.0(简称YB)的Q&A。
内容
YB连接到VM
注意,这时电脑端给YB供电,YB尽量不要带负载(比如5V舵机),因为电脑端的USB供电有限,容易损伤电脑的USB口!
正确设置,如下图所示:
查看USB串口是否在/dev目录下显示出来
执行“ls /dev|grep ttyUSB*”,在我的ubuntu22.04中,未找到,如果能找到,就不需要执行下面的步骤:
qzm@vm:~$ sudo dmesg | grep brltty
[sudo] password for qzm:
[ 5.705934] usb 2-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 12.561816] usb 2-2.2: usbfs: USBDEVFS_CONTROL failed cmd brltty rqt 128 rq 6 len 255 ret -110
[ 22.744362] usb 2-2.2: usbfs: USBDEVFS_CONTROL failed cmd brltty rqt 128 rq 6 len 255 ret -110
上面的提示大概是指出ch341被brltty占用了,ch341的驱动不能正确加载,所以在/dev/目录下看不到ttyUSBX;执行下面命令移除掉brltty即可。
sudo apt remove brltty
qzm@vm:~$ ls /dev/ttyUSB*
/dev/ttyUSB0 ttyUSB0出现了,问题解决。
查看CH340设备的ID
qzm@vm:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 006: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. Virtual Bluetooth Adapter
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
绑定系统链接符到ttyUSB0(控制板)
sudo vim /etc/udev/rules.d/myserial.rules //创建并新增如下一行内容
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="rosmaster"
执行下面命令使绑定生效
sudo chmod a+x /etc/udev/rules.d/myserial.rules
sudo udevadm trigger
sudo service udev reload
sudo service udev restart
查看udev的状态
qzm@vm:~$ sudo systemctl status udev
● systemd-udevd.service - Rule-based Manager for Device Events and Files
Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static)
Active: active (running) since Sat 2024-03-30 09:54:12 CST; 47min ago
TriggeredBy: ● systemd-udevd-kernel.socket
● systemd-udevd-control.socket
Docs: man:systemd-udevd.service(8)
man:udev(7)
Main PID: 2614 (systemd-udevd)
Status: "Processing with 24 children at max"
Tasks: 1
Memory: 4.4M
CPU: 1.395s
CGroup: /system.slice/systemd-udevd.service
└─2614 /lib/systemd/systemd-udevd
Mar 30 09:54:12 vm systemd[1]: Started Rule-based Manager for Device Events and Files.
Mar 30 09:54:12 vm systemd-udevd[2621]: Using default interface naming scheme 'v249'.
Mar 30 09:54:12 vm systemd-udevd[2614]: Configuration file /etc/udev/rules.d/myserial.rules is marked executable. Please remove executable permissi>
验证绑定是否成功
ll /dev/myserial
lrwxrwxrwx 1 root root 7 Mar 30 09:51 /dev/myserial -> ttyUSB0
附录
brltty
brltty
是一款开源的屏幕阅读软件,全称为 Braille Display Driver,用于帮助视力障碍人士通过盲文显示器(Braille display)与计算机进行交互。这款软件能够让视障用户通过触觉反馈的方式读取屏幕上的文本信息,从而实现浏览文档、编辑文本、上网冲浪等功能。
brltty
支持多种类型的盲文显示器,并且与多种操作系统兼容,包括但不限于Linux、Unix-like系统及部分版本的Windows。在Linux发行版中,brltty
通常作为一个系统服务运行,当盲文显示器连接到计算机时,它会自动识别并开始传输屏幕上的内容到显示器上。
此外,根据之前的信息,brltty
有时可能与USB转串口设备(如CH340G芯片)存在资源冲突问题,因为它可能会抢占串口资源,从而影响其他串口设备的正常使用。在这种情况下,用户可能需要根据实际情况禁用或配置brltty
以适应其他硬件的需求。
查看CH34X驱动是否安装
CH340的驱动需要安装,才会在/dev下面出现ttyUSBX
lsmod|grep ch34
ch341 24576 0
usbserial 69632 1 ch341