pymavlink

python MAVLink interface and utilities

https://github.com/ardupilot/pymavlink

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    23 of 226 committers (10.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.1%) to scientific vocabulary

Keywords from Contributors

distributed systems fuzzing pillow docstring systemd cryptocurrencies tensor embeddings genomics
Last synced: 10 months ago · JSON representation

Repository

python MAVLink interface and utilities

Basic Info
  • Host: GitHub
  • Owner: ArduPilot
  • License: other
  • Language: Python
  • Default Branch: master
  • Size: 8.69 MB
Statistics
  • Stars: 612
  • Watchers: 53
  • Forks: 669
  • Open Issues: 219
  • Releases: 23
Created almost 10 years ago · Last pushed 10 months ago
Metadata Files
Readme License

README.md

Build Status

Pymavlink

This is a Python implementation of the MAVLink protocol. It includes a source code generator (generator/mavgen.py) to create MAVLink protocol implementations for other programming languages as well. Also contains tools for analyzing flight logs.

Documentation

Please see http://ardupilot.org/dev/docs/mavlink-commands.html for mavlink command reference.

For realtime discussion please see the pymavlink Gitter channel

Examples can be found in the repository or in the ArduSub book

Installation

Pymavlink supports Python 3. Python 2 support has been removed.

The following instructions assume you are using a Debian-based (like Ubuntu) installation.

Dependencies

Pymavlink has several dependencies :

