ArduPilot capabilities can be extended with ROS. ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is completely open source (BSD) and free for others to use, change and commercialize upon. The primary goal is to enable software developers to build more capable robot applications quickly and easily on a common platform. Those pages will show you how to:

  • Connect ArduPilot to ROS
  • Retrieve ArduPilot information in ROS
  • Use ROS to command an ArduPilot vehicle
  • Simulate ArduPilot in Gazebo


Those pages won’t show you how to:

  • Install and setup ROS
  • Make a fully autonomous vehicle
  • Make non-GPS vehicle

Those are outside the scope of ArduPilot and difficult. Even if ROS and ArduPilot are powerful, their combined usage will require more work than the example shown in this wiki to make advance things (SLAM, autonomous movement etc). You can find a good description of current ROS limits in


  • Learn on to use ArduPilot first! Don’t expect that things will work magically especially with a real vehicle. You need to understand and make your vehicle working well in MANUAL and GUIDED mode before trying to use ROS. We won’t explain here how to setup your vehicle nor why it won’t arm or takeoff.
  • Learn how to use ROS! Please do at least ROS all beginner tutorials. In the case of a problem with ROS, ask on ROS community first (or google your error). You will find many other tutorials about ROS like Emlid, reading some of them is always beneficial.
  • Use ROS Kinetic Kame on Ubuntu Linux (16.04). Those are default and LTS version of both ROS and Ubuntu. THIS DON’T WORK ON WINDOWS NOR MACOS ! We assume now that you are using Ubuntu and ROS Kinetic.
  • If you are on a desktop PC, please install ROS Desktop-Full, on a companion computer ROS-Base is enough, see
  • Please add ROS tool to your shell as stated in ROS wiki.
  • Please don’t use root as the default user.
  • To make the connection between ROS and ArduPilot, we will use MAVROS. Install it should be as simple as
sudo apt install ros-kinetic-mavros

and for simpler usage on a desktop computer, please install RQT

sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-rqt-robot-plugins
  • We recommend the usage of caktin_tools instead of the default catkin_make as it is more powerful and got some linter to help you
sudo apt-get install python-catkin-tools


ROS got tabs completion so abuse of it!

Next tutorials :

Instructions for using Gazebo with ArduPilot are here and an old version has been blogged about here.