易先軍,彭 萌,耿翰夫,付 龍
(武漢工程大學(xué) 電氣信息學(xué)院,武漢430205)
智能車的研究是移動(dòng)服務(wù)機(jī)器人研究的一個(gè)重要分支,研究智能小車控制系統(tǒng)的實(shí)時(shí)性和精確性具有重要的理論和實(shí)際意義[1-2]。隨著科學(xué)技術(shù)的快速發(fā)展,智能車的避障問題成為控制領(lǐng)域的研究熱點(diǎn)之一。目前,實(shí)現(xiàn)避障的方法主要有超聲波避障、視覺避障、紅外傳感器、激光避障、微波雷達(dá)等[3-6]。針對常規(guī)單一傳感器的智能小車存在的避障效率低、準(zhǔn)確度差以及移動(dòng)靈活性不足等問題,在此研究并設(shè)計(jì)了一套基于模糊控制算法的、 以Android App 為控制端的、 滿足多工作場景的四麥克納姆輪式小車控制系統(tǒng)。
四麥克納姆輪式小車控制系統(tǒng)的總體結(jié)構(gòu)如圖1所示。該系統(tǒng)采用模塊化設(shè)計(jì),根據(jù)各模塊實(shí)現(xiàn)功能的不同,可將該小車控制系統(tǒng)劃分為以下幾個(gè)部分:主控制器模塊、移動(dòng)控制端(Android App)、通信模塊(藍(lán)牙模塊和PS2 接收器)、環(huán)境信息采集模塊(超聲波傳感器和紅外傳感器)、電機(jī)驅(qū)動(dòng)模塊、測速模塊(光電編碼器)、電源模塊(12 V 蓄電池)等。
圖1 小車控制系統(tǒng)結(jié)構(gòu)Fig.1 Structure of car control system
小車控制系統(tǒng)的工作流程如下:在移動(dòng)控制端App 上選擇小車的工作場景, 通過通信模塊將控制指令發(fā)送到小車;小車解析接收到的指令后,根據(jù)指令進(jìn)行預(yù)定的動(dòng)作。例如:當(dāng)選擇避障場景1 或避障場景2 時(shí),主控制器利用模糊避障算法進(jìn)行智能避障同時(shí)利用航跡推算法進(jìn)行定位??梢愿鶕?jù)運(yùn)動(dòng)模型控制小車的運(yùn)動(dòng),驅(qū)動(dòng)器、直流減速電機(jī)以及光電編碼器會(huì)形成一個(gè)閉環(huán)控制, 通過增量式PID 調(diào)速算法控制各個(gè)電機(jī)的速度, 從而使小車實(shí)現(xiàn)預(yù)定的運(yùn)動(dòng)。
全向運(yùn)動(dòng)小車采用四麥克納姆輪式驅(qū)動(dòng)結(jié)構(gòu)來實(shí)現(xiàn)對小車的三自由度控制[7],2 個(gè)左旋輪,2 個(gè)右旋輪,左旋輪和右旋輪呈手性對稱。符合三自由度的安裝方式有多種,在此僅以O(shè)-長方形(即4 個(gè)輪子的輥?zhàn)优c地面接觸所形成的圖形)安裝方式為例,分析全向運(yùn)動(dòng)小車的逆運(yùn)動(dòng)學(xué)模型。小車的運(yùn)動(dòng)模型如圖2所示。
圖2 小車運(yùn)動(dòng)模型Fig.2 Car movement model
圖中,以小車的底盤幾何中心O 點(diǎn)為原點(diǎn)建立坐標(biāo)系xOy。底盤的運(yùn)動(dòng)可以分解為3 個(gè)分量[Vx,Vy,ω], 其中,Vx為底盤沿x 軸方向的速度,m/s;Vy為底盤沿y 軸方向的速度,m/s;ω 為底盤沿z 軸自轉(zhuǎn)的角速度,rad/s。車輪軸心處Oi的速度為Vi,m/s;輪繞輪軸轉(zhuǎn)動(dòng)的角速度為ωi,rad/s;輥?zhàn)铀俣葹棣蘨,m/s;i=1,2,3,4,分別為右上輪、左上輪、左下輪、右下輪;α 為麥克納姆輪的輪轂軸與輥?zhàn)愚D(zhuǎn)軸的夾角,在此取α=45°。
右上輪軸心速度分析如圖3所示。圖中,r 為O點(diǎn)到右上輪中心點(diǎn)O1點(diǎn)的距離,m;V 為輪子的軸心處O1速度,m/s;Vr為輪子軸心速度沿垂直于r 方向(即切線方向)的速度分量,m/s。Vt為原點(diǎn)O 點(diǎn)的速度,m/s;ω 為原點(diǎn)O 點(diǎn)的角速度,rad/s。
圖3 右上輪軸心速度分析Fig.3 Analysis of the upper right wheel axis speed
故V=Vt+ω·r,其在x,y 軸方向的速度分量為
同理,可以推算另外3 個(gè)輪的軸心O2,O3,O4處速度沿x 和y 軸方向的速度分量。輪子軸心速度V可以分解為沿輥?zhàn)臃较虻乃俣萔1和垂直于輥?zhàn)臃较虻乃俣萔2。垂直于輥?zhàn)臃较虻乃俣萔2可以忽略。故
式中: μ 為輪子軸心速度V 沿輥?zhàn)臃较虻膯挝皇噶?。又輪軸角速度ω 與輥?zhàn)拥乃俣汝P(guān)系為
結(jié)合式(1)~式(3),可得四輪輪軸角速度ω 與底盤幾何中心的速度關(guān)系,即小車底盤的逆運(yùn)動(dòng)學(xué)關(guān)系式為
由式(4)可知,若要實(shí)現(xiàn)小車的不同運(yùn)動(dòng)狀態(tài),只要調(diào)節(jié)各麥克納姆輪的轉(zhuǎn)速便可實(shí)現(xiàn)。
由于單個(gè)傳感器具有不確定性、觀測失誤和不完整性等弱點(diǎn),因此單層數(shù)據(jù)融合限制了系統(tǒng)的能力和魯棒性[8]。在此,結(jié)合多傳感器信息融合技術(shù),在小車底盤的左、前、右3 個(gè)方向分別安裝超聲波傳感器和紅外傳感器,以獲取未知環(huán)境的障礙物距離信息,通過紅外傳感器彌補(bǔ)超聲波測距的缺陷,利用航跡推算法定時(shí)推算小車與目標(biāo)物的方位角。
傳感器的整體布局如圖4所示。圖中,1,3,5 為小車底盤上3 個(gè)超聲波傳感器編號;2,4,6 為小車底盤上3 個(gè)紅外傳感器編號。傳感器1 和2 組成小車左方障礙物的測距組;傳感器3 和4 為前方的測距組;傳感器5 和6 組成右方的測距組。每組的距離信息中選取較小的數(shù)據(jù)作為該組的輸入。
圖4 小車傳感器布局示意圖Fig.4 Schematic diagram of the car sensor layout
在圖5所示小車模糊避障系統(tǒng)中,將模糊控制器的輸入變量設(shè)為4 個(gè):左前方障礙物距離的信息LD;正前方障礙物距離信息FD;右前方障礙物距離信息RD;目標(biāo)點(diǎn)相對于小車的角度θ。通過對小車運(yùn)動(dòng)模型的分析可知,控制小車底盤幾何中心O 點(diǎn)的水平速度和垂直速度,即可控制小車實(shí)現(xiàn)全向速度,故控制器的輸出變量設(shè)為2 個(gè)——小車底盤幾何中心的水平速度Vx和垂直速度Vy。
圖5 小車模糊避障系統(tǒng)Fig.5 Car fuzzy obstacle avoidance system diagram
通過模糊化語言將3 組傳感器檢測環(huán)境信息以及目標(biāo)角度轉(zhuǎn)換為模糊控制器的輸入變量。障礙物左邊距離值LD,前方距離值FD 和右邊距離值RD 的模糊語言變量均為{SD,MD,BD}={Small Distance,Middle Distance,Big Distance}, 論 域 為[0,2.4],表示0~2.4 m。定義小車距離障礙物的安全距離為0.8 m。
目標(biāo)點(diǎn)相對于小車的角度θ 的模糊語言變量為{L,F(xiàn),R}={Left,F(xiàn)ront,Right},論 域 為[-90,90],表示±90°。定義目標(biāo)角度,在-30°~30°時(shí)為F;小于-30°時(shí)為L;大于30°時(shí)為R。
小車底盤的水平速度Vx和垂直速度Vy的模糊語言變量均為 {NB,NS,ZO,PS,PB}={Negative Big,Negative Small,Zero,Positive Small,Positive Big},論域?yàn)椋?0.3,0.3],表示±0.3 m/s。定義水平速度向右為正向,垂直速度向前為正向。各模糊變量采用基本的三角形和梯形隸屬度函數(shù)。
文中模糊推理采用Mamdani 的max-min 合成法,去模糊化輸出采用面積中心法[9]。模糊規(guī)則是模糊控制的核心,采用IF-THEN 條件語言,組成N=81條模糊控制規(guī)則。在小車工作于避障場景時(shí),由傳感器采集環(huán)境信息數(shù)據(jù),經(jīng)模糊處理后,輸入到設(shè)計(jì)好的模糊規(guī)則表中進(jìn)行匹配判斷,然后根據(jù)判斷結(jié)果去模糊化輸出底盤水平速度和垂直速度。以小車的左側(cè)近距離具有障礙物為例,列出的部分模糊控制規(guī)則見表1。
表1 部分模糊控制規(guī)則Tab.1 Partial fuzzy control rule
App 的開發(fā)環(huán)境為MIT App Inventor 2。MIT App Inventor 2 是以可視化編程語言為基礎(chǔ)的Android 應(yīng)用開發(fā)工具,用戶只要根據(jù)自己的需求編寫簡單的代碼拼裝程序[10],簡化了用戶開發(fā)App 應(yīng)用軟件的步驟,縮短了開發(fā)時(shí)間。在此,手機(jī)App 與小車之間采用藍(lán)牙通信方式,利用配置成數(shù)據(jù)透傳工作模式的藍(lán)牙模塊,手機(jī)App 將控制指令發(fā)送到小車,實(shí)現(xiàn)對小車運(yùn)動(dòng)狀態(tài)的控制。小車在運(yùn)動(dòng)的同時(shí), 會(huì)定時(shí)將自身運(yùn)動(dòng)狀態(tài)等數(shù)據(jù)發(fā)送到手機(jī)App端來顯示,以達(dá)到更好的交互。
將小車硬件移動(dòng)平臺初始化后,打開小車Android App 應(yīng)用軟件,進(jìn)入小車活動(dòng)場景選擇界面,選擇場景后界面跳轉(zhuǎn)到相應(yīng)控制界面,通過藍(lán)牙列表按鈕連接小車,待手機(jī)與車載藍(lán)牙連接后,就可以通過相應(yīng)的功能鍵控制小車的運(yùn)動(dòng)。
以圖6所示的App 避障場景為例進(jìn)行說明。此處選擇的是場景2, 地圖1的大小是250×250 像素與小車的實(shí)際物理活動(dòng)場景10 m×10 m 成映射關(guān)系。待藍(lán)牙連接后,通過點(diǎn)擊目標(biāo)配置按鈕,打開地圖1;在地圖1的xOy 坐標(biāo)中點(diǎn)擊任意位置,App 會(huì)將對應(yīng)像素點(diǎn)位置(即圖6中黑點(diǎn)位置)發(fā)送到小車。小車根據(jù)地圖映射關(guān)系,從起點(diǎn)O 點(diǎn)向目標(biāo)點(diǎn)運(yùn)動(dòng)(每一次指定新的目標(biāo)點(diǎn)后,上一次的終點(diǎn)位置成為新的起點(diǎn)),途中遇到障礙物時(shí),會(huì)根據(jù)嵌入小車處理器的模糊避障控制算法避障。同時(shí),定時(shí)上傳各驅(qū)動(dòng)輪速度等信息到App,App 接收即時(shí)信息并顯示出來。圖6中,根據(jù)各電機(jī)速度可知,小車處于直線運(yùn)動(dòng),黑色的點(diǎn)軌跡為小車的運(yùn)動(dòng)軌跡。
圖6 App 避障場景2 界面Fig.6 Interface of App obstacle avoidance scenario 2
四麥克納姆輪式小車控制系統(tǒng),能夠通過Android App 實(shí)時(shí)地對小車的運(yùn)動(dòng)場景進(jìn)行選擇并控制小車的運(yùn)動(dòng)狀態(tài)。所設(shè)計(jì)的小車硬件模塊電路和相應(yīng)的軟件控制流程,實(shí)現(xiàn)了小車硬件移動(dòng)平臺與PS2 手柄以及Android App 之間的無線數(shù)據(jù)傳輸與控制,開發(fā)了Android App 應(yīng)用軟件。最后對此系統(tǒng)進(jìn)行測試,當(dāng)小車處于避障場景中時(shí),能自主避障并到達(dá)目標(biāo)點(diǎn); 當(dāng)處于其它場景如PS2 手柄時(shí),可以通過PS2 手柄控制小車靈活運(yùn)動(dòng)。然而,還可在提高小車到達(dá)目標(biāo)點(diǎn)的速度和位置精度,以及豐富App 軟件的數(shù)據(jù)分析功能上做進(jìn)一步改進(jìn)。