張楊揚 葉金宇 劉昌杰 盧政 沈志 陸夢雪
摘要:汽車自動駕駛技術(shù)是當前非常熱門的技術(shù),眾多科技工作者相信在將來汽車自動駕駛技術(shù)將會普及開來,出現(xiàn)在每一個普通大眾的視野中。自動駕駛離不開電子通信和計算機技術(shù)的支持,如傳感器、大數(shù)據(jù)技術(shù)等。本文利用攝像頭傳感器,GPS傳感器,電磁傳感器,陀螺儀等設(shè)計了自動循跡的兩輪平衡小車,實現(xiàn)自動巡航功能。
關(guān)鍵詞:自動駕駛;GPS傳感器;平衡車;MPU6050
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)28-0001-03
Abstract:Autonomous driving technology is currently a very popular technology. Many scientific and technological workers believe that autonomous driving technology will be popularized and appear in the eyes of every ordinary public in the future. Autonomous driving is inseparable from the support of electronic communication and computer technology, such as sensors and big data technology. In this paper, a two-wheel balance car with automatic tracking is designed by using camera sensors, GPS sensors, electromagnetic sensors, gyroscopes, and so on,to achieve the automatic cruise function.
Key words: automatic driving;GPS sensor; balance car;MPU6050
1 引言
本文設(shè)計的GPS兩輪平衡車是對無人駕駛技術(shù)的仿真設(shè)計,可以做到啟動無須人為干涉就能達到平穩(wěn)安全運行的目的。該技術(shù)可用于無人駕駛和輔助駕駛系統(tǒng),減少交通事故的發(fā)生率,保障車主的安全。設(shè)計中使用的傳感器主要有MPU6050姿態(tài)傳感器,GPS定位傳感器,攝像頭道路識別傳感器等,通過對這些傳感器采集的數(shù)據(jù)進行處理,來控制左右電機的速度從而控制車輛的運行狀態(tài),達到預期的設(shè)計目的。本設(shè)計的思路與方法都融入了無人駕駛的設(shè)計思想,對無人駕駛技術(shù)的研究與發(fā)展極具參考意義[1]。
2 系統(tǒng)的硬件設(shè)計
硬件部分系統(tǒng)的主控處理器采用的是飛思卡爾公司的32位處理器MK60DN512[2]。該處理器的功能十分強大,外設(shè)豐富,能夠滿足數(shù)據(jù)采集,運算與輸出任務(wù)的要求。系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
2.1 MPU6050車輛姿態(tài)獲取
MPU6050是一種姿態(tài)獲取傳感器。該處理器可以獲取3軸加速度和3軸角速度,通過特定的姿態(tài)處理算法可以獲取設(shè)備當前的航向角,俯仰角和橫滾角。該傳感器內(nèi)部還帶有一個數(shù)字溫度傳感器,可以用來做溫度補償算法,以達到數(shù)據(jù)校準目的,減小實際測量中的細小誤差,使得測量結(jié)果更加準確。MPU6050傳感器可以用于航空航天,無人機技術(shù),平衡車技術(shù)等。其使用的通信接口是比較常見的IIC接口,通過數(shù)據(jù)線和時鐘線可以實現(xiàn)與MCU通信,獲取相關(guān)數(shù)據(jù)。由于姿態(tài)獲取是一個非常煩瑣,算法復雜的步驟,因此這里借助了第三方庫來幫助獲取姿態(tài)數(shù)據(jù),以達到更快應(yīng)用開發(fā)目的。圖2和圖3分別為MPU-6050實物圖和原理圖。
2.2 ATGM332D北斗定位模塊
本次設(shè)計中使用了ATGM332D北斗和GPS雙模定位模塊,該模塊具有成本低,體積小等諸多優(yōu)點,多用于車載定位系統(tǒng),可穿戴設(shè)備等生活中的方方面面。該模塊自帶一個陶瓷天線,由于陶瓷天線接收效率相比較有源天線接收效率差許多,這次設(shè)計我們使用了有源天線,來完成數(shù)據(jù)接收,實現(xiàn)精確定位。通過模塊輸出的數(shù)據(jù)可以獲取北京時間、經(jīng)緯度、海拔高度、速度和航向等常用的基本信息,還可以獲取當前的定位質(zhì)量和定位模式、連接的GPS系統(tǒng)衛(wèi)星數(shù)量和北斗系統(tǒng)衛(wèi)星數(shù)量。這樣處理以后數(shù)據(jù)更加的直觀。圖4為定位模塊與單片機引腳連接圖,圖5為定位模塊電路圖。
2.3 測速模塊
本設(shè)計中使用的測速模塊是FC接口的迷你512線編碼器,旋轉(zhuǎn)360度輸出512個脈沖,編碼器有6個輸出引腳,分別為VCC,GND,A相輸出,零位輸出,方向輸出和NC輸出。設(shè)計中我們用到了VCC,GND,A相輸出和方向輸出,通過方向輸出引腳可以判斷編碼器的旋轉(zhuǎn)方向,據(jù)此判斷出車輛的運行方向。編碼器的實物圖和接口示意圖如下。圖6為編碼器實物圖,引腳電平信號輸出如圖7所示。
2.4攝像頭采集模塊
攝像頭傳感器采用的是山外120度鷹眼攝像頭模塊,原始圖像通過若干邏輯器件處理后變?yōu)?和1數(shù)值組合的黑白圖像,極大減輕運算量,效果出眾[3]。通過對攝像頭模塊設(shè)置,鷹眼輸出可高達150幀,采集時間更短。感光芯片采用BGA封裝OV7725低照度超好,圖像清晰,3.3V的工作電壓,低壓低功耗。該模塊完全兼容飛思卡爾MK60DN512芯片。攝像頭實物如圖8所示,引腳接口如圖9所示。
3 系統(tǒng)的軟件設(shè)計
3.1 MPU6050的數(shù)據(jù)獲取與處理
通過MCU可以讀出MPU6050的三軸加速度數(shù)據(jù)和三軸角速度數(shù)據(jù),但是實際使用中并不會用這些原始數(shù)據(jù)來控制平衡車的姿態(tài)。實際使用中需要的數(shù)據(jù)是姿態(tài)數(shù)據(jù),即三軸偏角,相對于地理坐標系的X軸、Y軸和Z軸的偏角。通過這三個軸的偏角,可以得到當前平衡車的姿態(tài),從而對其加以控制。要想得到三軸偏角,首先需要獲取姿態(tài)傳感器的原始數(shù)據(jù),通過算法對原始數(shù)據(jù)進行姿態(tài)解析,獲取三軸偏角。由于這一過程的實現(xiàn)復雜而煩瑣,工作量較大,涉及的知識點也較難,我們選擇使用第三方姿態(tài)解析庫來獲取三軸偏角。姿態(tài)解析庫內(nèi)置于該款傳感器,自帶數(shù)據(jù)運算處理功能,不需要使用到MCU,該過程可以理解為DMA,由于不消耗CPU資源,因此處理器有時間去處理其他實時性更高的運算,加快系統(tǒng)的實時響應(yīng)速度。其中俯仰角用于平衡車直立穩(wěn)定的控制,航向角用于輔助車輛轉(zhuǎn)向的控制,采用PID控制算法[4],能夠滿足設(shè)計要求。
3.2 ATGM332D北斗定位模塊數(shù)據(jù)獲取
定義模塊采用的是串口通信[5],利用MK60DN512的串口3與模塊連接,借助內(nèi)存管理算法向單片機動態(tài)申請內(nèi)存來存儲接收到的定位數(shù)據(jù),然后通過SPI接口驅(qū)動內(nèi)存卡,把每次采集到的定位信息存儲于內(nèi)存卡中,形成一個完整的運行路徑。定位模塊的數(shù)據(jù)如下:
$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48
$GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C
$GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E
$BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24
$GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71
$GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F
$GPGSV,3,3,09,32,42,334,*43
$BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A
$GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,141216,,,A*75
$GNVTG,292.44,T,,M,0.53,N,0.98,K,A*2D
$GNZDA,084852.000,14,12,2016,00,00*48
$GPTXT,01,01,01,ANTENNA OK*35
進行簡要的分析,這里我們只解讀幾個重要的數(shù)據(jù):
(1)天線狀態(tài)輸出:$GPTXT,01,01,01,ANTENNA OK*35,Ok 代表天線已經(jīng)檢測到,open 代表天線斷開;
(2) GPS定位信息:$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7;
(3) 地理定位信息:$GPGLL,2236.9453,N,11408.4790,E,084852.000。
軟件設(shè)計中需要先查看天線狀態(tài)是否正常,當天線狀態(tài)正常后,接收到的數(shù)據(jù)才是有效數(shù)據(jù),然后存入到內(nèi)存卡管理。重復行進的路段可以通過讀取內(nèi)存卡的定位數(shù)據(jù)來進行預處理,從而達到更好地控制效果。
3.3 車輛速度參數(shù)獲取
本設(shè)計中使用MK60DN512處理器內(nèi)部正交解碼外設(shè),設(shè)置讀取周期讀取正交解碼脈沖計數(shù)寄存器就可以獲取單位時間內(nèi)的脈沖數(shù)。對于512編碼器而言,讀取的數(shù)據(jù)除以512就可以獲取到車輛單位時間內(nèi)的輪胎轉(zhuǎn)速即車輛運行速度。另外為了精準的控制讀取速度,軟件中采用定時器周期性讀取,定時時間為20ms,定時器優(yōu)先級為最高。這樣可以防止在讀取速度時被其他優(yōu)先級更高的中斷打斷,從而造成速度的誤差,不利于控制車輛的穩(wěn)定運行。速度的計算公式如下:
V = (正交解碼通道值/512) × (1/定時時間) ×輪胎周徑 (m/s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
程序的設(shè)計思想來源于公式(1)。速度穩(wěn)定控制采用PID算法和模糊控制算法來實現(xiàn),在實際應(yīng)用中我們發(fā)現(xiàn)添加模糊控制算法使得運動控制效果更佳,但同時增加程序調(diào)試難度。
3.4 速度輸出控制
本設(shè)計采用的機械結(jié)構(gòu)是2輪直立平衡車,全車的運行主要依賴于2個電機的旋轉(zhuǎn)。左右電機轉(zhuǎn)速相同可以使車輛保持直線行駛,左右電機速度有差異就可以實現(xiàn)對車輛的轉(zhuǎn)向控制。通過MK60DN512處理器的PWM輸出通道控制電機的速度,使用4路PWM波完成電機的轉(zhuǎn)速與轉(zhuǎn)向,采用PID算法控制。PWM1和PWM2控制左電機,PWM3和PWM4控制右電機,具體控制情況如下:
3.5 人機界面設(shè)計
本次設(shè)計中采用0.96寸OLED顯示屏,在實際測試使用中發(fā)現(xiàn)該款屏幕無法顯示攝像頭采集的圖像,因此攝像頭采集的圖像通過無線串口上傳給上位機,OLED屏幕上只顯示一些基本的采集參數(shù)和調(diào)試參數(shù),方便用戶直觀的判斷車輛當前的工作狀態(tài)。
4 系統(tǒng)調(diào)試設(shè)計
4.1 USMART參數(shù)調(diào)試
本設(shè)計無線調(diào)參軟件設(shè)計功能非常強大,代碼量也非常多,在這里只簡單介紹一下基本原理,思路與使用技巧:
(1) USMART是一種專為微處理器MCU開發(fā)的一種命令調(diào)試工具[6],可以實時修改系統(tǒng)參數(shù),無須重新下載程序就可以改變設(shè)計效果,加快開發(fā)速度,也減少重復下載程序的煩瑣過程,減少Flash的使用量,增加MCU的使用時間。具體工作過程是通過串口發(fā)送命令給單片機,然后單片機收到命令之后調(diào)用單片機里面對應(yīng)的相關(guān)函數(shù),并執(zhí)行,同時支持返回結(jié)果。
(2) USMART調(diào)試過程。串口調(diào)試助手發(fā)送函數(shù)命令Usmart_change_data(26,3000,200);單片機接收到命令之后,解析命令,調(diào)用對應(yīng)的函數(shù)Usmart_change_data(26,3000,200);執(zhí)行函數(shù):Usmart_change_data(26,3000,200)。
(3)USMART文件組。usmart.c負責接收串口的數(shù)據(jù),usmat_str.c負責串口發(fā)送數(shù)據(jù)的函數(shù)名提取和函數(shù)參數(shù)解析,usmart_config.c負責管理系統(tǒng)函數(shù)。
(4) USMART系統(tǒng)命令。USMART有7個系統(tǒng)命令,主要包括:help獲取幫助信息、list可用的函數(shù)列表、id:可用函數(shù)的ID列表、hex參數(shù)16進制顯示、dec參數(shù)10進制顯示、runtime開啟關(guān)閉函數(shù)運行計時。
所有用戶需要調(diào)用調(diào)試函數(shù)都需要在usmart_config.c中聲明,聲明后的函數(shù)即可被調(diào)用。
4.2 參數(shù)掉電保存
參數(shù)掉電保存的目的是把調(diào)試參數(shù)放在掉電不丟失的存儲器件中,比如單片機系統(tǒng)常用的存儲芯片AT24C02,W25Q64等。由于MK60DN512處理器芯片的Flash具有存儲功能,因此可以把系統(tǒng)參數(shù)保存在Flash里,當系統(tǒng)第一次開機時先讀取Flash里面的參數(shù),然后再修改單片機RAM里面的系統(tǒng)參數(shù),這樣就可以避免反復下載程序的煩瑣操作。實現(xiàn)USMART修改參數(shù)需要在USMART調(diào)用的函數(shù)中加入Flash寫操作函數(shù),因此可以把USMART調(diào)試的參數(shù)寫入到Flash中,下次開機時可以直接讀取執(zhí)行,方便程序調(diào)試。
5 結(jié)語
本設(shè)計采用MK60DN512處理器為核心控制芯片,完成了兩輪直立自動循跡小車的設(shè)計,符合設(shè)計要求。在設(shè)計中添加了一些方便用戶使用的調(diào)試軟件設(shè)計,采用USMART調(diào)試和Flash參數(shù)保存來減少煩瑣的操作,MK60DN512處理器負責對各模塊的數(shù)據(jù)進行處理,兩輪直立循跡車運行穩(wěn)定,可靠性較高,具有一定的實踐指導意義。
參考文獻:
[1] 高奇琦.共享智能汽車對未來世界的影響[J].人民論壇·學術(shù)前沿,2017(20):39-47.
[2] 閆琪.智能車設(shè)計"飛思卡爾杯"從入門到精通[M].北京:北京航空航天大學出版社,2014.
[3]王慶有.圖像傳感器應(yīng)用技術(shù)(第2版)[M].北京:電子工業(yè)出版社,2013.
[4] 王祎晨.增量式PID和位置式PID算法的整定比較與研究[J].工業(yè)控制計算機,2018,31(5):123-124.
[5] 張毅剛.單片機原理及接口技術(shù)(C51編程)[M]. 北京:人民郵電出版,2016.
[6]譚浩強.C程序設(shè)計(第五版)[M].北京:清華大學出版社,2017.
【通聯(lián)編輯:王力】