Provides the ROS interface definition language (.msg/.srv/.action) and code generation tools for ROS 2.
rosidl is the interface definition language and code generation toolchain for ROS 2. It provides the infrastructure to define message, service, and action interfaces (in `.msg`, `.srv`, and `.action` files) and generates the corresponding language-specific code (e.g., for C and C++) to enable type-safe communication between nodes.
ROS 2 developers and system integrators who need to define custom message types, services, or actions for their robotic applications and require the underlying code generation for these interfaces.
It is the standardized, core package in ROS 2 for interface management, ensuring consistency, interoperability, and seamless integration with the ROS 2 build system and communication middleware.
Packages which provide the ROS IDL (.msg) definition and code generation.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parses .msg, .srv, and .action files into a common .idl format via rosidl_adapter, ensuring consistency and interoperability across all ROS 2 interface types.
Provides CMake functionality through rosidl_cmake to automatically invoke code generation during builds, integrating smoothly with the ROS 2 build system like colcon.
Generates type-safe C and C++ code from interface definitions using rosidl_generator_c and rosidl_generator_cpp, enabling efficient communication between nodes.
Offers runtime libraries for dynamic message introspection in C and C++ via rosidl_typesupport_introspection_c and rosidl_typesupport_introspection_cpp, allowing flexible message handling.
Tightly coupled with ROS 2 as a core package, making it unsuitable for projects outside this framework and limiting its use in general-purpose applications.
Primarily generates code for C and C++ in the core packages, requiring additional tools like rosidl_generator_py for other languages, which may not be covered in the standard installation.
The README is sparse and redirects to external documentation, hindering quick onboarding without prior deep knowledge of ROS 2's internal interfaces.
Requires code generation during the build process, which can increase compilation time and complexity compared to systems with static or runtime-only interface definitions.