全国大学生机器人搬运比赛部分程序(aw60)
机器人搬运赛竞赛规则-V1.0

* Please note that this is draft version of the rules. It is not the final version therefore, there may have some changes until 2 months before the competition.Transporter机器人搬运赛组别:中学组(A组、B组)、小学组(A组、B组)成员:每组一台机器人,一位参赛队员1. Game DescriptionTransporter is a game that robot transport specified target to assigned goal in IROC official playfield in time. The robot who transports all targets and returns at time closest to given time will win the game.It is essential to understand participant’s own robot fully, dynamics and physical laws about robot, sensor control techniques, and programming in order to construct robot and program it.本项目为轨迹类计时赛,机器人从起点出发,完成指定搬运任务,在指定时间到达终点后停住。
本项目非比谁更快,而是比谁更精准。
机器人不能推、拖目标物,只能将目标物搬里地面并运送。
2. Robot rule2-1. Robot type 机器人类型No restriction 没有特别限制。
2-2. Construction 机器人搭建2-2-1. Built on-site 现场搭建The robots should be built on-site by the participant during the construction time except for the robot controller.机器人应在比赛当场搭建。
第十八届全国大学生机器人大赛ROBOCON总决赛赛制

第十八届全国大学生机器人大赛ROBOCON
总决赛赛制
1. 总决赛分为初赛和复赛两个阶段。
2. 初赛
(1)初赛为分组循环赛。
南、北两赛区晋级赛后晋级的各16支参赛队分为A~H共8组,每组4队。
各赛区的前四名为种子队,其它24支参赛队抽签确定排位,如下表所示:
【注】表中“北”、“南”分别表示北方赛区和南方赛区,数字为在该赛区的名次。
(2)每组内实行循环赛制,比赛6场,对阵表及场序如下表所示:
(3)每场比赛在某一队实现“登顶”或开赛3分钟后立即结束。
(4)每场比赛获胜队积分为1;失利队积分为0;没有平局。
(5)初赛结束后按下顺序排队组内名次:
①先按积分排名,积分高的队在先;
②如果两队积分相同,则三场中实现“登顶”次数多的队排列在先;
③如果仍然持平,则三场总分高的队在先;
④如果仍然持平,则三场机器人总重轻的队在先。
(6)各组前两名晋级复赛。
4. 复赛
(1)复赛为淘汰赛。
淘汰赛采用三局两胜制,最先获得两局胜利的参赛队晋级。
(2)每场比赛在满足结束条件后立即结束。
(3)根据分组循环赛后的排名成绩,各组排名1、2位的参赛队出线,取得复赛的资格。
复赛按上图对阵,图中A1为A组第一名,A2为A组第二名,余
类推。
(4)对阵表中,红框中的参赛队为红队,蓝框中的参赛队为蓝队。
(5)颁奖仪式前的比赛为八进四、半决赛和决赛。
2013中国教育机器人大赛智能搬运比赛演示程序说明

