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:
Clone the project repository
Navigate to the
pymavswarm/
base directory
$ cd path/to/pymavswarm/
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!