在ROS下使用EAI的激光雷达YDLIDAR-X4

ROS下使用EAI的激光雷达YDLIDAR-X4

1、系统环境

ROS2GOU盘 系统:Ubuntu16.04 + ROS Kinetic

激光雷达:EAIYDLIDAR X4

 

主要参考文档:

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

 

[介绍EAIYDLIDAR-X4激光雷达在ROS下使用方法

2018-05-17corvin_zhang发布](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

[ROSSLAM入门教程-激光雷达(EAI F4)gmapping构建地图](https://www.ncnynl.com/archives/201702/1363.html)

 

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

 

(2)进入目录

cd ~/lidar_ws/src

(3)下载ROS驱动包

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

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

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

http://www.eaibot.com/

下载ROS驱动包

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

 

方法二、直接联网下载(可能不识别是X4的,听说驱动可能更新)

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

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

 

(4)编译代码

切换工作空间根目录 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

 

(5)添加环境变量

cd ~/lidar_ws

source devel/setup.bash

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

source ~/.bashrc

 

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

永久添加配置,输入以下命令就可以不用一直重复source

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

刷新配置:source ~/.bashrc

以防万一还是再source当前环境:source ~/lidar_ws/devel/setup.bash

 

“直接使用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系统中的,利用包的名字直接切换到相应的文件目录下。

 

(6)添加udev规则(非必须)

cd ~/lidar_ws/src/ydlidar/startup

sudo ./initenv.sh

ls -l /dev/ttyUSB*

ls -l /dev/ydlidar

 

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

 

参考资料:

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

[ROS 简单的udev rules](https://blog.csdn.net/u011118482/article/details/52442403)

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

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

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

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

[ros使用usb硬件,调用固定设备名修改设备权限的设置方法](https://blog.csdn.net/qq_38288618/article/details/77839305)

 

(7)创建别名,运行脚本

X4 的串口增加一个设备别名 /dev/ydlidar

 

方法一、直接用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 才生效

 

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

备注:官方手册说要改,lidar.launch文件路径在 /home/tianbot/lidar_ws/src/ydlidar/launch打开 lidar.launch,

修改<param name="baudrate" type="int" value="128000"

 

树莓派的地址如下:

/home/corvin/lidar_ws/src/ydlidar/launch

修改lidar.launch文件后,先另存到其它目录,再拷贝过来(貌似不能直接替换)

 

其它方法:ubuntu中调用VIM命令直接修改(未测试成功)

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

cd ~/lidar_ws/src/ydlidar/launch

vim lidar.launch

以下

<param name="baudrate" type="int" value="128000"

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

 

 

3、运行激光雷达

电脑Ubuntu系统中,运行雷达并用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、问题及解决

错误问题1:供电不足

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

 

错误问题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/

 

树莓派使用问题

  1. 供电问题
    现象:雷达不转, 雷达转几下停了,雷达正常转,但是启动 lidar.launch过程中有提示
    错误提示[ERROR] [1543845072.458324094]: start YDLIDAR is failed! Exit!!
    解决方法:充电宝好像不行(自动断电?),要找个比较稳定的电源适配器。
    https://github.com/EAIBOT/ydlidar/issues/12
     
    2、RViz不显示点云图像
    启动激光雷达EAI YDLIDAR X4后,查询有数据(rosrun ydlidar ydlidar_client),但是在RViz中没有图像,解决办法是改变显示方式:把Style 从Squares改成 Points,就显示了。
     
    问题解决:把Style 从Squares改成 Points就显示

     
    5、查询激光雷达数据及其发布的消息
    rosmsg show sensor_msgs/LaserScan
     

     
    查询雷达输出话题:rostopic echo -n1 /scan
    (下面这个命令少了 –n1,会不停地刷新数据)

     
    [ROS中发布激光扫描消息]( https://www.cnblogs.com/21207-iHome/p/7840129.html)
    通过 rostopic hz /scan 命令查看激光数据发布频率

     
    插入USB后在终端中输入以下命令查看USB转串口设备:ls /dev/tty*

猜你喜欢

转载自blog.csdn.net/nomil9/article/details/84777385