返回列表 发帖

[教程] ROS与RPLIDAR结合使用说明及问题汇总

[教程] ROS与RPLIDAR结合使用说明及问题汇总

ROS作为机器人软件平台,能为异质计算机集群提供类似操作系统的功能,在研究机器人行走等方面起着重要的作用。Llidar作为机器人定位导航的核心传感器,在机器人自主行走、定位导航方面扮演着重要角色。两者的结合使用,使得机器人自主定位导航效果更佳。


1. rplidar产品简介

RPLIDARSLAMTEC—思岚科技自主研发的激光雷达,目前有A1A2两款成熟的商业激光雷达产品。两款产品均可从官网获取相应的SDK和开发指导文档。

rplidar A1 : https://www.slamtec.com/cn/Lidar/A1

          A1的测距范围为0.2~6米,360°全角度测量,每秒扫描2K个点,扫描频率5~10hz可调

RPLIDAR A1.jpg
2017-9-13 14:20

                              

rplidar A2: https://www.slamtec.com/cn/Lidar

          A2的测距范围为0.15~8米,360°全角度测量,每秒扫描4K个点,扫描频率5~15  hz可调

RPLIDAR A2.jpg
2017-9-13 14:20



官方针对rplidar雷达,给出的SDK中提供了相应的frame_grabe可视化测试界面。具体操作流程如下:

1.png
2017-9-13 14:20


(1)设备管理器找到对应串口

2.png
2017-9-13 14:20


(2)打开frame_grabe,选择对应端口查看

3.png
2017-9-13 14:20


(3)frame_grabber界面

4.png
2017-9-13 14:20

详细资料请参阅官网(www.slamtec.com),包括:

简介与规格书(Datasheet)、开发套装使用手册、通讯接口协议与应用手册、SDK 用户手册。


2. rplidarROS package rplidar_ros介绍

rplidar_ros是国内第一款面向全球ROS开发者推出相应package的激光雷达,其低廉的价格大大推动了激光雷达在ROS中的使用,为国内服务机器人的移动导航和避障相关技术的发展和人才储备起了很大的推动作用


   ROS之所以能够很好的在开发者中间推广起来,就是它建立了一套通用的通讯框架,不同的开发者只需要按照一定的通讯协议,关注相应的数据接口,完成每个模块的功能就OK,大大避免了机器人重复造轮子的繁琐过程。



任何一个ROS生态里面的package,往往只需找到相应的wikigithub页面,就可以清楚的了解其数据接口和内部的实现


2.1 rplidar_ros wiki:  http://wiki.ros.org/rplidar

wiki主要包含对应rplidar产品功能和package接口和参数的说明和相应的使用流程介绍,以及当前ros生态支持的版本信息。

5.png
2017-9-13 14:20


2.2 rplidar_ros github:  https://github.com/robopeak/rplidar_ros

rplidar_rosgithub主要包含package对应的源码和package的版本管理和开发者问题对话。

6.png
2017-9-13 14:20


issueopen|closed: 里面主要包含开发者关于rplidar_ros使用的相关问题的对话,如果开发者在使用某个package遇到问题都可以现在此搜索是否有相关问题的解释与解决方法;

pull request:相关使用者针对原有代码的改进,希望加入到本仓库,以提高或增强相应的功能


wiki: 包含更加具体的说明和使用介绍commitbranchreleasecontributorsrplidar_ros开发迭代的记录


2.3 rplidar_ros消息机制


