Detecting a heading with the magnetometer
We saw in Chapter 12, IMU Programming with Python, how to plot a vector from the magnetometer, and how magnetic metal (such as bits of steel and iron) will interfere with it. Even the pin headers on the IMU board interfere. We can calibrate to compensate for this.
Getting X, Y, and Z components aren't that useful; we want a heading relative to a magnetic North. We can see how to use this for precise turns.
This section needs a space, with very few magnets present. Laptops, phones, speakers, and disk drives interfere with this sensor. Use a map compass to reveal magnetic fields in your space. I recommend making the standoff stalk on the robot as long as the cable allows, putting more standoffs in; the robot's motors have a strong magnetic field of their own.
Please avoid starting with the robot facing South—this will cause some odd results, which we will investigate and fix later. Starting with the robot roughly North...