移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究畢業(yè)論文_第1頁(yè)
移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究畢業(yè)論文_第2頁(yè)
移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究畢業(yè)論文_第3頁(yè)
移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究畢業(yè)論文_第4頁(yè)
移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、編號(hào): 本科畢業(yè)設(shè)計(jì)(論文)移動(dòng)機(jī)器人合作推箱子任務(wù)的仿真研究a simulation study of mobile robots cooperating in box-pushing下屬學(xué)院 理工分院 專 業(yè) 電氣自動(dòng)化 班 級(jí) 08自動(dòng)化(2)班 學(xué) 號(hào) 姓 名 指導(dǎo)教師 職稱 完成日期 201 2 年 4 月 9 日誠(chéng) 信 承 諾我謹(jǐn)在此承諾:本人所寫(xiě)的畢業(yè)論文機(jī)器人物體收集任務(wù)仿真實(shí)現(xiàn)均系本人獨(dú)立完成,沒(méi)有抄襲行為,凡涉及其他作者的觀點(diǎn)和材料,均作了注釋,若有不實(shí),后果由本人承擔(dān)。 承諾人(簽名): 年 月 日摘要【摘要】多個(gè)自主型機(jī)器人,可以在不依賴任何外部控制的情況下,協(xié)同完成任

2、務(wù)。本文研究的是兩個(gè)相同的機(jī)器人在一個(gè)長(zhǎng)形箱子的一側(cè)時(shí),協(xié)同合作直行推箱子的任務(wù)。在計(jì)算機(jī)上應(yīng)用robotic studio仿真系統(tǒng)進(jìn)行仿真,c#語(yǔ)言編寫(xiě)機(jī)器人的控制程序。機(jī)器人并不進(jìn)行通信,依據(jù)自我的激光傳感器感知所處環(huán)境,進(jìn)行合作,完成任務(wù)?!娟P(guān)鍵詞】多機(jī)器人;合作;推箱子;仿真。abstract【abstract】many independent robots can finish the task together without external control. this paper focuses on the study of two same robots cooperati

3、on in pushing box straight when they are in the same side of the box. robotic studio simulation system will be applied for emulation, and also the c# language will be used to for the control program of robots. there are no communications between robots, because they can cooperate to finish the task

4、by using their own laser sensors to know the environment.【keywords】robots; cooperate;box-pushing; simulation.目錄摘要iiabstractiii目錄iv1緒論11.1多機(jī)器人協(xié)作的背景及意義11.2本文研究?jī)?nèi)容22研究方法32.1問(wèn)題描述32.2激光傳感器32.3差分驅(qū)動(dòng)輪62.4推箱子控制策略72.5應(yīng)用軟件仿真和開(kāi)發(fā)環(huán)境83仿真實(shí)現(xiàn)103.1應(yīng)用軟件仿真環(huán)境建立103.2激光數(shù)據(jù)采集和處理123.3推箱子控制程序界面133.4推箱子控制程序154仿真結(jié)果174.1實(shí)驗(yàn)結(jié)果174.2實(shí)

5、驗(yàn)分析185總結(jié)19參考文獻(xiàn)20致謝22附錄231 緒論1.1 多機(jī)器人協(xié)作的背景及意義隨著計(jì)算機(jī)、電子器件、通信、自動(dòng)控制技術(shù)和傳感器的高速發(fā)展與提高,自主移動(dòng)機(jī)器人也高速發(fā)著。自主移動(dòng)機(jī)器人具有多個(gè)模塊:由傳感器為主的感知模塊,由電子器件和自動(dòng)控制技術(shù)構(gòu)成的處理、決策和執(zhí)行等諸多的模塊。通過(guò)這些模塊,機(jī)器人可以像人一樣自主的進(jìn)行判斷,獨(dú)立的處理問(wèn)題,更好的完成任務(wù)。自主性和適應(yīng)性是自主移動(dòng)機(jī)器人的最重要的特點(diǎn)。自主性使機(jī)器人在指定的環(huán)境下,不依靠外界的實(shí)時(shí)控制,自動(dòng)的完成任務(wù)。適應(yīng)性使機(jī)器人可以適應(yīng)外部環(huán)境的實(shí)時(shí)變化,為完成任務(wù),進(jìn)行自主的判斷和控制,調(diào)節(jié)自身的參數(shù),做出相應(yīng)的動(dòng)作。自主移

6、動(dòng)機(jī)器人的自主性和實(shí)時(shí)性是相輔相成的,缺一不可。1990年由美國(guó)麻省理工學(xué)院教授科林安格爾、海倫格雷納和羅德尼布魯克斯創(chuàng)立irobot公司。irobot公司是世界上知名的機(jī)器人研究制造公司,并大量的軍用、警用、探險(xiǎn)、家用機(jī)器人產(chǎn)品,由irobot設(shè)計(jì)制造的機(jī)器人幫助美國(guó)軍方進(jìn)行掃雷,也可以偵測(cè)敵軍,用衛(wèi)星導(dǎo)航gps把數(shù)據(jù)傳回指揮中心,進(jìn)行導(dǎo)彈空襲,命中率奇高。美國(guó)911事件中,深入世貿(mào)大廈底下協(xié)助搜救工作的四具機(jī)器人“packbot”就是irobot的產(chǎn)品。2002年美國(guó)國(guó)家地理頻道胡夫金字塔密室探險(xiǎn),那具具備光纖鏡頭、高解像度相機(jī)、全球最小地面雷達(dá)儀的鉆壁機(jī)器人“金字塔漫游者”也是irobo

