史上最全|ROS与RPLIDAR结合使用说明及问题汇总

发布时间:2017年09月04日 21:32:00    浏览数:645次    来自:思岚科技
随着科学技术的不断发展,服务机器人等诸多智能产品逐渐进入人们的视线,不管是家庭中常见的扫地机器人、还是商场里的导购机器人,要让他们智能化的完成任务,智能移动与导航是不可或缺的关键技术。

随着科学技术的不断发展,服务机器人等诸多智能产品逐渐进入人们的视线,不管是家庭中常见的扫地机器人、还是商场里的导购机器人,要让他们智能化的完成任务,智能移动与导航是不可或缺的关键技术。

插个广告:

RPLIDAR A1 

RPLIDAR A2

Turtlebot3 Burger

Turtlebot3 Waffle

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

1、RPLIDAR 产品简介

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

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

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

微信图片_20170904211235.jpg

RPLIDA A1


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

A2的测距范围为0.15~8米,最长可达16米测距半径,360°全角度测量,每秒扫描4000个点,扫描频率1~10hz可调。

微信图片_20170904211350.jpg

RPLIDAR A2


 针对RPLIDAR ,官网提供SDK下载,并且包含相应的frame_grabe可视化测试界面。具体操作流程如下:


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

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

微信图片_20170904211518.jpg

(3)frame_grabber界面;

微信图片_20170904211522.jpg

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

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


2、RPLIDAR的ROS package rplidar_ros 介绍

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

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

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

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

微信图片_20170904211734.jpg

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

2.2 rplidar _ros  github:

 https://github.com/robopeak/rplidar_ros

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

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

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

wiki: 包含更加具体的说明和使用介绍,

commit、branch、release、contributors是rplidar_ros开发迭代的记录。

2.3 rplidar_ros消息机制

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

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


微信图片_20170904211744.jpg

2.4 rplidar_ros坐标系说明:

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


微信图片_20170904211747.jpg

微信图片_20170904211750.jpg

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

微信图片_20170904212233.jpg

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

 $ roslaunch rplidar_ros view_rplidar.launch

微信图片_20170904212452.jpg

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


微信图片_20170904212456.jpg

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

前面详细介绍了rplidar_ros package的相应功能,那么,如果我要在一台机器人本体上搭载激光雷达,需要怎么设置呢?

利用好ROS里已有package搭建系统实现基本功能,再关注一下topic/service和TF frame是否协调。TF是ROS里面主要的概念,它维护着每个数据对应坐标系之间的位姿变换关系。要搭建带rplidar的机器人ROS系统, 你就需要依据实际安装信息统一好rplidar坐标系与机器人本体base坐标系的变换关系。实现这种变换关系主要有三种,分别如下:

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

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

微信图片_20170904212605.jpg

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的构建情况:



微信图片_20170904212728.jpg

4、利用RPLIDAR在ROS环境建图:

4.1 当前开源的2D激光雷达slam的ROS 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 tree(gmapping为例)

微信图片_20170904212901.jpg

4.3 rqt_graph(gmapping为例)

微信图片_20170904212942.jpg

4.4 SLAM建图效果:

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

微信图片_20170904213008.jpg

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_tree和rqt_graph是否正常,如还是有问题,返回windows系统检查官方驱动是否有问题;

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


标签: ROSClubrplidar思岚科技

评论共0条评论

登录后再评论!

全部评论

目前没有评论