1 问题描述
在roslaunch节点时,终端报错打开串口失败:
open_port /dev/ttyUSB0 ERROR!
但是在终端查找串口设备的时候是可以识别到USB0的:
ls /dev/tty*
输出上述命令可以看到会有ttyUSB0
,因此问题在于能识别到串口但是无法打开。
2 原因分析
在终端中输出命令查看串口设备权限:
cat /dev/ttyUSB0
终端输出:
................permission deny!
定位问题是串口没有可执行权限。
3 解决方法
光用chmod +x
是不稳定的,因为这样只是给设备短暂的赋予权限,当重新开关机和重新插拔串口设备时,串口的权限可能就会失效了,因此要配置给串口设备赋予永久权限。
3.1 创建规则文件
1 前往规则文件夹:
cd /etc/udev/rules.d/
2 创建权限规则文件:
sudo touch 70-ttyUSB.rules
3 修改规则文件可编辑文件:
sudo chmod 666 70-ttyUSB.rules
3.2 添加规则
1 在终端中使用vim打开文件:
vim 70-ttyUSB.rules
2 按 i
后可以进行文件编辑
3 在文件中添加规则:
KERNEL=="ttyUSB*", OWNER="root", GROUP="root", MODE="0666"
4 按Esc
,输出:wq
保存文件并退出
5 重启系统完成给串口设备赋予永久权限
参考文章:【笔记】Ubuntu永久获得串口权限