0
I’m working on a ROS 2 Humble setup for a Clearpath Jackal (running on Ubuntu 22.0.4). I’m using slam_toolbox with the async_slam_toolbox_node and mapper_params_online_async.yaml.
The SLAM node starts without crashing, and the map is displayed in RViz2. However, the map does not update as the robot moves, even though:
- TF tree seems correctly published (I can echo transforms between base_link, odom, and map)
- LiDAR topic /ouster/points is publishing data
- Robot moves physically, and I can see updates in odometry
- No clear errors from SLAM Toolbox, only this sometimes:
[async_slam_toolbox_node-1] terminate called after throwing an instance of ‘karto::Exception’
What I’ve checked so far:
- TF frames exist and are connected (base_link → odom → map)
- LiDAR publishes valid point cloud data
- Odometry topic is active (/platform/odom/filtered)
- Correct topic names are configured in the YAML file
I’m visualizing both /map and /tf in RViz2
But still, the SLAM map appears frozen after the initial frame. The robot moves in reality, but the map doesn’t expand or change.
Relevant config excerpt (mapper_params_online_async.yaml):
pointCloudTopic: “/ouster/points” odomTopic: “/platform/odom/filtered” mapFrame: “map” odomFrame: “odom” baseFrame: “base_link” Questions:
- What can cause SLAM Toolbox to not update the map despite all topics and TFs appearing active?
- How do I isolate whether the issue is due to bad odometry, bad transforms, or SLAM internals?
- Is there a way to enable verbose logging or diagnostics to dig deeper into what SLAM Toolbox is doing internally?
Any guidance is appreciated—I’ve been stuck for days trying to resolve this.
Hi @vickyrv570, welcome to the community!
Wow, it seems like you have a proper system up and running!
What are you trying to do exactly? Are you trying to create a map for autonomous navigation or specifically use slam_toolbox
specifically? I say this because you can try other mapping packages to debug further, like ROS Package: cartographer_ros
To answer your questions:
- I’m not sure. What I would do is try and discard whether
rviz
visualization is the problem. You say that you can see the “initial” map but it doesn’t update. Does the actual message in the map topic update? What happens if you move the robot, and then save the map, is the map updated with the movement?
- To check if you have bad odometry, just move the robot a known distance and then check the odometry message. If it’s close, then it’s okay. For the transforms, you mentioned they work, so you can actually visualize them and see if they are good or bad in rviz.
- I think you can activate verbose in the launch file you are using, something like this:
from launch.substitutions import LaunchConfiguration
from launch.actions import DeclareLaunchArgument
def generate_launch_description():
return LaunchDescription([
DeclareLaunchArgument(
'log_level',
default_value='debug', # Options: debug, info, warn, error, fatal
description='Logging level for SLAM Toolbox'
),
Node(
package='slam_toolbox',
executable='sync_slam_toolbox_node',
name='slam_toolbox',
output='screen',
arguments=['--ros-args', '--log-level', LaunchConfiguration('log_level')],
parameters=[{'odom_frame': 'odom', 'map_frame': 'map', 'base_frame': 'base_link'}]
)
])
However, I bet there is already valuable information in the normal output already, so if you could share that it would be useful. Also, screenshots help.