You are on page 1of 23

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/280716418

Robo Soccer for IIT Bombay

Research · August 2015


DOI: 10.13140/RG.2.1.1752.0480

CITATIONS READS

0 2,174

1 author:

Parmesh KR
Continental AG
4 PUBLICATIONS 14 CITATIONS

SEE PROFILE

All content following this page was uploaded by Parmesh KR on 05 August 2015.

The user has requested enhancement of the downloaded file.


An Autonomous Robot built to play Soccer

Eaby.K.Babu,A.Anup Kumar,K.Parmesh

Department of Electronics and Communication

East Point College of Engineering & Technology,


Bangalore
Abstract
This paper describes the making of i-Bo, a soccer playing robot built as a project
for the competition held at ‘Indian Institute of Technology-Bombay’ Tech Fest 2010,

This paper contains a description of background theory, construction process and software
programming,Image Processiong of the i-Bo platform.
Robot soccer history
In 1992 Alan Mackworth from the University of British Columbia in Canada proposed
to build robots for playing soccer. In his paper ‚On Seeing Robots‛, he
states clearly what traditional ‚good old fashioned‛ AI has been missing and how
limiting the assumptions underlying problem solving with computer agents are [1].
Suppose we want to build a robot to play
soccer‛ . Such a robot will be placed in a field, and it cannot assume that all
its beliefs are true and justified. Its knowledge of the game situation is indefinite
and incomplete. The environment is not static: the other robots move in unpredictable
ways, robots can fail, the ball can go out of bounds. There is not a single
agent, but many agents interacting with each other. The world is not deterministic,
not even the rebound of the ball can be computed exactly. The game, played
with many robots, arises from a combination of actions taken in parallel and actions
have a continuous range (velocities, accelerations, rotations, etc). Therefore,
robotic soccer is an ideal platform for investigating a setting in which all traditional
assumptions of classical AI are violated. Yet, robotic soccer remains a ‚tractable
problem‛, in the sense that it can be examined under standardized and reproducible
conditions in a computer lab in the basement. It is not as difficult as sending a robot
to walk the streets and it is not so expensive that AI researchers cannot afford the
cost of actually building the machines.
Robotic soccer was an idea looking for its realization, and so it is not surprising
that several people around the world arrived to similar conclusions as Mackworth
at the beginning of the 1990s.

Purpose of the course


On the course webpage one can read that the purpose of the course is the following:
• Give the students elementary knowledge about concepts and technologies in
the broad interdisciplinary area of robotics.
• Give the students experience of building and programming an autonomous
robot.
The constructed autonomous robot will then play soccer in a color coded environment,
much like the environment in which RoboCup is held.
Introduction

ROBOSOCCER is an event of Soccer Robots where you have to compete on an arena which is
specially designed for the ROBO SOCCER match. This event also tests your stability control,
handlings, and your techniques in competing with your opponent. One who makes more goals than
his opponent wins the round and is promoted to next round of the event. The simultaneous
movement rules encourage clever strategies and counterstrategies as players try to second-guess
their opponents.

RoboCup [1] small-size league is of particular interest, because it combinesengineering tasks, such
as building robot hardware and designing electroniccomponents, with computer science
applications, such as localization of objects,finding the robots’ positions, and calculating the best
path through obstacles. Anotherinteresting challenge emerges from the requirement that all team
members have to communicate with each other in order to develop a cooperative behavior.
Research on artificial intelligence may help find the optimal solution in all of these areas.

Problem Statement :Build a team of two computer controlled navigators, which can/would move
balls of a specific color into the opponent's goal post with the help of an overhead/on board camera

Arena
Arena Specifications :The arena consisted of a rectangular table top of inner dimension 2000 mm
x 1500 mm, colored 'green' The floor under the carpet is level, flat and hard. The table had a
boundary of height 50 mm of top color white and side color green, same as that of the arena. Solid
7 cm x 7 cm isosceles triangles were fixed at the four corners of the playground to avoid the ball
getting cornered.

The Goal Post and Goal Area


The goal posts are of dimension 400 mm x 150 mm (L x H); one pair would be red in color and the
other would be blue in color and contains a net attached. The goal post is a 3-D structure with its
two surfaces of dimension 400 mm x 150 mm open. Rest all the sides will be of blue or red
color.The goal areas shall comprise of the area contained by the rectangle sized 400 mm x 100 mm
in front of the goal post and are colored red and blue respectively.

The Penalty Area


The penalty areas shall comprise of areas contained by the rectangle sized 900 mm x 400 mm in
front of the goal. The penalty area contains the goal area. The field of play shall be marked as
shown in Figure 1. The field of play is divided into two halves by a halfway line. All lines and
markings will be white in color and 25mm thick. However, the markings of starting zones will not
be done on the arena.

