Features needed to implement - umbrella issue
See original GitHub issueAs ROS 2 iterates rapidly, actually, there are two stable releases per year and a series of patch releases. I want to emphasize the target of this Node.js client is that it has the comparative feature set as the python client - rclpy.
But there is still a gap with rclpy, and we want to eliminate it finally. Due to limited resource, I’d like to invite any volunteer to contribute to this project, so the developers can have an additional choice besides C++ and Python languages. I believe that the requirement of web technology in ROS 2 ecosystem is strong, and JavaScript/Node.js enable more developers to work on ROS project quickly because of the low threshold.
I have tried my best to maintain rclnodejs module can work on the latest ROS 2 stable release, e.g. Dashing Diademata, as soon as possible. I hope there are more contributors to implement the absent features and I will offer any help to move this project forward. Your contributions are welcome!
I list the features needed to implement below, so we can record the status. If anyone wants to handle it, please just assign it to yourself to indicate the feature is being implemented. Thanks!
- QoS - API and implementation for Liveliness and Deadline event callbacks #492 (Medial)
- Actions support in rclnodejs #469 (High)
- Support for parameters #416 (Medial)
- Parameters can be passed through CLI #421 (Low)
- Publish parameter events #415 (Medial)
- Implement node parameters and parameter services #414 (Medial)
- Add guard condition feature #315 (Medial)
- Expose rcl_get_node_names #555
- Add countPublishers and countSubscribers to Node #559
- Support spin once #562
- Rate support #564
- LifecycleNode support in rclnodejs #589
- Add getLogger to Node object #591
- Add getClock to Node object #592
- Access current time from Node #598
- Recognize the use_sim_time parameter #599
- Support to publish/subscribe serialized messages #646
- Enable rclnodejs to fully support rcl contexts #668
P.S. I add an indicator (Low/Medial/High) to represent the combination of workload and difficulty of each issue. You can reference it to decide which feature will be suitable for you to handle.
Some suggestions in my mind:
- Please follow the Google C++ coding style to write your code, you can run
npm run lint
to verify it locally. - For JavaScript code, ES6 is preferred. Also, checked by eslint.
- The current code on
develop
branch is based on the nightly build of ROS 2, and we will create tags for each stable release of ROS 2 when it’s published. - The features above have counterparts in rclpy, so you can reference the C code there to wrap your JS.
- Please add proper comments to illustrate your code if necessary, you can reference the existing ones (Currently the API doc is generated from them by jsdoc).
- Please offer unit tests if features are added/changed, as we want to be TDD.
- All PRs will be verified on CIs first, and the review work will start after all CIs pass.
- Please read README to setup your own ROS2 env on your PC.
- If you are the FIRST time to submit your code, please add yourself as a contributor.
- If you meet any problems, please ping me and I will response ASAP. Also, I’d like to help part of the code (I cannot fully focus on it now, sorry).
- Once your PR gets LGTM, I will merge it and you can get your credit 😃
If I miss some feature or features you want to add, please append them to this bullet.
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:44 (14 by maintainers)
Top GitHub Comments
Okay…I will start now
Hi @flynneva welcome, the checklist in c#1 shows some main features which are not implemented yet, but I think there should be some others not found. If you have experience with rclpy, it’s easy to discover the missing functions or you could enhance some existing ones. Some insights:
Also, you can add/fix any features, thanks!