Skip to content
Menu
RoboJackets
  • Teams
    • BattleBots
    • RoboNav
    • RoboCup
    • RoboRacing
    • RoboWrestling
  • Outreach
  • Training
    • Software Training
    • Firmware Training
    • Electrical Training
    • Mechanical Training
  • Calendar
  • News & Media
    • Newsletter
    • Technical Reports
  • Our Sponsors
  • Join Us
  • FRC Kickoff
RoboJackets
RoboCup Robot

The Development of the RoboCup Electrical Stack

Posted on December 2, 2020

by Dallas Downing.

RoboCup is an international, annual convention meant to promote robotics research through a number of robot-based competitions. The primary goal of RoboCup is to field a team of fully autonomous humanoid robot soccer players against the World Cup winners–and win–by 2050. This challenge is quite complex, so different competitions are held within RoboCup to address each major aspect of this ultimate goal. One of these competitions is Small Size League (SSL), which is focused on multi-agent coordination and control. RoboJackets’s RoboCup team participates in this competition.

The SSL games are between two teams of eleven robots. Competitive teams outperform the opposing team by making smarter plays and reacting quickly to the ball and other team’s movements.The robots themselves must fit within a cylinder about 7 inches wide and about 6 inches tall. This creates three main challenges for the RoboCup team: 1) the robot must be able to react quickly; 2) the internal components must be small and fit closely together; and 3) the tech has to be easy to recreate to make a uniform team of eleven robots (plus backups). Because of these requirements, the RoboCup team develops and maintains one of the most sophisticated technology stacks in RoboJackets. Today we look at some of the technology RoboCup uses in its robots and how it was developed. 

General setup of an SSL game with overhead field cameras and robots

The overall setup for a SSL match is fairly simple. Cameras mounted above the field send a live feed of the match to the base station. The robots are identified by unique dot patterns on the top face of each robot. The base computer determines where the ball is and where to send each robot on the field. The computer connects to the robots via radio signals to send a path for the robot to follow. Inside the robot, a microcontroller unit (MCU) collects feedback from a number of different sensors, like an inertial measurement unit (IMU), and uses them to calculate the motor controls needed to follow that path. It also controls the dribbler motor and kicker solenoid, which are used to manipulate and kick the ball. 

Layout of the many boards inside a RoboCup robot

Each robot has four circuit boards that perform specific functions in this process. The control board is the primary board of the system, containing sensors, power distribution, and motor control components, and connects to the various motors. The kicker board, below the control board, controls the kicker solenoid and holds the large capacitors used to activate it.  The radio board contains the wireless chip used to connect to the computer. An FPGA (field-programmable gate array) sits at the center of the control board (underneath the radio board) and coordinates sending commands and receiving the data from the motors in parallel. It connects to the mTrain, which plugs directly into the control board to access all of these other components. The mTrain board is the MCU and primary “brain” of the system, performing the major calculations necessary for controlling the robot.

A view of the guts of a RoboCup robot.

If you have never heard of the mTrain before, it’s because it is not a commercially available MCU. The mTrain was developed by RoboJackets to be a completely custom microcontroller that could tackle many of the issues specific to the RoboCup robots. Prior to mTrain, the team used an mbed controller (specifically the NXP LPC1768), a popular microcontroller platform created by ARM. After the 2017 competition in Japan, it became clear to the team that they needed a more robust motion control system for the robots. Joseph Neiger, software team lead at the time, said, “Since everything hangs on being able to move, we were forced to improve our motion control. Due to the frequency of the data streams (20hz) versus the actual motion control loop frequency (200 hz), it was extremely difficult to make any progress on just tuning the loops better.” Throughout 2017 and 2018, the team attempted more complex motion control techniques, but began to hit the technical limits of the mbed. During the 2018 Montreal competition, they were able to get the robots to move quickly but without enough precision to control the ball well. “We couldn’t do better without data coming out of the mbed,” said Joseph, “and we couldn’t get data out without crashing it or reducing the frequency until it was basically useless.”

Two members of RoboCup working on one of the robots at the Montreal competition.