- [lxml](http://lxml.de/installation.html) : for checking and parsing xml file 

Optional :

- numpy : for FFT
- pytest : for tests

On Linux

lxml has some additional dependencies that can be installed with your package manager (here with apt-get) :

bash sudo apt-get install libxml2-dev libxslt-dev

Optional for FFT scripts and tests:

bash sudo apt-get install python3-numpy python3-pytest

Using pip you can install the required dependencies for pymavlink :

bash sudo python3 -m pip install --upgrade lxml

On Windows

Lxml can be installed with a Windows installer from here : https://pypi.org/project/lxml

Installation

For users

It is recommended to install pymavlink from PyPI with pip, that way dependencies should be auto installed by pip.

bash sudo python3 -m pip install --upgrade pymavlink

Mavnative

Starting from September 2022, mavnative, a C extension for parsing mavlink, was deprecated and removed. Mavnative development was stalled for long time, it only supports MAVLink1 and doesn't get any fix on the protocol.

For developers

From the pymavlink directory, you can use :

bash sudo MDEF=PATH_TO_message_definitions python3 -m pip install . -v

Since pip installation is executed from /tmp, it is necessary to point to the directory containing message definitions with MDEF. MDEF should not be set to any particular message version directory but the parent folder instead. If you have cloned from mavlink/mavlink then this is /mavlink/message_definitions . Using pip should auto install dependencies and allow you to keep them up-to-date.

Or:

bash sudo python3 setup.py install

Ardupilot Custom Modes

By default, pymavlink will map the Ardupilot mode names to mode numbers per the definitions in the ardupilotmega.xml file. However, during development, it can be useful to add to or update the default mode mappings.

To do this: - create a folder named .pymavlink in your home directory (i.e. $HOME on Linux, $USERPROFILE on Windows); and - add a JSON file called custom_mode_map.json to this new .pymavlink folder.

The JSON file is a dictionary that maps vehicle MAV_TYPE value to a dictionary of mode numbers to mode names. An example that duplicates the existing mapping for MAV_TYPE_FIXED_WING (enum value of 1) vehicles is as follows: json { "1": { "0": "MANUAL", "1": "CIRCLE", "2": "STABILIZE", "3": "TRAINING", "4": "ACRO", "5": "FBWA", "6": "FBWB", "7": "CRUISE", "8": "AUTOTUNE", "10": "AUTO", "11": "RTL", "12": "LOITER", "13": "TAKEOFF", "14": "AVOID_ADSB", "15": "GUIDED", "16": "INITIALISING", "17": "QSTABILIZE", "18": "QHOVER", "19": "QLOITER", "20": "QLAND", "21": "QRTL", "22": "QAUTOTUNE", "23": "QACRO", "24": "THERMAL" "25": "LOITERALTQLAND", "26": "AUTOLAND", } }

This custom_mode_map.json file can be used to: - change the display name of an existing mode (e.g. change "TAKEOFF" to "LAUNCH"); - add a new mode (e.g. add "25": "NEW_MODE"); and - add a mapping for an unsupported vehicle type (e.g. add a mapping for MAV_TYPE_AIRSHIP (enum value of 7) vehicles).

Notes: - Whilst the MAV_TYPE and mode numbers are integers, they need to be defined as strings in the JSON file, as raw integers can't be used as dictionary keys in JSON. - This feature updates the default definitions. You can use it to change the name-to-number mapping for a mode, but you completely can't remove an existing mapping.

License


pymavlink is released under the GNU Lesser General Public License v3 or later.

The source code generated by generator/mavgen.py is available under the permissive MIT License.

Owner

  • Name: ArduPilot
  • Login: ArduPilot
  • Kind: organization

ArduPilot development team

GitHub Events

Total
  • Create event: 15
  • Release event: 8
  • Issues event: 24
  • Watch event: 100
  • Delete event: 6
  • Issue comment event: 174
  • Push event: 83
  • Pull request review comment event: 49
  • Pull request review event: 105
  • Pull request event: 173
  • Fork event: 73
Last Year
  • Create event: 15
  • Release event: 8
  • Issues event: 24
  • Watch event: 100
  • Delete event: 6
  • Issue comment event: 174
  • Push event: 83
  • Pull request review comment event: 49
  • Pull request review event: 105
  • Pull request event: 173
  • Fork event: 73

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 2,836
  • Total Committers: 226
  • Avg Commits per committer: 12.549
  • Development Distribution Score (DDS): 0.803
Past Year
  • Commits: 81
  • Committers: 14
  • Avg Commits per committer: 5.786
  • Development Distribution Score (DDS): 0.58
Top Committers
Name Email Commits
Andrew Tridgell a****w@t****t 558
Andrew Tridgell t****e@s****g 406
Lorenz Meier lm@i****h 382
Peter Barker p****r@b****u 197
Bryant b****s@u****u 72
Dr.-Ing. Amilcar do Carmo Lucas a****s@i****e 49
lm p****k@p****) 48
Thomas Gubler t****r@g****m 47
James Goppert j****t@g****m 47
lm m****l@q****g 46
Pierre Kancir p****n@g****m 42
Alexander Hedges a****d 40
Hamish Willee h****e@g****m 36
Andreas Antener a****a@g****h 33
dependabot[bot] 4****] 26
Vladimir Ermakov v****1@g****m 24
Simon Hancock s****n@l****m 23
Max Odnovolyk m****k@g****m 22
Michael Day m****9@y****m 22
Mariano Lizarraga m****e@g****m 21
hengli h****i@s****h 21
Tom Pittenger m****b@g****m 20
James Goppert j****t@w****m 19
lm p****k@s****m 18
Julian Oes j****n@o****h 18
David Goodman d****a@g****m 18
Kevin Hester k****h@g****m 17
cclauss c****s@b****h 17
philipoe p****n@m****h 15
Peter Hall 3****1 15
and 196 more...

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 108
  • Total pull requests: 455
  • Average time to close issues: 10 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 102
  • Total pull request authors: 85
  • Average comments per issue: 2.16
  • Average comments per pull request: 1.42
  • Merged pull requests: 286
  • Bot issues: 0
  • Bot pull requests: 20
