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