小車自動避障及路徑規(guī)劃
第3章 系統(tǒng)總體結構及工作原理該系統(tǒng)主要以超聲波測距為基本測距原理,并在相應的硬件和軟件的支持下,達到機器人避障的效果。機器人總體硬件設計傳感器的分布要求為了全方位檢測障物的分布狀況,并及時為機器人系統(tǒng)提供全面的數(shù)據(jù),可將所需的八個傳感器均勻排列在機器人周圍,相鄰每對傳感器互成 45 度角。為了避免相互干擾,八個傳感器以程序運行周期為周期,進行循環(huán)測距。傳感器排列示意圖如下:d4d3d5d2d6d1d7d0圖 傳感器分布圖避障系統(tǒng)總體電路框架圖設計紅外傳感器A/D 轉換左側電機超聲波信號右側電機單片機LED顯示LED顯示圖 硬件設計總體框架圖上圖為支持機器人運行實用程序的硬件部分的總體設計框架圖,由負責相關任務的同學提供。在超聲波信號輸入單片機以后,由存儲在單片機中的主程序調(diào)用避障子程序,根據(jù)輸入信號執(zhí)行避障指令,并使相關數(shù)據(jù)返回主程序,轉而提供給電機和 LED 顯示器的驅動程序使用,最后,由電機執(zhí)行轉向指令,結果則顯示在 LED顯示器上。避障系統(tǒng)總體軟件框架圖設計開始初始化,開中斷有按鍵鍵盤處理按下鍵值X運行紅外避障運行顯示處理運行超聲波避障電機處理程序輸出顯示電機處理程序結束返回圖 軟件總體框架圖由上圖可知,本文作者負責的超聲波避障程序為軟件總體設計中的子程序部分。在主程序運行過程中,若調(diào)用超聲波避障程序,機器人在自行軌跡規(guī)劃后,將程序處理所得數(shù)據(jù)送給電機處理成立程序,控制電機動作。具體的避障程序設計將在第 4 章進行。超聲波測距原理測距原理:超聲波是指頻率高于20KHz 的機械波。為了以超聲波作為檢測手段,必須產(chǎn)生超生波和接收超聲波。完成這種功能的裝置就是超聲波傳感器,習慣上稱為超聲波換能器或超聲波探頭。超聲波傳感器有發(fā)送器和接收器,但一個超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。超聲波傳感器是利用壓電效應的原理將電能和超聲波相互轉化即在發(fā)射超聲波的時候,將電能轉換,發(fā)射超聲波;而在收到回波的時候,則將超聲振動轉換成電信號。8超聲波測距的原理一般采用渡越時間法TOF(time of flight )。首先測出超聲波從發(fā)射到遇到障礙物返回所經(jīng)歷的時間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離,即:8D=ct/2其中 D 為傳感器與障礙物之間的距離,以m 計, c 為超聲波速度,這里以340m/s 計, t 為超聲波從發(fā)送到接收的總時間,以s 計。據(jù)此原理可以用超聲波傳感器測得的距離為避障程序提供所需的數(shù)據(jù)。8第 4 章 軌跡規(guī)劃算法的實現(xiàn)方案軌跡規(guī)劃算法的層次化設計根據(jù)上述材料分析,可以將機器人軌跡規(guī)劃算法設計分為基礎控制層、行為控制層和坐標計算層,三個層次進行?;A控制層設計基礎控制層可定義為基本行為層,這層算法的任務是尋找目標點,并確保機器人可以順利到達指定目標位。在確定目的地位置的情況下,為了達到上述目的,計算機必須對機器人的方位進行時實計算。應用人工勢場法原理,可以將目標點設為引力極,牽引機器人運動。對此動作建立相應的模型,可以使用建立平面坐標作為虛擬勢場的方法來給機器人定義方位,將機器人關于目標點的時實偏角作為虛擬引力方向,以確定機器人下一步所需轉過的角度,并時實檢測,是否已到達目的地,若已到達,則可認為虛擬引力此刻為 0,并發(fā)出信號控制程序終止運行總體程序。由此,可確定基礎控制層所需的各參數(shù):(1) 機器人的時實坐標 x, y 值,由專門的坐標計算層提供,為了提高精確度,可以采用厘米為單位制。(2) 機器人的速度 v,測量后設為定值使用。(3) 周期 T,直接設置為定值使用。(4) 偏轉角 de,可通過機器人與橫坐標之間的夾角 pe,減去機器人到目標點連線與橫坐標的夾角 E 得到。(5)終止信號 last 值先置為 0,當?shù)竭_目的地時,將其置為1。基礎控制層程序流程圖如下:數(shù)據(jù)讀入1計算偏轉角de判斷是否到達目標將 last 值置YN數(shù)據(jù)輸出2圖 基本控制層程序流程圖行為控制層行為控制層是比基本控制層更復雜,更具有決定權的層次。它的存在決定了機器人智能避障行為的可行性,是相當重要的算法層。其主要任務是讓機器人根據(jù)超聲波傳感器采集的距離信息判斷是否該進行避障行為,且給出避障的轉角值,及轉向。這些都以左右綜合距離的大小決定,當左邊綜合距離大于友邊綜合距離時,可認為左邊的斥力值大與右邊斥力值,機器人左轉,反之,右轉。當前方綜合距離小于設定的最小允許接近距離,而左右綜合距離又相等時,則需要設置專門的轉角,對機器人施行強制性轉角動作。據(jù)此,可將各控制變量之間的關系以數(shù)學公式的形式列出,并做為“人工勢場法”的基本數(shù)學模型被運用于程序流程圖設計。設聲納 Si 的輸出為 di,轉角 de 和速度 v 表示控制層行為的輸出,其中 de 表示機器人下一步的運動方向, v 表示機器人下一步運動的速度。那么,基于勢場的控制行為可以表示如下 。de = meL<Mmin R<Mminde = de0R>=Lde = -de0L>R上式中的 L 表示機器人左邊障礙物的迫近程度,根據(jù)圖:L 為第 1 號到第 3號傳感器返回距離值的倒數(shù)和;R 表示機器人右邊障礙物的迫近程度,根據(jù)圖 : R 為第 5 號到第 7 號傳感器返回距離值的倒數(shù)和。Mmin 為障礙物的最小迫近程度值,相當于第L 組(或第 R 組 )超聲波傳感器最大探索范圍的倒數(shù)和。當左右迫近程度的值都小于最小迫近程度值時,可簡單認為機器人周圍無障礙物,機器人按基礎控制層執(zhí)行程序,其中的me 表示機器人要到達目的地需要轉過的角度。 de0 表示機器人執(zhí)行行為控制層程序時,所需轉動的角度大小,一般可設為定值。以上述方案為基礎,為了提高機器人的避障能力,還可對設置機器人的前方迫近程度值 ,因為機器人的反轉是以轉角180 度來實現(xiàn)的,而非后退,所以,后方迫近程度值暫時無需設置。de = de0F>MmaxF 表示機器人前方距離值障礙物的迫近程度,根據(jù)圖:F 為第 4 號傳感器返回距離值的倒數(shù), Mmax 就是用于判斷障礙物是否已經(jīng)離機器人很近,假設機器人的最大速度為 v,每兩步之間的時間間隔為 t ,那么,為了確保機器人不會與障礙物碰撞, Mmax 可以表示為速度 v 和間隔時間 t 乘積的倒數(shù)。當 F 值大于 Mmax 值時,表示前方距離障礙物很近了,需要進行避障處理了 。行為控制層程序流程圖如下:數(shù)據(jù)讀入 0NF 是否大于 MmaxYR 是否大于等于 LN左轉角度 de右轉角度 deYL和 R是否都小于 MminNY數(shù)據(jù)出口 1R 是否大于等于 LYN左轉角度 de右轉角度 de數(shù)據(jù)輸出2圖 行為控制層程序流程圖坐標計算層設計坐標計算層的設計方案,主要可采用虛擬坐標技術,它能形象地定義機器人相對障礙物及目標點的具體位置,確保機器人及時避障,并順利到達目標點。在機器人初始坐標明確的條件下,機器人坐標可根據(jù)上述兩層程序提供的數(shù)據(jù)算得。設程序循環(huán)間隔的周期為T,那么,在間隔周期T 時間內(nèi),機器人行走的距離 P 為速度 v 與 T 的乘積。 又設機器人正方向與平面坐標橫軸正方向的夾角為 pe ,其初始值確定,轉動值為上述兩層提供的角度de ,那么本周期的 pe 值為上個周期的 pe 值與轉角 de 的差。由此,可分別計算機器人本周期內(nèi)橫、縱坐標的變化值 X , Y。X = P * cos ( pe )Y = P * sin ( pe )因此,本周期的橫、縱坐標x , y 值可由上個周期的坐標減去變化值得到。而本周期的坐標值在行為控制層允許的情況下,將被代入基本行為層,檢測是否到達目的地。坐標計算層程序流程圖如下:數(shù)據(jù)讀入2計算 P計算 pe計算本周期內(nèi)橫、縱坐標變化值X , Y計算本周期內(nèi)橫、縱坐標的值x , y數(shù)據(jù)輸出0圖 坐標計算層程序流程圖上述三層算法,相互制約,相互聯(lián)系,組成了整個系統(tǒng)的基本算法。每次循環(huán)執(zhí)行程序時,都是由行為控制層入口,通過對迫近程度值大小的判斷,選擇是否中斷行為控制層,轉而執(zhí)行基礎控制層。最后執(zhí)行坐標計算層,并把所得數(shù)據(jù)提供傳給程序循環(huán)的下一周期使用。依據(jù)上述各算法層之間的關系,可以組合出軌跡規(guī)劃子程序的總體程序流程圖,如下圖所示:主程序調(diào)用入口 0行為控制層數(shù)據(jù)接口1基礎控制層數(shù)據(jù)接口2坐標計算層主程序調(diào)用出口 0圖 軌跡規(guī)劃子程序總體程序流程圖機器人系統(tǒng)及環(huán)境的軟件化硬件及環(huán)境的軟件化技術是一種脫離硬件及實際環(huán)境對程序進行檢測、仿真的編程技術,也是對機器人軌跡進行規(guī)劃的過程中必不可少的一種技術。它將避障程序運行必需的硬件功能及環(huán)境影響,用擁有同樣功效的程序表達出來,以檢測避障程序正確與否。1.以下便是支持避障程序運行必需的各項硬件功能:(1) 測量 8 個超聲波傳感器與障礙物之間的距離。(2) 系統(tǒng)停止調(diào)用避障子程序的功能。(3) 機器人運行軌跡的可視化功能。2.以下可視為環(huán)境對程序的影響:(1)機器人運行前,設置障礙物的大小及坐標。根據(jù)上述原理和各項需要模擬的功能,可以使用數(shù)學建模的方法進行軟件化編程。首先,需要對上述邏輯化步驟進行排序。因為機器人行為是一種仿人的行為,因此,可將上述功能及影響對應相關的“神經(jīng)傳導過程”進行排序,并在排序后設計相應的系統(tǒng)程序流程圖。排序及功能對應的圖形如下:環(huán)境識別功能傳感器測距功能神經(jīng)傳遞功能行為決策功能軌跡規(guī)劃子程序功能行為動作功能神經(jīng)反射功能行為動作功能行為動作功能停止調(diào)用子程序軌跡可視化功能圖 神經(jīng)傳導模型排序圖圖中的“神經(jīng)傳遞功能”相當于數(shù)據(jù)輸入功能,而“行為決策功能”相當于偏角計算及算法層次選擇的功能, “行為動作功能”則對應機器人下步坐標的確立過程?!吧窠?jīng)反射功能”的任務則是輸出必要數(shù)據(jù),并判斷是否應該結束循環(huán)。由這些功能組成模塊,正是機器人軌跡規(guī)劃子程序部分。程序開始放置障礙物測量障礙物距離避障子程序N是否停止避障子程序Y繪制機器人運行軌跡程序結束圖 系統(tǒng)程序流程圖超聲波傳感器測距功能的模擬根據(jù)圖給出的系統(tǒng)程序流程,可知,在機器人系統(tǒng)及環(huán)境的軟件化過程中,傳感器測距功能的模擬最為繁雜。主要的解決思路是建立適當?shù)臄?shù)學模型,通過對模型的具體分析,運用幾何學知識計算超聲波傳感器與障礙物之間的距離值。為了方便計算,可用微分學將障礙物設為由多個已知坐標和半徑的圓組成的任意形狀。而傳感器到障礙物之間的距離可參考以下幾何建模的方法計算得出:V第4號傳感Ma , b器朝向 w角 XeAx , yX 軸正方向障礙物機器人圖 機器人測距功能數(shù)學模型圖根據(jù)上圖分析可設機器人半徑為 r ,障礙物半徑為 R 。實線 M 就是需要求取的障礙物與第 i 號傳感器之間的距離。點劃線 A 是機器人中心與障礙物圓心的連線,它與 X 正方向的夾角記為 Ze 。第 i 號傳感器與第 4 號傳感器之間的夾角記為 Ke ,在圖上反映為實線 M 與第 4 號傳感器之間的夾角。因為機器人圓心坐標 (x ,y)可由避障子程序求得,而障礙物圓心 (a ,b)又是已知值,因此,可用 C 語言表示出 Ze 值。Ze=atan2(b-y),(a-x);根據(jù)圖可知相鄰兩個超聲波傳感器的夾角為45 度,那么,Xe的值可分為兩種情況,分別求取:當 i < 4 時,第 i 號傳感器在第 4 號傳感器左邊。Xe = Ze-pe-(4-i)*45;當 i >= 4 時,第 i 號傳感器在第 4 號傳感器右邊。Xe = pe-Ze-(i-4)*45;已知 Xe 值后,通過正余弦公式便可求得機器人與障礙物之間的距離M 。其 C 程序表達式如下:N=A*sin(Xe);M = abs(A*cos(Xe)-sqrt(R*R-N*N)-r;避障子程序與實用主程序的銜接組合將中提及的三層算法整理到一起就可以組裝成實現(xiàn)避障行為的子程序。將該子程序代替圖的總體軟件框架中的“運行超聲波避障”部分,就可構成實用程序的流程圖了。開始初始化,開中斷有按鍵鍵盤處理按下鍵值X運行紅外避障運行顯示處理電機處理程序輸出顯示結束返回主程序調(diào)用入口 0行為控制層數(shù)據(jù)接口1基礎控制層數(shù)據(jù)接口2坐標計算層主程序調(diào)用出口 0電機處理程序圖 避障機器人運行實用程序流程圖難點程序化優(yōu)化處理在對程序詳細設計的過程中,難免遇到一些難以表達,或表達不到位的地方,比如角度換算問題、障礙物放置個數(shù)問題以及虛擬超聲波的穿透測距問題。在避障子程序和仿真主程序中,大量使用了角度這一變量。為了表示機器人轉動這一動作,角度就必須帶上正負符號。當然,真正需要注意的并不是角度的符號問題,而是“角度”與“弧度”的互換問題。在 C 程序中,有關正弦、余弦、正切、余切及其反函數(shù)的計算,一般都是以弧度作為角的單位被使用的,因此,在角的單位處理上,需要特別留意。處理方法一般是根據(jù)“弧度”和“角度”的關系式進行互相轉換, “ 360=2弧度”,子程序中的處理如下:E=(180*atan2(Y,X)/; /*機器人圓心到目標點的連線與橫坐標X 的夾角 */dx=p*cos(pe*/180); /* 機器人每走一步,在橫坐標上產(chǎn)生的變量值 */ dy=p*sin(pe*/18 0); /* 機器人每走一步,在 縱坐標上產(chǎn)生的變量值 */障礙物的放置動作,反映在仿真程序中,相當于由調(diào)試人員輸入多個定坐標和半徑的圓的動作。為了確??杀惠斎雸A的個數(shù)盡量多,可采用循環(huán)輸入方式置障。在循環(huán)過程中,因無法限制輸入圓的個數(shù),所以,必然會造成程序的死循環(huán)。因此,必須給循環(huán)定義一個結束標準。通??梢栽谳斎氤绦颉?scanf” 中多加一個結束控制變量 s,將 s 初值置為 0,當 s=0 時,循環(huán)繼續(xù),當 s=1 時,跳出循環(huán)。子程序中的處理如下:for(j=0;s!=1;j+)scanf("%f,%f,%f,%d",&xbj,&ybj,&rbj,&s); /* 依次輸入圓心坐標,圓的半徑,循環(huán)結束控制信號s 的值 */setcolor(RED);setfillstyle(SOLID_FILL,RED);circle(xbj,ybj,rbj);n=j;虛擬超聲波的穿透測距問題,在實際環(huán)境中,這是不可能發(fā)生的事情,但在程序中,計算機每次循環(huán)都需要對每個圓進行測距,這是由程序的智能程度偏低造成的,也是不可避免的,為了得到真實的測量數(shù)據(jù),需要給原算法加上智能化較高的附加模塊。根據(jù)邏輯分析,當同一傳感器得到多個返回值時,最小的那個就是真實值。因此,可在原來算法的基礎上加上一段比較算法,得出最終真實值。子程序中的處理如下:for(i=0;i<=7;i+) /* 比較出每個傳感器返回值中的最小值,并作為傳感器的真實返回值,送入避障子程序處理 */for(j=1;j<=n;j+)if(poij>poij-1)poij=poij-1;min=poij;di=min;以上設計難點僅為詳細編程時碰到的幾個理論上的疑難問題,而具體調(diào)試過程中出現(xiàn)的實際問題將在第 5 章,給出相應解決方案。第 5 章 程序的仿真分析仿真數(shù)據(jù)處理及分析為了檢測避障程序能否正常運行,必須對其進行仿真處理。在開始仿真處理前,為了便于對仿真結果進行分析,首先需在仿真主程序中將機器人起點設置為黃色,目標點設為紅色,障礙物為綠色,機器人自身設為藍色,這可以方便觀察、分析。為了提高仿真的精確度,程序中衡量長度的數(shù)據(jù)都以分米為單位。做好上述準備后,就可以在環(huán)境下開始程序仿真了。為了對程序功能進行全面的檢測,障礙物放置方法越多越好。下面,從簡入難對程序進行仿真。1. 對單障礙物阻擋的仿真(1) 機器人左偏避障以下圖形中黃色的圓代表機器人行動的起點坐標,其圓心坐標為(20,20),半徑為 20;藍色的圓組成的是機器人移動的軌跡;綠色圓代表障礙物,其圓心坐標為( 150, 150),半徑為 50;紅色的圓代表目的地,圓心坐標為( 400, 400),半徑為 20。程序中設定的程序循環(huán)周期為 4 秒,速度為 10 分米每秒。圖 單障礙物環(huán)境下,機器人的左偏運動根據(jù)對圖形中,不同顏色的圓的相對位置分析可知,機器人可以成功的以左偏方式避開正前方的障礙物,但卻穿越了目的地限定的紅色區(qū)域,這可視為沒有成功到達目的地??梢姡苷铣绦虻难h(huán)周期過大了,因此,可將程序的循環(huán)周期改為 2 秒,從而可以得到較完美的圖形,圖顯示了程序改進后的效果。圖單障礙物環(huán)境下,機器人的左偏運動的改進圖(2) 機器人右偏避障以修改后的上述仿真為基礎,保持起點圓和目的地圓的圓心坐標及半徑不變,以函數(shù)輸入的形式,重新調(diào)整障礙物的圓心坐標及半徑大小,可得到仿真圖。改動后的障礙物圓心坐標為(150,140),半徑為 50 分米。圖單障礙物環(huán)境下,機器人的右偏運動從圖可看出機器人根據(jù)程序判斷出從右邊到目的地的距離比從左邊去短,并選擇了短距離避障的運行方式。而且,機器人可以順利到達目的地。但圖中,機器人運行軌跡仍有與障礙物接觸的點,表明程序循環(huán)周期依然過大,繼續(xù)進行改進,其改進效果在“機器人對雙障礙物的同側避障”圖中顯得較為可觀。2. 對多障礙物阻擋情況的仿真(1) 機器人對雙障礙物的同側避障在保證起點和目的地圓心坐標及半徑不變的條件下,可繼續(xù)添加障礙物來檢測機器人是否有避開多個障礙的能力。輸入一號障礙物圓心坐標( 150, 150),半徑 50 分米;二號障礙物圓心坐標( 300,300),半徑 50 分米??紤]到新加障礙物可能影響機器人行走的精確度,可將程序循環(huán)周期改為 1 秒,仿真后得到圖。圖機器人對雙障礙物的同側避障1根據(jù)上圖中機器人的軌跡分析可知機器人擁有對多重障礙物的避障功能,并可以按指令到達目標點。當然,這里的多重障礙物是非連續(xù)分布。(2) 機器人對雙障礙物的異側避障為了檢測機器人在進行多重障礙物避障的行為過程中是否依然具有近距離選擇,這一智能行為,可繼續(xù)改變障礙物的位置分布狀況。入一號障礙物圓心坐標( 150,150),半徑 50 分米;二號障礙物圓心坐標( 250, 150),半徑 50 分米。仿真后,生成下圖。圖機器人對雙障礙物的異側避障觀察圖,可發(fā)現(xiàn)機器人并不是從兩個障礙物的同側饒過,而是選擇了相對較短的路程,從障礙物中間穿過,并成功避開了障礙物,到達目的地,這說明,在該程序的支持下,機器人可以實現(xiàn)智能化較高的避障處理方式了。(3) 機器人對壁形障礙物的避障在機器人運行起點和目的地之間,放置一串圓心在同一直線上,半徑相同的圓形障礙物,組成壁形進行仿真,這樣可測試機器人對連續(xù)障礙物的避障行為。根據(jù)壁形障礙物與機器人相對位置的多樣性,可做出如下兩種不同的仿真。當壁形障礙物與起點到目的地的連線成任意不垂直的角度時,這時,由于機器人左右迫近程度的不同,機器人將按照最短路徑行走,如圖;當壁形障礙物與起點到目的地的連線垂直,且左右迫近程度相同時,根據(jù)人工勢場法,機器人只能根據(jù)在該情況下設定的程序,選擇固定角度運行。如圖。圖機器人對壁形障礙物的避障1從上圖可直觀地看出,機器人再次以最短路徑繞過壁形障礙物,到達目的地,這再一次證明了程序的智能化。圖 機器人對壁形障礙物的避障2從圖觀察到,機器人在避障程序的指導下,繞過障礙物,在每個程序循環(huán)周期中,其運行方向都是與從第0 號傳感器算起,第一個檢測到障礙物的傳感器的前一號傳感器朝向是一致的。之所以,不使用每個程序循環(huán)周期轉動相同角度的老方法,是因為,這種老方法在連續(xù)避障行為中,可能出現(xiàn)死循環(huán)。若這還不夠證明該程序避障的智能性,可繼續(xù)進行更復雜的仿真。(4) 機器人在半包圍式障礙物內(nèi)的避障基于以上仿真原理排列出的半包圍結構障礙物更具測試意義。對如果說,機器人對壁形障礙物避障仿真的成功證明了機器人具有躲避平面墻的功能,那么,在半包圍障礙物環(huán)境下的避障仿真則證明了機器人具有躲避垂直形墻角的功能,是在前一種仿真基礎上的進步,也表明,該程序支持的機器人初步具有從房形障礙物中繞轉出來能力。仿真圖如下:圖機器人在半包圍式障礙物內(nèi)的避障上圖顯示的機器人成功躲避開障礙物,并順利到達目的地。(5) 機器人關于前方兩邊障礙物之間距離小于機器人直徑的多障礙物避障為了測試機器人是否會穿過小于自身直徑的間隙,可做如下仿真,模擬小間隙情況。