主页
产品
应用案例
新闻动态
购买渠道
下载与支持
关于我们
生态合作
联系我们
主页
产品
新闻动态
购买渠道
下载与支持
关于我们
加入我们
联系我们
  • 中文|
  • Eng
  • ROS与RPLIDAR结合使用说明及问题汇总

     

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

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

    1、RPLIDAR 产品简介

    RPLIDAR是思岚科技自主研发的激光雷达,目前有RPLIDAR A1/A2/A3/RPLIDAR S1及SLAMTEC Mapper五款成熟的商业激光雷达产品。五款产品均可从官网获取相应的SDK和开发指导文档。其中SLAMTEC Mapper是思岚科技近日推出的全新激光雷达品类,内置实时建图及定位功能,其中包含了思岚第三代高性能SLAM引擎和激光雷达,无需任何外部依赖,上电即用。适用于机器人导航定位、环境测绘、手持测量等多个领域。

     RPLIDAR 产品简介

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

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

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

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

     

    (3)frame_grabber界面;

     

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

    简介与规格书(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

     

    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)。

     

    2.4 rplidar_ros坐标系说明:

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

    2.5 rplidar_ros启动说明:

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

    ls -l /dev |grep ttyUSB

    sudo chmod 666 /dev/ttyUSB0

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

    sudo chmod 666 /dev/ttyUSB0

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

    ./s/create_udev_rules.sh

     

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

    $ roslaunch rplidar_ros view_rplidar.launch

     

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

     

    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设置。

     

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

     

    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为例)

     

    4.3 rqt_graph(gmapping为例)

     

    4.4 SLAM建图效果:

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

     

    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邮箱,我们将及时为各位小伙伴们解答!

     

    关键字:ROS与RPLIDAR结合使用

    top