All Projects → cvra → Robot Software

cvra / Robot Software

Licence: mit
CVRA monorepo - All software running on our bots lives here

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Robot Software

Awesome Canbus
🚛 A curated list of awesome CAN bus tools, hardware and resources
Stars: ✭ 73 (+87.18%)
Mutual labels:  stm32, embedded, can-bus
List of robot electronics
A curated list of awesome open source electronic resources for robotics
Stars: ✭ 106 (+171.79%)
Mutual labels:  robotics, robot, embedded
Libcanard
A compact implementation of the UAVCAN/CAN protocol in C for high-integrity real-time embedded systems
Stars: ✭ 151 (+287.18%)
Mutual labels:  robotics, embedded, can-bus
Odas
ODAS: Open embeddeD Audition System
Stars: ✭ 435 (+1015.38%)
Mutual labels:  robotics, embedded
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+9787.18%)
Mutual labels:  robotics, embedded
Poppy Humanoid
Poppy Humanoid is an open-source and 3D printed humanoid robot. Optimized for research and education purposes, its modularity allows for a wide range of applications and experimentations.
Stars: ✭ 419 (+974.36%)
Mutual labels:  robotics, robot
Yarp
YARP - Yet Another Robot Platform
Stars: ✭ 358 (+817.95%)
Mutual labels:  robotics, robot
Awesome Robotics
A curated list of awesome links and software libraries that are useful for robots.
Stars: ✭ 478 (+1125.64%)
Mutual labels:  robotics, robot
Jetson Inference
Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.
Stars: ✭ 5,191 (+13210.26%)
Mutual labels:  robotics, embedded
Hexapod Robot Simulator
A hexapod robot simulator built from first principles
Stars: ✭ 577 (+1379.49%)
Mutual labels:  robotics, robot
Atomvm
Tiny Erlang VM
Stars: ✭ 834 (+2038.46%)
Mutual labels:  stm32, embedded
Fido
A lightweight C++ machine learning library for embedded electronics and robotics.
Stars: ✭ 404 (+935.9%)
Mutual labels:  robotics, embedded
Hexapod
Blazing fast hexapod robot simulator for the web.
Stars: ✭ 370 (+848.72%)
Mutual labels:  robotics, robot
Can
CAN driver and router
Stars: ✭ 31 (-20.51%)
Mutual labels:  embedded, can-bus
Handeye calib camodocal
Easy to use and accurate hand eye calibration which has been working reliably for years (2016-present) with kinect, kinectv2, rgbd cameras, optical trackers, and several robots including the ur5 and kuka iiwa.
Stars: ✭ 364 (+833.33%)
Mutual labels:  robotics, robot
Vector Python Sdk
Anki Vector Python SDK
Stars: ✭ 462 (+1084.62%)
Mutual labels:  robotics, robot
Open Source Rover
A build-it-yourself, 6-wheel rover based on the rovers on Mars!
Stars: ✭ 6,903 (+17600%)
Mutual labels:  robot, robotics
Awesome Embedded
A curated list of awesome embedded programming.
Stars: ✭ 831 (+2030.77%)
Mutual labels:  stm32, embedded
Ros Academy For Beginners
中国大学MOOC《机器人操作系统入门》代码示例 ROS tutorial
Stars: ✭ 861 (+2107.69%)
Mutual labels:  robotics, robot
Teenyusb
Lightweight USB device and host stack for STM32 and other MCUs.
Stars: ✭ 287 (+635.9%)
Mutual labels:  stm32, embedded

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].