王 輝, 廖峰林,2
(1.成都大學 機械工程學院,四川 成都 610106; 2.四川新綠色藥業科技發展有限公司,四川 成都 610036)
智能小車作為無人駕駛汽車的“縮小版”,綜合了車輛工程、測控工程與人工智能等多個學科領域的相關技術,其環境適應性強,易于開發,具有廣闊的應用前景[1-2].目前在實際應用中,智能小車需要解決的關鍵技術問題是循跡和避障的實現[3].對此,本研究采用純跟蹤算法對智能小車進行運動控制,選擇適用于坐標軸或黑白地圖搜尋點的A*算法對路徑進行構建,通過對該算法進行優化,使得兩點一線之間的連線由循跡跟蹤點轉變為循跡跟蹤線.同時,將控制算法應用到實物智能小車中,通過超聲波傳感器測距與灰度傳感器循跡來進行實際測試,驗證了本仿真構建的智能小車運動模型、PID的參數調節、控制算法及規劃出的路徑的有效性.在具體測試中,實物智能小車實現了按照設定要求行走的目的.
實際運動中的智能小車可以視為一個剛體,用其質心的空間坐標與空間姿態的6個坐標可近似描述其運動過程[4].基于此,本研究的智能小車循跡與避障主要以仿真模擬為基礎,選取前輪轉向后輪驅動模式,同時僅考慮智能小車的運動特性,而忽略諸如車身滑動、輪胎摩擦等動態因素.據此建立智能小車的理想運動模型,即把智能小車的運動簡化為平面運動,具體構建的智能小車運動模型如圖1所示,

圖1 智能小車運動模型示意圖
圖1中,設定智能小車的質心坐標為(x,y),后軸中心坐標為(x1,y1),前軸中心坐標為(x2,y2),角度θ為智能小車的航向角,為車身與X軸正方向的夾角,角度φ為智能小車前輪轉向角,軸距為L,前軸中心到質心長度為a,后軸中心到質心長度為b,據此,可以得到智能小車的平面運動模型方程式為,

(1)
式中,V是智能小車的速度.
在MATLAB/Simulink仿真工具中構建的智能小車的整體仿真模塊主要由智能小車的運動仿真模塊、速度仿真模塊和轉向角仿真模塊所組成.
1.2.1 運動仿真模塊
智能小車的運動模型經轉換后變為運動仿真模塊,具體如圖2所示.

圖2 智能小車的運動仿真模塊
1.2.2 速度仿真模塊
在建立智能小車速度仿真模擬中,由于智能小車的輸入環節存在速度的變化,仿真中可能會出現振蕩,因此需要添加PID控制器對其進行控制.同時,在設定車速時,需要將帶動車輪旋轉的電機驅動轉換為速度的轉換函數,從而得到智能小車的速度仿真模塊,具體如圖3所示,圖3中,PID(s)為MATLAB/Simulink仿真工具中自帶的控制模塊,可以進行相關參數的調整.

圖3 智能小車的速度仿真模塊
1.2.3 轉向角仿真模塊
智能小車的轉向角仿真模塊同樣也需要利用PID控制.由于智能小車的轉向角采用平滑的曲線達到預設角度,為了使智能小車在開始有位移時能夠快速動起來,其速度需要先超過預設數值再退回至預設數值,因此其需要通過PD控制來實現,具體如圖4所示,

圖4 智能小車轉向角第一模塊
此外,智能小車在轉向時通常會引起較大的慣性,對此需要添加一階慣性環節作為轉向角的第二模塊,具體如圖5所示.

圖5 智能小車轉向角第二模塊
1.2.4 智能小車整體仿真模塊
把智能小車的運動仿真模塊、速度仿真模塊、轉向角仿真模塊與輸入輸出模塊連接起來,最終得到智能小車的整體仿真模塊,具體如圖6所示.

圖6 智能小車仿真模塊的整體構架示意圖
圖6中,輸入為智能小車的目標速度V和目標轉向角φ,輸出為智能小車當前所處的位置(x,y)、航向角θ、軸向速度vμ和法向速度vω以及當前智能小車的轉向角φ,實現實時顯示智能小車的當前位置與姿態.
本研究通過選用純跟蹤控制算法對智能小車的輸入參數進行控制,可以使智能小車按照設定路徑運行且輸入平滑、振蕩減小.
智能小車在行進過程中通常都是直接跟蹤由一系列路徑點所構成的規劃路徑來自動識別路線.本研究以智能小車的輸入參數轉向角φ為目標,選擇純跟蹤控制算法,利用路徑信息對智能小車的轉向進行控制[5],其基本思路是,在每個控制周期,通過前方目標軌跡上的一個點,控制智能小車當前方向盤的動作,使其產生向目標點的運動,同時反映智能小車的位置、速度、加速度與時間變化的關系.其具體原理如圖7所示,

