楚士杰 朱厚圣 吳潔瓊
摘? ?要:隨著無人駕駛技術的持續(xù)發(fā)展,各高校和科學研究院也在積極鼓勵學生投入到自主循跡智能車的研究當中。文章所研究的智能車以K60單片機為核心控制系統(tǒng),利用電磁傳感器輔助完成循跡和轉向,再配合其余多種傳感器的信號采集,可以進行避障和三輪與二輪之間的狀態(tài)轉換。依靠PID算法完成智能車的自動控制,使智能車的系統(tǒng)能靈活變換,適應各種跑道。綜合以上所設計的智能車,不僅能夠穩(wěn)定行駛,同時具備避障和變形等功能。
關鍵詞:K60單片機;循跡;避障;自動控制
近幾年,人工智能是科技革新的主要方向,多種人工智能產品已經走進了人們的生活。隨著人工智能的應用,未來幾年內無人駕駛汽車有望成為人們出行的主要方式。智能車是無人駕駛汽車的雛形,其設計內容涵蓋了模式識別、傳感技術和汽車電子等多方面學科的知識,對無人駕駛汽車的研究有重要意義,對科學技術的革新具有良好的推動作用。
1? ? 智能車的基本結構
1.1? 主要部件介紹
智能車以“恩智浦”智能汽車競賽官方提供的F車模為研究平臺,主要部件有主板和傳感器。核心板使用的是K60單片機芯片。主控制板是人工操作的平臺,包含電機開關、穩(wěn)壓模塊、電機驅動模塊、傳感器模塊等,其中電機驅動模塊由輪胎和電機組成。傳感器包括電磁傳感器、紅外傳感器、灰度傳感器和速度傳感器。電磁傳感器可識別跑道的延伸方向,其作用相當于人類的“眼睛”,是智能車直行或轉向的唯一判斷依據(jù)。紅外傳感器可測量與前方障礙的距離,用來在一定范圍內識別跑道前方路障?;叶葌鞲衅饔糜谧R別跑道上的斷路層,判斷道路元素是否發(fā)生變化。速度傳感器可實時獲得智能車的行駛速度,從而進行速度反饋調節(jié),實現(xiàn)閉環(huán)控制,使其不斷趨向預期速度。
1.2? 智能車的搭建
智能車各部分擺放位置對其各種功能的實現(xiàn)有很大影響,既要考慮三輪行駛狀態(tài),還要考慮二輪行駛狀態(tài)。電磁傳感器需靠前放置,可提前識別跑道并且及時處理。電池和主控板的放置要能夠使智能車重心低且集中,所以在安裝后輪胎的中心位置。車身不宜過重,方便實現(xiàn)靈活轉向和穩(wěn)定直立。輪胎需要經常打磨,增大與跑道間的摩擦力,能夠有效避免轉向過程中發(fā)生側滑。良好的智能車搭建結構是其能在跑道上順暢行駛的保障。
2? ? 硬件設計方案
智能車硬件系統(tǒng)包括多個模塊,每個模塊工作需要相互協(xié)調且互不干擾。
2.1? 最小系統(tǒng)板
最小系統(tǒng)板使用MK60DN512Z(本文統(tǒng)稱K60),系統(tǒng)頻率100 MHz,可實現(xiàn)穩(wěn)定超頻,由3.3 V電壓供電。具有IEEE 1588以太網(wǎng)、高速USB2.00IG硬件解碼能力和干預發(fā)現(xiàn)能力。高容量的K60單片機帶有一個可選擇的單精度浮點處理單元、一個NAND閃存控制單元以及一個DRAM控制器。該單片機共有144個引腳,具有普通I/O口、A/D轉換模塊、脈沖寬度調制(Pulse Width Modulation,PWM)模塊、中斷模塊、串口通信模塊,可以完成復雜功能,實現(xiàn)對信號的分析、判斷、決策和處理。
2.2? 電機驅動
電機驅動是控制智能車行駛的基礎模塊。智能車需要兩個電機,每個電機接兩個驅動芯片,共采用4個集成電機驅動芯片(BTN7971B),此芯片穩(wěn)定性好,抗干擾能力強,符合智能車電機驅動的要求。驅動芯片正常工作電壓為5 V,使能端為高電平正常工作,每個電機需要兩個BTN7971B芯片組成大電流H橋式驅動電路,電流的流向可以驅動電機朝某一方向轉動。兩個輸出口與電機連接,兩端的電壓差控制了輪胎轉動。
2.3? 穩(wěn)壓模塊
智能車的核心板和電機驅動分別需要3.3 V和5 V供電,而智能車采用7.2 V可充電電池。為滿足核心板和電機驅動的要求,需要使用兩個穩(wěn)壓電路。7.2 V電壓通過LM2940芯片和LM2937芯片即可以轉化為所需要的5 V和3.3 V電壓。
2.4? 電磁傳感模塊(六路運放)
智能車的循跡依靠電磁傳感器采集電磁信號,前瞻伸長20 cm左右,兩側橫向放置兩個電磁傳感器,中間八字形放置兩個電磁傳感器(電感一定要對稱放置)。電磁傳感器由多重線圈組成,可感應跑道中央放置的電磁線產生的變化磁場,通過A/D轉換產生可視化數(shù)值,可在跑道的不同位置檢測到不同的電感值。當兩側電感數(shù)值相同時,智能車沿直線行駛;遇到彎道時,兩側電感會出現(xiàn)差值,智能車會向電感值較大的一側偏轉,以達到兩側電感值相同。內八字電感可用來識別復雜的道路元素,比如環(huán)形跑道等。
2.5? 主控板
主控板是一塊印刷電路板(Printed Circuit Board,PCB),包括核心板、5 V穩(wěn)壓、3.3 V穩(wěn)壓、電機驅動、開關模塊、按鍵控制模塊和有機發(fā)光半導體(Organic Light-Emitting Diode,OLED)顯示屏。是所有硬件模塊的載體,且各種傳感器識別檢測到的信號都依靠主控板傳遞到核心板。其中,OLED顯示屏可直觀顯示所需要檢測的數(shù)據(jù),是實現(xiàn)人機交互的重要載體。
制作智能車的初期任務是繪制PCB。本研究設計PCB板長10 cm,寬7.5 cm。正面放置穩(wěn)壓模塊、最小系統(tǒng)板、開關、按鍵和OLED顯示屏,反面放置電機驅動。正反面結合的設計節(jié)省了PCB的面積,布局合理,層次清晰。
3? ? 軟件設計方案
3.1? PID算法簡介
本次研究的智能車的循跡和速度控制等都需要在動態(tài)中連續(xù)地檢測調節(jié),所以軟件設以PID算法為核心。PID算法按偏差的比例(P)、積分(I)和微分(D)進行動態(tài)控制的自動控制器,是連續(xù)系統(tǒng)動態(tài)品質校正的一種有效方案。
PID算法基于反饋系統(tǒng),將反饋值與預設值進行比較,根據(jù)偏差值的大小對輸入進行調節(jié),達到反饋值與預設值無限接近的目的。PID算法因其控制原理成熟、參數(shù)易于調節(jié)、使用簡單,在自動化方面得到了廣泛應用。
3.2? 直立方案
智能車的直立狀態(tài)類似鐘擺的垂直位置,穩(wěn)定直立位置稱為“機械零點”。當智能車脫離機械零點時會因受到重力的影響前傾或者后仰,因此必須獲得智能車在機械零處的傾角,通過輪胎的正反轉使其保持在平衡位置。智能車的直立實質上是動態(tài)直立。通過陀螺儀檢測角速度。
車模角速度;
car_speed=(float)( (GYRO_X-Gyro_X_Offset)*xishu);
車模傾角:
car_angle=car_g+car_error*xishu1;
直立控制代碼實現(xiàn)為:
PID_ANGLE.OUT= (E-car_g)*P+(GYRO_X-Gyro_X_Offset)*D;
E是機械零點位置處傾角值,P為傾角參數(shù),D為角速度參數(shù)。先將D設為零,調P至車??勺孕兄绷ⅲ擒嚿頃⑽⒍秳?,再調節(jié)D消去車身抖動,P和D反復增減調節(jié)可找到一組最合適的參數(shù)。車模直立控制和速度控制是相互約束的,在調節(jié)直立時不宜太硬或太軟,否則會導致速度不可控等問題。
3.3? 循跡
智能車循跡是智能車自動沿電磁線方向行駛,該部分主要說明智能車的方向控制。對電感多次采集的數(shù)值用滑動平均濾波處理后可得到穩(wěn)定的數(shù)值,根據(jù)兩端電感值可以判斷智能車在跑道的位置。兩側電感的差值越大,左右輪胎的差速也就越大。轉向代碼如下:
DError = (float)(ad[3] - ad[0])/(ad[0]+ad[3]);
DControlOut=(int)(DError*KP+DError_dot*KD);
利用PID算法處理,即使是連續(xù)彎道也能保持轉向的穩(wěn)定性。DError是兩側電感的差比和,DControlOut是轉向控制變量,將DControlOut關聯(lián)到PWM輸出值上,即可改變加到電機驅動上的電壓占空比,改變兩側輪胎的轉速,使車模朝電感值大的方向偏轉。當車模尋找到兩側電感相同的位置時,停止偏轉,微調后繼續(xù)按電磁線行駛。使用P,D調節(jié),KP值影響轉向的早或晚,KD用于微調,且KD不得大于KP值,研究時需要多次實驗找到轉向效果最好的一組參數(shù)。
3.4? 速度控制
速度控制分3個步驟:檢測當前速度,比較當前車速與預設速度,加速或減速。該階段研究用編碼器測速,編碼器與車輪同步轉動,根據(jù)脈沖數(shù)和輪胎周長可測得車模當前速度。采用增量式PID算法。車模速度受直立和轉向兩大系統(tǒng)影響較大,這些因素影響速度上限,因此需在其他因素合適情況下調節(jié)并找到最大速度。
三輪狀態(tài)速度控制代碼:
LeftPWM =(int32) (Car_SpeedControlOut-DirectionControlOut);
RighPWM =(int32) (Car_SpeedControlOut+DirectionControlOut);
直立狀態(tài)速度控制代碼:
LeftPWM=(int32)(-Car_SpeedControlOut+PID_ANGLE.OUT-DirectionControlOut);
RighPWM=(int32)(-Car_SpeedControlOut+PID_ANGLE.OUT+DirectionControlOut);
PWM可轉化為最終輸出,上述代碼即可分別完成智能車在三輪和直立狀態(tài)下的自主循跡行駛。
3.5? 變形
變形是指智能車在斷路區(qū)域內完成二輪和三輪之間狀態(tài)的轉變,借助灰度傳感器識別跑道上的斷路層。當智能車進入斷路區(qū)域時,灰度傳感器將信號發(fā)送到單片機上,隨即發(fā)出狀態(tài)切換指令。直立中提到過預設角度的問題,如果預設角度和機械零點角度相同,則車模穩(wěn)定在直立狀態(tài),如果預設角度設定在水平位置,車模也會保持水平。
通過改變車模預設角度來改變車模行駛狀態(tài)的方法稱為“壓傾角”。在最初研究時并未采用“壓傾角”的方式,發(fā)現(xiàn)車速稍微提高,車模便會“抬頭”,導致實驗失敗。后來得知,在三輪狀態(tài)下壓低車模傾角,車頭微翹就會迅速被壓至水平狀態(tài),滿足了速度需求。加入“變形”功能之后,其他階段參數(shù)也應該適當調整,以達到最佳的耦合效果。
3.6? 避障
紅外傳感器用來檢測路障,本研究使用的紅外傳感器能在1 m內檢測與前方物體的距離。具體需要檢測路障的范圍需要根據(jù)車速進行必要的調整。
智能車避障分為以下步驟:檢測路障、向左或向右打偏角、車身回正、向跑道方向打偏角和最后正常循跡行駛。同樣使用陀螺儀檢測水平左右加速度,積分后得到車模相對此前角度的偏轉角度。代碼實現(xiàn)如下所示:
jiaodu=0;//將當前角度設為0
while(jiaodu>(-45))//當車身角度為45度時跳出循環(huán)
{
Update9AX();
Get_angle();
DirectionControl();
Speed_Control();
SpeedControlOut();
PWMOUT();
}
在智能車行駛過程中,紅外傳感器會一直檢測前方是否存在路障。檢測到之后,首先將此時正前方角度設為0度,然后進入循環(huán)。方向環(huán)里的DError必須手動賦值。參數(shù)jiaodu是車模避障所達到角度值(jiaodu可正可負,決定車模避障方向),達到這個預設的角度后隨即進入避障的下一階段—將車身回正。經多次實驗了解到:當車模速度快時,DError也要隨之增大,否則可能撞擊路障。在避障環(huán)中,車速、DError和jiaodu 3個參數(shù)需要密切關聯(lián),且每種不同速度都需要微調另外兩個參數(shù)才能保證智能車成功避障。
4? ? 結語
該研究從智能車的機械結構、硬件和軟件3個基礎層面展開,在自主循跡的基礎上增添了變形和避障這樣有建設性的新功能,使智能車變得靈活,具有十分廣泛的應用開發(fā)前景。
[參考文獻]
[1]陳威,陳靜.基于多傳感器的智能小車避障控制系統(tǒng)設計[J].工業(yè)控制計算機,2018(7):41-42.
[2]楊亞龍,劉金棟,孫玉環(huán),等.基于STC12C5410AD單片機的兩輪自平衡小車的系統(tǒng)設計[J].電子設計工程,2013(20):162-164.
[3]袁瑞豪,王一豪,孫振涵.基于K66單片機的恩智浦智能小車制作[J].無線互聯(lián)科技,2019(11):122-124.