林甄 李睿偉 謝金冶 田碩
(三亞學(xué)院,海南省·三亞市,572022) (三亞小象科技有限公司)
目前,無(wú)人駕駛技術(shù)仍以智能電動(dòng)汽車領(lǐng)域的研究為主要方向,其研究過(guò)程屬于大型復(fù)雜系統(tǒng)的開(kāi)發(fā),包含智能汽車構(gòu)造、車規(guī)級(jí)傳感器等元素。這種大型車規(guī)系統(tǒng)開(kāi)發(fā),工程龐大,系統(tǒng)要求極高的穩(wěn)定性與安全性,受限于復(fù)雜的開(kāi)發(fā)工程量與冗雜流程[1-3]。因此,部分廠商開(kāi)始將方向轉(zhuǎn)為自動(dòng)駕駛領(lǐng)域在要求較低的自動(dòng)駕駛機(jī)器人開(kāi)發(fā)中。例如,美團(tuán)與京東公司的無(wú)人配送車、亞馬遜的送貨無(wú)人機(jī)方案、工業(yè)4.0時(shí)代的智能自動(dòng)導(dǎo)向車、搬運(yùn)機(jī)器人等[4-6],不同于載人汽車工業(yè)產(chǎn)品的開(kāi)發(fā),此類機(jī)器人的應(yīng)用場(chǎng)合要求較低,對(duì)各類指標(biāo)需求也沒(méi)有載人汽車嚴(yán)格,更易產(chǎn)出與落地。近年來(lái),以菜鳥網(wǎng)絡(luò)、京東等大企業(yè)為代表的,主要運(yùn)營(yíng)依靠物流體系的企業(yè),花費(fèi)巨大成本去研究無(wú)人配送技術(shù);如菜鳥所擁有的物流實(shí)驗(yàn)室,研發(fā)產(chǎn)品有倉(cāng)庫(kù)分揀搬運(yùn)機(jī)器人、無(wú)人物流配送機(jī)器人、送貨無(wú)人機(jī)等多個(gè)產(chǎn)品。
由于林場(chǎng)巡檢機(jī)器人,造價(jià)成本不易過(guò)高,為此,本研究根據(jù)林場(chǎng)巡檢實(shí)際使用布局,以傳統(tǒng)移動(dòng)機(jī)器人為基礎(chǔ),結(jié)合人工智能技術(shù)、傳感器技術(shù),設(shè)計(jì)技術(shù)方案——采用無(wú)刷直流電機(jī)(BLDC)構(gòu)建1套3電系統(tǒng),作為自動(dòng)駕駛技術(shù)的研究平臺(tái);使用“感知-決策-控制”方式作為自動(dòng)駕駛平臺(tái)架構(gòu),應(yīng)用單目相機(jī)作為視覺(jué)傳感器;自建道路行駛圖像與指示標(biāo)志目標(biāo)檢測(cè)數(shù)據(jù)集。依據(jù)林場(chǎng)巡檢的實(shí)際需要及設(shè)計(jì)的技術(shù)路線,設(shè)計(jì)了一款以神經(jīng)網(wǎng)絡(luò)技術(shù)為基礎(chǔ),使用單目相機(jī)作為傳感器的自動(dòng)視覺(jué)引導(dǎo)駕駛的林場(chǎng)巡檢機(jī)器人;旨在為為提高林場(chǎng)巡檢效率提供參考。
本研究以傳統(tǒng)移動(dòng)機(jī)器人為基礎(chǔ),結(jié)合人工智能技術(shù)、傳感器技術(shù)等,設(shè)計(jì)一款使用神經(jīng)網(wǎng)絡(luò)技術(shù)具備視覺(jué)感知能力的可自主運(yùn)行的輪式林場(chǎng)巡檢機(jī)器人(見(jiàn)圖1)。
圖1 輪式林場(chǎng)巡檢機(jī)器人的設(shè)計(jì)技術(shù)路線
1.2.1 系統(tǒng)功能設(shè)計(jì)
根據(jù)移動(dòng)機(jī)器人的使用環(huán)境場(chǎng)合確定設(shè)計(jì)需求,需實(shí)現(xiàn)特定環(huán)境可重復(fù)運(yùn)行,針對(duì)固定場(chǎng)所內(nèi)固定路線的自主行駛。
依據(jù)機(jī)器人整體控制原理(見(jiàn)圖2),整體控制流程分為兩部分,分別為決策層與執(zhí)行層。決策層硬件,主要為決策運(yùn)算計(jì)算機(jī),通過(guò)部署神經(jīng)網(wǎng)絡(luò)以及相應(yīng)的算法程序,實(shí)現(xiàn)對(duì)機(jī)器行為決策功能;同時(shí),該決策運(yùn)算計(jì)算機(jī)負(fù)責(zé)將運(yùn)算結(jié)果作為機(jī)器的上位控制信號(hào)產(chǎn)生并發(fā)出給執(zhí)行層。而執(zhí)行層使用了無(wú)刷直流電機(jī)驅(qū)動(dòng)模塊,負(fù)責(zé)驅(qū)動(dòng)電機(jī)執(zhí)行上層命令。計(jì)算機(jī)使用集成電路總線與控制信號(hào)轉(zhuǎn)換模塊進(jìn)行通信,由控制信號(hào)轉(zhuǎn)換模塊生成脈沖調(diào)寬模擬信號(hào),與無(wú)刷直流電機(jī)驅(qū)動(dòng)模塊通信。
圖2 機(jī)器整體控制框圖
1.2.2 總體機(jī)器動(dòng)力組件設(shè)計(jì)
本研究設(shè)計(jì)在移動(dòng)機(jī)構(gòu)上使用輪式驅(qū)動(dòng)方案作為可移動(dòng)機(jī)器人的執(zhí)行機(jī)構(gòu),具體使用無(wú)刷直流電動(dòng)機(jī)作為動(dòng)力驅(qū)動(dòng)執(zhí)行部件;通過(guò)電芯選型、組合焊接、外殼封裝等過(guò)程,自行設(shè)計(jì)并組裝構(gòu)建了機(jī)器的供電系統(tǒng)。
供電系統(tǒng)使用鋰聚合物電池(Lipo)作為能量來(lái)源,電芯額定電壓為3.7 V,電壓范圍為3.6~4.2 V;鋰聚合物軟包電芯,具有能量密度高、輕量化、放電能力強(qiáng)等特點(diǎn)。電池組設(shè)計(jì)標(biāo)準(zhǔn)電壓為36 V,放電倍率為15倍,電芯組合排列方式為單排排列(見(jiàn)圖3),10串2并結(jié)構(gòu)(10S2P)。
圖3 電池組電芯組合排列方式
由于多個(gè)鋰電芯在一致性方面無(wú)法做到完全一致,其容量、內(nèi)阻等指標(biāo)均具有細(xì)微的差距。因此,在組裝鋰電池組時(shí),不僅在單片電芯的挑選方面要求一致性高,且需要引入一種電池智能保護(hù)電路,為電池組的安全使用提供保障。本研究設(shè)計(jì)電池組安裝了1塊鋰電池保護(hù)板,可穩(wěn)定提供過(guò)充、過(guò)放、短路等保護(hù),出現(xiàn)問(wèn)題及時(shí)斷電。
在動(dòng)力輸出單元配置上,在機(jī)器中后部左右側(cè)各安裝1個(gè)無(wú)刷直流電動(dòng)機(jī)(BLDC),電動(dòng)機(jī)定子作為安裝軸心與車架連接固定,轉(zhuǎn)子部分與輪胎融合裝配(見(jiàn)圖4),驅(qū)動(dòng)過(guò)程無(wú)減速器裝置,即電動(dòng)機(jī)直驅(qū)。機(jī)器前部設(shè)置了2個(gè)無(wú)動(dòng)力萬(wàn)向輪,作為平衡支撐點(diǎn)。整機(jī)具體技術(shù)參數(shù):
圖4 動(dòng)力執(zhí)行單元組件裝配示意圖
動(dòng)力組件性能技術(shù)參數(shù)——最大扭矩為35 Nm×2、電動(dòng)機(jī)額定功率為350 W×2、最高速度約為10 km/h;
能源系統(tǒng)技術(shù)參數(shù)——電芯類別為鋰聚合物(20片)、排列結(jié)構(gòu)為10串2并、額定輸出電壓(直流)約為36 V、持續(xù)放電能力大于15 A、智能鋰電池保護(hù)板功能為欠壓、短路、過(guò)熱保護(hù)。
1.2.3 機(jī)械結(jié)構(gòu)與運(yùn)動(dòng)特性設(shè)計(jì)
機(jī)器在中后部?jī)蓚?cè)設(shè)計(jì)2個(gè)相同結(jié)構(gòu)的執(zhí)行驅(qū)動(dòng)輪,使用內(nèi)輪轂式電動(dòng)機(jī)作為驅(qū)動(dòng)輪轉(zhuǎn)動(dòng)的動(dòng)力,為機(jī)器提供動(dòng)力來(lái)源;使用電動(dòng)機(jī)直驅(qū)的控制方式,這種方式具有結(jié)構(gòu)簡(jiǎn)單可靠、控制策略簡(jiǎn)單的特點(diǎn)。機(jī)器框架前部下方裝配2個(gè)隨動(dòng)萬(wàn)向支撐輪,在結(jié)構(gòu)上僅起支撐隨動(dòng)功能(見(jiàn)圖5)。
圖5 驅(qū)動(dòng)輪示意圖
根據(jù)設(shè)計(jì)需求,機(jī)器主體機(jī)械框架采用高分子聚合物材料、聚乳酸、鋁合金型材等材質(zhì)綜合制作;在確保機(jī)器剛性的前提下,得益于聚合物材料的特性,使框架兼具了一定的韌性;高分子聚合物與鋁合金的使用,使結(jié)構(gòu)簡(jiǎn)單輕巧。機(jī)器結(jié)構(gòu)外觀約為(長(zhǎng)×寬×高)60 mm×50 mm×50 mm,主要組件見(jiàn)圖6。
圖6 框架各組件示意圖
運(yùn)動(dòng)特性方面得益于2個(gè)獨(dú)立運(yùn)行的電機(jī),使得機(jī)器運(yùn)動(dòng)具有靈活轉(zhuǎn)向的特性。機(jī)器采用兩輪差速驅(qū)動(dòng)方式,通過(guò)改變兩側(cè)電機(jī)轉(zhuǎn)速及其轉(zhuǎn)矩控制行駛方向。這種驅(qū)動(dòng)方式,結(jié)構(gòu)簡(jiǎn)單、靈活方便、轉(zhuǎn)向半徑較小,可實(shí)現(xiàn)比傳統(tǒng)偏轉(zhuǎn)車輪轉(zhuǎn)向方式更小的轉(zhuǎn)向半徑;并可實(shí)現(xiàn)原地轉(zhuǎn)向[7-8]。
由圖7可見(jiàn),前輪偏轉(zhuǎn)轉(zhuǎn)向方式的轉(zhuǎn)向半徑為R。根據(jù)轉(zhuǎn)向形式為前輪偏轉(zhuǎn)的車輛轉(zhuǎn)彎半徑公式:R=L·cotα+K/2、R=L·cotβ-K/2;式中的L為前后車軸的軸距、K為左右轉(zhuǎn)向節(jié)立軸距、α為內(nèi)導(dǎo)向輪轉(zhuǎn)向偏轉(zhuǎn)角、β為外導(dǎo)向輪轉(zhuǎn)向偏轉(zhuǎn)角。
圖7 前輪偏轉(zhuǎn)轉(zhuǎn)向方式半徑
由圖8可見(jiàn),差速轉(zhuǎn)向方式的轉(zhuǎn)向半徑為R。根據(jù)轉(zhuǎn)向形式為差速轉(zhuǎn)向的車輛轉(zhuǎn)彎半徑公式:R=B(v2+v1)/2(v2-v1);式中v1為內(nèi)側(cè)輪速、v2為外側(cè)輪速、B為左右輪距。
圖8 差速轉(zhuǎn)向方式半徑
代入本研究機(jī)器底盤參數(shù)計(jì)算可得,轉(zhuǎn)向方式采用差速轉(zhuǎn)向的轉(zhuǎn)向半徑,小于采用前輪偏轉(zhuǎn)方式的轉(zhuǎn)向半徑;更有利于機(jī)器在狹小復(fù)雜的環(huán)境中的運(yùn)行,提高了靈活度。
1.2.4 結(jié)構(gòu)設(shè)計(jì)、仿真及運(yùn)動(dòng)學(xué)分析方法
輪式機(jī)器人外觀模型見(jiàn)圖9,后驅(qū)動(dòng)輪電機(jī)與輪胎融合設(shè)計(jì),使用兩側(cè)車輪獨(dú)立的驅(qū)動(dòng)方式。模型場(chǎng)景渲染圖見(jiàn)圖10。
圖9 外觀模型四視圖
圖10 輪式機(jī)器人外觀模型場(chǎng)景渲染圖
因機(jī)器主體框架除底部驅(qū)動(dòng)輪安裝架使用金屬材質(zhì),其上部主要使用聚丙烯作為箱體結(jié)構(gòu),在后續(xù)使用中存在受力形變問(wèn)題,所以引入零應(yīng)力分析仿真。使用達(dá)索軟件對(duì)機(jī)器人主體框架進(jìn)行仿真分析(見(jiàn)圖11),在箱體頂部施加壓力后在其側(cè)壁上緣率先出現(xiàn)較明顯形變。因此在箱體結(jié)構(gòu)設(shè)計(jì)時(shí),為提高強(qiáng)度,在箱體側(cè)壁安裝剛性材料,用作支撐同時(shí)在箱體頂部添加橫向支撐材料,減少箱體形變的程度,同時(shí)保證機(jī)器框架的強(qiáng)度。
圖11 機(jī)器人主體框架靜應(yīng)力分析仿真結(jié)果
本研究可移動(dòng)機(jī)器人設(shè)計(jì)選用輪式驅(qū)動(dòng)方案,其結(jié)構(gòu)為2個(gè)驅(qū)動(dòng)輪與2個(gè)無(wú)動(dòng)力支撐輪的2+2結(jié)構(gòu)。這種結(jié)構(gòu)主要特點(diǎn)為:采用驅(qū)動(dòng)輪作為主動(dòng)輪為機(jī)器提供動(dòng)力,配合無(wú)驅(qū)動(dòng)能力的萬(wàn)向支撐輪作為運(yùn)動(dòng)結(jié)構(gòu)。由驅(qū)動(dòng)輪的轉(zhuǎn)速差改變運(yùn)動(dòng)方向,支撐輪僅起支撐作用。
圖12 機(jī)器運(yùn)動(dòng)學(xué)模型
1.2.5 主要器件選型
本研究設(shè)計(jì)采用的上位決策控制計(jì)算機(jī),使用Nvidia公司的微型計(jì)算機(jī)jetson nano,計(jì)算機(jī)子型號(hào)a02與b01兩種;本研究因神經(jīng)網(wǎng)絡(luò)部署在板卡中,需要較大內(nèi)存做數(shù)據(jù)處理,故選擇使用b01型號(hào)(4 GB內(nèi)存)作為硬件平臺(tái)。Jetson nano搭載嵌入式處理器,64位arm架構(gòu);計(jì)算機(jī)運(yùn)行由NVIDIA公司依據(jù)Ubuntu開(kāi)發(fā)的操作系統(tǒng);系統(tǒng)底層集成了針對(duì)nano核心板的各類硬件驅(qū)動(dòng)。整體由核心板與載板組成,核心板搭載1顆128核Maxwell架構(gòu)的GPU,CPU采用ARM-A57架構(gòu)4核處理器,主頻為1.43 GHz,核心板載板具有GPIO、IIC、SPI、UART等拓展接口。
在感知系統(tǒng)中的相機(jī)傳感器是視覺(jué)感知能力的重要傳感器,視覺(jué)傳感器選型的好壞決定了圖像視覺(jué)感知的采集頻率、視場(chǎng)角、分辨率、數(shù)據(jù)格式等重要參數(shù)。本研究計(jì)算機(jī)運(yùn)行Linux操作系統(tǒng),系統(tǒng)底層驅(qū)動(dòng)支持(UVC)免驅(qū)協(xié)議,同時(shí)nano模組的載板提供USB接口,因此無(wú)需驅(qū)動(dòng)的USB相機(jī)是非常好的選擇。
另外,機(jī)器人在運(yùn)行過(guò)程中需盡可能感知較大的視野,視場(chǎng)角大小與視野范圍成正比(見(jiàn)圖13),而更大的視野可以帶來(lái)更多的信息,視野范圍與感知能力成正比,所以決定視野范圍的鏡頭視場(chǎng)角參數(shù)大小很重要;大的視場(chǎng)角會(huì)帶來(lái)更大的視野范圍,同時(shí)也會(huì)對(duì)圖像邊角區(qū)域帶來(lái)畸變,在保證視野范圍的同時(shí)圖像的畸變需盡可能的小。因此,需要選擇一款廣角、支持USB免驅(qū)協(xié)議的單目攝像頭。綜上,本研究選定型號(hào)HSK-200W的單目相機(jī)(見(jiàn)表1)。
表1 HSK-200W單目相機(jī)主要技術(shù)參數(shù)
圖13 不同鏡頭的視場(chǎng)角范圍
1.3.1 整體控制邏輯流程設(shè)計(jì)
根據(jù)實(shí)現(xiàn)過(guò)程分類,自動(dòng)駕駛在技術(shù)方案中可分為兩大類。其中之一是模塊化方案,此類方案依據(jù)子模塊設(shè)計(jì),在傳感器input到執(zhí)行器output的中間過(guò)程內(nèi)搭建了多個(gè)獨(dú)立子模塊,例如感知模塊、控制模塊、規(guī)劃決策模塊等。此類方案設(shè)計(jì)的特點(diǎn)及優(yōu)勢(shì),主要為其具備可解釋性,在中間過(guò)程內(nèi)搭建了具有可解釋性的反饋。因此,若在運(yùn)行中發(fā)生故障或報(bào)錯(cuò)行為異常的情況,可以識(shí)別出發(fā)生異常故障的子模塊。另一類是依據(jù)“端到端”的方案,此類方案是由感知輸入到執(zhí)行輸出行為直接映射的方案,即由傳感器輸入經(jīng)處理直接反饋對(duì)應(yīng)的行為輸出;此類方案一般依據(jù)深度神經(jīng)網(wǎng)絡(luò)(DNN)技術(shù)開(kāi)發(fā)實(shí)現(xiàn),與傳統(tǒng)模塊化方案相比,得益于神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域的卓越技術(shù)優(yōu)勢(shì),其具有結(jié)構(gòu)簡(jiǎn)單、無(wú)需特征設(shè)計(jì)及標(biāo)定、傳感器校準(zhǔn)等優(yōu)勢(shì);故本研究選用此方案進(jìn)行自動(dòng)駕駛方案的設(shè)計(jì)。
1.3.2 決策層軟件程序設(shè)計(jì)
本研究機(jī)器決策層自主控制程序原理(見(jiàn)圖14)分為兩部分:一部分為神經(jīng)網(wǎng)絡(luò)訓(xùn)練程序流程,首先進(jìn)行圖像采集,收集較大樣本元素組合為數(shù)據(jù)集;在計(jì)算機(jī)上部署神經(jīng)網(wǎng)絡(luò)框架,將數(shù)據(jù)集導(dǎo)入框架進(jìn)行不斷迭代學(xué)習(xí),進(jìn)行關(guān)鍵特征的分析學(xué)習(xí),將迭代結(jié)果提取成關(guān)鍵特征并打包為模型導(dǎo)出。另一部分為實(shí)時(shí)控制程序流程,設(shè)備外設(shè)相機(jī)采集環(huán)境圖像,將圖像代入圖像處理程序進(jìn)行圖像預(yù)處理,得到可用于神經(jīng)網(wǎng)絡(luò)的圖像,并作為神經(jīng)網(wǎng)絡(luò)的輸入層;而后將處理后的圖像與模型進(jìn)行關(guān)鍵特征對(duì)比,得出相似率最大結(jié)果,并輸出至執(zhí)行層。
圖14 計(jì)算機(jī)決策流程圖
本研究運(yùn)算核心板中機(jī)器學(xué)習(xí)算法依據(jù)卷積神經(jīng)網(wǎng)絡(luò),包含卷積層和全連接層,前者部署5層后者部署2層;外設(shè)攝像頭實(shí)時(shí)采集圖像處理后,作為神經(jīng)網(wǎng)絡(luò)的輸入,輸出結(jié)果為浮點(diǎn)數(shù)組,包括經(jīng)過(guò)網(wǎng)絡(luò)得出的轉(zhuǎn)向角和速度預(yù)測(cè)值。
將采集的圖像組成數(shù)據(jù)集,并在神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,在經(jīng)過(guò)多次迭代后訓(xùn)練完成輸出模型結(jié)果。在自主運(yùn)行的過(guò)程中,通過(guò)攝像頭采集的圖像經(jīng)過(guò)預(yù)處理后輸入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行模型比對(duì),浮點(diǎn)數(shù)結(jié)果作成轉(zhuǎn)向角和速度預(yù)測(cè)值,機(jī)器自主運(yùn)行過(guò)程中不斷采集當(dāng)前道路環(huán)境圖像,神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)轉(zhuǎn)向角度,循環(huán)往復(fù),實(shí)現(xiàn)端到端自主決策運(yùn)行功能。
1.3.3 電機(jī)驅(qū)動(dòng)控制模塊控制程序流程設(shè)計(jì)
圖15為電機(jī)驅(qū)動(dòng)控制模塊控制程序流程。機(jī)器開(kāi)機(jī)上電,進(jìn)行故障檢測(cè)判斷,根據(jù)外設(shè)電路反饋值是否為設(shè)定范圍,判定電機(jī)狀態(tài)以及有無(wú)信號(hào)輸入;若電機(jī)連接出現(xiàn)故障或無(wú)信號(hào)輸入,轉(zhuǎn)入停止保護(hù)模式,等待故障排除。若信號(hào)輸入正常且電機(jī)連接正常,進(jìn)入脈沖調(diào)寬模擬信號(hào)占空比分析函數(shù),通過(guò)AD轉(zhuǎn)換與定時(shí)器將信號(hào)讀入單片機(jī)中,若油門通道(ch2)、轉(zhuǎn)向通道(ch1)均為中位值,則控制電機(jī)剎車;轉(zhuǎn)向通道與油門通道,決定機(jī)器的運(yùn)行速度與方向。
圖15 驅(qū)動(dòng)控制模塊控制流程圖
1.3.4 神經(jīng)網(wǎng)絡(luò)框架設(shè)計(jì)
本文使用TensorFlow作為機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)框架,該框架由google公司團(tuán)隊(duì)開(kāi)發(fā)維護(hù),為DNN深度神經(jīng)網(wǎng)絡(luò)打造,可以利用TensorFlow將深度神經(jīng)網(wǎng)絡(luò)部署在不同核心的處理器中。安裝時(shí)應(yīng)注意版本對(duì)應(yīng)關(guān)系,因?yàn)橐c其他庫(kù)配合使用,不匹配的版本會(huì)出現(xiàn)兼容問(wèn)題。如表2為英偉達(dá)官方給出的版本產(chǎn)品對(duì)照表,根據(jù)表格選擇2.3.1版本框架進(jìn)行安裝。
表2 TensorFlow版本對(duì)照
在python環(huán)境下,通過(guò)import tensorflow引入tensorflow庫(kù);輸入print(tf._version_)命令檢查版本號(hào)輸出,成功初始化tensorflow功能框架(見(jiàn)圖16),并顯示版本號(hào)為2.3.1,即成功部署2.3.1版本tensorflow框架并測(cè)試通過(guò)。
圖16 python環(huán)境測(cè)試TensorFlow
1.3.5 相機(jī)驅(qū)動(dòng)設(shè)計(jì)
從自動(dòng)駕駛實(shí)現(xiàn)過(guò)程中的端到端控制方案,確定感知輸入傳感器設(shè)備為單目相機(jī),系統(tǒng)底層驅(qū)動(dòng)由pygame庫(kù)支持,在環(huán)境中使用pip工具安裝pygame。在決策程序中需創(chuàng)建相機(jī)初始化子函數(shù),用于初始化相機(jī),設(shè)計(jì)為固定格式圖像輸入,具體需求為160×120分辨率圖像輸入。在輸入函數(shù)內(nèi)初始化定義中將圖像屬性確定。部分程序見(jiàn)圖17,函數(shù)輸入量為圖像寬度、圖像高度等屬性,導(dǎo)入pygame庫(kù)并初始化,等待主程序調(diào)用。
圖17 camera子函數(shù)部分代碼截圖
由本研究確定的設(shè)計(jì)方案,機(jī)器學(xué)習(xí)方式使用神經(jīng)網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)。而神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練迭代的過(guò)程,是通過(guò)神經(jīng)網(wǎng)絡(luò)擬合數(shù)據(jù)集樣本映射關(guān)系層層優(yōu)化的過(guò)程,對(duì)于訓(xùn)練得出的特征模型效果使用損失函數(shù)對(duì)擬合誤差進(jìn)行量化表示。本研究共設(shè)置4類道路作為測(cè)試場(chǎng)地,分別為自行構(gòu)建的具有顯著標(biāo)志線簡(jiǎn)易環(huán)形道路與無(wú)標(biāo)志線社區(qū)環(huán)境道路、林場(chǎng)環(huán)境道路(見(jiàn)圖18)、公路。初期在自建環(huán)境示教并采集數(shù)據(jù)集,用于測(cè)試機(jī)器基礎(chǔ)功能是否可以正常實(shí)現(xiàn),嘗試實(shí)驗(yàn)從大量數(shù)據(jù)中學(xué)習(xí)提取到的行為特征方案的可行性。
圖18 林場(chǎng)環(huán)境道路
(1)數(shù)據(jù)集制作。首先部署好機(jī)器硬件部分,連接電源上電啟動(dòng)計(jì)算機(jī)平臺(tái)。等待初始化相機(jī)傳感器,初始化集成電路總線設(shè)備等。設(shè)置相機(jī)采集圖像屬性,測(cè)試各系統(tǒng)工作是否正常,測(cè)試手動(dòng)控制與緊急制動(dòng)是否正常。進(jìn)入控制臺(tái)界面(見(jiàn)圖19),查看相機(jī)傳感器圖像是否正常,調(diào)節(jié)前進(jìn)速率值、控制模式,隨后進(jìn)入采集圖像步驟,開(kāi)始制作數(shù)據(jù)集。人工操縱機(jī)器在環(huán)境中行駛示教,并實(shí)時(shí)采集圖像、前進(jìn)量、轉(zhuǎn)向量3個(gè)屬性,記錄并保存在數(shù)據(jù)文件夾中。在自建環(huán)境道路中共收集14 162份樣本,將其整理并打包作為數(shù)據(jù)集初始數(shù)據(jù)(見(jiàn)圖20)。
圖19 移動(dòng)機(jī)器人操控平臺(tái)界面
圖20 自建環(huán)境道路數(shù)據(jù)集
(2)數(shù)據(jù)集清洗。1組數(shù)據(jù)集樣本中,存在類別不同的樣本,不同類別的樣本在數(shù)量上具有較大差距的現(xiàn)象,稱為樣本類分布不均衡現(xiàn)象。而這種現(xiàn)象在后續(xù)訓(xùn)練過(guò)程中,會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過(guò)程中,重點(diǎn)學(xué)習(xí)樣本數(shù)量較大的樣本特征,而對(duì)于樣本數(shù)量較少的特征將難以學(xué)習(xí)。數(shù)據(jù)集樣本中還會(huì)存在錯(cuò)誤樣本,這會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過(guò)程中與正常樣本相矛盾,所以保證樣本的正確性在數(shù)據(jù)集制作中非常重要。由于類似現(xiàn)象均會(huì)給模型準(zhǔn)確率帶來(lái)較大影響,因此需要對(duì)數(shù)據(jù)集中不良數(shù)據(jù)進(jìn)行清洗,人工將錯(cuò)誤樣本在數(shù)據(jù)集中剔除,同時(shí)在數(shù)據(jù)收集過(guò)程中注重樣本類別的均衡性,保證數(shù)據(jù)集樣本的均衡性與正確性。
(3)應(yīng)用損失函數(shù)對(duì)訓(xùn)練過(guò)程的優(yōu)化。損失函數(shù)的作用是使用函數(shù)衡量當(dāng)前訓(xùn)練迭代結(jié)果的好壞程度。損失函數(shù)值越大,模型效果越差;即損失值越大,其預(yù)測(cè)值與真實(shí)值差距越大,模型效果越差。正常的訓(xùn)練過(guò)程是不斷迭代以優(yōu)化模型,而正常的迭代過(guò)程中損失函數(shù)應(yīng)逐漸降低,最終趨于穩(wěn)定時(shí)得到最終結(jié)果。神經(jīng)網(wǎng)絡(luò)輸出模型結(jié)果的準(zhǔn)確度或訓(xùn)練效果的好壞,常根據(jù)損失值的大小判斷,而最終模型的損失值直接影響著模型的準(zhǔn)確度,所以為了得到一個(gè)盡可能準(zhǔn)確的模型,需要不斷的對(duì)訓(xùn)練過(guò)程進(jìn)行優(yōu)化。
(4)數(shù)據(jù)集訓(xùn)練過(guò)程。在數(shù)據(jù)集準(zhǔn)備就緒后,便可以進(jìn)行行為特征的學(xué)習(xí)。首先將數(shù)據(jù)集放入文件夾,將數(shù)據(jù)集路徑引入神經(jīng)網(wǎng)絡(luò),訓(xùn)練時(shí)數(shù)據(jù)集作為神經(jīng)網(wǎng)絡(luò)的輸入量開(kāi)始訓(xùn)練。
TensorFlow框架首先加載組件文件與依賴項(xiàng)(見(jiàn)圖21),初始化硬件,根據(jù)路徑尋找數(shù)據(jù)集輸入。在這里使用的訓(xùn)練硬件為NVIDIA Geforce GTX1050ti顯卡,4GB顯存。輸入量為數(shù)據(jù)集中圖片(160×120),網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)(見(jiàn)圖22)包含5個(gè)卷積層、2個(gè)輸出前的密集層;輸出為2個(gè)具有1個(gè)標(biāo)量輸出的密集層,每個(gè)都可用于轉(zhuǎn)向和油門控制,以模型文件的形式保存在指定路徑。模型迭代過(guò)程(見(jiàn)圖23),其中迭代項(xiàng)為迭代的次數(shù),共計(jì)27次。1次迭代可以理解為:向網(wǎng)絡(luò)中送入所有數(shù)據(jù),完成了1次訓(xùn)練計(jì)算與反向驗(yàn)證的過(guò)程。其中損失函數(shù)值在不斷迭代的過(guò)程中處于變小的狀態(tài)。
圖21 使用TensorFlow訓(xùn)練初始化(GPU型號(hào)使用紅框圈出)
圖22 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以及參數(shù)分布
圖23 訓(xùn)練迭代過(guò)程
(5)訓(xùn)練結(jié)果。將迭代過(guò)程的信息統(tǒng)計(jì),整理成模型損失曲線,隨著迭代數(shù)量的增加、訓(xùn)練迭代的進(jìn)行,損失曲線從最初的不擬合狀態(tài),開(kāi)始逐漸進(jìn)入優(yōu)化擬合狀態(tài),最終進(jìn)入過(guò)擬合狀態(tài)并停止訓(xùn)練。
初始化機(jī)器人,對(duì)各組件進(jìn)行檢查測(cè)試后,進(jìn)入終端開(kāi)啟進(jìn)程,檢查藍(lán)牙連接,切換手動(dòng)模式測(cè)試急停切換功能是否正常。TensorFlow解析框架加載過(guò)程見(jiàn)圖24。手動(dòng)操控機(jī)器人進(jìn)入工作區(qū)域,查看神經(jīng)網(wǎng)絡(luò)初始化,進(jìn)行模型推理進(jìn)程,開(kāi)啟自動(dòng)駕駛模型運(yùn)行,檢測(cè)運(yùn)行效果(見(jiàn)表3)。
表3 機(jī)器人的實(shí)際道路測(cè)試結(jié)果數(shù)據(jù)
圖24 在機(jī)器jetson平臺(tái)解析模型過(guò)程(ARM64嵌入式平臺(tái))
在不同特性的不同環(huán)境道路行駛測(cè)試中,其中主要包括簡(jiǎn)易環(huán)形賽道、社區(qū)內(nèi)部道路環(huán)境、林場(chǎng)環(huán)境、公路環(huán)境。根據(jù)表3數(shù)據(jù)顯示,機(jī)器在不同環(huán)境與不同的光照條件下,均實(shí)現(xiàn)了自動(dòng)駕駛功能。數(shù)據(jù)集的數(shù)據(jù)量與行駛效果呈正比關(guān)系。
根據(jù)實(shí)際道路測(cè)試結(jié)果,驗(yàn)證了機(jī)器驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)方案與轉(zhuǎn)向結(jié)構(gòu)方案;為移動(dòng)機(jī)器人平臺(tái)設(shè)計(jì)構(gòu)建的無(wú)刷直流電動(dòng)機(jī)、電控系統(tǒng)、電池模組均工作正常,完成了機(jī)器平臺(tái)的構(gòu)建,林場(chǎng)巡檢可以使用自動(dòng)駕駛可移動(dòng)機(jī)器人進(jìn)行。依據(jù)“感知-決策-控制”的端到端方案在實(shí)際環(huán)境中的測(cè)試效果可初步證明,使用簡(jiǎn)單傳感器配合神經(jīng)網(wǎng)絡(luò)的視覺(jué)方案用于移動(dòng)機(jī)器人自動(dòng)駕駛中是可行的。
傳統(tǒng)的移動(dòng)機(jī)器人需要遙控或引導(dǎo)線巡線運(yùn)行方式,本研究設(shè)計(jì)的機(jī)器人實(shí)現(xiàn)了自主運(yùn)行的功能,具有較高的靈活度。與當(dāng)前主流的使用多傳感器融合自動(dòng)駕駛方案的移動(dòng)機(jī)器人相比,采用單目相機(jī)作為傳感器的端到端方案,無(wú)需使用繁雜昂貴的傳感器便可實(shí)現(xiàn)其部分功能,成本大幅降低,同時(shí)自主運(yùn)行移動(dòng)機(jī)器人更簡(jiǎn)易化。
在對(duì)視覺(jué)引導(dǎo)的移動(dòng)機(jī)器人的設(shè)計(jì)過(guò)程中,顯露出以下幾個(gè)問(wèn)題,因時(shí)間、預(yù)算等各方面的原因,尚未深入剖析和解決。
(1)受限于搭載的計(jì)算機(jī)性能限制。為保證運(yùn)行幀數(shù)可以達(dá)到實(shí)時(shí)運(yùn)行標(biāo)準(zhǔn),數(shù)據(jù)集圖片分辨率設(shè)置較低(160×120),需要提高圖像的分辨率,將相機(jī)采集屬性、數(shù)據(jù)集、神經(jīng)網(wǎng)絡(luò)的分辨率提高,從而實(shí)現(xiàn)更好的特征學(xué)習(xí)效果;提高分辨率會(huì)使計(jì)算量大幅提高,后續(xù)使用更好性能的計(jì)算機(jī)提升硬件計(jì)算能力,配合對(duì)網(wǎng)絡(luò)架構(gòu)算法,進(jìn)行精簡(jiǎn)的辦法,減少計(jì)算壓力、提高運(yùn)行效率,實(shí)現(xiàn)更高分辨率的實(shí)時(shí)運(yùn)行。
(2)由于數(shù)據(jù)集樣本數(shù)量不足,加上設(shè)備性能原因,無(wú)法做到對(duì)于多場(chǎng)景海量數(shù)據(jù)的特征學(xué)習(xí)。
(3)環(huán)境感知能力較差,普通的相機(jī)易受環(huán)境光線的干擾;受限于單目相機(jī),對(duì)于各項(xiàng)感知數(shù)據(jù)沒(méi)有做到具體量化。后續(xù)計(jì)劃采用多組深感雙目立體相機(jī),全向部署,作為新的解決方案;在機(jī)器學(xué)習(xí)過(guò)程中,引入物體檢測(cè)(如指示牌、人物等)、語(yǔ)義分割(可行駛區(qū)域)等,提高環(huán)境感知能力。