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

Revision history [back]

The nav_msgs/Odometry message contains pose and velocity (twist) data. The pose data is assumed to have frame frame_id and the velocity data is assumed to have frame child_frame_id. robot_pose_ekf, I believe, is only concerned with pose data, and doesn't use the velocities (someone correct me if I'm wrong). Therefore, if a transform doesn't exist between those frames, you're probably set. However, not that it matters, but it looks like base_footprint is in your tf_tree, according to your question.

The nav_msgs/Odometry message contains pose Edited response after the original question changed:

Given that you said that everything is working, you may be fine, but personally, I would want the frame_id of my input odometry data (in your case, the /encoder messages) to be identical to the frame that is being broadcast by robot_pose_ekf (i.e., the frame_id of its output odometry messages). I'm guessing robot_pose_ekf transforms all measurement data into the target frame before integrating them, and velocity (twist) data. The pose data I'm presuming you don't have any transforms defined from odom_combined->odom, so it's probably a good idea to make sure the frames match. Just make sure that whatever is assumed to have frame frame_id and the velocity data producing /encoder is assumed to have frame child_frame_id. robot_pose_ekf, I believe, is only concerned with pose data, and doesn't use the velocities (someone correct me if I'm wrong). Therefore, if not also publishing a transform doesn't exist between those frames, you're probably set. However, not that it matters, but it looks like base_footprint is in your tf_tree, according from its frame_id to your question.its child_frame_id.

Then again, if those frames didn't match, and you didn't have a transform from odom_combined->odom defined, and robot_pose_ekf was, in fact, transforming input messages into the target frame_id, then I don't see how it could all be working.