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

     

    隨著科學(xué)技術(shù)的不斷發(fā)展,服務(wù)機(jī)器人等諸多智能產(chǎn)品逐漸進(jìn)入人們的視線,不管是家庭中常見(jiàn)的掃地機(jī)器人、還是商場(chǎng)里的導(dǎo)購(gòu)機(jī)器人,要讓他們智能化的完成任務(wù),智能移動(dòng)與導(dǎo)航是不可或缺的關(guān)鍵技術(shù)。

    ROS作為機(jī)器人軟件平臺(tái),能為異質(zhì)計(jì)算機(jī)集群提供類似操作系統(tǒng)的功能,在研究機(jī)器人行走等方面起著重要的作用。Llidar作為機(jī)器人定位導(dǎo)航的核心傳感器,在機(jī)器人自主行走、定位導(dǎo)航方面扮演著重要角色。兩者的結(jié)合使用,使得機(jī)器人自主定位導(dǎo)航效果更佳。

    1、RPLIDAR 產(chǎn)品簡(jiǎn)介

    RPLIDAR是思嵐科技自主研發(fā)的激光雷達(dá),目前有RPLIDAR A1/A2/A3/RPLIDAR S1及SLAMTEC Mapper五款成熟的商業(yè)激光雷達(dá)產(chǎn)品。五款產(chǎn)品均可從官網(wǎng)獲取相應(yīng)的SDK和開(kāi)發(fā)指導(dǎo)文檔。其中SLAMTEC Mapper是思嵐科技近日推出的全新激光雷達(dá)品類,內(nèi)置實(shí)時(shí)建圖及定位功能,其中包含了思嵐第三代高性能SLAM引擎和激光雷達(dá),無(wú)需任何外部依賴,上電即用。適用于機(jī)器人導(dǎo)航定位、環(huán)境測(cè)繪、手持測(cè)量等多個(gè)領(lǐng)域。

     RPLIDAR 產(chǎn)品簡(jiǎn)介

    針對(duì)RPLIDAR,官網(wǎng)提供SDK下載,并且包含相應(yīng)的frame_grabe可視化測(cè)試界面。具體操作流程如下:

     針對(duì)RPLIDAR,官網(wǎng)提供SDK下載,并且包含相應(yīng)的frame_grabe可視化測(cè)試界面。具體操作流程如下

    (1)設(shè)備管理器找到對(duì)應(yīng)串口;

    (2)打開(kāi)frame_grabe,選擇對(duì)應(yīng)端口查看;

     

    (3)frame_grabber界面;

     

    詳細(xì)資料請(qǐng)參閱官網(wǎng)(http://m.korton.com.cn/cn/Support),包括:

    簡(jiǎn)介與規(guī)格書(shū)(Datasheet)、開(kāi)發(fā)套裝使用手冊(cè)、通訊接口協(xié)議與應(yīng)用手冊(cè)、SDK 用戶手冊(cè)。

    2、RPLIDAR的ROS package rplidar_ros 介紹

    rplidar_ros是國(guó)內(nèi)第一款面向全球ROS開(kāi)發(fā)者推出相應(yīng)package的激光雷達(dá),超高的性價(jià)比大大推動(dòng)了RPLIDAR在ROS中的使用,為國(guó)內(nèi)服務(wù)機(jī)器人的移動(dòng)導(dǎo)航和避障相關(guān)技術(shù)的發(fā)展和人才儲(chǔ)備起了很大的推動(dòng)作用。

    ROS之所以能夠很好的在開(kāi)發(fā)者中間推廣起來(lái),主要是因?yàn)樗⒘艘惶淄ㄓ玫耐ㄓ嵖蚣芎筒僮飨到y(tǒng)服務(wù),不同的開(kāi)發(fā)者只需要按照一定的通訊協(xié)議,關(guān)注相應(yīng)的數(shù)據(jù)接口,完成每個(gè)模塊的功能即可,大大避免了機(jī)器人重復(fù)造輪子的繁瑣過(guò)程。

    任何一個(gè)ROS生態(tài)里面的package,往往只需找到相應(yīng)的wiki和github頁(yè)面,就可以清楚的了解其數(shù)據(jù)接口和內(nèi)部的實(shí)現(xiàn)。

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

     

    wiki主要包含對(duì)應(yīng)rplidar產(chǎn)品功能和package接口和參數(shù)的說(shuō)明和相應(yīng)的使用流程介紹,以及當(dāng)前ros生態(tài)支持的版本信息。

    2.2 rplidar _ros github:

    https://github.com/robopeak/rplidar_ros

     

    rplidar_ros的github主要包含package對(duì)應(yīng)的源碼和package的版本管理和開(kāi)發(fā)者問(wèn)題對(duì)話。

    issue(open|closed): 里面主要包含開(kāi)發(fā)者關(guān)于rplidar_ros使用的相關(guān)問(wèn)題的對(duì)話,如果開(kāi)發(fā)者在使用某個(gè)package時(shí)遇到問(wèn)題都可以先在此搜索是否有相關(guān)問(wèn)題的解釋與解決方法;

    pull request:相關(guān)使用者針對(duì)原有代碼的改進(jìn),希望加入到本倉(cāng)庫(kù),以提高或增強(qiáng)相應(yīng)的功能;

    wiki: 包含更加具體的說(shuō)明和使用介紹,

    commit、branch、release、contributors是rplidar_ros開(kāi)發(fā)迭代的記錄。

    2.3 rplidar_ros消息機(jī)制

    rplidar_ros的在ROS里面的通訊接口,主要有1個(gè)話題(topic) /scan和2個(gè)服務(wù)(service)stop_motor和start_motor.。/scan主要用于向外部發(fā)送雷達(dá)數(shù)距消息(message),消息格式采用的是sensor_msgs/LaserScan,像避障或slam功能模塊對(duì)應(yīng)的ROS package就需要調(diào)用這個(gè)話題的雷達(dá)數(shù)據(jù)完成建圖或避障的功能。stop_motor和start_motor主要是用于客戶端調(diào)用服務(wù)器端關(guān)閉和啟動(dòng)雷達(dá)的接口,使系統(tǒng)可以依據(jù)需要選擇關(guān)閉和開(kāi)啟雷達(dá)。

    rplidar_ros給出的rplidar.launch,實(shí)際使用中依據(jù)具體的使用往往關(guān)注的參數(shù)有 端口號(hào)(serial_port)、坐標(biāo)系名稱(frame_id)、正反裝(inverted)。

     

    2.4 rplidar_ros坐標(biāo)系說(shuō)明:

    rplidar是按照順時(shí)針旋轉(zhuǎn),SDK數(shù)據(jù)輸出是帶距離和角度信息的左手系數(shù)據(jù),rplidar_ros輸出已經(jīng)將其轉(zhuǎn)化為右手坐標(biāo)系輸出。雷達(dá)數(shù)據(jù)坐標(biāo)系參照雷達(dá)數(shù)據(jù)線的位置(A2)/形狀(A1)和下面的圖示判斷。

    2.5 rplidar_ros啟動(dòng)說(shuō)明:

    首先要查看插上rplidar后對(duì)應(yīng)端口權(quán)限(每次插拔都要賦予一次權(quán)限):

    ls -l /dev |grep ttyUSB

    sudo chmod 666 /dev/ttyUSB0

    如果沒(méi)有讀寫(xiě)權(quán)限,需要添加其讀寫(xiě)權(quán)限(每次插拔都要賦予一次權(quán)限):

    sudo chmod 666 /dev/ttyUSB0

    每次這樣插拔都要添加權(quán)限很麻煩,可以試試添加設(shè)備的udev規(guī)則,賦予符合相應(yīng)規(guī)則的設(shè)備端口固定權(quán)限和端口名稱的映射。執(zhí)行相應(yīng)的rplidar端口映射的腳本:

    ./s/create_udev_rules.sh

     

    啟動(dòng)rplidar_ros節(jié)點(diǎn),并在rviz中顯示出雷達(dá)數(shù)據(jù):

    $ roslaunch rplidar_ros view_rplidar.launch

     

    matlab2016版本當(dāng)前還提供了ROS的功能接口,我們也可以通過(guò)matlab參看激光數(shù)據(jù)。

     

    3、搭建帶rplidar的機(jī)器人系統(tǒng):

    前面詳細(xì)介紹了rplidar_ros package的相應(yīng)功能,那么,如果我要在一臺(tái)機(jī)器人本體上搭載激光雷達(dá),需要怎么設(shè)置呢?

    利用好ROS里已有package搭建系統(tǒng)實(shí)現(xiàn)基本功能,再關(guān)注一下topic/service和TF frame是否協(xié)調(diào)。TF是ROS里面主要的概念,它維護(hù)著每個(gè)數(shù)據(jù)對(duì)應(yīng)坐標(biāo)系之間的位姿變換關(guān)系。要搭建帶rplidar的機(jī)器人ROS系統(tǒng), 你就需要依據(jù)實(shí)際安裝信息統(tǒng)一好rplidar坐標(biāo)系與機(jī)器人本體base坐標(biāo)系的變換關(guān)系。實(shí)現(xiàn)這種變換關(guān)系主要有三種,分別如下:

    3.1 通過(guò)模型的URDF文件的方式:

    在已知的機(jī)器人模型的URDF中添加描述雷達(dá)的joint和描述在機(jī)器人本體上的link。下面是曾在turtlebot仿真模型添加rplidar模型的urdf設(shè)置。

     

    3.2 TF靜態(tài)變換static_transform_publisher方式:

    在機(jī)器人啟動(dòng)的launch文件添加靜態(tài)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 通過(guò)rqt/tf_echo查看TF tree的構(gòu)建情況:

     

    4、利用RPLIDAR在ROS環(huán)境建圖:

    4.1 當(dāng)前開(kāi)源的2D激光雷達(dá)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建圖效果:

    搭建系統(tǒng)取決統(tǒng)一好topic/service和tf的接口名稱,系統(tǒng)運(yùn)行效果取決于里面的算法實(shí)現(xiàn),可能變現(xiàn)在具體的啟動(dòng)配置文件的參數(shù)設(shè)置和內(nèi)部算法實(shí)現(xiàn),那就需要查看相應(yīng)論文和代碼中涉及的算法原理和算法實(shí)現(xiàn)。

     

    5.與RPLIDAR 相關(guān)問(wèn)題匯總與說(shuō)明:

    5.1 樹(shù)莓派等單板系統(tǒng)出現(xiàn)雷達(dá)無(wú)法啟動(dòng),請(qǐng)檢查是否是供電不足導(dǎo)致的問(wèn)題;

    5.2 rplidar_ros啟動(dòng)前需要設(shè)置端口權(quán)限;

    5.3 rplidar原始數(shù)據(jù)輸出是非固定角度增量的輸出形式,rplidar_ros輸出是修正式固定角度增量輸出的數(shù)據(jù)格式;

    5.4 當(dāng)前版本的rplidar_ros發(fā)出的激光數(shù)據(jù)中的ntenstity數(shù)據(jù)是fake的無(wú)效數(shù)據(jù),不建議在實(shí)際中使用;

    5.5 rplidar_ros 是360全角度輸出的rplidar驅(qū)動(dòng),如有固定角度需求,請(qǐng)自行添加角度濾波的節(jié)點(diǎn);

    5.6 使用過(guò)程中如有問(wèn)題,先自行檢查端口權(quán)限,tf_tree和rqt_graph是否正常,如還是有問(wèn)題,返回windows系統(tǒng)檢查官方驅(qū)動(dòng)是否有問(wèn)題;

    如上述自檢均沒(méi)發(fā)現(xiàn)問(wèn)題,但仍運(yùn)行不正常,可附上檢查的信息以及難點(diǎn)一起發(fā)送至support@slamtec.com郵箱,我們將及時(shí)為各位小伙伴們解答!

     

    關(guān)鍵字:ROS与RPLIDAR结合使用

    top