Ask Your Question

# Problem with TF Tree in RPLidar Hector SLAM and Navigation

I'm a beginner in ROS and Robotics and have problem implementing an autonomous mobile robot.

I'm getting this error:

Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.101084 timeout was 0.1.


Firstly, I used chefbot package to make the autonomous navigation using Kinect and depthimage_to_laserscan, and it worked fine. Though there were some problem with reaching the exact position, which I am assuming can be solved by tweaking the parameters in navigation stack. The TF Tree when it ran correctly was the following:

Now, I replace the Kinect with RPLidar and things break. I assumed since, the laserscan will be available at /scan topic, I don't need to fire openni modules and depthimage_to_laserscan. I instead roslaunched rplidar_ros rplidar.launch and hector_slam_tutorial tutorial.launch The TF tree obtained is:

Which obviously seems to be broken, as there is no transform between map and odom and base_link and base_footprint. I think I can fix this by changing some param or args in hector_slam, because that's where the map to base_link. However, I donot know how to do it. I think running additional static transform might help? Something like:

<node pkg="tf" type="static_transform_publisher" name="door2" args="1.25 -4.5 0 0 0 0 /door2 /world 10"/>


Please let me know. Thanks!

PS: I'm using ROS Kinetic

edit retag close merge delete

## 1 Answer

Sort by » oldest newest most voted

There looks like 2 separate issues:

1 - you need a transform between base_footprint and base_link, which will be done with a static transform assuming they don't rotate relative to each other.

2 - for map to odom: looking at section 2 of this tutorial, you can configure Hector around ODOM and that is likely what you have done. http://wiki.ros.org/hector_slam/Tutor.... In doing so you probably assign a second parent to base_link and that broke the tree. Only one parent allowed.

To fix this you need to update the config or set up Hector as shown in section 1 of the tutorial. Right now it feels like you're mixing the two methods.

If you intended to set up Hector without reference to ODOM, you need to add this remapping to the launch file

<param name="odom_frame" value="base_footprint" />

more

## Comments

So, adding the above line would still give me odom from hector slam right?

( 2019-06-09 13:44:47 -0500 )edit

I've added transform betweeen base_footprint and base_link in my robot state publisher, so that shouldn't be the problem. As you may see in the tf_tree above, running amcl and gslam doesn't give any error but hector slam breaks the tf_tree. I think the problem as you mentioned might be with the hector_slam launch

( 2019-06-09 13:47:27 -0500 )edit

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2019-06-08 23:22:42 -0500

Seen: 83 times

Last updated: Jun 09