2013中国教育机器人大赛智能搬运竞赛演示程序说明深圳市中科鸥鹏智能科技有限公司2013年7月目录第一章智能搬运比赛简介 (3)1.1 比赛任务介绍 (3)第二章组装智能搬运机器人 (4)2.1 智能搬运机器人零件 (4)2.2 智能搬运机器人安装说明 (4)第三章超声波传感器测试说明 (7)3.1 超声波传感器技术参数介绍 (7)3.2 超声波测试程序 (8)第四章QTI线跟踪传感器测试说明 (10)4.1 QTI传感器技术参数介绍 (10)4.2 QTI传感器测试程序 (10)第五章智能搬运算法说明及程序 (12)5.1 智能搬运算法说明 (12)5.2 智能搬运程序 (13)第一章智能搬运比赛简介智能搬运是“中国教育机器人比赛”的一个比赛项目,智能搬运比赛是基于8位单片机的小型机器人比赛项目。
在比赛场地里移动,并将不同颜色的色块分类搬运到对应的位置。
比赛的记分根据机器人搬运物体安置位置的精度和完成任务时间来决定分值的高低。
该比赛模拟了工业自动化过程中自动化物流系统的实际工作过程,使参赛队员在实践中了解自动化物流系统的制作过程。
1.1 比赛任务介绍图1.1 智能搬运场地图如图1.1所示绿色区域为智能搬运场地的出发区。
机器人从出发区出发,到达物料储存区后,分拣其赛前1小时抽签决定好的任务,即先从5个预知颜色色块(黄、白、红、黑、蓝)按照顺序抽取4个颜色色块分别依次放到A,B,D,E位置,然后将剩下的1个色块通过抽签放到F、G、H和I中的一个位置。
在1小时内修改和调整程序,控制机器人运动,以便将5个颜色色块准确地搬运到对应的5个颜色中心区域内,最后回到出发区。
第二章组装智能搬运机器人2.1 智能搬运机器人零件⏹宝贝车车体一套⏹搬运手爪一个⏹超声波传感器一个⏹QTI线跟踪套件四个⏹C51+AVR教学板一个⏹导线和连接线若干⏹螺钉、螺母、铜柱和固定架若干⏹5-8V电源一个以下为部分智能搬运机器人零件的实物图。
5.1机器人专项赛—搬运机器人挑战赛比赛规则.docx

搬运机器人挑战赛比赛规则(一)比赛目的设计一个基于微处理器和传感器完成的小型机器人,在模拟的厂区内可以自动准确识别物体的具体位置、跟踪、避障、平稳夹持物体和放置物体、自动定位机器人自身精确位置并准确回到起始点,主要考察了搬运机器人的关键技术机械系统、电气系统、控制系统、视觉识别、避障系统、室内定位等技术。
1.机构认知、机械设计、动手能力:机器人本体机构认识,锻炼动手能力2.电气系统认知:机器人电气系统,锻炼电气连接动手能力、传感器系统设计。
3.控制系统认识:机器人控制系统设计,控制算法、编写控制程序。
4.软件系统认识:机器人软件系统设计,锻炼决策算法的编写。
5.一个小组: 2-3 人每人负责一块任务,锻炼学生团队合作能力(二)比赛任务比赛模拟一个情景:一辆自主移动搬运机器人,想要通过桥,然后将一个物品从一个桌子上面转移到另一个桌面上。
比赛场地是一个厂区室内环境,包含一个障碍通道、一个斜坡桥和两个桌子。
在裁判的信号指令下,机器人开始比赛,完成如下任务顺序:从起始点出发下坡精确行驶通过单边桥准确抓取物品穿过障碍物通道将物品转移到指定的桌子上回到起始位置上,整个过程必须是自主完成。
裁判会观察评估准确定位精度、并记录从发出开始到机器人将物体放在桌子上、回到出发区的时间;评估完成动作能力等。
(三)比赛规则1.机器人要求:参赛的机器人要能够放入一个长宽高 320mm*320mm 的区域内;要求车轮胎面宽度≤ 30mm 。
2.比赛时间规定:按照抽签顺序进行比赛,比赛开始时不能在 1 分钟到达指定比赛位置视为自动放弃比赛机会。
3.规则与裁判每场比赛将委派两名裁判执行裁判工作,两名裁判分别多各组参赛队伍进行打分,最终取平均分作为比赛结果,裁判员在比赛过程中所作的裁决为比赛权威判定结果不容争议,参赛队伍必须接受裁判结果。
裁判的责任:(1)执行比赛的所有规则。
(2)监督比赛的犯规现象。
(3)记录比赛的成绩和时间。
(4)核对参赛队员的资质。
机器人搬运比赛规则

