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

Fork with visualizations, websockets, latest rosbridge_suite, etc. #176

Open
naxsm opened this issue Jul 18, 2022 · 5 comments
Open

Fork with visualizations, websockets, latest rosbridge_suite, etc. #176

naxsm opened this issue Jul 18, 2022 · 5 comments

Comments

@naxsm
Copy link

naxsm commented Jul 18, 2022

I thought this repo was mostly abandoned so I started working on my own fork to work with the latest rosbridge_suite and add some functionality. I see this repo is now active again and I'd like to contribute my work, but some of it is incompatible with the current state of this repo. Also my fork is still a work in progress and not ready yet.

What's the best way to move forward? I'd like ROSIntegration to be a single package with options to support e.g. tcp or ws, ros1 or ros2, different data formats from rosbridge_suite, etc.

@Sanic
Copy link
Contributor

Sanic commented Jul 20, 2022

Hi @naxsm
Thanks for considering integrating the functionality together. I think it's also a nice idea for the users to keep everything together.

I gave this a thought and i think there are multiple ways of integrating this. Since the main change seems to be the communication channel, i'd propose to keep the general conversion functionality and everything that directly interacts with Unreal functionality (for example the code for enabling BP usage). So based from your description, i'd assume that the main changes have to be done in the rosbridge2cpp part of this Plugin, which is doing the main communication between UE4 and ROS.

Is using ros2 with rosbridge a major difference in terms of the communication or is it pretty much the same to ros1 and rosbridge? What would needed to be changed there?
For websockets there seems to be some builtin functionality in UE4 (https://docs.unrealengine.com/4.27/en-US/API/Runtime/WebSockets/) that one could use.

@tsender
Copy link
Contributor

tsender commented Jul 20, 2022

Hi @Sanic and @naxsm ,

I've always wanted a way to work with ROS2 (I currently use ROS2 with this plugin, but I use the ros1_bridge to do the msg/srv conversions, which can be annoying).

There have been some discussion in this issues page: #102

One member @GaoGeolone had modified the rosbridge tcp code to work with this plugin, but RobotWebTools soon thereafter removed all tcp communication from the ros2 branch for rosbridge since ros2 does not utilize tcp. The rosbridge repo only supports websockets now. I did make a fork of this plugin and sort of got a websocket to work (I copied some internal code in UE4's websocket module and modified the rosbridge2cpp portion), but there were still various bugs/issues that needed to be fixed, and I haven't had the time to look into it again.

Some of the issues I ran into with websockets was:

  1. The rosbridge node got extremely slow once I added multiple UE4 instances.
  2. Within my fork of this plugin, I was unable to add a way to handle the topic queue size, and so my websocket was backed up with trying to publish waaaay too many messages without deleting stale messages. In addition, either the rosbridge websocket or my ROSIntegration websocket was unable to handle subscribing to messages without considerable delay.

@naxsm
Copy link
Author

naxsm commented Aug 1, 2022

This is the repo I'm working on right now: https://github.com/naxsm/ROSIntegration. It's not ready for prime time yet, but it works well on ros2 over tcp when using my fork of rosbridge_suite, which adds tcp and fixes some small bugs: https://github.com/naxsm/rosbridge_suite. This one is also a work in progress, and I have yet to synchronize with them, but please feel free to try them and I'll be happy to answer questions and take comments.

@tsender
Copy link
Contributor

tsender commented Aug 2, 2022

I'm curious as to what visualizations you added to your fork of the plugin. I saw some of the code, but no comments, so it was hard to follow.

@agaertner
Copy link

agaertner commented Aug 18, 2022

@naxsm Hey I am currently using Galactic with aforementioned fork. Works well, but I had to fix some small issues before I could get it to run.
However, ROSIntegration is still missing support for some MessageTypes notably geometry_msgs::Twist. It would be good to have for testing initial setup using turtle_teleop_key demo node (keyboard input in terminal).

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

No branches or pull requests

4 participants