首页 > 其他分享 >【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台

时间:2022-10-09 16:35:18浏览次数:79  
标签:11 USB devpath 29 dev 串口 Jetson root


文章目录

1 拔掉所有USB并重启设备

首先,拔掉所有设备,这是为了保证系统在开机时不会去自动的随机分配USB接口号。

同时,我们使用指令进行验证

ll /dev/ttyUSB*
ls: cannot access '/dev/ttyUSB*': No such file

通过返回的消息,可以发现此时没有USB设备连接到我们 Jetson。

2 依次插上待绑定设备

我们这里需要绑定的设备有四个,分别是

  1. Ros 扩展板
  2. 语音控制模块
  3. UWB 定位模块
  4. Zigbee 数传模块

2.1 连接 Ros 扩展板

2.1.1 查询

连接好了 Ros 扩展板之后,我们再运行检索 USB 接口的指令

ll /dev/ttyUSB*
crwxrwxrwx 1 root dialout 188, 0 9月 29 11:09 /dev/ttyUSB0

会发现此时连接了一个 USB 设备,其编号为 “ttyUSB0”。

然后,我们先查看HUB板的端口信息,主要是查看设备路径信息,在 Jetson 的终端里输入(注意指令里的 “ttyUSB0” 要正确)

udevadm info --attribute-walk --name=/dev/ttyUSB0 |grep devpath

我们可以得到如下消息

jetson@yahboom:~$ udevadm info --attribute-walk --name=/dev/ttyUSB0 |grep devpath
Udevadm info starts with the device specified by the devpath and then
ATTRS{devpath}=="2.4.2"
ATTRS{devpath}=="2.4"
ATTRS{devpath}=="2"
ATTRS{devpath}=="0"

返回的消息中,​​ATTRS{devpath}=="2.4.2"​​ 表明了该设备的路径信息。

2.1.2 绑定

接下来,我们通过修改 ​​/etc/udev/rules.d/rplidar.rules​​ 文件,从而绑定好 Ros 扩展板的端口号。可以通过在终端中输入

sudo vim

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_jetson


其中最后边的参数 ​​SYMLINK+="USB_Ros"​​ 是以后要用到的别名,自己可以根据连接的 USB 设备取个名字。

2.1.3 验证

重启一下服务,使得修改立即生效。

sudo

重启后,我们就完成把 ttyUSB0 取别名为 USB_Ros 的操作了,以后在程序里直接访问 USB_Ros,就可以与这个设备通信了。

ll /dev/USB_Ros
lrwxrwxrwx 1 root root 7 9月 29 11:35 /dev/USB_Ros ->

我们可以看到 USB_Ros 和 ttyUSB0 建立了映射关系。

2.2 连接语音模块

jetson@yahboom:~$ ll /dev/ttyUSB*
crwxrwxrwx 1 root root 188, 0 9月 29 11:35 /dev/ttyUSB0
crwxrwxrwx 1 root dialout 188, 1 9月 29 11:36 /dev/ttyUSB1
jetson@yahboom:~$ udevadm info --attribute-walk --name=/dev/ttyUSB1 |grep devpath
Udevadm info starts with the device specified by the devpath and then
ATTRS{devpath}=="2.4.3"
ATTRS{devpath}=="2.4"
ATTRS{devpath}=="2"
ATTRS{devpath}=="0"
jetson@yahboom:~$ sudo vim

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_串口_02

jetson@yahboom:~$ sudo
jetson@yahboom:~$ ll /dev/ttyUSB*
crwxrwxrwx 1 root root 188, 0 9月 29 11:42 /dev/ttyUSB0
crwxrwxrwx 1 root root 188, 1 9月 29 11:42 /dev/ttyUSB1
jetson@yahboom:~$ ll /dev/USB_Speech
lrwxrwxrwx 1 root root 7 9月 29 11:42 /dev/USB_Speech ->
jetson@yahboom:~$ ll /dev/USB_*
lrwxrwxrwx 1 root root 7 9月 29 11:42 /dev/USB_Ros -> ttyUSB0
lrwxrwxrwx 1 root root 7 9月 29 11:42 /dev/USB_Speech ->

2.3 连接 UWB 定位模块

jetson@yahboom:~$ ll /dev/ttyUSB*
crwxrwxrwx 1 root root 188, 0 9月 29 11:42 /dev/ttyUSB0
crwxrwxrwx 1 root dialout 188, 1 9月 29 11:45 /dev/ttyUSB1
crwxrwxrwx 1 root dialout 188, 2 9月 29 11:52 /dev/ttyUSB2
jetson@yahboom:~$ udevadm info --attribute-walk --name=/dev/ttyUSB2 |grep devpath
Udevadm info starts with the device specified by the devpath and then
ATTRS{devpath}=="2.4.4"
ATTRS{devpath}=="2.4"
ATTRS{devpath}=="2"
ATTRS{devpath}=="0"
jetson@yahboom:~$ sudo vim

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_jetson_03