7、t的產(chǎn)品。直到2011年,irobot已經(jīng)于全球銷售超過(guò)6百萬(wàn)的家用吸塵器機(jī)器人?,F(xiàn)實(shí)的工業(yè)生產(chǎn)和日常生活中,我們已經(jīng)應(yīng)用了大量的機(jī)器人來(lái)輔助我們?nèi)祟愅瓿扇蝿?wù),使我們的工業(yè)生產(chǎn)、制造的效率大大提高,節(jié)省了人力勞動(dòng)力,節(jié)省了生產(chǎn)成本,也極大的方便了我們的日常生活。如今機(jī)器人的產(chǎn)業(yè)正高速發(fā)展,可以預(yù)見(jiàn)機(jī)器人的應(yīng)用有著巨大的市場(chǎng)前景。多自主機(jī)器人協(xié)作的方法,可以完成一個(gè)機(jī)器人不能完成的復(fù)雜任務(wù),大大的提高機(jī)器人完成任務(wù)的效率。如探索任務(wù),一個(gè)機(jī)器人要探索完整個(gè)區(qū)域,需要的時(shí)間是很長(zhǎng)的,而多個(gè)機(jī)器人協(xié)同探索在很短的時(shí)間中就可以完成。在搬運(yùn)任務(wù)中,對(duì)于重物和長(zhǎng)形物體,要怎么實(shí)現(xiàn)搬運(yùn)呢?這就需要多個(gè)機(jī)器人

8、相互合作來(lái)完成。在多自主機(jī)器人協(xié)作的研究中,機(jī)器人合作推箱子是重要的研究課題之一。在碼頭、倉(cāng)庫(kù)等貨物流通的地方,人們需要使用叉車、起重機(jī)等車輛機(jī)械或直接人力來(lái)實(shí)現(xiàn)物體的搬運(yùn)和裝載,但是即使使用機(jī)械車輛,還是需要人為來(lái)進(jìn)行控制,那么能不能設(shè)計(jì)出機(jī)器人,使它們自動(dòng)的把貨物搬運(yùn)到指定地點(diǎn)呢?由于貨物的重量、體積的大小不同,機(jī)器人的搬運(yùn)能力是有限的,對(duì)超重的物體我們不可能為此設(shè)計(jì)不同的機(jī)器人,所以我們想到了多機(jī)器人合作搬運(yùn)的方法,這樣不管貨物多種,我們可以用兩個(gè)、三個(gè)或者更多來(lái)搬運(yùn)貨物。多機(jī)器人的應(yīng)用將大大節(jié)省人力、時(shí)間,提高工作效率。多自主移動(dòng)機(jī)器人的研究,可以提高人們的生活水品和生產(chǎn)效率,在研究中

9、不斷的創(chuàng)新和解決問(wèn)題,可以學(xué)到新的知識(shí),鞏固我們的基礎(chǔ)知識(shí),并學(xué)會(huì)靈活地運(yùn)用。1.2 本文研究?jī)?nèi)容兩個(gè)相同的機(jī)器人在箱子的同一側(cè),相互合作往前推箱子,但因?yàn)槟Σ亮?,兩個(gè)機(jī)器人對(duì)箱子的作用點(diǎn)的不對(duì)稱等問(wèn)題干擾,會(huì)使箱子發(fā)生旋轉(zhuǎn)、偏移,從而影響推箱子任務(wù)的完成,所以需要合理的協(xié)作方法使兩個(gè)機(jī)器人共同完成推箱子的任務(wù)。本文我們要研究以下幾個(gè)方面:(1)機(jī)器人對(duì)環(huán)境的感知。介紹機(jī)器人使用了激光傳感器來(lái)感知機(jī)器人所處外部環(huán)境。 機(jī)器人差分驅(qū)動(dòng)輪。介紹機(jī)器人基于激光傳感器對(duì)外界環(huán)境的感知,機(jī)器人采取相應(yīng)的動(dòng)作,控制機(jī)器人差分驅(qū)動(dòng)輪來(lái)設(shè)定機(jī)器人的速度。機(jī)器人仿真平臺(tái)跟編程軟件。介紹一下robotic stu

10、dio仿真系統(tǒng),機(jī)器人的仿真環(huán)境和編程控制機(jī)器人的方法。(2)如何實(shí)現(xiàn)。具體描述兩個(gè)機(jī)器人相互合作推箱子的過(guò)程,給出流程圖,及其控制算法。(3)實(shí)驗(yàn)結(jié)果。本段講的是怎么樣設(shè)計(jì)這個(gè)實(shí)驗(yàn)的,如何去做。分析實(shí)驗(yàn)中出現(xiàn)的問(wèn)題,并給出解決方法。(4)總結(jié)。這部分將分析研究仿真結(jié)果與目標(biāo)要求對(duì)比分析,仿真效果。2 研究方法2.1 問(wèn)題描述兩個(gè)完全相同的自主機(jī)器人在箱子的同一側(cè),保持直行推箱子。在仿真中加入人為的干擾,使箱子發(fā)生旋轉(zhuǎn),偏離直行方向,兩個(gè)機(jī)器人互不干涉的進(jìn)行自主判斷,并進(jìn)行自我調(diào)節(jié),行駛快的機(jī)器人減速停止,行駛慢的機(jī)器人繼續(xù)行駛,直到箱子方向重新向正前方時(shí),兩機(jī)器人再以相同的速度行駛推箱子。研

11、究的難點(diǎn)在于機(jī)器人完全相同,即程序也相同,而機(jī)器人在箱子旋轉(zhuǎn)時(shí),必然有一個(gè)機(jī)器人需要減速調(diào)節(jié),一個(gè)機(jī)器人需要加速調(diào)節(jié)。針對(duì)以上問(wèn)題,初步構(gòu)想機(jī)器人推箱子流程圖,如圖2-1所示。機(jī)器人激光傳感器的掃描進(jìn)行外部環(huán)境的判斷人為干擾機(jī)器人自我調(diào)節(jié)圖2-1 多機(jī)器人推箱子流程圖2.2 激光傳感器激光傳感器又可以稱作激光測(cè)距儀,是機(jī)器人最常用到的傳感器之一,可以來(lái)檢測(cè)機(jī)器人當(dāng)前所處的位置,以及前方的情況,進(jìn)行避障。激光數(shù)據(jù)是在機(jī)器人正前方180范圍內(nèi),共發(fā)射了361條激光,機(jī)器人通過(guò)激光傳感器來(lái)確定箱子與機(jī)器人之間的傾斜角度。如圖2-2所示 機(jī)器人018090圖2-2 激光傳感器示意圖在此研究中,并不是用

