加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1.1前輪定位調(diào)整
    • 1.2攝像頭安裝調(diào)整
    • 1.3編碼器安裝調(diào)整
    • 1.4電感的安裝
    • 1.5智能視覺模塊安裝
    • 1.6整車效果圖
    • 2.1主控板
    • 2.2驅(qū)動(dòng)板
    • 2.3運(yùn)放板
    • 2.4電感板
    • 3.1圖像處理部分
    • 3.2舵機(jī)控制
    • 3.3速度控制
    • 3.4智能車程序流程圖
    • 3.5 PID算法
    • 4.1任務(wù)概述
    • 4.2基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別的實(shí)現(xiàn)
    • 4.3AI識(shí)別控制算法
    • 5.1 IAR在線調(diào)試
    • 5.2MATLAB數(shù)據(jù)處理
    • 5.3按鍵及液晶輔助調(diào)試
    • 5.4串口通信調(diào)試
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【智能車競賽】技術(shù)報(bào)告 | 智能車視覺 - 中國礦業(yè)大學(xué) - 會(huì)飛的車

2021/09/06
1470
閱讀需 49 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本文以第十六屆全國大學(xué)生智能車競賽為背景,介紹了 AI視覺四輪智能車系統(tǒng)的軟硬件結(jié)構(gòu)和開發(fā)流程。采用大賽組委會(huì)指定的 C型車模,以恩智浦 32位微控制器 MIMXRT1064最小系統(tǒng)板作為核心控制單元,在 IAR開發(fā)環(huán)境中進(jìn)行軟件開發(fā),使用 MT9V032攝像頭以及電感進(jìn)行賽道信息采集。我們對(duì)小車的機(jī)械結(jié)構(gòu),硬件設(shè)計(jì),軟件編程方面進(jìn)行了深入的研究。多次嘗試改變小車的機(jī)械結(jié)構(gòu),深入考慮衡量硬件 PCB的布局,走線等。軟件采用多種算法結(jié)合,核心為攝像頭循跡與電磁 PID控制結(jié)合的算法,實(shí)現(xiàn)擁有較強(qiáng)魯棒性的尋跡小車。我們獨(dú)立完成了控制方案及系統(tǒng)設(shè)計(jì),包括電磁信號(hào)采集處理、賽道圖像信號(hào)采集處理、循跡控制算法及執(zhí)行、動(dòng)力電機(jī)驅(qū)動(dòng)、十分類神經(jīng)網(wǎng)絡(luò)訓(xùn)練、靶標(biāo)圖片識(shí)別、單片機(jī)之間通信等,最終實(shí)現(xiàn)了具有 AI視覺功能的基于電磁與攝像頭的快速尋跡智能車控制系統(tǒng)。

智能車是一個(gè)軟硬件與機(jī)械相結(jié)合的整體,其中硬件主要包括電源模塊、電機(jī)驅(qū)動(dòng)模塊、速度測量模塊、圖像采集處理模塊、電磁傳感模塊、舵機(jī)控制模塊和單片機(jī)模塊等;軟件主要包括單片機(jī)初始化程序、速度測量程序、速度設(shè)定程序、速度控制程序、舵機(jī)控制程序、元素識(shí)別程序等方面的內(nèi)容,使用 Matlab進(jìn)行了大量的數(shù)據(jù)分析以及上位機(jī)的設(shè)計(jì)調(diào)試,確定了現(xiàn)有的機(jī)械結(jié)構(gòu)和相關(guān)控制參數(shù)。

引言

全國大學(xué)生智能汽車競賽以 “立足培養(yǎng)、重在參與、鼓勵(lì)探索、追求卓越”為宗旨,是一項(xiàng)鼓勵(lì)創(chuàng)新的科技競賽活動(dòng)。智能車設(shè)計(jì)內(nèi)容涵蓋了控制、模式識(shí)別、傳感技術(shù)、汽車電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科的知識(shí),對(duì)學(xué)生的知識(shí)融合和實(shí)踐動(dòng)手能力的培養(yǎng),具有良好的推動(dòng)作用。競賽要求在規(guī)定的汽車模型平臺(tái)上,使用微控制器作為核心控制模塊,通過增加道路傳感器、電機(jī)驅(qū)動(dòng)模塊以及編寫相應(yīng)控制程序,制作完成一個(gè)能夠自主識(shí)別道路的模型汽車。

智能汽車競賽 AI視覺組別,要求采用第十六屆全國大學(xué)智能汽車競賽的 C型車模,采用恩智浦 32位微控制器 MIMXRT1064最小系統(tǒng)板作為核心控制單元,主頻為 600MHZ。我們對(duì)小車的機(jī)械結(jié)構(gòu),硬件設(shè)計(jì),軟件編程方面進(jìn)行了深入的研究。多次嘗試改變小車的機(jī)械結(jié)構(gòu),深入考慮衡量硬件 PCB的布局,走線等。軟件采用多種算法結(jié)合,核心為攝像頭循跡與電磁 PID控制結(jié)合的算法,實(shí)現(xiàn)小車魯棒性較強(qiáng)的尋跡。我們獨(dú)立完成了控制方案及系統(tǒng)設(shè)計(jì),包括電磁信號(hào)采集處理、賽道圖像信號(hào)采集處理、循跡控制算法及執(zhí)行、動(dòng)力電機(jī)驅(qū)動(dòng)、十分類神經(jīng)網(wǎng)絡(luò)訓(xùn)練、靶標(biāo)圖片識(shí)別、單片機(jī)之間通信等,最終實(shí)現(xiàn)了具有 AI視覺功能的基于電磁與攝像頭的快速尋跡智能車控制系統(tǒng)。

本次報(bào)告主要介紹攝像頭智能車硬件電路及車模機(jī)械的設(shè)計(jì)方案,以及軟件控制系統(tǒng)建立的方式方法。

第一章 車模機(jī)械設(shè)計(jì)

智能車能夠穩(wěn)定的運(yùn)行,良好的機(jī)械性能是必不可少的,機(jī)械安裝的布局、質(zhì)量將影響到道路信息的探測效果以及車子的拐彎轉(zhuǎn)向、加減速效果。只有整體把握好之后,才能對(duì)細(xì)節(jié)進(jìn)行有效處理。前期我們花了一定時(shí)間去研究車模的安裝,攝像頭的選擇,電感的安裝,以及其他硬件安裝方案的實(shí)驗(yàn),大體上確定了車模的機(jī)械架法和硬件上的芯片選型, PCB布局等。中期是軟件調(diào)試為主,同時(shí)完善硬件,實(shí)踐證明在機(jī)械上的優(yōu)化對(duì)軟件的調(diào)車有很大的推動(dòng)作用。后期軟件算法已經(jīng)確定,硬件上也比較穩(wěn)定。正是這種對(duì)智能車精益求精的追求,使得我們的智能車有了比較可靠得穩(wěn)定性。本章將介紹根據(jù)實(shí)際情況對(duì)車模機(jī)械做出的改進(jìn)。

1.1前輪定位調(diào)整

