autonomous robots playing soccer 


I started building robots when I was in elementary school. After winning my first nation wide (Canada)
robocup junior rescue competition, I began building for the RCJ soccer competition when I was 14
with a few friends (oldest being high school seniors) under the guidance of our mentor, who was an
undergraduate student at UBC at the time. The competition requires each team to build their robot
from the ground up within certain restrictions such as size, weight, battery, motor, and kicker. Other
than those restrictions, we have to design the mechanical, electrical, and software from the ground
up for the robot to compete in a 2 vs 2 competition autonomously in two ten mintues halves. We later
opened a robotics lab that draws people from around the Greater Vancouver area to join and participate
in ROBOCUP. My mentor along with some of my earliest and oldest teammates still run this lab till this
day. Since the process of iterating on existing design began in 2014 and my journey ended when I left
for college, this page serve as a brief documentation of our work over the year from 2014 to 2017.


- World Champion in RCJ Soccer Open Weight League SuperTeam Category (2017)
- 2nd Place in RCJ Soccer Open Weight League WorldCup (2016)
- 2nd Place in RCJ Soccer Open Weight League EuroOpen (2015)

- Team Canada (2014, 2015, 2016, 2017)



main hardware component:

>_ Structural Materials
        - Carbon Fiber
        - Aluminum
>_ Microcontroller
        - Arduino Mega 2560
        - Arduino Nano
>_ Electronic System / Circuit Design
        - Battery
        - Microcontroller
        - Switch
        - Capacitor Board
        - Motor Control Board
>_ Sensors
        - Grayscale Sensor
        - Laser Sensor
        - Ultrasonic Sensor
        - Gyroscope
        - CMU PixyCam
>_ Kicker
        - Capacitor Board
        - Electromagnetic Shooter
>_ Motors
        - FAULHABER Drive System
        - Motor Control Board
>_ Power Source
        - 12 Volts Battery

primary systems:

Structural Materials:

We wanted the structure of our robot to be light and strong so our robot won’t be either clumsy or fragile.
The structure of our robot contains two main parts - chassis and pillars.  To make the structure stable, we
selected a relatively low elastic module, which would absorb more energy during a collision and reduce
the impact on the electrical components installed on the chassis. Carbon fibers were an ideal material
for us to select for our final frame of the robot, because of its fantastic strength and weight. However,
carbon fiber is very expensive and any mistake or changes made before the final design in the design
process is extremely costly. Therefore, we used epoxy board to build test robots until we finalize the
robot design before competitions. Pillar is one of the most important components of our robots’
structure because it holds three chassis of the robot vertically into a cylinder shape. We used nylon as
the pillar in Light Weight League because it was weight preferable, and the force per collision is not as
high. However, there were fewer limitations in Heavy-League, so we had more options to choose from.
We had considered three different materials – nylon, copper, and aluminum. We decided on aluminum
as it is significantly lighter than copper, while stille holds a higher tensil strength than both copper and

Circuit Design:
Our circuit design, powered by the battery, is split into four parts - microcontroller, power switch,
capacitor board for the kicker, and motor control board. We decided to design the control of the
microcontroller and thtwo boards in parallel since we can download and test programs without activating
the motors (so our robots wouldn’t move uncontrollably). To do so, we connected two sets of wires to the
postive electrode of the battery,with one connecting to the microcontroller and the switch of the kicker/
motor boards. The three sets of wires from the negative electrode connects to the microcontroller,
capacitor board of the kicker, and motor control board. 

We had five different kinds of sensors - four grayscale sensors, one laser sensor, four ultrasonic sensors,
camera, gyroscope. The four grascale sensors points to the ground and locates on the bottom level of the
chassis, it is placed on the four sides of the robot to avoid the robot from going outside of the playing field
(a penalty is given if the whole robot goes out). The four ultrasonic sensors help to locate the robot’s
location relative to the field, and also tells the robot if it is being blocked by other robots. The laser sensor
is located at the shooting slot, and when it senses blocking, it will shoot the ball. The camera locates the
ball through pixel detection, and the gyroscope helps the robot to gain direction when shooting or after

We used the electromagnetic kicking system. When current passes through the solenoid, it creates a
strong magnetic field and attracts the metal piece at the end of the kicker. The ball will be kicked away by
magnetic force. A kicking board is attached to the kicker to ensure that the kick is consistent. 

We are use the FAULHABER motor system. This is because it offers the most extensive range of miniature
and micro drive systems. The encoders are highly precise, it can be positioned with a typical accuracy of
0.1 degrees to 0.3 degrees. The diameter is 22 millimetres, which is applicable for our robot. We have two
types of FAULHABER driver system, one with 870 RPM, and the other with 730 RPM. We decided to focus
the one with 870 RPM for the offense robot, and the 730 RPM for the defense robot. This is due to the fact
that the offense robot has a wider ranger of movement, whereas higher speed can cause the defense
robot to overshoot.

great friends I used to follow:


Thank you for reading,