I'm working on an application to compute the absolute heading (yaw) using the following hardware: WIT-Motion HWT905 IMU https://www.wit-motion.com/digital-inclinometer/witmotion-hwt905-ttl.html. It can output a quaternion, and I made the transformations to set it in the North-East-Down (NED) reference frame. In my application, I use the IMU on the top of a car and drive it in an urban environment (city).

To determine the precision of the yaw estimation, I use ROS to record the camera attached close to the IMU and the IMU readings. Then, I use the saved data with a dense 3D map of the region and I align the corresponding view of the image with the rendered view of the map, I have a GPS too.

I noticed that the heading estimation has a weird behavior when I placed it close to the car's metal body. Searching deeper about it, I've found that there are two main distortions that affect the magnetometer readings, hard and soft iron. Hard iron distortion is caused by magnetic materials near the IMU. Soft iron is caused by ferromagnetic materials near the IMU, i.e. materials that are attracted by magnets.

So, my solution to overcoming the car's body effect was to calibrate the IMU near the car's body. Performing the same test again, the measurements were still wrong.

After this, I would like to know what are the sources of error in an urban environment that will affect the yaw (heading) estimation. Electrical wires, cars passing by and etc.

  • 1
    $\begingroup$ See also: en.wikipedia.org/wiki/Binnacle for how ships compensated their compasses for iron in the hull. $\endgroup$
    – Ben
    Sep 16 '21 at 13:57
  • $\begingroup$ @Ben, cool. Thanks for the link! $\endgroup$
    – user4642
    Sep 16 '21 at 15:44

Your Answer

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

Browse other questions tagged or ask your own question.