四輪智能車出現(xiàn)直線走偏、轉(zhuǎn)彎費(fèi)力、輪胎磨損快等情況時(shí)大多與輪胎安裝角度有關(guān),涉及到一個(gè)非常重要的轉(zhuǎn)向輪位置角度定位問題,叫做“前輪定位”。它的作用是保障智能車直線運(yùn)行時(shí)的穩(wěn)定性,使其轉(zhuǎn)向輕便并減少輪胎的磨損。前輪是轉(zhuǎn)向輪,它的安裝位置由主銷內(nèi)傾、主銷后傾、前輪內(nèi)傾和前輪前束等四個(gè)項(xiàng)目決定,反映了轉(zhuǎn)向輪、主銷和前軸等三者在車架上的位置關(guān)系。

1.1.1主銷后傾角

在汽車縱向平面內(nèi),主銷軸線上端略向后傾斜,這種現(xiàn)象稱為主銷后傾。在縱向垂直平面內(nèi),主銷軸線與垂線之間的夾角叫主銷后傾角,其值大小對(duì)汽車轉(zhuǎn)向與操縱性能密切相關(guān)。設(shè)置主銷后傾角后,主銷中心線的接地點(diǎn)與車輪中心的地面投影點(diǎn)之間產(chǎn)生距離,使車輪的接地點(diǎn)位于轉(zhuǎn)向主銷延長線的后端,車輪就靠行駛中的滾動(dòng)阻力被向后拉,使車輪的方向自然朝向行駛方向。設(shè)定很大的主銷后傾角可提高直線行駛性能,同時(shí)主銷縱傾移距也增大。但主銷縱傾移距過大,會(huì)使轉(zhuǎn)向沉重,而且路面干擾會(huì)加劇車輪的前后顛簸。

1.1.2主銷內(nèi)傾角

從車前后方向看輪胎時(shí),主銷軸向車身內(nèi)側(cè)傾斜,該角度稱為主銷內(nèi)傾角。當(dāng)車輪以主銷為中心回轉(zhuǎn)時(shí),車輪的最低點(diǎn)將陷入路面以下,但實(shí)際上車輪下邊緣不可能陷入路面以下,而是將轉(zhuǎn)向車輪連同整個(gè)車模前部向上抬起一個(gè)相應(yīng)的高度,這樣車模本身的重力有使轉(zhuǎn)向車輪回復(fù)到原來中間位置的效應(yīng),因而車模容易回正。

▲ 圖 1主銷內(nèi)傾角

 

1.1.3前輪外傾

從前后方向看車輪時(shí),輪胎并非垂直安裝,而是稍微傾倒呈現(xiàn) “八”字形張開,稱為負(fù)外傾,而朝反方向張開時(shí)稱正外傾。車模一般將外傾角設(shè)定得很小,接近垂直。若設(shè)定大外傾角會(huì)使輪胎磨偏,降低輪胎摩擦力。

1.1.4前輪前束

四輪定位前束值腳尖向內(nèi),所謂 “內(nèi)八字腳 ”的意思,指的是左右前輪分別向內(nèi)。采用這種結(jié)構(gòu)目的是修正上述前輪外傾角引起的車輪向外側(cè)轉(zhuǎn)動(dòng)。如前所述,由于有外傾,轉(zhuǎn)向變得容易。另一方面,由于車輪傾斜,左右前輪分別向外側(cè)轉(zhuǎn)動(dòng),為了修正這個(gè)問題,如果左右兩輪帶有向內(nèi)的角度,則正負(fù)為零,左右兩輪可保持直線行進(jìn),減少輪胎磨損。在智能車程序基本完整,可以完成各類賽道元素后,根據(jù)實(shí)際情況對(duì)前輪定位進(jìn)行調(diào)整。通過改變上橫梁墊片的數(shù)目,增大后傾角。在智能車長期調(diào)試后,發(fā)現(xiàn)適當(dāng)增大內(nèi)傾角,可使轉(zhuǎn)彎時(shí)車輪和地面有更大的接觸面積,繼而增大車與地面的摩擦程度,使車轉(zhuǎn)向更靈活,減小因摩擦不夠而引起的轉(zhuǎn)向不足的情況。

1.2攝像頭安裝調(diào)整

本車模采用 MT9V032攝像頭采集賽道信息。攝像頭的安裝方式是否穩(wěn)固合理,是其能否采集到優(yōu)質(zhì)圖像的關(guān)鍵。經(jīng)過多次嘗試調(diào)整,最終使用一根碳素桿搭架攝像頭的方式,以減輕可能產(chǎn)生的不必要的重量。使用螺母將攝像頭支撐桿底部固定在車模中軸線上,保證與車身保持垂直。同時(shí),碳素桿固定在車身左右中心位置,使車模轉(zhuǎn)向時(shí)不存在水平分量,保證圖像的穩(wěn)定性。

▲ 圖 2攝像頭安裝效果圖

 

1.3編碼器安裝調(diào)整

為使智能車能夠平穩(wěn)地沿著賽道運(yùn)行,需要對(duì)車速進(jìn)行精確控制,使賽車在急轉(zhuǎn)彎時(shí)速度不至過快而沖出賽道。理論上,通過控制驅(qū)動(dòng)電機(jī)上的平均電壓即可控制智能車速度,但是如果開環(huán)控制電機(jī)轉(zhuǎn)速,會(huì)受很多因素影響,例如電池電壓、電機(jī)傳動(dòng)摩擦力、道路摩擦力和前輪轉(zhuǎn)向角度等。這些因素會(huì)造成賽車運(yùn)行不穩(wěn)定,需要檢測出智能車當(dāng)前速度。通過速度檢測,對(duì)車模速度進(jìn)行閉環(huán)反饋控制,即可消除上述各種因素的影響,使得車模運(yùn)行得更穩(wěn)定。本次使用 mini編碼器,根據(jù)車模自身實(shí)際結(jié)構(gòu),自行制作了編碼器的安裝結(jié)構(gòu)件,使編碼器使用時(shí)不對(duì)電池的安裝產(chǎn)生影響。在使用時(shí)注意到,編碼器容易受到靜電或連接松動(dòng)的影響,所以需要對(duì)編碼器進(jìn)行保護(hù),在編碼器各連接處進(jìn)行加固處理,防止以上情況發(fā)生。

▲ 圖 3編碼器安裝效果圖

 

1.4電感的安裝

傳感器是電磁組小車最重要的模塊之一,能夠?qū)ψ兓拇艌鲂盘?hào)作出敏的檢測,對(duì)道路狀況的檢測起著至關(guān)重要的作用。諧振電路產(chǎn)生感應(yīng)電流,再通過濾波、放大、檢波,然后將結(jié)果送入單片機(jī) AD進(jìn)行相應(yīng)的處理,以判斷賽道當(dāng)前信息。傳感器的排布,直接影響了對(duì)磁場的敏感程度,針對(duì)直道和彎道的磁場特點(diǎn),在傳感器的排布上,分別有對(duì)其敏感的檢測電感,以適應(yīng)各種情況的賽道要求。

▲ 圖 4電感安裝效果圖

 

1.5智能視覺模塊安裝

因?yàn)楸緦觅惖捞砑恿藬?shù)字動(dòng)物水果標(biāo)靶, AprilTag碼等元素,所以我們隊(duì)在傳統(tǒng)的車模上自主添加了智能視覺模塊模塊,采用 UART實(shí)現(xiàn)智能視覺與主控芯片的通信,用以實(shí)現(xiàn)數(shù)字和水果 /動(dòng)物的分類與小車控制。使用兩個(gè)數(shù)字舵機(jī) M3512D,控制攝像頭旋轉(zhuǎn),攝像頭旋轉(zhuǎn)至合適位置,使用帶有可調(diào)透鏡的微型激光器發(fā)射激光,觸發(fā)打靶裝置。激光器輸出功率為 5mW。

