Software
The Software sub-team works on the AI that controls our robots. The team maintains high-quality, open-source development in C++ and Python with a focus on gameplay strategy, motion planning, GUI visualization, and embedded systems.
The Software sub-team is responsible for developing the artificial intelligence and control systems that command our robots. The sub-team is made up of students from Computer Science, Computer Engineering, Engineering Physics, and many other departments that all share a passion for programming, AI, and soccer. As junior members gain experience through training, new-member challenges, and exposure to the codebase, they build upon previous iterations of the team’s work, constantly striving to enhance our software systems.
Our current codebase is predominantly written in C++ and Python. The software team works on a diverse range of projects that enable our autonomous robots to move intelligently and coordinate as a team:
Gameplay — The gameplay sub-team works on improving the high-level AI decision making systems for our robots, designing strategic plays/tactics, and performing automated tests to validate gameplay behaviour and adherence to league rules. Our AI employs a variety of methods, from finite-state machines to machine learning and reinforcement learning techniques. Testing is facilitated by the Bullet physics simulation engine which allows changes to be easily tested in a safe manner while they are in development, prior to testing them onto the actual robots.
Motion Planning — The motion planning sub-team develops performant algorithms for multi-agent path planning, trajectory generation, and obstacle/collision avoidance. The motion planning sub-team is heavily involved in field testing with actual robots.
Thunderscope — Thunderscope is our GUI and 3D visualization software built in PyQt that displays robot vision data, AI and path planning information, robot status messages, and more. Thunderscope enables us to record and replay matches, dynamically configure AI parameters at run time, and manually control and diagnose issues with our robots.
Latest version of Thunderscope
Replay in Thunderscope of RoboCup 2023 match versus Luhbots
Robot Software — The robot software sub-team works on developing embedded firmware for microcontrollers (ESP32, STM32), implementing Wi-Fi/radio network communication with our robots, collaborating with the Electronics sub-team to implement precise motor control, automating robot deployment processes with Ansible, and building diagnostic tools for development and debugging.
Since the inception of the team, all of our software has been written from scratch and made open-source. Software quality, cleanliness, and performance (in terms of both runtime and gameplay) are of utmost importance to the team. Maintaining a strong foundational codebase and a well-trained, knowledgeable team is crucial to the success of our software; these principles will always be upheld as the team continues to evolve.
For more information, visit our GitHub repository.