機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書新版_第1頁
機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書新版_第2頁
機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書新版_第3頁
機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書新版_第4頁
機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書新版_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、機(jī)器人技術(shù)實(shí)驗(yàn)指導(dǎo)書鄭嫦娥 編寫北京林業(yè)大學(xué)工學(xué)院機(jī)械工程系目錄實(shí)驗(yàn)一 搭建機(jī)器蠕蟲2實(shí)驗(yàn)二 機(jī)器人傳感控制決策實(shí)驗(yàn)7實(shí)驗(yàn)一 搭建機(jī)器蠕蟲【實(shí)驗(yàn)?zāi)康摹浚?) 了解機(jī)器人的組成,(2) 通過搭建機(jī)器蠕蟲,熟悉機(jī)器人機(jī)械、控制、驅(qū)動、傳感等各模塊基本構(gòu)成。(3) 通過控制機(jī)器蠕蟲運(yùn)動,熟悉MRcommander的使用?!緦?shí)驗(yàn)設(shè)備】博創(chuàng)機(jī)器人套件:A、B箱【實(shí)驗(yàn)內(nèi)容】搭建機(jī)器蠕蟲,并控制其運(yùn)動?!緦?shí)驗(yàn)步驟】(1) 首先利用博創(chuàng)套件,搭建由4個完全相同的關(guān)節(jié)串聯(lián)的機(jī)器蠕蟲。圖1 機(jī)器蠕蟲的一個關(guān)節(jié)圖2 4個關(guān)節(jié)串聯(lián)的機(jī)器蠕蟲(2) 熟悉MultiFLEX控制卡的各種接口,以舊卡(體積?。槔篈:電源

2、接口:+56VB:控制板總線C:4路電機(jī)接口,最大允許電流2A,電機(jī)紅線,白線。連接時,白線朝電路板外側(cè)。D:RS-232串口,5口串口線。插頭上與電路板上NC對齊。E:7路模擬量輸入AD0AD6,允許輸入05V模擬量,主要用于傳感器信號采集。電路板外側(cè)是地(對應(yīng)“”號),中間是電源(對應(yīng)“”號),內(nèi)側(cè)是信號輸入線。F:12路PWM舵機(jī)控制PW0PW11,分成了4組。舵機(jī)引線是三芯杜邦頭,棕色線是地,橙色線是電源,黃色線是信號線。棕色線在電路板外側(cè)。G:16路I/O口,在MRcommander中可以被配置為輸入或者輸出。如果被配置為輸入,主要用于采集開關(guān)、數(shù)字式傳感器的狀態(tài)。如果被配置為輸出,

3、高電平為控制器電源電壓,低電平為0,可以用于驅(qū)動LED、微型電機(jī)等。其中靠近電路板外側(cè)是地,中間是電源,內(nèi)側(cè)是信號線。H:AVR單片機(jī)在線編程接口??刂破魃鲜褂肁VR ATMega128微處理器,具備在線編程功能。交叉編譯好的二進(jìn)制文件可以通過該接口下載到處理器內(nèi)置的FLASH中運(yùn)行。I:控制卡功能選擇撥碼開關(guān),共8路。第一路撥到ON為接通。1) 第1、2路ON,第3、4路OFF:通過RS232與上位機(jī)通訊; 第1、2路OFF,第3、4路ON:通過標(biāo)準(zhǔn)總線與上位機(jī)通訊。2) 第5、6路用來選擇波特率。第6位第5位波特率00115200013840010192001196003) 第7路用于選擇

4、開機(jī)狀態(tài)。4) 第8路保留。本卡使用:87654321保留OFFOFFONOFFOFFONON(3) 連接線纜:1) 連接舵機(jī)線:棕色地線在電路板外側(cè)。舵機(jī)順序必須按機(jī)體的頭尾順序依次從1到4號,或者從4號從1號。2) 連接下載線:并口下載線與電路板的H區(qū)的5針插頭連接。注意方向。3) 連接電源線:上電后,控制卡上若正常,紅黃兩色指示燈會亮。圖3 機(jī)器蠕蟲的初始狀態(tài)(4) 為機(jī)器人編寫程序和我們自己編寫的C語言程序有關(guān)的只有Public.h,Usertask.h,USERTASK.C,其他都是系統(tǒng)文件。Public.h文件作用:為方便編程進(jìn)行的預(yù)定義,以及將實(shí)際電路與程序聯(lián)系進(jìn)行的一些預(yù)操作。

