-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Features needed to implement - umbrella issue #498
Comments
I would like to contribute. |
Thanks for your response @suab321321 which angle do you want to know more, e.g. workload, difficulty level or coding rule? I can write a summary or BKM to facilitate other people who are also interested in this project. Thus, we can move forward smoothly! |
I posted a topic on ROS discourse to let more people know it. |
I would like to know workload.. |
I would like to contribute to #492 first.. |
@suab321321 I've marked it for each feature, it's just kind of rough evaluation, not exact. Also, I added some suggestions, please check it before starting your work as it may save your time. Again, you are welcome. Now please go ahead! |
okay.. Thank you |
Actually, there is no specific requirement or design doc to describe the feature, all implementations should base on the rcl. As for the rclnodejs, you can reference the rclpy client (It's a good way to get started). You may notice that the parameter feature contains several issues, I created these by ros2/rclpy#202, so I think you can find the implementation then. |
Okay..I will start now |
Have you executed |
Yes I have done that... |
Is this issue common or is it just me? |
It's not common, please double check with |
Nope..Its not happening |
Hello, could you elaborate on the steps that need to be done to wrap rcl with Node.js? What are some resources for users who would like to help contribute to one of these features. I would like to help with Actions support #469 but I am not sure where to start. I found this article on Nodejs addons. Maybe you could give an example of a rcl feature (such as publisher/subscriber) and show how the rcl feature is wrapped by the C++ addon (here?) and then where the C++ addon is implemented in the Node.js library (here?) Such that one could extrapolate the process to the requested features listed above. I am a primarily a python developer and I have enough JS experience to build GUI’s (React) for my ROS projects (using ROS2-web-bridge). However, my experience with Node.js by itself is limited (never heard of C++ addons until now). Will I be getting myself in over my head with this? |
hi @mikelyndersOKCC, good question. Last week I started work on implementing parameter support for rclnodejs. My C coding skills are pretty rusty and basic at best - but why let that stop me :) It took me a couple of hours of exploring code and docs to develop a mental model and impl a hello-world example. From there, I systematically evolved my node-c++ rcl binding.
General resources (I took bits and pieces from these and others)
best wishes. |
Hi @mikelyndersOKCC thanks for your question, I think @wayneparrott has given some general steps to touch on the development of Node.js addon. I'd like to share some of my ideas
If you have any problems, please feel free to ask on Github. Thanks! P.S. the original issue RobotWebTools/ros2-web-bridge#130 |
@minggangw @wayneparrott Thank you both very much for your insight! I really appreciate the guidance. I will study the materials that have been linked here and hopefully I can do something with it! |
@minggangw @mikelyndersOKCC I would like to contribute to #421 .Is anyone working on this issue? |
@suab321321 I'm about 50% complete on a PR for #416. Hoping to submit it by EOW or some time next weekend. |
@wayneparrott is #414 free?Is this free? |
@suab321321 re: #414, it is part of #416. I've started working on #416 based on the rcl library. I've temporarily halted development in order to finish a PR for ros2cli to support pluggable build-types. My plan is to finish the ros2cli PR tomorrow and resume #416. But if you are interested in #416 I will be glad to yield it to you or anyone else that is ready to push it forward. While you asked about #414 my assessment is that it's design needs to account for #421 which will initialize the node's parameters from the commandline. |
@wayneparrott can you tell me which is most beginners friendly issue? |
Hi @suab321321 I suggest @wayneparrott is going to handle all param related features, so there will be no blockers or dependencies throughout the implementation (I have updated the assignees for these issues). Meanwhile, I check the existing issues and probably #492 is suitable for beginners (I have tagged it with Generally, the whole framework of
Steps and useful methods for ramping up, please see the comments (#498 (comment) and #498 (comment)) in this thread, thanks! |
@minggangw okay I will begin the work soon. |
@minggangw @wayneparrott I m finding it extremly difficult to understand |
Hi @suab321321 I recommend you learn from some examples of Node.js addon and try to understand the mechanism of binding C++ to JavaScript. #554 is a good demonstration.
rmw is the middleware layer of ROS2 and it's transparent to us. What we should concern is |
@minggangw I have some doubt in rcl_binding.cpp
|
@minggangw in above code in function |
In
Here we unwrap the C++ object from the parameter as you said, some detailed explanations please see https://nodejs.org/api/addons.html#addons_passing_wrapped_objects_around and https://github.com/nodejs/nan/blob/master/doc/object_wrappers.md |
@minggangw sir I think I m on verge solving of this issue :)
|
I can see that there is |
One more question.. |
executed() function is triggered by the sub-thread, so it doesn't need to run infinitely (as a loop).
the handle represents a "handle" of C resource, see Line 23 in e38e2a2
|
@minggangw I need to add some parameters like
or should I add one more parameter in method. |
@suab321321 do you have a specific requirement or an issue (please create a new one if there is none), I suggest we'd better discuss there as this is a general issue for features to be implemented, thanks! |
@minggangw no no,see when we add the feature of liveliness and deadline callback, then this should be declared while creating Publisher/Subscriber, for this thing I need to add one more paramter in the methods which is used for creating Publisher/Subsciber, so I m asking if need to embed this new parameter inside and one more thing :)
*** Should we to continue this to #492 thread.*** |
A useful feature to consider is the message_filter. The current ros2 implementation is found here https://github.com/ros2/message_filters. |
@wayneparrott It seems like message filters would be better implemented as a separate library, if possible, since it's not built into rclcpp. But that starts bringing up the question of how to distribute rclnodejs packages. Distributing on npm with rclnodejs as a peer-dep would probably be fine for now. |
I'd love to help out with this! it looks like most of the topics are already done (sorry for being late to the party). I'll poke around and see where I can help |
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! |
roslibjs has some support for getting information about a running ROS system via http://robotwebtools.org/jsdoc/roslibjs/current/Ros.html, like getting the list of active nodes, mesage information, etc. Should rclnodejs offer such functionality, and if yes, is it already implemented somewhere? If no, is there another JS library that offers such functionality for ROS 2? |
rclnodejs is not proper to implement this sort of APIs, instead, rosbridge acting as back-end of roslibjs should offer it, some reference
I haven't heard some JS library offers that. |
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!
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:
npm run lint
to verify it locally.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.If I miss some feature or features you want to add, please append them to this bullet.
The text was updated successfully, but these errors were encountered: