闞亞雄,邢一龍
(1. 鎮(zhèn)江高等??茖W(xué)校 現(xiàn)代裝備制造學(xué)院,江蘇 鎮(zhèn)江 212028; 2. 中國(guó)民用航空飛行學(xué)院 航空工程學(xué)院,四川 廣漢 618307)
智能小車是通過車載傳感器實(shí)時(shí)采集外部信息并上傳自身狀態(tài),自主或人工遙控完成工作任務(wù)的機(jī)器人系統(tǒng)。智能小車可自主避障、規(guī)劃路徑,獨(dú)立采集信息,高效利用空間,能搭載不同的作業(yè)工具,在災(zāi)難搜救、生活服務(wù)等領(lǐng)域應(yīng)用前景廣闊[1-2]。
國(guó)內(nèi)關(guān)于智能小車的研究初步展開。文獻(xiàn)[2]研究了基于雙層模糊控制算法的小車軌跡跟蹤控制系統(tǒng),進(jìn)行了相關(guān)的運(yùn)動(dòng)分析仿真。文獻(xiàn)[3]中的小車控制系統(tǒng)通過超聲波傳感器和紅外避障傳感器輔助操縱者人工避讓障礙物的形式實(shí)現(xiàn)小車的障礙物躲避。文獻(xiàn)[4]中的智能小車檢測(cè)到障礙物后簡(jiǎn)單繞離,沒有實(shí)現(xiàn)自主駕駛或自主巡航功能。文獻(xiàn)[5]研究了基于STM32控制芯片的智能探測(cè)小車控制系統(tǒng),介紹了系統(tǒng)上-下位機(jī)的結(jié)構(gòu),運(yùn)動(dòng)控制、環(huán)境避障、與上位機(jī)通訊等控制功能。文獻(xiàn)中的智能小車控制系統(tǒng)的集成度不高,關(guān)于上位機(jī)PC軟件界面的設(shè)計(jì)較少,缺少運(yùn)動(dòng)控制算法的仿真實(shí)驗(yàn)和樣車集成控制系統(tǒng)的避障實(shí)驗(yàn)。因此,新型智能小車集成控制系統(tǒng)的軟硬件集成研究尤為必要。
以STM32F103ZET6嵌入式芯片為智能小車集成控制系統(tǒng)的核心芯片。STM32F103ZET6是STM32系列微處理器的增強(qiáng)型,工作在72MHz,使用最新的ARM Cortex-M3內(nèi)核。處理器性能高,能耗低,僅消耗27mA電流,適用于小型化智能車輛的控制系統(tǒng)[6-7]。集成控制系統(tǒng)還包含電源、紅外探測(cè)、超聲波探測(cè)、通訊、電機(jī)驅(qū)動(dòng)等子模塊,智能小車在硬件架構(gòu)上具備車輛實(shí)時(shí)定位、自主紅外/聲波避障、2.4GHz無線數(shù)傳通訊、電源信息檢測(cè)等功能。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 智能小車集成控制系統(tǒng)硬件結(jié)構(gòu)
圖2是控制系統(tǒng)設(shè)計(jì)選用的STM32F103ZET6的最小系統(tǒng)圖。該芯片共有64個(gè)引腳。時(shí)鐘、電源電路的引腳分別為OSC1,OSC2和VBAT。時(shí)鐘采用8MHz的外部時(shí)鐘,系統(tǒng)更加穩(wěn)定。RESET為復(fù)位引腳。最小系統(tǒng)電路圖給出了其他引腳定義,如PB12,PB13,PB14,PB15是4路電機(jī)的PWM控制信號(hào)輸出引腳,PC6,PC7,PC8,PC9是4路電機(jī)轉(zhuǎn)速反饋輸入引腳。系統(tǒng)通過USART1串口引腳PA0,PA1與上位機(jī)通訊,通過PB0,PB1接收超聲波傳感器數(shù)據(jù),通過PB8,PB9接收紅外傳感器1數(shù)據(jù),通過PC0,PC1接收紅外傳感器2數(shù)據(jù),通過PC13,PC14接收電源電壓、電流數(shù)據(jù)等。
圖2 智能小車集成控制系統(tǒng)STM32F103ZET6最小系統(tǒng)圖
避障模塊組合使用超聲波傳感器HC-SR04和紅外光傳感器HJ-IR2實(shí)現(xiàn)智能小車在不同距離上的自主避障功能,檢測(cè)距離為30~100cm。超聲波傳感器HC-SR04工作時(shí),STM32芯片通過PB0端口輸出1個(gè)高電平脈沖信號(hào)給超聲波探測(cè)模塊,后者向外界連續(xù)發(fā)出檢測(cè)聲波信號(hào)。如果有信號(hào)返回就通過PB1端口輸出1個(gè)高電平脈沖信號(hào)給STM32芯片,通過計(jì)算聲波信號(hào)從發(fā)射到返回的時(shí)間得出前方障礙物的距離。智能小車工作時(shí),車載舵機(jī)帶動(dòng)超聲波傳感器定時(shí)朝3個(gè)方向擺動(dòng),實(shí)時(shí)檢測(cè)3個(gè)方向上障礙物的距離,并根據(jù)避障算法,提前轉(zhuǎn)向,避開障礙物。
本系統(tǒng)采用兩個(gè)L298D專用電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)電機(jī)正反轉(zhuǎn),驅(qū)動(dòng)電路圖詳見圖3。由圖3可知,L298D為四通道輸出,可同時(shí)控制兩部電機(jī),實(shí)際使用中VCC,VCC2兩個(gè)端口為電源輸入端,IN1和IN2引腳與主控制器STM32的PWM輸出信號(hào)端口PC10,PC11相連,當(dāng)EN1端口收到高電平脈沖信號(hào)時(shí),其控制的兩部直流電機(jī)處于運(yùn)行狀態(tài),反之處于停止?fàn)顟B(tài)。引腳PWM1,PWM2,PWM3,PWM4為電機(jī)控制的輸出端,兩路輸出端通過高低電平的變化控制電機(jī)的工作狀態(tài),如正傳、反轉(zhuǎn)、剎車等。輸出電流與電機(jī)的轉(zhuǎn)速成正比。模塊采用兩個(gè)編碼器檢測(cè)左前輪和右前輪電機(jī)的轉(zhuǎn)速,編碼器的輸入信號(hào)引腳分別與STM32的PC6,PC7,PC8,PC9相連,實(shí)現(xiàn)小車電機(jī)轉(zhuǎn)速的閉環(huán)控制,提供小車的實(shí)際車速。
圖3 智能小車集成控制系統(tǒng)驅(qū)動(dòng)電路圖
圖4為智能小車集成控制系統(tǒng)軟件流程圖。首先,系統(tǒng)初始化,獲取各傳感器數(shù)據(jù),上位PC機(jī)通過無線通訊模塊發(fā)送目標(biāo)位置坐標(biāo)給智能小車車載STM32控制器,主控制器芯片接收任務(wù)目標(biāo)坐標(biāo)數(shù)據(jù)后,調(diào)用運(yùn)動(dòng)控制函數(shù)MotorInit(),驅(qū)動(dòng)每部電機(jī),使小車的航向?qū)?zhǔn)目標(biāo)坐標(biāo)。然后,小車在運(yùn)動(dòng)中開啟紅外探測(cè)模塊和超聲波探測(cè)模塊,分別調(diào)用函數(shù)RedRayInit()和UltraSoundInit(),發(fā)送所獲得的障礙物信息(距離、方位等)給避障算法計(jì)算函數(shù)Voidbarrier(),從而調(diào)用避障算法,給出小車躲避障礙物的轉(zhuǎn)向角和速度。最后,小車平穩(wěn)到達(dá)目標(biāo)位置時(shí),通過無線通訊模塊發(fā)送到達(dá)信息給上位PC機(jī)。
圖4 智能小車集成控制系統(tǒng)軟件流程圖
控制系統(tǒng)上電后,主要任務(wù)是完成系統(tǒng)初始化,包括時(shí)鐘初始化函數(shù)GPIOCLKInit(),LED初始化函數(shù)LCD1602Init(),無線通訊模塊初始化函數(shù)IRCtrolInit(),定時(shí)器初始化函數(shù)TIM2_Init(),小車運(yùn)動(dòng)控制函數(shù)MotorInit(),超聲波探測(cè)模塊初始化函數(shù)UltraSoundInit()。
集成控制系統(tǒng)中的電機(jī)驅(qū)動(dòng)及調(diào)速模塊程序使用5個(gè)基本運(yùn)動(dòng)函數(shù)實(shí)現(xiàn)小車基本的運(yùn)動(dòng)動(dòng)作,如直行(CarGo(void))、左轉(zhuǎn)(CarLeft(void))、右轉(zhuǎn)(CarRight(void))、停止(CarStop(void))、后退(CarBack(void))。采用定時(shí)器TIM1對(duì)外部脈沖輸入計(jì)數(shù),使用STM32主控制器中的PC6,PC7引腳接收左前輪速度編碼盤脈沖,PC8,PC9引腳接受右前輪速度編碼盤脈沖。TIM1接收編碼盤脈沖計(jì)數(shù)程序如下:
TIM_Delinit(TIM1);
TIM_TimeBaseStructure.TIM_Period=0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler=0x00;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
TIM_Cmd(TIM1,ENABLE);
TIM1采集的編碼盤脈沖為直流電機(jī)增加了速度閉環(huán)檢測(cè)功能,調(diào)速模塊采用串級(jí)PID算法,將控制器分為內(nèi)、外環(huán)控制,外環(huán)控制為小車行駛方向的PID調(diào)速,內(nèi)環(huán)控制為小車速度的PID調(diào)速。這種串級(jí)PID算法增加了控制系統(tǒng)的工作頻率,減少了時(shí)間常數(shù)。電機(jī)驅(qū)動(dòng)和調(diào)速模塊中的部分PID參數(shù)計(jì)算程序如下:
Float q0,q1,q2,Kp,Ts,Ti,Td;
Void PID_Init(void)
{ Kp=0.1;
Ts=0.1;
Ti=3.5;
Td=0;
Q0=Kp*(1+Ts/Ti+Td/Ts);
Q1=Kp*(1+2*Td/Ts);
Q2=Kp*Td/Ts;}
Float PID_Algo(float ek2,float ek1,float ek, float uk)
{Float uk1;
Uk1=uk+q0*ek2+q1*ek1+q2*ek;
Return uk1;}
控制系統(tǒng)的障礙物探測(cè)模塊由超聲波傳感器和紅外傳感器組成。超聲波傳感器安裝在一部舵機(jī)上,通過DuojiLeft(),DuojiMid(),DuojiRight()3個(gè)函數(shù)調(diào)整舵機(jī)的轉(zhuǎn)向,進(jìn)而調(diào)整其發(fā)射聲波的方位,得到左、中、右3個(gè)方向障礙物的距離。程序如下:
void GetAllDistance(unsigned int *dis_left,unsigned int *dis_right,unsigned int *dis_direct)
{
CarStop();
GetDistanceDelay();
*dis_direct = distance_cm;
DuojiRight();
Delayms(100);
GetDistanceDelay();//獲取右邊障礙物距離
*dis_right = distance_cm;
DuojiMid();
DuojiLeft();
Delayms(100);
GetDistanceDelay();//獲取左邊障礙物距離
*dis_left = distance_cm;
DuojiMid();//歸位
}
通過避障算法模塊BarrierProc()計(jì)算一個(gè)運(yùn)動(dòng)控制量angle,控制小車的4部直流電機(jī),根據(jù)不同電機(jī)間的差速原理實(shí)現(xiàn)小車轉(zhuǎn)向,從而實(shí)現(xiàn)避障。
本系統(tǒng)的上位PC機(jī)軟件圖使用Labview 2014編寫。系統(tǒng)運(yùn)行時(shí),下位機(jī)小車集成控制系統(tǒng)通過無線通訊模塊將采集的小車運(yùn)動(dòng)控制參數(shù),如運(yùn)動(dòng)速度、轉(zhuǎn)向角、運(yùn)動(dòng)軌跡等,傳輸給上位PC機(jī),并顯示在圖5所示的面板中。界面中還有手/自動(dòng)切換按鈕,選擇手動(dòng)遙控控制時(shí),通過界面上的按鈕便可實(shí)現(xiàn)改變運(yùn)動(dòng)方向、加減速度、急停等動(dòng)作。
圖5 智能小車集成控制系統(tǒng)上位機(jī)PC軟件圖
本文研究的對(duì)象是某型智能小車,車長(zhǎng)30cm,寬15cm,總高15cm,動(dòng)力方式為4電機(jī)驅(qū)動(dòng),輸出功率10W,最大航速0.5m/s。根據(jù)以上參數(shù),智能小車的數(shù)學(xué)模型可簡(jiǎn)化為二階傳遞函數(shù)
為驗(yàn)證智能小車集成控制器對(duì)小車行駛方向、速度控制的有效性和魯棒性,利用Matlab R2014b/Simulink進(jìn)行仿真研究。仿真系統(tǒng)向智能小車下達(dá)“車速2.5cm/s和航向角前25秒25°后25秒-25°”的階躍控制指令,采樣時(shí)間為50s。從圖6和圖7可以看出,智能小車縱向速度控制信號(hào)上升時(shí)間為5s,超調(diào)量為12%,航向角控制信號(hào)上升時(shí)間為8s,超調(diào)量為40%。串級(jí)PID算法對(duì)智能小車直流電機(jī)調(diào)速和轉(zhuǎn)向調(diào)節(jié)的控制效果明顯。
圖6 智能小車縱向速度控制仿真曲線圖
圖7 智能小車航向角仿真曲線圖
智能小車控制系統(tǒng)研制成功后,對(duì)智能小車集成控制系統(tǒng)的運(yùn)行控制進(jìn)行驗(yàn)收,智能小車完成了自主或人工遙控方式的直線運(yùn)動(dòng)、轉(zhuǎn)彎、軌跡跟蹤。此后進(jìn)行了多次障礙物躲避實(shí)驗(yàn),如圖8所示。采用4個(gè)規(guī)格為250mm×150mm×150mm的障礙物交錯(cuò)布置,縱向間距為800mm,橫向間距為300mm,要求小車直線通過并繞開4個(gè)障礙物。實(shí)驗(yàn)中,智能小車集成控制系統(tǒng)實(shí)時(shí)采集不同方位障礙物的距離信息并不斷變換小車運(yùn)行方向,依據(jù)避障算法使智能小車?yán)@過障礙物到達(dá)指定目標(biāo)位置。
圖8 智能小車避障實(shí)驗(yàn)圖
針對(duì)智能小車開發(fā)了集成控制系統(tǒng),并研究了系統(tǒng)的硬件布局、傳感器及動(dòng)力部分的電路設(shè)計(jì)、系統(tǒng)軟件設(shè)計(jì)等。該集成控制系統(tǒng)具備包括小車直線運(yùn)動(dòng)、轉(zhuǎn)向、躲避障礙物在內(nèi)的運(yùn)動(dòng)控制能力,車載傳感器實(shí)時(shí)與上位PC機(jī)通訊的綜合控制能力。