此外,起跑線檢測直接使用干簧管。當(dāng)干簧管處于磁鐵上方時(shí),干簧管導(dǎo)通從而產(chǎn)生下降沿,信號(hào)送到單片機(jī)引發(fā)單片機(jī)外部中斷。

▲ 圖 5智能視覺模塊安裝效果圖

 

1.6整車效果圖

▲ 圖 6整車效果圖

 

第二章 硬件系統(tǒng)設(shè)計(jì)

2.1主控板

▲ 圖 7主控板

 

主控板對(duì)稱布置,每個(gè)電源網(wǎng)絡(luò)均設(shè)置 LED顯示各個(gè)供電芯片是否正常工作,減少故障排查時(shí)間,其中包括主 3.3V,5V,總鉆風(fēng)攝像頭 3.3V和舵機(jī)可調(diào)穩(wěn)壓。根據(jù)各個(gè)傳感器的車身分布位置合理安排接口位置,為減輕質(zhì)量同時(shí)使電路板簡潔,同時(shí)主控板四個(gè)角采用圓角的形式,美觀且防止劃傷手指,四個(gè)固定孔的位置與底座空隙相吻合,固定孔周圍沒有元器件,這樣防止了銅柱安裝時(shí)壓壞元件。

2.1.1主控芯片

采用逐飛科技制作的恩智浦 32位微控制器 MIMXRT1064最小系統(tǒng)板作為核心控制單元,主頻相較 K66大大提高,達(dá)到了 600MHZ,省去了在主控板上為主控芯片布線的工作,弊端是占據(jù)了主控板更多的空間。核心板通過插針與主板相連,這樣防止了因主板故障而無法使用核心板的問題。

▲ 圖 8主控芯片

 

2.1.2電源管理模塊

電源模塊主要分為四部分,分別是舵機(jī)可調(diào)電源, 5V部分,主 3.3V部分和總鉆風(fēng)攝像頭供電 3.3v,攝像頭單獨(dú)擁有 3.3v供電是為防止主 3.3v供電穩(wěn)壓芯片因通過電流過大而發(fā)熱嚴(yán)重。這是四個(gè)部分將電池電壓轉(zhuǎn)換為對(duì)應(yīng)電壓,為車模各個(gè)部分供電。

5V電壓使用的是 SY8205FCC穩(wěn)壓芯片,穩(wěn)定且不易發(fā)燙,首先給核心板供電,此外還為 uart串口和激光接口提供電壓,保證 OPENARTmini模塊和激光頭供電正常。

主3.3V電壓是保證 OLED模塊運(yùn)算放大器、編碼器、超聲波模塊等的供電需求,并對(duì)一些模塊提供上拉,我們采用 RT9013-33芯片將 5V轉(zhuǎn)換為 3.3V較為穩(wěn)定。

總鉆風(fēng)攝像頭 3.3v單獨(dú)供電,使其電壓穩(wěn)定充足,響應(yīng)更快。

舵機(jī)可調(diào)電路是將 7.2V電池電壓,轉(zhuǎn)換到舵機(jī)可用電壓,一般為 5-6V,為不損傷舵機(jī)且響應(yīng)盡量塊通常是調(diào)至接近舵機(jī)的最大工作電壓 6v,這里使用的仍是高性能的穩(wěn)壓芯片 SY8205FCC,通過電位器調(diào)節(jié)輸出電壓。

在隔離方面由于 AI視覺組的舵機(jī)使用較多,容易在工作時(shí)對(duì)其他模塊產(chǎn)生影響,故通過 0歐姆電阻分割地的方法將舵機(jī) GND和其他模塊的 GND分割隔離。

▲ 圖 9舵機(jī)穩(wěn)壓電路

 

▲ 圖 105V穩(wěn)壓電路

 

▲ 圖 11總鉆風(fēng)攝像頭 3.3v穩(wěn)壓電路

 

2.1.3蜂鳴器模塊

我們采用蜂鳴器來幫助我們對(duì)某些判別條件觸發(fā)時(shí)有更加直觀的感受,方便更改參數(shù)。

▲ 圖 12蜂鳴器電路

 

2.2驅(qū)動(dòng)板

使用 H橋驅(qū)動(dòng)原理采用 DRV8701芯片和 MOS管進(jìn)行正反雙向驅(qū)動(dòng),并利用 74HC125PW與主板隔離,有效保護(hù)核心板。

▲ 圖 13驅(qū)動(dòng)電路隔離部分

 

▲ 圖 14驅(qū)動(dòng)電路驅(qū)動(dòng)部分

 

▲ 圖 15驅(qū)動(dòng)板

 

2.3運(yùn)放板

采用 opa4377芯片放大四路信號(hào),通過調(diào)節(jié)電位器來改變放大倍數(shù)。

▲ 圖 16運(yùn)放電路

 

▲ 圖 17運(yùn)放板

 

2.4電感板

將五個(gè)電感的走線集成在電感板中,使車模更加美觀,信號(hào)更不易干擾。

▲ 圖 18電磁模塊

 

▲ 圖 19電感采集板正面

 

▲ 圖 20電感采集板背面

 

第三章 軟件系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)

穩(wěn)定的程序是智能車高速平穩(wěn)自動(dòng)尋線的基礎(chǔ)。本設(shè)計(jì)的智能車采用 CMOS攝像頭進(jìn)行圖像的采集和二值化,圖像的采集和賽道信息的提取是整個(gè)程序的核心部分,只有在提取到正確信息的情況下我們才能對(duì)智能車作出精確有效的控制。而在智能車的轉(zhuǎn)向和速度控制方面,參考往屆的經(jīng)驗(yàn),使用了魯棒性很好位置式 PID控制算法,配合使用理論計(jì)算和動(dòng)態(tài)參數(shù)補(bǔ)償?shù)霓k法,使智能車能夠穩(wěn)定快速尋線并作出相應(yīng)的控制。

3.1圖像處理部分

3.1.1賽道邊緣提取

在單片機(jī)采集圖像信號(hào)后需要對(duì)其進(jìn)行處理以提取主要的賽道信息,同時(shí),由于交叉道、起點(diǎn)線的存在,光線、雜點(diǎn)、賽道遠(yuǎn)處圖像不清楚的干擾,圖像效果會(huì)大打折扣。因此,在軟件上必須排除干擾因素,對(duì)賽道進(jìn)行有效識(shí)別,并提供盡可能多的賽道信息供決策使用。

▲ 圖 21攝像頭采集回傳圖像

 

3.1.2賽道信息分析與處理

中心線提取算法的基本思想如下:

  1) 直接逐行掃描原始圖像,根據(jù)硬件二值化結(jié)果直接提取出邊界坐標(biāo);

  2) 圖像數(shù)據(jù)量大,全部掃描一遍會(huì)浪費(fèi)很多時(shí)間,利用前面已經(jīng)求出的中線位置判斷出中線的趨勢,從而推斷出下一行的中線大概位置,確定出掃描范圍,避免整行逐點(diǎn)掃描,節(jié)省時(shí)間。求中線時(shí),因?yàn)榻幍闹芯€穩(wěn)定,遠(yuǎn)處中線不穩(wěn)定,所以采用由近及遠(yuǎn)的辦法;根據(jù)上一行的左右兩邊的坐標(biāo),確定本行的邊線掃描范圍。在確定的賽道寬度范圍內(nèi)提取有效賽道,這樣可以濾除不在寬度范圍內(nèi)的干擾;

  3) 根據(jù)采集到的賽道寬度,判斷是否采集為真正賽道,濾除噪點(diǎn)造成的影響;

  4) 圖像是遠(yuǎn)處小近處大,所以賽道寬度范圍和前后行賽道中心的位置差別都要?jiǎng)討B(tài)調(diào)整;

  5) 比較左右賽道邊界坐標(biāo)的大小,判斷賽道的有效性;

3.1.3坡道處理

坡道在掃描到特征的那幾行,賽道寬度都會(huì)突變得特別明顯,坡道的賽道寬度突變后不會(huì)突變回來,起跑線只是 2-3行有明顯的賽道寬度變小。據(jù)這個(gè)特征,當(dāng)檢測到坡道時(shí),目標(biāo)速度降低,使得小車不會(huì)因?yàn)樗俣忍於w起來,小車通過 PID控制,快速通過坡道。

▲ 圖 22坡道圖

 

3.2舵機(jī)控制

智能車是一個(gè)復(fù)雜的非線性系統(tǒng), PID控制的應(yīng)用十分廣泛。但是有很多不確定因素,導(dǎo)致傳統(tǒng)的 PID算法在智能車轉(zhuǎn)彎方面并不能很好的應(yīng)用,會(huì)出現(xiàn)入彎過慢,出現(xiàn)出彎不正等現(xiàn)象,為了讓智能車在轉(zhuǎn)彎時(shí)表現(xiàn)出更加優(yōu)秀的運(yùn)動(dòng)性能,通過將 PID控制中去掉 I項(xiàng)來加快系統(tǒng)的響應(yīng)速度,并將二次函數(shù)曲線結(jié)合 PD算法來優(yōu)化路徑,使得小車過彎更加流暢。通過測試發(fā)現(xiàn)用 PD控制來控制舵角可以取得較好的效果。將圖象經(jīng)過算法處理后得到的黑線位置和對(duì)應(yīng)的舵機(jī) PD參照角度處理成一次線性關(guān)系。在 Ki置零的情況下,舵機(jī)在這種動(dòng)態(tài)隨動(dòng)系統(tǒng)對(duì)動(dòng)態(tài)響應(yīng)性能要求更高。更重要的是,通過合理調(diào)節(jié) Kp參數(shù),發(fā)現(xiàn)車能在直線高速行駛時(shí)仍能保持車身非常穩(wěn)定,沒有震蕩,所以基本沒有必要使用 Ki參數(shù)。

3.3速度控制

要想智能車以最短的時(shí)間跑完整個(gè)賽道,不但要求優(yōu)越的方向控制算法,讓智能車盡量走更近的路,轉(zhuǎn)更少的彎。而且對(duì)于速度控制算法也有很高的要求,智能車在行駛過程中,不能夠完全勻速,在直道上應(yīng)該提速,而在彎道上應(yīng)該減速。在智能車沿著既定軌跡行駛的過程中,速度不能夠恒定不變,而應(yīng)該根據(jù)道路的具體形狀進(jìn)行適當(dāng)?shù)恼{(diào)整。當(dāng)然,最好的方法是讓智能車始終以最快的速度通過整個(gè)賽道,但是如果速度始終調(diào)得太高,當(dāng)小車遇到急彎或者是圓道時(shí)必然無法轉(zhuǎn)過來,就會(huì)沖出賽道。因此不能夠始終給最快的速度。然而,如果速度調(diào)得始終過低,就無法以最短的時(shí)間通過賽道。因此,速度應(yīng)該要隨著檢測到的道路形狀變化而變化。例如當(dāng)前方道路為直道或類似直道時(shí),應(yīng)該將 PWM波提得最高,讓通過主電機(jī)的電流達(dá)到最大,從而讓智能車以最快的速度行駛。當(dāng)進(jìn)入彎道時(shí),應(yīng)該將 PWM波降到最低,讓通過主電機(jī)的反向電流達(dá)到最大,從而讓智能車以最短的時(shí)間將速度降到理想狀態(tài)。

賽道中的直道,是方向控制中最好處理的一種情況,因?yàn)橹灰≤嚊]有偏離賽道,就可以不進(jìn)行偏轉(zhuǎn),而當(dāng)智能車偏離賽道時(shí)也只需要一個(gè)較小的偏轉(zhuǎn),讓智能車能緩慢回歸賽道就可以了,具體的方法是計(jì)算掃描到圖像中線偏離賽道中線的平均值和中線的斜率,再將這兩個(gè)數(shù)分別乘上各自的比例系數(shù),加上舵機(jī)偏向中心位置時(shí)需要給出的高電平的值,作為 PWM波的高電平送入給舵機(jī),就可以實(shí)現(xiàn)直道上的智能車方向控制了。

3.3.1大彎的方向控制算法

在道路中遇到大彎時(shí)需要轉(zhuǎn)彎,轉(zhuǎn)向角只受彎道的彎曲程度影響,但是距離大彎多遠(yuǎn)就開始轉(zhuǎn)彎卻需要受到當(dāng)前速度的影響,因?yàn)槎鏅C(jī)在轉(zhuǎn)向時(shí)有一定的延時(shí),舵機(jī)轉(zhuǎn) 60度大約需要 140毫秒,而智能車的最快速度可以達(dá)到 10米/ 秒,如果智能車當(dāng)時(shí)運(yùn)行的速度就是 10米/秒,那么當(dāng)舵機(jī)轉(zhuǎn)過 60度時(shí)智能車已經(jīng)走過 1米多了,所以不能等到了彎道才開始轉(zhuǎn)彎,而是需要提前轉(zhuǎn)彎,而且速度越快,越是要提前得多,所以智能車轉(zhuǎn)彎提前多少就由速度控制,用比例控制就能收到很好的效果,而轉(zhuǎn)彎時(shí)轉(zhuǎn)多少卻僅僅受彎道的彎曲程度控制,彎曲程度越大,轉(zhuǎn)向角就也越大,彎曲程度越小,轉(zhuǎn)向角也就越小。具體的對(duì)應(yīng)關(guān)系通過實(shí)驗(yàn)獲得,在此沒有列舉出具體的數(shù)據(jù)。

3.3.2急彎的方向控制算法

急彎的方向控制算法與大彎的方向控制算法相似,也是需要提前轉(zhuǎn)彎,而且提前多少轉(zhuǎn)彎也要受當(dāng)前速度的控制,速度越大,越要提前轉(zhuǎn)彎,轉(zhuǎn)向角也是用彎道的彎道程度來決定的,急彎比大彎的彎曲程度更加大,因此需要的轉(zhuǎn)向角也要相應(yīng)增大。急彎的方向控制比大彎更難,很可能出線,因此在急彎的方向控制時(shí)更應(yīng)多加注意。

3.3.3“小 S型”道的方向控制算法

