Giter Site home page Giter Site logo

yeekzhang / robot-software Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cvra/robot-software

0.0 0.0 0.0 41.65 MB

CVRA monorepo - All software running on our bots lives here

License: MIT License

Shell 0.09% Makefile 0.87% HTML 0.06% C 64.78% Objective-C 3.03% C++ 11.48% GDB 0.01% Python 2.84% TeX 0.96% Jupyter Notebook 13.47% Dockerfile 0.01% SaltStack 0.11% CMake 2.25% Assembly 0.02% Starlark 0.02%

robot-software's Introduction

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.

robot-software's People

Contributors

syrianspock avatar antoinealb avatar stapelzeiger avatar nuft avatar lu-ni avatar camgunz avatar lyris85 avatar froj avatar nikolaykasyanov avatar wagdav avatar francois-berder avatar gawen avatar ievanavikiene avatar pierluca avatar rodrigosetti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.