圖7 純跟蹤控制算法示意圖
圖7中,R是智能小車的轉彎半徑;L是智能小車的軸距;δ是智能小車的前輪轉角;α是智能小車車身與預瞄點的夾角;G(gx,gy)是智能小車在軌跡上的預瞄點;ld是智能小車的預瞄距離,用于在前方循跡的引導線上選擇某個期望點[6];圓弧表示智能小車的目標軌跡.
將純跟蹤控制算法化簡后得到其計算式為,
δ(t)=arctan(2L*sin(a(t))/ld)
(2)
在本研究中,純跟蹤算法中的預瞄點是智能小車下一個需要到達的地方.而在MATLAB仿真軟件中,預瞄點的實現可通過修改代碼為尋找最近點來實現.預瞄點的計算方法為:設定當前智能小車的位置坐標為(x1,y1),其他目標的坐標為(x2,y2),d為其他目標點到當前坐標點的距離,其計算式為,
(3)
將計算得到的距離d進行對比分析,并選擇最小的距離d,然后將對應的坐標點輸入至預瞄點,即獲得下一個需要到達的坐標點.
智能小車避障最關鍵的技術是控制好智能小車行駛的方向和速度.PID控制具有魯棒性強的特點,因而在工業工程過程控制中被廣泛地應用.PID控制的計算式為,
(4)

1)本研究智能小車的輸入速度在PID控制的前后對比如圖8所示,

圖8 智能小車速度PID控制前后對比
圖8中,虛線為PID控制調節前的速度輸入,實線為PID控制調節后的速度輸入.在1 s時輸入速度設定為1 m/s.由圖8可以看出,在PID控制調節前速度輸入偏大,在接近3 s時穩定,而PID控制調節后輸入速度為設定的1 m/s速度,在接近2 s時輸入穩定.
2)智能小車的輸入轉向角在PID控制前后的對比如圖9所示,

圖9 轉向角的PID控制前后對比
圖9中,圖9(a)為沒有PID控制調節的轉向角輸入,圖9(b)為有PID控制調節的轉向角輸入.通過對比可以看出,PID控制調節后的轉向角輸入平滑穩定,且振蕩較小.
利用MATLAB仿真工具的矩陣數據可構建costmap地圖.即將坐標地圖顯示成柵格化地圖[7].在本研究中,地圖坐標中含有障礙物、可行區域、起始點及目標終點,具體如圖10和圖11所示,

圖10 矩陣數

圖11 cotsmap地圖
圖10中,有數據的地方為可行區域,Inf表示障礙物,0表示起始點及終點.
圖11為轉換后的cotsmap地圖,其上障礙物的位置與圖10矩陣中障礙物的坐標一一對應.由于圖中的障礙物數據是變化的,所以每次生成的地圖也是變化的,而障礙物的比例是設定的,故障礙物的方格在每次的數量是一致的.
路徑構建即是避開障礙物尋找一條或者多條可行性的道路,本研究的路徑構建采用A*算法,其基本思路是:首先,設定2個空矩陣:一個命名“道路”,一個命名“距離”;然后,對所生成的地圖矩陣進行搜尋,將搜尋過程中遇到的可行性路徑坐標放入“道路”矩陣之中,并將該點和目標點的距離放入“距離”矩陣之中,在起始點到終點之間一直循環該步驟,直到尋找到目標點位置后跳出循環;第三,跳出循環后,對“距離”矩陣進行各點比較,直到距離為“0”,即尋到了目標點為止;最后,得到這一系列點之后,再從目標點出發,尋回至初始點,得出路徑中每一個點是如何由上一個點尋找出來的,再將各點連成線,即可得到該地圖中搜尋出來的一條由起始點到終點的路徑.本研究依據此思路搜尋得出的路徑如圖12所示.

圖12 地圖路徑構建
本研究利用A*算法搜尋出的地圖路徑各點坐標及對該路徑優化后的部分坐標對比結果如圖13所示,

圖13 路徑構建及優化
圖13中,左邊為A*算法搜尋出來的路徑坐標、右邊為優化后的部分路徑坐標,橫向1、2表示(x,y)坐標,縱向1~21表示從起始點到目標終點搜尋出來并按順序得到的各點坐標.
智能小車與路徑的匹配度,不僅可以檢驗智能小車的控制算法是否有效與運動模型建立是否匹配,還可以判斷所獲得的路徑是否適用.由于避障路徑的分度值為m,本研究設定的智能小車的車身長度僅為0.2m,故控制算法向前搜尋的范圍僅有0.25 m.這就意味著,智能小車不能夠完全看清范圍點內的位置而導致搜尋點失敗.對此,本研究的解決方法是將得出的路徑分度值變小,并將優化后的路徑坐標重新部署到智能小車的跟蹤地圖之中,可以發現路徑中的坐標點之間的距離變小了,而路徑的長度沒有變化.將搭建好的智能小車模塊在有規劃出路徑的地圖中進行循跡與避障仿真運行,其仿真運行軌跡如圖14所示,

圖14 智能小車仿真運行軌跡
圖14中,紅線為智能小車運行軌跡,藍線為規劃出來的路徑,可以看出智能小車在循跡避障過程中能夠按照設定的路徑運行,只有在直角拐彎時,會出現不重合情況.這是因為智能小車設定轉向是由前輪轉向角來控制,因本研究的智能小車前輪最多可以轉向50°,導致其在直角轉彎時不能按照直角路線行走,而是按照圓弧路線行走.
智能小車仿真運行的實時數據如圖15所示,

圖15 智能小車仿真實時數據
圖15中,圖15(a)顯示智能小車的實時速度,其中,黑色的線為智能小車的最大速度,設定值為0.5 m/s,藍色的線為智能小車的X軸向速度,紅色的線為智能小車的Y軸向速度.當智能小車以45 °方向行走時,速度為恒定值.由紅色的線與黑色的線交點可以得知智能小車此刻的車身朝向,X軸向速度在向負值變化,Y軸向速度在向正值變化,說明智能小車在向車頭的左側轉彎行駛.圖15(b)顯示智能小車實時轉向角,正值為向左轉彎,負值為向右轉彎,而最大轉角則和之前設定的一樣為50 °.由圖15的智能小車仿真實時數據與圖14的智能小車行進軌跡對比可知,本研究的智能小車構建的運動模型、控制算法、設定軌跡與實際運行狀態一一對應,即創建的各個模塊合理、有效.
本研究的智能小車實車采用差速輪運行及轉向,構建的控制算法模型轉換為C語言[8]嵌入其中,并采用灰度傳感器及超聲波傳感器進行循跡與避障.灰度傳感器的作用是使智能小車循著黑線運行,超聲波傳感器則感應前方是否有障礙物及判定障礙物的距離.在實際測中,將靜態地圖的路徑探索轉換為在地面鋪設的軌跡.鋪設的軌跡可以作為分度值趨近于0的坐標點,使得智能小車能夠有路徑可以跟蹤.在智能小車的車頭布置了4個灰度傳感器,將仿真中的純跟蹤算法以傳感器的感應來表示.
本研究智能小車實車循跡的思路為:設定智能小車的4個灰度傳感器的順序以沿著智能小車車頭方向從左后、左前、右前、右后的順序依次為1、2、3、4.當傳感器2和3感應為黑且傳感器1和4感應為白時,智能小車向前行;當傳感器2感應為黑且傳感器1、3和4感應為白時,智能小車輕微左轉,此時,左輪電機轉速降低,右輪電機轉速不變,直到傳感器2和3感應為黑,1和4感應為白時左右輪電機轉速恢復相等,繼續前行;輕微右轉同理;當傳感器1和2感應為黑時且傳感器3和4感應為白時,智能小車向左大轉彎,左輪電機減速,右輪電機加速,直到傳感器2和3感應為黑且傳感器1和4感應為白時繼續前行;當4個傳感器均感應為黑時,智能小車停止運行.智能小車實車測試結果如圖16所示.
圖16中,圖16(a)是智能小車正常循跡的過程,圖16(b)是智能小車遇到障礙物躲避的過程,圖16(c)是智能小車躲避障礙物后重新進行循跡,回到正常路線上來的過程.

圖16 智能小車循跡與避障實物測試示意圖
本研究通過建立智能小車的運動模型,并基于MATLAB/Simulink分析工具進行了仿真模擬,完成了對仿真中智能小車控制算法的選型及優化,使智能小車在仿真中能按照設定路徑運行,確定了仿真中智能小車的避障算法,完成了仿真所需要的對智能小車速度及轉向角的PID控制參數調整及確定,使仿真中的智能小車軌跡能夠與設定軌跡相吻合.
同時,本研究對構建的智能小車實車進行了相關測試,結果驗證了本智能小車控制算法的有效性.