Here is my debugger, I'm fairly sure I have it rocking now. I will say it looks strikingly similar to the MIT DYI Segway's debugger and I'll talk more about the debugger later.
I just found their site but it is the best source of knowledge I've found regarding filters and how stuff works. It isn't perfect but if you have a few beers, it starts making sense. I say thank you yet again to the smart people at MIT and thank them for putting source out there for me to reverse engineer.
Examples of Clint being confused:
- I didn't fully understand why they had .000128 in their source with no reference to why. It is referenced to used when multiplying the amount of nanoseconds that have passed, I think.
- How their setup runs at 100Hz.
- Why they multiple values by what appears to be a randomly chosen constant.
Examples of Clint's debugger app cheating:
- It is multithreaded on a multi-core processor.
Examples of Clint's debugger app not cheating:
- It does a bunch of extra debugging information and data transformation that a real world application wouldn't need to do.
- Lot of WinForm GUI processing crap.
- I'm running Outlook and have 3 other Visual Studio instances open.
- Roll, Yaw, and Tilt Z aren't needed.
PROGRESS!

I now have the Gyro automatically setting itself to the proper values now too. I also am getting voltage back from the gyro battery source too. Plus I'm getting degrees now instead of just voltage. I think I got the motor controller source done. I can start putting this in.
Things left to do:
- I need to refactor the debugger application and make all the work the form does for the most part into the Gyro class.
- I actually need to see how the battery value changes over time so I can add in an alarm when the gyro's battery is too low.
- Remove my damping, a low-pass filter will take care of this.
- Add in a Delegate (function pointer) so the motor controller class has a fast instant hook in.
- Create a "loader" for the motor class too but this requires me to actually have the controller with me.
- Get the Gyro class to be more tweakable on scaling and offset values, I'm happy right now however with what I have for the Pitch, X and Y values.
- Figure out a deadman switch.
- Make it work