This is just an early brainstorm, nothing at all official!

ROS Platform Functionality Tiers

The concept is to define in a little more resolution what it means for a platform to "support ROS". There's a huge spectrum in those platforms listed on the Robots page; the purpose of this document (to become an REP if there is sufficient interest) would be to provide greater clarity of expectations between vendors/maintainers and users as far as what level of ROS functionality a particular platform provides.

For maintainers, it helps identify gaps, provides a roadmap of what the "next step" is for their platform software. In representation to users, descriptions could be used such as "Tier 2 compliance", "Partial Tier 3 compliance", "Expected full Tier 3 compliance for Indigo".

There would be no certification body or process.

These guidelines are about functionality and are orthogonal to code quality. For that, please see Industrial/Software_Status.

Tier 1: Connectivity

The bare minimum to talk to a platform with ROS; will require setup effort and additional configuration to use standard ROS capabilities. Software may be out of date and require porting or adaptation.

  • Package provides basic connectivity nodes for all standard hardware
  • Interface provided to conventional control topics and common messages
    • /cmd_vel (geometry_msgs/Twist) for differential and holonomic platforms

    • /cmd_drive (ackermann_msgs/AckermannDriveStamped) for ackermann platforms (including USVs with rudders)

    • No guidance (at this time) for airplanes, UUVs
    • Industrial manipulators (ROS-Industrial)
      • Must adhere to ROS-I spec

    • Other relevant REPs?
  • Installation and Getting Started instructions on ROS wiki

Tier 2: Applications

At this level, basic capabilities work out of the box, once the platform setup is complete. Platform-specific messages and topics are expected to be stable and consistent with ROS wiki documentation.

  • Robot model (URDF)
  • Platform launchers for common apps (navigation, gmapping)
  • Packages are documented for current or current-1 ROS release
  • robot_robot metapackage encompasses all software for the base platform

Tier 3: User Experience

This level mandates certain standard package names and launch files, as well as file system organization details and ability for a user to restore their platform's computer with minimal hassle.

Packages

  • robot_desktop metapackage provides an easy starting point for interfacing with an already setup robot.

  • robot_viz package provides launchers for rviz, including a generic view_robot.launch

  • Robot monitor support (diagnostics, diagnostic_aggregator)

Infrastructure

  • All robot software released and packaged, available from packages.ros.org or alternate public apt repo.
  • Robot ships with software and background startup service pre-installed.
    • From packages.ros.org packages, to /opt/ros/distro, or

    • From vendor's packages or source, to /opt/vendor/ros/distro

  • System and robot software may be upgraded at user's discretion use apt-get upgrade, fedup, or similar tool.

  • Method/scripts/installer/image provided to rebuild robot PC from scratch (ie, in the event of hardware failure or user error)

Tier 4: Simulation

  • robot_simulator package available, provides launchers to run robot's apps in simulated environments.

Future?

  • Prescribe capabilities support rather than per-app packages/launchers.

  • Prescribe something rqt (dashboard, perspective?)
  • Prescribe concert/multimaster capability
  • For manipulation platforms, prescribe MoveIt capability

  • Prescribe more standard platform packages (robot_msgs, robot_bringup), and more standard launch files.

  • Future proof structure to support multiple products (see ROS-Industrial package layout)

Wiki: MikePurvis/RobotSupportTiers (last edited 2014-03-31 00:29:34 by ShaunEdwards)