Happy National Robotics Week!
As you no doubt recall, in celebration of the week I'm hosting a Data Bus Demo this Saturday for friends and family and a few local AVC participants.
I'm scrambling to get the robot ready. Late nights of Kalman filtering, complimentary filters, bug chasing and more. Here's what I've been up to...
After dealing with a timing/logging bug, most of the remaining work centers around estimation of position and heading. Using both, the robot can calculate position. I'm prototyping a couple of options for heading estimate in Octave for my SFE run.
The blue, crooked plot shows the position estimate based on gyro and odometry. (Distances are incorrect due to the bug I mentioned above). The gyro drift isn't corrected here so it quickly flies off the handle. The GPS heading + odometry estimate looks good. Better than the GPS position estimate, in fact.
A simple complimentary filter blends the long term stability of GPS data with the short term accuracy of gyro. In addition, a simple PI feedback attempts to gradually correct for gyro bias/drift based on error between gps heading and gyro-calculated heading.
Finally, a simple Kalman Filter produces some decent results despite lack of tuning. Most likely I'll ditch the complementary filter and just stick to a Kalman Filter to estimate heading based on GPS and gyro and a separate KF to estimate position based on GPS position and position calculated from estimated heading and odometry.
So, I'll be pretty busy during the evenings this week.
Yes, I plan to share what I've learned about Kalman Filtering at a later date.