Releases: RobotWebTools/rclnodejs
rclnodejs v1.5.1
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
Others
rclnodejs v1.5.0
rclnodejs v1.4.2
rclnodejs v1.4.1
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
rclnodejs v1.4.0
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
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
rclnodejs v1.2.0
rclnodejs v1.1.0
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
rclnodejs v1.0.0
🎉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:
- Supporting new ROS 2 releases and features
- Further performance optimizations
- Enhanced tooling for developer experience
- 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.