12、激光傳感器來(lái)進(jìn)行避障,而是應(yīng)用激光傳感器來(lái)感知所處環(huán)境的變化,來(lái)確定機(jī)器人當(dāng)前所處情況,進(jìn)而判斷執(zhí)行相應(yīng)的動(dòng)作。即激光傳感器將檢測(cè)機(jī)器人和箱子之間的夾角角度,如圖2-3所示。 機(jī)器人yx0圖2-3 測(cè)量計(jì)算如圖2-3中,我們?cè)O(shè)機(jī)器人的激光傳感器為遠(yuǎn)點(diǎn),正前方為y軸,建立平面直角坐標(biāo)系,其中虛線為箱子,機(jī)器人與箱子的傾斜角度為。前面已知機(jī)器人激光傳感器在正前方180度發(fā)射了361條激光,激光到達(dá)物體時(shí)會(huì)反射回來(lái),得到此條激光角度時(shí),物體和機(jī)器人激光傳感器的距離。要測(cè)機(jī)器人與箱子之間的傾斜角度,我們需要以下幾個(gè)步驟:1. 將激光傳感器的數(shù)據(jù)換成算成直角坐標(biāo)數(shù)據(jù);2. 利用最小二乘原理進(jìn)行曲線擬合,

13、算出如圖2-3中虛線的斜率,即可算出。機(jī)器人的激光傳感器共發(fā)射361條激光,所傳回的數(shù)據(jù)儲(chǔ)存在一個(gè)361長(zhǎng)度的數(shù)組中。此時(shí)我們已知每條激光的長(zhǎng)度,也知道第一條激光為0,第361條激光為180,可以將極坐標(biāo)轉(zhuǎn)換為直角坐標(biāo)。最小二乘原理:最小二乘法是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過(guò)最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。算術(shù)平均值 (1-1)殘差的平方和 (1-2)式中設(shè)不按式(1-1)來(lái)計(jì)算,而按其他方式計(jì)算,如對(duì)于n個(gè)獨(dú)立等精度的數(shù)據(jù),任取其中n+k個(gè)計(jì)算其平均值,記為y,其殘差的平方和為: (1-3)式中,。據(jù)式(1-2)及式(1-3),并注意 ,則有:所以,即為最小值,記為:。由此可見(jiàn),真值的最

14、佳估計(jì)值即算術(shù)平均值,具有殘差平方和最小值的特性,這就是最小二乘原理。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。曲線擬合:在科學(xué)實(shí)驗(yàn)與統(tǒng)計(jì)研究中,常常需要從一組數(shù)據(jù)中求得變量x與y之間最佳函數(shù)關(guān)系式y(tǒng)=f(x)。這就需要用到最小二乘原理及曲線擬合來(lái)解決問(wèn)題。在這里只用到直線擬合。兩個(gè)變量間的線性關(guān)系是一種最簡(jiǎn)單的、也是最理想的函數(shù)關(guān)系。運(yùn)用最小二乘原理,其基本原則是各個(gè)數(shù)據(jù)點(diǎn)與擬合直線的偏差的平方和為最小值。假定最佳擬合直線回歸方程為: y=a+bx (2-1)式中a為直線的截距,b為其斜率。令 (2-2)據(jù)最小二

15、乘原理要使為最小,按照通常求極限的方法,去其對(duì)a,b的偏導(dǎo)數(shù),并令其為0,可得兩個(gè)方程,對(duì)于兩個(gè)未知數(shù)a、b,有唯一解。 (2-3) 則有如下方程組,稱之為正則方程組: (2-4) 解得: (2-5) 已知式(2-5)中b為直線的斜率,b與的關(guān)系為:b=tan。2.3 差分驅(qū)動(dòng)輪輪式移動(dòng)機(jī)器人是比較簡(jiǎn)單的機(jī)器人形式,它由一個(gè)萬(wàn)向輪作為支撐,兩個(gè)差分驅(qū)動(dòng)輪來(lái)進(jìn)行行駛,通過(guò)控制左右差分驅(qū)動(dòng)輪的速度,來(lái)進(jìn)行機(jī)器人行駛方向的旋轉(zhuǎn)和機(jī)器人行駛速度的控制。在此研究中,我不需要對(duì)機(jī)器人進(jìn)行細(xì)致的控制,因?yàn)閮蓚€(gè)機(jī)器人的在最初時(shí)都是朝向箱子的正前方的,只需保證機(jī)器人左右兩個(gè)差分驅(qū)動(dòng)輪的速度一樣就可以完成研究,不

16、考慮機(jī)器人的轉(zhuǎn)向問(wèn)題,即左右差分驅(qū)動(dòng)輪速度不同時(shí),可以調(diào)整機(jī)器人行駛方向。利用已得到的b值(如圖3所示,虛線的斜率),作為因變量,構(gòu)造機(jī)器人行駛速度v的函數(shù),求得函數(shù)v,使機(jī)器人依據(jù)b值調(diào)整行駛速度。2.4 推箱子控制策略兩個(gè)機(jī)器人協(xié)同推箱子,其重點(diǎn)和難點(diǎn)在于相同的兩個(gè)機(jī)器人的合作,而且他們之間并沒(méi)有及時(shí)通訊,機(jī)器人只能利用自我的激光傳感器來(lái)進(jìn)行外部環(huán)境的感知,進(jìn)而協(xié)同合作。在完全無(wú)干擾的情況下,兩個(gè)機(jī)器人可以直行推箱子,很好的完成任務(wù),但現(xiàn)實(shí)環(huán)境下,由于地面高低摩擦力的不同,會(huì)出現(xiàn)一個(gè)機(jī)器人行駛的慢,另一個(gè)機(jī)器人相對(duì)較快的情況,這就會(huì)使箱子發(fā)生旋轉(zhuǎn),此時(shí)需要機(jī)器人進(jìn)行動(dòng)作,調(diào)整自我的行駛速度

