張 曉,張楠楠
(1.塔里木大學(xué) 信息工程學(xué)院,新疆 阿拉爾 843300;2.中國(guó)農(nóng)業(yè)科學(xué)院 農(nóng)業(yè)信息研究所新疆南疆農(nóng)業(yè)信息化研究中心,新疆 阿拉爾 843300)
智能小車(chē)作為一種多輪驅(qū)動(dòng)的智能機(jī)器人,具有體積小、重量輕、成本低、運(yùn)動(dòng)靈活、操控方便等優(yōu)點(diǎn)。自動(dòng)避障技術(shù)通常指的是智能小車(chē)在行駛過(guò)程中,根據(jù)障礙物的特征自動(dòng)調(diào)整運(yùn)動(dòng)的方向以達(dá)到及時(shí)避讓的效果。據(jù)統(tǒng)計(jì)數(shù)據(jù)顯示,全球每年約有上百萬(wàn)人在交通事故中失去生命,受傷的更是不計(jì)其數(shù)。自動(dòng)避障功能可極大地降低因駕駛員疲勞駕駛、醉酒駕駛等導(dǎo)致的安全事故的發(fā)生率。
由麥克納姆輪構(gòu)成的全向移動(dòng)結(jié)構(gòu)使避障小車(chē)的靈活性得到了質(zhì)的提升,基于其優(yōu)良的轉(zhuǎn)向特性,麥克納姆輪或?qū)⒊蔀楸苷闲≤?chē)的標(biāo)準(zhǔn)配置。國(guó)內(nèi)外眾多高校都有相關(guān)方面的研究,如:國(guó)外的日本Keio大學(xué)、Kanzawa理工大學(xué)、德國(guó)的Osnabruck大學(xué)等,國(guó)內(nèi)的哈爾濱工業(yè)大學(xué)、浙江大學(xué)、華中科技大學(xué)等。國(guó)內(nèi)外公司在麥克納姆輪的應(yīng)用機(jī)器人方面做了大量且重要的研究,如德國(guó)KUKA公司、美國(guó)Vehicle公司、成都航發(fā)公司、深圳松靈等,但大多數(shù)是應(yīng)用在特定的場(chǎng)景下。因此,本文設(shè)計(jì)了一套基于Arduino的具有全向移動(dòng)功能的自動(dòng)避障智能小車(chē),通過(guò)模擬實(shí)際的障礙場(chǎng)景測(cè)試其運(yùn)用到實(shí)際場(chǎng)景中的可能性。主要內(nèi)容為:首先了解麥克納姆輪及其避障的原理;其次選擇智能小車(chē)各部分硬件,并且對(duì)整體控制程序進(jìn)行設(shè)計(jì),用Android手機(jī)通過(guò)藍(lán)牙連接實(shí)現(xiàn)對(duì)小車(chē)的實(shí)時(shí)控制;最后對(duì)小車(chē)的基本運(yùn)動(dòng)功能以及避障運(yùn)動(dòng)進(jìn)行試驗(yàn)檢測(cè)。
麥克納姆輪是1973年由瑞典麥克納姆公司的工程師設(shè)計(jì)的,是一種典型的全方位移動(dòng)輪。麥輪與普通輪的不同之處在于輪轂周邊分布一排無(wú)動(dòng)力輥?zhàn)?,輥?zhàn)涌衫@輪轂軸公轉(zhuǎn),并在地面摩擦力作用下繞輥?zhàn)虞S自轉(zhuǎn)。麥克納姆輪分為互為鏡像關(guān)系的A輪和B輪兩種。約定輪子前進(jìn)時(shí)的方向?yàn)殡姍C(jī)正轉(zhuǎn),輪子后退時(shí)的方向?yàn)殡姍C(jī)反轉(zhuǎn),當(dāng)電機(jī)正轉(zhuǎn)時(shí),A輪受摩擦力作用具有向右前方運(yùn)動(dòng)趨勢(shì),電機(jī)反轉(zhuǎn)具有向左后方運(yùn)動(dòng)的趨勢(shì)。A,B輪合力分解如圖1所示。
圖1 A,B輪的合力分解
由圖1可得出正確的麥輪分布可以是ABBA。當(dāng)4個(gè)輪子都向前轉(zhuǎn)時(shí),AB輪的軸向速度就會(huì)相互抵消,則底盤(pán)就向前直行,后退同理;如果A輪正轉(zhuǎn)、B輪反轉(zhuǎn)時(shí),向前向后的速度會(huì)抵消,僅剩下向右的速度,那么底盤(pán)就會(huì)向右平移;相反,如果A輪反轉(zhuǎn)、B輪正轉(zhuǎn),則底盤(pán)會(huì)向左平移。小車(chē)前后左右移動(dòng)的合力分解如圖2所示。
圖2 小車(chē)前后左右移動(dòng)的合力分解
當(dāng)A輪正轉(zhuǎn)、B輪不動(dòng)時(shí),底盤(pán)會(huì)向右前方運(yùn)動(dòng);當(dāng)A輪反轉(zhuǎn)、B輪不動(dòng)時(shí),底盤(pán)向左后方運(yùn)動(dòng)。相應(yīng)地,A輪不動(dòng)、B輪正轉(zhuǎn)時(shí),底盤(pán)向左前方運(yùn)動(dòng);A輪不動(dòng)、B輪反轉(zhuǎn)時(shí),底盤(pán)向右后方運(yùn)動(dòng)。小車(chē)左右前、左右后移動(dòng)的合力分解如圖3所示。小車(chē)旋轉(zhuǎn)的移動(dòng)方式如圖4所示。
圖3 小車(chē)斜向移動(dòng)的合力分解
圖4 小車(chē)旋轉(zhuǎn)運(yùn)動(dòng)的合力分解
整個(gè)避障小車(chē)的流程圖設(shè)計(jì)主要由藍(lán)牙連接部分、手動(dòng)模式和自動(dòng)模式三部分組成。首先判斷手機(jī)與Arduino開(kāi)發(fā)板是否已經(jīng)與藍(lán)牙配對(duì)連接。藍(lán)牙模塊與開(kāi)發(fā)板配對(duì)后就需要人為判斷是否有障礙物。如果沒(méi)有障礙物,則進(jìn)入手動(dòng)模式對(duì)小車(chē)進(jìn)行控制;如果檢測(cè)到障礙物就執(zhí)行避障模式。手動(dòng)模式是先將APP發(fā)來(lái)的指令存入一個(gè)變量中,然后通過(guò)藍(lán)牙將此變量存儲(chǔ)的數(shù)據(jù)發(fā)送給小車(chē),最后小車(chē)按指令執(zhí)行相應(yīng)的移動(dòng)操作。自動(dòng)模式主要由信息采集與信息處理組成。信息采集依賴(lài)于小車(chē)前方的超聲波測(cè)距模塊和四周的4個(gè)紅外測(cè)距模塊,將實(shí)時(shí)采集的數(shù)據(jù)經(jīng)過(guò)Arduino開(kāi)發(fā)板處理后判斷出相應(yīng)的障礙物形狀,最后根據(jù)程序執(zhí)行相應(yīng)的避障路線(xiàn)。由于Arduino開(kāi)發(fā)板本身的外部中斷接口不足,無(wú)法實(shí)現(xiàn)自主由手動(dòng)模式轉(zhuǎn)為自動(dòng)模式,所以在手動(dòng)模式與自動(dòng)模式中會(huì)人為地實(shí)時(shí)判斷是否有障礙物。避障小車(chē)整體流程如圖5所示。
圖5 避障小車(chē)的整體流程
使用AF motor電機(jī)驅(qū)動(dòng)擴(kuò)展板免去了自主設(shè)計(jì)PWM脈沖信號(hào)調(diào)速的繁雜工作,但依然會(huì)因小車(chē)整體構(gòu)架而出現(xiàn)車(chē)體前后重量不一致,因而難以實(shí)現(xiàn)較好的橫向和斜向移動(dòng)。為了達(dá)到預(yù)期運(yùn)動(dòng)效果,必須對(duì)每個(gè)電機(jī)的速度進(jìn)行單獨(dú)設(shè)置。對(duì)電機(jī)控制的程序思路為:
1)使用4條AF_DCMotor motor1(1)語(yǔ)句建立4個(gè)直流電機(jī)對(duì)象,它們的名稱(chēng)分別是:motor1、motor2、motor3、motor4。語(yǔ)句括號(hào)中的數(shù)字代表各個(gè)電機(jī)對(duì)象連接在AFMotor擴(kuò)展板的電機(jī)端口號(hào)碼。
2)在setup()函數(shù)中使用4條motor1.set Speed(100)語(yǔ)句,通過(guò)set Speed庫(kù)函數(shù)設(shè)置電機(jī)運(yùn)行速度,括號(hào)中的參數(shù)是運(yùn)行速度參數(shù),其允許范圍是0~255,速度參數(shù)越大,運(yùn)轉(zhuǎn)速度越快。參數(shù)為0時(shí)電機(jī)停止轉(zhuǎn)動(dòng)。
3)使用4條motor1.run(RELEASE)語(yǔ)句讓4個(gè)電機(jī)在啟動(dòng)時(shí)停止轉(zhuǎn)動(dòng),防止開(kāi)機(jī)時(shí)對(duì)小車(chē)失去控制。
假設(shè)僅一個(gè)障礙物,即障礙物表面連續(xù),本文根據(jù)障礙物的形狀分別設(shè)計(jì)不同的避障軌跡,并設(shè)計(jì)檢測(cè)到障礙物的安全距離??紤]到小車(chē)是為了繞開(kāi)障礙物,因此在避開(kāi)障礙物后設(shè)定其向前運(yùn)動(dòng),然后再檢測(cè)是否存在障礙物,直到各個(gè)傳感器都沒(méi)檢測(cè)到障礙物后執(zhí)行“停止”命令。障礙物可能出現(xiàn)的情況及避障軌跡如圖6所示。
圖6 障礙物形狀及避障軌跡
圖6中黑色線(xiàn)條代表障礙物的大致形狀,藍(lán)色線(xiàn)條代表小車(chē)的避障軌跡。小車(chē)的避障軌跡有且僅有8條:前進(jìn):圖6a)和圖6l);先左移然后前進(jìn):圖6c)和圖6k);先右移然后前進(jìn):圖6d)和圖6j);先后移然后右移最后前進(jìn):圖6i);先右向前移然后前進(jìn):圖6e);先向左前移然后前進(jìn):圖6f);先向左后移然后左移,最后前進(jìn):圖6g);先向右后移然后右移,最后前進(jìn):圖6h)。
對(duì)于小車(chē)的控制使用Bluetooth軟件,只需要自定義每個(gè)按鈕的指令,然后通過(guò)藍(lán)牙連接發(fā)送指定,實(shí)現(xiàn)對(duì)智能小車(chē)的控制。操作界面中紅色按鈕是自動(dòng)控制,綠色按鈕是手動(dòng)控制??刂浦鹘缑媾c控制盤(pán)的參數(shù)設(shè)置如圖7所示。
圖7 軟件控制主界面
與Arduino建立連接的程序過(guò)程為:在loop()函數(shù)中判定硬件串口是否收到信息,如果硬件串口收到信息,將信息傳遞給cmdChar變量,然后硬件串口輸出cmdChar變量信息以便于開(kāi)發(fā)調(diào)試使用;如果用戶(hù)輸入控制指令字符為“A”,則將當(dāng)前運(yùn)行模式控制變量設(shè)置為AUTO;如果用戶(hù)輸入控制指令字符為“M”,則將當(dāng)前運(yùn)行模式控制變量設(shè)置為手動(dòng)模式。手動(dòng)模式參數(shù)設(shè)置如圖8所示。
圖8 手動(dòng)模式參數(shù)設(shè)置
小車(chē)在自動(dòng)避障過(guò)程中對(duì)信息的采集依賴(lài)于傳感器,對(duì)于傳感器采集的數(shù)據(jù),要判定在一個(gè)數(shù)值范圍內(nèi)是否有障礙物,這時(shí)需要選擇一個(gè)安全距離。由于本文小車(chē)不需要轉(zhuǎn)彎就可以轉(zhuǎn)變運(yùn)動(dòng)方向,且對(duì)安全距離的選擇并不需要考慮小車(chē)的規(guī)格尺寸,因此經(jīng)過(guò)實(shí)物驗(yàn)證最終將安全距離設(shè)定為15 cm。超聲波測(cè)距模塊的安全距離設(shè)定是基于其測(cè)定的距離,然后通過(guò)編程實(shí)現(xiàn);紅外測(cè)距模塊的安全距離的選取使用手動(dòng)調(diào)節(jié)旋鈕就可以設(shè)定,在安全距離內(nèi)檢測(cè)到障礙物則返回字符“0”,否則返回字符“1”。
為了對(duì)小車(chē)實(shí)際避障能力進(jìn)行檢驗(yàn),對(duì)各種類(lèi)型的障礙物與小車(chē)不同位置進(jìn)行多次實(shí)驗(yàn)?zāi)M,障礙物模擬如圖9所示。
圖9中障礙物位置模擬的a)、b)、c)、d)圖形分別為同一障礙物被小車(chē)信息采集系統(tǒng)中1個(gè)傳感器、2個(gè)傳感器、3個(gè)傳感器、4個(gè)傳感器檢測(cè)到障礙物。
圖9 障礙物位置模擬圖
在同一障礙物的不同擺法基礎(chǔ)上,對(duì)小車(chē)的避障算法進(jìn)行了測(cè)試,各種形狀的障礙物都能按照指定程序運(yùn)行,測(cè)試結(jié)果如表1所示。避障測(cè)試成功率達(dá)88.9%。其中形狀編號(hào)指圖6中障礙物形狀編號(hào),測(cè)驗(yàn)次數(shù)是指小車(chē)對(duì)于同一障礙物處于不同位置分別進(jìn)行的3次測(cè)試。
表1 避障測(cè)試結(jié)果
由表1可知,本文避障系統(tǒng)仍然存在一定的缺陷,經(jīng)過(guò)分析,出現(xiàn)避障未成功一方面是由于同一障礙物的擺放位置發(fā)生變化;另一方面是由于傳感器的檢測(cè)安全距離發(fā)生變化導(dǎo)致避障失敗。因?yàn)榧t外測(cè)距模塊的安全距離是通過(guò)調(diào)節(jié)外部的旋鈕來(lái)設(shè)定的,所以有可能出現(xiàn)連續(xù)表面的障礙物被判定為2個(gè)或3個(gè)障礙物而出現(xiàn)避障失敗。出現(xiàn)避障失敗的情況如圖10所示。
圖10a)和圖10b)避障失敗極有可能是因?yàn)樾≤?chē)左側(cè)未能夠檢測(cè)到障礙物,將安全距離調(diào)大,則這種避障失敗情況可得到解決;圖10c)和圖10d)則可能是傳感器故障或者是被判定為其他類(lèi)型障礙物,為避免這種問(wèn)題出現(xiàn),可以在識(shí)別障礙物后,在串口監(jiān)視器打印出檢測(cè)到障礙物對(duì)應(yīng)的標(biāo)識(shí)并做進(jìn)一步分析。
圖10 避障模擬圖形
基于麥克納姆輪的全向移動(dòng)結(jié)構(gòu)的優(yōu)良轉(zhuǎn)向特性,本文設(shè)計(jì)了一種基于麥克納姆輪和Arduino的避障小車(chē)。首先詳細(xì)介紹麥克納姆輪的工作原理;其次使用Arduino開(kāi)發(fā)板設(shè)計(jì)避障小車(chē)系統(tǒng),同時(shí)進(jìn)行軟硬件的設(shè)計(jì);再進(jìn)行避障算法分析,用藍(lán)牙模塊進(jìn)行避障小車(chē)的無(wú)線(xiàn)控制;最后對(duì)避障小車(chē)進(jìn)行測(cè)試,對(duì)避障失敗的情形進(jìn)行分析。至此,基于麥克納姆輪和Arduino的避障小車(chē)的設(shè)計(jì)達(dá)到目標(biāo)要求。
注:本文通訊作者為張楠楠。