I am trying to compare the performance of an IMU in motion against an optical tracking system. The IMU has an accelerometer and a gyroscope and gives output in the local IMU coordinate frames. The optical tracking system outputs the position and orientation in the global coordinate frame. The IMU is moving.

I need help in understanding how to compare the output of the IMU against the optical tracker.

  • Is this a common problem in robotics (comparing the output of a coordinate system against the output of another coordinate system and in my case, the IMU is moving)?
  • How do I approach the issue?
  • Are any standard libraries in Matlab or python to solve this?

1 Answer 1

  • It isn't really a problem but a solution rather. The difficult part is pose estimation, comparison just needs to have a transformation between the estimated poses.

There have been research works on fusing vision information with IMU data to enhance accuracy.Baranek, R. (2012). Inertial Measurement Unit–Data Fusion and Visualization using MATLAB. IFAC Proceedings Volumes, 45(7), 12-16. is one such example.

Comparison between multiple frames information just needs the relative transformation that then all estimations could be compared against one another.

  • An IMU in motion will give you the acceleration measurements from accelerometer, the angular velocity from gyroscope and potentially the heading from the magnetometer. You could use the acceleration to compute the velocity and position changes over time, subject to accumulation errors and noise. The gyroscope can help alleviate the issue and get you angular velocity and thus the angular position, subject to drift and bias again. The magnetometer can finally help better the estimate and thus, a proper fusion technique like the Kalman filter(like EKF and UKF) can get you high accuracy localization information(pose and orientation) in the local frame, i.e. the coordinate frame that you started moving from.

Now, if you know where you started in the global frame, then you can easily transform all information obtained from the IMU in local frame to global frame and compare against the vision information.

  • There are several libraries for pose estimation using IMU and other potential sensors like wheel encoders. Basically there are EKF and UKF libraries to predict pose from the IMU data and I believe vision information (coming from something like the Vicon system) is already processed. The few libraries that I know are ROS's robot_localization package, Orocos Bayesian Filtering library and FilterPy.

If you have trouble in estimation, this tutorial IMU Odometry by David P Anderson is good but uses C/C++.


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.