智能競賽技術(shù)報告 | 智能車視覺 - 西北工業(yè)大學(xué) - 赤霄2021

      網(wǎng)友投稿 1182 2022-05-29

      學(xué) 校:西北工業(yè)大學(xué)

      隊伍名稱:赤霄2021

      參賽隊員:武錦輝 龍俊旺 石鈺瑩

      帶隊教師:曲仕茹 胡深奇

      ■ 1.1 大賽介紹

      為加強大學(xué)生實踐、創(chuàng)新能力和團隊精神的培養(yǎng),促進高等教育教學(xué)改革, 2005年10月受教育部高等教育司委托(教高司函[2005]201號文),教育部高等學(xué)校自動化專業(yè)教學(xué)指導(dǎo)分委員會(2013年已更名為“教育部高等學(xué)校自動化類專業(yè)教學(xué)指導(dǎo)委員會”,以下簡稱自動化教指委)創(chuàng)辦了全國大學(xué)生智能汽車競賽,并被教育部批準列入國家教學(xué)質(zhì)量與教學(xué)改革工程資助項目(教高司函[2010]13號文)。在2020年轉(zhuǎn)為中國自動化學(xué)會作為主辦單位。

      該競賽以智能汽車為研究對象的創(chuàng)意性科技競賽,是面向全國大學(xué)生的一種具有探索性工程實踐活動,是教育部倡導(dǎo)的大學(xué)生科技競賽之一。該競賽以“立足培養(yǎng),重在參與,鼓勵探索,追求卓越”為指導(dǎo)思想,旨在促進高等學(xué)校素質(zhì)教育,培養(yǎng)大學(xué)生的綜合知識運用能力、基本工程實踐能力和創(chuàng)新意識,激發(fā)大學(xué)生從事科學(xué)研究與探索的興趣和潛能,倡導(dǎo)理論聯(lián)系實際、求真務(wù)實的學(xué)風(fēng)和團隊協(xié)作的人文精神,為優(yōu)秀人才的脫穎而出創(chuàng)造條件。

      該競賽由競賽秘書處為各參賽隊提供/購置規(guī)定范圍內(nèi)的標準硬軟件技術(shù)平臺,競賽過程包括理論設(shè)計、實際制作、整車調(diào)試、現(xiàn)場比賽等環(huán)節(jié),要求學(xué)生組成團隊,協(xié)同工作,初步體會一個工程性的研究開發(fā)項目從設(shè)計到實現(xiàn)的全過程。該競賽融科學(xué)性、趣味性和觀賞性為一體,是以迅猛發(fā)展、前景廣闊的汽車電子為背景,涵蓋自動控制、模式識別、傳感技術(shù)、電子、電氣、計算機、機械與汽車等多學(xué)科專業(yè)的創(chuàng)意性比賽。該競賽規(guī)則透明,評價標準客觀,堅持公開、公平、公正的原則,保證競賽向健康、普及、持續(xù)的方向發(fā)展。

      該競賽以英飛凌半導(dǎo)體公司、江蘇國芯科技有限公司為協(xié)辦方,得到了教育部相關(guān)領(lǐng)導(dǎo)和各高校師生的高度評價,已發(fā)展成全國30個省市自治區(qū)近300所高校廣泛參與的全國大學(xué)生智能汽車競賽。2008年起被教育部批準列入國家教學(xué)質(zhì)量與教學(xué)改革工程資助項目中科技人文競賽之一(教高函[2007]30號文)。

      全國大學(xué)生智能汽車競賽原則上由全國有自動化專業(yè)的高等學(xué)校(包括港、澳地區(qū)的高校)參賽。競賽首先在各個分賽區(qū)進行報名、預(yù)賽,各分賽區(qū)的優(yōu)勝隊將參加全國總決賽。

      本屆比賽分為基礎(chǔ)四輪、節(jié)能信標、電磁越野、雙車接力、全向行進、單車拉力、專科基礎(chǔ)和智能視覺組八個競速賽題組。本文主要介紹基于智能視覺組賽題的智能車系統(tǒng)設(shè)計與制作,從機械設(shè)計、硬件設(shè)計、軟件設(shè)計三大方面進行闡述。

      ■ 1.2 智能視覺組任務(wù)要求

      對于智能視覺組,規(guī)定使用C型車模,車模尺寸不限。車模中微控制器使用NXP系列單片機,推薦使用i.MX RT系列的任意一款單片機。允許使用攝像頭、電感、紅外光電、激光傳感器等器件進行賽道和環(huán)境檢測。競賽車模從車庫出發(fā)沿著賽道運行兩周,然后返回車庫。車模需要分別通過三岔路口兩條岔路。比賽時間從車模駛出車庫到重新回到車庫為止。在車模行進過程中,需要完成以下兩種任務(wù):

      1)選擇三岔路口。在三岔路口中心前方放置一個靶標牌,上面有0 ~ 9單個數(shù)字。在車模出發(fā)后,由現(xiàn)場裁判員隨機確定靶標牌上的數(shù)字。車模行進到三岔路口時,需要根據(jù)數(shù)字的奇偶特性判斷左邊路口還是右邊路口。

      若為偶數(shù)(0、2、4、6、8),選擇左側(cè)路口;

      若為奇數(shù)(1、3、5、7、9),選擇右側(cè)路口。

      該任務(wù)示意圖如圖1.1所示。

      2)路邊目標識別與定位。在賽道某一區(qū)域(直線或者彎道)中心放置AprilTag25h9二維碼圖片。根據(jù)二維碼對應(yīng)數(shù)字,分別在賽道左側(cè),或者右側(cè),二維碼前后50厘米范圍內(nèi)放置靶標牌。其中,偶數(shù)表示以AprilTag指向的左側(cè)放置靶標牌,奇數(shù)表示以AprilTag指向的右側(cè)放置靶標牌。

      靶標上張貼有兩類物品的圖案:動物圖案和水果圖案。其中動物類包括狗、貓、馬、豬、牛等,動物圖案包含有動物全身照片;水果類包括蘋果、橘子、葡萄、香蕉、榴蓮等,水果圖案包括有水果整體照片。

      如果路邊目標牌上的圖案屬于動物類,則車模需要在二維碼所在的區(qū)域(前后50厘米)內(nèi)不少于3秒鐘,方能駛出車模停止區(qū)域。

      如果路邊目標牌上的圖案屬于水果類,則車模需要使用車載小型激光發(fā)射器對準靶點中心發(fā)送一束激光,激發(fā)目標靶響應(yīng)。靶心檢測激光束的范圍是直徑為5厘米的圓形區(qū)域,激光點落在靶心便可以觸發(fā)目標靶位的響應(yīng)。

      該任務(wù)示意圖如圖1.2所示。

      ■ 1.3 系統(tǒng)設(shè)計框架

      系統(tǒng)以檢測電磁場信號、賽道圖像信號為基礎(chǔ),通過單片機處理信號并實現(xiàn)對車體控制,實現(xiàn)車體能夠準確沿著預(yù)設(shè)路徑巡跡運行。系統(tǒng)電路部分包括電源管理系統(tǒng)電路、電機驅(qū)動電路、舵機驅(qū)動電路、電磁運放電路等;外部傳感器設(shè)備包括用于獲取賽道信息的攝像頭、用于測速的編碼器、用于獲取車身姿態(tài)的陀螺儀、用于打靶的激光發(fā)射模塊、用于調(diào)試的無線串口模塊、用于人機交互的TFT屏幕和按鍵等;此外還有用于固定電池、電路板和各類傳感器器件的機械裝置。綜上所述,本智能小車系統(tǒng)包含了以下模塊:

      1. 單片機最小系統(tǒng)模塊(NXP i.MX RT1064單片機)

      2. 電機驅(qū)動模塊

      3. 舵機轉(zhuǎn)向模塊

      4. 攝像頭傳感器模塊

      5. 電磁運放模塊

      6. 編碼器測速模塊

      7. 陀螺儀模塊

      8. OpenART模塊

      9. 激光發(fā)射模塊

      10. 云臺模塊

      11. 調(diào)試模塊

      12. 人機交互模塊

      系統(tǒng)框架圖如圖1.3所示。

      2.1 系統(tǒng)機械設(shè)計參數(shù)要求

      本屆競賽中,智能視覺組別的要求如下:

      1. 車模要求:車模使用C型車模。車模作品尺寸不限。

      2. 微控制器要求:車模中微控制器使用NXP系列單片機,推薦使用i.MX RT系列的任意一款單片機。

      3. 傳感器要求:允許使用攝像頭、電感、紅外光電、激光傳感器等。

      2.2 系統(tǒng)機械整體參數(shù)調(diào)校

      智能車的整體參數(shù),包括車體重心、傳感器排布方式等,都對整個智能車系統(tǒng)的穩(wěn)定運行起著至關(guān)重要的作用。因此,對智能車機械系統(tǒng)的調(diào)節(jié),有助于智能車速度上的提升。智能車的布局以要盡可能的精簡和牢固,通過對車上傳感器及電路板的合理布局,盡量保證整車重心應(yīng)靠近整車的幾何中心,使得車模的四個輪胎都有良好的抓地能力,提升車模整體運動能力。

      智能車整體機械布局圖如圖2.1所示。

      2.3 云臺安裝

      云臺的作用為控制攝像頭的轉(zhuǎn)向和激光發(fā)射的方向。云臺通過3D打印設(shè)計與實現(xiàn),前后共設(shè)計了3版。

      第一版,設(shè)計如圖2.2所示。

      該設(shè)計方案為將舵機云臺放置在智能車轉(zhuǎn)向舵機的上方,由于該方案會使激光與OPENART無法放置在較低的位置,且整體靠前,不利于轉(zhuǎn)向、打靶等動作的完成,因此放棄該方案 。

      第二版,設(shè)計如圖2.3所示。

      該設(shè)計方案將視覺任務(wù)的舵機后移,下方不再有轉(zhuǎn)向舵機,因此高度可調(diào)范圍增大。但由于僅由兩個銅柱與車身固定,智能車在行進的過程中舵機云臺會有較大的晃動,這對視覺任務(wù)與行進任務(wù)都是不利的。綜合考慮后,改善并確定了方案。

      第三版,在第二版的基礎(chǔ)上增加了兩個螺孔,使用4根銅柱將云臺與車身連接,效果明顯改善,智能車機械結(jié)構(gòu)穩(wěn)定性增強。如圖2.4所示。

      考慮到激光左右打靶任務(wù)的對稱性,設(shè)計3D打印件使激光能固定在碳素桿正前方,確定好任務(wù)后,用熱熔膠固定。3D打印件設(shè)計如圖2.5所示。

      最終,云臺安裝如圖2.6所示。

      2.4 電池及PCB安裝

      PCB板用三根銅柱固定在車身前部,電池通過3D打印件固定在車身后側(cè),更加牢固同時方便更換。如圖2.7所示。

      2.5 本章小結(jié)

      機械結(jié)構(gòu)是智能車的基礎(chǔ),其首先決定了智能車的性能,特別是轉(zhuǎn)向和加速性能,本章主要通過對轉(zhuǎn)向機構(gòu)的分析以及對汽車理論知識的學(xué)習(xí)和應(yīng)用,找到了影響小車轉(zhuǎn)向范圍和效率的因素并進行了改進,使得小車的轉(zhuǎn)向靈敏度得到提高,同時電機差速效率也得到較大提高。此外還針對智能視覺組的任務(wù)要求,對電磁傳感器、云臺等硬件的布局進行合理規(guī)劃。

      3.1 單片機最小系統(tǒng)模塊

      基于NXP i.MX RT1064核心的單片機最小系統(tǒng)是本智能車的核心。圖3.1為NXP i.MX RT1064核心板示意圖。

      3.2 電源管理系統(tǒng)

      本智能車系統(tǒng)由一塊2S鋰電池進行供電。智能車系統(tǒng)各硬件組成部分分別需要5V、3.3V以及6V的電壓供電。

      核心板、OPENART模塊、OPENMV模塊以及電磁傳感模塊需要5V的電壓供電。在該硬件電路設(shè)計中,為避免各模塊之間相互干擾,使用三塊LP38692MP-5.0穩(wěn)壓芯片產(chǎn)生5V穩(wěn)壓。

      攝像頭模塊、TFT彩屏、人機交互模塊、蜂鳴器、激光、信號緩沖芯片、編碼器、無線串口以及陀螺儀需要3.3V的供電。其中,攝像頭模塊通過RT9013-33GB穩(wěn)壓芯片供電,這是因為本基于RT1064單片機的系統(tǒng)需要嚴格的上電次序,在單片機內(nèi)核啟動成功后才能給外設(shè)上電。單片機的CR引腳在內(nèi)核啟動成功后會變?yōu)楦唠娖剑俳?jīng)過3.3V LDO輸入RT9013-33G的使能引腳。除攝像頭外,用一塊LP38692MP-3.3供電。

      舵機部分需要6V的供電 ,該硬件系統(tǒng)設(shè)計了三個舵機,考慮到之后智能車性能提升的需要,選用了兩片可調(diào)節(jié)輸出電壓的LM2941SX穩(wěn)壓芯片,分別給三個舵機供電。

      電源管理系統(tǒng)如圖3.2所示。

      3.3 傳感器模塊

      傳感器是小車最重要的模塊之一。本系統(tǒng)主要使用攝像頭模塊作為主傳感器,輔以O(shè)penART模塊、OpenMV模塊、編碼器測速模塊、陀螺儀模塊等作為輔傳感器。經(jīng)過考慮后,沒有使用電磁運放模塊。

      3.3.1 攝像頭模塊

      本系統(tǒng)使用逐飛總鉆風(fēng)MT9V034灰度傳感器作為攝像頭模塊。攝像頭模塊接口原理圖如圖3.3所示。

      3.3.2 OpenART模塊

      OpenART是實現(xiàn)智能視覺組別AI任務(wù)的核心,其與主控之間通過UART接口進行通訊,該硬件電路共引出三個OpenART模塊,接口原理圖如圖3.4所示。

      3.3.3 OpenMV模塊

      為了提高識別的準確性,除OpenART模塊外,輔以O(shè)penMV模塊,其與主控的通信方式也是UART通信,接口原理圖如圖3.5所示。

      3.3.4 編碼器測速模塊

      本小車使用逐飛1024線、帶方向輸出的光電編碼器進行小車的測速。處理器通過讀取編碼器脈沖數(shù)來實現(xiàn)小車速度的檢測,通過讀取編碼器旋轉(zhuǎn)方向腳的高低電平來檢測電機的正反轉(zhuǎn)。其接口原理圖如圖3.6所示。

      3.3.5 陀螺儀模塊

      陀螺儀模塊可獲取車模的角速度和加速度,可輔助進行元素識別和運動控制。其接口原理圖如圖3.7所示。

      3.4 電機驅(qū)動模塊

      電機采用BTN8982芯片,構(gòu)成完整的全橋驅(qū)動分別控制兩個電機,可以很好實現(xiàn)電機的正轉(zhuǎn)、反轉(zhuǎn)和剎車制動。其電路原理圖如3.8所示。

      3.5 人機交互模塊

      為了方便調(diào)試,本車有無線串口模塊,通過UART通信方式進行通訊和傳輸數(shù)據(jù)。除此之外,主板還設(shè)置了按鍵、撥碼開關(guān)和TFT顯示屏,以方便控制參數(shù)的修改,便捷地進行智能車的調(diào)試。各模塊原理圖如圖3.9所示。

      3.6其他外設(shè)模塊

      3.6.1蜂鳴器模塊

      蜂鳴器模塊通過MOS管與主控的IO口連接,可進行調(diào)頻實現(xiàn)各種效果。蜂鳴器模塊接口原理圖如圖3.10所示。

      ·3.6.2激光模塊

      激光模塊用來實現(xiàn)任務(wù)中的打靶部分,由于裁判系統(tǒng)要求激光具有一定的頻率,因此通過MOS管令激光與主控的I/0口連接,實現(xiàn)125Hz的調(diào)頻。激光模塊接口原理圖如圖3.11所示。

      3.7 PCB板整體布局

      4.1 AI任務(wù)部分

      4.1.1 AI任務(wù)介紹

      本屆競賽,智能視覺組別在車模行進過程中,需要完成兩種任務(wù),分別為三岔路口選擇和路邊目標識別與定位。

      1)選擇三岔路口。在三岔路口中心前方放置一個靶標牌,上面有0 ~ 9單個數(shù)字。在車模出發(fā)后,由現(xiàn)場裁判員隨機確定靶標牌上的數(shù)字。車模行進到三岔路口時,需要根據(jù)數(shù)字的奇偶特性判斷左邊路口還是右邊路口。

      若為偶數(shù)(0、2、4、6、8),選擇左側(cè)路口;

      若為奇數(shù)(1、3、5、7、9),選擇右側(cè)路口。

      該任務(wù)示意圖如圖4.1所示。

      2)路邊目標識別與定位。在賽道某一區(qū)域(直線或者彎道)中心放置AprilTag25h9二維碼圖片。根據(jù)二維碼對應(yīng)數(shù)字,分別在賽道左側(cè),或者右側(cè),二維碼前后50厘米范圍內(nèi)放置靶標牌。其中,偶數(shù)表示以AprilTag指向的左側(cè)放置靶標牌,奇數(shù)表示以AprilTag指向的右側(cè)放置靶標牌。

      靶標上張貼有兩類物品的圖案:動物圖案和水果圖案。其中動物類包括狗、貓、馬、豬、牛等,動物圖案包含有動物全身照片;水果類包括蘋果、橘子、葡萄、香蕉、榴蓮等,水果圖案包括有水果整體照片。

      如果路邊目標牌上的圖案屬于動物類,則車模需要在二維碼所在的區(qū)域(前后50厘米)內(nèi)不少于3秒鐘,方能駛出車模停止區(qū)域。

      如果路邊目標牌上的圖案屬于水果類,則車模需要使用車載小型激光發(fā)射器對準靶點中心發(fā)送一束激光,激發(fā)目標靶響應(yīng)。靶心檢測激光束的范圍是直徑為5厘米的圓形區(qū)域,激光點落在靶心便可以觸發(fā)目標靶位的響應(yīng)。

      該任務(wù)示意圖如圖4.2所示。

      其中,三岔路口選擇任務(wù)需要針對阿拉伯?dāng)?shù)字進行識別,路邊目標識別與定位任務(wù)則包含AprilTag碼識別、動植物圖案識別和激光打靶三個環(huán)節(jié)。故智能視覺組別的AI任務(wù)可細分為以下四個任務(wù):數(shù)字識別與處理、AprilTag碼識別與處理、動植物圖案識別與處理、激光打靶處理。

      4.1.2 神經(jīng)網(wǎng)絡(luò)模型部署

      根據(jù)智能視覺組賽題要求,本屆比賽中的數(shù)字識別與處理任務(wù)、動植物圖案識別與處理任務(wù)都需要使用神經(jīng)網(wǎng)絡(luò)模型進行部署實現(xiàn)。對于圖像識別,由競賽規(guī)則可知所用到的圖像均為全身或是整體圖片,可以得到以下推論:

      1)待檢測圖片內(nèi)部只包含其中一種物體,也就是說不會涉及到多物體檢測,不需要采用OD類模型(OD是object detection的簡稱,一般模型體量會比較大,執(zhí)行耗時比可比圖像分類多幾十倍,但好處在于可以一次性檢出畫面上所有的待檢物體,并且提供位置信息)來做。

      2)待檢測圖片背景不復(fù)雜,全圖只有待檢物體本身,大大降低了背景噪聲的引入對分類模型的影響。

      無論是數(shù)字識別任務(wù),還是動植物識別任務(wù),任務(wù)本身都是一個典型的十分類問題,從任務(wù)難度上看并不會特別困難。CNN領(lǐng)域有一些經(jīng)典的十分類問題,以最耳熟能詳?shù)睦觕ifar10和lenet為例,數(shù)據(jù)集本身的體量很大,每一子類都有1w的可用數(shù)據(jù)。然而我們所使用的基于RT1064核心的OpenART模塊,對于一些體量比較大的模型,由于MCU算力有限,處理的速度會比較慢,會耗費大量的時間來進行目標的識別。算力和模型精度是一對歡喜冤家,往往好的模型,體量都不會太小,這也就使得我們在設(shè)計模型的時候,要通盤考慮,如何設(shè)計出一款小而精的模型,從而在識別速度和準確率上脫穎而出。

      本系統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型使用開源人工神經(jīng)網(wǎng)絡(luò)庫Keras進行設(shè)計、調(diào)試、評估和應(yīng)用。Keras是一個用python編寫的深度學(xué)習(xí)API,可以在機器學(xué)習(xí)平臺Tensorflow上運行,作為神經(jīng)網(wǎng)絡(luò)的推理引擎。

      首先,需要對數(shù)據(jù)進行預(yù)處理。在進行深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,一般往往要求輸入的數(shù)據(jù)范圍在(-1,1)或(0,1)之間,因此,我們要對數(shù)據(jù)進行歸一化處理,并將標簽數(shù)據(jù)轉(zhuǎn)換為one-hot碼。對于智能視覺組賽題,數(shù)字和動植物的識別都是10分類,要訓(xùn)練一個10分類的網(wǎng)絡(luò)(對10種物體進行分類),那么要將標簽(圖片所對應(yīng)的類別號)轉(zhuǎn)換為長度為10,并且僅有其所對應(yīng)的類別號的位置的數(shù)據(jù)為1,其余均為0,這樣一組n維向量就被稱為one-hot碼,以方便網(wǎng)絡(luò)進行迭代學(xué)習(xí)。同時,需要對數(shù)據(jù)集進行拆分,將其劃分為訓(xùn)練集與測試集,訓(xùn)練集用于模型自身迭代,測試集用于診斷模型能力。相關(guān)代碼如下:

      x = np.load('./x.npy') # 數(shù)據(jù)集讀入 y = np.load('./y.npy') # 數(shù)據(jù)集讀入 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 40) # 拆分數(shù)據(jù)集,80%作為訓(xùn)練集,20%作為測試集 np.save("test_x", x_test) np.save("test_y", y_test) x_train = x_train / 128.0 - 1 # 數(shù)據(jù)集歸一化處理 y_train = to_categorical(y_train) # 轉(zhuǎn)換為one-hot碼 x_test = x_test / 128.0 - 1 # 數(shù)據(jù)集歸一化處理 y_test = to_categorical(y_test) # 轉(zhuǎn)換為one-hot碼

      1

      2

      3

      4

      5

      6

      7

      8

      9

      接著需要搭建一個神經(jīng)網(wǎng)絡(luò)模型。我們構(gòu)建了一個擁有3Conv+1Dense的CNN,即一個具有3層卷積+1層全連接的簡單卷積神經(jīng)網(wǎng)絡(luò)模型,如圖4.3所示。

      相關(guān)代碼如下:

      def model_sequential(): mopdel = Sequential() model.add(Conv2D(32, (3,3), padding='same', input_shape=(32,32,3))) model.add(pooling((2,2))) model.add(Activation("relu")) model.add(Conv2D(64, (3,3), padding='same')) model.add(pooling((2,2))) model.add(Activation("relu")) model.add(Conv2D(128, (3,3), padding='same')) model.add(pooling((2,2))) model.add(Activation("relu")) model.add(Flatten()) model.add(Dense(10)) model.add(Activation("softmax")) return model

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      搭建完神經(jīng)網(wǎng)絡(luò)模型后,就可以開始訓(xùn)練。

      對于學(xué)習(xí)率(lr)設(shè)置,過大的學(xué)習(xí)率會提高模型的學(xué)習(xí)速度,但是太大了可能反而適得其反,還可能會導(dǎo)致模型無法得到最優(yōu)解;而過小的學(xué)習(xí)率,會導(dǎo)致訓(xùn)練速度過慢,陷入局部最優(yōu)不能自拔,選擇上要進行試錯調(diào)整。這里選擇

      0.001作為學(xué)習(xí)率:

      opt = Adam(lr=0.001)

      1

      對于訓(xùn)練的評價標準,我們選擇categorical_crossentropy,是專門適用于多分類問題的損失函數(shù):

      model.compile(optimizer=opt, loss=‘categorical_crossentropy’, metrics=[“acc”])

      訓(xùn)練函數(shù)如下:

      early_stop = EarlyStopping(patience=20) reduce_lr = ReduceLROnPlateau(patience=15) save_weights = ModelCheckpoint("./models/model_{epoch:02d}_{val_acc:.4f}.h5", save_best_only=True, monitor='val_acc') callbacks = [save_weights, reduce_lr] model.fit(x_train, y_train, epochs = 100, batch_size=32, validation_data = (x_test, y_test), callbacks=callbacks)

      1

      2

      3

      4

      5

      其中epochs代表總共迭代遍歷數(shù)據(jù)集多少多少次,batch_size為一次迭代需要使用多少數(shù)據(jù)。小了能讓模型迭代快,但是訓(xùn)練效果容易震蕩,還妨礙學(xué)到全局特征;大了能讓學(xué)習(xí)過程更平穩(wěn),但模型收斂效率會下降,還可能陷入局部最優(yōu)。save_weights和callbacks函數(shù)負責(zé)模型的保存,會將訓(xùn)練過程中遇到的最好結(jié)果即時保存下來。

      以上即為神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的流程和相關(guān)代碼,訓(xùn)練時的界面如圖4.4所示,其訓(xùn)練后會得到如圖4.5所示的.h5格式文件。

      訓(xùn)練完畢后,需要對訓(xùn)練導(dǎo)出的文件進行模型的量化和部署。由于所使用的模型層數(shù)較少,所以我們使用性能最佳的NNCU工具。

      首先針對導(dǎo)出的模型文件進行量化。量化可以在減小模型尺寸的同時,加速模型的運行。在nncu底層使用的CMSIS-NN老式庫中,量化系數(shù)給出了是由多少個位來表達tensor中的整數(shù)部分和分數(shù)部分,并且整數(shù)都是有符號整數(shù)。比如,對于8位量化,如果由3個位表示分數(shù),那么就有1個符號位,4個整數(shù)位,和3個分數(shù)位,表達范圍是[-128/8,127/8],分辨率為1/8;如果是4個位表達分數(shù),則表達范圍就是[-128/16,127/16],分辨率為1/16。在nncu中量化模型,既可以由用戶指定一個全局的數(shù)值來配置表達分數(shù)的位數(shù),就像是在電磁AI中的做法;又可以像tflite那樣提供一個代表性的數(shù)據(jù)集來估算各tensor的取值范圍。圖4.6為nncu工具調(diào)整量化參數(shù)的界面。

      模型量化后,需要把模型部署到OpenART模塊上。量化導(dǎo)出的文件格式為.nncu,把該量化后的文件放在OpenART模塊的SD卡根目錄上,即可調(diào)用相關(guān)API實現(xiàn)模型部署。相關(guān)代碼如下:

      net_path = "_1s_model_03_0.9957_xxxx.nncu" # 定義模型的路徑 labels = [line.rstrip() for line in open("/sd/labels_animal_fruits.txt")] # 加載標簽 net = nncu.load(net_path, load_to_fb=True) # 加載模型 while TRUE: for r in img.find_rects(threshold = 50000): # 在圖像中搜索矩形 img.draw_rectangle(r.rect(), color = (255, 0, 0)) # 繪制矩形外框,便于在IDE上查看識別到的矩形位置 img1 = img.copy(r.rect()) # 拷貝矩形框內(nèi)的圖像 for obj in nncu.classify(net , img1, min_scale=1.0, scale_mul=0.5, x_overlap=0.0, y_overlap=0.0): sorted_list = sorted(zip(labels, obj.output()), key = lambda x: x[1], reverse = True)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      至此,完成了從數(shù)據(jù)集制備到模型部署的所有工作。神經(jīng)網(wǎng)絡(luò)模型部署這一步驟適用于后文的數(shù)字識別與處理任務(wù)和動植物圖案識別與處理任務(wù)。

      4.1.3 數(shù)字識別與處理

      在三岔路口需要對路口處的數(shù)字進行識別,并根據(jù)數(shù)字的奇偶性,來決策應(yīng)該走左邊還是走右邊。我們使用OpenART模塊來完成此任務(wù)。

      要實現(xiàn)該任務(wù),首先需要實現(xiàn)被識別圖片矩形框的尋找和提取。OpenART提供了尋找矩形的函數(shù)img.find_rects,但由于競賽標靶與賽道間仍有一定距離,車模在實際運行時,標靶后的背景會嚴重干擾矩形框的尋找定位。針對該問題,由于比賽時標靶的圖片矩形框顏色是固定的(如分賽區(qū)比賽時為紫色,其RGB值為(68,0,98)),我們使用指定顏色提取的方法,把非矩形框的顏色信息全部濾除。我們先對圖像色彩空間進行預(yù)處理,把RGB色彩空間轉(zhuǎn)換為HSI色彩空間,其轉(zhuǎn)換公式為:

      θ=cos^(-1)?〖{([(R-G)+(R-B)]/2)/√(〖(R-G)〗^2+(R-B)(G-B))}〗 H={█(θ@360-θ)┤ (B≤G)|(B>G) S=1-(3*min?(R,G,B))/(R+G+B) I=(R+B+G)/3

      1

      2

      3

      4

      相關(guān)代碼如下:

      void RGBtoHSI() { int i,j; double r,g,b,numm,den,min,theta,H,S,I; uint16 color_tran; for(i=0;i>8)|(image_RGB[i][j]<<8)); b = 1.0 * (color_tran & 0x1f) / 0x1f; g = 1.0 * ((color_tran >> 5) & 0x3f) / 0x3f; r = 1.0 * ((color_tran >> 11) & 0x1f) / 0x1f; //幾何推導(dǎo)法轉(zhuǎn)換 numm=0.5*((r-g)+(r-b)); den=sqrt((r-g)*(r-g)+(r-b)*(g-b)); if(den==0) H=0; else { theta=acos(numm/den); if(b>g) H=(2.0*M_PI-theta)/(2.0*M_PI); else H=theta/(2.0*M_PI); } min=(b>g)?g:b; min=(min>r)?r:min; den=r+g+b; if(den==0) S=0; else S=1-3.0*min/den; I=(r+g+b)/3.0; image_H[i][j] = (uint16)(H * 360.0); image_S[i][j] = (uint8)(S * 255.0); image_I[i][j] = (uint8)(I * 255.0); } }

      1

      智能車競賽技術(shù)報告 | 智能車視覺 - 西北工業(yè)大學(xué) - 赤霄2021

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      轉(zhuǎn)換完畢后,根據(jù)矩形框的實際顏色給所提取的HSV三值設(shè)定閾值范圍,處于閾值范圍內(nèi)的像素點設(shè)為白色,處于閾值范圍外的像素點為黑色,把整幅圖像二值化。

      把圖像進行顏色提取二值化后,即可大幅度濾掉背景的干擾,對于被識別圖片矩形框的尋找和提取的效果、準確度和靈敏度有非常大的提升。

      我們使用約1500個數(shù)據(jù)集建立數(shù)字模型訓(xùn)練數(shù)據(jù)庫,如圖4.7所示。

      尋找到矩形框后,把矩形框內(nèi)的圖片放入部署好的數(shù)字神經(jīng)網(wǎng)絡(luò)模型里,即可得到識別結(jié)果。數(shù)字識別的具體效果如圖4.8所示。(2代表奇數(shù),1代表偶數(shù))

      4.1.4 AprilTag碼識別與處理

      AprilTag是一個視覺基準庫,在AR,機器人,相機校準領(lǐng)域廣泛使用。設(shè)定為與二維碼相似但相對更簡單的特定標志,實現(xiàn)快速檢測。在賽題中AprilTag碼也代表著數(shù)字,依然通過識別其所代表的數(shù)字,并判斷奇偶性來得知靶標牌是在賽道的哪一側(cè)。我們使用OpenART模塊來完成此任務(wù)。

      OpenART提供了識別AprilTag碼的函數(shù)find_apriltags,其效果如圖4.11所示。

      4.1.5 動植物圖案識別與處理

      賽題中包含動物圖案和水果圖案,這部分內(nèi)容也是該組別最能體現(xiàn)“AI”的一個環(huán)節(jié)。動物類包含狗、貓、馬、豬、牛五個子類別,水果類包含蘋果、橘子、葡萄、香蕉、榴蓮五個子類別,圖案對象均為全身或整體照片。

      關(guān)于動物和水果的識別,需要采用第十五屆AI電磁組部署神經(jīng)網(wǎng)絡(luò)模型的方式,來實現(xiàn)對圖案的識別,區(qū)別是數(shù)據(jù)量大了許多,所以這個環(huán)節(jié)的任務(wù)采用OpenART模塊部署AI模型進行訓(xùn)練和實現(xiàn)。

      與數(shù)字識別與處理任務(wù)的流程類似,要實現(xiàn)該任務(wù),首先需要實現(xiàn)被識別圖片矩形框的尋找和提取。此部分已在4.1.3中敘述,此處不再簪述。

      我們使用約14萬個數(shù)據(jù)集建立動植物模型訓(xùn)練數(shù)據(jù)庫,如圖4.10所示。

      (0代表動物,1代表水果)

      尋找到矩形框后,把矩形框內(nèi)的圖片放入部署好的動植物神經(jīng)網(wǎng)絡(luò)模型里,即可得到識別結(jié)果。動植物識別的具體效果如圖4.11所示。

      4.1.6 激光打靶處理

      在識別到圖案為水果時,需要使用車載小型激光發(fā)射器對準靶心發(fā)送一束激光,打中才算完成該項任務(wù)。在識別到AprilTag后,OpenArt與激光向相應(yīng)的方向旋轉(zhuǎn)90°,然后車體緩緩向前移動,直到OpenART識別到水果,并確認圖像位于OpenART位置中心時,確認為激光也對準水果圖片中心,然后以125Hz的頻率開啟激光一秒后關(guān)閉,打靶結(jié)束。

      4.2 巡線識別

      4.2.1 電磁巡線原理

      比賽中存在兩種磁場:一種是用來作為起跑線的永磁鐵產(chǎn)生的固定磁場,用于標識終點;一種是賽道中通過100mA交變電流的導(dǎo)線所產(chǎn)生的電磁場,用于賽道識別。前者可用價格、靈敏度、重量都很合適的全極性霍爾開關(guān)作為傳感器,后者可選取原理簡單、價格便宜、體積小(相對小)、頻率響應(yīng)快、電路實現(xiàn)簡單電磁感應(yīng)線圈作為傳感器。交流電信號產(chǎn)生交變磁場,交變磁場在電感線圈中產(chǎn)生與磁場強度相關(guān)的電流。通過車前接收到的電感值來判斷路況,從而控制舵機的打角大小及拐彎時電機的差速大小。

      4.2.2 攝像頭巡線原理

      比賽的環(huán)境為在藍色背景布上鋪設(shè)白色賽道,兩者的差距十分明顯,通過使用總鉆風(fēng)灰度攝像頭采集灰度圖像,為了適應(yīng)不同場地,使用動態(tài)閾值對灰度圖像進行二值化(如圖4.12所示),而后尋找像素點由黑到白的跳變點,對跳變點的行列坐標進行運算,得到每一行的中點列坐標,通過每一行的中點列坐標與直道上的中點列坐標做差,后多行進行累加,即可以得到偏差值,通過偏差值控制舵機的打角大小及拐彎電機的差速大小。

      4.3 賽道元素處理

      4.3.1 十字處理

      在處理十字時,首先通過攝像頭尋找拐點,當(dāng)上下左右四個拐點都同時找到時,判斷為遇到十字。然后將下方兩拐點和上方兩拐點相連補線(如圖4.13所示),使進入十字的方向得以保證。當(dāng)進入十字后,下方兩拐點消失,用上方拐點和圖像最下行邊角點進行拉線,使車能夠較為平穩(wěn)的通過十字。

      4.3.2 環(huán)島處理

      環(huán)島是從十三屆開始出現(xiàn)的元素,給系統(tǒng)控制帶來了很大的困難。我們采用的是攝像頭識別并進行處理。首先,識別到下拐點和右邊線斜率在固定范圍內(nèi)時,認為進入環(huán)島;進入環(huán)島后采用狀態(tài)機進行環(huán)島各階段的補線處理,最主要的是進出拐點處的補線(如圖4.14所示)。

      4.3.3 坡道處理

      通過使用加速度計和陀螺儀來共同判斷坡道元素,將加速度計值和陀螺儀值進行卡爾曼濾波(如圖4.15所示),從而得到真實角度值,當(dāng)角度值大于一定值時,判斷當(dāng)前正在上坡,由于在上坡過程車模存在傾角,所以攝像頭可能會看到多余的干擾信息,因此在判斷到坡道之后,此時其余所有元素都被屏蔽掉,防止誤判。

      4.3.4 車庫處理

      出庫采用的是固定打角,在形式一定距離車體基本駛出車庫以后,變更為正常的攝像頭循跡。

      第一圈需要直接駛過斑馬線,故對車庫進行了補線處理,第二圈結(jié)束后要駛進車庫,為了節(jié)約時間,本系統(tǒng)沒有采用倒車入庫這種更穩(wěn)定的方式,而是直接沖入車庫,在搜索到斑馬線以后,確定斑馬線的位置,當(dāng)斑馬線位置在一定范圍內(nèi)時,使車模打固定角并行駛一定距離后,用攝像頭微調(diào)車的姿態(tài),然后識別停車。此方法的入庫姿態(tài)與車模速度的關(guān)系較大。(補線如圖4.16所示)

      4.3.5 三岔處理

      三岔路口是今年新增的元素,我們采用了總鉆風(fēng)攝像頭也是巡線的攝像頭對三岔路口進行識別,核心方法是識別岔路的兩個鈍角夾角。在第一圈識別到三叉岔路口時提前減速并停車,并識別分岔路口的數(shù)字靶牌,偶數(shù)向左,奇數(shù)向右。利用補線的方法轉(zhuǎn)向(如圖4.17所示),在出三叉的時候同樣的識別加補線。并記錄標志位以便在第二圈三岔路口時不用停下來識別直接轉(zhuǎn)向。

      4.3.6 AI任務(wù)處理

      在巡線時識別到前方路面中央有AprilTag二維碼,需要緊急剎車處理,并用OpenART對其進行智能讀取,根據(jù)二維碼對應(yīng)數(shù)字,分別在賽道左側(cè),或者右側(cè),二維碼前后50厘米范圍內(nèi)放置靶標牌。如果路邊目標牌上的圖案屬于動物類,則車模需要在二維碼所在的區(qū)域(前后50厘米)內(nèi)不少于3秒鐘,方能駛出車模停止區(qū)域。如果路邊目標牌上的圖案屬于水果類,則車模需要使用車載小型激光發(fā)射器對準靶點中心發(fā)送一束激光,激光持續(xù)一秒,激發(fā)目標靶響應(yīng)。

      4.4 控制算法

      4.4.1 PID控制

      在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制,又稱PID調(diào)節(jié)。PID控制器問世至今已有近70年歷史,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時,控制理論的其它技術(shù)難以采用時,系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個系統(tǒng)和被控對象,或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術(shù)。PID控制,實際中也有PI和PD控制。

      PID控制器是一種線性控制器,它根據(jù)給定值與實際輸出值構(gòu)成控制偏差。將偏差的比例§、積分(I)和微分(D)通過線性組合構(gòu)成控制量,對被控對象進行控制,故稱PID控制器,原理框圖如圖4.18所示。

      在計算機控制系統(tǒng)中,使用的是數(shù)字PID控制器,控制規(guī)律為:

      式中:

      k——采樣序號,k = 0,1,2…; r(k)——第k次給定值;

      c(k)——第k次實際輸出值; u(k)—— 第k次輸出控制量;

      e(k)—— 第k次偏差; e(k-1)—— 第k-1次偏差;

      KP——比例系數(shù); TI——積分時間常數(shù);

      TD——微分時間常數(shù); T——采樣周期。

      簡單說來,PID控制器各校正環(huán)節(jié)的作用如下:

      比例環(huán)節(jié):及時成比例地反映控制系統(tǒng)的偏差信號,偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,以減少偏差。

      積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強弱取決于積分時間常數(shù),越大,積分作用越弱,反之則越強。

      微分環(huán)節(jié):能反映偏差信號的變化趨勢(變化速率),并能在該偏差信號變得太大之前,在系統(tǒng)中引入一個有效的早期修正信號,從而加快系統(tǒng)的動作速度,減小調(diào)節(jié)時間。

      數(shù)字PID控制算法通常分為位置式PID控制算法和增量式PID控制算法。

      4.4.2 位置式PID

      位置式PID中,由于計算機輸出的u(k)直接去控制執(zhí)行機構(gòu)(如閥門),u(k)的值和執(zhí)行機構(gòu)的位置(如閥門開度)是一一對應(yīng)的,位置式PID控制算法的缺點是:由于全量輸出,所以每次輸出均與過去的狀態(tài)有關(guān),計算時要對過去e(k)進行累加,計算機工作量大;而且因為計算機輸出的u(k)對應(yīng)的是執(zhí)行機構(gòu)的實際位置,如計算機出現(xiàn)故障,u(k)的大幅度變化,會引起執(zhí)行機構(gòu)位置的大幅度變化,這種情況往往是生產(chǎn)實踐中不允許的,在某些場合,還可能造成嚴重的生產(chǎn)事故。

      4.4.3 增量式PID

      所謂增量式PID是指數(shù)字控制器的輸出只是控制量的增量△u(k)。當(dāng)執(zhí)行機構(gòu)需要的是控制量的增量(例如:驅(qū)動步進電機)時,可由推導(dǎo)出提供增量的PID控制算式如下:

      可以看出由于一般計算機控制系統(tǒng)采用恒定的采樣周期T,一旦確定了KP、TI 、TD,只要使用前后三次測量值的偏差,即可求出控制增量。

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

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

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

      (3) 算式中不需要累加??刂圃隽俊鱱(k)的確定僅與最近k次的采樣值有關(guān),所以較容易通過加權(quán)處理而獲得比較好的控制效果。但增量式PID也有其不足之處:積分截斷效應(yīng)大,有靜態(tài)誤差;溢出的影響大。使用時,常選擇帶死區(qū)、積分分離等改進PID控制算法。

      4.4.4 PID參數(shù)整定

      運用PID控制的關(guān)鍵是調(diào)整KP、KI、KD三個參數(shù),即參數(shù)整定。PID參數(shù)的整定方法有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計算確定控制器參數(shù);二是工程整定方法,它主要依賴工程經(jīng)驗,直接在控制系統(tǒng)的試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛采用。由于智能車系統(tǒng)是機電高耦合的分布式系統(tǒng),并且要考慮賽道的具體環(huán)境,要建立精確的智能車運動控制數(shù)學(xué)模型有一定難度,而且我們對車身機械結(jié)構(gòu)經(jīng)常進行修正,模型參數(shù)變化較為頻繁,理論計算整定法可操作性不強,最終我們采用了工程整定方法。此外,我們先后實驗了幾種動態(tài)改變PID參數(shù)的控制方法。

      4.4.5 模糊控制

      一般控制系統(tǒng)包含了五個主要部分,即:定義變量、模糊化、知識庫、邏輯判斷及反模糊化,底下將就每一部分做簡單的說明:

      定義變量:也就是決定程序被觀察的狀況及考慮控制的動作,例如在一般控制問題上,輸入變量有輸出誤差E與輸出誤差之變化率CE,而控制變量則為下一個狀態(tài)之輸入U。其中E、CE、U統(tǒng)稱為模糊變量。

      模糊化(Fuzzify):將輸入值以適當(dāng)?shù)谋壤D(zhuǎn)換到論域的數(shù)值,利用口語化變量來描述測量物理量的過程,依適合的語言值(Linguisitcvalue)求該值相對之隸屬度,此口語化變量我們稱之為模糊子集合(Fuzzysubsets)。

      知識庫:包括數(shù)據(jù)庫(Database)與規(guī)則庫(Rulebase)兩部分,其中數(shù)據(jù)庫是提供處理模糊數(shù)據(jù)之相關(guān)定義;而規(guī)則庫則藉由一群語言控制規(guī)則描述控制目標和策略。

      邏輯判斷:模仿人類下判斷時的模糊概念,運用模糊邏輯和模糊推論法進行推論,而得到模糊控制訊號。此部分是模糊控制器的精髓所在。

      解模糊化(Defuzzify):將推論所得到的模糊值轉(zhuǎn)換為明確的控制訊號,做為系統(tǒng)的輸入值。

      模糊算法可以解決一些非線性問題,將賽道分為直線、入大小彎、出大小彎、蛇形彎道,對應(yīng)的直線加速、入大彎減速轉(zhuǎn)方向、入小彎制動轉(zhuǎn)方向、出彎加速、蛇形彎道直接通過。要達到這種控制要通過實際檢測,分析大量賽道磁場信息,找出它們的特征。

      雖然模糊控制可以較好解決一些非線性問題,但控制復(fù)雜,實際調(diào)試中較PID控制無明顯優(yōu)勢。方向環(huán)采用位置式PD,雖然存在穩(wěn)態(tài)誤差,但可以快速響應(yīng);速度環(huán)控制為增量式PID,由于給定速度頻繁變化,采用微分先行PID,使電機能夠快速響應(yīng)。

      發(fā)工具使用的是IAR Embedded Workbench IDE。它能夠為i.MX RT1064單片機提供與之配套的應(yīng)用程序開發(fā)模塊。在目標程序的下載方面,通過J-Link與單片機之間的連接下載程序。IAR功能強大,界面簡潔嚴整,內(nèi)置的C編譯器編譯產(chǎn)生的代碼優(yōu)化度高,執(zhí)行效率也高。同時IAR具有強大的在線調(diào)試功能,可以充分滿足智能車軟件系統(tǒng)開發(fā)的需要。其開發(fā)界面如圖5.1所示。

      模主要參數(shù)名稱 參數(shù)

      車模類型 C車模

      車模長度 33cm

      車模寬度 22cm

      車模高度 30cm

      微控制器型號 NXP i.MX RT1064

      傳感器的種類及個數(shù) 總鉆風(fēng)攝像頭MT9V034 * 1

      OpenART * 4

      10mH電感 * 5

      陀螺儀ICM20602 * 1

      逐飛1024線光電編碼器 * 2

      轉(zhuǎn)向舵機型號 S3010

      車模后輪驅(qū)動電機型號 C車模RS380電機

      7.1 車模整體花費清單(不含耗損)

      表7.1 車模整體花費清單(不含損耗)

      物品名稱 數(shù)量 總價

      C車模(含電機、舵機) 1 565.00

      1024線帶方向光電編碼器 2 396.00

      RT1064核心板 1 199.00

      ICM20602陀螺儀 1 32.00

      2S鋰電池 1 78.00

      鋰電池充電器 1 35.00

      總鉆風(fēng)MT9V034灰度攝像頭130度 1 279.00

      130度攝像頭偏振鏡 1 14.99

      OpenMVRT(120度含32G內(nèi)存卡) 1 399.00

      OpenART mini(90度含32G內(nèi)存卡) 1 403.00

      OpenART mini(110度含32G內(nèi)存卡) 2 846.00

      KST DS215MG舵機 2 360.00

      激光發(fā)射模塊 2 14.40

      400mm空心碳素桿 1 7.90

      195mm空心碳素桿 3 14.70

      攝像頭三通連接件 7 69.30

      攝像頭鋁制固定底座 4 39.60

      光電傳感器 1 18.00

      DAP下載器 1 78.00

      1.8寸TFT顯示屏 1 34.90

      無線串口(USB端+串口端) 1 79.00

      裁判系統(tǒng) 4 1190.00

      主板 1 150.00

      云臺舵機固定板 1 0.00

      XH2.54排線6P10cm 1 0.78

      XH2.54排線8P10cm 1 1.04

      XH2.54排線3P10cm 1 0.39

      XH2.54排線4P20cm 4 2.24

      總價 5307.24

      7.2 耗損清單

      表7.2 損耗清單

      物品名稱 數(shù)量 總價

      2S鋰電池 3 234.00

      鋰電池充電器 1 35.00

      攝像頭FPC軟排線300mm 5 1.70

      XH2.54排線6P10cm 5 3.90

      XH2.54排線8P10cm 5 5.20

      XH2.54排線3P10cm 5 1.95

      XH2.54排線4P20cm 10 5.60

      C車輪胎 4 40.00

      齒輪油 1 4.50

      軸承潤滑油 1 8.50

      輪胎軟化劑 1 25.00

      標靶(動物+水果+數(shù)字) 1 875.00

      RT1064核心板 1 199.00

      S3010舵機 1 135.00

      主板 1 250.00

      電磁板 1 100.00

      云臺舵機固定板 1 0.00

      總價 1924.35

      石鈺瑩

      1)硬件電路設(shè)計與繪制

      2)車模機械結(jié)構(gòu)設(shè)計與安裝

      武錦輝

      1)賽道元素識別提取

      2)車模運動PID調(diào)參

      3)AI任務(wù)控制部署

      龍俊旺

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

      2)建立數(shù)據(jù)庫

      3)配置AI神經(jīng)網(wǎng)絡(luò)模型

      [1] 邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社.2004.

      [2] 余志生.汽車理論.北京:機械工業(yè)出版社.2012.

      [3] 卓晴,黃開勝,邵貝貝.學(xué)做智能車:挑戰(zhàn)“飛思卡爾”杯.北京:北京航空航天大學(xué)出版社,2007.

      [4] 童詩白,華成英.模擬電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2001.

      [5] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2000.

      [6] 譚浩強.C程序設(shè)計.北京:清華大學(xué)出版社,2003.

      [7] 尹勇.Protel DXP電路設(shè)計入門與進階[M].北京:科學(xué)出版社,2004.

      [8] 尹怡欣,陶永華.新型PID控制及其應(yīng)用.北京:機械工業(yè)出版社,1998.

      [9] 李太福,基于在線參數(shù)自整定的模糊PID伺服控制系統(tǒng)[J].交流伺服系統(tǒng),2005.4:203~215.

      [10] 盧京潮.自動控制原理[M].北京:清華大學(xué)出版社,2013:1-211.

      [11] 陳啟軍,余有靈,張偉,潘登,周偉.嵌入式系統(tǒng)及其應(yīng)用[M].上海:同濟大學(xué)出版社,2015:30-80.

      [12] 劉建昌,關(guān)守平,周瑋等.計算機控制系統(tǒng)[M].北京:科學(xué)出版社,2019:1-40.

      ■ 附錄A:電路原理圖

      ■ 附錄B:程序源代碼

      01 #include "headfile.h" 02 #include "All_def.h" 03 04 //主函數(shù) 05 int main(void) 06 { 07 All_init(); 09 while (1) 10 { 11 //此處編寫需要循環(huán)執(zhí)行的代碼 12 if(mt9v03x_csi_finish_flag) 13 { 14 mt9v03x_csi_finish_flag = 0; 15 In_Camera(); 16 In_Key(); 17 In_Ele(); 18 GetLine(); 19 20 In_AI(); 21 Control(); 22 Out_Servo(); 23 Out_Motor(); 24 Out_Wireless(); 25 if(sw1_flag == 1) 27 Out_TFT(); 29 } 30 } 31 } 44 /*****電機Out_Motor.c*****/ 45 #include "headfile.h" 46 #include "All_def.h" 47 48 int motor1,motor2; 49 50 int Limit_motot(int PWM, int MAX, int MIN) 51 { 52 if(PWM>MAX) 53 PWM = MAX; 54 if(PWM0) 62 { 63 pwm_duty(MOTOR1_A_PIN, motor1); 64 pwm_duty(MOTOR1_B_PIN, 0); 65 } 66 else 67 { 68 pwm_duty(MOTOR1_A_PIN, 0); 69 pwm_duty(MOTOR1_B_PIN, -motor1); 70 } 71 72 if(motor2>0) 73 { 74 pwm_duty(MOTOR2_A_PIN, motor2); 75 pwm_duty(MOTOR2_B_PIN, 0); 76 } 77 else 78 { 79 pwm_duty(MOTOR2_A_PIN, 0); 80 pwm_duty(MOTOR2_B_PIN, -motor2); 81 } 82 } 83 84 void Out_Motor() 85 { 86 motor1 = Limit_motot(voltageL,50000,-50000); 87 motor2 = Limit_motot(voltageR,50000,-50000); 88 motor_ctr(); 89 } 90 #include "headfile.h" 91 #include "All_def.h" 92 93 int motor1,motor2; 94 95 int Limit_motot(int PWM, int MAX, int MIN) 96 { 97 if(PWM>MAX) 98 PWM = MAX; 99 if(PWM

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      ● 相關(guān)圖表鏈接:

      圖1.1 選擇三岔路口任務(wù)示意圖

      圖1.2 路邊目標識別與定位任務(wù)示意圖

      圖1.3 系統(tǒng)框架圖

      圖2.1 智能車整體機械布局圖

      圖2.2 云臺ver.1

      圖2.3云臺ver.2

      圖2.4 云臺ver3

      圖2.5 激光器固定件

      圖2.6 云臺安裝

      圖2.7 電池與PCB版安裝

      圖3.1 NXP i.MX RT1064核心板

      圖3.2 電源管理系統(tǒng)

      圖3.3 攝像頭模塊接口原理圖

      圖3.4 OpenART模塊接口原理圖

      圖3.5 OpenMV模塊接口原理圖

      圖3.6編碼器測速模塊接口原理圖

      圖3.7陀螺儀模塊接口原理圖

      圖3.8 電機驅(qū)動模塊原理圖

      圖3.9 人機交互模塊

      圖3.10 蜂鳴器模塊

      圖3.10 蜂鳴器模塊

      圖4.1 選擇三岔路口任務(wù)示意圖

      圖4.2 路邊目標識別與定位任務(wù)示意圖

      圖4.3 3層卷積+1層全連接的簡單卷積神經(jīng)網(wǎng)絡(luò)模型

      圖4.4 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練界面

      圖4.5 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練導(dǎo)出文件

      圖4.6 nncu工具量化參數(shù)界面

      圖4.7 數(shù)字模型訓(xùn)練數(shù)據(jù)庫

      圖4.8 數(shù)字識別效果圖

      圖4.9 AprilTag識別效果圖

      圖4.10 動植物模型訓(xùn)練數(shù)據(jù)庫

      圖4.11 動植物識別效果圖

      圖4.12 灰度圖像二值化效果圖(左:二值化前,右:二值化后)

      圖4.13 十字斜率補線效果圖

      圖4.14 環(huán)島補線處理

      圖4.15 卡爾曼濾波效果圖(黃線:濾波前,紅線:濾波后)

      圖4.16 車庫處理效果圖

      圖4.17三岔補線效果圖(左圖:向左補線,右圖:向右補線)

      圖4.18 PID控制器原理框圖

      圖5.1 IAR開發(fā)界面

      硬件開發(fā)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:敏捷與教練相得益彰
      下一篇:萬字長文探討可信構(gòu)架之道(下)
      相關(guān)文章
      亚洲色无码专区在线观看| 亚洲经典千人经典日产| 一本色道久久88—综合亚洲精品 | 亚洲国产成人精品女人久久久 | 国产亚洲一区二区在线观看 | 国产精品亚洲高清一区二区| 亚洲成aⅴ人片久青草影院| 国产精品亚洲专区一区| 亚洲毛片免费观看| 亚洲一区二区三区首页| 久久久久亚洲精品无码蜜桃| 亚洲黄色中文字幕| 亚洲精品国产免费| 亚洲伦理中文字幕| 亚洲一区AV无码少妇电影| 亚洲中文字幕久久精品蜜桃| 中文文字幕文字幕亚洲色| 亚洲日韩AV无码一区二区三区人| 亚洲色欲色欲www在线播放| 亚洲av永久无码精品秋霞电影秋 | 中文字幕在线观看亚洲日韩| 中文字幕乱码亚洲无线三区| 亚洲熟妇无码av另类vr影视| 亚洲AV成人一区二区三区观看 | 亚洲国产综合AV在线观看| 亚洲成av人片在www鸭子| 亚洲AV成人一区二区三区观看| 日韩精品成人亚洲专区| 亚洲色图.com| 香蕉大伊亚洲人在线观看| 亚洲电影在线免费观看| 亚洲jjzzjjzz在线观看| 亚洲老熟女五十路老熟女bbw| 亚洲av成人无码网站…| 亚洲毛片不卡av在线播放一区 | va天堂va亚洲va影视中文字幕| 中文字幕在线观看亚洲视频| 久久精品国产亚洲AV电影网| 91亚洲性爱在线视频| 亚洲一区二区三区成人网站| 天天综合亚洲色在线精品|