Skip to content
This repository has been archived by the owner on Sep 27, 2021. It is now read-only.
Tyler Gamvrelis edited this page Dec 15, 2018 · 14 revisions

Welcome to the soccer-embedded wiki!

This wiki contains a collection of content which is intended to help us organize our development activities.

Development Flow

At a glance, the flow to add a feature to the Robot program is as follows:

  1. Create the tests for the feature & create the corresponding implementation files
  2. Submit a pull request to pull the tests & implementation into master
  3. Integrate the feature into the Robot program & revise the implementation
  4. Test at runtime (verify on the hardware)
  5. Submit a pull request to pull the application code and revised implementation into master

Documentation

We have a programming style guide to improve code & documentation consistency. On that note, please see our external documentation site here: https://utra-robosoccer.github.io/soccer-embedded/docs/html/index.html

Testing

We are using Google Test/Mock for unit testing our code and mocking our peripherals. Our RobotTest program already has this set up under version control, but to document our learnings we have provided instructions for how to get this set up for the first time with the STM32 tools here: Setting Up Google Test (gtest) and Google Mock (gmock).

Design

Our high-level design activities are documented across the threads associated with various issues. For example, issue 36 contains important details about the latest design iteration we are working on, and issue 61 contains a plan for how to structure our development activities. Some very high-level requirements and use cases have also been documented. We are also trying to maintain high-level design diagrams on an on-going basis using draw.io, but we do not always keep these updated (the most recent diagrams can be found in soccer-embedded/Diagrams/).

Tutorials

We have several tutorials to help with onboarding. These go over things as simple as toggling a LED on a STM32 microcontroller, to writing multithreaded PC communication programs that use circular DMA buffering. Many other tutorials are planned including embedded Ethernet.

Other

The embedded software is constantly in communication with PC-side software on the "brain" computer which runs the control and AI algorithms. This PC-side software is maintained as a submodule. Some quick notes on using submodules can be found on the submodules page.