,
(廣州大學(xué)華軟軟件學(xué)院 電子系,廣州 510990)
服務(wù)機(jī)器人所涵蓋的行業(yè)也是比較廣泛的,在日常的生活中,這類機(jī)器人可應(yīng)用在餐廳傳菜、公司傳遞文件及倉庫搬運(yùn)等眾多場合。但是,這些機(jī)器人在單軌同向行駛時(shí)只能按照指定速度依次行走,鮮有接到緊急事件的機(jī)器人優(yōu)先行走的策略。針對(duì)該問題,本文提出了一種有效的服務(wù)型機(jī)器人之間能在單軌同向互相穿梭行走的策略,并設(shè)計(jì)了一種可互相超越行走的服務(wù)機(jī)器人自巡航系統(tǒng)。
為了確保相關(guān)數(shù)據(jù)處理的穩(wěn)定性及方便性,整個(gè)系統(tǒng)分為兩大部分:MCU模塊和上位機(jī)調(diào)試軟件[3]。系統(tǒng)總體結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
圖2 設(shè)計(jì)的場景模擬
其中,MCU采用MK60FX512VLQ15單片機(jī)作為中央處理器,并搭載攝像頭、超聲波測(cè)距模塊和nRF24L01+無線模塊;通過OV7725攝像頭識(shí)別指定的特定軌道,求出機(jī)器人行走路線與軌道的偏差量,并糾正偏差,同時(shí)也對(duì)軌道上的障礙物進(jìn)行檢測(cè)與避讓;利用超聲波測(cè)距模塊實(shí)現(xiàn)同個(gè)軌道行走的兩個(gè)機(jī)器人之間距離控制,避免機(jī)器人之間產(chǎn)生碰撞;通過nRF24L01+實(shí)現(xiàn)機(jī)器人之間的互相通信,當(dāng)后方機(jī)器人需要超越前方機(jī)器人時(shí),通過發(fā)送特定指令讓前方機(jī)器人??勘茏?,從而使后方機(jī)器人躲避超越;藍(lán)牙模塊用來發(fā)送攝像頭采集的圖像和機(jī)器人的各項(xiàng)參數(shù)給上位機(jī)。上位機(jī)調(diào)試軟件主要處理機(jī)器人采集的圖像數(shù)據(jù)和在線調(diào)試機(jī)器人的相關(guān)參數(shù),如:機(jī)器人的速度PID參數(shù)、轉(zhuǎn)向PID參數(shù)和攝像頭分辨率參數(shù)等。本設(shè)計(jì)的場景模擬圖如圖2所示,其中A、B、C代表不同的機(jī)器人。
系統(tǒng)硬件主要包括MK60FX512VLQ15微處理器、nRF24L01+無線模塊[7]、藍(lán)牙模塊、超聲波測(cè)距模塊和攝像頭模塊4個(gè)部分。系統(tǒng)硬件總體方案如圖3所示。
圖3 系統(tǒng)總體方案圖
MK60FX512VLQ15基于ARM Corter-M4內(nèi)核,具有高性能(標(biāo)準(zhǔn)頻率為150 MHz)、內(nèi)部集成2個(gè)512 KB Flash、低功耗、I/O資源豐富等優(yōu)良特性,非常適合服務(wù)機(jī)器人系統(tǒng)的設(shè)計(jì)。
nRF24L01+是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片收發(fā)芯片,有125個(gè)頻點(diǎn),滿足多點(diǎn)通信和調(diào)頻通信,最大傳輸速度為2 Mbps,可通過調(diào)頻來避免干擾,且內(nèi)置CRC校驗(yàn)和出錯(cuò)重傳機(jī)制[4]。采用本模塊可以減少數(shù)據(jù)在傳輸過程中丟包、漏傳等現(xiàn)象。
超聲波測(cè)距采用收發(fā)一體的模塊。該模塊擁有180度測(cè)量角,測(cè)量距離為2~550 cm。本系統(tǒng)設(shè)計(jì)的場景中存在彎道軌道和十字軌道,采用本模塊可以在這些軌道中進(jìn)行機(jī)器人之間的距離控制。
攝像頭模塊采用OV7725,其通過若干邏輯器處理原始圖像,最終輸出0和1數(shù)值的黑白二值圖像,圖像輸出幀率高達(dá)150 fps,圖像分辨率可調(diào),本系統(tǒng)采用的分辨率為80×60,圖像傳輸穩(wěn)定。
藍(lán)牙模塊采用HC-05主從機(jī)一體藍(lán)牙模塊板。采用TTL信號(hào)系統(tǒng),即數(shù)據(jù)采用二進(jìn)制表示,規(guī)定+5 V等價(jià)于邏輯“1”,0 V等價(jià)于邏輯“0”。本系統(tǒng)采用波特率為115 200,每秒傳輸24幀,分辨率為80×60的圖像,此速率滿足本系統(tǒng)的調(diào)試過程。
系統(tǒng)軟件設(shè)計(jì)主要包括機(jī)器人超聲波距離控制算法程序、糾正軌道偏差量算法程序、機(jī)器人在直道和十字軌道相互超越算法程序。
為了避免機(jī)器人在同向行走過程中與其它機(jī)器人產(chǎn)生碰撞,本系統(tǒng)采用鴛鴦超聲波距離控制算法來保持機(jī)器人之間的安全距離[5]。假設(shè)機(jī)器人與前方機(jī)器人的距離為Robot_Distance,安全目標(biāo)距離為Aim_Distance,速度差為Speed_Error,機(jī)器人的速度為Robot_Speed,鴛鴦超聲波距離控制算法的核心思想為:
① 當(dāng)Robot_Distance Distance_Error=Robot_Distance-Aim_Distance (1) ② 跟隨在后方的機(jī)器人進(jìn)入距離控制狀態(tài),采用二次曲線的方式,通過式(2)將兩機(jī)器人之間的距離偏差Distance_Error轉(zhuǎn)化成速度差Speed_Error; Speed_Error=Distance_Error×Distance_Error/250000; (2) ③ 利用式(3),后方機(jī)器人根據(jù)速度差調(diào)整運(yùn)行速度Robot_Speed,進(jìn)而避免產(chǎn)生碰撞。 Robot_Speed=Robot_Speed-Speed_Error; (3) 通過大量實(shí)驗(yàn)發(fā)現(xiàn),速度差和距離差關(guān)系采用式(2)中的二次曲線關(guān)系的原因是,當(dāng)誤差較大時(shí),系統(tǒng)能迅速做出響應(yīng);在誤差較小時(shí),系統(tǒng)可以緩慢平滑地通過速度的調(diào)節(jié)來修正距離的誤差值,從而避免機(jī)器的抖動(dòng)。距離與速度關(guān)系如圖4所示。 圖4 距離與速度關(guān)系圖 圖5 直道圖像 攝像頭采集的圖像通過硬件二值化形成0和1數(shù)值的黑白二值圖像,并存入到大小為4 800的數(shù)組中[6]。取圖像的第R行(設(shè)計(jì)中R=25)作為機(jī)器人偏移軌道的偏差量糾正行,即路徑識(shí)別的主前瞻行。取的行值應(yīng)根據(jù)應(yīng)用的軌道及運(yùn)行環(huán)境來確定,從圖5所示的直道圖像中不難看出,行值越大,系統(tǒng)的前瞻性越大系統(tǒng)響應(yīng)時(shí)間越充分,但過大的行值在彎道處可能會(huì)使前瞻超出運(yùn)行軌道,以及過大抖動(dòng)會(huì)使數(shù)據(jù)不穩(wěn)定等。通過該行掃描軌道的左右黑色邊線,并將左右邊線列坐標(biāo)值分別記錄到變量LEFT和RIGHT中。其中偏差量計(jì)算方法為:通過采集到圖像計(jì)算軌道中心(Runway_Mid)與攝像頭圖像像素寬度的一半(CAMERA_W/2)作差,即機(jī)器人偏移軌道的偏差量為式(4)。攝像頭采集的圖像會(huì)產(chǎn)生丟邊的情況,以下是根據(jù)不同丟邊情況進(jìn)行的軌道中心計(jì)算: ① 當(dāng)左邊(LEFT)和右邊(RIGHT)都不丟邊,則軌道中心計(jì)算為式(5),直道軌道中心圖像如圖6所示; ② 當(dāng)機(jī)器人右轉(zhuǎn)彎時(shí),右邊(RIGHT)丟邊,則跑道中心計(jì)算為式(6),右轉(zhuǎn)彎軌道中心圖像如圖7所示; ③ 當(dāng)機(jī)器人左轉(zhuǎn)彎時(shí),左邊(LEFT)丟邊,則軌道中心計(jì)算為式(7),左轉(zhuǎn)彎軌道中心圖像如圖8所示; ④ 當(dāng)機(jī)器人行徑十字路口時(shí),左邊(LEFT)和右邊(RIGHT)都丟邊,則通過圖像的主前瞻行R的上下其它行輔助補(bǔ)線求出邊線,上下輔助行根據(jù)實(shí)際軌道丟邊寬度決定,要確保輔助行在主前瞻行丟邊的時(shí)候能檢測(cè)到邊線,補(bǔ)線方法為通過兩點(diǎn)求直線方程式(8),十字軌道中心圖像如圖9所示。 本設(shè)計(jì)中主前瞻行R=25,上下輔助行分別取第10行和第45行。那么求出第25行的左邊線列坐標(biāo)值(LEFT)和右邊線列坐標(biāo)值(RIGHT),就可以通過輔助行第10行和第45行分別求出其邊線。這里把上下輔助行的邊線列坐標(biāo)分別記錄為變量LEFT_10、RIGHT_10和LEFT_45、RIGHT_45,然后按式(8)可分別計(jì)算第25行左邊線列坐標(biāo)值:LEFT=(25-45)×(LEFT_45-LEFT_10)/(45-10)+LEFT_45,第25行右邊線列坐標(biāo)值:RIGHT=(25-45)×(RIGHT_45-RIGHT_10)/(45-10)+RIGHT_45。接下來軌道中心計(jì)算就可按左右不丟邊式(5)計(jì)算。圖10為十字軌道未補(bǔ)線圖像與補(bǔ)線圖像的對(duì)比圖。 Track_error= CAMERA_W/2-Runway_Mid (4) Runway_Mid=(LEFT+RIGHT)/2 (5) Runway_Mid=CAMERA_W+LEFT/2 (6) Runway_Mid=RIGHT/2 (7) y-y1=k×(x-x2),其中k=(y2-y1)/(x2-x1) (8) 圖6 直道軌道中心圖像 圖7 右轉(zhuǎn)彎軌道中心圖像 圖8 左轉(zhuǎn)彎軌道中心圖像 圖9 十字軌道中心圖像 圖10 十字軌道未補(bǔ)線圖像與補(bǔ)線圖像的對(duì)比圖 圖11 機(jī)器人直道相互超越的場景模擬圖 圖11所示為機(jī)器人直道相互超越的場景模擬圖。圖12所示是前方機(jī)器人直道超越策略的程序流程圖,當(dāng)機(jī)器人接收到后方需要超越指令時(shí),通過沿右邊線求偏差量???,沿邊線偏差量計(jì)算:Rside_error=R-RIGHT,其中R=52是通過機(jī)器人靜態(tài)不動(dòng)時(shí)靠右邊線停車測(cè)量出來的右邊線列坐標(biāo)值,RIGHT是圖像主前瞻即第25行的右邊線列坐標(biāo)檢測(cè)值;機(jī)器人??砍晒?,發(fā)送直道??砍晒χ噶睿却蠓綑C(jī)器人超越成功后發(fā)送超越成功指令;當(dāng)接收到超越成功指令,則重新啟動(dòng)機(jī)器人行走模式。 圖13所示是后方機(jī)器人直道超越策略的程序流程圖,當(dāng)機(jī)器人接收到緊急事件需要超越前方機(jī)器人時(shí),通過超聲波檢測(cè)前方機(jī)器人是否在允許超越距離范圍內(nèi),當(dāng)處于允許超越的范圍時(shí),發(fā)送需要超越指令給前方機(jī)器人,等待前方機(jī)器人停靠成功后,進(jìn)入超越狀態(tài),通過沿左邊線求偏差量行走,沿邊線偏差量計(jì)算:Lside_error=L-LEFT,其中L=28是通過機(jī)器人靜態(tài)不動(dòng)時(shí)靠左邊線停車測(cè)量出來的左邊線列坐標(biāo)值,LEFT是圖像第25行的左邊線列坐標(biāo)檢測(cè)值;直到超越成功后,發(fā)送超越指令給前方機(jī)器人,完成機(jī)器人間超越。 圖14所示為機(jī)器人十字軌道相互超越的場景模擬圖。圖15所示是前方機(jī)器人十字軌道超越策略的程序流程圖,十字超越策略跟直道的超越策略相同,但是由于十字軌道存在邊線丟失,所以需要對(duì)十字軌道右邊線進(jìn)行補(bǔ)齊,邊線補(bǔ)線方法與第3.2節(jié)中補(bǔ)邊相同,即通過兩點(diǎn)求直線方程。前方機(jī)器人十字補(bǔ)線圖像如圖16所示。 圖17所示是后方機(jī)器人十字軌道超越策略的程序流程圖,十字超越策略跟直道的超越策略相同,但是由于十字軌道存在邊線丟失,所以需要對(duì)十字軌道左邊線進(jìn)行補(bǔ)齊,邊線補(bǔ)線方法同樣與第3.2節(jié)中補(bǔ)邊相同,即通過兩點(diǎn)求直線方程。后方機(jī)器人十字補(bǔ)線圖像如圖18所示。 圖12 前方機(jī)器人直道超越策略程序流程圖 圖13 后方機(jī)器人直道超越策略程序流程圖 圖14 機(jī)器人十字軌道相互超越的場景模擬圖 圖15 前方機(jī)器人十字軌道超越策略程序流程圖 圖16 前方機(jī)器人十字軌道補(bǔ)線圖像 圖17 后方機(jī)器人十字軌道超越策略程序流程圖 [1] 李興澤,王福平.基于CCD攝像頭的小區(qū)自動(dòng)循跡停車系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2013,33(S1):321-323. [2] 余運(yùn)昌,李繡峰,鄧錦熾,等.自主移動(dòng)服務(wù)機(jī)器人現(xiàn)狀與關(guān)鍵技術(shù)研究綜述[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2017,20(6):41-43. [3] 申曉杰,翁惠輝.基于C#的串口通信上位機(jī)的設(shè)計(jì)與應(yīng)用[J].電子世界,2014(3):155. [4] 祝世佺,胡佳文,李莉莉.基于K60芯片和CMOS攝像頭檢測(cè)的雙車追逐運(yùn)動(dòng)設(shè)計(jì)[J].中國水運(yùn),2017,17(1):122-124. [5] 鄧志鵬,黃潤燁,馬超,等.基于恩智浦K60單片機(jī)的雙車追逐設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電技術(shù),2017(4):20-22,28. [6] 劉祖臣.基于CMOS數(shù)字?jǐn)z像頭的硬件二值化方案[J].電子-電路,2014(7):99-102. [7] 金寶華,張勇,崔光照.基于nRF905的無線數(shù)據(jù)多點(diǎn)跳傳通信系統(tǒng)[J].儀表技術(shù)與傳感器,2014(9):39-40. 夏國清(講師),研究方向?yàn)橹悄芸刂?、嵌入式系統(tǒng)、圖像處理與模式識(shí)別;陳佳凡,研究方向?yàn)橹悄芸刂?、嵌入式系統(tǒng)。3.2 機(jī)器人糾正軌道偏差量算法程序
3.3 機(jī)器人直道相互超越算法程序
3.4 機(jī)器人十字軌道相互超越算法程序
結(jié) 語