Are there any Open source implementations of GPS+IMU sensor fusion (loosely coupled; i.e. using GPS module output and 9 degree of freedom IMU sensors)? -- kalman filtering based or otherwise.

I did find some open source implementations of IMU sensor fusion that merge accel/gyro/magneto to provide the raw-pitch-yaw, but haven't found anything that includes GPS data to provide filtered location and speed info.


Yes. The px4 software for the pixhawk autopilot has an extended kalman filter that uses an accelerometer, a gyroscope, gps, and mag.

A paper describing the a smaller ekf which only estimates attitude can be found on archive.org and code for the full ekf can be found on github with further information on archive.org.

  • $\begingroup$ Awbmilne updated these links in their answer, so I have updated this answer with those links. $\endgroup$ – Mark Booth Apr 25 '20 at 9:32

ROS has a package called robot_localization that can be used to fuse IMU and GPS data. This package implements Extended and Unscented Kalman filter algorithms. The package can be found here.

  • $\begingroup$ Thanks JuliusG. I didn't mention earlier, but my use case involves logging the GPS and IMU data (using embedded device), which after the usage scenario is transferred to a server and thats where I plan on performing the sensor fusion as a post-processing activity. I've just started looking at ROS and looks like it can be helpful for my use-case. Please let me know if you think otherwise. (my application is not exactly robotics, but I am seeking help here because sensor fusion is a fairly common thing in robotics) $\endgroup$ – O.K. Dec 5 '15 at 18:54
  • $\begingroup$ I believe you will find ROS very useful. It has a lot of tools not only for sensor fusion but for data visualization etc. $\endgroup$ – JuliusG Dec 6 '15 at 6:56

A followup on holmeski's reply.

It seems those pages have been taken down. I found the old webpages on the 'Way Back Machine'.

  1. Pixhawk Attitude Estimator (EKF)

  2. Pixhawk ekf_att_pos_estimator (Application)

  • $\begingroup$ Welcome to Robotics Awbmilne. On stack exchange, it is better to suggest an edit to an answer rather than adding another answer which clarifies it. Newer answers tend to languish unseen at the bottom of the page, so editing an answer with outdated information to update it with new information, especially if it's updating links, makes the information much more readily accessible. I've edited your links into holmeski's answer. $\endgroup$ – Mark Booth Apr 25 '20 at 9:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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