ROS: The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS is a partner project of Dronecode, with support for computer vision, navigation and UAV simulation environments. PX4 can integrate via two different APIs with ROS: Either natively each application as a ROS node or when running exclusively on the embedded autopilot via MAVLink mavros (MAVLink to ROS gateway with UDP proxy for Ground Control Station). APM/ArduPilot can integrate with ROS via MAVLink mavros (MAVLink to ROS gateway with UDP proxy for Ground Control Station).
DroneKit SDK: Expands on DroneAPI to offer a toolkit to develop customized applications for cloud, mobile and pc based interaction with UAVs.
DroneAPI: DroneAPI is the basis for Dronekit-Python maintained by 3D Robotics. The python language bindings and mavproxy module for the drone API.
MAVLink: As the diagram below shows, integrating MAVLink is non-intrusive. MAVLink does not need to become a central part of the onboard architecture. The provided missionlib handles parameter and mission / waypoint transmission, the autopilot only needs to read off the values from the appropriate data structures. MAVLink has a very stable message format, one of the primary reasons so many GCS and autopilots support it.
- Very low data overhead - suitable for high frequency distributed control loops.
- Democratic network - no single point of failure.
- Supports network-wide time synchronization with microsecond precision.
- Allows to efficiently exchange long datagrams.
- Publish/subscribe or request/response exchange semantics.
- Doubly-redundant or triply-redundant CAN bus support.
- Lightweight, easy to implement protocol.
- Can be used in deeply embedded systems (the reference implementation runs on a 32K ROM, 8K RAM MCU).
The specification and the reference implementation are open and free to use (MIT License).