2013中国教育机器人大赛智能搬运比赛演示程序说明.doc_第1页
2013中国教育机器人大赛智能搬运比赛演示程序说明.doc_第2页
2013中国教育机器人大赛智能搬运比赛演示程序说明.doc_第3页
2013中国教育机器人大赛智能搬运比赛演示程序说明.doc_第4页
2013中国教育机器人大赛智能搬运比赛演示程序说明.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013中国教育机器人大赛智能搬运竞赛演示程序说明深圳市中科鸥鹏智能科技有限公司2013年7月目录第一章智能搬运比赛简介31.1比赛任务介绍3第二章组装智能搬运机器人42.1智能搬运机器人零件42.2智能搬运机器人安装说明4第三章超声波传感器测试说明63.1超声波传感器技术参数介绍63.2超声波测试程序7第四章QTI线跟踪传感器测试说明94.1 QTI传感器技术参数介绍94.2 QTI传感器测试程序9第五章 智能搬运算法说明及程序105.1智能搬运算法说明105.2智能搬运程序11第一章智能搬运比赛简介智能搬运是“中国教育机器人比赛”的一个比赛项目,智能搬运比赛是基于8位单片机的小型机器人比赛项目。在比赛场地里移动,并将不同颜色的色块分类搬运到对应的位置。比赛的记分根据机器人搬运物体安置位置的精度和完成任务时间来决定分值的高低。该比赛模拟了工业自动化过程中自动化物流系统的实际工作过程,使参赛队员在实践中了解自动化物流系统的制作过程。1.1比赛任务介绍图1.1 智能搬运场地图如图1.1所示绿色区域为智能搬运场地的出发区。机器人从出发区出发,到达物料储存区后,分拣其赛前1小时抽签决定好的任务,即先从5个预知颜色色块(黄、白、红、黑、蓝)按照顺序抽取4个颜色色块分别依次放到A,B,D,E位置,然后将剩下的1个色块通过抽签放到F、G、H和I中的一个位置。在1小时内修改和调整程序,控制机器人运动,以便将5个颜色色块准确地搬运到对应的5个颜色中心区域内,最后回到出发区。第二章组装智能搬运机器人2.1智能搬运机器人零件n 宝贝车车体 一套n 搬运手爪 一个n 超声波传感器 一个n QTI线跟踪套件 四个n C51+AVR教学板 一个n 导线和连接线 若干n 螺钉、螺母、铜柱和固定架 若干n 5-8V电源 一个以下为部分智能搬运机器人零件的实物图。 图2.1 宝贝车车体图 图2.2搬运手爪图 图2.3 C51+AVR教学板图 图2.4 QTI线跟踪套件图 图2.5超声波传感器图2.2智能搬运机器人安装说明参照基础机器人制作与编程文档第29至32页的要求组装宝贝车和C51+AVR教学板(注:该文档的宝贝车上装BASIC Stamp 微控制器,将BASIC Stamp 微控制器换成C51+AVR教学板即可,安装要求教学板上的面包板在车体前方。)。以下用表格描述各传感器与教学板的电路连接方式。表2.1 电机、QTI线跟踪套件、超声波传感器与C51教学板的电路连接设备名称设备端口C51教学板端口右电机白线P10红线Vin黑线GND左电机白线P11红线Vin黑线GNDQTI1SIGP00QTI2SIGP01QTI3SIGP02QTI4SIGP03超声波传感器TrlgP20EchoP21VCC5VGNDGND表格补充说明,以宝贝车的车体前方为正方向,则对应的左右两边为左右电机,如图2.6所示。4个QTI线跟踪传感器的命名顺序是从右边第一个开始为QTI1,第二个为QTI2,第三个为QTI3,第四个为QTI4。图2.6 智能小车左右电机标明图按照上面描述的安装方法完成智能小车安装,安装完成的小车效果图,如图2.7、图2.8、图2.9所示。 图2.7 智能小车安装效果俯视图 图2.8 智能小车安装效果正面图图2.9 智能小车安装效果小车下方图第三章 超声波传感器测试说明3.1超声波传感器技术参数介绍DM-S28018-B超声波提供了精确的、非接触式的距离测量,测量范围从2cm到5m,它非常方便的与单片机连接,只需要两个IO口就可以控制。(1) 使用方法为:a) 采用IO触发测距,给TRIG至少10us的高电平信号。b) 模块自动发送8个40KHz的方波,自动检测是否有信号返回。c) 有信号通过ECHO返回,ECHO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。(2) 产品特性:a) 使用电压:DC 5V;b) 静态电流:小于2mA;c) 电平输出:高电平VCC0.2V,低电平0.2V;d) 感应角度:不大于15度;e) 探测距离:0.02m-5m;f) 探测精度:3mm 。(3) 电气参数:a) 工作电压:DC 5V;b) 工作电流:10mA;c) 工作频率:40Hz;d) 最远射程:5m;e) 最近射程:2cm;f) 输入触发信号:10uS的TTL脉冲;g) 输出回响信号:输出TTL电平信号,与射程成比例;h) 规格尺寸:43*20*15mm 。(4) 管脚定义表3.1 管脚定义引脚引脚说明引脚引脚说明VCC电压 +5Vout空脚trig触发信号端GNDGNDEcho接收端(5) 模块时序图图3.1 模块时序图(6) 使用时注意事项测量距离是注意事项:a) 在测量距离超过3.3m时,测量误差会增大,可能使得测量距离不是准确等。b) 如果超声波传感器与障碍物的倾角大雨45度使得没有接受信号等。c) 测量物体大小,可能无法测量真实值。环境温度带来的影响:如果考虑较高的精度,就不能忽略温度的影响,下面将给出具体计算超声波传输速度公式。 (式1)3.2 超声波测试程序假设测试程序的定时器计数值(high + low),则该值除于58就是转换为cm为单位的测量距离。超声波传感器和C51教学板的连接方式与表2.1相同。#include AT89X52.h#include uart.h#include stdio.h#include Boebot.h#define TrigL P2_0 /左超声波触发信号#define EchoL P2_1 /左超声波echo引脚信号#define uchar unsigned char#define uint unsigned intuchar timer_cnt=0;/ 记录进定时器中断次数uint sonar_used_time=0;/ 定时器初始化void InitTimer(void) TMOD |= 0x01; TH0 = 0x0; TL0 = 0x0; EA = 1; ET0 = 1; TR0 = 0;/定时器0溢出中断void Interrupt(void) interrupt 1TR0 = 0;/ 测距函数/返回值:返回测量得的距离值uint GetSonarDis(void) uint dis=0; uint high, low; TrigL=0;EchoL=0; /各I/O口置低 TrigL=1; /trig置高 发出10us的高电平信号 delay_nus(25); TrigL=0; while(EchoL = 0); TR0=1; /开启定时器开始计时 while(EchoL = 1 TR0 = 1); /等待echo置低TR0 = 0; high = TH0 * 256; low = TL0; dis = (high + low) / 58; return dis;void main()uint m;uart_Init();while(1)InitTimer(); /定时器初始化m=GetSonarDis(); printf(ultrasonic = %dn,m);delay_nms(1000);第四章QTI线跟踪传感器测试说明4.1 QTI传感器技术参数介绍(1) QTI边线检测传感器性能参数: 工作温度:-4085 参考电压:5V 连续电流:50mA 功耗:100mW 最佳距离:10mm 最佳距离最大散射角度65度 探测到黑色物体输出高电平,探测到白色物体输出低电平。 响应时间:(V = 5v ,R = 100, I = 5mA )n 上升沿时间 10usn 下降沿时间 50us图4.1 引脚示意图4.2 QTI传感器测试程序4个QTI传感器的连线方式与表2.1一样。#includeBoebot.h#includeuart.h#includestdio.h#define uchar unsigned char#define uint unsigned intint qtis;void main() uart_Init();while(1)qtis=P00x0f;switch(qtis)case 0: printf(QTI :0000 n);break;case 1: printf(QTI :0001 n);break;case 2: printf(QTI :0010 n);break;case 3: printf(QTI :0011 n);break;case 4: printf(QTI :0100 n);break;case 5: printf(QTI :0101 n);break;case 6: printf(QTI :0110 n);break;case 7: printf(QTI :0111 n);break;case 8: printf(QTI :1000 n);break;case 9: printf(QTI :1001 n);break;case 10: printf(QTI :1010 n);break;case 11: printf(QTI :1011 n);break;case 12: printf(QTI :1100 n);break;case 13: printf(QTI :1101 n);break;case 14: printf(QTI :1110 n);break;case 15: printf(QTI :1111 n);break; delay_nms(500);第五章 智能搬运算法说明及程序5.1智能搬运算法说明首先把A、B、D、E位置色块搬运到起始区和各转弯线交叉口的连线上。再回到转弯口,利用超声波搜索F、G、H、I位置最后一块色块,搜索到色块将色块搬运到对应的颜色中心区域内。最后再回去把起始去和各转弯交叉口的连线上的色块分别搬运到对应的颜色中心区域内。如图5.1、图5.2、图5.3、图5.4、图5.5、图5.6所示是用图形来描述以上描述的智能搬运算法。 图5.1机器人在起始去 图5.2 机器人将色块统一放在黑线上 图5.3把搜索到色块并取下色块 图5.4把色块搬运到指定颜色中心区域内 图5.5 把黑线上的色块分别搬运到 图5.6 机器人回到起始位置搬运完成指定颜色中心区域内5.2智能搬运程序#includeBoebot.h#includeuart.h#includestdio.h#define uchar unsigned char#define uint unsigned int#define TrigL P2_0 /左超声波触发信号#define EchoL P2_1 /左超声波echo引脚信号int qtis;sbit right_moter=P10;/定义右电机端口sbit left_moter =P11;/定义左电机端口void turn_right_90(void);void turn_left_90(void);void turn_right_120(void);void turn_left_120(void);void turn_right_45(void);void turn_left_45(void);/左转45度 void turn_right_150(void);void turn_left_150(void);void turn_back(); /后转 void turn(uint left,uint right); /微转动 void Fast_forward(uchar a);/快速前进 void stop(void);void back(uchar a);void fast_turn_right_90();void turn_r(uint left,uint right); /转动uchar timer_cnt=0;/ 记录进定时器中断次数uint sonar_used_time=0;/*/ 定时器初始化/*/void InitTimer(void) TMOD |= 0x01; TH0 = 0x0; TL0 = 0x0; EA = 1; ET0 = 1; TR0 = 0;/*定时器0溢出中断*/void Interrupt(void) interrupt 1TR0 = 0;/*/ 测距函数/ 返回值:返回测量得的距离值/*/uint GetSonarDis(void) uint dis=0; uint high, low; TrigL=0;EchoL=0; /各I/O口置低 TrigL=1; /trig置高 发出10us的高电平信号 delay_nus(25); TrigL=0; while(EchoL = 0); TR0=1; /开启定时器开始计时 while(EchoL = 1 TR0 = 1); /等待echo置低TR0 = 0; high = TH0 * 256; low = TL0; dis = (high + low) / 58; return dis;void main() uchar record=0,j=0,ji_shu=0,angle=0; /变量record指挥小车转弯情况,j,ji_shu用于计数,angle用于记录角度。char ii=0,target5=1,2,3,4,5; /变量ii用于计数,数组target5用于记录uint m,i; /变量m,i用于计数。delay_nms(2000); /延时2秒Fast_forward(30); /前进一小段距离while(1)P0=0x0f;/检测黑线 qtis=P00x0f;/读取4个巡线传感器的值Fast_forward(1);/前进一小步switch(qtis)/按照4个巡线传感器的值执行移动指令case 1:turn(1550,1550);break; /大幅向右转case 2: case 3:turn(1550,1500);break; /小幅向右转case 8:turn(1450,1450);break; /大幅向左转case 4: case 12:turn(1500,1450);break; /小幅向左转case 5:case 6:case 7:case 10:case 13:case 14:case 15:Fast_forward(2);break; /向前2小步 if(qtis=15) /4个巡线传感器都检测的黑线 record+; /指挥变量自增switch(record) /按照变量的值执行移动命令case 1:turn_left_90();break; /左转90度case 2:turn_right_90();break; /右转90度case 3:Fast_forward(20);turn_left_45();break; /前进20步,再左转45度case 4:Fast_forward(30);turn_right_45();Fast_forward(15);break;/前进30步,再右转45度,再前进15步。case 5:Fast_forward(20);turn_right_45();break; /前进20步,再右转45度。case 6:Fast_forward(30);turn_left_45();Fast_forward(13);break; /前进20步,再左转45度,再前进13步。case 7:turn_right_90();break; /右转90度case 8:turn_left_90();break; /左转90度ii=0;/将ii变量清零if(record%2=0 record0)/指挥变量值为偶数,并且非零时才执行以下语句。ii+; if(ii62-j*6)/小车把物块安放的位置做一定的间隔。back(32);turn_back();ii=0;j=j+2;if(record%2=1)/小车检测到白点,取下物块后转if(qtis=0)ii+; if(ii4 qtis=0) turn_back(); ii=0; if(record=9) /第九次4个巡线传感器都检测到黑线,则前进26步,再右转90度。Fast_forward(26);fast_turn_right_90();stop();break;/delay_nms(1000);for(i=0;i500;i+) /利用超声波搜索第五个物块InitTimer(); /定时器初始化m=GetSonarDis(); /启动超声波/printf(m = : %dn,m);delay_nms(100);turn_r(1510,1510); /微转动if(m13 m16)if(ji_shu11) /有11次检测到物块,则前进80步,取下物块。stop();Fast_forward(80);break;ji_shu+;/将物块所在的位置分类 if(i10 i75) angle=30; /物块在30度位置if(i75 i130) angle=60; /物块在60度位置if(i160 i215) angle=120; /物块在120度位置if(i215 i270) angle=150; /物块在150度位置switch(angle)/根据物块所在的位置执行相应的指令case 30 :turn_right_150();break;case 60 :turn_right_120();break;case 120:turn_left_120();break;case 160:turn_left_150();break;while(1)P0=0x0f; qtis=P00x0f;Fast_forward(2);/向前3步if(qtis0)/根据4个巡线传感器的检测结果执行相应的指令。switch(angle)case 30 :case 60 :turn_right_90();break;case 120:case 160:turn_left_90();break;break; ii=0;i=0;m=50;j=0; /初始化几个变量的值while(1)if(ii%2=0 ii0 j%2=0)InitTimer(); /定时器初始化m=GetSonarDis(); /启动超声波传感器P0=0x0f;/启动4个巡线传感器 qtis=P00x0f;/读取4个巡线传感器的值i+;/计算器i自增switch(qtis)/根据4个巡线传感器的值,执行相应的指令。case 1:case 2: case 3:turn(1550,1500);break; /小幅向右转case 8:case 4: case 12:turn(1500,1450);break; /小幅向左转case 0:case 5:case 6:case 7:case 10:case 13:case 14:case 15:Fast_forward(1);break; /向前1步 if(qtis=15) /当4个巡线传感器都检测到黑线时,执行以下语句if(ii%2=0) /当计数变量ii为偶数时,根据target5数组的指定元素执行规定的移动指令。switch(targetii/2)case 1:turn_left_90();break;case 2:Fast_forward(20);turn_left_45();Fast_forward(13);break;case 3:Fast_forward(53);break;case 4:Fast_forward(20);turn_right_45();Fast_forward(17);break;case 5:turn_right_90();break;else /当计数变量ii为奇数时,根据target5数组的指定元素执行规定的移动指令。switch(targetii/2) case 1:turn_right_90();break;case 2:Fast_forward(30);turn_right_45();Fast_forward(18);j+;break;case 3:Fast_forward(35);j+;break;case 4:Fast_forward(30);turn_left_45();Fast_forward(15);j+;break;case 5:turn_left_90();j+;break;ii+;i=0; /ii变量自增,i变量清零。/小车回去搬运物块if(m2 ii%2=0 ii0)/满足小车与物块距离2cm,和ii为非零偶数。Fast_forward(10);/前进10步turn_back();/后转j+; m=50;/j自增,m重新设置。if(i184 ii%2=1)/移动184步,并且ii为奇数时,小车放下物快返回。back(32);turn_back();i=0;/i清零/当ii为10时,小车回到起点,搬运结束。if(ii10)Fast_forward(90);break; while(1)stop();void stop(void)right_moter=1;delay_nus(1500);right_moter=0;left_moter=1;delay_nus(1500);left_moter=0;delay_nms(20);void back(uchar a)uchar i;for(i=0;ia;i+) right_moter=1;delay_nus(1600);right_moter=0;left_moter=1;delay_nus(1400);left_moter=0;delay_nms(20);void Fast_forward(uchar a)/快速前进uchar i;for(i=0;ia;i+) right_moter=1;delay_nus(1450);right_moter=0;left_moter=1;delay_nus(1550);left_moter=0;delay_nms(20);void turn(uint left,uint right) /微转动 uchar i;for(i=0;i2;i+)right_moter=1;delay_nus(right);right_moter=0;left_moter=1;delay_nus(left);left_moter=0;delay_nms(20);void turn_back()/后转 uint i;for(i=0;i225;i+) right_moter=1;delay_nus(1480);right_moter=0;left_moter=1;delay_nus(1480);left_moter=0;delay_nms(20);void turn_left_150(void) /左转150度 uchar i;for(i=0;i80;i+) right_moter=1;delay_nus(1400);right_moter=0;left_moter=1;delay_nus(1500);left_moter=0;delay_nms(20);void turn_left_45(void) /左转45度 uchar i;for(i=0;i24;i+) right_moter=1;delay_nus(1400);right_moter=0;left_moter=1;delay_nus(1500);left_moter=0;delay_nms(20);void turn_left_120(void) /左转120度 uchar i;for(i=0;i150;i+) right_moter=1;delay_nus(1480);right_moter=0;left_moter=1;delay_nus(1480);left

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论