Ubuntu(ROS+雷达)修改udev/rules/更改ttyUSB 使端口绑定

前提:

1.Linux(Ubuntu)系统,本版本为Ubuntu16.04

2.确定USB口可以使用(拔插U盘看看有没有弹出文件夹窗口)

参考博客:https://blog.csdn.net/mgou1234/article/details/88989231?ops_request_misc=&request_id=&biz_id=102&utm_term=ubuntu%E7%BB%91%E5%AE%9Ausb%E7%AB%AF%E5%8F%A3&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-9-88989231.pc_search_result_before_js

查看ttyUSB端口

1.用 ls ttyUSB* 查看当前可用USB口
插上你的雷达
检查串口哪个被占用,这个要一个个看看你的小雷达插的是哪个usb口。

ls -l /dev/ttyUSB*
//检查单个串口占用,*代表的是端口号

在这里插入图片描述
(先插上然后先把ttyUSB0-ttyUSB10查一轮,拔掉之后缩小范围继续查)
我这里是用的ttyUSB1

镭神雷达安装:参考https://blog.csdn.net/h1475457833/article/details/114394460?spm=1001.2014.3001.5501

2.查看USB口的设备商号与产品号

lsusb

在这里插入图片描述
圈出来的就是我的雷达
Bus 002 Device 016: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

10c4:ea60 = 生产商编号 idVendor :产品号 idProduct

3.添加UDEV配置
拿到idVendor之后,添加现在雷达的UDEV配置
udev规则的文件路径:computer/etc/udev/rules.d
在这里插入图片描述

首先创建一个udev规则:

sudo gedit your_name.rules

在这里插入图片描述解读udev规则文件:
KERNEL==“ttyUSB*”, 内核==ttyUSB (不可修改)
ATTRS{idVendor}“10c4”, *获取生厂商编号“ (修改为自己的生厂商编号)”*
ATTRS{idProduct}“ea60”, *获取产品号“ (修改为自己的产品编号)”*
MODE:=“0777”, 文件读写权限==0777为最高级
SYMLINK+=“lslidar” 符号链接==(自定义名称)

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="lslidar"

4.查看新建端口映射

拔插一下端口的设备
输入:

ls -l /dev |grep ttyUSB
或者已知的usb口:ls -l /dev |grep ttyUSB*

在这里插入图片描述
可以看到有 ydlidar -> ttyUSB4 ,证明以上步骤是对的

*tips有问题:

在安装雷达映射串口时,在.rules文件夹里新建不了rplidar.rules文件。

建完就是没有显示该文件。
看这里!!

