陳濤 南喧陽 陳然 孫文匯
摘要:瓦力機器人是基于ROS系統(tǒng)的智能導(dǎo)航機器人。可以自主構(gòu)建室內(nèi)2D模型,利用體感攝像頭識別物體將其得到的點云數(shù)據(jù)發(fā)送給雷達(dá),雷達(dá)對其實現(xiàn)空間匹配,然后通過SLAM算法計算并構(gòu)建出空間模型。將機器人的三維模型手動構(gòu)建以后,映射到雷達(dá)構(gòu)建的空間模型中,再使用主題于節(jié)點的相互形式以實現(xiàn)導(dǎo)航功能。最后將深度攝像頭探取的物體描述通過兩個六自由度機械臂以及履帶式底盤對其不定點的抓取。
關(guān)鍵詞:ROS激光雷達(dá)深度攝像頭Arduino樹莓派編碼電機
前言
目前,工業(yè)機器入主要負(fù)責(zé)焊接、噴涂、搬運等重復(fù)性勞動密集型工作。這種工業(yè)機器人確實提高了一些企業(yè)的工作效率,節(jié)約了成本,擴大了企業(yè)的效益,但是對于上班族來說卻毫無用處。因此,我們設(shè)想并簡單地制造了一個機器人 ROS機器人。它將來可以用于辦公室、家庭和其他地方。
ROS平臺提供了協(xié)議和軟硬件環(huán)境的SLAM技術(shù)服務(wù)。機器人形態(tài)是一種軟硬件結(jié)合的服務(wù)產(chǎn)品。它為地圖建模和應(yīng)用提供了一站式的軟件節(jié)點和教程,并擴展了更多的硬件支持,以滿足不同場景的需求。利用SLAM來收集室內(nèi)點云數(shù)據(jù),構(gòu)建一個大型的公共服務(wù)機器人地圖建模和室內(nèi)地圖數(shù)據(jù)運營商。數(shù)據(jù)服務(wù)可應(yīng)用于學(xué)校、商場、體育場館、博物館等場所的服務(wù)機器人,具有跨場景功能,無需重復(fù)建模,類似于汽車導(dǎo)航中使用的地圖數(shù)據(jù)服務(wù)。最終目標(biāo)是實現(xiàn)ROS框架云機器人,它的大部分智能模塊通過云服務(wù)提供算法服務(wù)。根據(jù)ROS協(xié)議機器人的下游應(yīng)用開發(fā)可以通過簡單的構(gòu)件構(gòu)建自己的智能機器人,服務(wù)于各行各業(yè),走進(jìn)每個客廳,
1 ROS系統(tǒng)Arduino庫的安裝
rosarduino_bridge功能包集包括了Arduino庫(ROSArduinoBridge)和一系列用來控制基于Arduino的ROS功能包,它使用的是標(biāo)準(zhǔn)的ROS消息和服務(wù)。這個功能包集的功能包括:支持ping聲吶和Sharp紅外線傳感器;從通用的模擬和數(shù)字信號的傳感器讀取數(shù)據(jù);控制數(shù)字信號的輸出;支持PWM舵機控制;basecontroller利用git clone https://github.com/hbrobotics/
rosarduino-bride.git,然后拷貝Arduino庫文件到相應(yīng)的Arduino IDE的libraries目錄,根據(jù)自己的需求改代碼,配置機器人的參數(shù),拷貝一份新的配置文件,改里面的參數(shù),主要修改就是啟用base Controller,修改PID參數(shù),修改機器人的參數(shù),在新終端下,發(fā)布Twist消息來控制機器人的運行。接下來就是實現(xiàn)機器人底盤線速度和角速度的標(biāo)定以及該驅(qū)動馬達(dá)的獨立PID調(diào)速。
2基于激光雷達(dá)數(shù)據(jù)構(gòu)造地圖
激光雷達(dá)具有測量精度高的顯著特點,是測量距離非常好的選擇,但同時他也具有功耗高成本高等缺點,目前普遍使用的2D的激光雷達(dá),智能測量一個平面內(nèi)周圍的距離,雷達(dá)采用USB接口的方式與樹莓派相連起到供電和數(shù)據(jù)傳輸?shù)淖饔谩?/p>
將雷達(dá)的驅(qū)動包放到src目錄下編譯,建圖現(xiàn)在普遍用的gmappmg和hector slam兩個包分別來構(gòu)建地圖,兩個包的主要區(qū)別在于需不需要里程計數(shù)據(jù)。
2.1使用hector slam構(gòu)建地圖
安裝hector slam (sudo apt-get install roskinetic-hectorslam),然后編寫hector slam啟動launch文件需要注意的一點需要在launch文件中編寫一個static tf類型basejrame2_laser坐標(biāo),建立底盤與激光雷達(dá)坐標(biāo)系的映射。啟動launch文件,可以通過鍵盤控制機器人的移動構(gòu)建地圖。
2.2使用gmapping繪制地圖
安 裝slam_gmapping (sudo aptget install roskineticslam-gmapping) .gmapping建圖和hector slam差不多,但是需要到里程計數(shù)據(jù)。也是通過啟動Iaunch文件,使用鍵盤控制機器人的移動。然后執(zhí)行地圖生成命令。
3體感攝像頭對圖像的識別和圖像處理
kinect攝像頭的工作原理其實和人的眼睛很相似。當(dāng)光線照射物體,物體上的光線反射通過人的晶狀體聚焦,在視網(wǎng)膜上就可以形成圖像,然后視網(wǎng)膜的神經(jīng)感知到圖像將信息傳到大腦,我們就能看見東西了。攝像頭的原理和扎爾格過程非常的相似,光線照射物體,物體上的光線反射通過鏡頭聚焦,圖像傳感器就會感知到圖像。得到的點云數(shù)據(jù)傳送給雷達(dá),從而使雷達(dá)對其進(jìn)行空間匹配。
4上位機功能模塊的設(shè)計
瓦力選用了樹莓派為主控制器,一個USB 2.O接口與ArduinoUNO的USB Type B接口連接,通過串口方式發(fā)送命令給ArduinoUNO,此USB接口同時給Ardunio UNO供電,一個USB 2.O接口與激光雷達(dá)的USB Micro連接,激光雷達(dá)通過串口的方式發(fā)送激光數(shù)據(jù)?!珎€USB2.O接口與Kinect攝像頭USB數(shù)據(jù)線連接。
樹莓派安裝ROS機器人操作系統(tǒng),把底層驅(qū)動的邏輯運算放在樹莓派中處理。
因為arduino底層驅(qū)動可用兩個功能包rosserial_arduino和rosarduino-bridge實現(xiàn)base controller,通過實踐證明ROSlib是非常占用arduino資源的,如果要訂閱TWist,同時發(fā)布TF,Odometry消息則至少需要3k的SRAM,。Arduino UNO只能作為接收Tvrist消息,來控制底盤,如果用rosserial_arduino做到完整的Base Controller就只能上Arduino Mega2560了這無疑會增加不少成本,所以盡量推薦使用rosarduino-bridg,把邏輯的運算放在上位機上運行,Arduino單純的作為硬件的控制器。
激光雷達(dá)和kinect攝像頭的控制和運行也是基于樹莓派,主要用于SLAM算法構(gòu)建空間模型,amcl定位及move_base路徑規(guī)劃。
目前,基于幾何特征的環(huán)境地圖表示法,由于具有存儲空間簡約、直觀、易于實現(xiàn)等優(yōu)點,是SLAM研究中應(yīng)用最廣的表示方法。
這一部分我們先進(jìn)行室內(nèi)2D模型的自主構(gòu)建,利用體感攝像頭識別物體將其得到的點云數(shù)據(jù)發(fā)送給雷達(dá),雷達(dá)對其實現(xiàn)空間匹配,然后通過SLAM算法計算并構(gòu)建出空間模型。
amcl定位是arncl接收基于激光的地圖,激光掃描和tf變換消息,并輸出位姿估計在啟動時,amcl根據(jù)提供的參數(shù)初始化其粒子濾波器。
move_base路徑規(guī)劃是指機器人按照某一性能指標(biāo)(如時間、距離、能量等)搜索一條從起始狀態(tài)到目標(biāo)狀態(tài)的最優(yōu)或次優(yōu)路徑。
路徑規(guī)劃的方法主要是基于示例、基于行為和基于環(huán)境模型三種類型。在已有地圖的情況下,需要讓機器人能夠在地圖中定位的自己的位置,這就需要時用到ROS的ACML包來實現(xiàn),同時發(fā)布目標(biāo)位置通過movejoase來做路徑規(guī)劃,繞過障礙物到達(dá)目的地。
5總結(jié)分析
瓦力是基于ROS系統(tǒng)的機器人,以arduino做為底層驅(qū)動,樹莓派做為上位機,結(jié)合激光雷達(dá),深度攝像頭,六度自由機械臂的服務(wù)型機器人。
瓦力的使用性很廣泛,比如家里,老人小孩不方便行動自己拿取東西都可以給瓦力發(fā)送指令;在辦公室,為為避免人員走動,提高工作效率,可以對瓦力發(fā)送指令進(jìn)行相關(guān)資料或者物品的拿取;甚至可以應(yīng)用于各大會所、展覽等人員流動較多的場所,瓦力可以實現(xiàn)代巡邏、代垃圾的拾取,甚至可以做到服務(wù)每個人。以上只是簡單的幾個應(yīng)用場景,瓦力的這幾大功能完美的結(jié)合在一起,可以應(yīng)用于任何你需要的地方。