ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

The deep understanding about the config file of cartographer ROS. [closed]

asked 2022-05-23 01:16:48 -0500

BlueBird gravatar image

Please check my understanding about the 'cartographer.lua.' (

I have read and

The basic relationship between ROS frames can be represented by the following figure.

earth --> map --> odom --> base_link

map_frame The ROS frame ID to use for publishing submaps, the parent frame of poses, usually “map”.

Since the SLAM can draw a map, using some number to represent the object of the world, the object should be placed in the frame 'map.' Meanwhile, it can locate the robot, so the robot's pose should be also represented in 'map.'

tracking_frame The ROS frame ID of the frame that is tracked by the SLAM algorithm. If an IMU is used, it should be at its position, although it might be rotated. A common choice is “imu_link”.

A robot is an object, rather than an ideal point in the world. So, if the SLAM wants to locate the robot, it should locate which part of the robot. Is it the robot's head or its foot? The Cartographer algorithm suggests using the link where the IMU is installed. Good choice! This is usually the stable part of a robot.

This is strange!

Is it more direct if we use the same part that an odometry system is used to track the robot, e.g., the frame 'base_link?'

published_frame The ROS frame ID to use as the child frame for publishing poses. For example “odom”, if an “odom” frame is supplied by a different part of the system. In this case, the pose of “odom” in the map_frame will be published. Otherwise, setting it to “base_link” is likely appropriate.

I do not fully understand this frame. I think the algorithm should publish TF information, which should be the relation between the frame 'map' to the frame 'odom'. However, if the robot does not have an odometry system, the TF should directly connect 'map' to 'base_link.'

This is strange!

Why not directly connect the frame 'map' to the 'tracking_frame.' Since this robot does not have an odometry system.

odom_frame Only use if the provide_odom_frame is true. The frame between published_frame and map_frame to be used for publishing the (non-loop-closed) local SLAM result. Usually “odom”.

Is it the name of the odometry system's frame?

Can we do this? provide_odom_frame = false, but use_odometry = true ???

The robot does not provide an odometry system because it can not provide an odometry frame. How can we use odometry? It cannot subscribe to the weel coder information, and it does not know the structure of the robot.

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by BlueBird
close date 2022-06-10 08:10:23.489371

1 Answer

Sort by » oldest newest most voted

answered 2022-05-23 01:35:24 -0500

ljaniec gravatar image

I think this post can partially explain a few of your questions about the frames:

I am not so sure about the rest, but it's a good start

edit flag offensive delete link more


Yep! Good idea.

BlueBird gravatar image BlueBird  ( 2022-05-23 19:58:00 -0500 )edit

Question Tools

1 follower


Asked: 2022-05-23 01:16:48 -0500

Seen: 260 times

Last updated: May 23 '22