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

imu frame for Robot_pose_ekf

asked 2012-02-27 03:24:40 -0500

updated 2012-02-27 04:04:51 -0500

DimitriProsser gravatar image

Hi all...

i'm trying to use the robot_pose_ekf node with an pioneer 3at robot using odometry from p2os_driver and an imu MT_9

i publish the sensor_msgs/imu using the frame: "imu" and a frame "odom" for the odometry, but when i run the robot_pose_ekf i get this message

[WARN] Could not transform imu message from imu to base_footprint. Imu will not be activated yet

i try to publish a static transformation between "base_link" and "imu" but still no results, also try to publish the rotation from "imu" to "base_footprint" with this code:

void t_imuCallback(const sensor_msgs::ImuConstPtr& msg){
  static tf::TransformBroadcaster br;
  tf::Quaternion orientation;
  tf::Transform transform;
  tf::quaternionMsgToTF(msg->orientation, orientation);
  transform.setOrigin(tf::Vector3(0.0, 0.0, 0.0) );
  br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "base_footprint", "imu"));

but i get the same message..

any ideas?

thanks a lot


edit retag flag offensive close merge delete


Publishing a static tf is usually the way to go. What does the tf chain look like?

Ivan Dryanovski gravatar image Ivan Dryanovski  ( 2012-02-27 15:08:05 -0500 )edit

I had the same problem, TF tree was connected but had the same error, Could not transform imu message from /base_imu to /base_footprint. It was solved by changing the frame id of IMU to /base_footprint............Thats it

sai gravatar image sai  ( 2012-10-01 18:03:01 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2012-02-28 03:32:48 -0500

phil0stine gravatar image

From here :

robot_pose_ekf publishes transforms from odom_combined to base_footprint.

Sometimes an urdf will have base_link as the root of the tf tree, with base_footprint as a child. Since robot_pose_ekf has a hard-coded output transform (odom -> base_footprint), then this combination will break the tf tree (base footprint will have two parents) and it could explain your issues.

Even if you don't have an urdf, you cannot use robot_pose_ekf in its current state, and have any other tf publication with base_footprint as the child.

edit flag offensive delete link more

answered 2013-07-08 23:49:03 -0500

sai gravatar image

From the comments,

The simplest solution is to add this in the launch file

< node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="0 0 0 0 0 0 1 base_footprint imu 100 " />

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2012-02-27 03:24:40 -0500

Seen: 4,949 times

Last updated: Jul 08 '13