goroslib icon indicating copy to clipboard operation
goroslib copied to clipboard

ROS2 Support

Open zaidsasa opened this issue 4 years ago • 15 comments

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

Thanks in advance

zaidsasa avatar Dec 30 '20 12:12 zaidsasa

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.

aler9 avatar Dec 30 '20 13:12 aler9

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

bartekpacia avatar Feb 14 '21 21:02 bartekpacia

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

aler9 avatar Feb 14 '21 21:02 aler9

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

pvandervelde avatar Sep 04 '21 12:09 pvandervelde

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?

pvandervelde avatar Jan 05 '22 17:01 pvandervelde

Still too young, but can be better than nothing.

l1va avatar Jan 12 '22 14:01 l1va

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

erichuiyliu avatar Dec 09 '22 02:12 erichuiyliu

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

LarryDCJ avatar Jan 15 '23 23:01 LarryDCJ

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.

LarryDCJ avatar Feb 08 '23 17:02 LarryDCJ

@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.

aler9 avatar Feb 08 '23 18:02 aler9

@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.

LarryDCJ avatar Feb 08 '23 22:02 LarryDCJ

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.

ppbrown avatar Aug 12 '23 18:08 ppbrown

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

jbcpollak avatar Sep 12 '23 08:09 jbcpollak

Hi,

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

BR, Mark

bchoineubility avatar Dec 19 '23 01:12 bchoineubility

Hi, Does this library support ros2-humble ?

mari-muthu-k avatar Apr 26 '24 06:04 mari-muthu-k