李思熠,王少坤
基于OpenMV和Arduino的智能巡線機器人*
李思熠,王少坤
(西北農(nóng)林科技大學(xué) 水利與建筑工程學(xué)院,陜西 楊凌 712100)
巡線機器人作為一種能自動識別路徑行走的機器人,被廣泛用于快遞分揀、輸電線路巡檢等路徑規(guī)劃場合,有著良好的發(fā)展前景[1]。但如何提高其識別路徑的準(zhǔn)確性、快速性仍是需要不斷突破的難點,針對以上問題,設(shè)計了一種基于OpenMV和Arduino的智能巡線機器人。在機器視覺方面,采用顏色識別算法、閾值二值化處理、權(quán)重計算和線性回歸算法進行圖像捕捉和路徑追蹤。在通信系統(tǒng)方面,采用以機器人舵機控制板為主、OpenMV和Arduino為輔的主從加分布式模塊化結(jié)構(gòu)控制機器人行走模式和方向。在機械結(jié)構(gòu)方面,采用了對稱機械結(jié)構(gòu)設(shè)計、大扭力舵機替換等方法來解決自身重心偏移、承重能力等問題。實驗表明,在9 600波特率下,機器人可以十分穩(wěn)定、快速地進行路徑識別巡線工作。
OpenMV;智能控制;Arduino;巡線機器人
隨著人工智能技術(shù)的發(fā)展,機器人研究領(lǐng)域也變得越來越多元化,對機器人的要求也越來越高,機器人的智能化成為了當(dāng)今研究熱點。而作為應(yīng)用廣泛的巡線小車,其發(fā)展前景也是一片大好[2]。隨著類人機器人成為機器人的主要發(fā)展方向,許多模仿人的形態(tài)和動作的機器人被設(shè)計出來,雙足型仿人機器人也被用到了服務(wù)業(yè)、工業(yè)、軍業(yè)等多個領(lǐng)域,對仿人巡線機器人也開始有了研究[3]。傳統(tǒng)的仿人巡線機器人由舵機構(gòu)成主要支架,外可加類人外形包裝,其控制系統(tǒng)則由舵機控制板以及各種形式的傳感器構(gòu)成。例如可用安裝在腳板上的位置型灰度傳感器來判別機器人行走過程中是否偏離規(guī)定的線路,若設(shè)定線路為黑色,則傳感器識別到黑色就會傳遞“是”指令,機器人仍保持直線行駛;若某一特定位置傳感器檢測到其他顏色,傳感器就會傳遞“非”指令,機器人便按照傳感器所在位置進行左右轉(zhuǎn)判別,直到回歸正常軌道為止。此種方法動作緩慢,需要傳感器數(shù)量較大,傳感器受周圍光照環(huán)境等因素大,會出現(xiàn)“誤判”情況。為了改善這種傳統(tǒng)情況的不足,本文將OpenMV攝像頭當(dāng)作機器人的“眼睛”,利用Arduino單片機聯(lián)結(jié)攝像頭與舵機控制板通信,使巡線機器人能保持高度的靈敏性,并可隨時調(diào)節(jié)由光線帶來的顏色閾值問題。
OpenMV是一個以STM32F765VI ARM Cortex M7處理器為核心,集成了OV7725攝像頭芯片的機器視覺模塊,其搭載了Micro Python解釋器,可用Python語言高效地實現(xiàn)核心機器視覺算法。OpenMV機器視覺算法包括尋找色塊、人臉檢測、顏色跟蹤等功能,可以用來實現(xiàn)產(chǎn)品的殘次品篩選、非法入侵檢測、跟蹤固定的標(biāo)記物等,具有穩(wěn)定性高、傳輸效率高等特點[4]。
圖像處理技術(shù)是OpenMV的核心功能,也是巡線機器人最重要的部分。OpenMV IDE作為調(diào)試軟件,可將圖像處理部分與攝像頭硬件連接起來,方便有效地操作。作為機器人的“眼睛”,OpenMV負(fù)責(zé)將道路狀況實時發(fā)送給機器人,判斷行走路線是否偏離既定的軌道。若偏離值在允許范圍內(nèi),則機器人繼續(xù)保持直行;若偏離值超過設(shè)定范圍,則根據(jù)其大小和方向旋轉(zhuǎn)相應(yīng)的角度來控制機器人回歸到軌 道上。
對于尋跡軌道,根據(jù)現(xiàn)實要求,可分為單軌巡線和雙軌巡線。在這里,以單軌巡線為分析點。攝像頭將把路面信息以實時圖像呈現(xiàn)在IDE中,同時根據(jù)需要,設(shè)定圖像顯示形式,可采用GB565彩色顯示,也可采用GRAYSCALE黑白模式,同時可使用ROI命令來選擇自己所需要的圖像區(qū)域。以軌道顏色為黑線為例,設(shè)置捕捉色塊的閾值為黑色閾值,就可以抓捕到圖像中所有黑色的色塊并標(biāo)記出來[5]。然后進行圖像的Otsu二值化處理,即將圖像轉(zhuǎn)化為只有黑白兩種閾值的圖像[6]。在對其進行閾值分割時,選定的分割閾值應(yīng)使前景區(qū)域的平均灰度、背景區(qū)域的平均灰度與整幅圖像的平均灰度之間差別最大,這種差異用區(qū)域的方差來表示,其相互關(guān)系如下所示:
=0×0+1×1(1)
2=0×(0-)2+1×(1-)2(2)
式(1)(2)中:為圖像的總平均灰度;0為前景像素點總數(shù)占圖像總像素點數(shù)目比例;0為平均灰度;1為背景像素點總數(shù)占圖像總像素點數(shù)目比例;1為平均灰度;2為前景和背景圖象的方差。讓閾值在灰度范圍內(nèi)依次取值,使2最大的閾值便是最佳區(qū)域分割閾值[7-8]。
經(jīng)過色塊尋找和Otsu二值化處理后,可對黑線實行多段標(biāo)記,經(jīng)過權(quán)重加和算法或者線性回歸處理對黑線進行偏離值計算,這里的偏離值是指偏離圖像中心線的角度,根據(jù)程序算法完成。如此,便可實時顯現(xiàn)出機器人對于軌道的偏離程度。若想將偏離數(shù)據(jù)傳給機器人,就需要采用URT命令與Arduino進行串口通信傳值[9]。
Arduino是一塊基于開放原始代碼的Simple i/o平臺,具有類似Java、C語言的開發(fā)環(huán)境,可以配合一些電子元件例如LED燈、蜂鳴器、光敏電阻等來開發(fā)出設(shè)計者想要的產(chǎn)品,效果驚人。此外,Arduino還可以在運行時和電腦中的程序如Flash、Processing、MaxMSP等進行通訊。其以高速的微處理控制器(Atmel Atmega328)、USB直供電或外部5~9 V直流電壓供電以及簡單、易理解的開放語言和環(huán)境等優(yōu)點備受電子元件愛好者的推崇[10]。
Arduino實際上由可編程電路板和Arduino IDE集成開發(fā)環(huán)境軟件組成??墒褂肐DE編寫計算機代碼,然后下載到實際電路板中,實現(xiàn)電路板單獨控制機器人的脫機運行。至于對電路板的大小要求比較嚴(yán)格的地方,可以采用Arduino Nano,它有著十分小巧的體積,且其他功能依然完善。Arduino Nano的引腳示如圖1所示。
Arduino既要接受由OpenMV傳遞過來的角度偏轉(zhuǎn)值,又要向舵機控制板輸出信號控制機器人行走,但因其本身只有一個串口,無法同時進行接收與發(fā)送,于是在與OpenMV進行通信時,需設(shè)置模擬串口(軟串口)進行信息交流[11]。串口通訊至少需要3根線,即TX、RX和GND,TX是發(fā)送端,RX是接收端,GND是地線。則在Arduino IDE軟件中,需編寫將數(shù)字串口設(shè)置成模擬串口的代碼,以D2、D3數(shù)字口為例,其設(shè)置成為軟串口的命令為:
其中,默認(rèn)設(shè)置D2口為接收端RX,D3口為發(fā)送端TX。在硬件上,將Arduino Nano的D2、D3引腳分別與OpenMV的TX、RX引腳相連(實際為P4、P5引腳),就可以實現(xiàn)信號通訊。不同于傳統(tǒng)的巡線機器人,此種設(shè)計下的傳輸速度是可控的,可以設(shè)置兩者的通信傳輸速率為9 600波特率或者4 800波特率,具體數(shù)值可根據(jù)實際情況靈活選擇。在這里,基于對機器人的快速性要求,選擇9 600波特率。
圖1 Arduino Nano引腳圖
實際上,Arduino起著信號傳遞作用。OpenMV程序會將具體的偏轉(zhuǎn)值轉(zhuǎn)化成為左轉(zhuǎn)和右轉(zhuǎn)信號,若開始執(zhí)行轉(zhuǎn)向信號的偏轉(zhuǎn)值為4°,則相關(guān)程序如下所示:
攝像頭傳遞給Arduino“L”“R”或者“S”的信息,Arduino又將信號傳遞給舵機控制板,并按照內(nèi)部編程信息執(zhí)行事先已儲存在控制板內(nèi)的動作組,這樣機器人就可以在偏差可控范圍內(nèi)沿著黑色直行走。
機器人控制系統(tǒng)是根據(jù)指令及傳感信息控制機器人完成一定的動作或任務(wù)的裝置,它是機器人的心臟,決定了機器人性能的優(yōu)劣[12]。舵機控制板、Arduino與OpenMV三者相連的系統(tǒng)就是其控制系統(tǒng),控制機器人的行走模式與方向。該控制系統(tǒng)采取模塊化設(shè)計控制結(jié)構(gòu),將主從控制與分布式控制方式相結(jié)合,促使形成一種主從加分布的控制方式,這不僅可以有效地減少主控制器的工作量又可以及時處理從控制器出現(xiàn)的一些緊急或單一控制的情況,有助于機器人的整體實時控制與工作效率提升。
在實際運行時,需將舵機控制板的信號線、地線與Arduino連接進行信號通信,即接通控制板上的二次開發(fā)串口通信接口,舵機控制板如圖2所示。該控制板同樣搭配調(diào)試軟件,在其內(nèi)部程序中,可設(shè)定機器人每一個舵機運轉(zhuǎn)的時間,根據(jù)各種情況下的實際需要,調(diào)試出不同時間的動作組。而一般情況下,準(zhǔn)確率高的機器人動作較慢,動作快的機器人平穩(wěn)性較差,可采用不同的行走姿態(tài)來解決這個問題。
圖2 16路舵機控制板圖
在組裝機器人時,需將機器人舵機各個號位連接于舵機控制板中的特定接口,根據(jù)事先調(diào)試好的動作組執(zhí)行相應(yīng)程序。若想實現(xiàn)脫機運行,則需要為其安裝7.4 V左右的鋰電池,對舵機控制板和Arduino供電,并且將Arduino的5 V電源線與OpenMV的VIN接口相連,實現(xiàn)對攝像頭的供電運行。如此,三者就可僅用一塊電池實現(xiàn)三位控制器的脫機運行,具有良好的實際運用性。
作為仿人機器人,其必須要有明顯的頭、手臂、軀干和雙足等部分,與人體的結(jié)構(gòu)比例相協(xié)調(diào)。所以設(shè)計機器人頭部為1個自由度,手臂2個自由度,軀干設(shè)計自由度不等,但大體上可分為縱軸與橫軸自由度,并且要求機器人在行走過程中有明顯的、協(xié)調(diào)的擺頭和擺臂動作[13]。
對于機器人的軀干設(shè)計,需選擇兩種型號舵機。一種是RDS3115雙軸型舵機,這是一款專門為機器人設(shè)計的數(shù)字舵機,扭矩15 kg,運行噪聲低、平穩(wěn)且線性度高,可控角度范圍為180°,斷電可360°旋轉(zhuǎn),采用單片機MCU控制,特別適合機器人的各關(guān)節(jié)活動。在機器人的手臂、腰身以及大腿等位置安裝,可實現(xiàn)最基礎(chǔ)的行走、轉(zhuǎn)向以及立定等動作。另一種則是SG90小舵機,其質(zhì)量僅為9 g,在4.8 V供電電源下,無負(fù)載速度為0.12 s/60°,堵轉(zhuǎn)扭矩為1.2~1.4 kg/cm,死區(qū)設(shè)定為7 μs左右。它則主要安裝在機器的頭部以及手腕處。因為頭部舵機會導(dǎo)致重心的上移、機器人下盤不穩(wěn)等問題,需要質(zhì)量比較小的舵機來控制,而大小舵機聯(lián)合組成機器人的手臂可使軀體在行進時更加協(xié)調(diào)與美觀。
金屬鋁件作為一種將舵機連接起來的中間元件,是機器人機械結(jié)構(gòu)必不可少的一部分,如圖3所示。此僅為其中連接件的一種形式,機器人頭部與肩部、肩部與手臂、肩部與腿部以及腿部與腳板之間的連接件都不一樣,需要根據(jù)實際舵機位置而設(shè)計,具有靈活性。
圖3 金屬鋁件連接圖
機器人的腳板設(shè)計也需要與人類相仿,采用材質(zhì)輕、強度高、機械性能好的有機塑料制作成為類似矩形的平行腳板,可有助于機器人的重心平穩(wěn)。當(dāng)要適用于摩擦力較小的環(huán)境時,可選擇在原腳板上貼上防滑墊,也可選擇其他摩擦力較大的腳板材料,以防機器人打滑。
根據(jù)所選材料組裝好機器人并同時接通電源與控制系統(tǒng)后,便開始進行機器人調(diào)試。在這過程中,出現(xiàn)了機器人重心不穩(wěn)、承重能力差等問題,但可采用大扭力舵機替換機器人的肩部與腳踝舵機的方案來解決這個問題,根據(jù)現(xiàn)場調(diào)試情況來看,有良好的效果。同時,在機器人行走過程中根據(jù)各種實際情況,需要相應(yīng)地調(diào)整機器人各個動作組中舵機的旋轉(zhuǎn)角度以及運行時間,以適應(yīng)行走的環(huán)境。一旦時間以及程序設(shè)定完成,其脫機運行獨自完成巡線任務(wù)的速度就是一定的,可用于不需要頻繁變更的場合,十分方便。
總體來說,此次設(shè)計的仿人巡線機器人主要由機械結(jié)構(gòu)和控制系統(tǒng)組成。仿人競速機器人要求其外形似人,若把機械結(jié)構(gòu)看作人的骨架,那么控制系統(tǒng)就被認(rèn)為是人的大腦,所以機器人的先進程度與功能強弱通常都直接與其控制系統(tǒng)的性能密切相關(guān)。仿人機器人作為當(dāng)今科技發(fā)展的主要機器人類型之一,注定有著不可估量的未來。比如可利用機器人攜帶的攝像裝置,實現(xiàn)線路及其安全通道的檢測與巡視,將檢測到的數(shù)據(jù)和圖像信息經(jīng)過無線傳輸系統(tǒng)發(fā)送到地面基站,通過地面基站接收、顯示發(fā)回的數(shù)據(jù)和圖像資料。而本文設(shè)計的巡線機器人可與其他硬件相搭配實現(xiàn)物流搬運、智能分揀、輸電線路巡檢等功能,將在農(nóng)業(yè)、工業(yè)、民業(yè)以及醫(yī)學(xué)類等領(lǐng)域?qū)崿F(xiàn)廣泛運用[14]。
[1]陳超,鄭彥寧,江鵬,等.基于兩自由度模塊化關(guān)節(jié)的巡線機器人設(shè)計[J].儀器儀表學(xué)報,2014,35(12):28-35.
[2]高峰,郭為忠.中國機器人的發(fā)展戰(zhàn)略思考[J].機械工程學(xué)報,2016,52(7):1-5.
[3]任大林,劉恒,劉琴.淺析仿人機器人專利發(fā)展?fàn)顩r[J].科技創(chuàng)新與應(yīng)用,2016(18):57.
[4]牛國臣.基于OpenMV的類人機器人教學(xué)實踐[J].計算機教育,2019(10):38-41.
[5]劉彩霞,楊春.基于機器視覺的食品碼垛機器人控制系統(tǒng)設(shè)計[J].食品工業(yè),2020,41(1):231-233.
[6]OTSU N.A threshold selection method from gray-Level histograms[J].IEEE Transactions on Systems Man and Cybernetics,1979,9(1):62.
[7]雷建鋒,汪偉.基于OpenCV的圖像閾值分割研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(24):73-76.
[8]牛國臣,許開魯.基于線性CCD的類人機器人循跡系統(tǒng)的設(shè)計[J].現(xiàn)代電子技術(shù),2018,41(2):133-136,140.
[9]李占鵬,郭穎,韓濟陽,等.基于圖像識別的雙足循跡機器人設(shè)計[J].國外電子測量技術(shù),2019,38(4):154-157.
[10]孫梅,張森林.基于Arduino模塊化機器人視覺系統(tǒng)的研究與設(shè)計[J].華中師范大學(xué)學(xué)報(自然科學(xué)版),2014,48(4):511-515.
[11]施敏虎,栗云鵬,莊曙東,等.基于OpenMV的智能搬運車型機器人的設(shè)計[J].機械工程師,2020(4):20-25.
[12]韓富寧.中國民航信息化系統(tǒng)現(xiàn)狀及發(fā)展展望[J].硅谷,2013,6(17):4,7.
[13]吳悅.仿人機器人的設(shè)計與競賽應(yīng)用[J].電子世界,2019(23):136-137.
[14]王田苗,陶永.我國工業(yè)機器人技術(shù)現(xiàn)狀與產(chǎn)業(yè)化發(fā)展戰(zhàn)略[J].機械工程學(xué)報,2014,50(9):1-13.
TP242
A
10.15913/j.cnki.kjycx.2020.22.020
2095-6835(2020)22-0050-04
西北農(nóng)林科技大學(xué)教學(xué)改革項目“大學(xué)生科技競賽與工科專業(yè)創(chuàng)新教學(xué)協(xié)同模式研究”(編號:JY1903095);西北農(nóng)林科技大學(xué)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項目“多功能智能物流搬運機器人”(編號:X201910712285)
李思熠(1999—),女,重慶人,本科,主要從事機器人視覺方面與Arduino方面的研究。
王少坤(1979—),男,河北趙縣人,碩士,實驗師,主要從事智能控制技術(shù)與機器人技術(shù)、電力電子技術(shù)方面的研究。
〔編輯:嚴(yán)麗琴〕