libuavcan - Portable reference implementation of the UAVCAN protocol stack in C++ for embedded systems and Linux

  •        81

WARNING libuavcan v1 is not yet complete. This is a work-in-progress. Portable reference implementation of the UAVCAN protocol stack in C++ for embedded systems, Linux, and POSIX-compliant RTOSs.



Related Projects

CAN_BUS_Shield - CAN Bus Shield - MCP2515&MCP2551

  •    C++

CAN-BUS is a common industrial bus because of its long travel distance, medium communication speed and high reliability. It is commonly found on modern machine tools and as an automotive diagnostic bus. This CAN-BUS Shield adopts MCP2515 CAN Bus controller with SPI interface and MCP2551 CAN transceiver to give your Arduino/Seeeduino CAN-BUS capability. With an OBD-II converter cable added on and the OBD-II library imported, you are ready to build an onboard diagnostic device or data logger. or download the zip.

redtail - Perception and AI components for autonomous mobile robotics.

  •    C++

Autonomous visual navigation components for drones and ground vehicles using deep learning. Refer to wiki for more information on how to get started. This project contains deep neural networks, computer vision and control code, hardware instructions and other artifacts that allow users to build a drone or a ground vehicle which can autonomously navigate through highly unstructured environments like forest trails, sidewalks, etc. Our TrailNet DNN for visual navigation is running on NVIDIA's Jetson embedded platform. Our arXiv paper describes TrailNet and other runtime modules in detail.

CANdevStudio - Development tool for CAN bus simulation

  •    C++

Most of automotive projects need to have an access to the Controller Area Network (CAN) bus. There are plenty of commercial frameworks that provides CAN stacks and hardware/software tools necessary to develop proper CAN networks. They are very comprehensive and thus expensive. CANdevStudio aims to be cost-effective replacement for CAN simulation software. It can work with variety of CAN hardware interfaces (e.g. Microchip, Vector, PEAK-Systems) or even without it (vcan and cannelloni) . CANdevStudio enables to simulate CAN signals such as ignition status, doors status or reverse gear by every automotive developer. Thanks to modularity it is easy to implement new, custom features. Access to CAN bus is based on Qt framework. Current list of supported CAN interfaces can be found here.

python-can - The can package provides controller area network support for Python developers

  •    Python

The Controller Area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other. It has priority based bus arbitration and reliable deterministic communication. It is used in cars, trucks, boats, wheelchairs and more. The can package provides controller area network support for Python developers; providing common abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a can bus.

awesome-robotic-tooling - Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace: https://freerobotics


To stop reinventing the wheel you need to know about the wheel. This list is an attempt to show the variety of open and free tools in software and hardware development, which are useful in professional robotic development. Your contribution is necessary to keep this list alive, increase the quality and to expand it. You can read more about it's origin and how you can participate in the contribution guide and related blog post. All new project entries will have a tweet from protontypes.

opendbc - democratize access to car decoder rings

  •    Python

The project to democratize access to the decoder ring of your car. A DBC file encodes, in a humanly readable way, the information needed to understand a vehicle's CAN bus traffic. A vehicle might have multiple CAN buses and every CAN bus is represented by its own dbc file. Wondering what's the DBC file format? Here and Here a couple of good overviews.

Vc - SIMD Vector Classes for C++

  •    C++

Recent generations of CPUs, and GPUs in particular, require data-parallel codes for full efficiency. Data parallelism requires that the same sequence of operations is applied to different input data. CPUs and GPUs can thus reduce the necessary hardware for instruction decoding and scheduling in favor of more arithmetic and logic units, which execute the same instructions synchronously. On CPU architectures this is implemented via SIMD registers and instructions. A single SIMD register can store N values and a single SIMD instruction can execute N operations on those values. On GPU architectures N threads run in perfect sync, fed by a single instruction decoder/scheduler. Each thread has local memory and a given index to calculate the offsets in memory for loads and stores. Current C++ compilers can do automatic transformation of scalar codes to SIMD instructions (auto-vectorization). However, the compiler must reconstruct an intrinsic property of the algorithm that was lost when the developer wrote a purely scalar implementation in C++. Consequently, C++ compilers cannot vectorize any given code to its most efficient data-parallel variant. Especially larger data-parallel loops, spanning over multiple functions or even translation units, will often not be transformed into efficient SIMD code.

python-udsoncan - Python implementation of UDS (ISO-14229) standard.

  •    Python

This project is an implementation of the Unified Diagnostic Services (UDS) protocol defined by ISO-14229 written in Python 3. The code is published under MIT license on GitHub (pylessard/python-udsoncan).

mavlink - Marshalling / communication library for drones.

  •    C