2013 中国机器人大赛暨 RoboCup 公开赛
机器人搬运比赛
规则
2013-6-1
竞赛联系人:中国矿业大学 王军 公共邮箱(技术讨论、资料下载):zhinengbanyun@,密码 123456
⑴ 整个比赛过程,机器人必须自主完成比赛任务,不能人为干涉机器人(包括 直接接触和场外遥控等)。发生人为干预机器人的现象,记 0 分。
⑵ 参赛队之间不能互相借用机器人,同一个机器人只能代表一支参赛队比赛。 发生借用他队机器人的现象,记 0 分。
⑶ 比赛终止时,正在移动的料块不得分,记 0 分。
5
规则二 比赛场地(Ⅱ)与记分标准
说明: 获取搬运一个料块的分值的条件:结束比赛后,物料必须与机器人脱离,才能 获取搬运该料块的分值。 获取返回出发区分值为 10 分的条件:限定机器人至少完成一个料块的搬运且 搬运料块要有得分,才能获得返回出发区得分。 2.出现下列情况,不得分: ⑴ 整个比赛过程,机器人必须自主完成比赛任务,不能人为干预机器人(包 括直接接触和场外遥控等)。发生人为干预机器人的现象,记 0 分。 ⑵ 参赛队之间不能互相借用机器人,同一个机器人只能代表一支参赛队比赛。 发生借用他队机器人的现象,记 0 分。 ⑶ 比赛终止时,正在移动的料块不得分,记 0 分。
2.分拣料块得分原则: 结束比赛后,物料必须与机器人脱离,才能计算分数。
3.返回出发点得分原则: 比赛终止时刻,机器人若有一个轮子与地面的接触点在出发区内,并且机器人
已经停止动作,则认为已经回到出发点,得 10 分。 若机器人无法自动回到出发区时,参赛队员可以口头通知裁判提前终止比赛,
第六届全国大学生工程训练综合能力竞赛智能物流机器人项目“场景设置与任务命题”优秀设计方案

第六届全国大学生工程训练综合能力竞赛智能物流机器人项目“场景设置与任务命题”优秀设计方案(1)场景设计思路①场景设置总体思路:1.出发区设置在原料区附近,有利于节约路径,提高生产效率,符合生产实际需要。
2.成品区安排在出仓口附近,有利于订单货物及时高效运输出仓库,且尽可能不与场内物流机器人发生干涉。
3.根据现代仓储的经验,成品区一般并排放置,中间留有机器人移动区,故将A、B两区的成品区放至赛道的中间,以仓库出口为基准,对称摆放。
4.A、B加工区相离较近,方便实际的集中生产管理。
5.兼顾比赛的公平性,A/B区域的各元素原则上对称设置。
②场景设计具体方案方案一:A区、B区机器人在各自的区域独立工作后,换区域工作,如图14-27(a)所示,完成任务一和任务二两项任务。
任务一:智能物流机器人在A区或B区完成:“取料→加工→仓储”的全过程,这种方式不会与对方机器人发生接触,重点考查机器人路径规划和搬运准确度。
任务二:将A区已放入成品区的物料,搬运到B区的加工区加工,然后放入B区的成品区,反之亦然,这个任务可以考察两机器人的协同能力,同时也能更好地体现上下游生产环节的物流搬运。
方案二:A区、B区机器人在整个流程中全区域协同工作,如图14-27(b)所示。
智能物流机器人全区域中完成:“取料→加工→仓储”的全过程,不仅考查考查机器人路径规划和搬运准确度,同时考察两机器人的协同能力(如何避免碰撞、路径优化等)。
具体的可以为A/B原料区交换、A/B加工区交换、A/B成品区交换,智能物流机器人在搬运的过程中会发生若干次“相遇”,考验机器人的协同性;另外加大A/B相关区域的跨度,考验机器人的定位能力和续航能力。
方案三:在方案一或方案二的基础上,将成品区靠墙放置(沿赛道边缘),增加物流机器人的可活动范围,减少发生干涉的情况,降低一定的难度,示意图如图14-27(c)所示。
③场景道具(物料)方案除常用的圆柱、长方体外,可以使用诸如沙漏型、保龄球形等上下形状不一致的物料。
运输机器人对抗赛·规则文档