“小 S型”道一般是指“ S型”道彎曲角度小于等于 60度形成來回轉(zhuǎn)向,智能車過這種彎道時(shí),基本可以從中間直接通過,而不需要轉(zhuǎn)彎和減速。因此,找準(zhǔn) “小 S型”道的正中心顯得至關(guān)重要,因?yàn)橹挥姓覝?zhǔn)了“小 S型”道的正中心,智能車才能不轉(zhuǎn)彎不減速地通過 “小 S型”道,如果“小 S型”道的正中心找得不準(zhǔn),那么智能車就很容易沖出賽道。找 “小 S型”道的正中心的方法為:先找出“小 S型”道最左邊和最右邊的坐標(biāo)值,然后將最左邊和最右邊的坐標(biāo)值相加之后再除以 2,就得到了“小 S型”道的正中心坐標(biāo),智能車就可以沿著這個(gè)方向前進(jìn),而不需要轉(zhuǎn)彎。但是,由于 CMOS圖像傳感器掃描到的圖像可能出線誤差,那么智能車就有可能產(chǎn)生誤判,而沖出賽道。因此為了保險(xiǎn)起見,必須當(dāng) “小 S型”道足夠小時(shí),才能采用直接沖的辦法。

3.4智能車程序流程圖

▲ 圖 23智能車程序流程圖

 

3.5 PID算法

3.5.1PID控制算法簡介

PID控制是工程實(shí)際中應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律。問世至今 70多年來,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。

▲ 圖 24單位反饋的 PID控制原理框圖

單位反饋 e代表理想輸入與實(shí)際輸出的誤差,這個(gè)誤差信號(hào)被送到控制器,控制器算出誤差信號(hào)的積分值和微分值,并將它們與原誤差信號(hào)進(jìn)行線性組合,得到輸出量 u。

u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]

對(duì)應(yīng)的模擬 PID調(diào)節(jié)器傳遞函數(shù)

G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s]

其中,

  KP為比例增益, KP與比例帶 δ成倒數(shù)關(guān)系即 KP=1/δ, TI為積

  分時(shí)間常數(shù), TD為微分時(shí)間常數(shù), u(t)為控制量, e(t)為偏差。

3.5.2增量式 PID控制算法

增量式 PID是指數(shù)字控制器的輸出只是控制量的增量 Δu(k)。采用增量式算法時(shí),計(jì)算機(jī)輸出的控制量 Δ u(k)對(duì)應(yīng)的是本次執(zhí)行機(jī)構(gòu)位置的增量,而不是對(duì)應(yīng)執(zhí)行機(jī)構(gòu)的實(shí)際位置,因此要求執(zhí)行機(jī)構(gòu)必須具有對(duì)控制量增量的累積功能,才能完成對(duì)被控對(duì)象的控制操作。執(zhí)行機(jī)構(gòu)的累積功能可以采用硬件的方法實(shí)現(xiàn);也可以采用軟件來實(shí)現(xiàn),如利用算式程序化來完成。由式可得增量式 PID控制算式

  u(k)=u(k-1)+u(k)

  Δu(k)=u(k)-u(k-1)=Kp[Δe(k)-e(k-1)]+Kie(k)+Kd[Δe(k)-2Δe(k-1)-e(k-2)]代碼實(shí)現(xiàn):

  motor_duty=last_motor_duty+motor_kp*(speed_pc[0]-speed_pc[1])+motor_kispeed_pc[0]+motor_kp(speed_pc[0]+speed_pc[2]¬2*speed_pc[1]);

增量式 PID具有以下優(yōu)點(diǎn):

  1) 由于計(jì)算機(jī)輸出增量,所以誤動(dòng)作時(shí)影響小,必要時(shí)可用邏輯判斷的方法關(guān)掉。

  2) 自動(dòng)切換時(shí)沖擊小,便于實(shí)現(xiàn)無擾動(dòng)切換。此外,當(dāng)計(jì)算機(jī)發(fā)生故障時(shí),由于輸出通道或執(zhí)行裝置具有信號(hào)的鎖存作用,故能保持原值。

  3) 算式中不需要累加??刂圃隽俊?u(k)的確定僅與最近 k次的采樣值有關(guān),所以較容易通過加權(quán)處理而獲得比較好的控制效果。在使用過程中我們發(fā)現(xiàn)傳統(tǒng)的增量式 PID,車速控制不及時(shí) ,容易超調(diào) ,積分飽和。最終我們選擇的是增量式的 PID,能夠很好的滿足智能車的加減速以及停車問題。

3.5.3經(jīng)典 PID算法實(shí)現(xiàn)速度控制的具體實(shí)現(xiàn)

我們對(duì)速度的控制采用了增量式 PID算法。該算法的基本策略是急彎降速,直道和小彎提速,由于我們的攝像頭掃描到的范圍較寬,所以在過急彎道時(shí)可以提前減速,先把掃描到的圖像進(jìn)行處理,然后得出經(jīng)過反復(fù)實(shí)驗(yàn),將圖像經(jīng)過算法處理后得到的黑線位置和對(duì)應(yīng)的速度 PID參照速度處理成二次曲線的關(guān)系。在實(shí)際測試中,發(fā)現(xiàn)小車直道和彎道相互過度時(shí)加減速比較靈敏,與舵機(jī)轉(zhuǎn)向控制配合較好。但是,存在的局限一方面是車在彎道進(jìn)直道后的加速和直道入彎道的速度控制并達(dá)不到最好的控制效果,彎道入直道減速不夠快速,直道入彎道加速得時(shí)機(jī)也不夠及時(shí)。我們做了進(jìn)一步的改進(jìn),根據(jù)入彎時(shí)中線位置的特點(diǎn)動(dòng)態(tài)改變二次曲線中最高點(diǎn)(直道的最高速度)和最低點(diǎn)(彎道的最低速度)的大小,使得控制效果更合理。

第四章 AI視覺部分

4.1任務(wù)概述

4.1.1.數(shù)字識(shí)別

在三岔路口需要對(duì)路口處的數(shù)字進(jìn)行識(shí)別,并根據(jù)數(shù)字的奇偶性,來決策應(yīng)該走左邊還是走右邊。

4.1.2.AprilTag識(shí)別

AprilTag是一個(gè)視覺基準(zhǔn)庫,在 AR,機(jī)器人,相機(jī)校準(zhǔn)領(lǐng)域廣泛使用。設(shè)定為與二維碼相似但相對(duì)更簡單的特定標(biāo)志,實(shí)現(xiàn)快速檢測。

在賽題中 AprilTag碼也代表著數(shù)字,依然通過識(shí)別其所代表的數(shù)字,并判斷奇偶性來得知靶標(biāo)牌是在賽道的哪一側(cè)。

4.1.3.物體識(shí)別

賽題中包含動(dòng)物圖案和水果圖案,動(dòng)物類包含狗、貓、馬、豬、牛五個(gè)子類別,水果類包含蘋果、橘子、葡萄、香蕉、榴蓮五個(gè)子類別,圖案對(duì)象均為全身或整體照片。

如果路邊目標(biāo)牌上的圖案屬于動(dòng)物類,則車模需要在二維碼所在的區(qū)域(前后 50厘米)內(nèi)不少于 3秒鐘,方能駛出車模停止區(qū)域。如果路邊目標(biāo)牌上的圖案屬于水果類,則車模需要使用激光發(fā)射器對(duì)準(zhǔn)靶點(diǎn)中心發(fā)送一束激光,激發(fā)目標(biāo)靶響應(yīng)。

