機(jī)器人課程結(jié)課總結(jié)報告_第1頁
機(jī)器人課程結(jié)課總結(jié)報告_第2頁
機(jī)器人課程結(jié)課總結(jié)報告_第3頁
機(jī)器人課程結(jié)課總結(jié)報告_第4頁
機(jī)器人課程結(jié)課總結(jié)報告_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

--可編輯可編輯-可編輯課程結(jié)課總結(jié)報告課程名稱:機(jī)器人的制作實(shí)驗(yàn)一基于arduino控制器的輪式機(jī)器人循跡避障功能設(shè)計實(shí)驗(yàn)二應(yīng)變式傳感器電子秤實(shí)驗(yàn)實(shí)驗(yàn)三基于C51單片機(jī)控制器的輪式機(jī)器人電機(jī)控制系統(tǒng)實(shí)驗(yàn)四基于ARM控制器的博創(chuàng)平臺輪式機(jī)器人循跡避障功能實(shí)現(xiàn)實(shí)驗(yàn)五攝像頭實(shí)現(xiàn)輪式機(jī)器人循跡功能的應(yīng)用實(shí)驗(yàn)六應(yīng)用卓越聯(lián)盟實(shí)驗(yàn)室設(shè)備進(jìn)行設(shè)計和實(shí)現(xiàn)作品說明指導(dǎo)教師許曉飛系別機(jī)電工程學(xué)院專業(yè)機(jī)械電子工程學(xué)生姓名鄧銀濤班級/學(xué)號機(jī)電1401/2014010339成績

