question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Features needed to implement - umbrella issue

See original GitHub issue

As 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:open
  • Created 4 years ago
  • Reactions:2
  • Comments:44 (14 by maintainers)

github_iconTop GitHub Comments

2reactions
suab321321commented, Jul 4, 2019

Okay…I will start now

1reaction
minggangwcommented, Mar 25, 2020

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:

  • #589 needs to develop with JS only I think.
  • #492 needs JS & C++ to expose the interfaces and bind the C++ functions (librcl)

Also, you can add/fix any features, thanks!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Cisco Umbrella Design Guide
Umbrella unifies secure web gateway, DNS security, cloud-delivered firewall, cloud access security broker functionality, and threat intelligence. Deep ...
Read more >
Prerequisites - Cisco Umbrella Documentation
To set up an Umbrella Virtual Appliance (VA), the following requirements must be met. Table of Contents Virtual Appliance RequirementsNetworking ...
Read more >
6 Problems with Cisco Umbrella (and Their Solutions)
To make sure Umbrella meets all of your needs, we recommend you make a list of what you want Umbrella to do within...
Read more >
What needs improvement with Cisco Umbrella? - PeerSpot
Deep packet inspection features should be implemented. This solution does not give us full, 360-degree protection. They should have a local data center ......
Read more >
Overview of Cisco Umbrella, Deployment Methods ... - YouTube
Overview of the cloud security service, Cisco Umbrella, it's Deployment Methods, Components & Packages00:00 Why Cisco Umbrella is ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found