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

Revision history [back]

Following on from the comments:

When it comes to taking in sensor data, the filter is primarily concerned with two coordinate frames: the value of the world_frame parameter (typically odom or map) and the value of the base_link_frame parameter (typically base_link or base_footprint).

When you provide a nav_msgs/Odometry message as a sensor input, there are two coordinate frames represented in that. The frame_id in the message refers to the pose data, and the child_frame_id refers to the twist (velocity) data.

All velocity data will get transformed from the child_frame_id of the odometry message to the base_link_frame of your EKF, so you need to provide that transform, or make sure both frames are the same.

All pose data will get transformed from the frame_id of the odomety message to the world_frame of your EKF, so you need to provide that transform, or make sure both frames are the same.

The EKF itself will generate a transform from world_frame->base_link_frame.

In your case, I'd recommend fusing just velocity data from one source. Get it working the way you want, and then add a new source.