suchetanrs / ORB-SLAM3-ROS2-Docker

This repository contains a full wrapper class for running ORB-SLAM3 on a docker container with ROS2 Humble with Ubuntu 22.04.
145 stars 29 forks source link

Contributions are welcome! Support for new modes. #12

Open suchetanrs opened 3 months ago

suchetanrs commented 3 months ago

Hi!

Thanks for landing here! The current repository supports only RGBD tracking mode. The code is (almost) ready for RGBD-IMU mode but needs to be tested.

However, ideally, support needs to be added for Monocular, Monocular Inertial, Stereo and Stereo inertial modes as well. I'm looking for help here. All contributions are highly welcomed. Please comment on this issue in case you'd like to contribute and take up adding support to any of the above mentioned modes.

Some insights:

Shivam7Sharma commented 1 month ago

I am interested in adding support for Stereo and Stereo Inertial mode.

harshal-14 commented 1 month ago

I'd like to support the RGB-D interial. Let me know how I can help

suchetanrs commented 1 month ago

Awesome! @Shivam7Sharma Please let me know if you face issues doing it. You can probably open a new issue to carry forward discussions.

@harshal-14 This should be simple. Most of the code already exists in the RGBD mode. You need to create a new directory rgbd-i and you'll need to call trackRGBDi. Let me know if you face difficulties. Feel free to open a new issue to discuss the problems if you face any.

Shivam7Sharma commented 2 weeks ago

@suchetanrs I was able to start and make the stereo run on the stereo Euroc dataset in ROS2, but the map points are not being published, and I see the following message in the terminal (even though the frames are being set in the constructor through default values):

[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] [INFO] [1726769343.761514063] [robot.ORB_SLAM3_STEREO_ROS2]: Current ORB-SLAM3 tracking frequency: 20.0039 frames / sec
[Stereo-1] [INFO] [1726769343.763009505] [robot.ORB_SLAM3_STEREO_ROS2]: *************************
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_SELF_TRANSFORM: Ignoring transform from authority "Authority undetectable" with frame_id and  child_frame_id "" because they are the same
[Stereo-1]          at line 209 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_CHILD_FRAME_ID: Ignoring transform from authority "Authority undetectable" because child_frame_id not set 
[Stereo-1]          at line 217 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp
[Stereo-1] Error:   TF_NO_FRAME_ID: Ignoring transform with child_frame_id ""  from authority "Authority undetectable" because frame_id not set
[Stereo-1]          at line 224 in ./src/buffer_core.cpp

Could this be the reason for no map points in ROS2? I see the points in the ORB SLAM visualiser. Any idea on how to fix this?

Shivam7Sharma commented 2 weeks ago

I made these errors go away by changing one parameter to true. I think it was no_odometry_mode. But still no point clouds and odometry. I am using the function that you wrote for rgbd for getting the map points.

Shivam7Sharma commented 2 weeks ago

Update:

I was able to get map points in Rviz. But if I set no_odometry_mode to true, then odometry doesn't get published, and if false, then we will see those TF errors.

suchetanrs commented 1 week ago

Hey @Shivam7Sharma Thanks for your comments. I think it's best I try out your code on my end to see what's up. Can you please raise a new issue for this, sync up your repository with the latest commit on this repository (as there may have been a few fixes) and share your fork? Or you could also raise a merge request. We can discuss this further on the new issue you make. This will also help in merging your contribution to the main repository later on. Thanks!