A Node.js and TypeScript client library for ROS 2, enabling JavaScript development of robotics applications.
rclnodejs is the Node.js client library for ROS 2 (Robot Operating System 2). It provides JavaScript and TypeScript APIs to create ROS 2 nodes, enabling developers to build robotics applications, interact with sensors and actuators, and visualize data using the Node.js runtime. It solves the problem of integrating ROS 2 with the modern JavaScript ecosystem for web-based and desktop robotics solutions.
JavaScript/TypeScript developers and robotics engineers who want to build or interface with ROS 2 systems using Node.js, especially those creating visualization tools, web interfaces, or desktop applications for robots.
Developers choose rclnodejs because it is the official and most comprehensive Node.js binding for ROS 2, offering full API support, TypeScript integration, and the ability to leverage the entire npm ecosystem for robotics development, unlike lower-level C++ or Python alternatives.
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.
Implements all core ROS 2 features including publishers, subscribers, services, actions, and parameters, enabling complete node development as stated in the Key Features.
Includes built-in TypeScript declaration files for enhanced type safety and developer experience, with examples provided in the TypeScript section.
Supports Observable subscriptions for declarative message processing using RxJS operators like throttleTime and map, as shown in the Observable Subscriptions tutorial.
Enables building cross-platform visualization apps with demos like turtle_tf2 and manipulator, leveraging web technologies for rich interfaces.
Benchmarks show rclnodejs is significantly slower than rclcpp (C++) for topic and service communication, making it unsuitable for high-throughput or low-latency applications.
Prebuilt binaries are only available for specific Linux distributions and architectures, forcing source compilation on other setups, which can be complex and error-prone.
Requires sourcing ROS 2 setup scripts before use, adding an extra step in development and deployment workflows that can complicate automation.