17、,進(jìn)而調(diào)整箱子的方向。此研究中的機(jī)器人為基于行為的機(jī)器人,把機(jī)器人的動(dòng)作和所處環(huán)境進(jìn)行一一對(duì)應(yīng)。當(dāng)箱子方向偏離正前方時(shí),即箱子發(fā)生了旋轉(zhuǎn),此時(shí)機(jī)器人可以通過(guò)激光傳感器來(lái)感知到箱子的旋轉(zhuǎn),如圖4所示 機(jī)器人 機(jī)器人圖4 機(jī)器人推箱子的一種情況雖然兩個(gè)機(jī)器人互不相干,沒(méi)有通訊系統(tǒng),但機(jī)器人通過(guò)箱子的旋轉(zhuǎn)進(jìn)行了通信。此時(shí),兩個(gè)機(jī)器人都可以通過(guò)激光傳感器檢測(cè)到機(jī)器人和箱子之間的旋轉(zhuǎn)角度和方向。當(dāng)發(fā)生如圖3所示的情況時(shí),左側(cè)機(jī)器人自主進(jìn)行判斷,將繼續(xù)行駛,右側(cè)機(jī)器人檢測(cè)到此情況時(shí),將自主的減速停止,此時(shí),由于左側(cè)機(jī)器人行駛,右側(cè)機(jī)器人停止,箱子和機(jī)器人之間的角度將慢慢的減小,直至兩個(gè)機(jī)器人箱子和機(jī)器人平

18、行,此時(shí)兩個(gè)機(jī)器人將以同一設(shè)定速度開(kāi)始行駛。在現(xiàn)實(shí)環(huán)境中,機(jī)器人將面臨復(fù)雜的地理環(huán)境,而地面的材質(zhì)的不同,是否平整等問(wèn)題的影響下,兩個(gè)機(jī)器人以相同的設(shè)定速度行駛,但因?yàn)槟Σ亮Φ牟煌?,機(jī)器人實(shí)際的行駛速度會(huì)發(fā)生差異,而兩個(gè)機(jī)器人行駛速度的一快一慢,會(huì)使箱子發(fā)生旋轉(zhuǎn),進(jìn)而影響機(jī)器人推箱子的方向,使機(jī)器人不能直行推箱子。在仿真環(huán)境中,并沒(méi)有相應(yīng)的干擾因素,所以如果不自己加入相應(yīng)的干擾因素,兩個(gè)機(jī)器人將非常完美的完成直行推箱子的任務(wù),從而沒(méi)有達(dá)到此次研究機(jī)器人合作的初衷,所以,我們加入了認(rèn)為的干擾因素。通過(guò)c#編程,窗口事件來(lái)控制機(jī)器人的停止和行駛,當(dāng)機(jī)器人行駛時(shí),單擊窗口按鈕,相應(yīng)的機(jī)器人將停止行進(jìn)

19、,另一個(gè)機(jī)器人會(huì)繼續(xù)行駛,此時(shí)箱子會(huì)發(fā)生旋轉(zhuǎn),以此來(lái)實(shí)現(xiàn)機(jī)器人行駛的一快一慢。當(dāng)再次點(diǎn)擊時(shí),停止的機(jī)器人將按照設(shè)定的速度繼續(xù)行駛,依照協(xié)作方法,繼續(xù)直行推箱子。2.5 應(yīng)用軟件仿真和開(kāi)發(fā)環(huán)境在本研究課題多機(jī)器人推箱子任務(wù)的仿真中,所用到的是仿真環(huán)境為微軟推出的機(jī)器人仿真平臺(tái)visual simulation environment 2008 r3軟件完成,機(jī)器人的控制程序和控制窗口用visual studio 2008 c#編程實(shí)現(xiàn)。mrds為我們提供了一個(gè)很好的虛擬環(huán)境實(shí)驗(yàn)平臺(tái),在此可視化仿真平臺(tái)上,我們可以模擬真實(shí)的物理環(huán)境,也可以自己依據(jù)研究要求構(gòu)造搭建仿真環(huán)境。由于采用了agela物理

20、引擎,所以可以在虛擬環(huán)境中模仿真實(shí)的物理環(huán)境。仿真環(huán)境是由虛擬引擎服務(wù)、物理引擎管理包、本地硬件引擎庫(kù)和實(shí)體幾部分組成的。虛擬引擎服務(wù)組件主要用于繪制實(shí)體部分,同時(shí)它還為硬件引擎提供虛擬的時(shí)間。該組件建立了整個(gè)虛擬世界的框架,同時(shí)它還提供了整個(gè)虛擬環(huán)境的服務(wù)或者分布式的系統(tǒng);物理引擎管理包使用戶從底層的物理引擎界面脫離出來(lái)的組件,該組件為硬件模擬提供了一個(gè)更加簡(jiǎn)潔和更容易管理的界面;本地硬件引擎庫(kù)支持硬件ageia physx技術(shù)的處理器可以通過(guò)ageia physx技術(shù)加速;實(shí)體是指虛擬世界的一些仿真實(shí)體模型,通過(guò)microsoft robotic studio給這些實(shí)體預(yù)定義,讓用戶在虛擬

