Rosanswers logo

Hello everybody,

I am currently trying to modify the Husky robot by adding an IMU to it and use the robot_pose_ekf to get a pose of the robot by combining the input of the wheel odometry and the IMU. I do hope, that this is not a copy of this (answers.ros.org/question/12562/is-robot_pose_ekf-acting-correctly/, not enough karma for links), as I do not get any warnings (frame_id of the IMU is set to base_footprint).

Things are working fine so far, although the update rate of the robot_pose_ekf is very slow, even if all relevant frequencies are set to 30 Hz or more. Currently robot_pose_ekf publishes only with a rate of 0.2 Hz, although it should report with a rate of 30 Hz. For example rosservice call /robot1/robot_pose_ekf/get_status will yield the following:

status: Input:
 * Odometry sensor
   - is active
   - received 1227 messages
   - listens to topic /robot1/odom
 * IMU sensor
   - is NOT active
   - received 1343 messages
   - listens to topic /robot1/imu_data
 * Visual Odometry sensor
   - is NOT active
   - received 0 messages
   - listens to topic 
 * Robot pose ekf filter
   - is active
   - sent 47 messages
   - pulishes on topics /robot1/robot_pose_ekf/robot1_tf/odom and /tf

The code I am using to include the robot_pose_ekf is the following:

<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">       
    <param name="freq" value="30.0" />
    <param name="sensor_timeout" value="1.0" />     
    <param name="odom_used" value="true" />
    <param name="imu_used" value="true" />
    <param name="vo_used" value="false" />
    <param name="output_frame" value="odom" />      

I would be delighted, if any of you could shed any light on my problem and help me to get a decent publishing frequency for the robot_pose_ekf topic. Thanks in advance for any answers.

Originally posted by Florian Blatt on ROS Answers with karma: 16 on 2014-03-20

Post score: 0

Original comments

Comment by demmeln on 2014-03-20:
Without looking at this closely, the "is NOT active" line in "IMU sensor" strikes me as odd.

Comment by Florian Blatt on 2014-03-20:
Thanks for the answer, any idea on how to activate the IMU sensor? "rostopic info /robot1/imu_data" shows, that the ekf subscribes to the imu topic.

Comment by demmeln on 2014-03-21:
Unfortunately not. You might want to dig in the code to find out why IMU is shown as not active. Also what frequency is your odom input?

Comment by Florian Blatt on 2014-03-21:
If I haven't made an error looking into the Husky model, the odom frequency should be set to 100. As far as I could discern from the robot_pose_ekf package, the pose will only update if it gets two different inputs with a later timestamp, but IMHO this should not matter in this case.

Comment by demmeln on 2014-03-21:
you can easily check with rostopic hz /robot1/odom

Comment by Florian Blatt on 2014-03-22:
"rostopic hz..." tells me, that odom has a rate around 800, should be fast enough Tod allow the robot_pose_ekf to update with a rate of 30 Hz. Maybe I just have Tod take a peek at the ekf source code, but thanks either way.

Comment by demmeln on 2014-03-22:
Also, maybe add a output="screen" to your launch file, to see if there is any output of the ekf node that you might be missing.

Comment by Florian Blatt on 2014-03-22:
Thanks for the hint, I did not know about that parameter yet. I will try it out and check whether ekf has anything more to say ;)

Comment by Florian Blatt on 2014-03-23:
Thanks again for the hint, it seems, that I do have a similar problem converting the IMU message to robot1_tf/base_footprint.


1 Answer 1


Rosanswers logo

Further investigation revealed, that this seems to be a problem of a missing tf transformation. Currently I need to include the tf_prefix parameter in the frame_id of the IMU to get this to work correctly.

EDIT: I just had to remove the tf_prefix and everything works fine... Thanks again for the help and the answers.

Originally posted by Florian Blatt with karma: 16 on 2014-03-23

This answer was ACCEPTED on the original site

Post score: 0

Original comments

Comment by moejoegoe on 2014-04-10:
Hello Florian, it seems I have the same problem as you had! Can you please explain in more detail how you solved it!? Bye Matthias

Comment by Florian Blatt on 2014-04-10:
Hi Matthias, as I stated above, I used the tf_prefix parameter, so that I would have different name spaces for multiple robots. Removing this parameter did the trick. Otherwise maybe you need to post a little bit more information about your setup ;)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.