機器人課程設計_第1頁
機器人課程設計_第2頁
機器人課程設計_第3頁
機器人課程設計_第4頁
機器人課程設計_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、沈陽化工大學 機器人課程設計 專業:測控技術與儀器 班級:測控0901 姓名:許偉博 學號:09130109 目錄第一章 緒言11.1、目的和意義11.2、設計內容21.2.1、機器人硬件21.2.2、設計任務21.3、運行框圖3第二章 機器人觸覺導航32.1、安裝并測試機器人胡須42.2、測試觸須傳感器62.3、C語言程序如下6第三章 機器人紅外導航103.1、使用紅外線發射和接收器件探測道路103.2、搭建并測試IR發射和探測器113.3、測試紅外發射探測器113.4、探測和避開障礙物12第四章 心得體會15 第一章 緒言1.1、目的和意義 機器人涉及機械、電子、傳感、控制等多個領域和學科

2、。本課程設計是在機器人學課程的基礎上,利用多傳感技術、控制技術實現機器人控制系統的綜合與應用,達到鍛煉學生綜合設計能力的目的。1.2、設計內容1.2.1、機器人硬件 本課程設計使用實驗室已有的移動機器人。機器人有兩個驅動輪、一個從動輪,驅動輪由舵機直接驅動。機器人控制器為89S52單片機。 圖1 機器人結構簡圖1.2.2、設計任務 利用多傳感器技術,實現對機器人的軌跡規劃及控制。具體為:控制機器人在規定的場地內避開障礙物走遍整個場地。場地長1.8m,寬1.5m,場地四周為高0.3m的擋板。場地如圖2所示。1.3、運行框圖 第二章 機器人觸覺導航 本章你將通過給你的機器人增加觸覺傳感器學習如何使

3、用這些端口來獲取外界信息。實 際上,對于任何一個自動化系統(不僅僅是機器人),無非都是通過傳感器獲取外界信息,通過接口進入計算機(或者單片機),由計算機或單片機根據反饋信息進行計算和決策,生成控制命令,然后通過輸出接口去控制系統相應的執行機構,完成系統所要完成的任務。因此,學習如何使用單片機的輸入接口同學習使用輸出接口同等重要。 許多自動化機械都依賴于各種觸覺型開關,例如當機器人碰到障礙物時,接觸開關就會察覺,通過編程讓機器人躲開障礙物;旅客登機橋在靠近飛機時為了保護昂貴的飛機,在登 機橋接口安裝觸須,當登機橋離飛機很近后觸須就會碰到飛機,立即通知控制器提醒離飛機已經很近了,需要降低靠近速度;

4、工廠利用觸覺開關來計量生產線上的工件數量;在工業加工過程中,也被用來排列物體。在所有這些實例中,觸覺開關提供的輸入通過計算機或者單片機處理后生成其它形式的程序化的輸出。 本章中,你將在機器人前端安裝并測試一個稱為胡須的觸覺開關。你將對機器人大腦編程來監視觸覺開關的狀態,以及決定當它遇到障礙物時如何動作。最終的結果就是通過觸覺給機器人自動導航。2.1、安裝并測試機器人胡須 編程讓機器人通過觸覺胡須導航之前,首先必須安裝并測試胡須。圖3所示是安裝機器人觸覺胡須所需的硬件元件清單,包括: 1 金屬絲2根 2 平頭M3×22盤頭螺釘2個 3 13mm圓形立柱2個 4 M3尼龍墊圈2個 5 3

5、-pin公-公接頭2個 6 220電阻2個 7 10k電阻2個 圖3 胡須硬件 安裝胡須 1.拆掉連接主板到前支架的兩顆螺釘2.參考圖4,進行下面操作 3.螺釘依次穿過M3尼龍墊圈、13mm圓 形立柱 4.螺釘穿過主板上的圓孔之后,擰進主板下面的支架中,但不要擰緊 5.把須狀金屬絲的其中一個鉤在尼龍墊圈之上,另一個鉤在尼龍墊圈之下,調整它們的位置使它們橫向交 叉但又不接觸 6. 擰緊螺釘到支架上 7.參考接線圖5,搭建胡須電路。 注意:右邊胡須狀態信息輸入是通過P1口的第4腳完成,而左邊胡須狀態信息輸入是通過P2口的第3腳完成 8.確定兩條胡須比較靠近,但又不接觸面包板上的3-pin頭。推薦保

6、持3 mm的距離。 9.圖6所示是實際的參考接線圖。 10.安裝好觸覺胡須的機器人如圖7所示。 圖4 安裝機器人胡須 圖5 胡須電路示意圖 圖6教學底板上胡須接線圖 圖7 安裝好觸須的機器人2.2、測試觸須傳感器 先執行一段簡單的程序,下面的程序是讓小車前行的,修改參數調舵機,使舵機保持前行,然后在通過設置程序讓左須子觸碰障礙物時左轉,右須子觸碰障礙物是右轉,這樣進行調試,來檢測傳感器。 死區程序很關鍵,以中斷的方式寫入,避免其一直困在墻角里出不來。2.3、C語言程序如下#include<BoeBot.h>#include<uart.h>int P1_4state(vo

7、id)/獲取P1_4的狀態,右胡須return (P1&0x10)?1:0;int P2_3state(void)/獲取P2_3的狀態,左胡須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(20);void siqu(void) interrupt 0 if(condition1) commands for condition1If(condition2) commands for both conditi

