问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ROS开发中激光雷达常见问题及解决方案

创作时间:
作者:
@小白创作中心

ROS开发中激光雷达常见问题及解决方案

引用
CSDN
1.
https://m.blog.csdn.net/weixin_46973942/article/details/137003590

在ROS(Robot Operating System)开发中,激光雷达的使用常常会遇到一些硬件相关的问题。本文将介绍两个常见的问题及其解决方案,包括供电电压不足导致的扫描异常,以及串口权限问题导致的节点启动失败。

问题1:供电电压不足导致的扫描异常

[ERROR] [1711328631.811939621]: Can not start scan: 80008002!

解决办法:
与激光雷达的供电不足有关,电压 太低导致雷达不能正常工作,所以就出现了不能 开始扫描的错误提示,调整雷达的供电电压到 规定需求的大小,即可解决问题。

问题2:串口权限问题导致的节点启动失败

[rplidarNode-2] process has died [pid 67704, exit code -6, cmd /home/arm_noetic/workspace/devel/lib/rplidar_ros/rplidarNode __name:=rplidarNode __log:=/home/arm_noetic/.ros/log/ecd29daa-ea45-11ee-a484-b104990d78d0/rplidarNode-2.log].
log file: /home/arm_noetic/.ros/log/ecd29daa-ea45-11ee-a484-b104990d78d0/rplidarNode-2*.log
[hqyj_robot-7] process has died [pid 67719, exit code -6, cmd /home/arm_noetic/workspace/devel/lib/turn_on_robot/hqyj_robot_node __name:=hqyj_robot __log:=/home/arm_noetic/.ros/log/ecd29daa-ea45-11ee-a484-b104990d78d0/arm_robot-7.log].
log file: /home/arm_noetic/.ros/log/ecd29daa-ea45-11ee-a484-b104990d78d0/hqyj_robot-7*.log

解决办法:
出现此类问题的原因一般是连接雷达的串口未打开或者没有权限,使用下面的命令查看雷达连接的串口名称:

$ dmesg | grep tty

查询结果如下:
如果出现“now attached”则说明雷达已连接到相应的串口,接着使用下面的命令给串口赋予权限:

$ sudo chmod 777 /dev/ttyUSB0

执行成功这行命令是没有任何人打印输出的,但是后面的串口一定要是连接雷达的串口,然后还要再雷达的启动文件里面检查串口是否设置正确,如果不正确即使赋予相应的权限也不能使用。

【番外!!!】
每次都要检查串口是否连接,如果连接还要再次赋予权限,虽然只有两个步骤,但是对于程序员来说,能简化的步骤绝不会置之不理,所以我写了一个脚本,不管串口是否连接,直接执行,如果连接就会直接赋予权限,没有连接则会提示未发现相应串口,在任何你觉的方便的地方创建一个xxx.sh文件,这里我创建的是serial_port_enable.sh然后将下面的代码填入文件中:

#!/bin/bash
# 检查ttyUSB0是否存在,如果存在赋予相应的权限
if [ -e /dev/ttyUSB0 ]; then
    echo "Found ttyUSB0, executing chmod..."
    sudo chmod 777 /dev/ttyUSB0
else
    echo "ttyUSB0 not found."
fi

# 检查ttyUSB1是否存在,如果存在赋予相应的权限
if [ -e /dev/ttyUSB1 ]; then
    echo "Found ttyUSB1, executing chmod..."
    sudo chmod 777 /dev/ttyUSB1
else
    echo "ttyUSB1 not found."
fi

echo "Script execution complete."

保存文件然后给这个文件赋予可执行权限,然后直接执行下面的命令:

$ ./serial_port_enable.sh

如果串口连接:
如果串口未连接:

之后在运行相关节点,就不会报错了,激光雷达也正常启动

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号