Project Log

Software / Hardware / Music Projects.

IMU Software Tutorial [YouTube]

I recently ran across this short (13:15) video tutorial describing the process and math of figuring out your position and orientation from an IMU. It was a quick overview at just the right level of detail to connect a lot of the different concepts that I have been thinking about for the rover project.

For the rover, simply getting orientation information out of an AHRS algorithm isn't going to be enough. I also need acceleration values (in the inertial frame) with gravity subtracted out, to be able to plug into the Kalman filter. In essence, since the rover doesn't have wheel encoders, I'm using the IMU's acceleration to help do dead reckoning.

If you put that video together with an AHRS algorithm like Madgwick or Mahoney, and then take a look at the coordinate transformation sections in the rather famous book "The Global Positioning System & Inertial Navigation," you'll get a pretty good overview of how my robot will know where it is and where it's pointing.


SparkFun GP-20U7 GPS PPS Note

I have this SparkFun GP-20U7 GPS Receiver. It seems to work pretty well. I'm changing around my approach to the autonomous robot, and now I need access to the PPS (Pulse-Per-Second) functionality of the unit. The PPS pad isn't broken out on this device - it's under a pile of red goop you have to scrape off, and is actually part of an unpopulated LED circuit. It's not immediately clear (to me, anyway) how to wire it up to a microcontroller to get the PPS signal.

I've referenced this blog post, which noted that "PPS is open-drain so a pull-up is required. If the LED is installed it is the pull-up."

I think that means the following hastily-drawn diagram applies: PPS diagram

At any rate, I was able to verify that the correct solder pad does some kind of pulse every second (when the device has a fix) with my worlds-cheapest-ebay-kit-oscilloscope. I don't really want to populate the LED/resistors (I don't have the SMD parts), but I believe I can just connect that "left" solder pad to a microcontroller input with an internal pull-up resistor and set an interrupt and be good to go. I'm leaving this blog here for reference since there isn't much about this device online for electronics newbies like me.

(Side note: PPS only pulses when the GPS has a good fix. This makes sense in retrospect, but it's a pain if you have to haul your junk to an open window on the second floor, for example, just to figure out which pad to use. Hypothetically, that is.)