jetson@yahboom:~$ sudo
jetson@yahboom:~$ ll /dev/USB_*
lrwxrwxrwx 1 root root 7 9月 29 11:54 /dev/USB_Ros -> ttyUSB0
lrwxrwxrwx 1 root root 7 9月 29 11:54 /dev/USB_Speech -> ttyUSB1
lrwxrwxrwx 1 root root 7 9月 29 11:54 /dev/USB_UWB ->

2.4 连接 Zigbee 数传模块

jetson@yahboom:~$ ll /dev/ttyUSB*
crwxrwxrwx 1 root root 188, 0 9月 29 11:54 /dev/ttyUSB0
crwxrwxrwx 1 root root 188, 1 9月 29 11:54 /dev/ttyUSB1
crwxrwxrwx 1 root root 188, 2 9月 29 11:54 /dev/ttyUSB2
crwxrwxrwx 1 root dialout 188, 3 9月 29 11:55 /dev/ttyUSB3
jetson@yahboom:~$ udevadm info --attribute-walk --name=/dev/ttyUSB3 |grep devpath
Udevadm info starts with the device specified by the devpath and then
ATTRS{devpath}=="2.4.1"
ATTRS{devpath}=="2.4"
ATTRS{devpath}=="2"
ATTRS{devpath}=="0"
jetson@yahboom:~$ sudo vim

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_重启_04

jetson@yahboom:~$ sudo
jetson@yahboom:~$ ll /dev/USB_*
lrwxrwxrwx 1 root root 7 9月 29 11:57 /dev/USB_Ros -> ttyUSB0
lrwxrwxrwx 1 root root 7 9月 29 11:57 /dev/USB_Speech -> ttyUSB1
lrwxrwxrwx 1 root root 7 9月 29 11:57 /dev/USB_UWB -> ttyUSB2
lrwxrwxrwx 1 root root 7 9月 29 11:57 /dev/USB_ZigBee ->

至此,我们就实现了对4个 USB 设备固定端口的设置。需要注意的是,以后不能再随意更改 USB 设备的位置了,否则就会造成设备无法正常工作的情况。

最后再附一张我手里设备的实物图

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_python_05

3 Bug

3.1 小车移动程序无效

按照上述过程修改后,我去操作小车进行移动,发现有个报错

jetson@yahboom:~/Desktop$ python3 PyTest/RosmasterTest.py 
Traceback (most recent call last):
File "/home/jetson/.local/lib/python3.6/site-packages/serial/serialposix.py", line 322, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: '/dev/myserial'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "PyTest/RosmasterTest.py", line 4, in <module>
bot = Rosmaster()
File "/usr/local/lib/python3.6/dist-packages/Rosmaster_Lib-1.7.3-py3.6.egg/Rosmaster_Lib/Rosmaster_Lib.py", line 20, in __init__
File "/home/jetson/.local/lib/python3.6/site-packages/serial/serialutil.py", line 244, in __init__
self.open()
File "/home/jetson/.local/lib/python3.6/site-packages/serial/serialposix.py", line 325, in open
raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 2] could not open port /dev/myserial: [Errno 2] No such file or directory: '/dev/myserial'
Exception ignored in: <bound method Rosmaster.__del__ of <Rosmaster_Lib.Rosmaster_Lib.Rosmaster object at 0x7faed5d4a8>>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/Rosmaster_Lib-1.7.3-py3.6.egg/Rosmaster_Lib/Rosmaster_Lib.py", line 129, in __del__
AttributeError: 'Rosmaster' object has no attribute 'ser'

分析后发现是串口调用问题。结合小车移动是通过调用 Ros 扩展板来实现的。因此,将问题聚焦在 Ros 扩展板的串口上,也就是我们的 ttyUSB0。

同时,在报错中看到了 myserial 的字样,这个名字是本来自带的程序中对 Ros 扩展板串口的别名。通过尝试后,我们发现将一开始自己取的 Ros 扩展板别名 “USB_Ros” 改成 “myserial” 中就行了。

总的来说,Ros 扩展板没问题,修改别名 “USB_Ros” 也没问题。但是一些示例程序中对 Ros 扩展板调用时使用的别名是 “myserial”。如果挨个修改程序中的别名太费事,因此直接将自己想的别名改成示例程序中的别名,那么问题就迎刃而解了。修改界面如下图

【Jetson】同时配置多个 USB 串口设备,固定 USB 端口,通过别名访问 USB 设备,使用 Jetson 平台_python_06

Ref.

  1. 2.语音控制模块端口绑定
  2. Jeston nano配置(七)绑定USB设备的串口名称


标签:11,USB,devpath,29,dev,串口,Jetson,root
From: https://blog.51cto.com/u_13796979/5740698

相关文章