树莓派&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.csdn.net/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.csdn.net/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.csdn.net/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.csdn.net/u011118482/article/details/52442403

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

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

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

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

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

https://blog.csdn.net/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 命令查看激光数据发布频率

 

  • 11
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 这是一个关于ROS Noetic软件包依赖关系的问题。其中,下列软件包的依赖关系尚不足够满足要求,无法安装: ros-noetic-desktop-full: 依赖于 ros-noetic-desktop,但它不会被安装。 依赖于 ros-noetic-perception,但它不会被安装。 依赖于 ros-noetic-simulators,但它不会被安装。 依赖于 ros-noetic-urdf-sim-tu,但它不会被安装。 ### 回答2: 这个错误提示是说明在安装 ros-noetic-desktop-full 软件包时,发现它需要依赖一些其他的软件包,但是这些软件包未被安装。其中,ros-noetic-desktop、ros-noetic-perception、ros-noetic-simulators 和 ros-noetic-urdf-sim-tu 是四个未满足依赖关系的软件包。 这个错误提示一般是由于软件源的问题所导致的。在安装软件包时,系统会从软件源中查找该软件包以及它所需的依赖关系。如果软件源中不存在某个软件包的依赖关系,则会提示这个错误信息。 要解决这个问题,可以尝试以下几个方法: 1. 更新软件源:可通过修改软件源配置文件或使用软件源管理工具来更新软件源。更新后再次尝试安装软件包,看是否能够解决依赖关系问题。 2. 手动安装依赖关系:如果更新软件源后仍然无法解决依赖关系问题,可以尝试手动安装依赖关系。按照依赖关系的提示,逐个安装这四个软件包。安装完成后再次尝试安装 ros-noetic-desktop-full 软件包,看是否能够正常安装。 3. 使用 aptitude 命令安装:aptitude 命令可以自动处理依赖关系,可能会更好地解决这个问题。可以通过运行以下命令安装 ros-noetic-desktop-full 软件包: sudo aptitude install ros-noetic-desktop-full 以上是我的回答,希望能对你有所帮助。如果你还有其他问题,请随时回复。 ### 回答3: 这个问题意味着在安装 ros-noetic-desktop-full 软件包时,计算机无法满足所有需要的依赖关系。这些依赖关系包括 ros-noetic-desktop、ros-noetic-perception、ros-noetic-simulators 和 ros-noetic-urdf-sim-tu。 在解决这个问题之前,我们需要了解什么是依赖关系。在软件工程中,依赖关系指的是一个软件包需要另一个软件包才能正常运行的情况。例如,在 ROS 中,ros-noetic-desktop-full 需要依赖其他的软件包才能提供完整的功能。 为了解决这个问题,我们可以使用以下方法: 1. 更新软件包源列表。我们可以更新软件包源列表,这有助于计算机查找所需的软件包。在 Ubuntu 系统中,我们可以使用以下命令更新软件包源列表:sudo apt-get update。 2. 安装依赖关系。我们可以尝试单独安装缺失的依赖关系。在 ROS 中,我们可以使用以下命令安装缺失的软件包:sudo apt-get install ros-noetic-desktop ros-noetic-perception ros-noetic-simulators ros-noetic-urdf-sim-tu。 3. 检查软件包仓库。某些情况下,软件包源可能已经过时或不再受支持。我们可以检查软件包仓库,查看软件包是否可用。在 Ubuntu 系统中,我们可以使用以下命令查看软件包仓库:apt-cache search ros-noetic-desktop-full。 总之,无法满足依赖关系的问题是常见的,在解决这个问题之前,我们需要了解依赖关系的概念,并掌握一些解决方法。在 ROS 中,我们可以使用更新软件包源列表、安装依赖关系和检查软件包仓库等方法解决问题。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值