Overall System
There would be two overhead cameras above the arena; one for each team. A stand will be
provided to the participants for mounting the overhead camera in the centre of the arena

Robot Specs

1. Each team is allowed to have only two navigators/bots. None of the navigators can act as a
Goalkeeper.
2. The navigator has to use an onboard power supply. No external power supply will be allowed.
3. Four Square shaped, identification tags will be provided to the participants during the
competition. The identification tags details will be uploaded soon. Each team is required to place it
on their machine at all times during their run. A team's identification tags will change from game to
game.
4. For the purpose of sticking the identification tag to the bots participants are requested to provide
a flat surface at the top of their bot, onto which the orientation tag would be stuck by the organizers.
5. At any point of time, during the match, the navigator can extend itself beyond the initial
dimensions. However, no part of the machine should be visible from the top. At any point of the
time, the machine should not be bigger than 180 mm x 180 mm. Maximum height of the bot cannot
exceed 300 mm.
6. The ball in possession of a navigator should be always visible (more than half) from the top.
7. Each of the robots can only Kick, Push, or dribble the ball but they must comply with the size
restrictions even after the appendages are fully expanded.
8. Each robot must be fully independent, with powering and motoring mechanisms self contained.
The navigator should communicate with the computer using wireless data transfer only.
System Description:
The system for VCM consists of:
1. Image acquisition setup: It consists of a video camera, web camera, or an analogue camera with
suitable interface for connecting it to processor.
2. Processor: It consists of either a personal computer or a dedicated image processing unit.
3. Image analysis: Certain tools are used to analyze the content in the image captured and derive
conclusions e.g. locating position of an object.
4. Machine control: After making the conclusion, mechanical action is to be taken e.g. Using serial
or parallel port of a PC to control left and right motors of a robot to direct it towards the ball
Pictorially, the system can be represented as:
Vision
Camera coordinate transformation
A digital camera has a matrix of sensors, where each of these sensors registers the
color and intensity of the light emitted from its corresponding point in the cameras
view. When cameras are used on a robot, it is important to know the directions, or
preferably - the positions, of the points that the cameras pixels correspond to. Generally,
only the directions of these points can be determined, but if it is assumed
that the points are on a certain surface, the exact position can be determined. The
process of determining the mapping between pixels and their corresponding points
is called camera calibration.
Pinhole cameras have a linear mapping between the world coordinates of points
on a plane, and the camera coordinates of the corresponding pixels. There are 8
parameters that define this mapping, and they can be determined from the coordinates
of 4 pairs of corresponding points and pixels.
Wide angle cameras do not have the same simple linear mapping as pinhole cameras .
The camera coordinates can be linearly transformed to spherical coordinates
on a unit sphere centered at the optical centre of the camera. These spherical coordinates
can be transformed to cartesian coordinates on the camera plane - a plane
that has its normal vector in parallel with the cameras optical axis and that cuts this
axis at unit distance from the cameras optical centre.

The Camera Used was iBall C8

Specification

Image Sensor: High quality 1/4


CMOS sensor
Effective Pixels: 480K pixels
Video Resolution: Max. upto
2304x1728 pixels
Image Resolution: Max. upto
3200x2400 pixels
Frame Rates: 352x288 @ 30fps,
640x480 @ 30 fps,
Colour Depth: 24-Bit True Colour
Interface: USB 1.1, compliant to
USB 2.0
Night Vision: 6 auto lighting LEDs improves the image quality in low light condition
Low Light Boost: Automatic low light boost
White Balance: Auto
Auto Exposure: Auto
Auto Compensation: Auto
Auto Tracking: Auto face tracking function
Zoom: 4X Digital Zoom
OS Compatibility: Windows 98SE, 2000, ME, XP & Vista.

ROBOT SPECS IN DETAIL


Mechanics:Navigation-Wheels & Motors
Omiwheels

The omnidirectional movement of theOmniwheel comes from its uniquedesign. The unique
Omniwheels designis based upon the use of a series of free turning barrel-shaped rollers,which are
mounted, in a staggered pattern around the periphery of a larger diameter main wheel. The
combination of these two rolling elements provides a compact and inexpensive unit for moving
heavy loads in any direction along a plane, doing so smoothly andwith minimum effort.

Omni directional Steering makes motion of robot highly maneuverable

The Following Arrangement of wheel were done in the following form as shown in figure
Motors
used is
High
Torque & High Speed Motors
Speed:300 rpm
Load-upto: 1-1.5 kg
Voltage:5-12V