MAVLink -- Micro Air Vehicle Message Marshalling Library. MAVLink is a very lightweight, header-only message library for communication between drones and/or ground control stations. It consists primarily of message-set specifications for different systems ("dialects") defined in XML files, and Python tools that convert these into appropriate source code for supported languages. There are additional Python scripts providing examples and utilities for working with MAVLink data.

pyvit - pyvit: Python Vehicle Interface Toolkit

  •    Python

pyvit is a toolkit for interfacing with cars from Python. It aims to implement common hardware interfaces and protocols used in the automotive systems. pyvit can be installed with pip: pip install pyvit.

carma-platform - CARMA Platform is built on robot operating system (ROS) and utilizes open source software (OSS) that enables Cooperative Driving Automation (CDA) features to allow Automated Driving Systems to interact and cooperate with infrastructure and other vehicles through communication

  •    C++

CARMASM advances research and development to accelerate market readiness and deployment of cooperative driving automation, while advancing automated driving technology safety, security, data, and artificial intelligence. It encourages collaboration and participation by a community of engineers and researchers to advance understanding of cooperative driving automation using open source software (OSS) and agile project management practices. CARMA is a reusable, extensible platform for controlling SAE level 2 connected, automated vehicles (AVs). It provides a rich, generic API for third party plugins that implement vehicle guidance algorithms to plan vehicle trajectories. It is written in C++ and runs in a Robot Operating System (ROS) environment on Ubuntu. The platform can be reused on a variety of properly equipped vehicles. Migration has begun from the ROS 1 framework to ROS 2.

dyno - Runtime polymorphism done right

  •    C++

At this point, this library is experimental and it is a pure curiosity. No stability of interface or quality of implementation is guaranteed. Use at your own risks. Dyno solves the problem of runtime polymorphism better than vanilla C++ does. It provides a way to define interfaces that can be fulfilled non-intrusively, and it provides a fully customizable way of storing polymorphic objects and dispaching to virtual methods. It does not require inheritance, heap allocation or leaving the comfortable world of value semantics, and it can do so while outperforming vanilla C++.

rang - A Minimal, Header only Modern c++ library for terminal goodies 💄✨

  •    C++

rang only depends on C++ standard library, unistd.h system header on unix and windows.h & io.h system headers on windows based systems. In other words, you don't need any 3rd party dependencies. rang is a single header-only library. Put rang.hpp in the include folder directly into the project source tree or somewhere reachable from your project.

system-bus-radio - Transmits AM radio on computers without radio transmitting hardware.

  •    C

This program transmits radio on computers / phones without radio transmitting hardware. Some computers are intentionally disconnected from the rest of the world. This includes having their internet, wireless, bluetooth, USB, external file storage and audio capabilities removed. This is called "air gapping". Even in such a situation, this program can transmit radio.

SUMO - Simulation of Urban Mobility

  •    C++

"Simulation of Urban MObility" (SUMO) is an open source, highly portable, microscopic traffic simulation package designed to handle large road networks and different modes of transport. It is mainly developed by employees of the Institute of Transportation Systems at the German Aerospace Center. It allows for intermodal simulation including pedestrians and comes with a large set of tools for scenario creation.

can-utils - Linux-CAN / SocketCAN user space applications

  •    C

Linux-CAN / SocketCAN user space applications

Fiorano ESB - Enterprise Service Bus

  •    Java

Fiorano ESB enables application integration by choreographing Microservices into asynchronous flows via the Fiorano Studio and associated tools. The Component Control Protocol (CCP), a wire-level protocol, allows the asynchronous communication between the ESB server and micro services being choreographed/orchestrated into application flows. The transport is pluggable and any available JMS engine may be used such as Apache ActiveMQ, JBOSS, TIBCO, IBM, RabbitMQ and FioranoMQ.

ddt4all - OBD tool

  •    Python

DDT4All is tool to create your own ECU parameters screens and connect to a CAN network with a cheap ELM327 interface. This application is work in progress, so be very careful when using expert mode. Using the application in non expert mode should not be harmful for your vehicle (leave the expert mode button released).

paparazzi - Paparazzi is a free and open-source hardware and software project for unmanned (air) vehicles

  •    C

Paparazzi is a free open source software package for Unmanned (Air) Vehicle Systems. For many years, the system has been used successfuly by hobbyists, universities and companies all over the world, on vehicles of various sizes (11.9g to 25kg). Paparazzi supports fixed wing, rotorcraft, hybrids, flapping vehicles and it is even possible to use it for boats and surface vehicles. To get in touch, subscribe to the mailing list [] (, the IRC channel (freenode, #paparazzi) and Gitter (


  •    C++

With LEIBnix you can control and monitor devices connected to the EIB (European Installation Bus). LEIBnix uses the FT1.2 protocol/interface to connect to the EIB. Physical interface can be any bus-coupler or BIM-113 module.

We have large collection of open source products. Follow the tags from Tag Cloud >>

Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.