ROS2 bindings
Why do we need this improvement?
We need this improvement to seamlessly integrate ROS2, a widely-used framework in robotics, with AsyncAPI. This integration will enhance the capabilities of ROS2 by providing a standardized way to document and communicate its event-driven architecture. By including ROS2 bindings, we can ensure that ROS2 developers can leverage AsyncAPI's benefits for better interoperability, documentation, and tooling.
How will this change help?
This change will help by providing a standardized approach to describing ROS2 communication interfaces, enabling better tooling support, improved collaboration, and more efficient development processes. It will facilitate the generation of documentation, code, and other artifacts, thus reducing the manual effort required and minimizing the risk of errors.
Screenshots
No response
How could it be implemented/designed?
We will implement the ROS2 bindings similarly to other existing bindings in AsyncAPI. This involves:
- Defining the ROS2-specific protocol and message type bindings.
- Creating documentation and examples to guide users in applying these bindings.
🚧 Breaking changes
No
👀 Have you checked for similar open issues?
- [X] I checked and didn't find a similar issue
🏢 Have you read the Contributing Guidelines?
- [X] I have read the Contributing Guidelines
Are you willing to work on this issue?
Yes I am willing to submit a PR!
Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.
Hi, is there any news on this issue? :) If I understand correctly, I still need to wait for a branch to be created to submit my code
Hi @derberg or @fmvilas , could you help with this issue?
@renzo-sie hey, sorry for the delay. Can you provide some example AsyncAPI document with these new binding included, with comments what these binding properties are for, so it is easier to understand what you need. It will also clear out where these bindings be located, in what AsyncAPI objects, like channel or others.
Are you aware that in case of bindings, it is not enough to contribute binding, you also have to become a maintainer of it?
Hi @derberg , thanks for the response! Yes, I will you attached the ROS 2 bindings README that explains what does each property do. Let me know if you have any questions. README.md
You can set @gramss (https://github.com/gramss) as the main mantainer for this binding, and me as the second contact.
Would be nice to show this binding in the next ROS event in germany next week :) (https://roscon2024.de/)
Hi @derberg,
Here is the new version of the ROS 2 bindings: README (1).md
Did you had a chance to review the document ? :)
Apologies for the delay folks. I'm getting into it with @gramss now. Let's push it forward!
@fmvilas , sorry for the late reponse and thank for the support! I was checking with our legal team to check our open-source contribution before moving forward, but now our main contact is on sick leave. I will back to you when everything is cleared from our side :).
No problem. Let me know if I can help convincing them, in case it's needed.
Happy to assist (and maintain) this effort as well. @renzo-sie is this realistically going to make progress in the next few weeks? Otherwise I'm happy to submit a PR. This has seemingly been in limbo for a while now.
There's a similar initiative in the ROS 2 world that lost steam a few years back but would be useful as a reference: https://github.com/ubuntu-robotics/nodl I'm considering just rallying around that effort instead.
One thing I believe is missing from @renzo-sie 's proposal document is support for ROS 2 parameters, which is a core part of ROS 2. Nodes are able to set parameters on different nodes and are essential for a node's documentation.
hi @Achllle , yes, this is this should be submitted the next weeks. Our legal represant was long sick for almost 2 months... just got back this week.
But when I submit the PR feel free to review it. Maybe you have some ideas hoe to do it better.
There is also a README attachment here that you could check how we are planing to do it :)
Hi @derberg,
Here is the new version of the ROS 2 bindings: README (1).md
Did you had a chance to review the document ? :)
And yes, it is true, that we do not consider parameters yet.
Nice work @renzo-sie ! I took a look through your README. Overall, it looks great. A few suggestions
- Can you make QOS
lifespan,deadline, andleaseDurationa double so we can do <1s time resolution. This is handy for high-rate data. comms. These use a rclcpp::Time object under the hood which has nanosecond resolution. - liveliness
- How are you planning to handle constants in message files?
- Should we add a ROS_DISTRO attribute to the API to show which ROS version you need to use? This would imply which version of DDS or zenoh
@Ryanf55, thanks for the suggestions. I would suggest that I finish the PR for the first version I sent over and then we can tackle your comments in another issue/PR that is not triggered by us, since the Siemens process is too slow. Changing things now would take a long time again.
I'm hoping we can get approval to submit our current PR next week.
@renzo-sie is there a PR already? or you meant you're still working on it? Just want to make sure I don't miss it.
@fmvilas , I meant before an approval by our company Siemens to submit the PR. I have everything ready, but still need the permission for open sourcing. I will let you know when the PR is submitted . Sorry for the confusion.
Hi there,
@Achllle, yes. we are very committed and just got the final approval. PR #270 has been submitted now.
Also, you can check out the slides I have presented in our ROSCon DE talk. By that you can see, why we as Siemens are motivated and where we want to go. The talk was presented in English and has been recorded as well. @djumpstre has access to the recordings afaik. Unsure about the timeline for their release.
I really like the additions of @Ryanf55 and would be happy to work here with the community together to bring that forward and craft a REP (ROS standard definitions for non-ROS folks). For that, we can offer organisational help to organise an open meeting and promote it on discourse? @amparo-siemens will take over further AsyncAPI efforts on our end.
Looking forward to get the PR merged @fmvilas .
Thank you all also for your interests!
This issue has been automatically marked as stale because it has not had recent activity :sleeping:
It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.
There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.
Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.
Thank you for your patience :heart:
@fmvilas can we get this closed before your GitHub bot kicks us all out? 😬😆 aka friendly ping
haha! Don't worry, this bot just closes issues when nobody comments on them. Since you did comment, the stale label has been removed automatically.