树莓派&ROS:驱动EAI的激光雷达YDLIDAR-X4

树莓派&ROS:驱动EAI的激光雷达YDLIDAR-X4

【目录】

    - 1、配置环境与背景介绍

        - 1.1、硬件配置环境

        - 1.2、主要参考文档:

    - 2、下载源码、编译并配置环境

        - 2.1、建立工作空间

        - 2.2、下载ROS驱动包

        - 2.3、编译代码

        - 2.4、添加环境变量

        - 2.5、创建别名,运行脚本

        - 2.6、修改波特率

    - 3、运行激光雷达

    - 4、问题及解决

        - 4.1、供电不足导致雷达无法正常运行

        - 4.2、无法加载ydlidar节点

        - 4.3、RViz不显示点云图像

        - 4.4、USB不识别

    - 5、查询激光雷达数据及其发布的消息

 

1、硬件环境与背景介绍

1.1、硬件配置环境

ROS2GO的U盘 系统:Ubuntu16.04 + ROS Kinetic

激光雷达:EAI的YDLIDAR X4

树莓派:系统  Raspbian Stretch系统的ROS Kinetic

参考【发布v1.0版本基于Stretch的ROS Kinetic完整版树莓派3B+镜像】

http://www.corvin.cn/948.html

1.2、激光雷达:YDLIDAR-X4

(1)基本参数

激光雷达候选:

1)EAI  YDLIDAR X4 :

安装:数据线接口是水平方向,方便接线;

电源:转接板有专门的电源接口(一个USB口接数据,一个USB口接电源)。

2)思岚科技 RPLIDAR A1

安装:数据和电源接口,朝向为向下,安装时要注意,容易卡住。

电源:供电和数据线是在一个usb口里面,如果供电不足,会影响雷达工作。

3)参数对比

扫描频率:电机转速可调,Hz

(2)激光雷达的固定

雷达原来的固定支柱,塑料,螺纹孔不通用(好像是M2.5

被我改成了M3的螺柱(虽然不是塑料绝缘的,但影响不大),这样后期把底座固定在打孔的木板上,选择螺丝更方便。

1.3、主要参考文档:

推荐: 《EAI官方 《YDLIDAR X4 使用手册》

[介绍EAI的YDLIDAR-X4激光雷达在ROS下使用方法]

http://www.corvin.cn/686.html

[ROS与激光雷达入门教程-ROS中使用激光雷达(EAI F4)]

https://www.ncnynl.com/archives/201702/1362.html

[EAI激光雷达X4使用hector_slam建图(一)]

https://blog.youkuaiyun.com/zhu751191958/article/details/78969825

《EAI官方文档《YDLIDAR ROS 使用手册.pdf》

[ROS与SLAM入门教程-激光雷达(EAI F4)gmapping构建地图]

https://www.ncnynl.com/archives/201702/1363.html

2、下载源码、编译并配置环境

2.1、建立工作空间

mkdir -p ~/lidar_ws/src

 

注意: 一个工作空间不要放太多驱动,否则编译时可能会系统卡死。

新建一个lidar_ws的工作空间:   mkdir -p ~/lidar_ws/src

自动生成文件夹目录  /home/tianbot/lidar_ws/src

 

如果用eai的多种不同雷达,工作空间命名还可以更加细化,如建立X4激光雷达的制定工作空间 eaix4_ws :  mkdir -p ~/eaix4_ws/src

 

建立通用的工作空间 catkin_ws:  mkdir -p ~/catkin_ws/src

参考:

每天一个linux命令(4):mkdir命令

http://www.cnblogs.com/peida/archive/2012/10/25/2738271.html

 

进入进入工作空间目录下

cd ~/lidar_ws/src

 

2.2、下载ROS驱动包

方法一、先下载再复制文件

官网下载X4雷达对应的ROS驱动包,复制到/home/tianbot/lidar_ws/src/ydlidar文件夹下

到百度上输入EAI,找到EAI玩智商官网:

http://www.eaibot.com/

下载ROS驱动包

将下载好ROS雷达驱动包在windows下解压并重命名为ydlidar放到src里,

 

方法二、直接联网下载(可能不识别是X4的)

从github下载ydlidar x4的ROS下驱动源码,该源码需要放在ros工作空间下的src目录下进行编译,下载命令如下:

git clone https://github.com/EAIBOT/ydlidar.git

 

2.3、编译代码

切换工作空间根目录 cd ~/lidar_ws

编译整个工作空间 catkin_make

 

注意:编译时候,注意目录下src文件中是否有其他代码,若代码太多,容易编译失败,系统司机卡住

 

方法二、编译生成 ydlidar_node 和 ydlidar_client。

$catkin_make --pkg ydlidar

 

参考:

首先切换到自己的ROS工作空间: $ cd ~/catkin_ws

如果你想编译整个工作空间里面的包:$ catkin_make

如果你只想编译工作空间某一个包:$ catkin_make  -DCATKIN_WHITELIST_PACKAGES= "包名"

例如:$ catkin_make  -DCATKIN_WHITELIST_PACKAGES="beginner_tutorials"

原文: https://blog.youkuaiyun.com/qingdu007/article/details/51483065

 

2.4、添加环境变量

添加 ydlidar 环境变量到~/.bashrc 文件中,并使其生效,刷新配置。

      切换目录 cd ~/lidar_ws

 

1)永久添加配置,以后就不用重复source刷新配置。

