Describe¶
ros2 nodl describe turns a running or captured ROS 2 node into a NoDL draft.
It is the interpretation half of the backward workflow:
Observe records everything; describe interprets it.
The nodl_observe backend captures rosgraph_msgs/Node. describe removes
runtime infrastructure, maps observed values into the NoDL schema, and validates
the result. The transform itself is deterministic and does not access the ROS
graph; file input still requires a sourced ROS environment to deserialize the
message.
Usage¶
ros2 nodl describe NODE_NAME [--from FILE] [--no-params]
[--include-ros-infra] [--fail-on-warnings]
[--timeout SEC] [-o OUT.{yaml,json}]
Option |
Effect |
|---|---|
|
Read a captured |
|
Omit parameters and skip live parameter service calls. |
|
Include ROS-created endpoints and parameters. |
|
Return nonzero if any field cannot be recovered. |
|
Set the live discovery timeout. |
|
Write YAML or JSON based on the filename extension. |
ros2 nodl describe /ns/talker
ros2 nodl describe /ns/talker --from talker.mcap -o talker.json
Mapping¶
The transform maps fields from rosgraph_msgs/Node into a NoDL document as
follows. Every output has nodl_version: 2; empty interface collections are
omitted.
Topics¶
|
NoDL YAML output |
Rule |
|---|---|---|
|
|
Copied. |
|
|
Copied without the type hash. |
|
|
Policies become NoDL enum names; finite durations become nanoseconds. |
|
|
Uses the same topic mapping as publishers. |
Services¶
|
NoDL YAML output |
Rule |
|---|---|---|
|
|
Copied. |
|
|
Used as the complete service type. |
|
|
Uses the same service mapping as servers. |
Actions¶
|
NoDL YAML output |
Rule |
|---|---|---|
|
|
Copied. |
|
|
Removes the generated |
|
|
Uses the same action mapping as servers. |
Parameters¶
|
NoDL YAML output |
Rule |
|---|---|---|
|
|
Becomes the key in the parameter mapping. |
|
|
Converted to the corresponding NoDL parameter type. |
|
|
Included when its type agrees with the descriptor, including |
|
|
Copied. |
|
|
Copied. |
|
|
Copied. |
|
|
Lower and upper bounds are copied. |
QoS mapping¶
RMW QoS integers become NoDL enum names:
Policy |
When observation reports |
|---|---|
|
|
|
omitted |
depth is emitted only for KEEP_LAST. Finite durations become nanoseconds;
zero and the observation backend’s infinite sentinel are omitted.
Intentionally omitted fields¶
|
Reason omitted |
|---|---|
|
A NoDL document does not declare its own node name. |
Endpoint |
A NoDL endpoint type is represented by its name. |
Service response type and QoS |
A NoDL service endpoint stores the service type, not its generated request/response details. |
Action constituent services and topics |
They are collapsed into one NoDL action endpoint. |
Parameter |
It is not represented by the current NoDL parameter model. |
Infrastructure filtering¶
By default, describe removes framework-created interfaces:
/rosoutand/parameter_eventsparameter and type-description services
use_sim_time,start_type_description_service, andqos_overrides.*
Endpoint filtering matches both name tail and type, so a user endpoint with the
same name but a different type remains. Use --include-ros-infra to disable
filtering.
See NoDL Concepts for the backward workflow and NoDL Schema reference for the document format.