I need to fuse GPS+IMU to make a trajectory I can refer to in post processing, hopefully with velocity estimates as well.

I was looking into the robot_localization package, but this seems to assume that one has both heading measurements and additional odometry. Heading measurements definitely not but odometry may be a possibility, but I would like to proceed without if possible.

I think this means using robot_localization is out of the question right? As I think this requires a heading measurement, or is there a workaround?

Edit: Should probably mention that the trajectory is fine to be in a local tangent frame (e.g. ENU), it doesn't necessarily have to relate to geographic coords.


1 Answer 1


In order for fusing sensor data, they have to be measuring in the same coordinate frame.

navsat_transform_node in robot_localization provides the functionality of converting spherical coordinates into Cartesian coordinate.

Once the gps measurement is in Cartesian coordinate, you could fuse it with IMU using ekf_localization_node.

GPS would provide you with x, y, z measurement. IMU would provide you with ddx, ddy, ddz, droll, dpitch, dyaw. (acceleration and angular rate in 3 dimensions.)

First problem you will encounter is that, we do not have an absolute measurement of orientation. The best you could have would be an initial guess, and update your guess using the data from IMU. Note that even if your initial guess is accurate, the error in the estimation will increase overtime.

Second problem is that it is likely that your robot will have some kind of kinematics constraint. (e.g. robot cannot move sideways) Therefore, it is more of a "how to impose kinematics constraint problem" instead of a "sensor fusion problem".


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.