機(jī)器人課程設(shè)計(jì)(共17頁)_第1頁
機(jī)器人課程設(shè)計(jì)(共17頁)_第2頁
機(jī)器人課程設(shè)計(jì)(共17頁)_第3頁
機(jī)器人課程設(shè)計(jì)(共17頁)_第4頁
機(jī)器人課程設(shè)計(jì)(共17頁)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上沈陽化工大學(xué) 機(jī)器人課程設(shè)計(jì) 專業(yè):測控技術(shù)與儀器 班級(jí):測控0901 姓名:許偉博 學(xué)號(hào):專心-專注-專業(yè) 目錄 第一章 緒言1.1、目的和意義 機(jī)器人涉及機(jī)械、電子、傳感、控制等多個(gè)領(lǐng)域和學(xué)科。本課程設(shè)計(jì)是在機(jī)器人學(xué)課程的基礎(chǔ)上,利用多傳感技術(shù)、控制技術(shù)實(shí)現(xiàn)機(jī)器人控制系統(tǒng)的綜合與應(yīng)用,達(dá)到鍛煉學(xué)生綜合設(shè)計(jì)能力的目的。1.2、設(shè)計(jì)內(nèi)容1.2.1、機(jī)器人硬件 本課程設(shè)計(jì)使用實(shí)驗(yàn)室已有的移動(dòng)機(jī)器人。機(jī)器人有兩個(gè)驅(qū)動(dòng)輪、一個(gè)從動(dòng)輪,驅(qū)動(dòng)輪由舵機(jī)直接驅(qū)動(dòng)。機(jī)器人控制器為89S52單片機(jī)。 圖1 機(jī)器人結(jié)構(gòu)簡圖1.2.2、設(shè)計(jì)任務(wù) 利用多傳感器技術(shù),實(shí)現(xiàn)對(duì)機(jī)器人的軌跡規(guī)劃及控

2、制。具體為:控制機(jī)器人在規(guī)定的場地內(nèi)避開障礙物走遍整個(gè)場地。場地長1.8m,寬1.5m,場地四周為高0.3m的擋板。場地如圖2所示。1.3、運(yùn)行框圖 第二章 機(jī)器人觸覺導(dǎo)航 本章你將通過給你的機(jī)器人增加觸覺傳感器學(xué)習(xí)如何使用這些端口來獲取外界信息。實(shí) 際上,對(duì)于任何一個(gè)自動(dòng)化系統(tǒng)(不僅僅是機(jī)器人),無非都是通過傳感器獲取外界信息,通過接口進(jìn)入計(jì)算機(jī)(或者單片機(jī)),由計(jì)算機(jī)或單片機(jī)根據(jù)反饋信息進(jìn)行計(jì)算和決策,生成控制命令,然后通過輸出接口去控制系統(tǒng)相應(yīng)的執(zhí)行機(jī)構(gòu),完成系統(tǒng)所要完成的任務(wù)。因此,學(xué)習(xí)如何使用單片機(jī)的輸入接口同學(xué)習(xí)使用輸出接口同等重要。 許多自動(dòng)化機(jī)械都依賴于各種觸覺型開關(guān),例如當(dāng)機(jī)

3、器人碰到障礙物時(shí),接觸開關(guān)就會(huì)察覺,通過編程讓機(jī)器人躲開障礙物;旅客登機(jī)橋在靠近飛機(jī)時(shí)為了保護(hù)昂貴的飛機(jī),在登 機(jī)橋接口安裝觸須,當(dāng)?shù)菣C(jī)橋離飛機(jī)很近后觸須就會(huì)碰到飛機(jī),立即通知控制器提醒離飛機(jī)已經(jīng)很近了,需要降低靠近速度;工廠利用觸覺開關(guān)來計(jì)量生產(chǎn)線上的工件數(shù)量;在工業(yè)加工過程中,也被用來排列物體。在所有這些實(shí)例中,觸覺開關(guān)提供的輸入通過計(jì)算機(jī)或者單片機(jī)處理后生成其它形式的程序化的輸出。 本章中,你將在機(jī)器人前端安裝并測試一個(gè)稱為胡須的觸覺開關(guān)。你將對(duì)機(jī)器人大腦編程來監(jiān)視觸覺開關(guān)的狀態(tài),以及決定當(dāng)它遇到障礙物時(shí)如何動(dòng)作。最終的結(jié)果就是通過觸覺給機(jī)器人自動(dòng)導(dǎo)航。2.1、安裝并測試機(jī)器人胡須 編程