21、環(huán)境中能夠更加的調(diào)用,用戶可以在虛擬環(huán)境中使用這些預(yù)定義模塊建立的復(fù)雜的環(huán)境,如箱子,球體,桌椅,等物體。mrds的虛擬環(huán)境有很多優(yōu)點(diǎn):(1)開(kāi)發(fā)者可以在虛擬環(huán)境中分步進(jìn)行調(diào)試,隨意的添加構(gòu)造仿真環(huán)境中的物體,這在真實(shí)物理環(huán)境下是很難實(shí)現(xiàn)的。(2)在虛擬環(huán)境里,已經(jīng)提供了多種真實(shí)環(huán)境中的機(jī)器人模型、傳感器和運(yùn)動(dòng)系統(tǒng),開(kāi)發(fā)者可以再虛擬環(huán)境中大膽的進(jìn)行試驗(yàn),測(cè)試,而不擔(dān)心會(huì)因操作不當(dāng)而造成損失。(3)開(kāi)發(fā)者可以自己隨意的添加組件到機(jī)器人上面,然而在虛擬環(huán)境里很容易實(shí)現(xiàn),但是在現(xiàn)實(shí)環(huán)境里就沒(méi)那么容易了(4)機(jī)器人在虛擬系統(tǒng)中可以實(shí)現(xiàn)學(xué)習(xí)功能,可以在特殊的虛擬環(huán)境,讓其在虛擬環(huán)境里進(jìn)行學(xué)習(xí)然而在這個(gè)虛

22、擬系統(tǒng)中也還是有缺點(diǎn)和局限性的:mrds所提供的虛擬環(huán)境缺乏真實(shí)環(huán)境中的噪聲數(shù)據(jù),所以一旦在實(shí)際環(huán)境中運(yùn)用在怎么流暢還是要利用時(shí)間去調(diào)試。實(shí)際的機(jī)器人也會(huì)時(shí)不時(shí)的出現(xiàn)一些小問(wèn)題,在實(shí)際環(huán)境里還是有些誤差的,虛擬系統(tǒng)還是無(wú)法準(zhǔn)確的模擬一切的,尤其是實(shí)時(shí)性問(wèn)題。在visual studio 2008中創(chuàng)建一個(gè)dss項(xiàng)目,由于在仿真環(huán)境中利用到了差分驅(qū)動(dòng)輪,激光傳感器。因此,需要添加三個(gè)partner:simulation engine, simulated generic differential driver, simulated laser range finder。在visual simul

23、ation environment 2008 r3中創(chuàng)建一個(gè)仿真環(huán)境。如圖所示。天空、地板、還有光源和推箱子所必須的兩個(gè)帶有差分驅(qū)動(dòng)輪、激光傳感器的自主型移動(dòng)機(jī)器人和一個(gè)長(zhǎng)方形的箱子。3 仿真實(shí)現(xiàn)3.1 應(yīng)用軟件仿真環(huán)境建立應(yīng)用microsoft robotic studio軟件創(chuàng)立仿真環(huán)境:地面、天空、箱子和兩個(gè)機(jī)器人,并對(duì)機(jī)器人進(jìn)行修飾和添加激光傳感器。仿真環(huán)境如圖3-1所示。圖3-1仿真環(huán)境示意圖對(duì)于機(jī)器人的控制程序,此研究中使用c#語(yǔ)言編程實(shí)現(xiàn),在c#中我們可以創(chuàng)建傳感器監(jiān)視窗口和控制按鈕,十分方便。機(jī)器人的控制程序可以簡(jiǎn)單的分析為: 機(jī)器人從傳感器獲取傳感器數(shù)據(jù)機(jī)器人自主進(jìn)行運(yùn)算輸出

24、控制命令要想實(shí)現(xiàn)機(jī)器人合作推箱子,自主機(jī)器人根據(jù)箱子斜率b:為正,為零,為負(fù),需要的行為模型為:依照設(shè)定速度行駛,減速停止。每個(gè)機(jī)器人是應(yīng)該按照設(shè)定速度行駛呢,還是減速停止,是根據(jù)箱子斜率b計(jì)算的,而箱子的斜率b則是由機(jī)器人的激光傳感器數(shù)據(jù)計(jì)算出來(lái)的。此外,因?yàn)槭莾蓚€(gè)機(jī)器人合作推箱子機(jī)器人主服務(wù)程序流程圖如圖3-2所示:機(jī)器人判斷自我的左右機(jī)器人速度v的設(shè)定標(biāo)志位p是否為真計(jì)算箱子與機(jī)器人傾斜角,即b值3-2機(jī)器人程序流程圖具體實(shí)現(xiàn)方法如下:在visual c# 2008里,新建一個(gè)項(xiàng)目,選擇microsoft robotics的dss service模板,并在“partners”選項(xiàng)卡中,選

25、擇希望添加的合作關(guān)系,然后點(diǎn)擊“add as partner”按鈕。其中simulation engine是仿真所必須的,其他的可根據(jù)創(chuàng)建的環(huán)境來(lái)選擇,在此研究仿真中,我們?cè)诜抡姝h(huán)境中使用了差分驅(qū)動(dòng)輪和激光傳感器。因此,總共需要添加三個(gè)partner:simulation engine, simulated generic differential driver, simulated laser range finder。當(dāng)然也可以創(chuàng)建完后,在程序里手工添加。 / / simulationengine partner / partner(simulationengine, contract =

26、 engine.contract.identifier, creationpolicy = partnercreationpolicy.useexistingorcreate) engine.simulationengineport _simulationengineport = new engine.simulationengineport(); / / simulatedlrfservice partner / partner(simulatedlrfservice, contract = laserrangefinder.contract.identifier, creationpoli

27、cy = partnercreationpolicy.useexistingorcreate) sicklrf.sicklrfoperations _simulatedlrfserviceport = new sicklrf.sicklrfoperations(); / / simulateddifferentialdriveservice partner / partner(simulateddifferentialdriveservice, contract = drive.contract.identifier, creationpolicy = partnercreationpolic

28、y.useexistingorcreate) drive.driveoperations _simulateddifferentialdriveserviceport = new drive.driveoperations();以上生成分別對(duì)應(yīng)了我們所選擇的三個(gè)合作關(guān)系,同時(shí)定義了跟每個(gè)伙伴的消息端口。也可以在此處用手工修改合作關(guān)系。dss程序是從e1service類的start方法開(kāi)始運(yùn)行的。因?yàn)闄C(jī)器人仿真運(yùn)行軟件的原因,兩個(gè)機(jī)器人的dss程序雖然一樣,但需要不同的名字,所以另一個(gè)機(jī)器人程序命名為e2。3.2 激光數(shù)據(jù)采集和處理機(jī)器人往哪個(gè)方向行駛,實(shí)現(xiàn)合作等重要問(wèn)題都是通過(guò)激光傳感器來(lái)感知

