# ROS 2
ROS 2 (opens new window) is the newest version of ROS (opens new window) (Robot Operating System), a general purpose robotics library that can be used with the PX4 Autopilot to create powerful drone applications. It captures most of the learnings and features of ROS 1, improving a number of flaws of the earlier version.
The PX4 development team highly recommend that you use/migrate to this version of ROS!
Communication between ROS 2 and PX4 uses middleware that implements the XRCE-DDS protocol. This middleware exposes PX4 uORB messages as ROS 2 messages and types, effectively allowing direct access to PX4 from ROS 2 workflows and nodes. The middleware uses uORB message definitions to generate code to serialise and deserialise the messages heading in and out of PX4. These same message definitions are used in ROS 2 applications to allow the messages to be interpreted.
To use the ROS 2 over XRCE-DDS effectively, you must (at time of writing) have a reasonable understanding of the PX4 internal architecture and conventions, which differ from those used by ROS. In the near term future we plan to provide ROS 2 APIs to abstract PX4 conventions, along with examples demonstrating their use.
The main topics in this section are:
- ROS 2 User Guide: A PX4-centric overview of ROS 2, covering installation, setup, and how to build ROS 2 applications that communicate with PX4.
- ROS 2 Offboard Control Example
ROS 2 is officially supported only on Linux platforms. Ubuntu 20.04 LTS is the official supported distribution.
ROS 2 can also connect with PX4 using MAVROS (opens new window) (instead of XRCE-DDS). This option is supported by the MAVROS project.