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 withcolcon 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 togenerate_parameter_library.nodl_generator_py— Python code generation from NoDL documents: generates anrclpybase class at build time.nodl_observe— observe a running node and produce its runtime description as arosgraph_msgs/Nodemessage; the library behindros2 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 itsdoc/tree at build time (see nodl/doc/package_docs.py); the same sources build standalone underrosdoc2for docs.ros.org.
Source¶
Repository: https://github.com/ros-tooling/nodl