<think>好的,用户现在问的是关于如何给予USB设备的读写权限。根据之前的对话历史,用户遇到了ROS驱动无法打开串口的问题,错误信息显示无法打开/dev/wheeltec_lidar。之前的回复已经涉及到权限问题,现在用户可能是在尝试解决这个问题,所以进一步询问如何正确设置USB权限。 首先,需要确定用户的操作系统,通常ROSUbuntu上运行,所以假设用户使用的是基于Debian的系统。权限问题通常是因为用户没有加入正确的组,或者设备节点的权限设置不正确。 接下来,思考用户可能的场景。用户可能是一个正在使用ROS和激光雷达的开发者,遇到了设备访问被拒绝的问题。他们可能已经按照某些教程配置了udev规则,但权限没有正确设置,导致驱动无法访问设备。用户需要快速解决这个问题,以便继续他们的开发工作。 需要考虑用户的潜在需求:他们可能不仅想知道临时解决方法,还需要永久解决方案,以避免每次插拔设备都要重新设置权限。此外,用户可能对Linux的权限管理不太熟悉,需要简明易懂的步骤。 需要分步骤解释如何检查当前权限,如何临时修改权限,以及如何永久解决。同时,要提到用户组(如dialout或plugdev)的添加,以及udev规则的作用,这样用户能全面理解问题所在。 还需要注意常见的错误,比如用户可能没有正确执行udev规则的重载,或者规则编写有误。此外,用户可能混淆了设备名称和实际端口,比如自定义的/dev/wheeltec_lidar是否确实存在,或者是否有拼写错误。 可能还需要提醒用户检查设备是否被正确识别,使用dmesg命令查看内核日志,确认设备是否被系统检测到。这也是排除硬件连接问题的一部分。 最后,总结不同方法的适用场景,帮助用户根据具体情况选择最合适的解决方案,比如临时测试用chmod,永久解决用udev规则或用户组添加。同时,附上验证方法,确保用户确认问题已解决。</think>--- ### **USB设备读写权限配置指南** 在 Linux 系统中,USB 设备(如雷达、传感器)默认只能由 **root** 用户或 **特定用户组** 访问。若未正确配置权限,ROS 驱动会因权限不足无法打开设备(如错误 `open_port ERROR!`)。以下是详细解决方案: --- ### **一、快速临时解决方案(测试用)** 直接赋予设备 **全局读写权限**(重启后失效): ```bash sudo chmod 666 /dev/wheeltec_lidar # 替换为你的设备路径 ``` **原理**: - `chmod 666` 表示允许所有用户读写(⚠️ 安全性较低,仅限临时测试) --- ### **二、永久解决方案** #### **方法 1:将用户加入设备组** Linux 系统通过用户组管理硬件访问权限,常用组为 `dialout`(串口设备)或 `plugdev`(USB设备): ```bash sudo usermod -aG dialout $USER # 将当前用户加入 dialout 组 sudo usermod -aG plugdev $USER # 部分系统可能需要此组 ``` **生效条件**: - **重启系统** 或重新登录 - 验证是否成功: ```bash groups # 查看当前用户所属组 ``` #### **方法 2:自定义 udev 规则** 通过 udev 规则永久设置设备权限,并绑定固定名称(如 `/dev/wheeltec_lidar`): 1. **创建规则文件**: ```bash sudo nano /etc/udev/rules.d/99-wheeltec-lidar.rules ``` 2. **写入规则**(示例): ```bash # 通过设备序列号或厂商ID绑定名称和权限 SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", MODE="0666", SYMLINK+="wheeltec_lidar" ``` - 替换 `idVendor` 和 `idProduct`(通过 `lsusb` 命令查询) - `MODE="0666"` 赋予所有用户读写权限 - `SYMLINK+="wheeltec_lidar"` 创建设备别名 3. **应用规则**: ```bash sudo udevadm control --reload-rules # 重载规则 sudo udevadm trigger # 触发规则生效 ``` --- ### **三、验证权限配置** 1. **检查设备权限**: ```bash ls -l /dev/wheeltec_lidar # 正常权限应为 crw-rw-rw- ``` **输出示例**: ```bash crw-rw-rw- 1 root dialout 188, 0 Jun 15 10:00 /dev/wheeltec_lidar ``` 2. **测试设备访问**: ```bash echo "test" > /dev/wheeltec_lidar # 若提示无权限,则配置失败 ``` --- ### **四、常见问题排查** | 问题现象 | 解决方案 | |------------------------------|--------------------------------------------------------------------------| | 加入 `dialout` 组后仍无权限 | 重启系统或注销重新登录 | | udev 规则未生效 | 检查规则语法(如多余空格),确认 `idVendor` 和 `idProduct` 是否正确 | | 设备名称不固定(如ttyUSB0切换) | 使用 udev 规则绑定唯一别名 | | 多设备冲突 | 在规则中增加 `ATTRS{serial}=="xxx"` 指定序列号 | --- ### **附:关键命令速查** - **查询USB设备信息**: ```bash lsusb -v # 查看设备厂商ID和产品ID dmesg | grep tty # 查看设备挂载节点(如ttyUSB0) ``` - **手动触发设备重识别**: ```bash sudo udevadm trigger --action=change ``` --- 通过上述配置,可确保 ROS 驱动稳定访问 USB/串口设备。若问题仍未解决,请提供以下信息: 1. `ls -l /dev/wheeltec_lidar` 的输出 2. `groups` 命令显示的当前用户组 3. udev 规则文件内容
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值