IntelligentRoboticsLabs / ARViz

ARViz Project
56 stars 10 forks source link

Possible collaboration? #2

Open samiamlabs opened 5 years ago

samiamlabs commented 5 years ago

Hi,

I noticed that there is a lot of overlap between what you guys are working on and what I have been doing with https://github.com/DynoRobotics/unity_ros2

My main goal is to use Unity as a large scale multi-robot simulator with human avatars. Here are some examples of what I have been using my project for this far: Turtebot3 Navigation2 Sweepbot

Package DropOff

I was unfortunately not able to get ros2_dotnet working for the crystal release. Since I needed navigation2 and actions I implemented my own message generator and csharp wrapper with a lot the same new functionality you have been working on (lists of nested types, tf, paths, laser scan etc.)

I also have fairly extensive unit tests in my wrapper (https://github.com/DynoRobotics/rclcs/tree/master/src/dotnet/Test) which seems to be a future milestone of this project as well.

As @esteve already mentioned in https://github.com/ros2/design/issues/84 this amount of effort duplication is pretty unfortunate...

I'm planning to write a guide on how to install my Unity project and run the navigation2 stack with a turtlebot3 in this week.

Do you think there is some way we can merge the result of our projects? I have already offered to contribute my wrapper and generator as a crystal branch of ros2_dotnet, but that could make it difficult to migrate ARViz to crystal.

Not really sure what the best way forward is... Do you have any ideas?

esteve commented 5 years ago

Sure, as I said before, any contribution is more than welcome, I'm happy to review any pull request you submit to ros2-dotnet

samiamlabs commented 5 years ago

Alright :) I'll start changing package names, namespaces, etc. to make my code compatible with ros2-dotnet. Not sure how long that will take.

fmrico commented 5 years ago

Hi @samiamlabs ,

Nice to hear from you. I think we meet your team in the RoboCup 2018 in Montreal.

ARviz is a Unity App for Hololens composed by several ROS2 C# scripts. Because of this, it is essential to develop all the functionality missing, so we perform much of the work of ARViz in https://github.com/esteve/ros2_dotnet.

I find your project very interesting, and, as @esteve said, improving ros2_dotnet will be a fantastic way to collaborate. You are most than welcome.

Best, Francisco.

samiamlabs commented 5 years ago

I was not personally at RoboCup 2018, but Fredrik Löfgren (the CEO of our little startup) mentioned that he talked to @esteve there I believe.

You are welcome to use https://github.com/DynoRobotics/rosidl_generator_cs and https://github.com/DynoRobotics/rclcs for reference if that helps for the missing functionality in the current release of ros2_dotnet :)

A bit off topic: We have been considering buying a Hololence 2 for remote robot operation and visualizing Rviz stuff for development and debugging on real robots etc. Do you know if ARViz will support Hololence 2? Not sure how similar it is to the original in terms of API and things like that.

Is there a place to discuss things related to ARViz that is not a GitHub issue?

esteve commented 5 years ago

@samiamlabs I didn't go to RoboCup 2018 :-)

Just a small clarification, ros2-dotnet and ARViz are independent projects, managed separately. I started ros2-dotnet three years ago (have a look at the talk I gave at ROSCon 2018 for a bit history of the project https://vimeo.com/293302046 https://roscon.ros.org/2018/presentations/ROSCon2018_ROS2%20for%20Android,%20iOS%20and%20Universal%20Windows%20Platform.pdf), ARViz just happens to be using ros2-dotnet because it's the only ROS2 client library that has support for the Hololens.

samiamlabs commented 5 years ago

Ok, he may have been referring to some other occasion in that case.

I will have a look at the talk.

I did know that the ARViz project and ros2-dotnet were independent. I noticed that the ARViz project was adding support for a lot of the same stuff that my code already supports to ros2-dotnet, which is why I opened the issue here.

Btw, if ros2-dotnet will be the only maintained c# wrapper moving forward it would probably be a good idea to update https://index.ros.org/doc/ros2/Concepts/ROS-2-Client-Libraries/ to reflect that? The reason I forked rclcs and not ros2-dotnet was mainly that it appeared to be the "official" c# ROS2 client library and that the readme asked for help in getting it running for new releases.

samiamlabs commented 5 years ago

Hi again,

About moving the discussion:

I'm ok with having general discussions related to AR for ROS2 on this issue. I just know that some people really dislike having discussions in GitHub issues that are not strictly related to the code in that repository. But your repository, your rules :)

If we want to expose our projects and future plans to new people, it could be a good idéa to open a topic on https://discourse.ros.org/c/ng-ros though.

fmrico commented 5 years ago

Hi @samiamlabs,

Ok, I see your point. Correct me if I'm wrong. Your vision goes beyond these repositories. You want to lay the foundation of AR for ROS2. In that sense, I find it appropriate to open a topic in https://discourse.ros.org/c/ng-ros, always referencing these repositories.

I think that update https://index.ros.org/doc/ros2/Concepts/ROS-2-Client-Libraries/ would be a good idea (the opinion of @esteve about this is more relevant than mine), but we need to achieve esteve/ros2_dotnet#21 previously. We are working with a version that compiles for ament for repositories of mid-July '18. I am working hard to complete the functionality of C# related to data types, graph, TF... If you could work on that issue, it would be great. We need ros2_dotnet because Unity supports C#, so we need to improve it.

The plan for ARViz is shown in the Readme.md of this repo: Support sensor types, and visualization markers. Maybe during the discussion in https://discourse.ros.org/c/ng-ros would appear more issues (robot model?)

Best