4、讓機(jī)器人通過觸覺胡須導(dǎo)航之前,首先必須安裝并測試胡須。圖3所示是安裝機(jī)器人觸覺胡須所需的硬件元件清單,包括: 1 金屬絲2根 2 平頭M3×22盤頭螺釘2個(gè) 3 13mm圓形立柱2個(gè) 4 M3尼龍墊圈2個(gè) 5 3-pin公-公接頭2個(gè) 6 220電阻2個(gè) 7 10k電阻2個(gè) 圖3 胡須硬件 安裝胡須 1.拆掉連接主板到前支架的兩顆螺釘2.參考圖4,進(jìn)行下面操作 3.螺釘依次穿過M3尼龍墊圈、13mm圓 形立柱 4.螺釘穿過主板上的圓孔之后,擰進(jìn)主板下面的支架中,但不要擰緊 5.把須狀金屬絲的其中一個(gè)鉤在尼龍墊圈之上,另一個(gè)鉤在尼龍墊圈之下,調(diào)整它們的位置使它們橫向交 叉但又不接觸 6

5、. 擰緊螺釘?shù)街Ъ苌?7.參考接線圖5,搭建胡須電路。 注意:右邊胡須狀態(tài)信息輸入是通過P1口的第4腳完成,而左邊胡須狀態(tài)信息輸入是通過P2口的第3腳完成 8.確定兩條胡須比較靠近,但又不接觸面包板上的3-pin頭。推薦保持3 mm的距離。 9.圖6所示是實(shí)際的參考接線圖。 10.安裝好觸覺胡須的機(jī)器人如圖7所示。 圖4 安裝機(jī)器人胡須 圖5 胡須電路示意圖 圖6教學(xué)底板上胡須接線圖 圖7 安裝好觸須的機(jī)器人2.2、測試觸須傳感器 先執(zhí)行一段簡單的程序,下面的程序是讓小車前行的,修改參數(shù)調(diào)舵機(jī),使舵機(jī)保持前行,然后在通過設(shè)置程序讓左須子觸碰障礙物時(shí)左轉(zhuǎn),右須子觸碰障礙物是右轉(zhuǎn),這樣進(jìn)行調(diào)試,來

6、檢測傳感器。 死區(qū)程序很關(guān)鍵,以中斷的方式寫入,避免其一直困在墻角里出不來。2.3、C語言程序如下#include<BoeBot.h>#include<uart.h>int P1_4state(void)/獲取P1_4的狀態(tài),右胡須return (P1&0x10)?1:0;int P2_3state(void)/獲取P2_3的狀態(tài),左胡須return (P2&0x08)?1:0;void Forward(void) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms

7、(20);void siqu(void) interrupt 0 if(condition1) commands for condition1If(condition2) commands for both condition2 and condition1else commands for conditio1 but not condition2Else commands for not condition1void Left_Turn(void) int i; for(i=1;i<=26;i+)P1_1=1;delay_nus(1300); P1_1=0;P1_0=1;delay_n

8、us(1300);P1_0=0;delay_nms(20);void Right_Turn(void) int i; for(i=1;i<=26;i+)P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);void Backward(void) int i; for(i=1;i<=65;i+)P1_1=1;delay_nus(1300); P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);int main(void)int i=1; i

