NoDL

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).

Note

Status: v2 is out! The schema and APIs are reasonably stable, and we believe NoDL is ready for early adoption.

Documentation

Packages

NoDL is a language for defining ROS nodes, but the NoDL Project comprises a variety of packages built for different features around using NoDL documents. Documentation for these packages is available:

nodl: the entrypoint metapackage that collects together the common NoDL packages, and provides this core documentation.

  • ament_nodl — CMake integration for registering NoDL documents and checking live-node conformance with colcon test.

  • nodl_common_interfaces — language-independent NoDL descriptions for the standard ROS 2 node and lifecycle-node base types, with C++ and Python code-generation metadata.

  • nodl_docgen — Tools to generate documentation from NoDL documents.

  • nodl_generator_common — Language-agnostic code generator logic shared by NoDL generators.

  • nodl_generator_cpp — C++ code generation from NoDL documents: generates an abstract base class with all endpoint wiring, delegating parameters to generate_parameter_library.

  • nodl_generator_py — Python code generation from NoDL documents: generates an rclpy base class at build time.

  • nodl_observe — observe a running node and produce its runtime description as a rosgraph_msgs/Node message; the library behind ros2 nodl describe.

  • nodl_schema — the NoDL Schema. Provides a Python-based document validator and typed object data model for working with schema objects.

  • ros2nodl — ros2 nodl <verb> ros2cli extension providing NoDL operations. See the Describe guide. Each package’s own documentation is staged into this site from its doc/ tree at build time (see nodl/doc/package_docs.py); the same sources build standalone under rosdoc2 for docs.ros.org.

Source

Repository: https://github.com/ros-tooling/nodl