8、on2 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_nus(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;P

9、1_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; int z=0;uart_Init();printf("Program Running!n"); while(1)if(P1_4state()=0)&&(P2_3state()=0)if(

10、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;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;e

11、lse 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(); /向后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

12、); 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();/向左z=1; elseBackward(); /向后Right_Turn();/向右for(i;i<100;i+) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(

13、1300);P1_0=0;delay_nms(20); Right_Turn();/向右z=0;else Forward();/向前將上述程序下載到小車中進行調試。 第三章 機器人紅外導航 現在許多遙控裝置和PDA都使用頻率低于可見光的紅外線進行通信,而機器人則可以使用紅外線進行導航。可以使用一些價格非常便宜且應用廣泛的部件,讓機器人的C51微控制器可以收發紅外光信號,從而實現機器人的紅外線導航。 3.1、使用紅外線發射和接收器件探測道路 許多機器人使用雷達(RADAR)或者聲納(SONAR)來探測物體而不需同物體接觸。我們使用紅外光來照射機器人前進的路線,然后確定何時有光線從被探測目標反射回

14、來,通過檢測反射回來的紅外光就可以確定前方是否有物體。由于紅外遙控 技術的發展,現在紅外線發射器和接收器已經很普及并且價格很便宜。這對于機器人愛好者而言是一個好消息。 紅外前燈 你將要在機器人上建立的紅外光探測物體系統在許多方面就象汽車的前燈系統。當汽車 前燈射出的光從障礙物體反射回來時,人的眼睛就發現了障礙物體,然后大腦處理這些信息, 并據此控制身體動作駕駛汽車。機器人使用紅外線二極管LED作為前燈,如圖8所示。 圖8 用紅外光探測障礙物 圖9 本章需要用到的新部件 紅外線二極管發射紅外光,如果機器人前面有障礙物,紅外線從物體反射回來,相當于機器人眼睛的紅外檢測(接收)器,檢測到反射回的紅外

15、光線,并發出信號來表明檢測到從物體反射回紅外線。機器人的大腦單片機AT89S52基于這個傳感器的輸入控制伺服電機。 紅外線(IR)接收/檢測器有內置的光濾波器,除了需要檢測的980 nm波長的紅外線外, 它幾乎不允許其它光通過。紅外檢測器還有一個電子濾波器,它只允許大約38.5 kHz 的電信號通過。換句話說,檢測器只尋找每秒閃爍38,500次的紅外光。這就防止了普通光源象太陽光和室內光對IR的干涉。太陽光是直流干涉 (0Hz)源,而室內光依賴于所在區域的主電源,閃爍頻率接近100或120 Hz。由于120 Hz在電子濾波器的38.5 kHz通帶頻率之外,它完全被IR探測器忽略。 3.2、搭建

16、并測試IR發射和探測器 本任務中,我們將搭建并測試紅外線發射和檢測器。 元件清單: (1) 兩個紅外檢測器 (2) 兩個IR LED (3) 四個470電阻 (4) 兩個9013三極管 搭建紅外線前燈 電路板的每個角安裝一個IR組(IR LED和檢測器) 電路圖如圖10 圖10 左側和右側IR組原理圖 3.3、測試紅外發射探測器 用P1_3發送持續1毫秒的38.5kHz的紅外光,如果紅外光被小車路徑上的物體反射回來,紅外檢測器將給微控制器發送一個信號,讓它知道已經檢測到反射回的紅外光。 讓每個IR LED 探測器組工作的關鍵是發送1毫秒頻率為38.5 kHz的紅外信號,然后立刻將IR探測器的輸

17、出存儲到一個變量中。下面是一個例子,它發送38.5 kHz信號給連接到P1_3 的IR發射器,然后用整型變量irDetectLeft存儲連接到P1_2的IR探測器的輸出。 for(counter=0;counter<38;counter+) P1_3=1; delay_nus(13); P1_3=0; delay_nus(13); irDetectLeft=P1_2state(); 上述代碼給P1_3輸出的信號高電平13微秒,低電平為13微秒,總周期為26微秒,即頻率 約為38.5kHz。總共輸出38個周期的信號,即持續時間約為1毫秒(38*26約等于1000微秒)。 當沒有紅外信號返回

18、時,探測器的輸出狀態為高。當它探測到被物體反射的38500Hz紅外信號時,它的輸出為低。因紅外信號發送的持續時間為1毫秒,因此IR探測器的輸出如果處于低,其持續狀態也不會超過1毫秒,因此發送完信號后必須立即將IR探測器的輸出存儲到變量中。這些存儲的值會顯示在調試終端或被機器人用來導航。 輸入保存運行程序 進行調試當你將物體移開時 是否顯示irdetectleft=1?3.4、探測和避開障礙物改變觸須程序使其適應IR檢測和躲避3.4.1調用函數<Void IRLaunch (unsigned char IR)來進行紅外線發射>Void IRLaunch(unsigned char I

19、R) int counter If(IR=L) For (counter=0.counter<38;counter+)/左邊發射LeftLaunch=1 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

20、_nop_(); if(IR 'R') for(counter=0;counter<38;counter+)/右邊發射 RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _

21、nop_(); _nop_(); 修改ifelse語句存儲IR檢測信息的變量。 if(irDetectLeft 0)&&(irDetectRight 0)/兩邊同時接收到紅外線 Left_Turn(); Left_Turn(); else if(irDetectLeft 0)/只有左邊接收到紅外線 Right_Turn(); else if(irDetectRight 0)/只有右邊接收到紅外線 Left_Turn(); else Forward();3.4.2 驗證機器人的行為和和運行程序RoamingWithIr.c時除不需要接觸是否非常像 例程:RoamingWithIr

22、.c for(counter=0;counter<38;counter+) /發射時間比胡須長 LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR

23、 'R') /右邊發射 for(counter=0;counter<38;counter+) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_

24、(); 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) /左轉子程序 int i; for( i=1;i<=26;i+) P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); void Right_Turn(void) /右轉子程序 int i; for( i=1;i<

25、;=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"

溫馨提示

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

評論

0/150

提交評論