Skip to content

How ROS 2’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score30/100

Agent-ready 38.6 × 0.30 = 11.58

API quality 4.3 × 0.20 = 0.86

Openness 56.8 × 0.20 = 11.36

Built-in AI 18.0 × 0.15 = 2.70

Automation 21.6 × 0.15 = 3.24

(11.58 + 0.86 + 11.36 + 2.70 + 3.24) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 29.74 ÷ 1.00 = 29.7

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready38.6/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Run the product headlessly / in CI for automationweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rstROS-Base Install (Bare Bones): Communication libraries, message packages, command line tools. No GUI tools.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstThe main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstbag: Record/play a rosbag
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.

Plug MCP servers into this product so it can use their toolsweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Connect an agent via an official MCP serverweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstCommand-line introspection tools using an extensible framework
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstThe main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstros2 topic pub /chatter std_msgs/msg/String "data: Hello world"
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstbag: Record/play a rosbag
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"

Drive the product through a documented public APIweight 3

3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rstClient libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rstTopics: For continuous data streams. Services: For synchronous request/response interactions. Actions: For long-running tasks with feedback
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstIt also provides a Python API for reading from and writing to a bag from your own source code.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstSet/retrieve parameters
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstThe main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.
  • [community] https://hn.algolia.com/api/v1/items/47296255I've been a ROS 1 (and now 2) user since 2010... ROS gives you some important things 'for free' if you cooperate with its ecosystem conventions. Data bagging, visualization, teleop, and sim are the some obvious ones.
  • [community] https://news.ycombinator.com/item?id=25389266I'm really struggling in learning ROS in a systematic way. The tutorials are all over the place and somehow unorganized IMO. When trying to replicate stuff on my machine, all kinds of weird errors pop up.

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rstROS 2 includes the ability to secure communications among nodes within the ROS 2 computational graph.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rstA security enclave encapsulates a single policy for protecting ROS communications.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rstThe `sros2` package provides the tools and instructions to use ROS 2 on top of DDS-Security.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstDDS-Security support
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rstBuilt-in ROS 2 security features enable control over communications throughout the ROS graph. This not only allows for encrypting data in transit between ROS domain participants, but also enables authentication of participants
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rstros2 security create_keystore demo_keystore

Build against official SDKsweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rstClient libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rstClient libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rstclient libraries expose to users the core functionality that makes ROS "ROS"
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rstyou might prefer to write visualization tools in Python because it makes prototyping iterations faster, while for parts of your system that are concerned with efficiency, the nodes might be better implemented in C++

Subscribe to events via webhooksweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 61.8 ÷ 160 × 100 = 38.6

API quality4.3/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 5 (quality) × 0.6 (partial) = 3.0 of 10 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rstLaunch a Simulation with Gazebo and ROS 2
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstIt also provides a Python API for reading from and writing to a bag from your own source code.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstThis allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstbag: Record/play a rosbag

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

API quality = 3.0 ÷ 70 × 100 = 4.3

Openness56.8/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstIt also provides a Python API for reading from and writing to a bag from your own source code.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstThis allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstCommand-line introspection tools using an extensible framework
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstThe main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rstros2 security create_keystore demo_keystore
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rstDesktop Install (Recommended): ROS, RViz, demos, tutorials.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.

Export all of my data in open formats and leaveweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstIt also provides a Python API for reading from and writing to a bag from your own source code.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rstThis allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstbag: Record/play a rosbag
  • [github] https://github.com/ros2/ros2The 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

Read the product's source under an open licenseweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [github] https://github.com/ros2/ros2The 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

Self-host the core productweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rstROS-Base Install (Bare Bones): Communication libraries, message packages, command line tools. No GUI tools.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rstDesktop Install (Recommended): ROS, RViz, demos, tutorials.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rstThe default middleware that ROS 2 uses is `Fast DDS`, but the middleware (RMW) can be replaced at runtime.
  • [github] https://github.com/ros2/ros2The 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
  • [community] https://hn.algolia.com/api/v1/items/47296255I've been a ROS 1 (and now 2) user since 2010... ROS gives you some important things 'for free' if you cooperate with its ecosystem conventions. Data bagging, visualization, teleop, and sim are the some obvious ones.
  • [community] https://hn.algolia.com/api/v1/items/36045938I still remember the time before ROS, 20 years ago, when each robotics team had to designate a sub-team just for building and maintaining the middleware. That was a waste of time and effort... ROS might not be perfect but it's so much better than anything else that exists.

Openness = 56.8 ÷ 100 × 100 = 56.8

Built-in AI18.0/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstLaunch system for coordinating multiple nodes
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstSupport for nodes with managed lifecycles
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rstActions allow clients to send goals, receive feedback during the execution, cancel if needed, and return a result if availabl
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstMultiple executors (at level of callback groups) in same node

Delegate tasks to a built-in AI assistant inside the productweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Operate the product with natural-language commandsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Built-in AI = 7.2 ÷ 40 × 100 = 18.0

Automation21.6/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstLaunch system for coordinating multiple nodes
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstCommand-line introspection tools using an extensible framework
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rstThe main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstSet/retrieve parameters

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max

  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rstTopics: For continuous data streams. Services: For synchronous request/response interactions. Actions: For long-running tasks with feedback
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rstActions allow clients to send goals, receive feedback during the execution, cancel if needed, and return a result if availabl
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstSupport for nodes with managed lifecycles
  • [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rstLaunch system for coordinating multiple nodes

Schedule recurring jobs or workflowsweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Automation = 10.8 ÷ 50 × 100 = 21.6