Skip to content

Releases: RobotWebTools/rclnodejs

rclnodejs v1.5.1

11 Sep 08:34
Compare
Choose a tag to compare

These are changes for rclnodejs v1.5.0 (2025-09-11).

Feature added

  • Generate missing messages at runtime (#1257)

Documentation

  • Add mis-deleted docs (#1227)
  • Add tf2 electron demo (#1229)
  • Update the README for npmjs (#1233)
  • Add FEATURES.md file (#1235)
  • Add tutorial for lifecycle node (#1237)
  • Update actionlib.md file (#1239)
  • Provide parameter service tutorial (#1242)
  • Provide tutorial about basic concepts of ROS2 (#1243)
  • Add client/service example using nav_msgs/srv/GetMap (#1247)
  • Move the note to the right position (#1259)

CI

  • Separate actions for PR/PUSH (#1252)
  • Rename actions (#1253)
  • Pump setup-node & checkout (#1256)

Others

  • Re-enable benchmark (#1245)
  • Remove automated.py (#1249)

rclnodejs v1.5.0

18 Aug 04:50
Compare
Choose a tag to compare

These are changes for rclnodejs v1.5.0 (2025-08-18).

Feature added

  • Support getting logger name for subscription, publisher, service and client (#1224)
  • Add functions to run ros2 run/launch (#1222)

rclnodejs v1.4.2

31 Jul 06:25
Compare
Choose a tag to compare

Bug fix

  • Correct exmple errors (#1208)
  • Correct the parameter type of ActionServer constructor (#1210)

Documentation

  • Add a demo for actions using typescript (#1212)
  • Add a car demo for electron (#1215)
  • Add demo links to README of npm package (#1217)

rclnodejs v1.4.1

22 Jul 06:20
Compare
Choose a tag to compare

Bug fix

  • Fix example errors (#1205)
  • Correct the index.js to be required for example/ (#1203)
  • Fix test failure on rolling build (#1201)

Documentation

  • Add README for each example (#1199)
  • Add a client/service demo for typescript (#1195)
  • Add a subscriber/publisher demo for typescript (#1194)
  • Remove docs/ from develop branch (#1189)
  • Restructure current examples (#1188)

Others

  • Indicate the usage of generating messages from .idl files (#1185)
  • Pump commander (#1197)
  • Remove unnecessary files from npm package (#1191)

rclnodejs v1.4.0

07 Jul 04:50
Compare
Choose a tag to compare

Feature added

  • Support .idl files for ROS message/service/action (#1181) , like:

Input file JointState.idl:

#include "std_msgs/msg/Header.idl"

module sensor_msgs {
  module msg {
    struct JointState {
      std_msgs::msg::Header header;
      sequence<string> name;
      sequence<double> position;
      sequence<double> velocity;
      sequence<double> effort;
    };
  };
};

Output JointState.msg:

# JointState.msg
# Generated from IDL file

std_msgs/Header header
string[] name
float64[] position
float64[] velocity
float64[] effort

To generate messages from IDL files, use the generate-messages-idl npm script:

npm run generate-messages-idl

Documentation

Reorg the README structure (#1182)

rclnodejs v1.3.0

01 Jul 01:46
Compare
Choose a tag to compare

Feature added

  • Support get_type_description service via parameter (#1162)
  • Support setting domain id for Context (#1164)
  • Support creating node with ros args (#1166)
  • Support to log the state machine data (#1168)
  • Add RMW serialize and deserialize functions (#1173)
  • Support to resolve topic/service (#1175)
  • Validate and remap the topic name for publishers/subscriptions (#1177)

Bug fix

  • Fix test-type-description-service.js flakiness (#1169)
  • Fix flakiness of test-message-type.js (#1171)
  • Ensure binding method returns with undefined when error happens (#1179)

rclnodejs v1.2.0

09 Jun 05:26
Compare
Choose a tag to compare

Feature added

  • Support to get the RMW implementation identifier (#1148)
  • Implement event handler (#1159)

Others

  • Include all LTS ROS2 on develop branch (#1151)
  • Fix test-type-description-service.js flakiness (#1155)
  • Add Humble into arm workflow (#1157)

rclnodejs v1.1.0

23 May 08:19
Compare
Choose a tag to compare

This is the first version starting to support ROS2 Kilted 🎉

Feature added

  • Support type description service (#1146)
  • Add missing methods for node (#1140)
  • Support waitForAllAcked() for publisher (#1138)
  • Support getting the lifecycle state machine status (#1136)
  • [Kilted] Support to configure introspection for action client/server (#1128)
  • Add support for Kilted (#1125)
  • Add GetNumEntities() for action client (#1123)

Bug fixed

  • Fix the type error of client example (#1144)

Other

  • Support arm64 arch for ROS2 Rolling (#1130)
  • Reorg the actions badge (#1133)
  • Only run workflow on develop branch for arm64 arch (#1132)
  • Add nodejs 24 for actions (#1126)

rclnodejs v1.0.0

06 May 05:27
Compare
Choose a tag to compare

🎉Celebrating 1.0.0 Release🎉

As rclnodejs reaches this significant milestone of version 1.0.0, it's worth reflecting on the journey from its inception to becoming a robust, production-ready ROS 2 client library for JavaScript and TypeScript.

Project Evolution

rclnodejs began as an experimental bridge between the Robot Operating System (ROS 2) and the Node.js ecosystem in year of 2017, with the vision of bringing robotics capabilities to the vast JavaScript developer community. What started as a proof of concept has matured into a feature-complete, high-performance client library that stands alongside the official ROS 2 client libraries.

Core Achievements

Communication Patterns

  • Complete Implementation: Fully implemented all ROS 2 communication patterns including publishers/subscribers, services/clients, actions, and parameters
  • N-API Integration: Moved from NAN to N-API for better stability, performance, and compatibility with newer Node.js versions
  • Quality of Service: Comprehensive support for ROS 2 QoS configurations and content filtering

Language and Platform Support

  • TypeScript Integration: Added comprehensive TypeScript type definitions for enhanced development experience
  • Cross-Platform: Robust support for Linux and Windows environments
  • ROS 2 Distro Compatibility: Maintained compatibility with multiple ROS 2 releases, including Humble Hawksbill and Jazzy Jalisco

Advanced Features

  • Lifecycle Nodes: Full implementation of the ROS 2 managed node lifecycle
  • Parameter System: Complete parameter management with parameter events and callbacks
  • Time API: Flexible time abstractions including simulated time support
  • Graph Introspection: Comprehensive API for examining the ROS graph, including node counts, publishers, and subscribers

Developer Experience

  • Message Generation: Automated generation of JavaScript and TypeScript interfaces from ROS 2 IDL files
  • CLI Tools: Created rclnodejs-cli for project scaffolding and message generation
  • Extensive Documentation: Comprehensive API documentation with examples
  • Electron Support: Integration with Electron for desktop GUI applications

Technical Excellence

Throughout development, emphasis has been placed on:

  • Performance: Native bindings optimization for minimum overhead
  • Memory Management: Careful handling of resources to prevent leaks in long-running applications
  • Safety: Comprehensive error handling and validation
  • Testing: Extensive test suite ensuring reliability across supported platforms

Community and Growth

The project has fostered an active community of contributors and users, evidenced by:

  • Increasing Adoption: Growing download statistics on npm
  • Contributor Base: Diverse community of contributors bringing varied expertise
  • Integration Ecosystem: Adoption in various robotics projects connecting JavaScript applications with ROS 2

Looking Forward

After 78 releases in the past 8 years, version 1.0.0 represents a stable foundation for production use. Future development will focus on:

  1. Supporting new ROS 2 releases and features
  2. Further performance optimizations
  3. Enhanced tooling for developer experience
  4. Expanding integration with web technologies

This release marks rclnodejs as a mature client library, ready to support real-world robotics applications leveraging the power of JavaScript and TypeScript with ROS 2.

rclnodejs v0.33.0

08 Apr 10:35
Compare
Choose a tag to compare

Features

  • feat: add descriptor namespaces #1095
  • Support rcl_get_client_names_and_types_by_node #1097