MAVROS is a ROS 1 package that enables MAVLink extendable communication between computers running ROS 1 for any MAVLink enabled autopilot, ground station, or peripheral. MAVROS is the "official" supported bridge between ROS 1 and the MAVLink protocol.
While MAVROS can be used to communicate with any MAVLink-enabled autopilot, this documentation explains how to set up communication between the PX4 Autopilot and a ROS 1 enabled companion computer.
:::warning The PX4 development team recommend that all users upgrade to ROS 2. This documentation reflects the "old approach". :::
This installation assumes you have a catkin workspace located at ~/catkin_ws If you don't create one with:
You will be using the ROS Python tools: wstool (for retrieving sources), rosinstall, and catkin_tools (building) for this installation. While they may have been installed during your installation of ROS you can also install them with:
:::tip While the package can be built using catkin_make the preferred method is using catkin_tools as it is a more versatile and "friendly" build tool. :::
If this is your first time using wstool you will need to initialize your source space with:
Now you are ready to do the build:
Install MAVLink:
Install MAVROS from source using either released or latest version:
Make sure that you use setup.bash or setup.zsh from workspace.
In the case of error, there are addition installation and troubleshooting notes in the mavros repo.
MAVROS Examples
The MAVROS Offboard Example (C++), will show you the basics of MAVROS, from reading telemetry, checking the drone state, changing flight modes and controlling the drone.
:::note If you have an example app using the PX4 Autopilot and MAVROS, we can help you get it on our docs. :::
# We use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
# For fetching all the dependencies into your catkin_ws,
# just add '--deps' to the above scripts, E.g.:
# rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall