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.
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)
- 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.
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)