Chassis
This is very important part of the robot which gives shape & Stablity to robot
On land.the material which was used is a Plastic Material called FOREX
Which can be easily cut and modified to any shape.attachment of chassis,motors,pcbs..etc was
done using nuts & bolts
Kicker
Initially it was an absolute must to incorporate a incredibly powerful kicking mechanism.
Anything less than supersonic would’ve been out of the question. In addition
to this it was almost essential that the robot would be able to rebound the
ball against the wall and score a goal. Alas this proved more difficult than
anticipated.First of all the kicking mechanism is a very time consuming
part to construct and evaluate and secondly if it’s not powerful enough the
backspin would make it difficult to shoot at all.
In the end a feasible solution was devised, mounts were ready in the chassi
for both electronics and kicker, electric schematics were loosely planned
but due to the limited time available other (more important) features had to be prioritized.
Force aside, the second most important attribute of a kicking device is the front
which in the best of worlds enables the robot to shoot straight. A small frontend
would mean less mass for the kicking device to move and thus a more powerful
shot. On the other hand a small contact area means that the robot must know exactly
where the ball is to be able to hit the ball.

Electronics
Controller
Description
The AT89V51RD2 is a low-power, high-performance CMOS 8-bit
microcomputer with 8Kbytes of Flash programmable and erasable
read only memory (PEROM). The deviceis manufactured using Atmel’s high density nonvolatile
memory technology and is
compatible with the industry standard 80C51 and 80C52 instruction set and pinout.The on-chip
Flash allows the program memory to be reprogrammed in-system or by aconventional nonvolatile
memory programmer. By combining a versatile 8-bit CPUwith Flash on a monolithic chip, the
Atmel AT89C52 is a powerful microcomputer
which provides a highly flexible and cost effective solution to many embedded controlapplications.

Motor Driver
The L293 and L293D are quadruple high-current
half-H drivers. The L293 is designed to provide
bidirectional drive currents of up to 1 A at voltages
from 4.5 V to 36 V. The L293D is designed to
provide bidirectional drive currents of up to
600-mA at voltages from 4.5 V to 36 V. Both
devices are designed to drive inductive loads such
as relays, solenoids, dc and bipolar stepping
motors, as well as other high-current/high-voltage
loads in positive-supply applications.

Kicker Power
Only putting the battery voltage over the solenoid would never be enough, it would
hardly make the metal-core in the solenoid move. The voltage that would have
been applied was in the range of 200-300V depending on which circuits that were
available. Some sort of step-up circuit would have been used, preferably a ready
made one that would need few surrounding components.
Power Supply
Produces A Variable voltages of 5V,12V which enough to power up complete robot using
4 Rechargeable Batteries of 4.7 Volts each
Circuit Diagram & PCB

Copper Layer(Bottom) Copper Layer(Top) White Layer(Top)

Original Picture
Wireless Module

Programming
#include<reg51f.h>
#include<stdio.h>
#define off 0
#define on 1
sbit LED1 = P0^4;
sbit LED2 = P0^5;
sbit LED3 = P0^6;
sbit LED4 = P0^7;
sbit m1p=P1^0;
sbit m1n=P1^1;
sbit m2p=P1^2;
sbit m2n=P1^3;
sbit m3p=P1^4;
sbit m3n=P1^5;
sbit kpower=P1^7;
sbit kicker=P1^6;
void delay(unsigned int time);
void motor1_c_high(void);
void motor1_c_med(void);
void motor1_c_low(void);
void motor2_c_high(void);
void motor2_c_med(void);
void motor2_c_low(void);
void motor3_c_high(void);
void motor3_c_med(void);
void motor3_c_low(void);
void motor1_ac_high(void);
void motor1_ac_med(void);
void motor1_ac_low(void);
void motor2_ac_high(void);
void motor2_ac_med(void);
void motor2_ac_low(void);
void motor3_ac_high(void);
void motor3_ac_med(void);
void motor3_ac_low(void);
void forword (void);
void backword(void);
void right(void);
void left(void);
void ticktok(void);
void clock(void);
void anticlock(void);
void kick(void);
void kickerpower(void);
unsigned char PKT[40]; //this is pkt reception array/buffer of size 40
#define PKT_SIZE 2 // pkt size or pkt length is fixed as 10
void Serial_Init (void)
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
TI=1;
}
void main(void)
{
unsigned char key=0x00;
bit pkt_recive=0;
bit finish =0;
unsigned char count=0;
Serial_Init();
LED1=1;
LED2=1;
LED3=1;
while(1)
{
if (RI)
{
LED1 =~ LED1; // every time key is pressed led will toggle
key=SBUF;
RI=0;
if(key == 'a')
left();
if(key== 'b')
motor1_ac_med();
if(key== 'c')
motor1_ac_high();
if(key== 'd')
right();
if(key == 'e')
motor1_c_med();
if(key == 'f')
motor1_c_high();
//
if(key == 'g')
motor2_ac_low();
if(key== 'h')
motor2_ac_med();
if(key== 'i')
motor2_ac_high();
if(key== 'j')
motor2_c_low();
if(key == 'k')
motor2_c_med();
if(key == 'l')
motor2_c_high();
//
if(key == 'm')
motor3_ac_low();
if(key== 'n')
motor3_ac_med();
if(key== 'o')
motor3_ac_high();
if(key== 'p')
motor3_c_low();
if(key == 'q')
motor3_c_med();
if(key == 'r')
motor3_c_high();
//
if(key == 's')
backword();
if(key== 't')
motor1_c_low();
if(key== 'u')
motor1_ac_low();
if(key== 'v')
ticktok();
if(key == 'w')
forword();
if(key == 'x')
clock();
if(key == 'y')
anticlock();
if(key =='z')
kick();
kickerpower();
}
}
}
void delay(unsigned int time)
{
unsigned char pause;
while( time > 0)
{
pause = 150;
while(pause--);
time--;
}
}
//moror 1 controls
void motor1_ac_low(void)
{
m1p=on ;
m1n=off ;
delay(200);
m1p=off;
m1n=off;
}
void motor1_ac_med(void)
{
m1p=on;
m1n=off;
delay(500);
m1p=off;
m1n=off;
}
void motor1_ac_high(void)
{
m1p=on;
m1n=off;
delay(1000);
m1p=off;
m1n=off;
}
void motor1_c_low(void)
{
m1p=off;
m1n=on;
delay(200);
m1p=off;
m1n=off;
}
void motor1_c_med(void)
{
m1p=off;
m1n=on;
delay(500);
m1p=off;
m1n=off;
}
void motor1_c_high(void)
{
m1p=off;
m1n=on;
delay(1000);
m1p=off;
m1n=off;
}

