Giter VIP home page Giter VIP logo

colibri's Introduction

C/C++

Introduction

The library provides an API for companion systems to communicate with MAVLink-based robotics systems. It can be used for example within obstacle avoidance, and route planning algorithms.

Code structure

The code tree is organized as a set of modules. They all are prefixed with a 'mu' word for a historical reason and it doesn't reflect anything for the moment.

muconfig

This is a singleton component which mainly used to work with 'toml'-formatted configuration files. It is designed to be completely independent from other components and can be used in any c++ project independently.

muqueue

This implements an API to work and design event-based and async control flows. At the backend currently, it is based on the 'libev' framework and provides high-level and convenient wrappers to 'libev' structures along with threading and queueing capabilities. Mainly the routing and transport subsystems depend on it. It is recommended to use 'muqueue' framework for control flow even for your own async functions for better control over load-balancing, getting runtime statistics and priorities.

muflow

This is kept for future purposes as some concepts of graph-like memory should be implemented here. For the moment there are just some data structures used in other components.

muroute

This implements a mavlink protocol and provides a great capability for applications to be smoothly integrated into state-of-the-art robotic systems using mavlink2. It utilizes the concept of a programmatic component bus and has great scalability. Components on the bus are transparently mapped into mavlink components. It is designed as a plugin-based system, implements message routing, and potentially can be used with non-mavlink protocols. There are modules for UDP, TCP, and serial transport already available. For specific applications, it can be extended with custom transport modules or protocols.

mutelemetry

See mutelemetry's README.md for details.

Getting Started

In the root library folder execute:

#!bash
# git clone --recurse-submodules <repo>
mkdir build
cd build
# if you want to build packages type
cmake .. -DCPACK_BINARY_DEB=ON \
  -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE=amd64 \
  -DCMAKE_BUILD_TYPE=Release
## or just for defaults
#cmake ..

# Build package
cmake --build build  --config Release --target package

Prerequisites

  • Boost (Ubuntu: sudo apt-get install libboost-all-dev)
  • CMake >= 3.0 (Ubuntu: sudo apt-get install cmake)
  • libev (Ubuntu: sudo apt-get install libev-dev)
  • clang-format (Ubuntu: sudo apt-get install libev-dev)

See the INSTALL file for more detailed installation instructions. Please see the examples and doc directories for examples on how to use.

Features

  • Component subsytem
  • Mavlink2 routing and messaging
  • Function workqueues
  • Convenient event wrappers

Contributing

We appreciate any contribution, from fixing a comment to implementing complex designs. Being a contributor to this project, you agree and confirm that:

  • You did your work - no plagiarism allowed Any plagiarized work will not be merged.
  • Your work will be distributed under MIT License once your pull request is merged
  • You submitted work fulfils or mostly fulfils our styles and standards

License

Colibri is open source under the MIT license, see the LICENSE files.

colibri's People

Contributors

gutsmek avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

thanasispapam

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.