4.2基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別的實(shí)現(xiàn)

待檢測圖片內(nèi)部只包含其中一種物體,不涉及多物體檢測。其次待檢測圖片背景不復(fù)雜,全圖只有待檢物體本身,降低背景噪聲的引入對(duì)分類模型的影響。待檢測物體及其靶標(biāo)如圖 25所示。

根據(jù)任務(wù)分別設(shè)計(jì)兩個(gè)十分類的模型,用來實(shí)現(xiàn)數(shù)字和水果 /動(dòng)物的分類。實(shí)現(xiàn)流程相似,主要包括制作數(shù)據(jù)集,搭建神經(jīng)網(wǎng)絡(luò),模型訓(xùn)練,模型量化,硬件實(shí)現(xiàn)五個(gè)模塊,實(shí)現(xiàn)流程如圖 26所示。

▲ 圖 25靶標(biāo)正面照

 

▲ 圖 26卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)圖像識(shí)別流程用

 

到的模塊和包的版本如表 1:

  用到的包版本號(hào)

 

4.2.1收集數(shù)據(jù)及預(yù)處理

訓(xùn)練模型之前,我們需要先采集數(shù)據(jù)然后才能開始訓(xùn)練模型 .需要安裝任務(wù)分別采集數(shù)字與動(dòng)物水果的照片。采集數(shù)據(jù)共有三種方法。

  1. 通過爬蟲程序網(wǎng)上下載需要的圖片,爬蟲程序雖然能很快下載大量的圖片,但是存在圖片質(zhì)量低的問題,會(huì)下載很多錯(cuò)誤的圖片,需要手動(dòng)刪除掉。

  2. 在網(wǎng)站上人工篩選符合要求的圖片,然后一張一張的下載下來,比較費(fèi)時(shí)費(fèi)力。

  3. OpenARTmini模塊拍照并保存圖片在 SD卡,這種方法圖片質(zhì)量高,符合實(shí)際情況。

針對(duì)數(shù)據(jù)集不夠的問題,主要解決方法是數(shù)據(jù)增廣。用于增加訓(xùn)練數(shù)據(jù)集,使得訓(xùn)練的模型具有更強(qiáng)的泛化能力。需要根據(jù)自己的數(shù)據(jù)集特征來確定應(yīng)該使用哪幾種數(shù)據(jù)增廣方式,主要包括:水平翻轉(zhuǎn),旋轉(zhuǎn),縮放,噪聲等。圖 27是根據(jù)要求制作的原圖,圖 28是數(shù)據(jù)增廣后的數(shù)據(jù)集部分截圖,圖 29是拍攝的部分圖片。

▲ 圖 27原始圖像

 

▲ 圖 28原始圖像數(shù)據(jù)增強(qiáng)部分后樣本

 

▲ 圖 29攝像頭拍攝圖像數(shù)據(jù)增強(qiáng)后部分樣本

 

▲ 圖 30文件夾分類命名為 0-9

 

使用以上方法生成的圖片保存在十個(gè)文件夾,命名為 0-9。編寫腳本從 Picture文件夾讀取圖片并轉(zhuǎn)換為數(shù)據(jù)集,生成 x.npy和 y.npy兩個(gè)文件。部分代碼圖 27所示。

▲ 圖 31讀取圖片轉(zhuǎn)換為 npy文件

設(shè)計(jì)模型進(jìn)行訓(xùn)練之前,要進(jìn)行數(shù)據(jù)預(yù)處理。在進(jìn)行深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),一般要求輸入的數(shù)據(jù)范圍在 (-1,1)或(0,1)之間。對(duì)數(shù)據(jù)拆分 ,將其劃分為 80%的訓(xùn)練集與 20%測試集,訓(xùn)練集用于模型自身迭代,測試集用于診斷模型能力。然后,對(duì)數(shù)據(jù)進(jìn)行歸一化處理,并通過 to_categorical函數(shù)將標(biāo)簽數(shù)據(jù)轉(zhuǎn)換為 one-hot碼.本設(shè)計(jì)要訓(xùn)練一個(gè) 10分類的網(wǎng)絡(luò),那么要將標(biāo)簽(圖片所對(duì)應(yīng)的類別號(hào))轉(zhuǎn)換為長度為 10,并且僅有其所對(duì)應(yīng)的類別號(hào)的位置的數(shù)據(jù)為 1,其余均為 0,這樣一組 n維向量就被稱為 one-hot碼,以方便網(wǎng)絡(luò)進(jìn)行迭代學(xué)習(xí)。

4.2.2搭建神經(jīng)網(wǎng)絡(luò)

Keras是一個(gè)用 python編寫的深度學(xué)習(xí) API,在機(jī)器學(xué)習(xí)平臺(tái) Tensorflow上運(yùn)行,換句話說他以 Tensorflow為后端,作為神經(jīng)網(wǎng)絡(luò)的推理引擎。最近的 Tensorflow也“高清復(fù)刻“了 Keras的 API。Keras的 API非常直奔主題,可以讓人盡快地將構(gòu)想轉(zhuǎn)變?yōu)榻Y(jié)果,簡化研究過程。正如官網(wǎng)對(duì)他的評(píng)價(jià):簡單,靈活,強(qiáng)大。本設(shè)計(jì)采用的 Keras2.2.4版本以及 Tensorflow1.14.0版本,用到的庫、模塊和函數(shù)如表 2.

表 2用到的庫、模塊和函數(shù) Keras有兩種排布的方式,一種是 Sequential方式,一種是 Function方式。前者像是串冰糖葫蘆,每一個(gè)都是一個(gè)單獨(dú)的個(gè)體,小兵之間是順序排列的,不能前后顛倒,不能互通有無。而 Function方式,像是各自組隊(duì),可以一起也可以分開,但是最終還是一個(gè)整體,簡單的說, Sequential方式使用簡單,但是,只能搭建那些串行網(wǎng)絡(luò)。而 Function方式,則可以根據(jù)不同需求,進(jìn)行排列布陣,形成各種各樣的陣型,搭配到一起使用,就像是編程時(shí)候用到的函數(shù)。

本設(shè)計(jì)將主要采用 Sequential模型構(gòu)建模式,相對(duì)來說, 0-9數(shù)字?jǐn)?shù)據(jù)集顏色特征很少,數(shù)據(jù)集數(shù)目小,因此搭建一個(gè)具有 3層卷積和 1層全連接的簡單卷積神經(jīng)網(wǎng)絡(luò) 3Conv+1Dense的 CNN。如圖 30所示,該卷積神經(jīng)網(wǎng)絡(luò)的中間層采用 rule激活函數(shù),輸出層采用 softmax激活函數(shù)。

在動(dòng)物 /水果十分類任務(wù)中,每一類原始圖片分別有 100張左右,經(jīng)過數(shù)據(jù)集增廣至每類 2000張左右,總共 2萬張左右。同樣搭建一個(gè)具有 3層卷積和 1層全連接的簡單卷積神經(jīng)網(wǎng)絡(luò),該卷積神經(jīng)網(wǎng)絡(luò)的中間層采用 rule激活函數(shù),輸出層采用 softmax激活函數(shù)。與數(shù)字分類不同的是,如圖 31所示,每個(gè)激活層前面添加 BatchNormalization層,使訓(xùn)練過程更加穩(wěn)定,提高訓(xùn)練速度,并且減少過擬合。在池化層后面加 dropout層,隨機(jī)丟棄一部分中間特征,防止模型過擬合。

