Automated Tests and Data Mining
The communication architecture implemented for the 2012 rover made real-time telemetry possible for the first time in the team. This new capability combined with my API that exposes the hardware in meaningful ways allowed easy integration of the low-level interface with scripting languages such as MATLAB and Python.
The extra layer of abstraction organized the hardware of the rover in a functional way. Users of the rover can query and command the hardware according to their functions rather than their hardware implementations (issue a "go forward" instead of four "turn motor A,B,C,D in some directions" commands, for example). All this had to be done without incurring too much communication or processing overhead.
Having an API for high-level languages enables performance tests be done automatically and repeatedly. The plot below shows the actual test result of one stress test session on our main drive motor controller:
(click to enlarge)
There had always been some doubt as how reliable our main drive motor controllers actually were, and how they would behave under extreme conditions. So in a test to find out the answer, I increased the supply voltage by 50% and deliberately jammed the motor to simulate a rover stuck in the Utah dessert. With some MATLAB scripting I could have the computer run the test repeatedly, with precisely controlled durations and breaks.
top view of the above graph (click to enlarge)
Beside proving that our controller successfully survived the overload, the data also showed how the power consumption of the motor goes down as the temperature of the coils goes up (due to increased resistance). With this data, we could actually predict and verify how a rise in coil temperature affects the torque output of the motors (in this case, even by how much) and ultimately, the performance of our rover in the Utah desert or the lunar regolith.
There were other fun things I could do with real-time plotting too, such as:
(click to enlarge)
Changing the load conditions while the powerful motor was spinning (a bad idea when it was held between me and my LCD monitor on the desk...).
I enjoy the process of extracting and interpreting information from data collected by machine, as large amount of data often gives new insights not obvious to my intuitions. Besides, I think plots like these are beautiful, both technically and aesthetically.