29、外界環(huán)境后判斷出來(lái)的獲取激光數(shù)據(jù): ienumerator updatelaser(datetime datetime) / ienumerator updatelaser() var sensororfault = _simulatedlrfserviceport.get(); yield return sensororfault.choice(); if (!haserror(sensororfault) sicklrf.state sensorstate = (sicklrf.state)sensororfault; winformsserviceport.post(new formin

30、voke() = _laserdataform.updatelaserdata(sensorstate.distancemeasurements); ); /*此處添加控制代碼*/ activate(arbiter.receivewithiterator(false, _datetimeport, updatelaser); taskqueue.enqueuetimer(timespan.frommilliseconds(600), _datetimeport); yield break; 此段程序?yàn)槊窟^(guò)600毫秒就會(huì)執(zhí)行一下updatelaser,這樣激光數(shù)據(jù)每過(guò)600毫秒就更新一次,以此來(lái)

31、實(shí)時(shí)檢測(cè)外部環(huán)境的變化,是機(jī)器人作出正確可行的行為,完成任務(wù)。已知激光傳感器總共發(fā)射361條激光,每條激光的長(zhǎng)度存在一個(gè)長(zhǎng)度為361的數(shù)組sensorstate.distancemeasurements中。而曲線擬合中我們用到的是直角坐標(biāo),所以我們需要把激光的極坐標(biāo)轉(zhuǎn)化為直角坐標(biāo),并存入數(shù)組_x,_y,程序如下:for (int i = 170; i 191; i+=10) ai = sensorstate.distancemeasurementsi; _xm = ai * math.cos( i * math.pi / 360); _ym = ai * math.sin( i * math.

32、pi / 360); m+; m = 0;利用最小二乘原理進(jìn)行曲線擬合,曲線擬合函數(shù)public double line()如下,其中我們用到了求和函數(shù)public double sum(double z)和求積的和函數(shù)public double sum2(double z, double z1):public double line() double k = 0; x = sum(_x); x2 = sum2(_x, _x); y = sum(_y); xy = sum2(_x, _y); int n = 3; k = (n * xy - x * y) / (n * x2 - x * x);

33、 /為斜率 return k; /求和函數(shù) public double sum(double z) double n = 0; for (i = 0; i 3; i+) n += zi; return n; /求積的和函數(shù) public double sum2(double z, double z1) double n = 0; for (i = 0; i 3; i+) n += zi * z1i; return n; 3.3 推箱子控制程序界面在仿真的過(guò)程中,我們需要干擾來(lái)測(cè)試機(jī)器人合作是否有效的執(zhí)行。我們需要控制其中一個(gè)機(jī)器人突然停止,這可以通過(guò)窗口事件實(shí)現(xiàn),窗口事件可以手工的設(shè)置機(jī)器人狀

34、態(tài)。此時(shí),我們需要在仿真服務(wù)中定義操作接口,通過(guò)消息來(lái)激活相應(yīng)的操作。首先在窗體中增加一個(gè)按鈕,當(dāng)點(diǎn)擊這個(gè)按鈕時(shí),希望能夠使相應(yīng)的機(jī)器人暫停行駛或繼續(xù)行駛。為了能夠在窗口中向主服務(wù)程序發(fā)送消息,我們需要把主服務(wù)程序的消息端口告訴窗體類,在窗體類中新增一個(gè)全局變量保存主服務(wù)程序的消息端口,依靠此端口,我們?cè)O(shè)置機(jī)器人的狀態(tài),在主服務(wù)程序中進(jìn)行判斷并控制機(jī)器人的輸出。圖3-3控制和顯示窗口如圖3-3所示,有兩個(gè)窗體,每個(gè)窗體上部為機(jī)器人激光傳感器的平面示意圖,此圖一機(jī)器人激光傳感器發(fā)射處為原點(diǎn),正前方為y軸,水平為x軸;下部有一個(gè)按鈕,即人為干擾的“停止/啟動(dòng)”按鈕。主服務(wù)程序中,獲得機(jī)器人狀態(tài)的函

35、數(shù)如下,并輸出機(jī)器人狀態(tài),其中p為false時(shí),機(jī)器人輸出速度為v,p為true時(shí),機(jī)器人輸出速度設(shè)為0:public virtual ienumerator pausedenginehandler(pausedengine state) var stateorfault = _simulationengineport.get(); yield return stateorfault.choice(); p = state.paused; loginfo(paused mseeage + p.tostring(); 3.4 推箱子控制程序圖3-4仿真效果在仿真環(huán)境中,有兩個(gè)機(jī)器人,當(dāng)箱子發(fā)生旋

36、轉(zhuǎn)時(shí),如圖3-4所示,左側(cè)的機(jī)器人需要加速行駛,右側(cè)機(jī)器人需要減速行駛,即雖然兩個(gè)機(jī)器人檢測(cè)計(jì)算出相同的b值,但因?yàn)槲挥谙渥幼笥覀?cè)的差別,也需要產(chǎn)生不同的動(dòng)作,所以研究需要機(jī)器人對(duì)于相對(duì)于箱子的自我位置進(jìn)行判讀。而左右側(cè)的判斷只需進(jìn)行一次就可以,實(shí)現(xiàn)函數(shù)如下:/判斷左右 if(!rlflag) for (int i = 0; i sensorstate.distancemeasurements.length; i+) if (sensorstate.distancemeasurementsi 8000) r = i; l+; if (r - l / 2) 180) rl = 1; else r