方法一(推荐)使用echo命令>>指令向文件追加内容,原内容将保存

$ echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bash

方法二、打开文件,在~/.bashrc最后,手动添加添加一行以下内容:

source ~/lidar_ws/devel/setup.bash

 

(2)刷新配置

$ source ~/.bashrc

或 $ rospack profile

 

以防万一还是再source当前环境:

source ~/lidar_ws/devel/setup.bash

 

打开文件 source devel/setup.bash

添加一行配置 echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

刷新配置 source ~/.bashrc

 

操作步骤(方法二)、直接使用roscd指令切换到自己的程序包目录

cd ~/lidar_ws

source devel/setup.bash(是否需要?)

echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

roscd ydlidar(是否需要?)

 

参考:

【ROS学习笔记-roscd指令

 https://blog.youkuaiyun.com/jimjarry/article/details/78983675

备注:cd命令和roscd命令都是切换到指定目录的命令。

不同的是,cdLinux系统的命令,在使用时必须指定目标目录的完整路径;

roscdros系统中的,利用包的名字直接切换到相应的文件目录下。

 

2.5、为USB设备创建别名

为 X4 的串口增加一个设备别名 /dev/ydlidar,添加udev规则

 

方法一、直接用roscd命令进入目录

$roscd ydlidar/startup

备注:注意观察目录是否错误

使脚本文件获得权限

$sudo chmod 0777 *

运行脚本文件

$sudo sh initenv.sh

 

方法二、

#进入驱动包的startup目录下:

#cd ~/lidar_ws/src/ydlidar/startup

使.sh脚本文件获得权限:

sudo chmod +x initenv.sh

直接运行脚本文件:

sudo sh initenv.sh

 

注意:创建别名后, 重新插拔 USB 才生效

 

插入USB后,在终端中输入以下命令,查看USB转串口设备:

ls /dev/tty*

列出USB设备:

ls -l /dev/ttyUSB*

ls -l /dev/ydlidar

 

原理:

以后就不用来看雷达挂载点是ttyUSB0还是ttyUSB1这些了,因为每次开机时usb设备的加载顺序是随机的,这样就导致挂载点也随机,为了保证我们的启动雷达的代码统一,因此就需要为该设备配置一个别名,该udev配置规则脚步放在ydlidar/startup目录下名字是initenv.sh

参考资料:

Udev是Linux的设备管理器,动态地创建和删除节点的硬件设备。简而言之,它有助于你的电脑很容易找到你的机器人。

【原ROS 简单的udev rules】

https://blog.youkuaiyun.com/u011118482/article/details/52442403

Ros项目使用usb接口串口通讯的传感器时,我们都希望有个固定的设备名供程序调用。

由于usb为即插即用设备,节点注册的ID不同,会导致设备名称会不同。

linux系统下如何让系统绑定固有的usb设备,使用设定好的设备名称?如何永久修改设备权限?

解决办法:编写规则文件,放到系统配置路径下,进行设置后,即可一劳永逸。

【ros使用usb硬件,调用固定设备名修改设备权限的设置方法】

https://blog.youkuaiyun.com/qq_38288618/article/details/77839305

 

2.6、修改波特率

打开lidar.launch文件,更改雷达对应波特率为128000

备注:官方手册说要改,其它文档没看到,lidar.launch文件路径在 /home/tianbot/lidar_ws/src/ydlidar/launch

 

打开 lidar.launch,更改不同型号雷达对应的波特率,以下为 X4 的配置。

命令行修改(按insert修改,esc退出,:wq 保存,未成功)

cd ~/lidar_ws/src/ydlidar/launch

vim lidar.launch

以下

备注 1: 雷达型号对应波特率: G4 : 230400 X4 : 128000 F4 : 153600

3、运行激光雷达测试

新终端,运行roscore

$ roscore

新终端,运行雷达X4并用Rviz将数据可视化:

$ roslaunch ydlidar lidar_view.launch

或者,打开一个终端,启动雷达扫描测距:roslaunch ydlidar lidar.launch

再打开新终端,查看激光雷达的数据:rosrun ydlidar ydlidar_client

树莓派Raspbian 系统中,好像也没必要先运行 lidar.launch,直接运行lidar_view.launch就可以了。

 

备注:先保证 roscd运行在正确目录下  roscd ydlidar,然后再启动roslauch

4、问题及解决

4.1、供电不足导致雷达无法正常运行

EAI的X4数据口在一般情况下可以当做供电和数据同时使用,这是我们用户比较期望的,但是X4对于某些主控比如树莓派就不行,必须单独供电,也就是说如果你拿树莓派跑的话,需要一条单独供电的线和一条数据线

 

树莓派使用问题

供电问题

现象:雷达不转, 雷达转几下停了,雷达正常转,但是启动 lidar.launch过程中有提示

