![]() |
rclnodejs repositorynodejs javascript client typescript robotics ros ros2 rcl rclcpp_benchmark custom_msg_test geometry_msgs |
Repository Summary
Description | Node.js version of ROS 2.0 client |
Checkout URI | https://github.com/robotwebtools/rclnodejs.git |
VCS Type | git |
VCS Version | develop |
Last Updated | 2025-09-25 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | nodejs javascript client typescript robotics ros ros2 rcl |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
rclcpp_benchmark | 0.0.1 |
custom_msg_test | 1.0.0 |
geometry_msgs | 0.1.0 |
README
rclnodejs - The ROS 2 Client Library for JavaScript
ROS Distro* | Status |
---|---|
Rolling Kilted Jazzy Humble |
|
Note: rclnodejs development and maintenance is limited to the ROS 2 LTS releases and the Rolling development branch
rclnodejs is a Node.js client library for ROS 2 that provides comprehensive JavaScript and TypeScript APIs for developing ROS 2 solutions.
const rclnodejs = require('rclnodejs');
rclnodejs.init().then(() => {
const node = new rclnodejs.Node('publisher_example_node');
const publisher = node.createPublisher('std_msgs/msg/String', 'topic');
publisher.publish(`Hello ROS 2 from rclnodejs`);
node.spin();
});
Documentation
- Installation
- rclnodejs-cli
- API Documentation
- Tutorials
- Electron-based Visualization
- Using TypeScript
- ROS2 Interface Message Generation
- Performance Benchmarks
- Efficient Usage Tips
- FAQ and Known Issues
- Building from Scratch
- Contributing
Installation
Prerequisites
- Node.js version >= 16.13.0
- ROS 2 SDK - Don’t forget to source the setup file
Install rclnodejs
npm i rclnodejs
Note: To install rclnodejs from GitHub: add
"rclnodejs":"RobotWebTools/rclnodejs#<branch>"
to yourpackage.json
dependency section.
Docker: For containerized development, see the included Dockerfile for building and testing with different ROS distributions and Node.js versions.
See the features and try the examples to get started.
rclnodejs-cli
rclnodejs-cli is a companion project we recently launched to provide a commandline interface to a set of developer tools for working with this rclnodejs
. You may find rclnodejs-cli
particularly useful if you plan to create ROS 2 node(s) and launch files for working with multiple node orchestrations.
Usage: rclnodejs [command] [options]
Options:
-h, --help display help for command
Commands:
create-package [options] <package-name> Create a ROS2 package for Nodejs development.
generate-ros-messages Generate JavaScript code from ROS2 IDL interfaces
help [command] display help for command
API Documentation
API documentation is available online or generate locally with npm run docs
.
Electron-based Visualization
Create rich, interactive desktop applications using Electron and web technologies like Three.js. Build 3D visualizations, monitoring dashboards, and control interfaces that run on Windows, macOS, and Linux.
Demo | Description | Screenshot |
---|---|---|
🐢 turtle_tf2 | Real-time coordinate frame visualization with turtle control. Features TF2 transforms, keyboard control, and dynamic frame updates. | ![]() |
🦾 manipulator | Interactive two-joint robotic arm simulation. Features 3D joint visualization, manual/automatic control, and visual movement markers. | ![]() |
Explore more examples in electron_demo.
Using rclnodejs with TypeScript
TypeScript declaration files are included in the types/
folder. Configure your tsconfig.json
:
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"target": "es2020",
},
}
File truncated at 100 lines see the full file