Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mavlink/mavlink
Marshalling / communication library for drones.
https://github.com/mavlink/mavlink
Last synced: 5 days ago
JSON representation
Marshalling / communication library for drones.
- Host: GitHub
- URL: https://github.com/mavlink/mavlink
- Owner: mavlink
- License: other
- Created: 2011-08-12T06:51:52.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-12-04T22:13:38.000Z (8 days ago)
- Last Synced: 2024-12-04T23:20:32.506Z (8 days ago)
- Language: Python
- Homepage: http://mavlink.io
- Size: 12.6 MB
- Stars: 1,745
- Watchers: 126
- Forks: 1,923
- Open Issues: 125
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: COPYING
Awesome Lists containing this project
- awesome-suas-science - MAVLink - Micro Air Vehicle Message Marshalling Library (Libraries / Flight Controllers)
- awesome-flying-fpv - MAVlink - Modern extensible protocol from hobbiests ... commercial UAV. (Telemetry & Logs 📊 / Modules 🧩)
README
[![Build Status](https://github.com/mavlink/mavlink/workflows/Test%20and%20deploy/badge.svg)](https://github.com/mavlink/mavlink/actions?query=branch%3Amaster)
# MAVLink
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](https://mavlink.io/en/#supported_languages). There are additional Python scripts providing examples and utilities for working with MAVLink data.
> **Tip** MAVLink is very well suited for applications with very limited communication bandwidth. Its reference implementation in C is highly optimized for resource-constrained systems with limited RAM and flash memory. It is field-proven and deployed in many products where it serves as interoperability interface between components of different manufacturers.
## Quick start
### Generate C headers
To install the minimal MAVLink environment on Ubuntu LTS 20.04 or 22.04, enter the following on a terminal:
```bash
# Dependencies
sudo apt install python3-pip# Clone mavlink into the directory of your choice
git clone https://github.com/mavlink/mavlink.git --recursive
cd mavlinkpython3 -m pip install -r pymavlink/requirements.txt
```You can then build the MAVLink2 C-library for `message_definitions/v1.0/common.xml` from the `/mavlink` directory as shown:
```bash
python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated/include/mavlink/v2.0 message_definitions/v1.0/common.xml
```### Use from cmake
To include the headers in cmake, install them locally, e.g. into the directory `install`:
```
cmake -Bbuild -H. -DCMAKE_INSTALL_PREFIX=install -DMAVLINK_DIALECT=common -DMAVLINK_VERSION=2.0
cmake --build build --target install
```Then use `find_package` to get the dependency in `CMakeLists.txt`:
```
find_package(MAVLink REQUIRED)add_executable(my_program my_program.c)
target_link_libraries(my_program PRIVATE MAVLink::mavlink)
```And pass the local install directory to cmake (adapt to your directory structure):
```
cd ../my_program
cmake -Bbuild -H. -DCMAKE_PREFIX_PATH=../mavlink/install
```For a full example, check [examples/c](examples/c).
*Note: even though we use `target_link_libraries` in cmake, it doesn't actually "link" to MAVLink as it's just a header-only library.*
### Other instructions
Instructions for using the C libraries are then covered in [Using C MAVLink Libraries (mavgen)](https://mavlink.io/en/mavgen_c/).
> **Note:** [Installing the MAVLink Toolchain](https://mavlink.io/en/getting_started/installation.html) explains how to install MAVLink on other Ubuntu platforms and Windows, while [Generating MAVLink Libraries](https://mavlink.io/en/getting_started/generate_libraries.html) explains how to build MAVLink for the other programming languages [supported by the project](https://mavlink.io/en/#supported_languages).
> The sub-topics of [Using MAVLink Libraries](https://mavlink.io/en/getting_started/use_libraries.html) explain how to use the generated libraries.## Key Links
* [Documentation/Website](https://mavlink.io/en/) (mavlink.io/en/)
* [Discussion/Support](https://mavlink.io/en/#support)
* [Contributing](https://mavlink.io/en/contributing/contributing.html)
* [License](https://mavlink.io/en/#license)