错误提示[ERROR] [1543845072.458324094]: start YDLIDAR is failed! Exit!!

解决方法:充电宝好像不行(自动断电?),要找个比较稳定的电源适配器。

https://github.com/EAIBOT/ydlidar/issues/12

 

4.2、无法加载ydlidar节点

ERROR: cannot launch node of type [ydlidar/ydlidar_node]:

can't locate node [ydlidar_node] in package [ydlidar]

 

无法加载节点的原因,可能是多次编译,ros命令寻找文件位置时发生错误。

 

解决方法:“直接使用roscd指令切换到自己的程序包目录”

cd ~/lidar_ws

source devel/setup.bash

echo "source ~/lidar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

 

先保证 roscd运行在正确目录下

roscd ydlidar

然后再启动roslauch

roslaunch ydlidar lidar_view.launch

 

参考:

https://answers.ros.org/question/145801/cant-locate-node-in-package/

 

4.3、RViz不显示点云图像

启动激光雷达EAI YDLIDAR X4后,查询有数据(rosrun ydlidar ydlidar_client),但是在RViz中没有图像,解决办法是改变显示方式:把Style 从Squares改成 Points,就显示了。

 

 

问题解决:把Style 从Squares改成 Points就显示

4.4、USB不识别

现象:[ERROR] [1553706336.319141339]: YDLIDAR Cannot bind to the specified serial port /dev/ydlidar

查询:查看USB转串口设备:ls /dev/tty*,无 ttyUSB*

连接Windows电脑,不识别COM口

原因: USB线质量太差,换一根好点的(粗一点),就能识别USB了

 

5、查询激光雷达数据及其发布的消息

rosmsg show sensor_msgs/LaserScan

 

查询雷达输出话题:rostopic echo -n1 /scan

(下面这个命令睡少了 –n1,会不停地刷新数据)

 

[ROS中发布激光扫描消息]( https://www.cnblogs.com/21207-iHome/p/7840129.html)

通过 rostopic hz /scan 命令查看激光数据发布频率

 

树莓派上安装ROS(Robot Operating System),并连接激光雷达是一项有趣的项目。下面将为您详细介绍具体的步骤。 ### 一、准备阶段 #### 硬件需求 - **树莓派**:建议选择性能较强的版本如4B或更新型号。 - **存储设备**:需要一个容量足够的microSD卡用于系统安装,推荐16GB以上。 - **USB转串口线/TTL模块**(视情况而定):某些类型的激光雷达可能通过UART通信,则需要用到这个配件;如果直接支持IIC/SPI/USB接口则不需要额外购买此部件。 - **电源供应**:树莓派供电的同时也要考虑是否能为其他外设提供稳定电压电流。 - **网络环境**: 能够联网下载必要的软件包是最基本的要求了! #### 软件工具及资料收集 - 安装Raspbian操作系统镜像文件以及配套烧录程序比如Balena Etcher等; - ROS官方文档[http://wiki.ros.org](http://wiki.ros.org),其中包含关于如何针对不同平台部署的相关指南; - 激光雷达厂商提供的SDK/API说明手册,了解其工作原理和编程接口规范。 --- ### 二、具体操作流程 #### (一). 树莓派配置与ROS安装 ##### 步骤01 - 更新基础系统设置 首先对刚刷好系统的树莓派做一些初始化设定: ```bash sudo apt-get update && sudo apt-get upgrade -y # 升级现有软件包至最新版 ``` ##### 步骤02 - 添加ROS源列表信息 编辑 `/etc/apt/sources.list.d/ros-latest.list` 文件加入对应发行版的支持库路径: 对于Noetic(适合Ubuntu Focal): ```text deb [arch=arm64,armhf] http://packages.ros.org/ros/ubuntu focal main ``` 之后导入GPG密钥以便验证签名完整性: ```bash curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - ``` ##### 步骤03 - 开始正式安装过程 这里我们以轻量级的Desktop Lite为例来进行演示: ```bash sudo apt install ros-noetic-desktop-lite python3-catkin-tools python3-rosdep python3-wstool -y # 初始化依赖项解析服务 sudo rosdep init; rosdep update; echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc ; source ~/.bashrc ; ``` 此时已经成功构建了一个基于ARM架构运行的ROS开发环境啦! #### (二)、驱动编写与调试激光传感器节点 由于市场上存在多种品牌规格各异的产品,在实际应用前需查阅技术白皮书得知所选款式的特性参数,并参照官方样例代码尝试移植到目标平台上测试兼容性状况... 一般而言都会经历以下几个关键环节: * 配置udev规则赋予普通用户读写权限; * 编译对应的固件驱动层,确保硬件资源得到有效利用; * 封装成标准的话题发布者(Publisher)/订阅者 Subscriber 结构体形式与其他组件交互数据流... 例如YDLidar X系列产品的Python封装案例可参考如下链接:[https://github.com/ydlidar/ydlidar_ros_driver/tree/master/scripts/python](https://github.com/ydlidar/ydlidar_ros_driver/tree/master/scripts/python) 最后别忘了定期检查日志输出内容排查故障隐患哦~ --- 希望上述分享能够帮助您顺利完成整个实验任务~
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值