




已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本科畢業(yè)設(shè)計(jì)(論文)題目:(中文)基于向量場(chǎng)直方圖的移動(dòng)機(jī)器人避障方法研究 (英文)study of obstacle avoidance for the mobile robot based on vector field histogram誠(chéng) 信 承 諾我謹(jǐn)在此承諾:本人所寫的畢業(yè)論文基于向量場(chǎng)直方圖的移動(dòng)機(jī)器人避障方法研究均系本人獨(dú)立完成,沒有抄襲行為,凡涉及其他作者的觀點(diǎn)和材料,均作了注釋,若有不實(shí),后果由本人承擔(dān)。 承諾人(簽名): 年 月 日摘要【摘要】移動(dòng)機(jī)器人廣泛應(yīng)用于工業(yè)生產(chǎn)加工制造中,尤其在危險(xiǎn)和惡劣的環(huán)境中可以用機(jī)器人代替人工操作減少損失。避障技術(shù)在移動(dòng)機(jī)器人的發(fā)展中起著至關(guān)重要的作用,避障方法有很多種,本文是基于向量場(chǎng)直方圖的移動(dòng)機(jī)器人避障方法。由于傳統(tǒng)的向量場(chǎng)直方圖法在給定值太大或太小時(shí)都無法安全避障,本文在此基礎(chǔ)上,利用激光測(cè)距儀所或得的數(shù)據(jù)首先確定一個(gè)可以安全行駛的范圍,然后通過算法自動(dòng)的改變給定值的大小,最終選擇最優(yōu)給定值,通過差分驅(qū)動(dòng)控制使機(jī)器人安全避障。并在roboticstudio仿真系統(tǒng)中建立場(chǎng)景和編程來實(shí)現(xiàn)?!娟P(guān)鍵詞】移動(dòng)機(jī)器人;激光測(cè)距儀;向量場(chǎng)直方圖 ;差分驅(qū)動(dòng);避障study of obstacle avoidance for the mobile robot based on vector field histogramabstract【abstract】mobile robots are widely used in industrial production and manufacturing,especially in dangerous and harsh environments they can replace manual operations to reduce losses. obstacle avoidance technology plays a vital role in the development of mobile robot , there are many ways about obstacle avoidance, this article is the obstacle avoidance method for mobile robot based on the vector field histogram.if the given value is too large or too small the robot can not go through obstacles safely using traditional vector field histogram method. basing on the vfh, firstly ,determining a range of safe driving use the data from laser range finders.then changing the given value automatically and choosing the optimal value , finally using the differential drive control method make the robot avoid obstacles successfully.and make it come ture in the roboticstudio simulated system.【keywords】mobile robot;lrf;vfh ; differential drive; obstacle avoidance 目 錄摘要2abstract31概論51.1課題的目的和意義51.2課題的主要研究?jī)?nèi)容52移動(dòng)機(jī)器人避障的基本原理621激光測(cè)距儀lms 200基本工作原理62.2向量場(chǎng)直方圖法72.3差分驅(qū)動(dòng)法92.4 microsoft robotics developer studio103基于vfh的避障算法113.1算法流程圖113.2求機(jī)器人可以安全通過的所有范圍113.3移動(dòng)機(jī)器人角速度和線速度133.3.1 確定給定值的原則133.3.3 角速度控制153.3.4線速度控制153.4差分驅(qū)動(dòng)控制164仿真實(shí)現(xiàn)174.1創(chuàng)建場(chǎng)景1742編寫仿真程序224.2.1新建dss項(xiàng)目224.2.2獲取lrf數(shù)據(jù)234.2.3在窗口和txt文本中顯示254.2.4控制算法264.3運(yùn)行仿真程序285結(jié)論31參考文獻(xiàn)32致謝341概論1.1課題的目的和意義 移動(dòng)機(jī)器人是美國(guó)和蘇聯(lián)在60年代后期,為了探測(cè)月球表面,開發(fā)成功的。通過在地面的控制,利用美國(guó)“探測(cè)者”3號(hào)成功實(shí)施了在月球上挖溝的計(jì)劃并完成了其它的任務(wù)。蘇聯(lián)的“登月者”20號(hào)在月球表面成功著陸,控制相關(guān)設(shè)備在在月球表面鉆削巖石,并把巖石樣品裝進(jìn)設(shè)備帶回實(shí)驗(yàn)室。日本早稻田大學(xué)于70年代初期開發(fā)出和人類相似的兩足行走機(jī)器人。隨著原子能利用和海洋開發(fā)的發(fā)展,極限作業(yè)機(jī)器人和水下機(jī)器人也得到了迅速發(fā)展。在人們的日常生活中,機(jī)器人也開始得到使用并引起人們的高度關(guān)注。尤其在危險(xiǎn)、惡劣的環(huán)境中可以用機(jī)器人代替人工操作而減少人力和物力資源損失。避障在移動(dòng)機(jī)器人的發(fā)展中起著舉足輕重的作用。由于傳感器所獲得的數(shù)據(jù)的安全性、連續(xù)性、可靠性等不是太完美,并且移動(dòng)機(jī)器人對(duì)周圍的環(huán)境感知能力不理想。因此怎樣才能夠使得機(jī)器人安全的避過障礙物而到達(dá)指定目的地越來越引起人們的關(guān)注?,F(xiàn)在有很多移動(dòng)機(jī)器人的避障法,比如勢(shì)場(chǎng)法、邊沿檢測(cè)法等。 1.2課題的主要研究?jī)?nèi)容本課題的主要任務(wù)與目標(biāo)是在roboticstudio仿真系統(tǒng)中建立差分驅(qū)動(dòng)輪式移動(dòng)機(jī)器人的仿真環(huán)境,根據(jù)激光測(cè)距儀的障礙物距離信息,使用向量場(chǎng)直方圖法(vfh)設(shè)計(jì)合適的機(jī)器人避障方法,使移動(dòng)機(jī)器人能夠無碰撞地通過障礙區(qū)。主要任務(wù)和目標(biāo):1、學(xué)習(xí)和了解roboticstudio仿真系統(tǒng),掌握建立機(jī)器人仿真環(huán)境和編程控制機(jī)器人的基本方法; 2、學(xué)習(xí)和了解差分驅(qū)動(dòng)輪式移動(dòng)機(jī)器人的基本運(yùn)動(dòng)控制方式; 3、學(xué)習(xí)和了解激光傳感器的工作原理和方式,能夠根據(jù)激光數(shù)據(jù)獲取周邊障礙物的距離信息; 4、學(xué)習(xí)和掌握向量場(chǎng)直方圖法(vfh),設(shè)計(jì)合理的避障控制算法; 5、根據(jù)激光傳感器檢測(cè)到的距離信息,在仿真系統(tǒng)中編程實(shí)現(xiàn)移動(dòng)機(jī)器人無碰撞地通過障礙區(qū)2移動(dòng)機(jī)器人避障的基本原理21激光測(cè)距儀lms 200基本工作原理lms200 實(shí)物如圖2-1,它采用紅外線激光光束,優(yōu)點(diǎn)是不需要接觸被測(cè)量物體的表面并且物體的形狀和顏色都沒有要求,不需要反射片或是另一接收器而可以直接接收反射回來的信號(hào)。它的最小測(cè)量距離是0m,最大測(cè)量距離是80 m ,有100和180兩種角度范圍模式可供選擇,長(zhǎng)度誤差小于10 mm ,角度誤差小于0. 5。障礙物的尺寸、形狀能夠被迅速獲得,這些對(duì)于生成環(huán)境地圖和機(jī)器人定位都是非常有利的。圖2-1 lms 200實(shí)物lms200激光測(cè)距儀測(cè)距原理如圖2-2所示,它 是基于飛時(shí)測(cè)量原理(激光雷達(dá))工作的。在激光傳感器工作的范圍內(nèi),發(fā)射一個(gè)激光脈沖并且被物體的表面反射回來,通過這個(gè)激光脈沖從發(fā)射出去到接受之后所消耗的時(shí)間來計(jì)算物體和lms之間的距離。 (2-1)l:物體與傳感器間的距離;c:光速;t: 激光脈沖往返的時(shí)間獲得從物體表面反射回來的激光脈沖后,激光脈沖經(jīng)過一個(gè)旋轉(zhuǎn)的鏡子進(jìn)行反射,形成了一個(gè)100或是180的扇形區(qū)域 圖2-2 lms工作原理2.2向量場(chǎng)直方圖法向量場(chǎng)直方圖法(vector field histogram,vfh)是由borenstein和koren一起創(chuàng)造出來的,向量場(chǎng)直方圖法的關(guān)鍵是在傳感器的周圍建立一個(gè)圖形,這樣可以避免由于傳感器所獲得數(shù)據(jù)暫時(shí)延遲而或丟失可能導(dǎo)致的錯(cuò)誤。任意時(shí)刻創(chuàng)建的圖形都是一個(gè)劃分的柵格,只有在傳感器掃描范圍內(nèi)的數(shù)據(jù)才會(huì)在柵格內(nèi)從而取代已有的舊數(shù)據(jù)。為了能夠有效避開障礙物,它形成了一個(gè)極坐標(biāo)圖,其中x軸代表行走的方向與障礙物所構(gòu)成的角度,y軸是根據(jù)占有柵格的多少來計(jì)算障礙物就在運(yùn)動(dòng)方向的概率,如圖2-3所示。如圖2-3 極坐標(biāo)圖利用此極坐標(biāo)圖可以計(jì)算出機(jī)器人的行走方向。首先確定出移動(dòng)機(jī)器人可以安全避開障礙物所有路徑范圍,再在這些范圍內(nèi)選擇損耗最低的路徑,即最優(yōu)路徑。損耗函數(shù)l可以表示為: (2-2)其中,表示目的角度; 表示輪子角度; 表示原來角度k、u、w為比例系數(shù),損耗最小的就是最優(yōu)路徑,調(diào)整這些系數(shù)可以改變移動(dòng)機(jī)器人的避障效果。其中向量場(chǎng)直方圖法存在某些缺陷,在不同的環(huán)境下,對(duì)于同一個(gè)給定值可能使得機(jī)器人無法安全避開障礙物,給定值太大或是太小都會(huì)出現(xiàn)錯(cuò)誤。當(dāng)給定值太大時(shí)移動(dòng)機(jī)器人有時(shí)無法發(fā)現(xiàn)障礙物而最終與障礙物發(fā)生撞擊,如圖2-4所示。當(dāng)給定值太小時(shí)移動(dòng)機(jī)器人有時(shí)會(huì)丟棄可以安全通過的路徑而最終進(jìn)入死角,如圖2-5所示。圖2-4 給定值太小發(fā)生錯(cuò)誤圖2-5 給定值太大發(fā)生錯(cuò)誤2.3差分驅(qū)動(dòng)法如圖26所示,這個(gè)移動(dòng)機(jī)器人使用兩個(gè)輪子采用差分驅(qū)動(dòng)控制,兩個(gè)輪子的直徑都是r。假設(shè)兩個(gè)輪子的中心點(diǎn)為p點(diǎn),中心點(diǎn)p到兩個(gè)輪子的距離都是l。若已知r,l,且兩個(gè)輪子的轉(zhuǎn)速分別是1和2。則移動(dòng)機(jī)器人的總速度如式2-3: (2-3)圖26差分動(dòng)驅(qū)動(dòng)的移動(dòng)機(jī)器人2.4 microsoft robotics developer studio微軟開發(fā)出來的microsoft robotics developer studio(mrds)是用來為市場(chǎng)上已經(jīng)存在的或是即將開發(fā)出的機(jī)器人建立軟件的軟件開發(fā)工具包,如果你已經(jīng)有一個(gè)機(jī)器人了,可以直接用msrs進(jìn)行控制,如果沒有的話,也不用擔(dān)心,因?yàn)閙srs為虛擬機(jī)器人提供了一個(gè)成熟的三維仿真環(huán)境,當(dāng)你下載到免費(fèi)的sdk幾分鐘后就可以驅(qū)動(dòng)機(jī)器人了。它的最大好處就是對(duì)個(gè)人、學(xué)?;蛘唛_發(fā)商都是免費(fèi)的。msrs還包含一個(gè)成熟的實(shí)時(shí)運(yùn)行環(huán)境,用來編寫強(qiáng)大的異步式和分布式應(yīng)用程序很容易。微軟的mrds的sdk包含許多組件,并發(fā)同時(shí)運(yùn)行(ccr)和分散軟件服務(wù)(dss)構(gòu)成了實(shí)時(shí)運(yùn)行環(huán)境。它們都是控制庫(kù),所以運(yùn)行在這些環(huán)境中的機(jī)器人服務(wù)也是通過控制代碼實(shí)現(xiàn)的。仿真環(huán)境是可以用來實(shí)現(xiàn)新算法的全物理的三維仿真器,可視化編程語(yǔ)言( vpl )是一個(gè)可以用來實(shí)現(xiàn)機(jī)器人服務(wù)的圖形化編程環(huán)境。除了所有這些組件,微軟團(tuán)隊(duì)還開發(fā)了很多實(shí)例并且為編程用戶提供程序和塊。3基于vfh的避障算法由2.2部分的vfh的缺點(diǎn)可以知道當(dāng)給定值太大或太小時(shí),如果使用vfh算法的話,移動(dòng)機(jī)器人都有可能無法安全通過障礙物,因此在基于vfh算法的基礎(chǔ)上做了修改。首先通過激光測(cè)距儀所獲得的數(shù)據(jù)計(jì)算確定機(jī)器人可以安全通過的一些范圍,然后通過算法在這些可以通過的給定值中選擇最優(yōu)給定值,使得機(jī)器人可以快速安全通過障礙物。3.1算法流程圖:圖3-1算法流程圖圖3-1為基于vfh算法改進(jìn)的算法流程圖。通過激光測(cè)距儀所獲得的數(shù)據(jù),來求可以安全通過的所有范圍,即同時(shí)滿足邊長(zhǎng)條件和長(zhǎng)方形條件的范圍都是可以安全通過的范圍,若不滿足則激光傳感器需重新采集下一組數(shù)據(jù)。然后在在這些范圍中確定一個(gè)最優(yōu)給定值,利用這個(gè)給定值,通過差分驅(qū)動(dòng)分別控制機(jī)器人的角速度和線速度,安全避開障礙物。3.2求機(jī)器人可以安全通過的所有范圍步驟1:將激光測(cè)距儀lms200 的180掃描范圍分為72個(gè)扇形,每個(gè)扇形的角度為2.5,并且將每個(gè)扇形按照從右到左的順序依次標(biāo)記為sm。其中m為1,2,3,.,72 。步驟2:確定每個(gè)扇形的最小掃描距離lmmin,并且用該值與給定值rg進(jìn)行比較,如果該扇形區(qū)域gglmmin,那么該扇形是預(yù)備的扇形區(qū)域。圖3-2確定機(jī)器人可以安全通過的路徑方向步驟3:在步驟2中得到的所有預(yù)備扇形區(qū)域中,將所有連接在一起的并接成一個(gè)待判斷的大扇形區(qū)域,該待判斷的大扇形區(qū)域表示為qd,d為1,2,td(其中td表示待判斷大扇形區(qū)域的個(gè)數(shù)且td72)。若nf表示并接的第一個(gè)扇形,nl表示并接的最后一個(gè)扇形,d表示待判斷大扇形的角平分線與移動(dòng)機(jī)器人的坐標(biāo)軸的x軸的夾角,那么qd可表示為一個(gè)矩陣: (3-1)由幾何知識(shí)易得d: (3-2)步驟4:在對(duì)待判斷大扇形區(qū)域sd進(jìn)行判斷選擇,若滿足以下條件,那么該區(qū)域可保證機(jī)器人能夠安全通過,此區(qū)域保留,否則丟棄。邊長(zhǎng)約束條件:待判斷的大扇形區(qū)域的中心角所對(duì)的邊長(zhǎng)為ed,當(dāng)eg小于ed時(shí)稱為滿足邊長(zhǎng)約束條件,其中,kg是一個(gè)比例系數(shù),在此算法中將其設(shè)置為1.2,z是移動(dòng)機(jī)器人的直徑,在仿真環(huán)境中選用的先鋒三號(hào)直徑設(shè)置為0.5米。即只需要m即滿足了邊長(zhǎng)約束條件。長(zhǎng)方形約束條件:激光測(cè)距儀lms200掃描所獲得的數(shù)據(jù)點(diǎn)都不在長(zhǎng)方形內(nèi)。該長(zhǎng)方形的兩條邊與待判斷扇形的角平分線互相平行,具體長(zhǎng)方形見圖3-2,其中,kd是比例系數(shù)且取值是1.2。如果不能同時(shí)滿足以下條件的則一定不滿足長(zhǎng)方形約束條件。 (3-3) (3-4)圖3-2 確定是否滿足長(zhǎng)方形約束條件其中a、b分別是長(zhǎng)方形的寬和長(zhǎng),只有同時(shí)滿足了式3-3和式3-4才滿足長(zhǎng)方形的約束條件如果同時(shí)符合步驟4中、的待判斷區(qū)域是安全區(qū)域,機(jī)器人可以避開障礙物而安全通過,此待判斷扇形區(qū)的角平分線叫做可安全行駛的路徑方向。3.3移動(dòng)機(jī)器人角速度和線速度3.3.1 確定給定值的原則在3、2中對(duì)于某個(gè)確定的給定值g,可以求得移動(dòng)機(jī)器人安全避開障礙物的路徑方向,圖3-3是給定值g不同時(shí),移動(dòng)機(jī)器人所或得的安全避開障礙物的路徑方向圖,圖3-3-1和圖3-3-2分別是給定值為3和4的時(shí)候,此時(shí)所獲得的路徑方向角度全都超過90,但此時(shí)所獲得的范圍無法滿足步驟4中的長(zhǎng)方形約束條件,所以這兩個(gè)給定值都是不合理的,移動(dòng)機(jī)器人無法成功避開障礙物。圖3-3-3和圖3-3-4的給定值分別為1和2,此時(shí)獲得的安全避開障礙物的路徑角度分別是90和110,這兩個(gè)給定值都可以保證機(jī)器人避開障礙物,但由圖容易發(fā)現(xiàn)當(dāng)給定值為2時(shí)的效果更好,因?yàn)榻o定值為1時(shí)要過段時(shí)間才能夠發(fā)現(xiàn)前方障礙物。因此我們可以得出結(jié)論,再能夠保證移動(dòng)機(jī)器人成功避開障礙物的前提下,給定值g越大越好。圖3-3-1給定值g=3 圖3-3-2給定值g=4 圖3-3-3給定值g=1 圖3-4-4給定值g=2 3.3.2確定最優(yōu)給定值gb 由上部分可知在保證移動(dòng)機(jī)器人可以安全避障的前提下,給定值g是越大越好。接下來將計(jì)算出自動(dòng)改變給定值的計(jì)算方法。:假定給定值值g的最大值gmax: (3-5)所有可能的給定值為gj: (3-6)其中g(shù)0為最小的給定值: (3-7)k0是一比例系數(shù),s0表示移動(dòng)機(jī)器人從最大的速度開始到停止是所運(yùn)行的距離: (3-8)本課題中移動(dòng)機(jī)器人的最大速度vmax為0.8,減速的加速度a為-1,g0確定為1,是固定變化量且取值為0.1, ug的值選為41,則容易得到gmax為4。:由上部分中所獲得的gj(其中j=1,2,3,),用3、2中的方法判斷移動(dòng)機(jī)器人是否能夠成功避開障礙物。即某個(gè)確定的給定值,判斷是否滿足邊長(zhǎng)約束條件和長(zhǎng)方形約束條件。如果兩個(gè)條件同時(shí)滿足,那么這個(gè)給定值就是有效的保留起來,否則該給定值就是無效的直接丟棄。:假定總共有h個(gè)給定值是有效的,則移動(dòng)機(jī)器人共有h個(gè)可以通過的路徑方向。其中g(shù)j表示第j個(gè)有效的給定值,表示第j個(gè)有效值對(duì)應(yīng)的可以避障的安全路徑方向與機(jī)器人的x軸的夾角,ej表示第j個(gè)有效值對(duì)應(yīng)的安全路徑范圍的中心角對(duì)應(yīng)的邊長(zhǎng)。 在這h個(gè)有效值中,同時(shí)滿足式3-8的安全路徑方向中給定值最大的那個(gè)就是最優(yōu)給定值,用gb表示。 (3-9) 其中是先前確定的固定值,本課題中是,是移動(dòng)機(jī)器人與目標(biāo)之間的角度。3.3.3 角速度控制由3、3、2的可得最優(yōu)給定值,gb對(duì)應(yīng)的安全路徑方就是機(jī)器人的最終行走方向,用表示。控制角速度的表達(dá)式為式3-8: (3-10)其中為比例系數(shù),取值為0.8.注:由3、3、2確定的最優(yōu)給定值gb可能對(duì)應(yīng)多個(gè)安全路徑方向,其中選取中心角對(duì)應(yīng)邊長(zhǎng)最大的那個(gè)方向?yàn)橐苿?dòng)機(jī)器人的最終行走方向。3.3.4線速度控制機(jī)器人在前進(jìn)的過程中希望機(jī)器人運(yùn)行的越快越好,即我們總是希望機(jī)器人的線速度是vmax,但是當(dāng)機(jī)器人距離障礙物較近時(shí)或者行駛方向與目標(biāo)偏離較大時(shí),速度過大反而可能會(huì)浪費(fèi)時(shí)間,此時(shí)需要減小輪子的速度。線速度表達(dá)式為: (3-11)其中為: (3-12) 其中是機(jī)器人運(yùn)行過程中的最大線速度,取值為0.8, 機(jī)器人運(yùn)行過程中的最小線速度。是式3-13在取時(shí)且最優(yōu)給定值gb取g0時(shí)的值。 (3-13) 其中g(shù)0為最小給定值,取值為1。gmax為最大給定值,取值為4,gb為最優(yōu)給定值。k1與k2之和為1并且k1大于k2,表示機(jī)器人的行走方向與目標(biāo)方向之間的差距比最優(yōu)給定值的優(yōu)先權(quán)要高,這樣可以保證機(jī)器人更快的避開障礙物,本課題中k1取值為0.65,k2取值為0.35。3.4差分驅(qū)動(dòng)控制 根據(jù)差分驅(qū)動(dòng)控制原理我們可以得到機(jī)器人的角速度、線速度與左右輪的關(guān)系如式3-14: (3-14) 其中和分別是左輪和右輪的速度,l表示輪子間的距離,表示機(jī)器人的線速度,表示機(jī)器人的角速度。由此可以得到左右輪的速度如圖3-15所示: (3-15)4仿真實(shí)現(xiàn)4.1創(chuàng)建場(chǎng)景步驟1、添加場(chǎng)景和機(jī)器人打開microsoft visual simulation environment 2008,模式設(shè)置為編輯狀態(tài)。打開entityui.manifest.xml,如圖4-1所示。添加缺省場(chǎng)景。圖4-1 添加場(chǎng)景和機(jī)器人在圖4-1中,選擇lrf。再設(shè)定機(jī)器人初始位置為0,0,0 。點(diǎn)擊“add motor base”,添加一個(gè)差分驅(qū)動(dòng)的機(jī)器人本體。成功添加機(jī)器人后為圖4-2圖4-2 成功添加機(jī)器人步驟2、修飾機(jī)器人在圖4-2的左側(cè)編輯欄中,選擇motor base with drive點(diǎn)擊“edit entity”出現(xiàn)編輯窗口如圖4-3所示,在圖4-3中找到entitystate,點(diǎn)擊右端的選擇按鈕會(huì)出現(xiàn)圖4-4然后修改本體的名稱和式樣。圖4-3 修飾機(jī)器人圖4-4修改機(jī)器人名字和式樣這里我們把name改成“p3dx”。在mesh這一項(xiàng)里,選擇安裝目錄下store/media/pioneer3dx.bos作為渲染文件,然后點(diǎn)擊確定。步驟3、修飾輪子在編輯欄中選擇p3dx,點(diǎn)擊“edit entity”,首先修飾左輪,找到leftwheel后點(diǎn)擊選項(xiàng)按鈕,在彈出窗口中找到entity state,出現(xiàn)與4類似的窗口,在mesh項(xiàng)中選擇pioneerwheel.bos作為輪子的渲染文件,然后點(diǎn)擊確定。按照同樣的方法修飾右輪。此時(shí)的機(jī)器人為圖2-5所示。圖4-5機(jī)器人p3dx步驟4、建立不可移動(dòng)的環(huán)境菜單項(xiàng)entity-new,出現(xiàn)圖2-6窗口,選擇floorplanentity圖4-6建立機(jī)器人環(huán)境點(diǎn)擊ok,加入房間構(gòu)造,然后在編輯欄中選擇floorplan,點(diǎn)擊“edit entity”進(jìn)入二維的房間布置畫面,選擇4個(gè)wall作為走廊設(shè)置其高度為1.5,在選擇6個(gè)wall作為障礙物,布置好房間布局后,點(diǎn)擊“ok”按鈕退出。將場(chǎng)景命名為simrobtic2,保存在d:microsoft robotics developer studio 2008 r3 ,最終的場(chǎng)景如圖2-7所示。圖4-7 最終場(chǎng)景42編寫仿真程序4.2.1新建dss項(xiàng)目在visual c# 2008里,新建一個(gè)項(xiàng)目,如圖4-8所示,選擇microsoft robotics的dss service模板圖4-8 新建dss service 項(xiàng)目點(diǎn)擊“確定”后,出現(xiàn)如下選項(xiàng):圖4-9 選擇partner總共需要添加3個(gè)partner:simulation engine, simulated generic differential driver, simulated laser range finder。4.2.2獲取lrf數(shù)據(jù)獲取激光數(shù)據(jù)的思路為圖4-10所示:圖4-10 lrf獲取數(shù)據(jù)首先使用get函數(shù)給機(jī)器人人發(fā)送消息,然后接下來判斷數(shù)據(jù)是否錯(cuò)誤,如果數(shù)據(jù)正確的話則將數(shù)據(jù)保存在sensorstate的distancemeasurements屬性中,程序?yàn)閟icklrf.state sensorstate = (sicklrf.state)sensororfault 判斷數(shù)據(jù)的程序?yàn)椋篵ool haserror(portset sensororfault) fault fault = (fault)sensororfault; if (fault != null) logerror(fault.toexception(); return true; else return false; 在最后一步中的啟動(dòng)計(jì)時(shí)器是為了能夠不斷更新激光傳感器的數(shù)據(jù),編程語(yǔ)句為:activate(arbiter.receivewithiterator(false, _datetimeport, updatelaser);該句表示當(dāng)時(shí)間端口_datetimeport消息到來時(shí)就會(huì)執(zhí)行updatelaser函數(shù)一次。 taskqueue.enqueuetimer(timespan.frommilliseconds(600), _datetimeport);該句啟動(dòng)一個(gè)延時(shí)計(jì)數(shù),當(dāng)經(jīng)過600毫秒后,就往_datetimeport發(fā)送一個(gè)消息。4.2.3在窗口和txt文本中顯示 (1)在窗口中顯示lrf數(shù)據(jù)為了能夠在窗口中更直觀的觀察激光傳感器所獲得的數(shù)據(jù),首先在example3項(xiàng)目中添加一個(gè)名為laserdata窗體,再在該窗體中添加一個(gè)名為pictureboxlaser 的picturebox控件, 為了能夠更新pictureboxlaser控件,在窗體中新增一個(gè)方法updatelaserdata由于獲取傳感器數(shù)據(jù)是在example3service類中,需要在example3service類中能夠調(diào)用該窗體的updatelaserdata方法。首先在example3service中定義窗體變量:laserdata _laserdataform;然后在start方法中啟動(dòng)窗體: winformsserviceport.post(new runform() = _laserdataform = new laserdata(); _laserdataform.show(); return _laserdataform; ); 同時(shí)必須修改updatelaser任務(wù)函數(shù),在updatelaser中增加窗體的更新方法: winformsserviceport.post(new forminvoke() = _laserdataform.updatelaserdata(sensorstate.distancemeasurements); );這樣,當(dāng)每次獲得激光傳感器數(shù)據(jù)后,就會(huì)更新窗體中的pictureboxlaser控件了。(2)在txt文本中顯示機(jī)器人信息機(jī)器人是在不斷運(yùn)動(dòng)中的,希望能夠直觀的觀測(cè)當(dāng)前的機(jī)器人的信息,例如移動(dòng)機(jī)器人每個(gè)時(shí)刻的角速度和線速度。通過以下程序可實(shí)現(xiàn)其功能:try streamwriter sw = new streamwriter(d:textbook.txt,true);sw.writeline(response.entity.state.velocity.x+,+response.entity.state.velocity.z+,+response.entity.state.angularvelocity.x +, + response.entity.state.angularvelocity.z) ;sw.close(); catch (exception g) console.writeline(exception: + g.message); finally console.writeline(executing finally block.); 使用該段程序之前需添加引用using system.io; 該段程序可以將機(jī)器人p3dx的線速度和角速度寫在d盤下的名為textbook的txt文件中。4.2.4控制算法(1)獲得機(jī)器人位置信息在3中基于vfh的移動(dòng)機(jī)器人避障算法中需得到移動(dòng)機(jī)器人的x軸與目標(biāo)之間的夾角,而目標(biāo)信息是給定的,此時(shí)需要獲得機(jī)器人的位置信息。可以通過仿真引擎端口的querysimulationentity來完成。以下是獲得機(jī)器人位置的函數(shù)getentitystate()程序。 ienumerator getentitystate() engine.visualentity tmp = new engine.visualentity(); tmp.state = new microsoft.robotics.simulation.proxy.entitystate(); tmp.state.name = p3dx; var stateorfault = _simulationengineport.querysimulationentity(tmp); yield return stateorfault.choice(); if (!haserror(stateorfault) engine.querysimulationentityresponsetype response = (engine.querysimulationentityresponsetype)stateorfault; /顯示在_laserdataform中 _laserdataform.updateposeinfo(string.format(position: rnx=0, y=1, z=2rnorientation: rnx=3, y=4, z=5rn w=6,angle=7rnvelocity=8,9,10rna velocity=11,12,13, response.entity.state.pose.position.x, response.entity.state.pose.position.y, response.entity.state.pose.position.z, response.entity.state.pose.orientation.x, response.entity.state.pose.orientation.y, response.entity.state.pose.orientation.z, response.entity.state.pose.orientation.w, convertquaternion(response.entity.state.pose.orientation) * 180 / math.pi, response.entity.state.velocity.x, response.entity.state.velocity.y, response.entity.state.velocity.z, response.entity.state.angularvelocity.x, response.entity.state.angularvelocity.y, response.entity.state.angularvelocity.z); 上面一段程序同時(shí)可以更新4.2.3中定義的窗口,將所獲的當(dāng)前數(shù)據(jù)顯示在_laserdataform中。由于仿真環(huán)境中方向表示方法與現(xiàn)實(shí)生活中人們的習(xí)慣不一樣,為了把表示方向的四元組轉(zhuǎn)換成在平面中更加熟悉的角度,特定義了convertquaternion函數(shù)來實(shí)現(xiàn)該功能 private double convertquaternion(microsoft.robotics.physicalmodel.proxy.quaternion q) microsoft.robotics.physicalmodel.axisangle a = new microsoft.robotics.physicalmodel.axisangle(); microsoft.robotics.physicalmodel.quaternion q1 = new microsoft.robotics.physicalmodel.quaternion(); q1.x = q.x; q1.y = q.y; q1.z = q.z; q1.w = q.w; a = microsoft.robotics.physicalmodel.quaternion.toaxisangle(q1); if (float.isnan(a.angle) return 0; else if (math.sign(a.axis.y) run manifest或者按f5開始運(yùn)行仿真程序。機(jī)器人在場(chǎng)景中的運(yùn)行結(jié)果如圖4-13所示圖4-13 機(jī)器人在場(chǎng)景中運(yùn)動(dòng)其中激光數(shù)據(jù)在窗口中的顯示為圖4-14:圖4-14 窗口顯示 5結(jié)論 本課題是在向量場(chǎng)直方圖法的基礎(chǔ)上進(jìn)行了算法的修改,客服了vfh方法的的缺點(diǎn),即當(dāng)給定值太大或是太小時(shí)機(jī)器人都可能無法成功避開障礙物的缺陷。本避障算法可以自動(dòng)改變給定值的大小,并且選擇最優(yōu)給定值來保障機(jī)器人以最快和最安全的避開障礙物。最終在roboticstudio仿真系統(tǒng)中建立差分驅(qū)動(dòng)輪式移動(dòng)機(jī)器人的仿真環(huán)境,根據(jù)激光測(cè)距儀的障礙物距離信息,使移動(dòng)機(jī)器人能夠無碰撞地通過障礙區(qū)。參考文獻(xiàn) 1.borenstein j,koren ythe vector field histogram-fast obstacle avoidance for mobilerobotsieee jou!tlal ofrobotics and automation,1991(7):2782882.孫樹棟,林茂基于遺傳算法的多移動(dòng)機(jī)器人協(xié)調(diào)路徑規(guī)劃j自動(dòng)化學(xué)報(bào),2000 ,26(5):672-6763. 徐玉華, 張崇巍, 徐海琴. 基于激光測(cè)距儀的移動(dòng)機(jī)器人避障新方法j. 機(jī)器人, 2010,32(02):179-183.4. roland siegwart, lllah r. nourbakhsh著, 李人厚 譯. 自主移動(dòng)機(jī)器人導(dǎo)論. 西安交通大學(xué)出版社. 2006.5. 楊明, 王宏, 何克忠, 張鈸. 基于激光雷達(dá)的移動(dòng)機(jī)器人環(huán)境建模與避障j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省三元縣2025屆數(shù)學(xué)七下期末調(diào)研試題含解析
- 重視市場(chǎng)反饋優(yōu)化產(chǎn)品改進(jìn)計(jì)劃
- 汽車維修行業(yè)安全保障總結(jié)計(jì)劃
- 加強(qiáng)班級(jí)安全教育的措施計(jì)劃
- 打造班級(jí)特色活動(dòng)品牌計(jì)劃
- 高?;顒?dòng)的安保方案設(shè)計(jì)計(jì)劃
- 班級(jí)互動(dòng)小游戲的設(shè)計(jì)與意義計(jì)劃
- 2024年四川省國(guó)防科工辦下屬事業(yè)單位真題
- 腳本語(yǔ)言與編譯語(yǔ)言的比較試題及答案
- 2024年內(nèi)江市東興區(qū)城鎮(zhèn)公益性崗位招聘真題
- 2025屆蘇教版高考仿真模擬英語(yǔ)試卷含解析
- 【MOOC】美在民間-南京農(nóng)業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 食品配送服務(wù)質(zhì)量管理制度
- 2024年青海省西寧市公開招聘警務(wù)輔助人員(輔警)筆試必刷經(jīng)典測(cè)試卷(1)含答案
- 2mm土工膜長(zhǎng)絲土工布檢測(cè)報(bào)告合格證
- 透析器產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 第一單元《感悟道德力量》測(cè)試卷-高二思想政治課《職業(yè)道德與法治》附答案
- 避孕方法課件教學(xué)課件
- DB11T 745-2010 住宅采暖室內(nèi)空氣溫度測(cè)量方法
- 2025年江蘇高中物理學(xué)業(yè)水平合格性考試試卷試題(含答案解析)
- 代持房屋合作協(xié)議書范本
評(píng)論
0/150
提交評(píng)論