9、nt z=0;uart_Init();printf("Program Running!n"); while(1)if(P1_4state()=0)&&(P2_3state()=0)if(z=0)Backward(); /向后Left_Turn();/向左for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Left_Turn();/向左z=1; elseBackward(); /向后Right_Turn();/向右for(i

10、;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Right_Turn();/向右z=0;else if(P1_4state()=0)if(z=0)Backward(); /向后Left_Turn();/向左for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Left_Turn();/向左z=1; elseBackward();

11、/向后Right_Turn();/向右for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Right_Turn();/向右z=0; else if(P2_3state()=0)if(z=0)Backward(); /向后Left_Turn();/向左for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Left_Turn()

12、;/向左z=1; elseBackward(); /向后Right_Turn();/向右for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); Right_Turn();/向右z=0;else Forward();/向前將上述程序下載到小車中進(jìn)行調(diào)試。 第三章 機(jī)器人紅外導(dǎo)航 現(xiàn)在許多遙控裝置和PDA都使用頻率低于可見光的紅外線進(jìn)行通信,而機(jī)器人則可以使用紅外線進(jìn)行導(dǎo)航。可以使用一些價(jià)格非常便宜且應(yīng)用廣泛的部件,讓機(jī)器人的C51微控制器可以收發(fā)紅外光信號(hào),從而實(shí)

13、現(xiàn)機(jī)器人的紅外線導(dǎo)航。 3.1、使用紅外線發(fā)射和接收器件探測道路 許多機(jī)器人使用雷達(dá)(RADAR)或者聲納(SONAR)來探測物體而不需同物體接觸。我們使用紅外光來照射機(jī)器人前進(jìn)的路線,然后確定何時(shí)有光線從被探測目標(biāo)反射回來,通過檢測反射回來的紅外光就可以確定前方是否有物體。由于紅外遙控 技術(shù)的發(fā)展,現(xiàn)在紅外線發(fā)射器和接收器已經(jīng)很普及并且價(jià)格很便宜。這對(duì)于機(jī)器人愛好者而言是一個(gè)好消息。 紅外前燈 你將要在機(jī)器人上建立的紅外光探測物體系統(tǒng)在許多方面就象汽車的前燈系統(tǒng)。當(dāng)汽車 前燈射出的光從障礙物體反射回來時(shí),人的眼睛就發(fā)現(xiàn)了障礙物體,然后大腦處理這些信息, 并據(jù)此控制身體動(dòng)作駕駛汽車。機(jī)器人使用

14、紅外線二極管LED作為前燈,如圖8所示。 圖8 用紅外光探測障礙物 圖9 本章需要用到的新部件 紅外線二極管發(fā)射紅外光,如果機(jī)器人前面有障礙物,紅外線從物體反射回來,相當(dāng)于機(jī)器人眼睛的紅外檢測(接收)器,檢測到反射回的紅外光線,并發(fā)出信號(hào)來表明檢測到從物體反射回紅外線。機(jī)器人的大腦單片機(jī)AT89S52基于這個(gè)傳感器的輸入控制伺服電機(jī)。 紅外線(IR)接收/檢測器有內(nèi)置的光濾波器,除了需要檢測的980 nm波長的紅外線外, 它幾乎不允許其它光通過。紅外檢測器還有一個(gè)電子濾波器,它只允許大約38.5 kHz 的電信號(hào)通過。換句話說,檢測器只尋找每秒閃爍38,500次的紅外光。這就防止了普通光源象太

15、陽光和室內(nèi)光對(duì)IR的干涉。太陽光是直流干涉 (0Hz)源,而室內(nèi)光依賴于所在區(qū)域的主電源,閃爍頻率接近100或120 Hz。由于120 Hz在電子濾波器的38.5 kHz通帶頻率之外,它完全被IR探測器忽略。 3.2、搭建并測試IR發(fā)射和探測器 本任務(wù)中,我們將搭建并測試紅外線發(fā)射和檢測器。 元件清單: (1) 兩個(gè)紅外檢測器 (2) 兩個(gè)IR LED (3) 四個(gè)470電阻 (4) 兩個(gè)9013三極管 搭建紅外線前燈 電路板的每個(gè)角安裝一個(gè)IR組(IR LED和檢測器) 電路圖如圖10 圖10 左側(cè)和右側(cè)IR組原理圖 3.3、測試紅外發(fā)射探測器 用P1_3發(fā)送持續(xù)1毫秒的38.5kHz的紅外

