NVIDIA-ISAAC-ROS / isaac_ros_visual_slam

Visual SLAM/odometry package based on NVIDIA-accelerated cuVSLAM
https://developer.nvidia.com/isaac-ros-gems
Apache License 2.0
918 stars 144 forks source link

RVIZ VIO and SLAM paths seperate #142

Open lowellm91 opened 10 months ago

lowellm91 commented 10 months ago

Hi,

I have been using your SLAM software and I have been having some issues. First the VIO and SLAM paths in RVIZ seperate and get extremely far apart. Is this normal?

Secondly it's not at all clear what features being track actually means, is there is a way to display the features detected ontop of the image pairs so we can diagnose potential problems with tracking and see where tracking fails?

Third the information on frames is pretty confusing, to clarify what is the difference between base_frame and input_base_frame and base_link? My assumption was input_base_frame transforms the base_link to the left_camera_frame but the wording is very confusing.

lowellm91 commented 10 months ago

Messing with this more, changing the input_base_frame to the same name as the left_camera_frame fixed it, I assumed input_base_frame would be the parent name of the transform "left_camera_frame" but apparently this didn't work. It's not clear to what the difference between "left_camera_frame" and "input_base_frame" transforms are now since both transform the base_frame to the left camera.

swapnesh-wani-nvidia commented 10 months ago

Hello,

First the VIO and SLAM paths in RVIZ separate and get extremely far apart. Is this normal?

Ideally, they would stay on top of each other but with any odometry system, you could expect a drift in the VO path as it gives the smooth poses out as opposed to the SLAM path which can have jumps but is accurate w.r.t a map frame

Secondly it's not at all clear what features being track actually means, is there is a way to display the features detected ontop of the image pairs so we can diagnose potential problems with tracking and see where tracking fails?

You can use the Camera display in RViz and use the observations topic (visual_slam/vis/observations_cloud) as an overlay

what is the difference between base_frame and input_base_frame and base_link?

The idea is to add the ability to separate input and output subtrees in tf2. User can have in_left/in_right/in_base_link and out_map/out_odom/out_base_link. For example if you want to compare the o/p of Isaac ROS Visual Slam with a ground truth system you can have in_left/in_right/in_base_link --- From groundtruth system cuvslam_out_map/cuvslam_out_odom/cuvslam_out_base_link ---- From Isaac ROS Visual Slam

In case of a single robot input_base_frame = base_frame. If you want to track the motion of the robot put the value of base_link in base_frame. If you want to track the motion of left imager then put the value of left_camera_frame in base_frame.