“火線救援”智能車
作者:2016級(jí)王廣晗 精儀系;范雨晗 自動(dòng)化系
指導(dǎo)老師:無(wú)
關(guān)鍵詞: 電子設(shè)計(jì)大賽 自主導(dǎo)航 多傳感器
摘要
這輛智能車是第21屆“商湯杯”清華大學(xué)電子設(shè)計(jì)大賽“火線救援”的參賽作品之一,獲得一等獎(jiǎng)(第二名)。該車具有全向平移能力,裝備多種傳感器,能夠前往任意給定坐標(biāo),在黑色網(wǎng)格線迷宮內(nèi)進(jìn)行循跡、避障、路徑規(guī)劃等。
硬件組成
圖1 小車整體
小車整體結(jié)構(gòu)為常見(jiàn)于智能車中的多層亞克力板-銅柱結(jié)構(gòu)。動(dòng)力為4個(gè)37GB520減速電機(jī),空載轉(zhuǎn)速500r/min,帶有編碼器測(cè)速。4個(gè)麥克納姆輪讓小車具有平面內(nèi)任意移動(dòng)的能力。電源為3s動(dòng)力鋰電池。
小車具有多種傳感器。4個(gè)OpenMV攝像頭分別位于小車的前后左右,用于四個(gè)方向的循跡。6個(gè)紅外光電開(kāi)關(guān)用于檢測(cè)周圍的墻壁,實(shí)現(xiàn)避障。8個(gè)紅外對(duì)管用于統(tǒng)計(jì)循跡中走過(guò)的格數(shù)。高精度陀螺儀用于測(cè)量yaw角度。
小車主控為基于STM32F103RC單片機(jī)的開(kāi)發(fā)板,集成了編碼器、電機(jī)驅(qū)動(dòng)和穩(wěn)壓功能。ZigBee模塊用于與裁判上位機(jī)通信獲取坐標(biāo)信息,無(wú)線燒錄器和藍(lán)牙模塊用于調(diào)試。由于傳感器數(shù)量較多,還有一塊輔助STM32F103C8單片機(jī),和額外的DC-DC供電模塊等。
圖2 主要部件大致空間分布
底層硬件
傳感器數(shù)量很多,接口各異,如果全部連接到主控STM32上,由于開(kāi)發(fā)板引腳沒(méi)有全部引出,GPIO和通信接口的數(shù)量不夠。因此增加一塊輔助STM32單片機(jī),用于接收ZigBee(UART),陀螺儀(CAN),4個(gè)OpenMV(UART,PWM)的數(shù)據(jù),每20ms發(fā)給主控STM32。而對(duì)實(shí)時(shí)性要求較高的電機(jī)、編碼器、光電開(kāi)關(guān)、紅外對(duì)管,以及調(diào)試用的藍(lán)牙模塊,則連接到主控STM32上。
圖3 各部件電氣連接
利用編碼器,電機(jī)具有PID速度環(huán),再結(jié)合麥克納姆輪的運(yùn)動(dòng)方式,可實(shí)現(xiàn)直接控制小車的前后速度y,左右速度x,自轉(zhuǎn)速度r。
上層邏輯
本次電設(shè)的任務(wù)大體分為兩塊,其一是要在外圍區(qū)域依賴上位機(jī)給出的位置信息,實(shí)現(xiàn)自主行走,其二是要在內(nèi)部不依賴位置信息,實(shí)現(xiàn)循跡避障穿過(guò)迷宮到達(dá)指定位置。
圖4 比賽場(chǎng)地及裁判上位機(jī)界面
邏輯控制主要依賴狀態(tài)機(jī)變量和switch語(yǔ)句,每20ms執(zhí)行一次。如果當(dāng)前在外場(chǎng)且方向不朝著下一個(gè)點(diǎn),就轉(zhuǎn)過(guò)去,轉(zhuǎn)的方向?qū)α司妥哌^(guò)去,快到了減速,到了再轉(zhuǎn),以此類推;如果進(jìn)了迷宮,每次紅外對(duì)管判斷要到交叉點(diǎn)時(shí)就減速,到了就讀取一次障礙信息并進(jìn)行一次基于Dijkstra算法的路徑規(guī)劃,根據(jù)返回的結(jié)果判斷應(yīng)該前進(jìn)?后退?左轉(zhuǎn)?右轉(zhuǎn)?掉頭?左平移?右平移?,下次就進(jìn)入相應(yīng)狀態(tài),如果無(wú)事發(fā)生,就執(zhí)行一次循跡位置環(huán)和角度環(huán),位置環(huán)決定小車垂直于黑線的速度,角度環(huán)決定小車角速度。
外部鏈接:源代碼https://github.com/wanggh16/EDC2019