第四届浙江省大学生机器人竞赛运输机器人对抗赛·规则文档1. 比赛任务简介比赛场地上有很多货物——8个黄色的方砖(每个1分)和5个绿色的方砖(每个3分)。
红蓝两队的机器人将同时从本队的“启动区”出发,并在4分钟的比赛时间内,将场上的方砖运送到与本队颜色相同的“收集区”中。
比赛结束时,根据场上各队“收集区”中的方砖计算比分。
场地上有一块与本队颜色相同的“双倍砖”。
比赛结束时,如果“双倍砖”在本队“扇形收集区”内,此队的得分将会翻倍。
2. 比赛场地说明(尺寸单位mm)运输机器人对抗赛比赛场地示意图比赛场地为木制,大小为4000×3200,周边有高100、厚15的围栏。
场地正中心放置一个外径640的圆形转桌(桌面可在外力作用下旋转),桌厚40,桌下有一高160、直径400的支撑台柱,桌面中心上固定了一个方形围栏,栏厚15、高15,内部方形边长60。
场地两条长边中点位置各卡入一个高200的矮墙,矮墙高200、长445、宽90,矮墙靠近场地中心一端的顶上固定了一个方形围栏,栏厚15、高15,内部方形边长60。
场地和斜坡的地面喷涂了黑色哑光漆,并粘贴了若干宽30的白色引导线(引导线围成的基本方格边长是400)。
各队的启动区和收集区张贴了代表本队颜色的深色哑光广告贴纸。
场地两侧的长方形收集区中间部分与场地黑色地面直接连通,但两侧的正方形收集区都有高30、厚15的围栏保护。
场地的围栏和圆桌的其他部分被喷涂成白色。
方砖的边长是50左右,为木质材料,表面喷涂对应颜色的木工漆或者包裹对应颜色的广告贴纸。
比赛开始前,方砖和圆桌桌面被放置在“运输机器人对抗赛比赛场地示意图”所示的对应位置。
黄色为1分砖,绿色为3分砖,红色为红队双倍砖,蓝色为蓝队双倍砖。
场地的其他尺寸参见“运输机器人对抗赛比赛场地尺寸图”,最终比赛的实际场地允许存在±5的误差。
运输机器人对抗赛比赛场地尺寸图3. 比赛详细流程和规则要求3.1 必须使用由本队队员亲自制作的非遥控自主机器人参赛。
全国大学生机器人搬运比赛部分程序(aw60)

