{"id":15032510,"url":"https://github.com/aerorust/mav","last_synced_at":"2025-05-07T16:09:49.168Z","repository":{"id":41851409,"uuid":"318854659","full_name":"AeroRust/mav","owner":"AeroRust","description":"Rust crates for the MAVLink lightweight messaging protocol for communicating with drones (and between onboard drone components).","archived":false,"fork":false,"pushed_at":"2024-09-22T13:53:17.000Z","size":6117,"stargazers_count":25,"open_issues_count":7,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-07T16:09:30.786Z","etag":null,"topics":["drones","hacktoberfest","robotics","rustlang","simulation"],"latest_commit_sha":null,"homepage":"http://aerorust.org/mav/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AeroRust.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-05T18:00:29.000Z","updated_at":"2025-04-30T08:07:24.000Z","dependencies_parsed_at":"2022-08-11T19:21:02.048Z","dependency_job_id":null,"html_url":"https://github.com/AeroRust/mav","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeroRust%2Fmav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeroRust%2Fmav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeroRust%2Fmav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeroRust%2Fmav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AeroRust","download_url":"https://codeload.github.com/AeroRust/mav/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252912996,"owners_count":21824066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drones","hacktoberfest","robotics","rustlang","simulation"],"created_at":"2024-09-24T20:18:36.721Z","updated_at":"2025-05-07T16:09:49.118Z","avatar_url":"https://github.com/AeroRust.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MAV\n\n## The Rust book for Drones\n\nYou can run the Rust book for drones by using `mdbook`:\n\n`mdbook serve`\n\n## MAV-SDK\n\nA [`MAVSDK`](https://github.com/mavlink/MAVSDK) gRPC client ( HTTP/2 ) for communicating with a drone, built from `proto` files using `tonic`.\n\nYou need to be running the `MAVSDK` Server (see https://github.com/mavlink/MAVSDK/releases) in order to use this crate.\n\n### Run PX4, Gazebo and MAVSDK Server with docker-compose\n\n```bash\ndocker-compose up --detach\n```\n\n### Take it to the skies\n\n```\ncargo run -p mav-sdk --example takeoff\n```\n\n### Development\nPrerequisite:\n\n1. Make sure you have SSH key set for your Github account.\n\n  See Github articles:\n - [Generating a new SSH key and adding it to the ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)\n - [Adding a new SSH key to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)\n\n\nBuilding the project:\n\n1. Clone the repository and change dir:\n\n  `git clone git@github.com:AeroRust/mav.git \u0026\u0026 cd mav`\n\n2. Install `protoc`:\n\n  * For [Linux \u0026 mac](https://grpc.io/docs/protoc-installation/)\n  * For [Windows](https://www.geeksforgeeks.org/how-to-install-protocol-buffers-on-windows/)\n\n3. Initialize the `mavsdk-proto` submodule:\n\n  `git submodule init \u0026\u0026 git submodule update`\n\n4. Build the project\n\n  `cargo build`\n\n\n## Simulation\n### Gazebo with PX4\n\n\nUseful documentation regarding the Gazebo simulation and the PX4 flight software:\n\n- PX4 with Gazebo docs: https://dev.px4.io/master/en/simulation/gazebo.html\n  - Setting up Wind speed: https://dev.px4.io/master/en/simulation/gazebo.html#change-wind-speed\n  - GPS noise: https://dev.px4.io/master/en/simulation/gazebo.html#simulating-gps-noise\n  - World location: https://dev.px4.io/master/en/simulation/gazebo.html#set-world-location\n  - Survey camera (simulated [MAVLINK camera](https://mavlink.io/en/services/camera.html)) + geotagging: https://dev.px4.io/master/en/simulation/gazebo.html#simulated-survey-camera \n  - Video streaming: https://dev.px4.io/master/en/simulation/gazebo.html#video-streaming\n    Supported only on the [`Typhoon H480`](https://dev.px4.io/master/en/simulation/gazebo_vehicles.html#typhoon-h480-hexrotor) frame and requires `Gstreamer 1.0`\n- Creating a world with (SD Format is used by Gazebo): http://sdformat.org/tutorials?tut=spec_world\u0026cat=specification\n- Physics and other setup like wind:\n  - SD Format - http://sdformat.org/spec?ver=1.4\u0026elem=physics#physics_gravity\n  - \"Windy world\" file from PX4 - Gazebo with (SITL): https://github.com/PX4/PX4-SITL_gazebo/blob/master/worlds/windy.world#L15-L26\n\n### ArduPilot\n\n\n- Advanced configuration - Complete Parameter List: https://ardupilot.org/copter/docs/parameters.html#parameters\n\n#### SITL (Software in the loop)\n\n- Vehicle frame types to choose from: https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html#frame-types\n- Starting SITL without MAVProxy (`--no-mavproxy`): https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html#connecting-other-additional-ground-stations\n- Using STIL: https://ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html\n- SITL Serial mapping: https://ardupilot.org/dev/docs/sitl-serial-mapping.html\n- SITL Parameters: https://ardupilot.org/dev/docs/sitl-parameters.html\n\nDocker images:\n- https://github.com/radarku/ardupilot-sitl-docker\n- https://github.com/gmyoungblood-parc/docker-alpine-ardupilot\n\n#### Gazebo\n\nGazebo doesn't yet have built-in support for ArduPilot and it requires a plugin to be installed.\n\n- https://ardupilot.org/dev/docs/using-gazebo-simulator-with-sitl.html\n\n#### MAVLink\n\n- MAVLink basics: https://ardupilot.org/dev/docs/mavlink-basics.html#mavlink-basics\n- MAVLink Routing in ArduPilot: https://ardupilot.org/dev/docs/mavlink-routing-in-ardupilot.html\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faerorust%2Fmav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faerorust%2Fmav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faerorust%2Fmav/lists"}