RobotWebTools/rclnodejs

ROS 2 client library for Node.js, with browser integration

What it solves

It provides a way to develop ROS 2 (Robot Operating System) applications using JavaScript and TypeScript, allowing developers to leverage the Node.js ecosystem for robotics software. It bridges the gap between the high-performance requirements of robotics and the flexibility of web-based languages.

How it works

rclnodejs acts as a client library for ROS 2, providing APIs for core ROS 2 concepts like Topics, Services, Actions, and Parameters. It automatically generates JavaScript bindings and TypeScript declarations for ROS 2 interfaces (.msg, .srv, .action) found in the environment. It also includes tools to expose ROS 2 capabilities to the browser via a typed Web SDK (rclnodejs/web) or a thin WebSocket gateway (rosocket).

Who it’s for

Robotics developers who prefer JavaScript/TypeScript over C++ or Python, and the creators of robot control interfaces, web-based dashboards, and desktop apps (using Electron) for robot management.

Highlights

  • Comprehensive ROS 2 Support: Full API for Topics, Services, Actions, Parameters, and Lifecycle Nodes.
  • Web Integration: Built-in support for browser-based control via a typed SDK or a lightweight WebSocket gateway.
  • TypeScript First: Strong typing for ROS 2 interfaces to reduce runtime errors.
  • Reactive Programming: Integration with RxJS Observables for declarative message processing pipelines.
  • Electron Support: Ability to build cross-platform desktop visualization tools using Electron and Three.js.
  • High Performance: Benchmarks show it is faster than rclpy and competitive with rclcpp.

Related

  • Project
  • Project
  • Project
  • Project
  • Project