图1比赛场地示意图//-------------------------------------------------------------------------*//机器人搬运比赛程序如下:// 项目名: 基于Freescale AW60的*// 硬件连接: *// 程序描述: 定时器2作为颜色传感器计数器;定时器1通道0-1作为PWM输出;通道2作为颜色传感器的定时器溢出中断// 超声波计数用定时器1 *// 说明: *// ? *// *// 作者信息? *// 版本信息? *// 完成时间? *// 修订记录:*// 时间:*// 内容:? *//-------------------------------------------------------------------------*//调用头文件#include "Includes.h"void main(void){//定义变量,不管在主程序还是子函数,都需要把变量的定义放在最前面,否则会报错int D=0;int m=0;char num1=0; //用于计数用char num2=0; //用于转弯计数用char flag_forward=1; //前进的标志位char flag_backward=1; //后退的标志位//用到的端口,一定要记得初始化端口数据方向寄存器//液晶模块//PTGDD |= 0b00011111; //液晶模块IO的输入输出配置//颜色传感器模块//PTCDD |= 0b00101100; //配置颜色传感器模块// PTFDD &= 0b11111110;//红外传感器模块及驱动模块PTDDD = 0b00000111; // PTDD4作为定时器2的外部时钟输入PTBDD = 0b01000000; //前五个是红外传感器,最后两个是超声波的发送和接收PTEDD |= 0b11111100; //配置驱动模块//PTEDD &= 0b11111110; //配置红外接近传感器PTADD = 0xFF; //PTFDD = 0b00111111; //前两个口左右计数的口//2 关总中断DisableInterrupt(); //禁止总中断//3 芯片初始化MCUInit();//4 模块初始化PWM_Init(1,0x0fa0); //用作PWM输出控制电机周期最佳控制大概400ms左右(控制舵机用TPM_NUM_1,CH_2)//TPMinit(2); //用来作为颜色传感器的计数用外部时钟/*rb=0; //值的初始化bb=0; //值的初始化gb=0; //值的初始化ryz=0; //值的初始化byz=0; //值的初始化gyz=0; //值的初始化flag=0; //值的初始化*/num_black=0;num_left=0;num_right=0; D=60;// baipingheng();// EnableInterrupt(); ////开总中断*/while (1){//-------------------------------------------------------------------------*//文件名: 无*//说明: 完成直推三个目标*//作者:*//初始时间:*//修订记录:*//备注:程序顺序执行一遍就走完了全程,回到出发区*//-------------------------------------------------------------------------*/*while(num_black<2){num_black= black_num(0);xunji_forward_3();if(num_black==2){stop(0);DelayMs(100);while(num_right<=1){num_right= black_num(1);xunji_forward_3();}stop(0); //到达目的地num_right=0;num_black=0;flag_backward==0; //作为后退的准备}while(flag_backward==0) //后退到赛道中心的程序{back_faward();DelayMs(1000); //等待黑线的过去if(COUNT_RIGHT==1){flag_backward=1;}}turn_left(2); //左转90角度.推第二个目标while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;}}middle_faward(70);DelayMs(100); //避免再碰到黑线stop(0);DelayMs(2); //减缓电机的抖动Eleft(70);while(num_left<=3) //左转180度推第三个目标{num_left=black_num(1);}if(num_left==3){num_left=0;num_black=0; //黑线数清零?}DelayMs(10);while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;}}turn_left(3);back_faward();while(num_black<2)num_black= black_num(0);back_faward();DelayMs(1000);*///-------------------------------------------------------------------------*//文件名: 无*//说明: 直走90度弯的程序*//作者:*//初始时间:*//修订记录:*//备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯,推物块到目的地,然后返回到中心停住的程序*//-------------------------------------------------------------------------*/*black_num(0);if(num_black==2){turn_left(4);num_black=0; //黑线数清零?flag_forward=0; //为直推做好准备,必须写的程序}else xunji_forward_3();}while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;while(1);}}*///-------------------------------------------------------------------------*//文件名: 无*//说明: 直走90度弯的程序*//作者:*//初始时间:*//修订记录:*//备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯而已,后面num1是被清零的,所以还是在执行循迹*//-------------------------------------------------------------------------*/*if(sensor_inp_forward()==0x1f)num1++;while(sensor_inp_forward()==0x1f);if(num1==2){Eleft(70);while(num2<4){if(num_right==1)num2++;//DelayMs(1000);while(num_right==1);}num1=0;//DelayMs(3000);}else xunji_forward_3();*///-------------------------------------------------------------------------*//文件名: Robot_Run.c *//说明: 双足机器人运动函数文件* //作者:*//初始时间:*//修订记录:*//备注:*//-------------------------------------------------------------------------*#include "Robot_Run.h"//不同的车,因为电机接线不一样,对应的这些设置也会有变动,最好自己先测试这几个最基本的动作uint8 flag_black=0,flag_right=0,flag_left=0;//车前的传感器uint8 sensor_inp_forward(){unsigned char sensor_forward;sensor_forward=PTBD;sensor_forward&=0x1F;return sensor_forward;}//车后的传感器uint8 sensor_inp_backward(){unsigned char sensor_backward;sensor_backward=PTDD;sensor_backward&=0x07;return sensor_backward;}//此段为前进程序启动void middle_faward(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed+4);//已经调整好的参数占空比百分之78IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2); //设置PWM设置的时间间隔}//此段为旋转左转程序程序启动void left(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2);}//此段为旋转大左转程序程序启动void Eleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed-20);IN1=1;IN2=0;IN3=0;IN4=1;DelayMs(2);}//此段为旋转右转启动程序void right(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2);}//此段为旋转大右转启动程序void Eright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=1;IN4=0;DelayMs(2);}//此段为后退直走序程序启动void back_faward(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed+4);//已经调整好的参数占空比百分之78IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转左转程序程序启动void backleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转大左转程序程序启动void backEleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=1;IN4=0;DelayMs(2);}//此段为旋转右转启动程序void backright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转大右转启动程序void backEright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=0;IN4=1;DelayMs(2);}//此段为停止启动程序void stop(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=0;IN3=0;IN4=0;DelayMs(2);}//-------------------------------------------------------------------------*//函数名: xunji_backward_3 *//功能: 后退五路循迹//参数: 无*//返回: 无*//说明: 1、执行该循迹程序时在不断地设置定时器PWM模块;// 2、使用时要注意一定要每隔一段时间执行此程序一次(两者是缺一不可的),才能达到循迹的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图1比赛场地示意图图2机器人出发区示意图4//-------------------------------------------------------------------------*//机器人搬运比赛程序如下:// 项目名: 基于Freescale AW60的 *// 硬件连接: *// 程序描述: 定时器2作为颜色传感器计数器;定时器1通道0-1作为PWM输出;通道2作为颜色传感器的定时器溢出中断// 超声波计数用定时器1 *// 说明: *// ? *// *// 作者信息? *// 版本信息? *// 完成时间? *// 修订记录: * // 时间: *// 容:? *//-------------------------------------------------------------------------* //调用头文件#include "Includes.h"void main(void){//定义变量,不管在主程序还是子函数,都需要把变量的定义放在最前面,否则会报错 int D=0;int m=0;char num1=0; //用于计数用char num2=0; //用于转弯计数用char flag_forward=1; //前进的标志位char flag_backward=1; //后退的标志位//用到的端口,一定要记得初始化端口数据方向寄存器//液晶模块//PTGDD |= 0b00011111; //液晶模块IO的输入输出配置//颜色传感器模块//PTCDD |= 0b00101100; //配置颜色传感器模块// PTFDD &= 0b11111110;//红外传感器模块及驱动模块PTDDD = 0b00000111; // PTDD4作为定时器2的外部时钟输入PTBDD = 0b01000000; //前五个是红外传感器,最后两个是超声波的发送和接收 PTEDD |= 0b11111100; //配置驱动模块//PTEDD &= 0b11111110; //配置红外接近传感器PTADD = 0xFF; //PTFDD = 0b00111111; //前两个口左右计数的口//2 关总中断DisableInterrupt(); //禁止总中断//3 芯片初始化MCUInit();//4 模块初始化PWM_Init(1,0x0fa0); //用作PWM输出控制电机周期最佳控制大概400ms左右(控制舵机用TPM_NUM_1,CH_2)//TPMinit(2); //用来作为颜色传感器的计数用外部时钟/*rb=0; //值的初始化bb=0; //值的初始化gb=0; //值的初始化ryz=0; //值的初始化byz=0; //值的初始化gyz=0; //值的初始化flag=0; //值的初始化*/num_black=0;num_left=0;num_right=0; D=60;// baipingheng();// EnableInterrupt(); ////开总中断 */while (1){//-------------------------------------------------------------------------* //文件名: 无 *//说明: 完成直推三个目标 *//作者:*//初始时间: *//修订记录:*//备注:程序顺序执行一遍就走完了全程,回到出发区*//-------------------------------------------------------------------------*/*while(num_black<2){num_black= black_num(0);xunji_forward_3();}if(num_black==2){stop(0);DelayMs(100);while(num_right<=1){num_right= black_num(1);xunji_forward_3();}stop(0); //到达目的地num_right=0;num_black=0;flag_backward==0; //作为后退的准备}while(flag_backward==0) //后退到赛道中心的程序{back_faward();DelayMs(1000); //等待黑线的过去if(COUNT_RIGHT==1){flag_backward=1;}}turn_left(2); //左转90角度 .推第二个目标while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;}}middle_faward(70);DelayMs(100); //避免再碰到黑线stop(0);DelayMs(2); //减缓电机的抖动Eleft(70);while(num_left<=3) //左转180度推第三个目标{num_left=black_num(1);}if(num_left==3){num_left=0;num_black=0; //黑线数清零?}DelayMs(10);while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;}}turn_left(3);back_faward();while(num_black<2)num_black= black_num(0);back_faward();DelayMs(1000);*///-------------------------------------------------------------------------* //文件名: 无 *//说明: 直走90度弯的程序 *//作者:*//初始时间: *//修订记录: *//备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯,推物块到目的地,然后返回到中心停住的程序*//-------------------------------------------------------------------------* /*black_num(0);if(num_black==2){turn_left(4);num_black=0; //黑线数清零?flag_forward=0; //为直推做好准备,必须写的程序}else xunji_forward_3();}while(flag_forward==0){xunji_forward_3();if(COUNT_RIGHT==1){flag_forward=1; //直推完成flag_backward=0; //开始后退的旅程}}while(flag_backward==0){back_faward();if(COUNT_RIGHT==1){flag_backward=1;while(1);}}*///-------------------------------------------------------------------------* //文件名: 无 *//说明: 直走90度弯的程序 *//作者:*//初始时间: *//修订记录:*//备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯而已,后面num1是被清零的,所以还是在执行循迹*//-------------------------------------------------------------------------*/*if(sensor_inp_forward()==0x1f)num1++;while(sensor_inp_forward()==0x1f);if(num1==2){Eleft(70);while(num2<4){if(num_right==1)num2++;//DelayMs(1000);while(num_right==1);}num1=0;//DelayMs(3000);}else xunji_forward_3();*///-------------------------------------------------------------------------*//文件名: Robot_Run.c *//说明: 双足机器人运动函数文件 * //作者:*//初始时间: *//修订记录:*//备注: *//-------------------------------------------------------------------------* #include "Robot_Run.h"//不同的车,因为电机接线不一样,对应的这些设置也会有变动,最好自己先测试这几个最基本的动作uint8 flag_black=0,flag_right=0,flag_left=0;//车前的传感器uint8 sensor_inp_forward(){unsigned char sensor_forward;sensor_forward=PTBD;sensor_forward&=0x1F;return sensor_forward;}//车后的传感器uint8 sensor_inp_backward(){unsigned char sensor_backward;sensor_backward=PTDD;sensor_backward&=0x07;return sensor_backward;}//此段为前进程序启动void middle_faward(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed+4);//已经调整好的参数占空比百分之78IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2); //设置PWM设置的时间间隔}//此段为旋转左转程序程序启动void left(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40); PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2);}//此段为旋转大左转程序程序启动void Eleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed-20); IN1=1;IN2=0;IN3=0;IN4=1;DelayMs(2);}//此段为旋转右转启动程序void right(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=1;IN4=0;DelayMs(2);}//此段为旋转大右转启动程序void Eright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=1;IN4=0;DelayMs(2);}//此段为后退直走序程序启动void back_faward(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed+4);//已经调整好的参数占空比百分之78IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转左转程序程序启动void backleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转大左转程序程序启动void backEleft(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=1;IN4=0;DelayMs(2);}//此段为旋转右转启动程序void backright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=1;IN3=0;IN4=1;DelayMs(2);}//此段为旋转大右转启动程序void backEright(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=1;IN2=0;IN3=0;IN4=1;DelayMs(2);}//此段为停止启动程序void stop(uint8 speed){PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN1=0;IN2=0;IN3=0;IN4=0;DelayMs(2);}//-------------------------------------------------------------------------*//函数名: xunji_backward_3 *//功能: 后退五路循迹//参数: 无 *//返回: 无 *//说明: 1、执行该循迹程序时在不断地设置定时器PWM模块;// 2、使用时要注意一定要每隔一段时间执行此程序一次(两者是缺一不可的),才能达到循迹的功能。