主页
产品
应用案例
新闻动态
购买渠道
下载与支持
关于我们
生态合作
联系我们
主页
产品
新闻动态
购买渠道
下载与支持
关于我们
加入我们
联系我们
  • 中文|
  • Eng
  • 如何利用SLAMWARE ROS SDK进行机器人导航定位开发

     

    承接上篇,上篇講到,SLAMWARE ROS SDK的發(fā)布,既可以讓用戶(hù)在機(jī)器人開(kāi)發(fā)中實(shí)現(xiàn)使用SLAMWARE提供的建圖、定位和導(dǎo)航功能,又能保留原先基于ROS開(kāi)發(fā)的應(yīng)用邏輯,一舉兩得。

    今天,小嵐就來(lái)踐行上篇的承諾,帶大家體驗(yàn)一下如何利用SLAMWARE ROS SDK進(jìn)行業(yè)務(wù)開(kāi)發(fā)。

    我們先從機(jī)器人的移動(dòng)開(kāi)始說(shuō)起。

    一、鍵盤(pán)控制 (前后左右移動(dòng))

    還記得ROS中最經(jīng)典的turtlesim(http://wiki.ros.org/turtlesim/)嗎?案例中啟動(dòng)turtle_teleop_key節(jié)點(diǎn)就可以通過(guò)鍵盤(pán)方向鍵控制小海龜移動(dòng)了。

    但是,用戶(hù)拿到我們基于SLAMWARE的機(jī)器人或者建圖雷達(dá)產(chǎn)品,一開(kāi)始在RViz中顯示的只是一張地圖信息,想要用鍵盤(pán)控制機(jī)器人移動(dòng)方向,發(fā)現(xiàn)并不奏效?

    這時(shí)候,參閱SLAMWARE ROS SDK開(kāi)發(fā)文檔可以發(fā)現(xiàn), slamware_ros_sdk_server_node訂閱了【方向移動(dòng)】的標(biāo)準(zhǔn)類(lèi)型topic,也就是說(shuō),想要實(shí)現(xiàn)利用鍵盤(pán)控制“機(jī)器人”,我們只需編一個(gè)節(jié)點(diǎn)接收鍵盤(pán)信息,當(dāng)收到鍵盤(pán)信息后往該topic發(fā)對(duì)應(yīng)的指令消息即可。

    相應(yīng)的消息參數(shù)如下:

    在利用sdk進(jìn)行鍵盤(pán)控制的時(shí)候,開(kāi)發(fā)的主要重點(diǎn)有以下幾個(gè),小嵐已經(jīng)幫大家羅列好了:

    1、定義鍵盤(pán)按鈕

    2、定義pub,制定消息topic及消息類(lèi)型

    3、初始化節(jié)點(diǎn)

    這些都操作完成之后,當(dāng)按下的按鍵在之前定義的案件keys中時(shí),將對(duì)應(yīng)的值賦給linearX,angularZ。

    4、根據(jù)topic所需類(lèi)型組裝發(fā)布消息

    至此,利用鍵盤(pán)控制機(jī)器人的部署已經(jīng)完成,完成這一步的小伙伴可以分別啟動(dòng)slamware_ros_sdk_server_node與teleop_twist_keyboard節(jié)點(diǎn)試一下【前后左右】移動(dòng) 。

    下面,我們進(jìn)一步深入了解導(dǎo)航定位這個(gè)問(wèn)題。大家都知道,思嵐有一款可擴(kuò)展的機(jī)器人管理與開(kāi)發(fā)軟件 —— RoboStudio,里面集成了機(jī)器人運(yùn)動(dòng)及控制開(kāi)發(fā)各項(xiàng)功能,可以對(duì)移動(dòng)機(jī)器人發(fā)送指令,實(shí)現(xiàn)對(duì)機(jī)器人的可視化監(jiān)控。

    那,如何讓ROS實(shí)現(xiàn)Robostudio同樣的功能呢?

     

    二、導(dǎo)航定位 

    1、導(dǎo)航定位

    SLAMWARE ROS SDK的發(fā)布,使得所有基于SLAMWARE的機(jī)器人的定位和地圖信息都可以在RViz中顯示。有了地圖之后,我們可以點(diǎn)擊任意位置,機(jī)器人會(huì)自動(dòng)規(guī)劃一條最佳路線(xiàn)移動(dòng)到目的地。

     

    2、虛擬墻/虛擬軌道

    對(duì)于思嵐來(lái)說(shuō),除了自主定位導(dǎo)航技術(shù)之外,還有一大特點(diǎn)功能就是基于純軟件設(shè)置的虛擬墻/虛擬軌道,不需任何實(shí)物鋪設(shè),靈活控制機(jī)器人活動(dòng)范圍。這個(gè)在實(shí)際應(yīng)用場(chǎng)景中有很大的意義。

     

    下面,我們就開(kāi)始上手實(shí)驗(yàn)吧~

    首先,先找到文檔中的【virtual_walls】這個(gè)topic,發(fā)布的消息類(lèi)型是自定義類(lèi)型,點(diǎn)擊可查看類(lèi)型結(jié)構(gòu)信息。

     

    同樣的,小嵐給大家畫(huà)了一下重點(diǎn):

    (1)初始化節(jié)點(diǎn)、定義publisher與subscriber對(duì)象

    (2)全局定義了一個(gè)Marker類(lèi)型,lines用以存儲(chǔ)發(fā)布虛擬墻

    (3)接收到slamware_ros_sdk_server_node節(jié)點(diǎn)發(fā)來(lái)的虛擬墻消息后,保存到lines中

    (4)配置lines,如:類(lèi)型、尺寸和顏色等

    (5)將lines發(fā)布出去

     

    部署完之后,我們分別啟動(dòng)slamware_ros_sdk_server_node, view_slamware_ros_sdk_server_node和display_virtual_lines節(jié)點(diǎn)。

    此時(shí),在RViz中需要配置添加Marker信息,先找到在RViz中點(diǎn)擊左下角【Add】按鈕。

    選擇添加【Marker】顯示對(duì)象。

    添加完成之后,我們繼續(xù)在參考文檔中找到【add_ lines】這個(gè)topic,然后我們就可以自定義。點(diǎn)進(jìn)去查看自定義類(lèi)型的組成與描述:線(xiàn)段類(lèi)型、添加位置、以及相關(guān)定義

    啟動(dòng)slamware_ros_sdk_server_node節(jié)點(diǎn),連上機(jī)器人,然后在命令行中輸入:

    rostopic pub /slamware_ros_sdk_server_node/add_line slamware_ros_sdk/AddLineRequest -1 -- '[0]' '[1, [0.0, 0.0], [1.0, 1.0]]'

    此時(shí),我們就可以在Rviz中看見(jiàn)虛擬墻了。

    那要如何刪除呢?同理,我們找到clear_lines節(jié)點(diǎn)信息,在命令行輸入相應(yīng)代碼即可:

    rostopic pub /slamware_ros_sdk_server_node/clear_lines slamware_ros_sdk/ClearLinesRequest -1 '[0]'

    虛擬軌道功能開(kāi)發(fā)亦是如此。

    ……以上,僅為SLAMWARE ROS SDK中功能兩個(gè)簡(jiǎn)單功能的演示??刂茩C(jī)器人運(yùn)動(dòng)狀態(tài)、轉(zhuǎn)向、旋轉(zhuǎn)角度、地圖同步、清空地圖等topic的靈活使用,將可以更好的對(duì)機(jī)器人進(jìn)行監(jiān)測(cè)與控制。

    那么,你準(zhǔn)備好去探索了嗎?

     

    關(guān)鍵字:SLAMWARE ROS SDK

    top