Ask Your Question

robot_pose_ekf frequency too slow? [closed]

asked 2014-03-20 02:03:15 -0500

Florian Blatt gravatar image

updated 2016-10-24 09:02:35 -0500

ngrennan gravatar image

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 (, 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.

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by demmeln
close date 2014-03-28 01:07:59


Without looking at this closely, the "is NOT active" line in "IMU sensor" strikes me as odd.

demmeln gravatar image demmeln  ( 2014-03-20 06:03:29 -0500 )edit

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.

Florian Blatt gravatar image Florian Blatt  ( 2014-03-20 07:35:15 -0500 )edit

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?

demmeln gravatar image demmeln  ( 2014-03-21 01:55:58 -0500 )edit

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.

Florian Blatt gravatar image Florian Blatt  ( 2014-03-21 02:10:51 -0500 )edit

you can easily check with `rostopic hz /robot1/odom`

demmeln gravatar image demmeln  ( 2014-03-21 02:25:38 -0500 )edit

"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.

Florian Blatt gravatar image Florian Blatt  ( 2014-03-22 01:48:27 -0500 )edit

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.

demmeln gravatar image demmeln  ( 2014-03-22 01:57:43 -0500 )edit

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 ;)

Florian Blatt gravatar image Florian Blatt  ( 2014-03-22 02:59:00 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2014-03-23 23:45:30 -0500

Florian Blatt gravatar image

updated 2014-03-24 02:25:59 -0500

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.

edit flag offensive delete link more


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

moejoegoe gravatar image moejoegoe  ( 2014-04-10 00:59:46 -0500 )edit

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 ;)

Florian Blatt gravatar image Florian Blatt  ( 2014-04-10 01:28:12 -0500 )edit

Question Tools

1 follower


Asked: 2014-03-20 02:03:15 -0500

Seen: 1,417 times

Last updated: Mar 24 '14