37、l = -1; rlflag=true; loginfo(rl + rl.tostring(); loginfo(rlflag + rlflag.tostring(); 其中rlflag為是否分出左右的標(biāo)志位,當(dāng)為false時(shí),機(jī)器人判斷箱子中點(diǎn)相對(duì)于機(jī)器人第180條激光的位置,當(dāng)機(jī)器人激光小于8000的激光編號(hào)的中間值小于180時(shí),把全局變量rl設(shè)為1,表示此機(jī)器人為左側(cè)機(jī)器人,否則rl設(shè)為-1,為右側(cè)機(jī)器人,并把rlflag設(shè)為true,下次獲得激光時(shí)將不再判斷機(jī)器人的左右。圖3-4是一種仿真情況:在仿真進(jìn)行中,兩個(gè)機(jī)器人直行推箱子,這是突然施加人為干擾,即單擊右側(cè)控制窗體的“啟動(dòng)/停止”

38、按鈕,此時(shí),右側(cè)機(jī)器人突然停止,左側(cè)機(jī)器人的激光傳感器檢測(cè)到外側(cè)數(shù)據(jù),經(jīng)過(guò)計(jì)算得出b值,建立v=f(b)的函數(shù):v=*rl*b+0.4 (3-1)在式3-1中,0.4為機(jī)器人初始設(shè)定速度,b為0時(shí),機(jī)器人輸出速度0.4;rl為機(jī)器人左右判斷值,當(dāng)左右不同時(shí),rl為1或-1,使機(jī)器人在初始速度0.4的基礎(chǔ)上,加減與b的值成比例的速度,為比例系數(shù),當(dāng)不同時(shí),機(jī)器人輸出速度的超調(diào)不同,控制方法的好壞不同,在試驗(yàn)中,的值設(shè)為0.5;在以上的基礎(chǔ)上,本研究又對(duì)機(jī)器人的速度進(jìn)行了約束,即0=v=0.5,具體程序如下:if (v 0.5) _simulateddifferentialdriveservice

39、port.setdrivespeed(0.4f, 0.4f); _simulateddifferentialdriveserviceport.setdrivespeed(v, v);4 仿真結(jié)果4.1 實(shí)驗(yàn)結(jié)果我們利用機(jī)器人仿真軟件進(jìn)行仿真。在這個(gè)仿真環(huán)境中,有一個(gè)長(zhǎng)形的箱子,在箱子的同一側(cè),有兩個(gè)完全相同的機(jī)器人,機(jī)器人的任務(wù)就是相互協(xié)作,完成直線推箱子的任務(wù)。圖4-1機(jī)器人合作推箱子效果示意圖如圖4-1所示,機(jī)器人能夠合作向前直行推箱子,當(dāng)有一側(cè)的機(jī)器人出現(xiàn)故障停止或減速行駛時(shí),另一側(cè)的機(jī)器人會(huì)及時(shí)的發(fā)現(xiàn),并停止行駛進(jìn)入等待狀態(tài),當(dāng)停止的機(jī)器人繼續(xù)行駛并使箱子又恢復(fù)到面向機(jī)器人正前方時(shí),機(jī)

40、器人將恢復(fù)到初始狀態(tài),繼續(xù)同時(shí)向前推箱子。4.2 實(shí)驗(yàn)分析在實(shí)行仿真的過(guò)程之中,會(huì)出項(xiàng)各種各樣的問(wèn)題和錯(cuò)誤,我們需要一點(diǎn)一點(diǎn)的修改和調(diào)試。出現(xiàn)的問(wèn)題有:(1)在仿真環(huán)境中,機(jī)器人只會(huì)原地狀態(tài)輪子轉(zhuǎn),卻無(wú)法向前行駛,這是因?yàn)闄C(jī)器人的位置不對(duì),處于浮空狀態(tài),無(wú)法接觸地面。(2)機(jī)器人推不動(dòng)箱子,這是因?yàn)橄渥拥脑O(shè)置問(wèn)題,是箱子和地面連在一起,使機(jī)器人向前行駛卻無(wú)法推動(dòng)箱子。(3)程序無(wú)法調(diào)試和生成,這是因?yàn)槌绦蛑幸寐窂降膯?wèn)題,依據(jù)自己安裝軟件的位置,設(shè)置相應(yīng)的引用路徑,并添加需要的引用就可以解決(4)在仿真環(huán)境中添加人為干擾,使兩個(gè)機(jī)器人同時(shí)停止和行駛,沒(méi)有達(dá)到目的。原來(lái)這是因?yàn)樵谥鞣?wù)程序中,是

41、利用已有的函數(shù)進(jìn)行仿真引擎的停止和運(yùn)行來(lái)控制機(jī)器人的,結(jié)果在同一仿真環(huán)境中,停止引擎,兩個(gè)機(jī)器人都停止了行駛。解決方法是在主程序中設(shè)置標(biāo)志位,當(dāng)需停止時(shí),不停止仿真引擎,只把相應(yīng)的機(jī)器人輪子速度輸出設(shè)為(0,0),當(dāng)需行駛時(shí),機(jī)器人輪子速度輸出設(shè)置為相應(yīng)值,使機(jī)器人行駛。5 總結(jié)本課題研究的是多自主型移動(dòng)機(jī)器人在箱子同一側(cè)時(shí),合作向正前方推箱子的任務(wù),在visual simulation environment 2008 r3中創(chuàng)建仿真環(huán)境,利用visual studio 2008編寫(xiě)以控制程序,給控制機(jī)器人的協(xié)作方法,讓機(jī)器人在仿真環(huán)境中模擬真實(shí)環(huán)境進(jìn)行推箱子的任務(wù)。對(duì)自主機(jī)器人合作推箱子任

