0
$\begingroup$

Rosanswers logo

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) );
  transform.setRotation(orientation);
  br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "base_footprint", "imu"));

but i get the same message..

any ideas?

thanks a lot

Mario


Originally posted by Mario Garzon on ROS Answers with karma: 802 on 2012-02-27

Post score: 0


Original comments

Comment by Ivan Dryanovski on 2012-02-27:
Publishing a static tf is usually the way to go. What does the tf chain look like?

Comment by sai on 2012-10-01:
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

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

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.


Originally posted by phil0stine with karma: 682 on 2012-02-28

This answer was ACCEPTED on the original site

Post score: 2

$\endgroup$
0
$\begingroup$

Rosanswers logo

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


Originally posted by sai with karma: 1935 on 2013-07-08

This answer was NOT ACCEPTED on the original site

Post score: 2

$\endgroup$

Your Answer

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