rplidar_ros的在ROS里面的通讯接口,主要有1个话题(topic) /scan2个服务(servicestop_motorstart_motor./scan主要用于向外部发送雷达数距消息(message),消息格式采用的是sensor_msgs/LaserScan,像避障或slam功能模块对应的ROS package就需要调用这个话题的雷达数据完成建图或避障的功能。stop_motorstart_motor主要是用于客户端调用服务器端关闭和启动雷达的接口,使系统可以依据需要选择关闭和开启雷达


rplidar_ros给出的rplidar.launch实际使用中依据具体的使用往往关注的参数有
端口号(serial_port)、坐标系名称(frame_id)、正反装(inverted)。

7.jpg
2017-9-13 14:20



2.4 rplidar_ros坐标系说明:

rplidar是按照顺时针旋转,SDK数据输出是带距离和角度信息的左手系数据,rplidar_ros输出已经将其转化为右手坐标系输出。雷达数据坐标系参照雷达数据线的位置(A2/形状(A1)和下面的图示判断。

9.jpg
2017-9-13 14:20
8.jpg
2017-9-13 14:20



2.5  rplidar_ros启动说明:

首先要查看插上rplidar后对应端口权限(每次插拔都要赋予一次权限):

ls -l /dev |grep ttyUSB

sudo chmod 666 /dev/ttyUSB0


如果没有读写权限,需要添加其读写权限(每次插拔都要赋予一次权限)

sudo chmod 666 /dev/ttyUSB0


每次这样插拔都要添加权限很麻烦,可以试试添加设备的udev规则,赋予符合相应规则的设备端口固定权限和端口名称的映射。执行相应的rplidar端口映射的脚本

./scripts/create_udev_rules.sh


10.png
2017-9-13 14:20

启动rplidar_ros节点,并在rviz中显示出雷达数据:

$ roslaunch rplidar_ros view_rplidar.launch


11.jpg
2017-9-13 14:20

matlab2016版本当前还提供了ROS的功能接口,我们也可以通过matlab参看激光数据。

12.jpg
2017-9-13 14:20

3. 搭建带rplidar的机器人系统:

前面详细介绍了rplidar_rospackage的相应功能,如果我要在一台机器人本体上使用激光雷达需要怎么设置呢?其实在ROS里利用已有package搭建系统实现基本功能你只需要关注好topic/serviceTF frame是否协调起来。TFROS里面主要的概念,它维护着每个数据对应坐标系之间的位姿变换关系。要搭建带rplidar的机器人ROS系统,你就需要依据实际安装信息统一好rplidar坐标系与机器人本体base坐标系的变换关系。实现这种变换关系主要有三种

3.1 通过模型的URDF文件的方式

在已知的机器人模型的URDF中添加描述雷达的joint和描述在机器人本体上的link。下面是曾在turtlebot仿真模型添加rplidar模型的urdf设置。

13.png
2017-9-13 14:20

3.2 TF静态变换static_transform_publisher方式:

在机器人启动的launch文件添加静态TF变换的信息即可,

<node name="base2laser" pkg="tf"type="static_transform_publisher" args="0.07 0 0 0 0 0 1/base_link /laser 50"/>

3.3 通过rqt/tf_echo查看TF tree的构建情况:

14.jpg
2017-9-13 14:20



4. 利用RPLIDARROS环境建图:


4.1 当前开源的2D激光雷达slamROS package主要有:


gmapping

ros-perception/slam_gmapping
ros-perception/openslam_gmapping  

Hector     

tu-darmstadt-ros-pkg/hector_slam

karto

ros-perception/slam_karto
ros-perception/open_karto
skasperski/navigation_2d

cartographer


googlecartographer/cartographer  


googlecartographer/cartographer_ros


4.2  TF treegmapping为例)

15.png
2017-9-13 14:20


4.3 rqt_graphgmapping为例)

16.png
2017-9-13 14:20

4.4 slam建图效果:

搭建系统取决统一好topic/servicetf的接口名称,系统运行效果就取决于里面的算法实现,可能变现在具体的启动配置文件的参数设置和内部算法实现,那就需要查看相应论文和代码中涉及的算法原理和算法实现。

17.jpg
2017-9-13 14:20


5. rplidar相关问题汇总与说明


5.1  树莓派等单板系统出现雷达无法启动,请检查是否是供电不足导致的问题

5.2  rplidar_ros启动前需要设置端口权

5.3  rplidar原始数据输出是非固定角度增量的输出形式,rplidar_ros输出是修正式固定角度增量输出的数据格式

5.4 当前版本的rplidar_ros发出的激光数据中的ntenstity数据是fake的无效数据,不建议在实际中使用

5.5 rplidar_ros 360全角度输出的rplidar驱动,如有固定角度需求,请自行添加角度滤波的节点

5.6   使用过程中如有问题,先自行检查端口权限,tf_treerqt_graph是否正常,如还是有问题,返回windows系统检查官方驱动是否有问题;


如上述自检均没发现问题,但仍运行不正常,可附上检查的信息以及难点一起发送至support@slamtec.com邮箱,我们将及时为各位小伙伴们解答!

不错的

TOP

回复 2# apteye


  希望对你有帮助哦☺

TOP

返回列表

站长推荐 关闭


音频系统、USB TYPE-C、智能手机、移动电源、SSD 参考设计汇总(免信元)

太多参考设计,原理图了,都是精品!(免信元下载)


查看