4.2.3模型訓(xùn)練

優(yōu)化器負(fù)責(zé)模型的調(diào)優(yōu),學(xué)習(xí)率( lr)的設(shè)置有講究,過大的學(xué)習(xí)率會(huì)提高模型的學(xué)習(xí)速度,但是太大了可能反而適得其反,還可能會(huì)導(dǎo)致模型無法得到最優(yōu)解;而過小的學(xué)習(xí)率,會(huì)導(dǎo)致訓(xùn)練速度過慢,陷入局部最優(yōu)不能自拔,選擇上要進(jìn)行試錯(cuò)調(diào)整,這里選擇 opt = Adam(lr=0.001)。這里的評(píng)價(jià)標(biāo)準(zhǔn),選擇 categorical_crossentropy,這也是專門適用于多分類問題的損失函數(shù)。這里的 epochs代表總共迭代遍歷數(shù)據(jù)集多少多少次, batch_size為一次迭代需要使用多少數(shù)據(jù)。小了能讓模型迭代快,但是訓(xùn)練效果容易震蕩,還妨礙學(xué)到全局特征;大了能讓學(xué)習(xí)過程更平穩(wěn),但模型收斂效率會(huì)下降,還可能陷入局部最優(yōu)?;卣{(diào)函數(shù) ModelCheckpoint負(fù)責(zé)模型的保存,會(huì)將訓(xùn)練過程中遇到的最好結(jié)果即時(shí)保存下來。數(shù)字分類模型訓(xùn)練部分代碼如圖 32所示。

▲ 圖 32 3*Conv+1*Dense的 CNN(數(shù)字任務(wù))

 

▲ 圖 33模型訓(xùn)練

 

訓(xùn)練好的模型用可視化模型結(jié)構(gòu)工具 Netron進(jìn)行查看。本設(shè)計(jì)搭建的網(wǎng)絡(luò)模型如圖 34、圖 35所示。

▲ 圖 34Netron可視化數(shù)字分類網(wǎng)絡(luò)模型結(jié)構(gòu)

 

▲ 圖 35可視化動(dòng)物 /水果分類網(wǎng)絡(luò)模型結(jié)構(gòu)

 

4.2.4模型量化

神經(jīng)網(wǎng)絡(luò)模型權(quán)重的多少往往直接反映出一個(gè)模型的復(fù)雜程度,而權(quán)重越大,模型的效果一般會(huì)更加好。MCU的計(jì)算資源和存儲(chǔ)資源都遠(yuǎn)不能和 PC相比,在 PC端可以良好運(yùn)行的 AI模型在 MCU上運(yùn)行有很大困難。出于這一目的,模型量化技術(shù)應(yīng)運(yùn)而生。而量化又分為訓(xùn)練中量化,以及訓(xùn)練后量化。在模型訓(xùn)練時(shí)需要較高精度的權(quán)重,這樣才能精準(zhǔn)地降低損失值,但是在模型預(yù)測時(shí)沒有這個(gè)要求,所以本設(shè)計(jì)選擇訓(xùn)練后進(jìn)行模型量化。訓(xùn)練后量化技術(shù)可以理解成一種有損壓縮,會(huì)損失一點(diǎn)精度,但是,會(huì)顯著降低模型尺寸,同時(shí)提高運(yùn)行效率。量化的原理其實(shí)很簡單。模型在訓(xùn)練時(shí)一般是使用 float32類型來存儲(chǔ)的,每一個(gè)權(quán)重?cái)?shù)據(jù)需要占用 4個(gè)字節(jié),模型的推理改用 int8,這樣,每存儲(chǔ)一個(gè)權(quán)重,將只消耗 1個(gè)字節(jié),模型的尺寸會(huì)縮小為之前的 1/4,而且這樣對(duì)精度的影響通常極小,只要是在可接受的范圍內(nèi),我們就降低了模型的存儲(chǔ)尺寸。而且,目前神經(jīng)網(wǎng)絡(luò)加速器或是神經(jīng)網(wǎng)絡(luò)加速庫,一般只支持 int8類型的數(shù)據(jù)輸入,對(duì) float類型無能為力。模型小也大大減輕了對(duì)存儲(chǔ)器系統(tǒng)和 Cache的壓力。這樣一來,在減小了模型尺寸的同時(shí),還可以加速模型的運(yùn)行。本設(shè)計(jì)借用 NNCU模型轉(zhuǎn)換器,其 GUI界面如圖 36所示。

▲ 圖 36NNCU模型轉(zhuǎn)換器

 

4.2.5實(shí)現(xiàn)結(jié)果

模型文件已經(jīng)量化完畢,接下來我們量化之后的模型文件放入 OpenART mini中跑起來。實(shí)現(xiàn)步驟的流程圖如下圖 37。

▲ 圖 37模型載入流程圖

運(yùn)行模型進(jìn)行模型預(yù)測,識(shí)別到帶黑框的圖片后可通過串行終端界面看到提示數(shù)據(jù)。實(shí)現(xiàn)結(jié)果表明,識(shí)別準(zhǔn)確度較高與實(shí)時(shí)性較好,模型運(yùn)行效果良好。實(shí)現(xiàn)結(jié)果如圖 38至圖 42圖像所示。

▲ 圖 38水果識(shí)別正確示例 -葡萄

 

▲ 圖 39水果識(shí)別正確示例 -香蕉

 

▲ 圖 40動(dòng)物識(shí)別正確示例 -豬

 

▲ 圖 41動(dòng)物識(shí)別正確示例 -馬

 

圖 42分類錯(cuò)誤,結(jié)果正確示例本設(shè)計(jì)分別對(duì) 0-9數(shù)字圖片和十種水果動(dòng)物進(jìn)行識(shí)別,實(shí)際測試中調(diào)整合適光照以及圖片大小,識(shí)別的準(zhǔn)確率如下表 3所示。

▲ 表 3數(shù)據(jù)集及其識(shí)別準(zhǔn)確率

 

4.3AI識(shí)別控制算法

利用上文提到的 openmvIDE,采用 python編程控制 openartmini模塊及其外設(shè)。任務(wù)實(shí)現(xiàn)流程圖如圖 43所示。

▲ 圖 43任務(wù)實(shí)現(xiàn)流程圖

 

4.3.1識(shí)別 AprilTag

AprilTag的家族為 TAG25H9,包含 0-34共35個(gè)數(shù)字,只需識(shí)別 0-9。首先制作AprilTag,直接從 OpenMV的IDE里生成。如圖所示。

▲ 圖 44TAG25H9 0-9

 

由于 openartmini模塊自帶識(shí)別 AprilTag庫函數(shù),調(diào)用函數(shù)即可識(shí)別。

4.3.2舵機(jī)控制

伺服電機(jī)通常被稱為舵機(jī),它是一種帶有輸出軸的小裝置。向伺服器發(fā)送一個(gè)控制信號(hào)時(shí),輸出軸就可以轉(zhuǎn)到特定的位置。只要控制信號(hào)持續(xù)不變,伺服機(jī)構(gòu)就會(huì)保持軸的角度位置不改變。如果控制信號(hào)發(fā)生變化,輸出軸的位置也會(huì)相應(yīng)發(fā)生變化。