16、光,如果紅外光被小車路徑上的物體反射回來,紅外檢測器將給微控制器發(fā)送一個(gè)信號(hào),讓它知道已經(jīng)檢測到反射回的紅外光。 讓每個(gè)IR LED 探測器組工作的關(guān)鍵是發(fā)送1毫秒頻率為38.5 kHz的紅外信號(hào),然后立刻將IR探測器的輸出存儲(chǔ)到一個(gè)變量中。下面是一個(gè)例子,它發(fā)送38.5 kHz信號(hào)給連接到P1_3 的IR發(fā)射器,然后用整型變量irDetectLeft存儲(chǔ)連接到P1_2的IR探測器的輸出。 for(counter=0;counter<38;counter+) P1_3=1; delay_nus(13); P1_3=0; delay_nus(13); irDetectLeft=P1_2st

17、ate(); 上述代碼給P1_3輸出的信號(hào)高電平13微秒,低電平為13微秒,總周期為26微秒,即頻率 約為38.5kHz??偣草敵?8個(gè)周期的信號(hào),即持續(xù)時(shí)間約為1毫秒(38*26約等于1000微秒)。 當(dāng)沒有紅外信號(hào)返回時(shí),探測器的輸出狀態(tài)為高。當(dāng)它探測到被物體反射的38500Hz紅外信號(hào)時(shí),它的輸出為低。因紅外信號(hào)發(fā)送的持續(xù)時(shí)間為1毫秒,因此IR探測器的輸出如果處于低,其持續(xù)狀態(tài)也不會(huì)超過1毫秒,因此發(fā)送完信號(hào)后必須立即將IR探測器的輸出存儲(chǔ)到變量中。這些存儲(chǔ)的值會(huì)顯示在調(diào)試終端或被機(jī)器人用來導(dǎo)航。 輸入保存運(yùn)行程序 進(jìn)行調(diào)試當(dāng)你將物體移開時(shí) 是否顯示irdetectleft=1?3.4、

18、探測和避開障礙物改變觸須程序使其適應(yīng)IR檢測和躲避3.4.1調(diào)用函數(shù)<Void IRLaunch (unsigned char IR)來進(jìn)行紅外線發(fā)射>Void IRLaunch(unsigned char IR) int counter If(IR=L) For (counter=0.counter<38;counter+)/左邊發(fā)射LeftLaunch=1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();Le

19、ftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR 'R') for(counter=0;counter<38;counter+)/右邊發(fā)射 RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop

20、_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 修改ifelse語句存儲(chǔ)IR檢測信息的變量。 if(irDetectLeft 0)&&(irDetectRight 0)/兩邊同時(shí)接收到紅外線 Left_Turn(); Left_Turn(); else if(irDetectLeft 0)/只有左邊接收到紅外線 Right_Turn(); else if(irDetectR

21、ight 0)/只有右邊接收到紅外線 Left_Turn(); else Forward();3.4.2 驗(yàn)證機(jī)器人的行為和和運(yùn)行程序RoamingWithIr.c時(shí)除不需要接觸是否非常像 例程:RoamingWithIr.c for(counter=0;counter<38;counter+) /發(fā)射時(shí)間比胡須長 LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0; _n

22、op_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR 'R') /右邊發(fā)射 for(counter=0;counter<38;counter+) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLau

23、nch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void Forward(void) /向前行走子程序 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); void Left_Turn(void) /左轉(zhuǎn)子程序 int i; for( i=1;i<=26;i+) P1_1=1; delay_nus(1

24、300); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); void Right_Turn(void) /右轉(zhuǎn)子程序 int i; for( i=1;i<=26;i+) P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); void Backward(void) /向后行走子程序 int i; for( i=1;i<=65;i+) P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); int main(void) int irDetectLeft,irDetectRight; uart_Init(); printf("Program Running!n"); while(1) IRLau

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論