Skip to content
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

ROS2 Support #36

Open
zaidsasa opened this issue Dec 30, 2020 · 15 comments
Open

ROS2 Support #36

zaidsasa opened this issue Dec 30, 2020 · 15 comments
Labels
enhancement New feature or request

Comments

@zaidsasa
Copy link

Does this library support ROS2? if not then any plans to support ROS2.

Thanks in advance

@zaidsasa zaidsasa changed the title Support of ROS2 ROS2 Support Dec 30, 2020
@aler9 aler9 added the enhancement New feature or request label Dec 30, 2020
@aler9
Copy link
Member

aler9 commented Dec 30, 2020

Absolutely YES but first i need to implement the missing features.

Also, my idea was to rewrite the ROS master in Go, but probably the ROS2 support has a wider audience, so i'm sticking to the latter.

@bartekpacia
Copy link

I'd love to see this awesome library getting support for ROS2 as well!

@aler9
Copy link
Member

aler9 commented Feb 14, 2021

The main problem of ROS2 is that it's based on another, more generic, protocol, that is DDS, that is relatively newer. There isn't a Go implementation, and it must be build from scratch. This is long and expensive, but i hope it will be done at some point.
After this step, a pure-Go ROS2 implementation can be developed.

https://en.wikipedia.org/wiki/Data_Distribution_Service
https://www.omg.org/spec/DDS/About-DDS/
https://design.ros2.org/articles/ros_on_dds.html

@pvandervelde
Copy link

Any progress on getting ROS2 support? I'd love to use Golang instead of Python

@pvandervelde
Copy link

The main problem of ROS2 is that it's based on another, more generic, protocol, that is DDS, that is relatively newer. There isn't a Go implementation, and it must be build from scratch. This is long and expensive, but i hope it will be done at some point. After this step, a pure-Go ROS2 implementation can be developed.

https://en.wikipedia.org/wiki/Data_Distribution_Service https://www.omg.org/spec/DDS/About-DDS/ https://design.ros2.org/articles/ros_on_dds.html

Is this library useful for handling the DDS part: https://github.com/rticommunity/rticonnextdds-connector-go?

@l1va
Copy link

l1va commented Jan 12, 2022

Still too young, but can be better than nothing.

@erichuiyliu
Copy link

Hey, any updates to support ROS2? Looking forward to it~~

@LarryDCJ
Copy link

Is anyone working on this feature? I'd be happy to help out where I can.

@LarryDCJ
Copy link

LarryDCJ commented Feb 8, 2023

Is anyone working on this feature? I'd be happy to help out where I can.

I’m going to start working on the DDS implementation. @aler9 I’d love to confer with you during the course of development.

@aler9
Copy link
Member

aler9 commented Feb 8, 2023

@LarryDCJ hello,

First of all, this library is practically in maintenance mode, since all ROS1 features have been implemented a while ago. Recent commits have been about updating dependencies or bug fixing.

The reason why a Golang ROS2 implementation was not developed yet is because there are not enough reasons to do it. Personally i can't use ROS in my job since its role as middleware is already taken by Kafka, AMQP or SQS, all of which can be horizontally scaled and have a better handling of undelivered messages, while its role as message encoder is already taken by gRPC. The time i can spend on OSS is currently focused on some other protocols which are way more popular.

Furthermore, this porting was never recognized by the official organization (although it's one of the most popular ones), so until now no one showed up offering concrete help.

If someone is willing to start a DDS implementation, i'm willing to review the work, but i can't do more than that at the moment.

@LarryDCJ
Copy link

LarryDCJ commented Feb 8, 2023

@aler9 Thanks for the insight!

I'm currently writing a driver for the YDLidar G2 and wanted to implement Ros2 written in Go when it's all done.

This is all super new to me as I'm just learning to work with serial data.

@ppbrown
Copy link

ppbrown commented Aug 12, 2023

Did you ever look at
https://github.com/yangchenxing/go-dds
?
It's quite old, so I would expect you found it before, but... figured I'd ask.

@jbcpollak
Copy link

jbcpollak commented Sep 12, 2023

For anyone who's wants to give a Golang ROS2 interface a shot, rather than native golang all the way to the DDS layer, interfacing Go to ROS2's rcl and rmw libraries via C might be a better path. This is how the Python and JavaScript implementions work, and allows the language interface to be independent of the actual middleware that is used, which is good because while DDS is the default, there are other middleware implementations.

The nodejs implementation may be useful as a starting point:

https://github.com/RobotWebTools/rclnodejs

@bchoineubility
Copy link

Hi,

Does this library support ros2-galactic ? do you have plan for ros2-humble as well?

BR,
Mark

@mari-muthu-k
Copy link

Hi, Does this library support ros2-humble ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests