Sumo Robot 机器人大战

2013-07-018533
AI 快速预览详细 收起
DFRobot内部员工业余时间即将举行Sumo Robot机器人大战,首次测试性比赛时间为7月15日。比赛规则包括80cm直径圆形场地,蓝底白圈,中间白色十字。机器人尺寸小于15X15cm,重量小于500g,使用Arduino系列微处理器,最大电池容量为4节1.5V电池。比赛中,机器人必须在2秒内返回边界内才能获胜,否则判负或平局。
         近期,DFRobot内部员工业余时间Sumo Robot 机器人大战开赛在即,欢迎有兴趣的朋友参加,第一次测试性比赛时间为:7月15日。
         比赛规则如下:提供pdf文件附件。
Part1
场地设置:
1.      80cm直径圆形场地。
2.      蓝底白圈,中间白色十字,白边宽度5cm。
3.      材质:亚光深色桌。
4.      场地边界一米外没有障碍物。
Part2
车辆限制:
1.      原型机:mini Robot chassis
2.      尺寸:<15X15cm 高度不限
3.      重量:<500g (使用DFrobot自制称重器作为官方比赛用秤)
4.      控制类型:自控(非遥控)
5.      机器人比赛任何时刻尺寸不得超过15X15cm尺寸
6.      可用电机:N20系列(即mini Robot chassis所配电机同系列不同变速箱)
7.      驱动轮:2个
Part3
电子设置:
1.      主要微处理器:Arduino系列
2.      最大电池容量:4 节 1.5V电池
Part4
赛前准备:
1.      位置:边线内任意直径两端。
2.      启动时间:比赛开始后5秒内机器人不得位移。
3.      比赛开始后所有人类远离场地边界1米以外。比赛结束前不得靠近。
4.      比赛开始3分钟后比赛强制结束。(HCR进场清场,人类不得靠近)
5.      比赛开始:裁判宣布比赛开始秒表开始计时。
Part5
输赢判定:
1.      2胜制:率先获得2场胜利者获胜。
2.      单场比赛最多局数10,10局后获得最多胜局者获胜。10局后仍未分出胜负…双双淘汰。
3.      比赛双方其中一方离开边界(不包括压线)之后2秒内没有返回且另一方仍在界内,界内方获胜。比赛结束。
4.      2秒内双双出界,且无任意方在2秒内返回,平局。比赛结束
5.      3分钟内没有分出胜负,hcr进场清场,平局。比赛结束。
6.      一方出界后,2秒内另一方亦出界,重新计时2秒,2秒内返回一方获胜。比赛结束。皆返回,比赛继续。
7.      单场比赛中任何一方不得修改机器人程序,每局间隔1分钟,越期不参赛者,判负。
8.      比赛采用淘汰赛制,对阵图于赛前一日抽签,并进行车辆检查。检查完毕任何外形不得修改。

规则详解(第一次修正).pdf

234.02 KB, 下载次数: 5498

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
nemon
nemon
mark………………
swanglei
swanglei
作者
晚上搜到一篇挺不错的资料——RobotCup的一篇技术文档,不过是英文的哦!!!哈哈
swanglei
swanglei
作者
接下来主程序。。。
#include
#include "ctlcar.h"
#define sp 40 //speed
#define FOUND(x) (x > 200) //
#define OVER(x) (!x)
int front_pin = A0; //front sensor pin
int left_pin = 8; //left line pin
int right_pin = 10; //right line pin
int left; //left sensor value
int right; //right sensor value
int front; //front sensor value
int l_sp = 30; //left speed
int r_sp = 30; //right speed
unsigned long start_time = 0;
void setup() {
Serial.begin (9600);
pinMode (front_pin, INPUT);
pinMode (left_pin, INPUT);
pinMode (right_pin, INPUT);
init_dc (4, 5, 7, 6);
}
//
void loop() {
front = analogRead (front_pin);
left = digitalRead (left_pin);
right = digitalRead (right_pin);
//Serial.println (front);
if (FOUND (front) && !OVER (left) && !OVER (right)) {
ctlcar (50, 50);
} else if (OVER (left) && !OVER (right)){
ctlcar (-sp, -sp);
delay (300);
ctlcar (sp, -sp);
delay (random (300, 400));
} else if (OVER (right) && !OVER (left)){
ctlcar (-sp, -sp);
delay (300);
ctlcar (-sp, sp);
delay (random (300, 400));
} else if (OVER (right) && OVER (left)){
ctlcar (-sp, -sp);
delay (300);
if (random (-1, 1))
ctlcar (-sp, sp);
else
ctlcar (sp, -sp);
delay (random (300, 400));
} else if (millis () - start_time > 300){
if (random (-1, 1)) {
ctlcar (sp, sp/2);
} else {
ctlcar (sp/2, sp);
}
start_time = millis ();
}
}
swanglei
swanglei
作者
来个样例代码 头文件先。。。。
/*
* created 2013-05-23
* by lisper
* control two DC car
* init_dc (); need 4 arguments
* ctlcar (char left, char right);
*
*/
#include
#define Lfront LOW
#define Lback HIGH
#define Rfront HIGH
#define Rback LOW
uint8_t ld = 4;
uint8_t ls = 5;
uint8_t rd = 7;
uint8_t rs = 6;
// init dc, like: init_dc (4 5 7 6)
void init_dc (uint8_t ldp, uint8_t lsp, uint8_t rdp, uint8_t rsp) {
ld = ldp;
ls = lsp;
rd = rdp;
rs = rsp;
pinMode (ld ,OUTPUT);
pinMode (ls ,OUTPUT);
pinMode (rd ,OUTPUT);
pinMode (rs ,OUTPUT);
}
// x >= -127 && x <=127
void ctlcar (char left, char right) {
if (left < 0) {
left = -left;
digitalWrite (ld, Lback);
} else {
digitalWrite (ld, Lfront);
}
if (right < 0) {
right = -right;
digitalWrite (rd, Rback);
} else {
digitalWrite (rd, Rfront);
}
analogWrite (ls, left*2);
analogWrite (rs, right*2);
}
swanglei
swanglei
作者
上传一些国际上的赛事图片,供大家参考一下。
这里需要大家知道的是第一次比赛非常正式,目的只不过是让大家练练手,真正的比赛在第二次,大家可以改动的空间更大,完全自己设计机器人,到时候鹿死谁手。。。。。。哈哈。。。我们比赛见

- 没有更多了 -