mav
mav copied to clipboard
Rust crates for the MAVLink lightweight messaging protocol for communicating with drones (and between onboard drone components).
MAV
The Rust book for Drones
You can run the Rust book for drones by using mdbook
:
mdbook serve
MAV-SDK
A MAVSDK
gRPC client ( HTTP/2 ) for communicating with a drone, built from proto
files using tonic
.
You need to be running the MAVSDK
Server (see https://github.com/mavlink/MAVSDK/releases) in order to use this crate.
Run PX4, Gazebo and MAVSDK Server with docker-compose
docker-compose up --detach
Take it to the skies
cargo run -p mav-sdk --example takeoff
Development
Prerequisite:
- Make sure you have SSH key set for your Github account.
See Github articles:
Building the project:
- Clone the repository and change dir:
git clone [email protected]:AeroRust/mav.git && cd mav
- Install
protoc
:
- For Linux & mac
- For Windows
- Initialize the
mavsdk-proto
submodule:
git submodule init && git submodule update
- Build the project
cargo build
Simulation
Gazebo with PX4
Useful documentation regarding the Gazebo simulation and the PX4 flight software:
- PX4 with Gazebo docs: https://dev.px4.io/master/en/simulation/gazebo.html
- Setting up Wind speed: https://dev.px4.io/master/en/simulation/gazebo.html#change-wind-speed
- GPS noise: https://dev.px4.io/master/en/simulation/gazebo.html#simulating-gps-noise
- World location: https://dev.px4.io/master/en/simulation/gazebo.html#set-world-location
- Survey camera (simulated MAVLINK camera) + geotagging: https://dev.px4.io/master/en/simulation/gazebo.html#simulated-survey-camera
- Video streaming: https://dev.px4.io/master/en/simulation/gazebo.html#video-streaming
Supported only on the
Typhoon H480
frame and requiresGstreamer 1.0
- Creating a world with (SD Format is used by Gazebo): http://sdformat.org/tutorials?tut=spec_world&cat=specification
- Physics and other setup like wind:
- SD Format - http://sdformat.org/spec?ver=1.4&elem=physics#physics_gravity
- "Windy world" file from PX4 - Gazebo with (SITL): https://github.com/PX4/PX4-SITL_gazebo/blob/master/worlds/windy.world#L15-L26
ArduPilot
- Advanced configuration - Complete Parameter List: https://ardupilot.org/copter/docs/parameters.html#parameters
SITL (Software in the loop)
- Vehicle frame types to choose from: https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html#frame-types
- Starting SITL without MAVProxy (
--no-mavproxy
): https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html#connecting-other-additional-ground-stations - Using STIL: https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html
- SITL Serial mapping: https://ardupilot.org/dev/docs/sitl-serial-mapping.html
- SITL Parameters: https://ardupilot.org/dev/docs/sitl-parameters.html
Docker images:
- https://github.com/radarku/ardupilot-sitl-docker
- https://github.com/gmyoungblood-parc/docker-alpine-ardupilot
Gazebo
Gazebo doesn't yet have built-in support for ArduPilot and it requires a plugin to be installed.
- https://ardupilot.org/dev/docs/using-gazebo-simulator-with-sitl.html
MAVLink
- MAVLink basics: https://ardupilot.org/dev/docs/mavlink-basics.html#mavlink-basics
- MAVLink Routing in ArduPilot: https://ardupilot.org/dev/docs/mavlink-routing-in-ardupilot.html