当前位置:首页 >> 信息与通信 >> 足球机器人程序(能力风暴)

足球机器人程序(能力风暴)


#include "AS_UIII_LIB.h"

#define Nb 0
#define Hb 1
#define R 2
#define L 3
#define RR 4
#define LL 5
#define F 6

int

com_1;
int Hd_F=0;
int i=0;

/*******************************************************************************
* 函数名 : Pwall
* 功能 : 判断是否碰墙
* 输入 : 无
* 输出 : 无
* 返回 : 无
*******************************************************************************/
void Pwall()
{
int bmp_1;
bmp_1 = bumper();
com_1 = Compass_Degree();
if(bmp_1 == 3)
{
if(com_1 >180)
{
drive(-10,0);
wait(0.5);
drive(0,10);
wait(0.2);
}
else
{
drive(-10,0);
wait(0.5);
drive(0,-10);
wait(0.2);
}
}
else
if( bmp_1 == 1)
{
drive(-10,0);
wait(0.2);
drive(0,5);
wait(0.5);
}
else
if( bmp_1 == 2)
{
drive(-10,0);
wait(0.2);
drive(0,-5);
wait(0.5);
}
}

/*******************************************************************************
* 函数名 : Porb
* 功能 : 判断是否有球
* 输入 : 无
* 输出 : 无
* 返回 : int HB 有球 NB 无球
*******************************************************************************/
int Porb()
{
int bmp_1;
int f;
f = AI(11);
bmp_1 = bumper();
if( bmp_1 == 4 )
{
return Hb;
}
else
if(f <= 500)
return Hb;
else
return Nb;
}

/*******************************************************************************
* 函数名 : Pb
* 功能 : 判断是否检测到球
* 输入 : 无
* 输出 : 无
* 返回 : int L 左边有球 R 右边有球 F 前边有球
*******************************************************************************/
int Pb()
{
int r;
int l;
int f;

r=AI(15); //右边
l=AI(14); // 左边
f=AI(11); //前边

Printf("%d,%d,%d",r,l,f);
if((r-l>=70))
return L;
if(l-r>=70)
return R;
if(f<=950)
return F;

else return 0;
}

/*******************************************************************************
* 函数名 : Run_z
* 功能 : s形前进 延时类前进法
* 输入 : 无
* 输出 : 无
* 返回 : int L 左边有球 R 右边有球 F 前边有球 0 没有球
*******************************************************************************/
int Run_z()
{
int i=0;
int Wb;
for(i=0;i<8;i++)
{
drive(10,-10);
Pwall();
Wb = Pb();
if(Wb != 0)
return Wb;
}
for(i=0;i<7;i++)
{
drive(10,10);
Pwall();
Wb = Pb();
if(Wb != 0)
return Wb;
}
return 0;

}
/*******************************************************************************
* 函数名 : Run_s
* 功能 : s形前进 指南针类前进法
* 输入 : 无
* 输出 : 无
* 返回 : int L 左边有球 R 右边有球 F 前边有球 0 没有球
*******************************************************************************/
int Run_s()
{
int i=0;
int Wb;
com_1 = Compass_Degree();
while(com_1<20 || com_1>180)
{
drive(0,5);
com_1 = Compass_Degree();
Pwall();
Wb = Pb();
if(Wb != 0)
return Wb;
}
for(i=0;i<5;i++)
{
drive( 5 ,0);
Pwall();
Wb = Pb();
if(Wb != 0)
return Wb;
}
com_1 = Compass_Degree();
while(com_1 < 340)
{
drive(0,-5);
Pwall();
com_1 = Compass_Degree();
Wb = Pb();
if(Wb != 0)
return Wb;
}
for(i=0;i<5;i++)
{
drive( 5 ,0);
Pwall();
Wb = Pb();
if(Wb != 0)
return Wb;
}
return 0;
}
/*******************************************************************************
* 函数名 : Goal
* 功能 : 判断是否进球
* 输入 : 无
* 输出 : 无
* 返回 : int 1 进球 0 没进球
*******************************************************************************/
int Goal()
{
int Hd;

Hd = AI(12);
Printf("Hd=%d\n",Hd);
if(Hd_F==0)
{
if(Hd > 950)
{
Hd_F=1;
return 0;
}
}
if(Hd_F==1)
{
Hd = AI(12);
if(Hd < 800)
{
return 1;
}
}
return 0;
}