實(shí)驗(yàn)一基于ardunio控制器的輪式機(jī)器人循跡避障功能設(shè)計實(shí)驗(yàn)?zāi)康?.了解ardunio平臺,并熟練使用此軟件完成小車的各種活動2.了解HC-SR04超聲波測距模塊的原理,并且熟練使用此模塊作為小車的傳感器進(jìn)行工作3.了解并且熟悉紅外線傳感器循跡原理實(shí)驗(yàn)器材:Adrunio軟件,超聲波傳感器,紅外線傳感器,導(dǎo)線,底板,電機(jī),電池,單片機(jī)等實(shí)驗(yàn)內(nèi)容:1.將硬件組裝成小車,即輪式機(jī)器人2.利用ardunio使小車完成循跡功能步驟:(1)寫好后綴為.txt的c語言循跡文件(2)將文件導(dǎo)入單片機(jī)中(3)根據(jù)具體路況,運(yùn)行并且進(jìn)行調(diào)試紅外線傳感器的靈敏程度3.利用ardunio使小車完成避障功能步驟:(1)寫好后綴為.txt的c語言避障文件(2)將文件導(dǎo)入單片機(jī)中(3)運(yùn)行并且進(jìn)行調(diào)試小車躲避障礙物的距離實(shí)驗(yàn)程序1.循跡程序:小車循跡程序思路圖#include<Servo.h>intLeft_motor_back=8;//左電機(jī)后退(IN1)intLeft_motor_go=9;//左電機(jī)前進(jìn)(IN2)intRight_motor_go=10;//右電機(jī)前進(jìn)(IN3)intRight_motor_back=11;//右電機(jī)后退(IN4)intkey=7;//定義按鍵數(shù)字7接口constintSensorRight=3; //右循跡紅外傳感器(P3.2OUT1)constintSensorLeft=4; //左循跡紅外傳感器(P3.3OUT2)intSL;//左循跡紅外傳感器狀態(tài)intSR;//右循跡紅外傳感器狀態(tài)voidsetup(){//初始化電機(jī)驅(qū)動IO為輸出方式pinMode(Left_motor_go,OUTPUT);//PIN8(PWM)pinMode(Left_motor_back,OUTPUT);//PIN9(PWM)pinMode(Right_motor_go,OUTPUT);//PIN10(PWM)pinMode(Right_motor_back,OUTPUT);//PIN11(PWM)pinMode(key,INPUT);//定義按鍵接口為輸入接口pinMode(SensorRight,INPUT);//定義右循跡紅外傳感器為輸入pinMode(SensorLeft,INPUT);//定義左循跡紅外傳感器為輸入}voidrun(inttime)//前進(jìn)voidrun(){digitalWrite(Right_motor_go,HIGH);//右電機(jī)前進(jìn)digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,255);//PWM比例0~255調(diào)速analogWrite(Right_motor_back,0);digitalWrite(Left_motor_go,HIGH);//左電機(jī)前進(jìn)digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,255);//PWM比例0~255調(diào)速analogWrite(Left_motor_back,0);//delay(time*50);//執(zhí)行時間,可以調(diào)整}//voidleft(inttime)//左轉(zhuǎn)(左輪不動,右輪前進(jìn))voidleft(){digitalWrite(Right_motor_go,HIGH); //右電機(jī)前進(jìn)digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,200);analogWrite(Right_motor_back,0);//PWM比例0~255調(diào)速digitalWrite(Left_motor_go,LOW);//左輪后退digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,0);analogWrite(Left_motor_back,100);//PWM比例0~255調(diào)速//delay(time*50); //執(zhí)行時間,可以調(diào)整}voidright(inttime)//右轉(zhuǎn)(右輪不動,左輪前進(jìn))voidright(){digitalWrite(Right_motor_go,LOW);//右電機(jī)后退digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,0);analogWrite(Right_motor_back,100);//PWM比例0~255調(diào)速digitalWrite}2.避障程序:charL1=9;//zhengcharL2=8;charR1=10;//zhengcharR2=11;intechopin=13;inttrigpin=12;voidsetup()//初始化動作的區(qū)塊,定義串行端口和腳位{pinMode(echopin,INPUT);//pwmpinMode(trigpin,OUTPUT);}voidloop()//版子重復(fù)執(zhí)行動作的區(qū)塊{intcurrDist;longrandnumber;currDist=MeasureDistance();//讀取前端距離delay(5);if(currDist>10){straight();}if(currDist<=10){randomSeed(analogRead(0));randnumber=random(0,10);if(randnumber>5){back();delay(1000);turnright();delay(800);}else{back();delay(1000);turnleft();delay(800);}}}intMeasureDistance(){digitalWrite(trigpin,LOW);delay(2);digitalWrite(trigpin,HIGH);delay(10);digitalWrite(trigpin,LOW);intdistance=pulseIn(echopin,HIGH);distance=distance/58.0;//計算距離344*100/1000000*pulseIn()/2delay(60);//循環(huán)間隔60uSreturn(distance);}voidstraight(){analogWrite(L1,100);//2550zhengzhuananalogWrite(L2,0);analogWrite(R1,100);//2550zhengzhuananalogWrite(R2,0);}voidturnright(){analogWrite(L1,100);//2550zhengzhuananalogWrite(L2,0);analogWrite(R1,0);//2550zhengzhuananalogWrite(R2,0);}voidturnleft(){analogWrite(L1,0);//2550zhengzhuananalogWrite(L2,0);analogWrite(R1,100);//2550zhengzhuananalogWrite(R2,0);}voidback(){analogWrite(L1,0);//2550zhengzhuananalogWrite(L2,100);analogWrite(R1,0);//2550zhengzhuananalogWrite(R2,100);}實(shí)驗(yàn)過程中遇到的問題及解決辦法循跡中:1.電機(jī)速度差異控制:發(fā)現(xiàn)左右輪寫入同一數(shù)值時,小車行進(jìn)方向偏離直線,——對左右兩輪寫入不同數(shù)值,多次測試,指導(dǎo)左右輪速度相等。2.電機(jī)驅(qū)動器給arduino供電出現(xiàn)問題,改用充電寶給arduino供電,直接從gnd和5v輸出腳給電機(jī)驅(qū)動器供電3.一個電機(jī)有兩根信號輸入線,一根控制正轉(zhuǎn),一根控制反轉(zhuǎn)。兩個輪子一起測轉(zhuǎn)地眼暈,容易出錯。避障中:1.超聲裝置避障距離的確定——將HC-SR04超聲波避障程序中數(shù)值改短,提高避障靈敏性2.硬件的安裝:超聲裝置無法固定——曾嘗試過用膠帶,廢舊車輪等但不理想,并未得到很好的解決實(shí)驗(yàn)結(jié)果小車可以成功的進(jìn)行循跡和避障實(shí)驗(yàn)二電子秤實(shí)驗(yàn)一單臂實(shí)驗(yàn)數(shù)據(jù)處理源碼:axis([0200050])coords=[020406080100120140160180200;02.85.17.59.912.414.817.219.622.024.6]gridholdplot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)'b=size(coords)c=ones(1,b(2))MT=[c;x]M=MT'f=inv(MT*M)*MT*y['y=',num2str(f(2)),'x+',num2str(f(1))]x=-max(x):max(x)y=f(1)+f(2)*xmistake=max(x-y)/(max(y)-min(y));fprintf('電阻傳感器的系數(shù)靈敏度S=%5.3f%%\n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('單臂實(shí)驗(yàn)')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab處理結(jié)果電阻傳感器的系數(shù)靈敏度S=0.122%非線性誤差f=3.607%半橋?qū)嶒?yàn)源碼:axis([0200050])coords=[020406080100120140160180200;04.08.813.718.623.518.433.238.243.147.9]gridholdplot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)'b=size(coords)c=ones(1,b(2))MT=[c;x]M=MT'f=inv(MT*M)*MT*y['y=',num2str(f(2)),'x+',num2str(f(1))]x=-max(x):max(x)y=f(1)+f(2)*xmistake=max(x-y)/(max(y)-min(y));fprintf('電阻傳感器的系數(shù)靈敏度S=%5.3f%%\n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('半橋?qū)嶒?yàn)')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab處理結(jié)果電阻傳感器的系數(shù)靈敏度S=0.238%非線性誤差f=1.615%全橋?qū)嶒?yàn)源碼:axis([02000100])coords=[020406080100120140160180200;07.415.323.130.938.846.754.662.670.578.4]gridholdplot(coords(1,:),coords(2,:),'*')x=coords(1,:)y=coords(2,:)'b=size(coords)c=ones(1,b(2))MT=[c;x]M=MT'f=inv(MT*M)*MT*y['y=',num2str(f(2)),'x+',num2str(f(1))]x=-max(x):max(x)y=f(1)+f(2)*xmistake=max(x-y)/(max(y)-min(y));fprintf('電阻傳感器的系數(shù)靈敏度S=%5.3f%%\n',abs(f(2)))fprintf('非線性誤差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('全橋?qū)嶒?yàn)')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab數(shù)據(jù)處理電阻傳感器的系數(shù)靈敏度S=0.393%非線性誤差f=0.774%實(shí)驗(yàn)三基于C51單片機(jī)控制器的輪式機(jī)器人電機(jī)控制系統(tǒng)實(shí)驗(yàn)?zāi)康牧私釶WM波控制電機(jī)的原理?;贑51單片機(jī)利用PWM波控制電機(jī)。實(shí)驗(yàn)器材C51單片機(jī)、L298N驅(qū)動芯片、直流電機(jī)、杜邦線、普通導(dǎo)線、keil軟件、STC下載器、示波器實(shí)驗(yàn)內(nèi)容用keil新建一個“.c”文件,編寫程序并對程序進(jìn)行調(diào)試。將程序燒錄進(jìn)單片機(jī)內(nèi)。進(jìn)行硬件連接C51引腳如圖所示:L298N引腳如圖所示:用單片通過P1.0、P1.1和L298的第一對輸入端IN1和IN2相連,然后又L298的第一對輸出端OUT1和OUT2與直流電機(jī)相連;單片通過P1.5、P1.6和L298的第二對輸入端IN3和IN4相連,然后又L298的第二對輸出端OUT3和OUT4與直流電機(jī)相連。給單片機(jī)上電。用示波器觀察波形。程序內(nèi)容1、PWM波控制電機(jī)啟動#include"reg51.h"#include"intrins.h"#defineFOSC11059200LtypedefunsignedcharBYTE;typedefunsignedintWORD;voiddelay_ms(intx);/*DeclareSFRassociatedwiththePCA*/sfrCCON=0xD8;//PCAcontrolregistersbitCCF0=CCON^0;//PCAmodule-0interruptflagsbitCCF1=CCON^1;//PCAmodule-1interruptflagsbitCR=CCON^6;//PCAtimerruncontrolbitsbitCF=CCON^7;//PCAtimeroverflowflagsfrCMOD=0xD9;//PCAmoderegistersfrCL=0xE9;//PCAbasetimerLOWsfrCH=0xF9;//PCAbasetimerHIGHsfrCCAPM0=0xDA;//PCAmodule-0moderegistersfrCCAP0L=0xEA;//PCAmodule-0captureregisterLOWsfrCCAP0H=0xFA;//PCAmodule-0captureregisterHIGHsfrCCAPM1=0xDB;//PCAmodule-1moderegistersfrCCAP1L=0xEB;//PCAmodule-1captureregisterLOWsfrCCAP1H=0xFB;//PCAmodule-1captureregisterHIGHsfrPCAPWM0=0xf2;sfrPCAPWM1=0xf3;sbitIN1=P1^0; sbitIN2=P1^1;sbitIN3=P1^5; sbitIN4=P1^6;voidmain(){CCON=0;//InitialPCAcontrolreCL=0;//ResetPCAbasetimerCH=0;CMOD=0x02;//SetPCAtimerclocksourceasFosc/2CR=1;//PCAtimerstartrunwhile(1) { inti; IN1=0;IN2=1;IN3=0;IN4=1; for(i=100;i>=0;i--) { CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt CCAP1H=CCAP1L=i; CCAPM1=0x42;delay_ms(100); } for(i=0;i<=100;i++) { CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt CCAP1H=CCAP1L=i; CCAPM1=0x42;delay_ms(100); } IN1=1;IN2=0;IN3=1;IN4=0; for(i=100;i>=0;i--) { CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt CCAP1H=CCAP1L=i; CCAPM1=0x42;delay_ms(100); } for(i=0;i<=100;i++) { CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt CCAP1H=CCAP1L=i; CCAPM1=0x42;delay_ms(100); }}}voiddelay_ms(intx){ inty; for(;x>0;x--) for(y=0;y<1000;y++);}控制方向#include"reg51.h"#include"intrins.h"#defineFOSC11059200LtypedefunsignedcharBYTE;typedefunsignedintWORD;sbitIN1=P1^0;sbitIN2=P1^1;voidmain(){IN1=0;IN2=1;}PWM波對電機(jī)調(diào)速#include"reg51.h"#include"intrins.h"#defineFOSC11059200LtypedefunsignedcharBYTE;typedefunsignedintWORD;/*DeclareSFRassociatedwiththePCA*/sfrCCON=0xD8;//PCAcontrolregistersbitCCF0=CCON^0;//PCAmodule-0interruptflagsbitCCF1=CCON^1;//PCAmodule-1interruptflagsbitCR=CCON^6;//PCAtimerruncontrolbitsbitCF=CCON^7;//PCAtimeroverflowflagsfrCMOD=0xD9;//PCAmoderegistersfrCL=0xE9;//PCAbasetimerLOWsfrCH=0xF9;//PCAbasetimerHIGHsfrCCAPM0=0xDA;//PCAmodule-0moderegistersfrCCAP0L=0xEA;//PCAmodule-0captureregisterLOWsfrCCAP0H=0xFA;//PCAmodule-0captureregisterHIGHsfrCCAPM1=0xDB;//PCAmodule-1moderegistersfrCCAP1L=0xEB;//PCAmodule-1captureregisterLOWsfrCCAP1H=0xFB;//PCAmodule-1captureregisterHIGHsfrPCAPWM0=0xf2;sfrPCAPWM1=0xf3;voidmain(){CCON=0;//InitialPCAcontrolregisterCL=0;//ResetPCAbasetimerCH=0;CMOD=0x02;//SetPCAtimerclocksourceasFosc/2CCAP0H=CCAP0L=0x80;//PWM0portoutput50%dutycyclesquarewaveCCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterruptCCAP1H=CCAP1L=0xff;//PWM1portoutput0%dutycyclesquarewavePCAPWM1=0x03;CCAPM1=0x42;//PCAmodule-1workin8-bitPWMmodeandnoPCAinterruptCR=1;//PCAtimerstartrunwhile(1);}五、實(shí)驗(yàn)心得本次實(shí)驗(yàn)中我學(xué)會用軟件來延時實(shí)現(xiàn)PWM的輸出,從而實(shí)現(xiàn)對電機(jī)的控制。實(shí)驗(yàn)四基于ARM控制的博創(chuàng)平臺輪式機(jī)器人循跡蔽障功能實(shí)驗(yàn)?zāi)康牧私釴orthStar平臺,并熟練使用此軟件完成小車的各種活動了解RobotServoTerminal機(jī)器人舵機(jī)調(diào)試系統(tǒng)并掌握使用了解并且熟悉灰度傳感器循跡原理實(shí)驗(yàn)材料ARM控制器灰度傳感器紅外探測器舵機(jī)電機(jī)等實(shí)驗(yàn)內(nèi)容小車硬件的組裝蔽障功能的實(shí)現(xiàn)循跡功能的實(shí)現(xiàn)循跡功能的實(shí)現(xiàn)NorthStar循跡程序#include"Apps/SystemTask.h"uint8SERVO_MAPPING[4]={1,2,3,4};intmain(){intlgray=0;intrgray=0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],4);MFSetPortDirect(0x00000FF8);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);while(1){lgray=MFGetAD(0);rgray=MFGetAD(1);//右偏if((lgray<=460)&&(rgray>=350)){//左轉(zhuǎn)MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);}else{//左偏if((lgray>=460)&&(rgray<=350)){//右轉(zhuǎn)MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);}else{//meipianif((lgray>=460)&&(rgray>=350)){MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);}else{MFSetServoRotaSpd(1,0);MFSetServoRotaSpd(2,0);MFSetServoRotaSpd(3,0);MFSetServoRotaSpd(4,0);MFServoAction();DelayMS(100);}}}}}蔽障功能的實(shí)現(xiàn)程序#include"Apps/SystemTask.h"uint8SERVO_MAPPING[5]={1,2,3,4,5};intmain(){intio0=0;intio1=0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],5);MFSetPortDirect(0x00000FFC);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);MFSetServoMode(5,0);while(1){io0=MFGetDigiInput(0);io1=MFGetDigiInput(1);if((io0==1)&&(io1==1)){MFSetServoRotaSpd(1,1023);MFSetServoRotaSpd(2,-1023);MFSetServoRotaSpd(3,1023);MFSetServoRotaSpd(4,-1023);MFSetServoPos(5,512,512);MFServoAction();DelayMS(500);}else{if(io0==0){//后退MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(1000);//右轉(zhuǎn)MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(2000);}else{//后退MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(1000);//左轉(zhuǎn)MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(2000);}}}}實(shí)驗(yàn)中遇到的問題以及解決方案1、NorthStar編程完成后下載時遇到的問題解決方案及拓展步驟(1)打開NorthStar軟件點(diǎn)擊幫助(3)點(diǎn)擊幫助主題(4)點(diǎn)開附錄以及里邊的常見問題及解決將出現(xiàn)一些列常見問題(5)點(diǎn)擊遇到的問題,按照操作步驟即可解決環(huán)境對灰度傳感器影響較大,賽道多次取點(diǎn)進(jìn)行傳感器灰度值測量,之后修改程序內(nèi)AD值條件。(1)用NorthStar打開循跡的程序(2)打開工具菜單下的查詢傳感器出現(xiàn)傳感器頁面,調(diào)整好下載模式以及端口的設(shè)置,點(diǎn)擊啟動服務(wù)(4)完成之后調(diào)整好查詢數(shù)據(jù)模式電機(jī)查詢AD,會在相應(yīng)AD口內(nèi)看到數(shù)據(jù)的變化。(5)測完后取黑線與地面值的中間值調(diào)整if條件。實(shí)驗(yàn)拓展將紅外蔽障功能,以及灰度傳感器巡線功能同時裝在小車上,通過一個自制紅外開關(guān)來控制小車的程序選擇。程序#include"Apps/SystemTask.h"uint8SERVO_MAPPING[4]={1,2,3,4};intmain(){intlgray=0;intyou=0;intkey=0;intrgray=0;intzuo=0;MFInit();MFInitServoMapping(&SERVO_MAPPING[0],4);MFSetPortDirect(0x00000FF8);MFSetServoMode(1,1);MFSetServoMode(2,1);MFSetServoMode(3,1);MFSetServoMode(4,1);while(1){MFGetDigiInput(0);if(key==0){MFGetDigiInput(1);MFGetDigiInput(2);if((zuo==1)&&(you==1)){//前進(jìn)MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(1000);}else{if(you==0){//后退MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);//左轉(zhuǎn)MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);}else{//后退MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);//右轉(zhuǎn)MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);}}}else{lgray=MFGetAD(0);rgray=MFGetAD(1);//右偏if((lgray<=460)&&(rgray>=350)){//左轉(zhuǎn)MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);}else{//左偏if((lgray>=460)&&(rgray<=350)){//右轉(zhuǎn)MFSetServoRotaSpd(1,512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);}else{//meipianif((lgray>=460)&&(rgray>=350)){MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,512);MFServoAction();DelayMS(400);}else{MFSetServoRotaSpd(1,0);MFSetServoRotaSpd(2,0);MFSetServoRotaSpd(3,0);MFSetServoRotaSpd(4,0);MFServoAction();DelayMS(100);}}}}}}通過本次實(shí)驗(yàn)對NorthStar熟練掌握,進(jìn)而對今后使用博創(chuàng)平臺實(shí)現(xiàn)視覺系統(tǒng)等一系列功能掌握。實(shí)驗(yàn)五攝像頭實(shí)現(xiàn)輪式機(jī)器人電機(jī)控制系統(tǒng)一.實(shí)驗(yàn)?zāi)康?.了解OpenCv的使用方法,并以此為平臺實(shí)現(xiàn)基于OpenCv攝像頭巡線小車的制作2.掌握基于HSV顏色模型的圖像閾值分割算法3.使用OpenCv圖像去噪相關(guān)算法:膨脹腐蝕濾波等4.掌握串口通訊,并實(shí)現(xiàn)PC機(jī)與Arduino以藍(lán)牙模塊為載體通訊二.實(shí)驗(yàn)器材OpenCv,HC-05主從一體藍(lán)牙模塊,Arduino,小車底盤,usb攝像頭實(shí)驗(yàn)內(nèi)容三.實(shí)驗(yàn)內(nèi)容1.HSV顏色模型HSV(Hue-Saturation-Value),色相(H)是色彩的基本屬性,就是平常所說的顏色名稱,如紅色,黃色等;飽和度(S)是色彩的純度,越高色彩越純,低則逐漸變灰;明度(V),指色彩的亮度。HSV以人類更熟悉的方式封裝了關(guān)于顏色的信息:“這是什么顏色?深淺如何?明暗如何?”HSV把顏色描述為在圓柱坐標(biāo)系的點(diǎn),這個圓柱的中心軸取值為自底部的黑色到頂部的白色,而在它們中間是灰色;繞這個軸的角度對應(yīng)色相,取值范圍0—360°,到這個軸的距離對應(yīng)飽和度,取值范圍0.0—1.0,而沿這個軸的高度對應(yīng)亮度,取值范圍0(黑色)—1.0(白色)。2.閾值分割策略閾值化的基本思想是:給定一個數(shù)組和一個閾值,然后根據(jù)數(shù)組中的每個元素的值是低于還是高于閾值而進(jìn)行一些處理。:檢查源圖像的每一個像素點(diǎn)的范圍。在下限和上限之間的像素點(diǎn),被置為255;否則置0。即感興趣區(qū)域?yàn)榘咨桓信d趣區(qū)域全為黑色。受光照影響,不同時刻表示同一顏色的空間模型取值不同。因此在圖像處理之前先手動標(biāo)定圖像,把合適的H,S,V取值范圍輸出到文本文件里,供后續(xù)處理讀取。3.圖像去噪分割得到二值化圖像之后,可以很明顯看到圖中仍然有很多細(xì)微的點(diǎn)噪聲存在,而且目標(biāo)內(nèi)部出現(xiàn)空洞,周圍存在毛刺,所以需要對噪聲進(jìn)行進(jìn)一步處理,下面介紹濾出噪聲的常用方法。3.1膨脹膨脹是將與物體接觸的所有背景點(diǎn)合并到該物體中,使邊界向外部擴(kuò)張的過程??梢杂脕硖钛a(bǔ)物體中的空洞。膨脹的算法:用3X3的結(jié)構(gòu)元素,掃描圖像的每一個像素;用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作;如果都為0,結(jié)果圖像的該像素為0,否則為1;結(jié)果使二值圖像擴(kuò)大一圈。函數(shù)這個函數(shù)膨脹源圖像,存儲結(jié)果到目標(biāo)圖像。參數(shù)詳解:源圖像,圖像通道的數(shù)量是任意的,但圖像深度應(yīng)為CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。目標(biāo)圖像,尺寸和類型與源圖像相同膨脹操作核。若為NULL時,表示是使用參考點(diǎn)位于中心3x3的核。一般使用函數(shù)配合參數(shù)使用。函數(shù)會返回指定形狀和尺寸的結(jié)構(gòu)元素(內(nèi)核矩陣)。其中函數(shù)的第一個參數(shù)表示內(nèi)核的形狀,如下:矩形:MORPH_RECT交叉形:MORPH_CROSS橢圓形:MORPH_ELLIPSE錨的位置,默認(rèn)值(-1,-1),表示錨位于中心迭代使用erode()函數(shù)的次數(shù),默認(rèn)值為1用于推斷圖像外部像素的某種邊界模式,默認(rèn)值:BORDER_DEFAULT使用erode函數(shù)時,一般我們只需要設(shè)置前三個參數(shù),后面四個參數(shù)都有默認(rèn)值。例:3.2腐蝕腐蝕是一種消除邊界點(diǎn),使邊界向內(nèi)收縮的過程??梢杂脕硐《鵁o意義的物體。腐蝕的算法:用3x3結(jié)構(gòu)元素,掃描圖像的每一個像素;用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作;如果都為1,結(jié)果圖像該像素為1,否則為0;結(jié)果使二值圖像減小一圈。4.串口通訊串口通信(SerialCommunications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。串口進(jìn)行通信的方式有兩種:同步通信方式和異步通信方式。同步通信方式要求通信雙方以相同的時鐘頻率進(jìn)行,而且準(zhǔn)確協(xié)調(diào),通過共享一個單個時鐘或定時脈沖源保證發(fā)送方和接收方的準(zhǔn)確同步,效率較高;異步通信方式不要求雙方同步,收發(fā)方可采用各自的時鐘源,雙方遵循異步的通信協(xié)議,以字符為數(shù)據(jù)傳輸單位,發(fā)送方傳送字符的時間間隔不確定,發(fā)送效率比同步傳送效率低。4.1串口通訊過程4.2串口通訊重要函數(shù)(1)(2)DCB結(jié)構(gòu)包含了串口的各項(xiàng)參數(shù)設(shè)置,下面僅介紹幾個該結(jié)構(gòu)常用的變量4.HC-05藍(lán)牙一體化模塊HC-05嵌入式藍(lán)牙串口通訊模塊(以下簡稱模塊)具有兩種工作模式:命令響應(yīng)工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從lave)和回環(huán)(Loopback)三種工作角色。當(dāng)模塊處于自動連接工作模式時,將自動根據(jù)事先設(shè)定的方式連接的數(shù)據(jù)傳輸;當(dāng)模塊處于命令響應(yīng)工作模式時能執(zhí)行下述所有AT命令,用戶可向模塊發(fā)送各種AT指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令。通過控制模塊外部引腳(PIO11)輸入電平,可以實(shí)現(xiàn)模塊工作狀態(tài)的動態(tài)轉(zhuǎn)換。實(shí)驗(yàn)成果四.實(shí)驗(yàn)心得通過這個實(shí)驗(yàn)嘗試并學(xué)習(xí)了以前只聽過沒做過的東西,在做的過程中遇到很多問題,但都在與同學(xué)的討論下找到了解決方法。在調(diào)試藍(lán)牙模塊時不能進(jìn)入AT模式,被這個問題絆了兩個晚上;給電腦裝了藍(lán)牙驅(qū)動后,卻不能連接到藍(lán)牙模塊,一直認(rèn)為是驅(qū)動裝錯了,后來用手機(jī)測試成功連接上了,意識到是電腦有問題;巡線時小車突然動不了了,一開始認(rèn)為是電機(jī)或驅(qū)動壞了,后面才知道是因?yàn)榭刂品椒ú划?dāng)使電機(jī)在下次啟動時進(jìn)入死區(qū),后來改進(jìn)為PWM控制;這是非常有意義的一次實(shí)驗(yàn)課。實(shí)驗(yàn)六應(yīng)用卓越聯(lián)盟實(shí)驗(yàn)室設(shè)備進(jìn)行設(shè)計和實(shí)現(xiàn)作品說明1.Protell99SE的使用及電路板的雕刻一.實(shí)驗(yàn)?zāi)康?.了解Protell99se的使用方法,并以此為平臺設(shè)計電路板2.了解將原理圖轉(zhuǎn)化為雕刻機(jī)所需的輸出格式,并運(yùn)用雕刻機(jī)制作出自己獨(dú)有的電路板二.實(shí)驗(yàn)器材Pretell99se設(shè)計軟件,電路原理圖,pcb電路板雕刻機(jī)等三.實(shí)驗(yàn)內(nèi)容將Protell99軟件安裝進(jìn)電腦查看所給文件的電路圖設(shè)計出自己組獨(dú)有的pcb電路板將電路板雕刻出來Protell99制作原理圖庫的方法將元件庫文件和原理圖文件放在同一個設(shè)計中在原理圖所在的設(shè)計數(shù)據(jù)庫文件夾下新建一個原理圖庫文件,取名為mylibrary。名字可任取。打開原理圖庫文件,默認(rèn)狀態(tài)下此庫文件里已經(jīng)存在一個名為component_1的元件選擇繪圖工具框中的繪制矩形工具繪制元件的邊框(即繪制元件的符號或外形)左鍵點(diǎn)擊繪圖工具欄里的繪制管腳圖標(biāo),按下Tab鍵進(jìn)入管腳屬性編輯對話框。1管腳名字為com,其他管腳名隱藏,管腳編號為1~9。依次放置9個管腳,在放置管腳時,管腳的一端有一個小黑點(diǎn),旋轉(zhuǎn)管腳使小黑點(diǎn)朝外雙擊矩形方框進(jìn)行邊框?qū)傩栽O(shè)置。BorderWidth選擇SmallBorderColor選擇合適的顏色。用上述方法繪制8個電阻形狀的矩形框,放置在上面畫好的邊框里點(diǎn)擊畫圖工具欄里的畫線工具,將畫好的電阻和管腳連接好。修改元件描述保存后退出編輯。當(dāng)所有的元件制作完成后,保存并關(guān)掉元件庫文件(2)單獨(dú)創(chuàng)建一個元件庫(倉庫),注意這個元件庫還是Protel設(shè)計數(shù)據(jù)庫文件。1)新建一個設(shè)計,取名為“mylibrary”或

溫馨提示

  • 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

提交評論