//motor 2 controls
void motor2_ac_low(void)
{
m2p=on ;
m2n=off ;
delay(200);
m2p=off;
m2n=off;
}
void motor2_ac_med(void)
{
m2p=on;
m2n=off;
delay(500);
m2p=off;
m2n=off;
}
void motor2_ac_high(void)
{
m2p=on;
m2n=off;
delay(1000);
m2p=off;
m2n=off;
}
void motor2_c_low(void)
{
m2p=off;
m2n=on;
delay(200);
m2p=off;
m2n=off;
}
void motor2_c_med(void)
{
m2p=off;
m2n=on;
delay(500);
m2p=off;
m2n=off;
}

void motor2_c_high(void)
{
m2p=off;
m2n=on;
delay(1000);
m2p=off;
m2n=off;
}
// motor 3 controls
void motor3_ac_low(void)
{
m3p=on ;
m3n=off ;
delay(200);
m3p=off;
m3n=off;
}
void motor3_ac_med(void)
{
m3p=on;
m3n=off;
delay(500);
m3p=off;
m3n=off;
}
void motor3_ac_high(void)
{
m3p=on;
m3n=off;
delay(1000);
m3p=off;
m3n=off;
}
void motor3_c_low(void)
{
m3p=off;
m3n=on;
delay(200);
m3p=off;
m3n=off;
}

void motor3_c_med(void)
{
m3p=off;
m3n=on;
delay(500);
m3p=off;
m3n=off;
}
void motor3_c_high(void)
{
m3p=off;
m3n=on;
delay(1000);
m3p=off;
m3n=off;
}
void forword (void)
{
m1p=off;m3p=on;m1n=on;m3n=off;
delay(100);
m1p=off;m3p=off;m1n=off;m3n=off;
}
void backword(void)
{
m1p=on;m3p=off;m1n=off;m3n=on;
delay(100);
m1p=off;m3p=off;m1n=off;m3n=off;
}
void right(void)
{
m2p=off;m2n=on;
delay(100);
m2p=off;m2n=off;
}
void left(void)
{
m2p=on;m2n=off;
delay(100);
m2p=off;m2n=off;
}
void ticktok(void)
{
m1p=off;m1n=on;m3p=off;m3n=off;
delay(300);
m1p=off;m1n=off;m3p=on;m3n=off;
}
void clock(void)
{
m1p=on;m1n=off;m3p=on;m3n=off;m2p=on;m2n=off;
delay (45);
m1p=off;m1n=off;m3p=off;m3n=off;m2p=off;m2n=off;
}
void anticlock(void)
{
m1p=off;m1n=on;m3p=off;m3n=on;m2p=off;m2n=on;
delay (45);
m1p=off;m1n=off;m3p=off;m3n=off;m2p=off;m2n=off;
}
void kick(void)
{
kicker=on;
}
void kickerpower(void)
{
kpower=off;
delay (10);
kpower=on;
}
i-Bo Pictures @ IIT Bombay, Tech Fest 2010
Biblography
MATLAB
Kornyak Corp.
Robosoft Systems

View publication stats

You might also like