Route post processing.  As my robot executes its commands, the Linux computer poles the PIC for status.  Within the status return is the following information:
	if cmd == "s" then
-- send state info
send_word (distance)
send_word (heading)
send_word (ave_heading_error)
send_word (ave_x)
send_word (ave_y)
send_word (ave_rot)
send_word (dist_left)
send_word (dist_right)
Serial_HW_Write (pwr)
Serial_HW_Write (RPM)
Serial_HW_Write (mode)
end if

Where distance is the number of encoder ticks, heading is the current heading as read by the digital compass, ave_heading_error is the average of the difference between the target_heading and each of the last 4 compass samplings.  ave_x, ave_y, ave_rot, are the average of the last 2 readings from the IMU, dist_left/dis_right are the CM distances reported by the ultrasonic range finders.  pwr is what the MD03 is getting driven at, RPM is the number of tics/20ms, and mode is the operating state of the PIC control loop.

I'm still annalizing the data but I have some pretty graphs :)  see markiii_jalv2/magellan_py/analyse.py file if you are interested in how I created these plots.  These plots are of a single the track_heading command.

Running the robot on the grass shows me that I need to be sure to have good batteries.

Putting a magnet in the path of the robot shows the following.  Zoomed in.

Hitting a pot-hole (divot) in my yard:

Running on the street with magnet in path of robot, and zoom in on the magnet effects


I'm hoping that by analyzing the results I can understand what happened and why as the robot does stuff.  And then use the data to fine tune the execution of the robot.