NVIDIA-ISAAC-ROS / isaac_ros_nvblox

NVIDIA-accelerated 3D scene reconstruction and Nav2 local costmap provider using nvblox
https://developer.nvidia.com/isaac-ros-gems
Apache License 2.0
439 stars 80 forks source link

How could the robot localize after loading a saved map? #78

Closed daodao9801 closed 10 months ago

daodao9801 commented 11 months ago

I am using the realsense D435i with the given example successfully.

ros2 launch nvblox_examples_bringup realsense_example.launch.py

After loading my saved map

ros2 service call /nvblox_node/load_map nvblox_msgs/srv/FilePath "{file_path: '/home/USERNAME/super_cool_map.nvblx'}"

The map can be seen together with "Esdf Slice" afterwards and everything looks fine. However, there seems no localization happening when the new map is loaded.

May I know how to let the robot find its position when a map is loaded? Is it automatically done or should I give it a "2D pose estimation" via RViz? Is it failed because the current depth map doesnt have enough feature?

Thanks advance for any suggestions.

alexmillane commented 11 months ago

nvblox, on its own, is just a mapping pipeline. Mapping being half of Simultaneous Localization and Mapping (SLAM).

In other words, nvblox on its own will not relocalize in a map. We expect another module to do that. You could configure, for example, isaac_ros_visual_slam, or another visual slam system, to do the relocalization.

daodao9801 commented 11 months ago

Thanks. So ros2 action send_goal /visual_slam/save_map isaac_ros_visual_slam_interfaces/action/SaveMap "{map_url: /map} would be a more appropriate choice for saving a map which could be used for localizing later in the isaac_ros_visual_slam process?

jaiveersinghNV commented 11 months ago

Yes, that would be an appropriate usage of the save_map and load_map_and_localize actions in Isaac ROS Visual SLAM.