How to Run Isaac ROS Visual Global Localization Node with Parameters?

I have some questions about running the isaac_ros_visual_global_localization_node. So far, I’ve provided the following parameters:

ros2 launch isaac_ros_visual_global_localization isaac_ros_visual_global_localization_node.launch.py camera_names:="front"\
num_cameras:=2 \
vgl_map_dir:="/workspaces/isaac_ros-dev/src/fs_25_andreaskradolfer/viras_ros_global_localization/map" \
map_dir:="/workspaces/isaac_ros-dev/src/fs_25_andreaskradolfer/viras_ros_global_localization/map" \
config_dir:="/opt/ros/humble/share/isaac_mapping_ros/configs" \
use_initial_guess:=True \
vgl_localization_precision_level:=0

The node seems to start correctly. However, when I try to call the service to trigger localization, I get the following response:

rosservice call /visual_localization/trigger_localization std_srvs/srv/Triggered
waiting for service to become available...
requester: making request: std_srvs.srv.Trigger_Request()
 
response:
std_srvs.srv.Trigger_Response(success=True, message='')

Although the service call appears to succeed, I’m not receiving any data from:

ros2 topic echo /visual_localization/pose geometry_msgs/msg/PoseWithCovarianceStamped

What confuses me is that the documentation refers to the isaac_ros_mapping_and_localization package under API Usage, but I haven’t been able to find this package. ( Isaac ROS Visual Global Localization — isaac_ros_docs documentation

Has anyone encountered a similar issue or knows what I might be missing? Any advice would be appreciated!

Hi Andreas,

It seems the API usage in the documentation is wrong, it should say
ros2 launch <ROS_PACKAGE_NAME> <ROS_LAUNCH_FILE_NAME> and the package name should be isaac_ros_visual_global_localization.

So what you used is correct.

It would be nice if you could attach your log of the node, so we can see from the log if it’s actually doing localization. If the topic does not have any message, it’s possible the localization is not successful.

Here is the log I retrieved from the debug_dir:
log.zip (7.4 KB)

I received 4 poses with the success parameter set while continuous localization was active. So I assume global localization ran successfully. ( Also, the reported pose is described in the map_frame?)

However, I’m unsure how to interpret the documentation regarding the publish_map_to_base_tf broadcaster:
Does it publish the /tf transformation from map_frame → odom_frame or map_frame → base_frame?
(I suspect it’s map_frame → base_frame.)

If localization is successful, will the transformation be updated automatically, or do I need to trigger anything manually?

Yes, I do also see 4 poses have success in your log.
Yse, that seems to be another documentation error, it should say map_frame → base_frame instead of odom_frame