張博 趙慧 馬業(yè)林 孫文匯
摘 要 隨著科技發(fā)展水平的提高,服務(wù)機(jī)器人有了更快的發(fā)展,并開始廣泛應(yīng)用餐飲、酒店、商場(chǎng)等商業(yè)領(lǐng)域。服務(wù)機(jī)器人在機(jī)器人市場(chǎng)的需求日益高漲,成為未來(lái)機(jī)器人發(fā)展的一個(gè)重要方向。基于ROS系統(tǒng)的送餐服務(wù)機(jī)器人主要包含了四項(xiàng)技術(shù),分別為:自主移動(dòng)技術(shù)、環(huán)境感知技術(shù)、底盤技術(shù)、智能芯片技術(shù)。針對(duì)ROS系統(tǒng)進(jìn)行開發(fā),通過(guò)SLAM技術(shù),對(duì)自身攜帶的編碼電機(jī)和激光雷達(dá)來(lái)對(duì)自身進(jìn)行定位,并在定位的基礎(chǔ)上構(gòu)建環(huán)境地圖,解決機(jī)器人在未知環(huán)境中運(yùn)行時(shí)即時(shí)定位與地圖構(gòu)建的問(wèn)題。
關(guān)鍵詞 ROS;SLAM技術(shù);編碼電機(jī);激光雷達(dá)
民以食為天,在激烈競(jìng)爭(zhēng)的餐飲市場(chǎng)下,如何令自己的餐廳立于不敗之地,樹立自己的餐飲品牌,走出一條成功之路,智能機(jī)器人和餐廳的有機(jī)結(jié)合為餐廳開創(chuàng)了一個(gè)新的創(chuàng)新點(diǎn),隨著社會(huì)的發(fā)展,經(jīng)濟(jì)生活的改變,很多客人的聚餐都會(huì)在餐廳進(jìn)行,這必然就會(huì)加劇服務(wù)人員的使用量,特別是在用餐高峰期,客流量會(huì)變得更多,這時(shí),如果采用智能機(jī)器人替換或替換部分服務(wù)人員,既可以減輕服務(wù)員的勞動(dòng)強(qiáng)度,增加餐廳非就餐高峰期客流量,還可以合理調(diào)配餐廳的資源,提升餐廳的科技形象,制造品牌效應(yīng),吸引更多客戶,具有較高的經(jīng)濟(jì)價(jià)值。
1ROS操作系統(tǒng)
21世紀(jì)開始,關(guān)于人工智能的研究進(jìn)入了大發(fā)展階段,包括全方位的具體的AI,例如斯坦福大學(xué)人工智能實(shí)驗(yàn)室STAIR(Stanford Artificial Intelligence Robot)項(xiàng)目,該項(xiàng)目組創(chuàng)建了靈活的、動(dòng)態(tài)的軟件系統(tǒng)的原型,用于機(jī)器人技術(shù)。在2007年,機(jī)器人公司W(wǎng)illow Garage和該項(xiàng)目組合作,他們十分具有前瞻性的,提供了大量資源進(jìn)一步擴(kuò)展了這些概念,經(jīng)過(guò)具體的研究測(cè)試實(shí)現(xiàn)之后,無(wú)數(shù)的研究人員將他們的專業(yè)性研究貢獻(xiàn)到ROS核心概念和其基礎(chǔ)軟件包,這期間積累了眾多的科學(xué)研究成果。ROS軟件的開發(fā)自始至終采用開放的BSD協(xié)議,在機(jī)器人技術(shù)研究領(lǐng)域逐漸成為一個(gè)被廣泛使用的平臺(tái)。
隨著技術(shù)進(jìn)步,機(jī)器人產(chǎn)業(yè)分工開始走向細(xì)致化、多層次化,像如今的電機(jī)、底盤、激光雷達(dá)、攝像頭、機(jī)械臂等等元器件都有不同廠家專門生產(chǎn)。社會(huì)的分工加速了機(jī)器人行業(yè)的迅速發(fā)展發(fā)展。而各個(gè)部件的集成就需要一個(gè)統(tǒng)一的軟件平臺(tái),在機(jī)器人領(lǐng)域,這個(gè)平臺(tái)就是機(jī)器人操作系統(tǒng)ROS。ROS是一個(gè)適用于機(jī)器人編程的框架,這個(gè)框架把原本松散的零部件耦合在了一起,為他們提供了通信架構(gòu)。ROS雖然叫作操作系統(tǒng),但并非Windows、Mac那樣通常意義的操作系統(tǒng),它只是連接了操作系統(tǒng)和你開發(fā)的ROS應(yīng)用程序,所以它也算是一個(gè)中間件,基于ROS的應(yīng)用程序之間建立起了溝通的橋梁,所以也是運(yùn)行在Linux上的運(yùn)行時(shí)環(huán)境,在這個(gè)環(huán)境基礎(chǔ)上,機(jī)器人的感知、決策、控制算法可以更好地組織和運(yùn)行。此外,ROS支持多種編程語(yǔ)言。C++、Pyhton和已經(jīng)在ROS中實(shí)現(xiàn)編譯,是目前應(yīng)用最廣的ROS開發(fā)語(yǔ)言。為了支持多語(yǔ)言編程,ROS采用了一種語(yǔ)言中立的接口定義語(yǔ)言來(lái)實(shí)現(xiàn)各模塊之間消息傳送。通俗的理解就是,ROS的通信格式和用哪種編程語(yǔ)言來(lái)寫無(wú)關(guān),它使用的是自身定義的一套通信接口[1]
2SLAM算法解析
2.1 SLAM框架說(shuō)明
SLAM系統(tǒng)框架一般分為五個(gè)模塊,包括傳感器數(shù)據(jù)、視覺(jué)里程計(jì)、后端、建圖及回環(huán)檢測(cè)。
傳感器數(shù)據(jù):主要用于采集實(shí)際環(huán)境中的各類型原始數(shù)據(jù)。包括激光掃描數(shù)據(jù)、視頻圖像數(shù)據(jù)、點(diǎn)云數(shù)據(jù)等。
視覺(jué)里程計(jì):主要用于不同時(shí)刻間移動(dòng)目標(biāo)相對(duì)位置的估算。包括特征匹配、直接配準(zhǔn)等算法的應(yīng)用。
后端:主要用于優(yōu)化視覺(jué)里程計(jì)帶來(lái)的累計(jì)誤差。包括濾波器、圖優(yōu)化等算法應(yīng)用。
建圖:用于三維地圖構(gòu)建。
回環(huán)檢測(cè):主要用于空間累積誤差消除。
其工作流程大致為:
傳感器讀取數(shù)據(jù)后,視覺(jué)里程計(jì)估計(jì)兩個(gè)時(shí)刻的相對(duì)運(yùn)動(dòng)(Ego-motion),后端處理視覺(jué)里程計(jì)估計(jì)結(jié)果的累積誤差,建圖則根據(jù)前端與后端得到的運(yùn)動(dòng)軌跡來(lái)建立地圖,回環(huán)檢測(cè)則考慮了同一場(chǎng)景不同時(shí)刻的圖像,提供了空間上約束來(lái)消除累積誤差。
2.2 激光SLAM
本項(xiàng)目用到了目前相對(duì)來(lái)說(shuō)更為成熟的激光雷達(dá)SLAM,采用思嵐激光雷達(dá)PRLIDAR A1,激光SLAM采用2D或3D激光雷達(dá)(也叫單線或多線激光雷達(dá)),2D激光雷達(dá)一般用于室內(nèi)機(jī)器人上(如掃地機(jī)器人),而3D激光雷達(dá)一般使用于無(wú)人駕駛領(lǐng)域。激光雷達(dá)的出現(xiàn)和普及使得測(cè)量更快更準(zhǔn),信息更豐富。激光雷達(dá)采集到的物體信息呈現(xiàn)出一系列分散的、具有準(zhǔn)確角度和距離信息的點(diǎn),被稱為點(diǎn)云。通常,激光SLAM系統(tǒng)通過(guò)對(duì)不同時(shí)刻兩片點(diǎn)云的匹配與比對(duì),計(jì)算激光雷達(dá)相對(duì)運(yùn)動(dòng)的距離和姿態(tài)的改變,也就完成了對(duì)機(jī)器人自身的定位。
激光雷達(dá)測(cè)距比較準(zhǔn)確,誤差模型簡(jiǎn)單,在強(qiáng)光直射以外的環(huán)境中運(yùn)行穩(wěn)定,點(diǎn)云的處理也比較容易。同時(shí),點(diǎn)云信息本身包含直接的幾何關(guān)系,使得機(jī)器人的路徑規(guī)劃和導(dǎo)航變得直觀。
3系統(tǒng)控制原理
本體中包含嵌入式系統(tǒng),和上位機(jī)部分。嵌入式系統(tǒng)采用Arduino MEGA2560 R3作為機(jī)器人下位機(jī)負(fù)責(zé)驅(qū)動(dòng)電機(jī)和傳送里程計(jì)信息。上位機(jī)則采用樹莓派來(lái)進(jìn)行全局控制。下位機(jī)獲取到的編碼信息和里程計(jì)信息通過(guò)串口將數(shù)據(jù)傳輸給樹莓派,樹莓派通過(guò)接收到的信息配合激光雷達(dá)掃描得到的信息可以對(duì)自身進(jìn)行定位,并且在定位的基礎(chǔ)上構(gòu)建3D環(huán)境圖,解決機(jī)器人在未知環(huán)境中的定位和地圖構(gòu)建,再由上位機(jī)對(duì)下位機(jī)發(fā)送指令,實(shí)現(xiàn)對(duì)底盤的控制。
3.1 里程計(jì)信息的采集與發(fā)布
機(jī)器人系統(tǒng)中存在base_controller節(jié)點(diǎn),其中base_controller節(jié)點(diǎn)將訂閱的cmd_vel信息通過(guò)串口或其他通信接口發(fā)送給下位機(jī)(Arduino)。下位機(jī)中根據(jù)公式進(jìn)行解算,將機(jī)器人速度轉(zhuǎn)換為每個(gè)輪子的速度,然后通過(guò)CAN總線將每個(gè)輪子的轉(zhuǎn)速發(fā)送給電機(jī)驅(qū)動(dòng)板控制編碼電機(jī)轉(zhuǎn)動(dòng)。電機(jī)驅(qū)動(dòng)板對(duì)電機(jī)轉(zhuǎn)速進(jìn)行閉環(huán)控制(PID控制),并統(tǒng)計(jì)單位時(shí)間內(nèi)接收到的編碼器脈沖數(shù),計(jì)算出輪子轉(zhuǎn)速。
base_controller節(jié)點(diǎn)將接收到的cmd_vel速度信息轉(zhuǎn)換為自定義的結(jié)構(gòu)體類型的數(shù)據(jù)(自定義的數(shù)據(jù)類型中可以包含校驗(yàn)碼等其他信息),并通過(guò)串口發(fā)送控制速度信息(speed_buf)或讀取機(jī)器人傳回的速度信息 (speed_buf_rev)。base_controller節(jié)點(diǎn)正確讀取到底層(Arduino)傳回的速度后進(jìn)行積分,計(jì)算出機(jī)器人的估計(jì)位置和姿態(tài),并將里程計(jì)信息和tf變換發(fā)布出去。
3.2 串口通信
本系統(tǒng)主要采用串口通信的方式傳輸數(shù)據(jù),通過(guò)安裝rosserial_arduino包以實(shí)現(xiàn)ROS與Arduino板之間的串口通信,rosserial_arduino包以后,你可以在Arduino IDE中直接使用ROS,rosserial_arduino提供了ros的通信協(xié)議,它可以在Arduino的UART上工作。它可以使Arduino成為一個(gè)完整的ROS節(jié)點(diǎn),直接發(fā)布和訂閱ROS消息,發(fā)布TF轉(zhuǎn)換,并獲得ROS系統(tǒng)時(shí)間。
完成串口通信后,便可以實(shí)現(xiàn)上位機(jī)指令的發(fā)送和對(duì)下位機(jī)數(shù)據(jù)的接收。
3.3 核心控制設(shè)備
本系統(tǒng)采用的核心控制設(shè)備為樹莓派,樹莓派預(yù)裝Linux系統(tǒng),體積小,搭載ARM架構(gòu)處理器。樹莓派包括40個(gè)GPIO口,可以通過(guò)它們輸出高(低)電平或者通過(guò)它們讀入引腳的狀態(tài)。本項(xiàng)目通過(guò)UART串口實(shí)現(xiàn)了數(shù)據(jù)交互。
樹莓派RXD端與Arduino板TXD端相連接,通過(guò)串口接收Arduino板和激光雷達(dá)返回的數(shù)據(jù)。設(shè)計(jì)程序發(fā)送指令給小車控制平臺(tái)。
3.4 小車控制平臺(tái)
小車控制平臺(tái)采用Arduino MEGA2560 R3來(lái)實(shí)現(xiàn)對(duì)小車的控制,編碼器1的HoutA和HoutB接Arduino mega2560的pin2和pin3,對(duì)應(yīng)的中斷號(hào)是0和1,編碼器2的HoutA和HoutB接 Arduino mega2560的pin19和pin18,對(duì)應(yīng)的中斷號(hào)是4和5,L298N的ENA接Arduino mega 2560的pin5,L298N的ENB接Arduino mega 2560的pin6,IN1和IN2接Arduino mega 2560的pin7和pin8,IN3和IN4接Arduino mega 2560的pin9和pin10,通過(guò)IN1和IN2控制電機(jī)1轉(zhuǎn)動(dòng)方向(正轉(zhuǎn)或反轉(zhuǎn)), 通過(guò)ENA控制其的轉(zhuǎn)速;通過(guò)IN3和IN4控制電機(jī)2轉(zhuǎn)動(dòng)方向(正轉(zhuǎn)或反轉(zhuǎn)), 通過(guò)ENB控制其的轉(zhuǎn)速。
4結(jié)束語(yǔ)
隨著中國(guó)國(guó)力的不斷增強(qiáng),實(shí)力不斷提升,國(guó)家也越來(lái)越重視在科技方面的發(fā)展,慢慢地,智能機(jī)器人也逐漸為我們所知。利用激光雷達(dá)對(duì)周圍環(huán)境實(shí)時(shí)建模是本系設(shè)計(jì)的一大亮點(diǎn)和創(chuàng)新點(diǎn)。送餐機(jī)器人的最終目的,是在幫助餐廳節(jié)約成本的同時(shí),提高服務(wù)員的工作效率,讓他們更加專注在“服務(wù)”上面。送餐機(jī)器人在快速發(fā)展中,經(jīng)歷了數(shù)次的迭代更替,實(shí)用性也大大增強(qiáng)。商家愿意使用送餐機(jī)器人也將不再是所謂的“噱頭”,而是能夠?qū)嵈驅(qū)嵉亟档瓦\(yùn)營(yíng)成本,提升工作效率。
本設(shè)計(jì)基于ROS系統(tǒng)及Arduino的智能小車的控制系統(tǒng),通過(guò)對(duì)編碼器和激光雷達(dá)數(shù)據(jù)的獲取,計(jì)算參數(shù),達(dá)到對(duì)自身的定位以及實(shí)時(shí)建模,履帶式的底盤設(shè)計(jì)減少了在水面上打滑的可能,安全穩(wěn)定性高。在人流量高的餐廳里可以分散服務(wù)員的壓力,提升整體工作效率。
該機(jī)器人不僅可以實(shí)現(xiàn)送餐,因?yàn)槠淇梢詫?shí)時(shí)更新的環(huán)境建模特性與其對(duì)地面適應(yīng)性極強(qiáng)履帶式設(shè)計(jì),可以實(shí)現(xiàn)在商場(chǎng)或者是工廠夜間巡邏的作用,使其廣泛應(yīng)用在生活當(dāng)中,減少了人力,提高了生活質(zhì)量。
參考文獻(xiàn)
[1] 郭欣桐,戰(zhàn)藝.基于ROS的服務(wù)型機(jī)器人新型控制方式[J].電子世界,2016(11):8-9.