/*******************************************************************************
* 函数名 : main
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
* 返回 : 无
*******************************************************************************/
void main()
{
int mic_1=0;
int Ob;
int Horb;
int G=0;
int HHd;
rest:
HHd=0;
while(1) /*哨声后开始比赛*/
{
mic_1 = microphone();
if(mic_1>=300)
break;
}
while(1)
{
//G = Goal();
if(G == 1)
{
com_1 = Compass_Degree();
while(com_1 < 160 || com_1 > 200)
{
drive( 0 ,5);
com_1 = Compass_Degree();
Pwall();
}
HHd = AI(12);
while(HHd>=650)
{
motor( 1 , 15 );
motor( 2 , 15 );
HHd = AI(12);
Pwall();
}
while(com_1 >20 && com_1 < 340)
{
drive( 0 ,5);
com_1 = Compass_Degree();
Pwall();
}
stop();
goto rest;
}
Ob = Porb();
Pwall();
if(Ob == Nb)
{
Horb = Pb();
if(Horb == 0)
{
Horb = Run_s();
if(Horb == L)
{
drive(0,-5); //左转
Pwall();
}
if(Horb == R)
{
drive(0,5); //右转
Pwall();
}
if(Horb == F)
{
drive( 10 ,0); //前进
Pwall();
}
}
else
if(Horb == L)
{
drive(0,-5);
Pwall();
}
if(Horb == R)
{
drive(0,5);
Pwall();
}
if(Horb == F)
{
drive( 10 ,0);
Pwall();
}

}
else
if(Ob == Hb)
{
com_1 = Compass_Degree();
if(com_1<=20||com_1>=340)
{
drive( 10 ,0);
// G = Goal();
Pwall();
if(G == 1)
{
com_1 = Compass_Degree();
while(com_1 < 160 || com_1 > 200)
{
drive( 0 ,5);
com_1 = Compass_Degree();
Pwall();
}
HHd = AI(12);
while(HHd>=650)
{
motor( 1 , 15 );
motor( 2 , 15 );
Pwall();
HHd = AI(12);
Printf("HHd=%d",HHd);
}
while(com_1 >20 && com_1 < 340)
{
drive( 0 ,5);
com_1 = Compass_Degree();
Pwall();
}
stop();
goto rest;
}
}
/* else if(com_1 > 20 && com_1 < 340) */ /*有球者转向零度方向进攻*/
/* {
if(com_1 < 180)
drive(0,-10);
if(com_1 > 180)
drive(0,10);
}*/
else
{
/*如果球靠近正前方*/
drive( 0 , 80); /*绕球,即绕到球的后面*/
wait( 0.130000 );
stop();
motor( 1 , 10 );
motor( 2 , 100 );
wait( 1.500000 );
}
}
}
}

更多相关文档:

单片机机器人实现足球比赛

如何用单片机机器人实现足球比赛 研究目的:使用广茂达"能力风暴"机器人进行足球比赛。 研究方法:通过对"能力风暴"机器人的改装及程序编写,使机器人能够自主地、有...

中期检查 (2)

足球机器人的研究与开发 毕业设计 的主要工 作内容和 计划进度 (由学生 填写) 本课题以广茂达能力风暴智能机器人为硬件基础,在 VJC1.5 开发板上 进行软件编程。...

能力风暴机器人实验报告

实验一、机器人认识实验 1 实验目的: 1. 认识能力风暴机器人的基本结构 2. 学会能力风暴机器人的连接、检测和程序下载等操作 2 实验要求: a) 可以明确能力风暴...

基于能力风暴机器人的交互式程序设计实验报告

基于能力风暴机器人的交互式程序设计实验报告_机械/仪表_工程科技_专业资料。电气...2 实验二机器人直走实验 实验目的:掌握简单的程序设计、了解流程图文件的使用。...

能力风暴机器人AS-U51足球功能的实现

能力风暴机器人AS-U51足球功能的实现_计算机硬件及网络_IT/计算机_专业资料。...用简述编程环境的方法将广茂达 as-uii 机 器人如何实现足球功能系统讲解了一遍...

能力风暴机器人编程_图文

第一节 图形化交互式 C 语言简介 4.1.1 VJC 简介图形化交互式 C 语言 (简称 VJC) 是用于能力风暴智能机器人系列产品的软件开发系统, 具有基于流程图的编程...

智能平台实验大作业(能力风暴机器人)

风暴机器人(二) 学号: 姓名: 能力风暴机器人一、实验目的(1)学会红外测距卡、可录放声卡、数字指南针、温度检测卡的使用; (2)了解能力风暴机器人基本的编程...

能力风暴机器人常见问题参考答案

能力风暴机器人常见问题参考答案_信息与通信_工程科技_专业资料。这篇文档是我...足球机器人程序(能力风暴... 3页 1下载券 +++能力风暴个人机器人的... ...

能力风暴机器人实验报告

了解能力风暴机器人的基本组成结构; 2.学习并掌握能力风暴机器人的基本编程方法; 3.编写程序使机器人能够走“∞”字形,并播放音乐,边走边唱; 二、主要仪器设备 ...

能力风暴机器人实验

能力风暴机器人实验_计算机软件及应用_IT/计算机_专业资料。试验一 机器人认识实验 1、 下载自检程序观察、运行结果。 将机器人插上电源后,通过数据线把机器人和主...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com