A ROS 2 client library for C providing convenience functions, an executor, lifecycle nodes, and parameter server support.
rclc is a ROS 2 client library for the C programming language that complements the ROS Client Support Library (rcl). It provides essential convenience functions for creating ROS 2 entities like publishers and subscriptions, and introduces key components missing in rcl, such as a deterministic executor and lifecycle node support. This enables efficient development of ROS 2 applications in C, particularly for embedded systems and real-time scenarios.
ROS 2 developers working in C, especially those targeting embedded systems, real-time applications, or any scenario requiring deterministic behavior and low-level control without the overhead of C++ abstractions.
Developers choose rclc because it offers a lightweight, C-native interface to ROS 2 that complements rcl without adding unnecessary abstraction layers, providing missing features like a deterministic executor and lifecycle nodes that are essential for real-time and embedded development.
ROS Client Library for the C language.
Provides an executor with capabilities for implementing deterministic timing behavior, a key advantage over rclcpp's executor for real-time applications, as highlighted in the README.
Complements rcl without adding new abstraction layers, keeping the code lightweight and close to the hardware, which is ideal for embedded systems with resource constraints.
Introduces rclc Lifecycle Node that bundles rcl Node with the ROS 2 lifecycle state machine, enabling state-controlled nodes in C for robust robotics systems.
Includes rclc_examples with practical demonstrations of key features like convenience functions and the executor, aiding in learning and reducing initial setup time.
The project disclaimer explicitly states it has not been developed or tested for specific use cases and is not suitable for safety-critical production environments, limiting its immediate applicability.
The executor is single-threaded, as noted in known issues, restricting concurrency and potentially hampering performance in complex applications requiring parallel node management.
Requires manual installation of packages like osrf_testing_tools_cpp and test_msgs, which might not be in default ROS 2 distributions, adding setup complexity and potential for errors.
Rust bindings for ROS 2
rclcpp (ROS Client Library for C++)
rclpy (ROS Client Library for Python)
Node.js version of ROS 2.0 client
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.