Overview#

What is pymavswarm?#

pymavswarm is a Python library implemented to enable interaction with drone swarms using the MAVLink protocol. This library supports reading MAVLink messages sent from multiple agents in a swarm and sending MAVLink messages to agents within the swarm. Such functionality ultimately enables development of new swarm applications such as ground control stations.

Main features#

Here are some of the main features of pymavswarm:

  • Easily send MAVLink commands to multiple drones, simultaneously

  • Monitor the state of swarm drone agents

  • Implement custom commands and swarm algorithms

  • Develop applications for on-board companion computers

  • Implement custom swarm ground control stations

  • Log incoming MAVLink messages for future evaluation and debugging

  • Construct pre-planned missions

  • Multi-agent collision avoidance using reachability analysis

Installation#

pymavswarm may be installed from PyPI by running:

$ python3 -m pip install pymavswarm

To build pymavswarm from source, first ensure that at least Python 3.10 is installed. Once this dependency has been met, refer to the steps below:

  1. Clone the project repository

  2. Navigate to the pymavswarm/ base directory

$ cd path/to/pymavswarm/
  1. Install the pymavswarm Python package

$ python3 -m pip install .

Quick start#

pymavswarm has been implemented to enable easy interfacing with drone swarms. Refer to the following code snippet for a simple example to get started with the library. Additional examples may be found in the project examples.

import time

from pymavswarm import MavSwarm

# Create a new pymavswarm interface
mavswarm = MavSwarm()

# Establish a connection with a USB telemetry device
mavswarm.connect('/dev/ttyUSB0', 115200, 255, 0)

# Wait for the swarm to be populated
while not mavswarm.agents:
    pass

# Arm each agent in the swarm
mavswarm.arm()

# Briefly delay to allow all agents to arm
time.sleep(5.0)

# Disarm each agent in the swarm
mavswarm.disarm()

# Close the pymavswarm connection
mavswarm.disconnect()

Getting help#

If you have questions regarding pymavswarm usage or contribution please ask a question on our Discussions board!