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