Past Year
  • Issues: 18
  • Pull requests: 185
  • Average time to close issues: 25 days
  • Average time to close pull requests: 7 days
  • Issue authors: 17
  • Pull request authors: 33
  • Average comments per issue: 0.44
  • Average comments per pull request: 0.75
  • Merged pull requests: 117
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • hamishwillee (4)
  • mnumanuyar (2)
  • anaam-wingxpand (2)
  • WickedShell (2)
  • spectre-solutions (1)
  • basil-huber (1)
  • pv42 (1)
  • igordevjspy (1)
  • anshulsood-02 (1)
  • SourabhPrasad (1)
  • iottrends (1)
  • ScottHo (1)
  • AA-CambSensoriis (1)
  • julianoes (1)
  • FreshJude (1)
Pull Request Authors
  • peterbarker (94)
  • tridge (58)
  • shancock884 (45)
  • robertlong13 (23)
  • dependabot[bot] (20)
  • cclauss (18)
  • amilcarlucas (17)
  • IamPete1 (16)
  • hamishwillee (14)
  • khancyr (11)
  • rotu (8)
  • andyp1per (5)
  • alehed (5)
  • noahredon (5)
  • bugobliterator (4)
Top Labels
Issue Labels
Pull Request Labels
dependencies (20) javascript (18) DevCallEU (18) merge-on-CI-pass (11) NeedsTesting (7) enhancement (5) DevCallTopic (4) github_actions (3) .NET (2)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 246,928 last-month
  • Total docker downloads: 11,727
  • Total dependent packages: 25
    (may contain duplicates)
  • Total dependent repositories: 322
    (may contain duplicates)
  • Total versions: 82
  • Total maintainers: 3
pypi.org: pymavlink

Python MAVLink code

  • Versions: 79
  • Dependent Packages: 25
  • Dependent Repositories: 320
  • Downloads: 246,914 Last month
  • Docker Downloads: 11,727
Rankings
Dependent packages count: 0.6%
Dependent repos count: 0.8%
Downloads: 1.0%
Docker downloads count: 1.5%
Average: 1.6%
Forks count: 2.3%
Stargazers count: 3.3%
Maintainers (2)
Last synced: 10 months ago
pypi.org: pymavlink-ws

Python MAVLink code

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 8 Last month
Rankings
Forks count: 2.3%
Stargazers count: 3.3%
Dependent packages count: 7.4%
Average: 18.0%
Dependent repos count: 22.2%
Downloads: 55.0%
Maintainers (1)
Last synced: 10 months ago
pypi.org: pymavlink-ws-xrendan

Python MAVLink code

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 6 Last month
Rankings
Forks count: 2.3%
Stargazers count: 3.3%
Dependent packages count: 7.4%
Average: 21.2%
Dependent repos count: 22.2%
Downloads: 70.9%
Maintainers (1)
Last synced: 10 months ago

Dependencies

generator/javascript/local_modules/jspack/package.json npm
  • long development
  • mocha development
  • should development
  • sinon development
generator/javascript/local_modules/long/package.json npm
  • webpack ^3.10.0 development
generator/javascript/package-lock.json npm
  • 260 dependencies
generator/javascript/package.json npm
  • eslint ^6.1.0 development
  • mocha development
  • should development
  • sinon development
  • babel-eslint ^10.0.3
  • glob ^7.1.6
  • jspack file:local_modules/jspack
  • long file:local_modules/long
  • mocha ^8.2.0
  • should ^13.2.3
  • underscore 1.12.1
  • winston 3.2.1
generator/javascript_stable/package-lock.json npm
  • 260 dependencies
generator/javascript_stable/package.json npm
  • eslint ^6.1.0 development
  • mocha development
  • should development
  • sinon development
  • babel-eslint ^10.0.3
  • jspack 0.0.4
  • underscore 1.12.1
  • winston 3.2.1
generator/CS/MAVLink.csproj nuget
  • Microsoft.NETFramework.ReferenceAssemblies 1.0.0
  • Newtonsoft.Json 11.0.1
  • System.Runtime.CompilerServices.Unsafe 4.7.0
requirements.txt pypi
  • future >=0.15.2
  • lxml >=3.6.0
setup.py pypi
  • future *
  • lxml *
.github/workflows/python-publish.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/test.yml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • actions/setup-python v4 composite
pyproject.toml pypi