Almost immediately following the Montreal competition, development started on a new MCU that was faster and more powerful. The team picked a STM32 microcontroller, which is a 32-bit microcontroller meant for high-performance embedded systems. This was an upgrade from an ARM Cortex-M3 processor, found on the mbed, to an ARM Cortex-M7 processor, which gives the new chip several advantages. Primarily, it supports accurate vector calculations and hardware for floating-point calculations. The increased accuracy and speed of the chip meant that higher frequency data stream motion control was achievable. The new chip also supports more connections and faster connections with peripheral devices. In particular, the STM32 can support three serial peripheral interface (SPI) buses, while the mbed supports only two. This is important because the MCU needs a dedicated bus for the FPGA and radio board. A dedicated connection allows a higher bandwidth of data which in turn allows a higher frequency control loop. The remaining SPI bus can be used for the other devices like sensors without slowing down the main components. The team also added 256 MB of flash memory (ROM) and RAM to prevent the memory limits they were reaching with the mbed.

The new STM32 chip was very promising, but a lot of work was needed to make it work. The board for the chip was developed throughout the fall of 2018 and firmware development began in 2019. Unfortunately, many basic drivers and board support packages needed to be written specifically for the mTrain board. The mbed’s advantage was that the mbed API has almost a decade of development and debugging, making it easy to get support online. Without that same support for the STM32, writing the new firmware was a challenging learning process for the team. “As with all embedded devices, getting low level things working without any sort of insight is a very painful process,” says Joseph. In the months leading up to the 2019 competition in Sydney, the team had to quickly rework their firmware to make the robots operational. “Most of the development at this stage was whatever I needed to get working to get robots moving,” says Joseph, “It was very much a mad dash to the end and figuring bugs out on the fly.” 

Design for the mTrain board

Currently, the mTrain project is a multi-team collaboration between RoboCup and RoboRacing. Development on the board itself is complete, but some work still remains for the API. Arthur Siquiera, the current electrical lead for RoboCup, says they are continuing to work on making the firmware more stable and developer-friendly for future members. The API has been named the mJackets API, with the goal of developing a common platform for STM32 MCU firmware development, not just for the mTrain. Being an open source project means that the work done by RoboJackets members is available to any developers looking to use any STM32 chips. 

While the 2020 RoboCup has been rescheduled for 2021, the team is hoping to be fully prepared for the competition with the mTrain powering their new robot fleet.

Read more about the technology RoboCup uses in their previous Team Description Papers.

Recent Posts

  • Battlebots Goes to NHRL!
  • Meet the Core Officers
  • Kirbii Enters the Dohyo at Robogames 2023
  • RoboCup Qualification
  • A New Competition from evGP Autonomous

Recent Comments

    Archives

    • July 2023
    • April 2023
    • February 2023
    • December 2022
    • October 2022
    • July 2022
    • May 2022
    • March 2022
    • January 2022
    • December 2021
    • November 2021
    • October 2021
    • September 2021
    • August 2021
    • July 2021
    • June 2021
    • May 2021
    • April 2021
    • March 2021
    • February 2021
    • January 2021
    • December 2020
    • November 2020
    • October 2020
    • September 2020
    • August 2020
    • July 2020
    • June 2020
    • September 2019
    • August 2019
    • January 2019

    Categories

    • April 21 Newsletter
    • August 21 Newsletter
    • August Newsletter
    • Blog
    • December 21 Newsletter
    • December 22 Newsletter
    • February 21 Newsletter
    • January 21 Newsletter
    • January 22 Newsletter
    • January 23 Newsletter
    • July 21 Newsletter
    • July 22 Newsletter
    • June 21 Newsletter
    • March '23 Newsletter
    • March 21 Newsletter
    • March 22 Newsletter
    • May 21 Newsletter
    • May 22 Newsletter
    • Newsletter
    • November 21 Newsletter
    • November Newsletter
    • October 21 Newsletter
    • October Newsletter
    • September 21 Newsletter
    • September 22 Newsletter
    • September Newsletter
    • Summer 2023 Newsletter

    Meta

    • Log in
    • Entries feed
    • Comments feed
    • WordPress.org

    Additional Links

    • COVID-19 Guidelines and FAQ
    • Contact Us
    • Our Sponsors
    • FIRST Robotics Competition Kickoff
    • About RoboJackets, Inc.
    • Alumni Association

    Follow us

    • Facebook
    • Instagram
    • Twitter
    • Newsletter
    • YouTube
    ©2025 RoboJackets | Powered by WordPress and Superb Themes!