In January 2017, a few undergraduate engineering students at the University of Toronto learned of the RoboCup International Competition, and were inspired by the vision it was founded upon—to have a team of autonomous humanoid robots beat the most recent champions of the World Cup by 2050, in full compliance with FIFA rules. Upon noticing there were no teams representing Canada in the competition, the first plans to start a robot soccer league began. In the summer of 2017, a team of inexperienced—but determined—undergraduate engineering students came together to create the first iteration a robot which could one day achieve RoboCup’s founding goal.

This page presents our team’s advisors and team leads, who are contributing to this effort to make a name for Canada in robotics, AI, and “robosoccer”.

Project Manager(s):

Jonathan Spraggett (3rd Year Robotics, PEY), Eric Wang (3rd Year Robotics, PEY)

Past Project Managers:

Nam Nguyen (2019-2020)

Jason Wang (2017-2019), Shahryar Rajabzadeh (2017-2019)

Sabrina Lokman (2016-2017)

Team Leads

Electrical & Hardware System
Team Lead: Jeff Ma (4th Year ECE, PEY)

Past leads: Shahryar Rajabzadeh (2016-2019)

The electrical & hardware team is responsible for designing the circuits for the robot. This includes parts selection, PCB design using Eagle, and assembly. Over the 2017–2018 year, this culminated in the creation of a single PCB that contained all the circuits for the robot. Our current PCB projects can be found here.

The electrical & hardware team also works on several other projects, including:

  1. Developing custom and semi-custom servo motor solutions to significantly reduce the cost of our humanoid robots while providing flexibility for our mechanical and control systems design.
  2. Designing and improving the microcontroller board that sits between the main computer and servo motors as well as various sensors. The areas of improvement include shrinking the size of the PCB as well as improving the communication link between the main computer and the board by using Ethernet rather than UART based solution for improved reliability, throughput and latency.
  3. Developing printed circuit board manufacturing process using lithography to boost the speed of circuit prototyping for testing proof of idea for various incremental improvements for our overall designs before they get integrated into the final product.
Embedded Systems
Team Lead: Eric Wang (3rd Year Robotics, PEY)

Past leads: Tyler Gamvrelis (2017–2019), Cameron Alizadeh (2019-2020)

The embedded systems are the “spine of the robot”. While the high-level software determines how the robot should behave, and the control systems determine how the robot should move, the “spine” is what actually distributes the motion commands to each actuator (joint), and collects sensor data for feedback.

The embedded software is written in C++, documented using Doxygen, and uses FreeRTOS to provide multithreading capabilities. I/O is DMA-based where possible and interrupt-based otherwise. Development is primarily done using a STM32F446RE microcontroller on a PCB designed by the electrical team, as well as on Nucleo-L432KC and Nucleo-F767ZI development boards.

The major projects we completed since 2017 are:

  1. Overall algorithm for the embedded systems
  2. Dynamixel AX-12A and MX-28 libraries
  3. MPU6050 library
  4. Communication interface between the microcontroller and on-board PC
  5. Converted from C to C++

Some of the major projects lined up for the 2019–2020 year can be found on our projects page in our GitHub repository.

Software Systems
Team Lead: Jonathan Spraggett (3rd Year Robotics, PEY)

Past leads: Jason Wang (2016-2020)

There are many many aspects in consideration of the software systems. The 4 layers of the robot are

  1. Data Acquisition
  2. Data Processing and Perception
  3. High-Level Control (Path Planning) and Strategy
  4. Feedback Control

The Robocup small-size is no ordinary student competition. They limit the perception and thus the use of sensors to only those that are possible by humans, meaning that we cannot use any fancy LIDAR or sonar distance sensors. These limitations help delineate the architecture and structure of the robot.

At UTRA Robosoccer, our current projects in defining the robot include

  • Utilize state-like decision for robots to be able to change their original plan of action based on external circumstances (such as a ball coming into view)
  • Experimenting with reinforcement learning to improve the robustness of the robot’s walking capability.
  • Using state of the art localization and path planning algorithms to make the robot robust while its making a decision.
Mechanical Systems
Team Lead: Liina Sadul (4th Year Mech, PEY)


Past leads: Sabrina Lokman (2017-2019), Nam Nguyen (2017-2019), Joshua Hillary Salim (2019-2020)

The mechanical subsystem is responsible for designing and manufacturing the robot’s physical form. The robot is actuated by 12 Dynamixel MX-28 and 6 Dynamixel AX-12A servos. There are 6 MX-28s per leg, 2 AX-12As per arm, and 2 AX-12As for the head. All the electronics are embedded in the torso.

The robot design lives in Autodesk Fusion 360. All rigid components are manufactured using UTRA’s 3D printers, which improves consistency and reduces labor.

Control Systems
Team Lead: None

Past leads: Lukas Zhornyak (2017-2018), Daniel Campoverde (2018-2020)

The control systems are what make the robot walk, kick, and get up from a fall. Walking is accomplished through the following stages:

  1. Body trajectories: generates the path that the body will take, given an initial and desired pose
  2. Footstep planning: determines where the feet will touch the ground while traversing the path
  3. Foot trajectories: given the positions where the feet will touch the ground, this stage computes the positions of all the actuators for each step in time. The result of this stage is a vector of angles—one element for each actuator—which is fed to the embedded systems for realization
  4. Body sway: walking is accomplished by centering the robot over one of its feet, then moving the other foot forward; naturally, this causes the body to sway side-to-side. To compensate for this, an exponential smoothing filter is used to decrease the abruptness of this motion

Specific actions such as kicking are implemented as transitions between several statically stable states. These transitions are discretized with a constant time step and interpolated by fitting 4th order Bezier curves.

MATLAB, Simulink, and systems theory are used extensively in this subsystem.

Alumni Advisors


             Nam Nguyen                                        Jason Wang                                  Shahryar Rajabzadeh