5、Usertask.h文件作用:控制卡功能函數(shù)的外部聲明,通過這些聲明可以在USERTASK.C中調(diào)用這些外部函數(shù),實(shí)現(xiàn)對機(jī)器人的控制:12路舵機(jī)的控制函數(shù),4路電機(jī)的控制函數(shù),IO口的設(shè)置函數(shù),AD口的讀取函數(shù)燈。這些函數(shù)的定義以及代碼在其他幾個系統(tǒng)文件里。USERTASK.C文件作用:自己編寫程序?qū)崿F(xiàn)各種動作。i. rc_moto_control(array_rc):12路舵機(jī)控制函數(shù)array_rc舵機(jī)控制數(shù)組,數(shù)組長度24,可控制12路舵機(jī)。array_rc偶數(shù)為舵機(jī)目標(biāo)角度值,array_rc奇數(shù)舵機(jī)運(yùn)動速度值。array_rc0=90+20,目標(biāo)角度為正20度,中位為0度(對應(yīng)數(shù)值9

6、0)。取值范圍為0180度。舵機(jī)運(yùn)動速度取值范圍0255。ii. dc_moto-control(array_dc):4路電機(jī)控制函數(shù),可控制4路電機(jī)array_dc電機(jī)控制數(shù)組,數(shù)組長度8。能控制4路電機(jī)。array_dc偶數(shù)為電機(jī)轉(zhuǎn)速,array_dc奇數(shù)為電機(jī)轉(zhuǎn)動時間。如:array_dc=0,0為正轉(zhuǎn)最大轉(zhuǎn)速,128代表電機(jī)停轉(zhuǎn),254為反轉(zhuǎn)最大轉(zhuǎn)速,范圍不能超過0254。轉(zhuǎn)動時間的單位0.1s。以舵機(jī)控制例程:#include "Public.h" #include "Usertask.h"voiduser_task(void)uint8 ar

7、ray_rc23=0;/舵機(jī)控制數(shù)組長度為24,可控制12路舵機(jī),舵機(jī)運(yùn)動函數(shù)要求 array_rc偶數(shù)為舵機(jī)目標(biāo)角度值,array_rc奇數(shù)為舵機(jī)運(yùn)動速度值array_rc0=90+20;/舵機(jī)1,中位為0度(對應(yīng)數(shù)值90),目標(biāo)角度+20度。取值范圍0-180,超過此范圍程序會丟棄此數(shù)據(jù)array_rc1=170;/舵機(jī)1,速度為170。取值范圍0-255,超過范圍程序會丟棄此數(shù)據(jù)array_rc2=90-20;/舵機(jī)2目標(biāo)角度設(shè)置array_rc3=170;/舵機(jī)2轉(zhuǎn)動速度設(shè)置array_rc4=90-20;/舵機(jī)3array_rc5=170;array_rc6=90+20;/舵機(jī)4ar

8、ray_rc7=170;rc_moto_control(array_rc);/將舵機(jī)運(yùn)動信息交給舵機(jī)運(yùn)動函數(shù),實(shí)現(xiàn)舵機(jī)運(yùn)動delay(50);/延時50*20MS= 1S,給舵機(jī)提供反應(yīng)時間,此反應(yīng)時間應(yīng)大于舵機(jī)實(shí)際運(yùn)動所需時間array_rc0=90;array_rc1=170;array_rc2=90;array_rc3=170;array_rc4=90;array_rc5=170;array_rc6=90;array_rc7=170;rc_moto_control(array_rc);delay(50);要控制舵機(jī)1(即連接到pw0的舵機(jī)),那么只需給數(shù)組元素array_rc0和arra

9、y_rc1賦予相應(yīng)的數(shù)值90+20、170即可,170代表著舵機(jī)的速度,90是舵機(jī)的中位角度數(shù),那么90+20意味著舵機(jī)將向正方向以170的速度轉(zhuǎn)過20度。最后將數(shù)組返回給舵機(jī)控制函數(shù),即rc_moto_control(array_rc)。這樣控制卡,就知道我們想要實(shí)現(xiàn)的對于舵機(jī)的如何控制了。(5) 編譯程序在完成上面對Usertask.c的修改編輯后,保存文件,按F7 對整個工程進(jìn)行編譯(快捷按鍵,如上圖右側(cè)紅筆圈出所示),生成*.hex 文件(編寫C程序?qū)崿F(xiàn)對12路舵機(jī)的控制的default 文件夾內(nèi))。然后用并口下載線將電腦的并口與MultiFLEX 控制卡的程序下載口連接(注意GND與

10、控制卡I區(qū)的GND相匹配),然后給控制卡通電、,并且將前面生成的MultiFLEX.hex 文件燒寫至MultiFLEX 控制卡中。(6) 下載程序打開PonyProg2000軟件,其界面如下所示:連接完成后給控制卡通上電源(程序燒寫過程中不允許斷電,請確保電源的可靠性)。然后在剛才打開的PonyProg2000 中點(diǎn)擊“FileOpen Device File”或者點(diǎn)擊圖標(biāo)打開我們前面生成的*.hex 文件(應(yīng)該在“編寫C程序?qū)崿F(xiàn)對12路舵機(jī)的控制的default”文件夾中),然后點(diǎn)擊“CommandWrite All”或者點(diǎn)擊圖標(biāo),然后程序就會開始燒寫至控制卡里面。看到出現(xiàn) “Write

