tokyoyoukanniocha-jp / robot-software

CVRA monorepo - All software running on our bots lives here

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Robot software stack

Unit tests

STM32 builds

Raspberry Pi build

This repo contains all the software used on our robots:

  • can-io-firmware contains the firmware that runs on the IO board
  • motor-control-firmware contains the firmware that runs on the motor board
  • proximity-beacon-firmware contains the firmware that runs on the proximity beacon, it's the same code as the motor board but with a different application that is tailored to the needs of our proximity beacon module
  • master-firmware contains the software that runs on the master board, it interfaces all the other boards over CAN and runs the robot's "intelligence".
  • eurobot contains documentation and cofiguration files specific to the Eurobot competition
  • sensor-firmware contains code running on the sensor board
  • uwb-beacon-firmware contains code and documentation that runs on the UWB beacon board
  • hitl contains code to support Hardware In The Loop testing of the master board firmware.

Other important software components can be found in this repo:

  • lib contains all the libraries and building blocks we use on multiple boards, which includes:
    • lib/can-bootloader the bootloader that allows us to update our boards (IO and motor) over CAN
    • lib/ChibiOS the RTOS/HAL we use on all our boards
    • lib/uavcan the CAN communication library we use on all our boards
    • lib/error a logging library
    • lib/parameter a library to create and manage configurations of boards
    • lib/msgbus a publish/subscribe library for inter thread communication
    • and more.
  • tools groups all tools we use to develop on the robot including:
    • tools/pid-tuner a GUI to tune PID gains of motor boards over CAN, written using Python and Qt
    • tools/studio a set of introspection tools written in Python and Qt to debug our robots
  • uavcan_data_types contains the custom message definitions (DSDL) for the UAVCAN communication protocol
  • ci groups scripts and Docker files for our continuous integration server
  • user-guide contains high-level documentation about software and electronics components used on our robots

The user guide is generated using mdbook from doc/user-guide

Building with CMake

To build one platform with cmake, for example here our UWB beacon board:

mkdir build-uwb && cd build-uwb
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/uwb-beacon.cmake

# WARNING: Make all or make without target does not work.
make uwb-beacon-firmware.elf

# The resulting firmware is at `uwb-beacon-firmware/uwb-beacon-firmware.elf`.

To build the unit tests for all the boards:

mkdir build
cd build
cmake ..
make all test

Coding style

We use clang-format (tested with version 7 or greater) to enforce proper source code formatting. You can use the format-all.sh script in the root directory to format the whole source tree. You can also use clang-format -i --style=file src/foo.c to format a particular file. Finally, some editors include support for clang-format through plugin, check for yourself.

About

CVRA monorepo - All software running on our bots lives here

License:MIT License


Languages

Language:C 67.6%Language:Jupyter Notebook 13.4%Language:C++ 11.7%Language:Python 2.9%Language:CMake 2.2%Language:TeX 1.0%Language:Makefile 0.9%Language:SaltStack 0.1%Language:Shell 0.1%Language:Jinja 0.1%Language:Starlark 0.0%Language:Assembly 0.0%Language:Dockerfile 0.0%Language:GDB 0.0%