42、務(wù)進(jìn)行分析,設(shè)計(jì)出合理的控制策略和機(jī)器人協(xié)作方法。在機(jī)器人推箱子的過(guò)程中,把激光數(shù)據(jù)讀進(jìn)來(lái),進(jìn)行處理,以此來(lái)確定箱子的狀態(tài)和進(jìn)行機(jī)器人之間的通訊,從而判斷識(shí)別箱子是否發(fā)生旋轉(zhuǎn),是否處于正確的方向,從而使機(jī)器人調(diào)節(jié)自身的行駛速度,保證箱子的直行。在多機(jī)器人合作推箱子的研究,最后實(shí)現(xiàn)了合作推箱子的效果。從中學(xué)習(xí)了很多。(1) 學(xué)習(xí)和了解了robotic studio仿真系統(tǒng),掌握建立了機(jī)器人仿真環(huán)境和編寫(xiě)了控制機(jī)器人收集物體的控制方法。(2) 分析機(jī)器人推箱子所需要的行為模型;并且建立機(jī)器人推箱子任務(wù)行為模型。(3) 通過(guò)激光傳感器,機(jī)器人進(jìn)行外部環(huán)境的判斷和相互之間的通訊。(4) 熟練掌握了c#

43、編程語(yǔ)言。(5) 在機(jī)器人仿真平臺(tái)上實(shí)現(xiàn)兩個(gè)機(jī)器人合作推箱子。參考文獻(xiàn)(1) roland siegwart, lllah r. nourbakhsh著, 李人厚 譯. 自主移動(dòng)機(jī)器人導(dǎo)論m. 西安交通大學(xué)出版社. 2006.(2) 蔡自興. 機(jī)器人學(xué)基礎(chǔ)m. 北京: 機(jī)械工業(yè)出版社, 2009.(3) 徐玉華,張崇巍,徐海琴.基于激光測(cè)距儀的移動(dòng)機(jī)器人避障新方法j.機(jī)器人,2010,32(02):179-183.(4) 張芳, 林良明. 多移動(dòng)機(jī)器人協(xié)調(diào)系統(tǒng)體系結(jié)構(gòu)與相關(guān)問(wèn)題j. 機(jī)器人, 2001,23(06):554-558.(5) arkin, r.c. behavior-based

44、roboticsm. 1998: mit press. 491.(6) kyle johns , trevor taylor. professional microsoft robotics developer studio. wrox. 2008.(7) yamada, s., saito, j. adaptive action selection without explicit communication for multirobot box-pushingj. ieee transactions on systems, man and cybernetics part c: appli

45、cations and reviews 31 (3), pp. 398-404(8) zhang, d., fang, y., wang, l., xie, g. coordinated box-pushing of multiple biomimetic robotic fisha. proceedings of the 44th ieee conference on decision and control, and the european control conference, cdc-ecc 05c, 2005, art. no. 1583033, pp. 5474-5479(9)

46、parra-gonzlez, e.f., ramrez-torres, j.g.cooperative multi-robot box-pushing in a cluttered environmenta. proceedings - electronics, robotics and automotive mechanics conference, cerma 2008c , art. no. 4641124, pp. 514-519(10) 原魁, 李園, 房立新. 多移動(dòng)機(jī)器人系統(tǒng)研究發(fā)展近況j. 自動(dòng)化學(xué)報(bào),2007,33(08):785-794(11) 嚴(yán)勇杰, 朱齊丹, 孫曉輝.

47、 分布式多機(jī)器人協(xié)作研究與仿真j. 應(yīng)用科技,2006,33(02):52-55柳長(zhǎng)安,李國(guó)棟,劉春陽(yáng).差動(dòng)驅(qū)動(dòng)式移動(dòng)機(jī)器人的運(yùn)動(dòng)規(guī)劃j. 2003,35(9):1095-1101.(12) 藍(lán)艇,劉士榮.受生物群體智能啟發(fā)的多機(jī)器人系統(tǒng)研究j.2007,29(3):289-303.(13) 吳克河, 李為, 柳長(zhǎng)安, 李國(guó)棟. 雙輪驅(qū)動(dòng)式移動(dòng)機(jī)器人動(dòng)力學(xué)控制j 宇航學(xué)報(bào),2006,27(02):272-275(14) 鐘新華,蔡自興,鄒小兵.移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)及控制算法研究j.華中科技大學(xué)學(xué)報(bào).2004,32:133-136.(15) 俞聲偉,顏文俊.兩輪小型移動(dòng)機(jī)器人的底層運(yùn)動(dòng)控制

48、器設(shè)計(jì)j.2006,23(9):38-46. 致謝 在此論文撰寫(xiě)過(guò)程中,要特別感謝我的導(dǎo)師藍(lán)老師的指導(dǎo)與督促,同時(shí)感謝他的諒解與包容。沒(méi)有藍(lán)老師的幫助也就沒(méi)有今天的這篇論文。求學(xué)歷程是艱辛的,但又是快樂(lè)的。感謝同學(xué)們跟我一起討論研究的課題,晚上趕論文,而沒(méi)有任何怨言。感謝我的班主任趙老師,謝謝她在這幾年為我們所做的一切,她不求回報(bào),無(wú)私奉獻(xiàn)的精神讓我感動(dòng),再次向他們表示由衷的感謝。在這四年的學(xué)期中結(jié)識(shí)的各位生活上和學(xué)習(xí)上的摯友讓我得到了人生中一筆最大的財(cái)富,再次對(duì)你們表示由衷的感謝。本文參考了大量的文獻(xiàn)資料,在此,向各學(xué)術(shù)界的前輩們致敬! 謝謝父母一直以來(lái)對(duì)我的支持和理解,沒(méi)有他們辛勤的付出也

49、就沒(méi)有今天的我,在這一刻,將最崇高的敬意獻(xiàn)給你們! 附錄using system;using system.collections.generic;using system.componentmodel;using microsoft.ccr.core;using microsoft.ccr.adapters.winforms;using microsoft.dss.core.attributes;using microsoft.dss.servicemodel.dssp;using microsoft.dss.servicemodel.dsspservicebase;using w3c.soap;using submgr = microsoft.dss.services.subscriptionmanager;using engine = microsoft.robotics.simulation.engine.proxy;/using drive = microsoft.robotics.services.simula

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論