11、successful”時,便說明我們的程序已經(jīng)下載成功,這是4 路舵機(jī)開始呈周期性運(yùn)動,其形狀宛如一條游動的小蛇。實(shí)驗(yàn)二 機(jī)器人傳感控制決策實(shí)驗(yàn)【實(shí)驗(yàn)?zāi)康摹浚?) 了解典型機(jī)器人的組成,(2) 通過搭建機(jī)器人,熟悉機(jī)器人構(gòu)型設(shè)計(jì)。(3) 通過使用傳感器,熟悉機(jī)器人常用傳感器。(4) 通過控制機(jī)器人完成特定任務(wù),掌握利用傳感器感知環(huán)境信息,并控制機(jī)器人。【實(shí)驗(yàn)設(shè)備】博創(chuàng)機(jī)器人套件:A、B箱【實(shí)驗(yàn)內(nèi)容】搭建典型機(jī)器人(機(jī)器人構(gòu)型,從以下選一:四自由度機(jī)械臂、簡易四足機(jī)器人、挖掘作業(yè)機(jī)器人、仿生蛇形機(jī)器人、全向運(yùn)動作業(yè)機(jī)器人、仿生機(jī)器狗或者設(shè)計(jì)自己的機(jī)器人構(gòu)型),并控制機(jī)器人根據(jù)傳感器反饋信息完成一

12、定任務(wù)。【實(shí)驗(yàn)步驟】(1) 首先利用博創(chuàng)套件,搭建機(jī)器人構(gòu)型,如四自由度機(jī)械臂。圖1 (2) 安裝傳感器。(3) 編寫、調(diào)試、下載。自主避障機(jī)器人實(shí)驗(yàn)環(huán)境:已嵌入WinAVR的AVRStudio4.12實(shí)驗(yàn)結(jié)果:開機(jī)后機(jī)器人會向前運(yùn)動,當(dāng)檢測到障礙物之后機(jī)器人會先后退一定距離,然后根據(jù)接收障礙物的傳感器不同采取不同的轉(zhuǎn)向,然后機(jī)器人繼續(xù)向前運(yùn)動,當(dāng)遇到障礙物之后再進(jìn)行判斷,如此循環(huán)。 */#include "public.h" 包含的頭文件,前面已經(jīng)提到#include "Usertask.h"voiduser_task(void)uint8array_

13、dc7=0;/電機(jī)控制數(shù)組uint8array_rc23=0;/舵機(jī)控制數(shù)組uint16temp16; 定義16位變量,用來保存?zhèn)鞲衅鞣祷氐臄?shù)值gpio_mode_set(0); /設(shè)置16位IO模式全為輸入,使用傳感器時,必須將IO口設(shè)置為輸入,這樣單片機(jī)才能得到返回?cái)?shù)值temp16 = read_gpio();/讀取16位IO信息至temp16if(temp16 & 0x0003)=3)/紅外傳感器均為高電平時(紅外傳感器檢測到?jīng)]有障礙時為輸出高電平即為1)此時電機(jī)轉(zhuǎn)動5秒,(相當(dāng)于機(jī)器人直行)array_dc0 = 0;/電機(jī)1,正轉(zhuǎn)最大速度(0為正轉(zhuǎn)最大轉(zhuǎn)速,0xFE=254為

14、反轉(zhuǎn)最大轉(zhuǎn)速,0x80=128代表電機(jī)停止)。范圍為0-254,超過此范圍程序會丟棄此數(shù)據(jù) ,電機(jī)控制數(shù)組,與舵機(jī)控制類似,偶數(shù)元素控制速度(包括正反方向)array_dc1 = 50;/電機(jī)1,50×0.1秒轉(zhuǎn)動時間。范圍為0-255,超過此范圍程序會丟棄此數(shù)據(jù) 奇數(shù)元素控制轉(zhuǎn)動時間。array_dc2 = 0xFE;/電機(jī)2 array_dc3 = 50;array_dc4 = 0;/電機(jī)3array_dc5 = 50;array_dc6 = 0xFE;/電機(jī)4array_dc7 = 50;dc_moto_control(array_dc); 將數(shù)組命令返回給函數(shù),程序執(zhí)行到此時