我們使用了兩個(gè)數(shù)字舵機(jī),設(shè)定舵機(jī)頻率均為 200HZ,控制信號(hào)來自 openartmini模塊給出的兩個(gè) PWM信號(hào)。下方舵機(jī)實(shí)際控制角度范圍為 180°,用于改變攝像頭方向,以便尋找待識(shí)別圖像。上方舵機(jī)的控制信號(hào)保持不變,作用是穩(wěn)定攝像頭支架。

4.3.3激光發(fā)射器

使用帶有可調(diào)透鏡的微型激光器,輸出功率為 5mW。調(diào)整光斑直徑至合適大小。條件觸發(fā)后, openartmini模塊給出時(shí)長 1.2s,頻率 100HZ、占空比 50%的控制信號(hào)。激光發(fā)射器發(fā)射激光至靶心,即可認(rèn)為打靶成功。

第五章 仿真與調(diào)試

要想將所設(shè)計(jì)的算法運(yùn)用到智能小車上,并很好的控制智能小車的各個(gè)機(jī)構(gòu)協(xié)調(diào)工作,并不是一蹴而就的事情,必須經(jīng)過初期的設(shè)計(jì)、仿真、制作和長期的調(diào)試工作。而這一系列工作也是反復(fù)循環(huán)進(jìn)行的,在調(diào)試過程中對(duì)設(shè)計(jì)方案進(jìn)行修改,然后重新仿真制作后再進(jìn)行新一輪的調(diào)試。

5.1 IAR在線調(diào)試

程序開放在 IAR Embedded Workbench IDE下進(jìn)行, Embedded Workbench forARM是 IAR Systems公司為 ARM微處理器開發(fā)的一個(gè)集成開發(fā)環(huán)境 (下面簡稱 IAR EWARM)。比較其他的 ARM開發(fā)環(huán)境, IAR EWARM具有入門容易、使用方便和代碼緊湊等特點(diǎn)。EWARM中包含一個(gè)全軟件的模擬程序 (simulator)。用戶不需要任何硬件支持就可以模擬各種 ARM內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評(píng)估 IAR EWARM的功能和使用方法。IAR EWARM中包括集成開發(fā)環(huán)境 IDE、處理器專家、全芯片仿真、可視化參數(shù)顯示工具、項(xiàng)目工程管理、 C交叉編譯器、匯編器、鏈接器以及調(diào)試器。其中在本設(shè)計(jì)中重要的部分就是集成開發(fā)環(huán)境和調(diào)試器, IAR軟件自帶在線調(diào)試功能,在下載器下載完成后可以對(duì)智能車的各個(gè)參數(shù)進(jìn)行直觀準(zhǔn)確的觀察。

5.2MATLAB數(shù)據(jù)處理

MATLAB是矩陣實(shí)驗(yàn)室( Matrix Laboratory)的簡稱,是美國 MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境,主要包括 MATLAB和 Simulink兩大部分。本次主要使用 MATLAB完成數(shù)據(jù)的可視化處理以及算法仿真。通過藍(lán)牙串口將需要觀測的數(shù)據(jù)發(fā)至電腦,使用 MATLAB進(jìn)行繪圖處理。根據(jù)采集到的數(shù)據(jù)進(jìn)行相關(guān)參數(shù)的整定。

5.3按鍵及液晶輔助調(diào)試

調(diào)試賽車是比賽的重要一環(huán)。為了調(diào)試方便,設(shè)計(jì)了按鍵加 OLED的方案。這樣一來,可以通過 OLED屏幕很方便地觀看車模運(yùn)行參數(shù)及攝像頭看到的路面圖像,方便對(duì)路況進(jìn)行人工分析并采用按鍵和撥碼開關(guān)的方式及時(shí)調(diào)整,使得車??稍谫悎錾峡焖偾袚Q速度模式以適應(yīng)比賽。

▲ 圖 46按鍵液晶調(diào)試

 

5.4串口通信調(diào)試

openartmini模塊與主控單片機(jī)進(jìn)行串口通信。先初始化串口,波特率設(shè)置為115200,設(shè)置發(fā)送和接受信息引腳??梢园l(fā)送接受字符串、列表、多種進(jìn)制數(shù)等信息。我們選擇雙方傳遞信息的形式為十六進(jìn)制數(shù)據(jù), openartmini模塊發(fā)送信息使用 uart.write()函數(shù),接受信息使用 uart.read()函數(shù)。

實(shí)際測試時(shí),先使用串口轉(zhuǎn) TTL模塊在電腦端進(jìn)行測試,使用串口助手界面如下,簡單大方,滿足測試需求。后續(xù)測試與主控單片機(jī)能夠進(jìn)行正常通信。

▲ 圖 47串口助手調(diào)試界面

 

 

第六章 心得總結(jié)

報(bào)名參加“恩智浦杯”智能汽車競賽,我們遵循學(xué)習(xí)知識(shí)第一,志同道合友誼第一,比賽獲獎(jiǎng)第二的原則。

設(shè)計(jì)制作過程中,通過小組成員的努力思考與實(shí)踐,以及學(xué)長比賽的經(jīng)驗(yàn),我們有了基本思路,包括機(jī)械,電路,以及最重要的控制上的創(chuàng)新思想。機(jī)械方面我們的特色在于輪胎與舵機(jī)轉(zhuǎn)向結(jié)構(gòu)在傳感器布局。對(duì)于電感 ,我們采用傳統(tǒng)的電感排布方法。在電路方面,有 RT1064主控模塊、電機(jī)驅(qū)動(dòng)模塊、電源模塊、傳感器模塊、放大電路、輔助模塊。這六個(gè)模塊分別設(shè)計(jì),不同成員負(fù)責(zé)不同部分,比較芯片優(yōu)異和構(gòu)造合適電路。最終確定現(xiàn)在的電路。

在控制方面,我們使用比賽推薦的開發(fā)工具調(diào)試程序,充分利用上位機(jī)等工具以提高效率經(jīng)過小組成員不斷研討、爭論、改進(jìn),終于設(shè)計(jì)出三套適用于不同情況下的,穩(wěn)定的程序。

在幾個(gè)月的準(zhǔn)備中,在場地、經(jīng)費(fèi)方面都的到了學(xué)校和學(xué)院的大力支持,在此特別感謝一直支持和關(guān)注智能車比賽的學(xué)校和學(xué)院領(lǐng)導(dǎo)以及各位老師。同時(shí)也感謝比賽組委會(huì)能組織這樣一項(xiàng)很有意義的比賽。

這段歷程,我們一同熬過無數(shù)個(gè)日夜,熟悉了彼此也成長了自己。從走時(shí)關(guān)燈到天亮了記得把燈,關(guān)上實(shí)驗(yàn)室就像我們另一個(gè)家。這段經(jīng)歷將永伴我們一生。比賽很艱辛 ,但我們享受其中的快樂,受益匪淺,智能車競賽的歷程會(huì)成為我們最珍貴的回憶。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號(hào)TsinghuaJoking主筆。清華大學(xué)自動(dòng)化系教師,研究興趣范圍包括自動(dòng)控制、智能信息處理、嵌入式電子系統(tǒng)等。全國大學(xué)生智能汽車競賽秘書處主任,技術(shù)組組長,網(wǎng)稱“卓大大”。