6735浏览
查看: 6735|回复: 5

Sumo Robot 机器人大战

[复制链接]
         近期,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, 下载次数: 3931

swanglei  中级技神
 楼主|

发表于 2013-7-1 12:38:12

上传一些国际上的赛事图片,供大家参考一下。


这里需要大家知道的是第一次比赛非常正式,目的只不过是让大家练练手,真正的比赛在第二次,大家可以改动的空间更大,完全自己设计机器人,到时候鹿死谁手。。。。。。哈哈。。。我们比赛见

7855_10151564680118377_688795196_n.jpg
23501_391821748376_999014_n.jpg
522462_10151564728543377_1505426505_n.jpg
544242_10151564715508377_1537083655_n.jpg
554558_10151564680868377_327854521_n.jpg
578149_10151564680888377_2044028490_n.jpg
734234_10151561153738377_1182536969_n.jpg
回复

使用道具 举报

swanglei  中级技神
 楼主|

发表于 2013-7-1 12:49:16

本帖最后由 swanglei 于 2013-7-1 12:51 编辑

来个样例代码 头文件先。。。。
/*
* created 2013-05-23
* by lisper
* control two DC car
* init_dc (); need 4 arguments
* ctlcar (char left, char right);
*
*/
#include <Arduino.h>


#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  中级技神
 楼主|

发表于 2013-7-1 12:53:15

接下来主程序。。。
#include <Arduino.h>
#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  中级技神
 楼主|

发表于 2013-8-13 22:49:38

晚上搜到一篇挺不错的资料——RobotCup的一篇技术文档,不过是英文的哦!!!哈哈

Mechatronic Design of a Soccer Robot for the Small-Size League of RoboCup.rar

1.91 MB, 下载次数: 4206

回复

使用道具 举报

nemon  中级技匠

发表于 2014-1-24 08:42:24

mark………………
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail