版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
--可编辑可编辑-可编辑课程结课总结报告课程名称:机器人的制作实验一基于arduino控制器的轮式机器人循迹避障功能设计实验二应变式传感器电子秤实验实验三基于C51单片机控制器的轮式机器人电机控制系统实验四基于ARM控制器的博创平台轮式机器人循迹避障功能实现实验五摄像头实现轮式机器人循迹功能的应用实验六应用卓越联盟实验室设备进行设计和实现作品说明指导教师许晓飞系别机电工程学院专业机械电子工程学生姓名邓银涛班级/学号机电1401/2014010339成绩
实验一基于ardunio控制器的轮式机器人循迹避障功能设计实验目的1.了解ardunio平台,并熟练使用此软件完成小车的各种活动2.了解HC-SR04超声波测距模块的原理,并且熟练使用此模块作为小车的传感器进行工作3.了解并且熟悉红外线传感器循迹原理实验器材:Adrunio软件,超声波传感器,红外线传感器,导线,底板,电机,电池,单片机等实验内容:1.将硬件组装成小车,即轮式机器人2.利用ardunio使小车完成循迹功能步骤:(1)写好后缀为.txt的c语言循迹文件(2)将文件导入单片机中(3)根据具体路况,运行并且进行调试红外线传感器的灵敏程度3.利用ardunio使小车完成避障功能步骤:(1)写好后缀为.txt的c语言避障文件(2)将文件导入单片机中(3)运行并且进行调试小车躲避障碍物的距离实验程序1.循迹程序:小车循迹程序思路图#include<Servo.h>intLeft_motor_back=8;//左电机后退(IN1)intLeft_motor_go=9;//左电机前进(IN2)intRight_motor_go=10;//右电机前进(IN3)intRight_motor_back=11;//右电机后退(IN4)intkey=7;//定义按键数字7接口constintSensorRight=3; //右循迹红外传感器(P3.2OUT1)constintSensorLeft=4; //左循迹红外传感器(P3.3OUT2)intSL;//左循迹红外传感器状态intSR;//右循迹红外传感器状态voidsetup(){//初始化电机驱动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)//前进voidrun(){digitalWrite(Right_motor_go,HIGH);//右电机前进digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,255);//PWM比例0~255调速analogWrite(Right_motor_back,0);digitalWrite(Left_motor_go,HIGH);//左电机前进digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,255);//PWM比例0~255调速analogWrite(Left_motor_back,0);//delay(time*50);//执行时间,可以调整}//voidleft(inttime)//左转(左轮不动,右轮前进)voidleft(){digitalWrite(Right_motor_go,HIGH); //右电机前进digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,200);analogWrite(Right_motor_back,0);//PWM比例0~255调速digitalWrite(Left_motor_go,LOW);//左轮后退digitalWrite(Left_motor_back,LOW);analogWrite(Left_motor_go,0);analogWrite(Left_motor_back,100);//PWM比例0~255调速//delay(time*50); //执行时间,可以调整}voidright(inttime)//右转(右轮不动,左轮前进)voidright(){digitalWrite(Right_motor_go,LOW);//右电机后退digitalWrite(Right_motor_back,LOW);analogWrite(Right_motor_go,0);analogWrite(Right_motor_back,100);//PWM比例0~255调速digitalWrite}2.避障程序:charL1=9;//zhengcharL2=8;charR1=10;//zhengcharR2=11;intechopin=13;inttrigpin=12;voidsetup()//初始化动作的区块,定义串行端口和脚位{pinMode(echopin,INPUT);//pwmpinMode(trigpin,OUTPUT);}voidloop()//版子重复执行动作的区块{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);//循环间隔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);}实验过程中遇到的问题及解决办法循迹中:1.电机速度差异控制:发现左右轮写入同一数值时,小车行进方向偏离直线,——对左右两轮写入不同数值,多次测试,指导左右轮速度相等。2.电机驱动器给arduino供电出现问题,改用充电宝给arduino供电,直接从gnd和5v输出脚给电机驱动器供电3.一个电机有两根信号输入线,一根控制正转,一根控制反转。两个轮子一起测转地眼晕,容易出错。避障中:1.超声装置避障距离的确定——将HC-SR04超声波避障程序中数值改短,提高避障灵敏性2.硬件的安装:超声装置无法固定——曾尝试过用胶带,废旧车轮等但不理想,并未得到很好的解决实验结果小车可以成功的进行循迹和避障实验二电子秤实验一单臂实验数据处理源码: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('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f(2)))fprintf('非线性误差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('单臂实验')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab处理结果电阻传感器的系数灵敏度S=0.122%非线性误差f=3.607%半桥实验源码: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('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f(2)))fprintf('非线性误差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('半桥实验')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab处理结果电阻传感器的系数灵敏度S=0.238%非线性误差f=1.615%全桥实验源码: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('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f(2)))fprintf('非线性误差f=%5.3f%%\n',mistake)plot(x,y,'--')xlabel('x/g')ylabel('V/mv')title('全桥实验')legend(['y=',num2str(f(2)),'x+',num2str(f(1))])Matlab数据处理电阻传感器的系数灵敏度S=0.393%非线性误差f=0.774%实验三基于C51单片机控制器的轮式机器人电机控制系统实验目的了解PWM波控制电机的原理。基于C51单片机利用PWM波控制电机。实验器材C51单片机、L298N驱动芯片、直流电机、杜邦线、普通导线、keil软件、STC下载器、示波器实验内容用keil新建一个“.c”文件,编写程序并对程序进行调试。将程序烧录进单片机内。进行硬件连接C51引脚如图所示:L298N引脚如图所示:用单片通过P1.0、P1.1和L298的第一对输入端IN1和IN2相连,然后又L298的第一对输出端OUT1和OUT2与直流电机相连;单片通过P1.5、P1.6和L298的第二对输入端IN3和IN4相连,然后又L298的第二对输出端OUT3和OUT4与直流电机相连。给单片机上电。用示波器观察波形。程序内容1、PWM波控制电机启动#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波对电机调速#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);}五、实验心得本次实验中我学会用软件来延时实现PWM的输出,从而实现对电机的控制。实验四基于ARM控制的博创平台轮式机器人循迹蔽障功能实验目的了解NorthStar平台,并熟练使用此软件完成小车的各种活动了解RobotServoTerminal机器人舵机调试系统并掌握使用了解并且熟悉灰度传感器循迹原理实验材料ARM控制器灰度传感器红外探测器舵机电机等实验内容小车硬件的组装蔽障功能的实现循迹功能的实现循迹功能的实现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)){//左转MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);}else{//左偏if((lgray>=460)&&(rgray<=350)){//右转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);}}}}}蔽障功能的实现程序#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);//右转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);//左转MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFSetServoPos(5,512,512);MFServoAction();DelayMS(2000);}}}}实验中遇到的问题以及解决方案1、NorthStar编程完成后下载时遇到的问题解决方案及拓展步骤(1)打开NorthStar软件点击帮助(3)点击帮助主题(4)点开附录以及里边的常见问题及解决将出现一些列常见问题(5)点击遇到的问题,按照操作步骤即可解决环境对灰度传感器影响较大,赛道多次取点进行传感器灰度值测量,之后修改程序内AD值条件。(1)用NorthStar打开循迹的程序(2)打开工具菜单下的查询传感器出现传感器页面,调整好下载模式以及端口的设置,点击启动服务(4)完成之后调整好查询数据模式电机查询AD,会在相应AD口内看到数据的变化。(5)测完后取黑线与地面值的中间值调整if条件。实验拓展将红外蔽障功能,以及灰度传感器巡线功能同时装在小车上,通过一个自制红外开关来控制小车的程序选择。程序#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)){//前进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);//左转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);//右转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)){//左转MFSetServoRotaSpd(1,-512);MFSetServoRotaSpd(2,-512);MFSetServoRotaSpd(3,-512);MFSetServoRotaSpd(4,-512);MFServoAction();DelayMS(400);}else{//左偏if((lgray>=460)&&(rgray<=350)){//右转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);}}}}}}通过本次实验对NorthStar熟练掌握,进而对今后使用博创平台实现视觉系统等一系列功能掌握。实验五摄像头实现轮式机器人电机控制系统一.实验目的1.了解OpenCv的使用方法,并以此为平台实现基于OpenCv摄像头巡线小车的制作2.掌握基于HSV颜色模型的图像阈值分割算法3.使用OpenCv图像去噪相关算法:膨胀腐蚀滤波等4.掌握串口通讯,并实现PC机与Arduino以蓝牙模块为载体通讯二.实验器材OpenCv,HC-05主从一体蓝牙模块,Arduino,小车底盘,usb摄像头实验内容三.实验内容1.HSV颜色模型HSV(Hue-Saturation-Value),色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色,黄色等;饱和度(S)是色彩的纯度,越高色彩越纯,低则逐渐变灰;明度(V),指色彩的亮度。HSV以人类更熟悉的方式封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”HSV把颜色描述为在圆柱坐标系的点,这个圆柱的中心轴取值为自底部的黑色到顶部的白色,而在它们中间是灰色;绕这个轴的角度对应色相,取值范围0—360°,到这个轴的距离对应饱和度,取值范围0.0—1.0,而沿这个轴的高度对应亮度,取值范围0(黑色)—1.0(白色)。2.阈值分割策略阈值化的基本思想是:给定一个数组和一个阈值,然后根据数组中的每个元素的值是低于还是高于阈值而进行一些处理。:检查源图像的每一个像素点的范围。在下限和上限之间的像素点,被置为255;否则置0。即感兴趣区域为白色,不感兴趣区域全为黑色。受光照影响,不同时刻表示同一颜色的空间模型取值不同。因此在图像处理之前先手动标定图像,把合适的H,S,V取值范围输出到文本文件里,供后续处理读取。3.图像去噪分割得到二值化图像之后,可以很明显看到图中仍然有很多细微的点噪声存在,而且目标内部出现空洞,周围存在毛刺,所以需要对噪声进行进一步处理,下面介绍滤出噪声的常用方法。3.1膨胀膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。膨胀的算法:用3X3的结构元素,扫描图像的每一个像素;用结构元素与其覆盖的二值图像做“与”操作;如果都为0,结果图像的该像素为0,否则为1;结果使二值图像扩大一圈。函数这个函数膨胀源图像,存储结果到目标图像。参数详解:源图像,图像通道的数量是任意的,但图像深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。目标图像,尺寸和类型与源图像相同膨胀操作核。若为NULL时,表示是使用参考点位于中心3x3的核。一般使用函数配合参数使用。函数会返回指定形状和尺寸的结构元素(内核矩阵)。其中函数的第一个参数表示内核的形状,如下:矩形:MORPH_RECT交叉形:MORPH_CROSS椭圆形:MORPH_ELLIPSE锚的位置,默认值(-1,-1),表示锚位于中心迭代使用erode()函数的次数,默认值为1用于推断图像外部像素的某种边界模式,默认值:BORDER_DEFAULT使用erode函数时,一般我们只需要设置前三个参数,后面四个参数都有默认值。例:3.2腐蚀腐蚀是一种消除边界点,使边界向内收缩的过程。可以用来消除小而无意义的物体。腐蚀的算法:用3x3结构元素,扫描图像的每一个像素;用结构元素与其覆盖的二值图像做“与”操作;如果都为1,结果图像该像素为1,否则为0;结果使二值图像减小一圈。4.串口通讯串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。4.1串口通讯过程4.2串口通讯重要函数(1)(2)DCB结构包含了串口的各项参数设置,下面仅介绍几个该结构常用的变量4.HC-05蓝牙一体化模块HC-05嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从lave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有AT命令,用户可向模块发送各种AT指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。实验成果四.实验心得通过这个实验尝试并学习了以前只听过没做过的东西,在做的过程中遇到很多问题,但都在与同学的讨论下找到了解决方法。在调试蓝牙模块时不能进入AT模式,被这个问题绊了两个晚上;给电脑装了蓝牙驱动后,却不能连接到蓝牙模块,一直认为是驱动装错了,后来用手机测试成功连接上了,意识到是电脑有问题;巡线时小车突然动不了了,一开始认为是电机或驱动坏了,后面才知道是因为控制方法不当使电机在下次启动时进入死区,后来改进为PWM控制;这是非常有意义的一次实验课。实验六应用卓越联盟实验室设备进行设计和实现作品说明1.Protell99SE的使用及电路板的雕刻一.实验目的1.了解Protell99se的使用方法,并以此为平台设计电路板2.了解将原理图转化为雕刻机所需的输出格式,并运用雕刻机制作出自己独有的电路板二.实验器材Pretell99se设计软件,电路原理图,pcb电路板雕刻机等三.实验内容将Protell99软件安装进电脑查看所给文件的电路图设计出自己组独有的pcb电路板将电路板雕刻出来Protell99制作原理图库的方法将元件库文件和原理图文件放在同一个设计中在原理图所在的设计数据库文件夹下新建一个原理图库文件,取名为mylibrary。名字可任取。打开原理图库文件,默认状态下此库文件里已经存在一个名为component_1的元件选择绘图工具框中的绘制矩形工具绘制元件的边框(即绘制元件的符号或外形)左键点击绘图工具栏里的绘制管脚图标,按下Tab键进入管脚属性编辑对话框。1管脚名字为com,其他管脚名隐藏,管脚编号为1~9。依次放置9个管脚,在放置管脚时,管脚的一端有一个小黑点,旋转管脚使小黑点朝外双击矩形方框进行边框属性设置。BorderWidth选择SmallBorderColor选择合适的颜色。用上述方法绘制8个电阻形状的矩形框,放置在上面画好的边框里点击画图工具栏里的画线工具,将画好的电阻和管脚连接好。修改元件描述保存后退出编辑。当所有的元件制作完成后,保存并关掉元件库文件(2)单独创建一个元件库(仓库),注意这个元件库还是Protel设计数据库文件。1)新建一个设计,取名为“mylibrary”或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投资发起人协议书样本
- 影视制作公司高管聘用合同
- 生态环境治理协议
- 银行和解授信协议
- 建筑供氧气施工合同副本
- 咖啡连锁店装修工程分包协议
- 电信线路铺设室外施工合同
- 化妆品公司解除租赁合同
- 建筑消防安全质量合同
- 摩托车出售合同
- 第五单元第四节 全球发展与合作 教学实录-2024-2025学年粤人版地理七年级上册
- 贵州省部分学校2024-2025学年高三年级上册10月联考 化学试卷
- 期末综合试卷(试题)2024-2025学年人教版数学五年级上册(含答案)
- 2024-2025学年上学期武汉小学语文六年级期末模拟试卷
- 2023-2024学年贵州省贵阳外国语实验中学八年级(上)期末数学试卷(含答案)
- 《争做文明班级》课件
- 辽宁省大连市沙河口区2022-2023学年八年级上学期物理期末试卷(含答案)
- 2024年新能源汽车概论考试题库
- 2024年医师定期考核临床类人文医学知识考试题库及答案(共280题)
- 江苏省南通市2024届高三上学期第一次调研测试(一模)生物 含答案
- 2024年四川省内江市中考历史试卷
评论
0/150
提交评论