15、,電機(jī)便開始執(zhí)行剛剛賦值的命令。else if(temp16&0x0003)=2)|(temp16&0x0003)=0)/數(shù)字IO區(qū)(G區(qū))IO0口所接紅外傳感器為低電平(右紅外傳感器檢測到障礙)或者兩個傳感器均為低電平時(兩個傳感器都檢測到障礙)電機(jī)左轉(zhuǎn),蜂鳴器發(fā)聲beep_set(5);/蜂鳴器發(fā)聲0.5秒 蜂鳴器控制函數(shù),直接調(diào)用,賦值即可/以最高速度后退array_dc0 = 0xFE;array_dc1 = 5;/0.5秒array_dc2 = 0;array_dc3 = 5;array_dc4 = 0xFE;array_dc5 = 5;array_dc6 = 0;a

16、rray_dc7 = 5;dc_moto_control(array_dc);delay(30);/給電機(jī)反應(yīng)時間30×20MS=0.6s,此反應(yīng)時間應(yīng)大于電機(jī)實(shí)際運(yùn)動時間/機(jī)器人轉(zhuǎn)向array_rc0=90+20;/舵機(jī)1,中位為0度(對應(yīng)數(shù)值90),目標(biāo)角度+20度。取值范圍0-180,超過此范圍程序會丟棄此數(shù)據(jù)array_rc1=170;/舵機(jī)1,速度為170。取值范圍0-255,超過此范圍程序會丟棄此數(shù)據(jù)array_rc2=90-20;/舵機(jī)2目標(biāo)角度設(shè)置array_rc3=170;/舵機(jī)2轉(zhuǎn)動速度設(shè)置array_rc4=90-20;/舵機(jī)3array_rc5=170;arr

17、ay_rc6=90+20;/舵機(jī)4array_rc7=170;rc_moto_control(array_rc);delay(50);/延時50*20MS= 1S,給舵機(jī)提供反應(yīng)時間,此反應(yīng)時間應(yīng)大于舵機(jī)實(shí)際運(yùn)動所需時間array_dc0 = 0x80+55;/電機(jī)速度為+55array_dc1 = 10;array_dc2 = 0x80+55;array_dc3 = 10;array_dc4 = 0x80+55;array_dc5 = 10;array_dc6 = 0x80+55;array_dc7 = 10;dc_moto_control(array_dc);delay(50);/延時50

18、*20MS= 1S/機(jī)器人恢復(fù)直線運(yùn)動array_rc0=90;array_rc1=170;array_rc2=90;array_rc3=170;array_rc4=90;array_rc5=170;array_rc6=90;array_rc7=170;rc_moto_control(array_rc);delay(50);/延時50*20MS= 1S,給舵機(jī)提供反應(yīng)時間,此反應(yīng)時間應(yīng)大于舵機(jī)實(shí)際運(yùn)動所需時間else/(右側(cè)紅外傳感器檢測到障礙)電機(jī)左轉(zhuǎn),蜂鳴器發(fā)聲beep_set(5);/蜂鳴器發(fā)聲0.5秒array_dc0 = 0xFE;/后退0.5秒array_dc1 = 5;array

19、_dc2 = 0;array_dc3 = 5;array_dc4 = 0xFE;array_dc5 = 5;array_dc6 = 0;array_dc7 = 5;dc_moto_control(array_dc);delay(30);/給電機(jī)反應(yīng)時間30×20MS=0.6sarray_rc0=90+20;/舵機(jī)1,中位為0度(對應(yīng)數(shù)值90),目標(biāo)角度+20度。取值范圍0-180,超過此范圍程序會丟棄此數(shù)據(jù)array_rc1=170;/舵機(jī)1,速度為170。取值范圍0-255,超過此范圍程序會丟棄此數(shù)據(jù)array_rc2=90-20;array_rc3=170;array_rc4=90-20;array_rc5=170;array_rc6=90+20;array_rc7=170;rc_moto_control(array_rc);/機(jī)器人轉(zhuǎn)向delay(50);/延時50*20MS= 1S,給舵機(jī)提供反應(yīng)時間,此反應(yīng)時間應(yīng)大于舵機(jī)實(shí)際運(yùn)動所需時間array_dc0 = 0x80-55;/電機(jī)速度-55array_dc1 = 15;arra

溫馨提示

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

評論

0/150

提交評論