陳凱凱 , 鄧 鵬 , 陽映雯 , 彭俊豪 , 王世超 , 付天應
(荊楚理工學院電子信息工程學院,湖北 荊門 448000)
隨著人工智能技術與機器人關鍵技術的發(fā)展[1-2],智能機器人的發(fā)展也隨之加快,同時機器人的發(fā)展減少了企業(yè)在人工方面的投入,提高了企業(yè)生產(chǎn)效率與產(chǎn)品質(zhì)量。在智能制造、智能物流、智慧農(nóng)業(yè)、智能交通等領域都大量應用了機器人,在日常生活中也可見服務型機器人,如在超市、醫(yī)院、警用、機場、火車站、銀行等所使用的服務型機器人。
基于ROS(Robot Operating System)系統(tǒng)的倉庫巡邏機器人以工控機為核心,驅(qū)動一體控制器為上位機控制中心,通過激光雷達采集外部環(huán)境信息來繪制地圖,并結合各類傳感器進行巡邏,如溫度傳感器、濕度傳感器、煙霧傳感器和火焰?zhèn)鞲衅鳙@取外界環(huán)境參數(shù)。該倉庫巡邏機器人通過激光雷達構建倉庫巡邏地圖,同時對倉庫內(nèi)的溫度、濕度、煙霧、火情及外人進入進行判斷,實現(xiàn)報警的功能。
機器人操作系統(tǒng)ROS具有點對點、免費的開源軟件包等特點,同時機器人操作系統(tǒng)ROS作為機器人軟件開發(fā)平臺可以提供不同機器人的軟件包,使開發(fā)者可將原有的軟件包進行改寫、修改參數(shù)和直接引用;將原本松散的框架進行耦合,為他們提供通信框架。ROS操作系統(tǒng)中適用的編程語言也非常豐富,如C++、python和java等,為消息之間的相互交互提供高效的支持。而在機器人編程中主要采用的是C++和python語言編程。ROS是通信機制、工具軟件包、機器人技能和機器人生態(tài)系統(tǒng)的集合體。而現(xiàn)在ROS已被多種機器人在研究開發(fā)中使用,如服務型機器人、無人機、移動機器人等相關機器人。
倉庫巡邏機器人系統(tǒng)其上位機為工控機,且以工控機為核心控制器的卡片式電腦作為控制核心平臺,在ROS的軟件開發(fā)框架下可通過激光雷達采集外部環(huán)境信息,實現(xiàn)可以集掃描、SLAM和最優(yōu)路徑規(guī)劃為一體的導航功能,通過其他傳感器對倉庫內(nèi)外環(huán)境進行掃描與檢測,將信息傳輸?shù)津?qū)動一體控制器,最后通過驅(qū)動一體控制器將數(shù)據(jù)傳輸?shù)焦た貦C后,通過工控機再傳輸給監(jiān)控界面,進而實現(xiàn)倉庫巡邏機器人的巡邏、監(jiān)控、報警等相關功能,同時對自身防撞與防跌進行防范。倉庫巡邏機器人硬件系統(tǒng)框架圖如圖1所示。
圖1 倉庫巡邏機器人硬件系統(tǒng)框架圖
機器人定位導航、物體環(huán)境建模均建立在激光雷達所采集的信息的基礎上[3-4]。本設計的倉庫巡邏機器人采用思嵐RPLIDAR A1激光雷達。測距范圍為15 cm~600 cm,掃描角度為0~360°,掃描頻率為5 Hz~15 Hz。發(fā)送指令控制機器人電機驅(qū)動,通過激光雷達360°發(fā)射激光并接收激光信息,將激光雷達數(shù)據(jù)和機器人運動的坐標變換關系TF再以串口的形式傳遞給上位機,通過上位機來發(fā)布地圖信息。激光雷達是通過發(fā)射器發(fā)射激光束并接收目標反射的激光束來對目標進行測量距離的,并利用三角測距的原理,推算出目標或被測物體的距離并生成平面點云地圖信息,進而建立巡邏地圖。激光雷達對環(huán)境的要求比較低,基本不受外界環(huán)境的影響,同時激光雷達測量精確,可以比較精準地提供角度信息和測量距離信息,使測量角度達到小于1°的精準度和厘米級的距離測量精度。
人機交互在早期經(jīng)歷了命令行交互階段和圖形用戶階段,而現(xiàn)在人機交互在各方面有著廣泛應用,如可以用在人體測溫中。本設計中倉庫巡邏機器人所采用的深度相機為orbbec深度相機,它的視場為水平70°、垂直60°,工作范圍為80 cm~400 cm,它對倉庫物品的溫度、人員溫度測量起著重要作用,同時機器人可通過深度相機掃描對人員信息進行存儲,當外來人員入侵時對其進行掃描并與庫中人員信息進行對比,以防范盜竊等情況的發(fā)生。
倉庫巡邏機器人在移動底盤上裝有三組超聲波傳感器。超聲波傳感器工作電源為5 V、工作電流小于20 mA、有效測距為4 cm~500 cm、分辨率為1 cm,并且內(nèi)置溫度補償電路。通過超聲波傳感器可測量機器人與物體之間的距離。
碰撞防跌傳感器是由碰撞機械傳感器和紅外燈防跌傳感器組合在一塊構建而成的,其主要是起到使機器人在運動過程中達到一個輔助避障的作用,防止機器人在走到路坑時發(fā)生跌倒的情況。機械碰撞傳感器適用電源為3.3 V~5 V,觸點耐壓值為交流125 V,觸點壽命可達到10萬次。紅外防跌傳感器的檢測距離為0.1 cm~60 cm可調(diào),距離越近性能越穩(wěn)定,白色反射距離最遠,其工作溫度范圍為-10 ℃~50 ℃,工作電流為1 A以上的電源供電。并且,紅外防跌傳感器可直接與單片機I/O連接,碰撞防跌傳感器可以防止機器人在運動過程中跌落。
倉庫巡邏機器人也可以添加一些其他的傳感器來實現(xiàn)其巡邏的功能[5]。例如,煙霧傳感器,對于機器人在發(fā)現(xiàn)火災時起著檢測與防范的作用并對煙霧濃度進行檢測;溫濕度傳感器對倉庫內(nèi)環(huán)境進行溫度檢測,檢測溫度的同時將相關數(shù)據(jù)上傳到上位機與監(jiān)控界面;攝像頭獲取圖像信息等。同時,倉庫巡邏機器人包括里程計、陀螺儀和加速度計來獲取機器人的角速度和加速度。將數(shù)據(jù)傳輸?shù)焦た貦C,由工控機結合二者將其姿態(tài)數(shù)求出,同時在TF坐標變換中進行計算。
ROS Master是ROS的調(diào)度中樞,可以看作一個服務器,其余的節(jié)點是發(fā)布者(tallker)或訂閱者(listener)。在軟件系統(tǒng)設計方面可以將其分為兩層:1)監(jiān)控操作層。通過裝有的Ubuntu系統(tǒng)來連接巡邏機器人,同時在監(jiān)控操作層獲取機器人的相關信息。2)感知執(zhí)行層。通過傳感器獲取外部數(shù)據(jù),通過監(jiān)控界面,使巡邏機器人按既定線路巡邏;通過圖像傳輸節(jié)點將圖像信息進行保存,通過運動控制節(jié)點使機器人運動,通過激光雷達數(shù)據(jù)建立地圖信息。巡邏機器人通過已保存的地圖信息實現(xiàn)最優(yōu)路徑規(guī)劃、自主導航、自主定位的功能,最終完成倉庫巡邏機器人的巡邏監(jiān)控。倉庫巡邏機器人軟件設計框架圖如圖2所示,通過人機交互節(jié)點將Unbtun系統(tǒng)與ROS Master進行連接,再通過姿態(tài)、自主導航、運動控制、圖像控制、環(huán)境感知和報警節(jié)點將信息傳輸?shù)絉OS Master。
圖2 倉庫巡邏機器人軟件設計框架圖
SLAM(Simultaneous Localization And Mapping)也稱同步定位與地圖構建[6-7]。SLAM地圖構建離不開TF坐標變換和激光雷達數(shù)據(jù)。機器人從未知環(huán)境的未知地點運動,通過運動過程觀測地圖目標、特征定位、自身位置和姿態(tài)。倉庫巡邏機器人巡邏地圖是基于激光雷達來建立SLAM地圖的。機器人操作系統(tǒng)ROS首先通過map的消息格式來定義地圖的原點和地圖長寬等相關信息,再將自行填充的map數(shù)據(jù)進行數(shù)據(jù)發(fā)布;通過mappub實現(xiàn)地圖數(shù)據(jù)初始化填充和地圖數(shù)據(jù)發(fā)布,其初始化主要包括地圖原點、長度、寬度及各點的狀態(tài)值,再通過創(chuàng)建發(fā)布者,并在map上發(fā)布地圖數(shù)據(jù);通過TF從外部接收消息,并確定base_link與map的坐標變換關系,通過tfbrd來發(fā)布坐標變換關系。創(chuàng)建類用于控制建圖,對其進行初始化發(fā)布者并創(chuàng)建激光雷達接收數(shù)據(jù),利用bresenham算法存儲激光雷達掃描過的地圖柵格點。最后通過機器人操作系統(tǒng)ROS的可視化工具Rviz便可看到地圖信息。SLAM地圖如圖3所示。
圖3 SLAM地圖
通過對機器人SLAM地圖的構建,可實現(xiàn)機器人巡邏、自主導航和運動控制的功能。機器人SLAM的搭建,可以將機器人所獲得的信息與實際情況進行有效結合。同時,工程師可以更加方便地更改機器人的路徑并實時監(jiān)控機器人的自身定位。
路徑規(guī)劃主要是建立在可靠的柵格地圖基礎上,機器人通過路徑規(guī)劃來完成自主導航的功能,而機器人巡邏則是通過全局路徑規(guī)劃和局部路徑規(guī)劃來實現(xiàn)最優(yōu)路徑的選擇,使機器人可以更加高效地完成相關功能。本設計中全局路徑規(guī)劃主要采用A*算法來實現(xiàn),而相對于傳統(tǒng)的Dijkstra算法而言,A*算法更加高效,并且使機器人獲得了全局最優(yōu)路徑,通過局部路徑規(guī)劃進而完善全局路徑規(guī)劃,A*算法綜合了最良優(yōu)先搜索和Dijkstra算法的優(yōu)點,在進行啟發(fā)式搜索提高算法效率的同時,保證找到一條最優(yōu)路徑(基于評估函數(shù))。A*算法核心公式就是F值的計算:F=G+H(F代表方塊總移動代價,G表示開始點到當前方塊的移動代價,H表示當前方塊到結束點的預估移動代價),而對于局部路徑規(guī)劃常用的方法為動態(tài)窗口法(dwa算法),此算法主要在速度空間中采樣多組速度值,并模擬機器人在下一個時間的軌跡。通過對采樣結果的評價后選擇一條最優(yōu)的路徑,實現(xiàn)使機器人具有自主避開障礙物和自主移動的能力與功能。通過python編程實現(xiàn)A*算法路徑規(guī)劃圖和dwa算法路徑規(guī)劃圖,分別如圖4、圖5所示。
圖4 A*算法路徑規(guī)劃圖
圖5 dwa算法路徑規(guī)劃圖
機器人仿真地圖通過gazebo仿真來對機器人和地圖進行搭建。1)首先通過URDF創(chuàng)建機器人模型,然后對機器人的攝像頭、激光雷達、深度相機、紅外傳感器和碰撞傳感器進行仿真配置,并通過命令將機器人模型啟動,通過gazebo功能包調(diào)用激光仿真器插件,通過對機器人模型的更新并啟動,最后可以通過rostopic echo命令來查看仿真?zhèn)鞲衅鲾?shù)據(jù)。2)通過gazebo里的模型搭建機器人運行環(huán)境,在gazebo中將機器人仿真環(huán)境搭建完成后進行保存,保存完成后可生成.sqt文件。3)通過launch文件將機器人導入到搭建的仿真環(huán)境。通過機器人仿真對機器人的相關性能進行模擬,可以有效地解決機器人在實際情況中出現(xiàn)的問題,而機器人仿真環(huán)境提高了建立真實機器人的效率,可以使開發(fā)者和工程師能夠更好地配置機器人,同時使開發(fā)者和工程師更加快捷和有效地解決問題,進而提高效率。經(jīng)過多次建立仿真環(huán)境,生成的倉庫巡邏機器人仿真環(huán)境圖如圖6所示。
圖6 倉庫巡邏機器人仿真環(huán)境圖
在室內(nèi)環(huán)境中機器人的自主移動導航是機器人對環(huán)境進行監(jiān)控的前提,為實現(xiàn)機器人自主導航,該虛擬機器人搭載激光雷達對機器人實時環(huán)境進行更新,攝像頭對機器人在運動過程中的實時環(huán)境進行可視化。
自主導航是由acml、odom以及路徑規(guī)劃算法構成的。amcl是一個機器人在二維地圖中移動的定位系統(tǒng);odom原點就是機器人啟動時候的點,通過粒子濾波可以將odom的位置在map上估算出來,在tf中發(fā)布。
配置機器人,導航功能包集將使其運動。使用導航功能包集的先決條件:1)TF坐標變換的配置。導航功能包集需要機器人一直發(fā)布坐標系之間的關系信息。2)傳感器相關信息。導航功能包集通過調(diào)用來自傳感器的信息避開實際環(huán)境中的障礙物,它假定這些傳感器在ROS上不斷發(fā)布消息來躲避障礙物。3)里程信息。導航功能包集需要使用和nav_msgs消息發(fā)布的里程信息。4)底盤控制器。導航功能包集假定它可以通過話題“cmd_vel”來發(fā)布geometry_msgs/Twist類型的消息,這個消息是基于機器人的底座坐標系,它傳遞的是運動命令。5)地圖服務器。將代價地圖作為ROS的服務器參數(shù)發(fā)布,提供了map_saver節(jié)點,可以通過命令進行存儲地圖[8-9]。
在以上相關條件下,通過激光雷達來獲取相關數(shù)據(jù),acml粒子估算機器人自身定位,這就將底層數(shù)據(jù)完整地概括,通過地圖服務器將地圖數(shù)據(jù)加載出來,然后根據(jù)地圖的目標位置,做一個全局路徑規(guī)劃,在機器人行駛過程中,若出現(xiàn)障礙物時,再通過局部路徑規(guī)劃重新規(guī)劃一條路徑。自主導航圖示如圖7所示。
圖7 自主導航圖示
通過gazebo來對機器人攝像頭傳感器進行仿真實現(xiàn),在創(chuàng)建好機器人模型的前提下,編寫一個攝像頭傳感器單獨的xacro文件,來對機器人攝像頭傳感器進行配置。將此文件集成到xacro文件中,再通過gazebo仿真并且通過rviz來對機器人攝像頭傳感器的數(shù)據(jù)進行顯示。通過機器人攝像頭的仿真模擬,對于機器人在自主移動過程中,可以使得機器人對外部環(huán)境的實時畫面進行顯示與檢測。機器人在仿真環(huán)境中的攝像頭配置以及攝像頭在仿真環(huán)境中的實時圖像顯示如圖8所示。
圖8 仿真環(huán)境中的實時圖像顯示
智能機器人攝像頭檢測異常情況的方法為差影法[10]。倉庫巡邏機器人通過對某一場景進行學習,再將所學習到的場景保存為圖片或者視頻,當有外來物體進入到機器人所保存的場景下時,將機器人所保存的場景與外來物體所產(chǎn)生的場景進行場景抵消,最后產(chǎn)生此外來物體的影子圖像,以達到機器人對外來物體的檢測。
智能機器人深度相機通過掃描將人體信息進行保存后,再次進行掃描后對其閾值進行對比以達到檢測的效果。通過機器人的跟隨節(jié)點,編寫launch文件,當打開launch文件時出現(xiàn)圖像,當人物進入時做出動作后,深度圖像上則會有15個骨骼點,構成人的骨骼特征是目標到機器人實際距離與默認距離的差值,其反映機器人應該運動的距離與方向。通過機器人掃描的人體信息與保存的人體信息不同時,則機器人對其進行跟隨報警提示。
智能機器人通過煙霧報警器來對機器人場景中的火災進行檢測,并結合紅外傳感器、碰撞傳感器來判斷火情,以達到多傳感器融合巡邏的效果,進而實現(xiàn)倉庫巡邏機器人巡邏和巡視的功能。
本研究基于ROS系統(tǒng)的倉庫巡邏機器人,是以工控機為核心控制器,通過激光雷達來采集倉庫內(nèi)部環(huán)境信息來建立實時地圖,完成并實現(xiàn)SLAM的相關功能。其他傳感器通過獲取外界環(huán)境信息與存儲信息對比以達到巡邏警戒的目的。機器人操作系統(tǒng)ROS使機器人在編程方面簡便化、系統(tǒng)化,提高了機器人在二次開發(fā)時的效率。相對于ROS機器人而言,其最為重要的技術是SLAM地圖構建和自主定位導航。而對于倉庫巡邏機器人而言,其關鍵技術不僅要達到ROS機器人關鍵技術,同時也要達到巡邏的目的,通過攝像頭對外界環(huán)境的特定位置進行拍攝后與在原有庫中的信息進行對比來初步實現(xiàn)監(jiān)控、巡邏及報警的目的,最終實現(xiàn)基于ROS系統(tǒng)的倉庫巡邏機器人。