QA:绑定ROS机器人控制板PCB设备ID

本文讲述了如何在Ubuntu22.04虚拟机中为YB-ERF01-V2.0串口设备绑定一个固定名称,以解决与brltty的资源冲突问题,确保串口通信正常,并提供了相应的设置步骤和检查方法。
摘要由CSDN通过智能技术生成

前言

    一般情况下,主控板(树莓派、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+="myserial"

执行下面命令使绑定生效

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

Rosmaster_Lib.py库中和myserial相关的摘录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值