Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robot Operating System 2.0
  3. rclc

rclc

Apache-2.0C6.3.0

A ROS 2 client library for C providing convenience functions, an executor, lifecycle nodes, and parameter server support.

GitHubGitHub
149 stars56 forks0 contributors

What is rclc?

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.

Target Audience

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.

Value Proposition

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.

Overview

ROS Client Library for the C language.

Use Cases

Best For

  • Developing ROS 2 applications in C for embedded systems with resource constraints.
  • Implementing real-time ROS 2 nodes that require deterministic timing behavior.
  • Building lifecycle-managed nodes in C for state-controlled robotics systems.
  • Creating parameter servers in C with full ROS 2 parameters client compatibility.
  • Writing lightweight ROS 2 clients where avoiding C++ abstractions like rclcpp is beneficial.
  • Educational or prototyping scenarios where simple C examples of ROS 2 concepts are needed.

Not Ideal For

  • Safety-critical production systems requiring certified software, as the project explicitly states it is not ready for production use.
  • Applications needing multithreaded node execution, since the rclc executor is limited to single-threaded operation.
  • Teams heavily reliant on the C++ ROS 2 ecosystem with tools like rviz or rqt, as rclc's C interface may not integrate seamlessly with higher-level abstractions.
  • Rapid prototyping where Python's rclpy offers faster development cycles with dynamic typing and extensive libraries.

Pros & Cons

Pros

Deterministic Executor Features

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.

Minimal Abstraction Overhead

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.

Lifecycle Node Integration

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.

Comprehensive Example Package

Includes rclc_examples with practical demonstrations of key features like convenience functions and the executor, aiding in learning and reducing initial setup time.

Cons

Not Production-Ready

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.

Single-Threaded Executor Limitation

The executor is single-threaded, as noted in known issues, restricting concurrency and potentially hampering performance in complex applications requiring parallel node management.

Manual Dependency 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.

Frequently Asked Questions

Quick Stats

Stars149
Forks56
Contributors0
Open Issues24
Last commit2 months ago
CreatedSince 2015

Tags

#robotics#embedded-systems#ros2#client-library#c-language#real-time

Built With

g
gtest
c
cppcheck
u
uncrustify
c
colcon
C
CMake
C
C++
R
ROS 2

Included in

Robot Operating System 2.02.1k
Auto-fetched 1 day ago

Related Projects

ros2_rustros2_rust

Rust bindings for ROS 2

Stars1,471
Forks205
Last commit14 days ago
rclcpprclcpp

rclcpp (ROS Client Library for C++)

Stars757
Forks532
Last commit2 days ago
rclpyrclpy

rclpy (ROS Client Library for Python)

Stars451
Forks283
Last commit2 days ago
rclnodejsrclnodejs

Node.js version of ROS 2.0 client

Stars426
Forks84
Last commit6 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub