====== Messaging WG ====== ===== Overview ===== Evaluate middleware solutions for communication between GCS, drone, cloud, and between processes running on the vehicle. Select the best solution and evaluate ROS compatibility. Some requirements include: * Robust, SW messaging solution for commercial deployments of PX4 * Needs to scale to optimally support remote connections over an unreliable link, to onboard interprocess communication, and in-process communication. * On-board heterogeneous compute (i.e. between different types of SoC core running parts of the flight stack) to be handled by a communication bridge. * Extensible serialization format **Weekly Messaging WG Meetings:** Google Hangout, Thurs mornings PT. ===== Current Status ===== The majority of the work to date has been done by eProsima on creating a bridge between uORB and RTPS. There are repositories on Github and videos on YouTube of the progress to date: * https://github.com/eProsima/Fast-RTPS * https://github.com/ros2/rmw_fastrtps * https://github.com/eProsima/Fast-CDR * https://github.com/eProsima/PX4-FastRTPS-PoC * https://www.youtube.com/watch?v=NF65EPD-6aY&feature=youtu.be Intel is actively working on support FastRTPS on Aero: * https://github.com/edersondisouza/Firmware/commits/test-rtps-share ===== Open Issues ===== There are a few open issues to resolve: * Whether to support ROS via full ROS2 support and existing ROS2 to ROS bridge or create a MAVROS impelmentation that works with RTPS * PX4 Integration plan * The details of the PX4 integration plan need to be flushed out * Snapdragon FastRPC support, OMG IDL and DDS RPC * Investigate the best architecture for integration of FastRTPS with FastRPC * Serialization format * ROS2 uses ROS serialization format which is currently not extensible * 3DR had selected Cap n' Proto for serialization ===== Previous Analysis ===== 3DR analysis and discussion on Middleware: * https://lists.dronecode.org/pipermail/dronecode-tsc/2015-August/000107.html * https://gist.github.com/liamstask/1bf35b0cf5c73c787d45 * http://discuss.dronecode.org/t/messaging-systems/87 * http://discuss.dronecode.org/t/message-format-options/88 * http://diydrones.com/profiles/blogs/3d-robotics-selects-eprosima-fast-rtps-for-system-infrastructure 3DR analysis of serialization protocols: * https://docs.google.com/document/d/1HDOfb3cQ6WiYm9M02RjAgyXRRNhMlGJF1iaLBAVp-T8/edit OSRF Analysis of RTPS and why it was selected for ROS2: * http://design.ros2.org/articles/ros_with_zeromq.html * http://design.ros2.org/articles/ros_on_dds.html Links to other middleware comparisons: * https://www.slideshare.net/RealTimeInnovations/comparison-of-mqtt-and-dds-as-m2m-protocols-for-the-internet-of-things * http://www.eejournal.com/archives/articles/20150420-protocols/ * http://electronicdesign.com/iot/understanding-protocols-behind-internet-things * http://mnb.ociweb.com/mnb/MiddlewareNewsBrief-201004.html The benefits of RTPS over alternatives is: * Industry standard with several commercial and open source providers * Can handle unreliable links * Performance is good, and better performers have fewer needed features * Potential compatibility with ROS2 (depends on serialization used)