Deciding where to start to draw was one of the hardest parts of the design process. First of all, we had to talk and discuss about what the robot should be able to do and how it should look like in general, plus where the sensors should be put. Since we wanted to make the robot as compact as possible, the first idea was to make the robot round, but we noticed that it would be very hard to fit in all the circuit boards like that. This fact made us start from a U-shape. After an extrude, we had a base to start working on. 
After having made a construction to attach the wheels and the transmission to the frame, which will be explained later, we figured out a way to attach the sensors. The different sensors were placed as following:
Detecting the ball around the robot:				2)	Detecting the ball in front of the robot			
Measuring the greyscale:				4)	Measuring the distance to the ball:
5)	Measuring the distance to the border:

The two last sensors only start measuring from a distance of 10 cm for the distance to the ball and 20 cm for the distance to the border, so they had to be shifted into the robot, what caused additional difficulties for the drawing and organising of the robot. The sensors for the distance to the border should be moved even farther away from the side of the robot, which can be solved by making the robot wider, which is not a very good solution since it costs more material, or by not putting the 2 sensors in the same line but next to each other. This is not an ideal solution as well since this takes even more room inside the robot.
Next we drew the constructions to attach the omni-directional wheel, the dribbler and we provided a spot to place some LED’s to indicate whether the program is running or to check parts of it.

Finally, we made an assembly with all of the sensors which we had drawn as well, to double-check if everything fitted. After this, we changed some small things to make the assemblage easier and our robot was ready to be made.
During the design process we noticed it would be helpful if the turning circle of the robot is as much as possible to the front of the robot. This allows the robot to turn almost completely around the ball without moving the ball and risking to lose the ball.

This is accomplished by placing the motors in the front of the robot and using a transmission, so the wheels can be placed even further to the front. The transmission is realized with 3 gear wheels. On the axis of the motor is placed a gear with 24 teeth, on the axis of the wheels is placed a gear with 18 teeth. A third larger gear wheel is connected between those two gears. This provides the robot to drive faster than without any transmission, when the same size of wheels is used. However we used small wheels, with a diameter of 30 millimeter, in order to push the turning circle even more to the front.

In this figure it is possible to see the center point of the turning circle is shifted to the front.

Tips for designing robot
Start in time with the design of the robot! 
Place the wheels inside the frame, it makes turning of the robot near walls easier. 
Make sure you have enough margin for the placing of all the components. It will save you a lot of polishing during assembly.
Pay attention to the desired place of boreholes in the robot. You must be able to reach them easily. 
Design the robot in such a way all the components (especially the battery pack) are easy to reach. 

Note: The CAD files can be downloaded on the page ‘Results and thanks’.
We tried to make the program as simple as possible. We started to write different subfunctions and then we combined them into one main logic. First, the robot searches the ball, with the functions LOCATEBALL and TURNTOBALL. Then the position of the robot is checked with the grey sensors. Then is decided if the robot is aimed to the ‘right’ goal and if we start to attack or defend. In the attackmode, the robot goes straight for the ball. When the defensemode is activated, the robot will approach the ball and take the ball with the dribbler. Then the robot will turn with the ball towards the other goal (TURNWITHBALL).  

Tips for programming in Assembler
Use enough subfunctions.
Write lots of programs that test the different components.
If you work with a number of programmers, make sure you coordinate your work and make sure you know exactly which program/subfunction works. 
Only use the instruction ’GOTO’ for loops, otherwise use ‘CALL’.
Note: The program file can be downloaded on the page ‘Results and thanks’.

Matthias Borremans, Joost Geeroms, Frank Jonckheere and Sara Van Rossem

Design and building of a football playing robot

   i, BallL
(handsome) intelligent Ball Locatorh

Project Mechatronics 2009-2010                   VUB