Autonomous at Last
Great news! Jim and I fired up Yeti with the first version of the new autonomous control code and it works astounding well even before tuning the controller. For those of you who are interested in the details, read below, otherwise skip over the next paragraph. We're heading out to the shear zone on Saturday now, and Yeti looks to be in great shape to complete the mission, though it took a string of anxious nights of hanging out alone in three layers of jackets hauling Yeti up and down stairs by myself at 2am to get here. I seem to have overshot the required effort level a bit since we still have a couple days, I guess I'm getting out of practice on the 'procrastinate and cram' cycle.
Yeti before the trial run, looking out over the ice runways towards the Transantarctic mountains:
The niche of a subbasement where all of my work gets done. One pro of this arrangement is that I get to try out the new concept of working at a standing desk. A con, however, is that the desk happens to be a barrel of toxic waste, and covered in the dust of some other toxic waste*.
After several days of pouring through the details of the code and implementing a bunch of features I've always wanted but never had time to develop, I finally put a few pieces of test code together into the first version of the autonomous control code for Yeti. I've been 'almost there' for several days now, and it was seemingly frustratingly slow to get all of the issues hammered out. When I finally put all of the new code together, I called Jim to come help me get Yeti outside and to be in place to tackle it in the highly likely event that the first version of the code didn't work and it decided to go on the fritz. One of the key issues roboticists have to deal with is preparing for the inevitable eventual human enslavement to robots. It helps to have someone close to the off switch to preempt any precursors.
I surveyed a few waypoints out near the ice pier at McMurdo, and drove Yeti out there to start the testing run. I assured Jim that there was no way it would work, and nervously pressed the button to begin the run. Yeti took off and made course corrections towards the first waypoint, found the waypoint, then reoriented and finished the route. I was surprised enough that I had to try it again, and in ran the route in exactly the tracks it had just made. We then took it out for a longer and more complicated run, and it executed that route flawlessly. This is great news, because now we can focus on improving the reliability and making the robot more generally useful, in addition to adding all sorts of unnecessarily sweet features.
If you're not interested in why the new version works and the old one didn't, then skip this section. After spending a lot of time drilling into the code, I found that there was an issue in translating lat/lon coordinates to cartesian coordinates in which the least significant digits were being truncated and rounded, artificially limiting precision and creating an unnecessarily low resolution for a bearing calculation. I found that if I did all of this arithmetic on only the decimal lat/lon minutes, you get much better performance. The key breakthrough that made it possible to test and isolate the problems were twofold. First, I began to use the powerful debugging features built into the Dynamic C development environment, and second, I implemented a more functional telemetry that allows Yeti to transmit data back to the basestation for processing and analysis. Before this, we had to test code by driving Yeti around and seeing if it was roughly doing what we wanted it to do. The previous version of the code accomplished exactly that - it roughly accomplished what we were trying to do. Now, however, I can finally throw Matlab at it and have some confidence that we've got it right. I'll post some plots tomorrow after another round of testing.
Some more pictures:
This is a memorial erected to Scott in 1912 on top of Observation Hill next to McMurdo on the very end of the peninsula on Ross Island.
Toby, one of the mechanics, built this snow chopper entirely out of salvaged parts from junker snow machines, and it works just fine. Note the ice axe built into the front suspension.
This is one of the Case tractors that will be hauling fuel on the traverse. These machines run around $500,000 stock, with an additional winterizing fee. In 2008, the Greenland traverse got one of these stuck in the ice 50 miles outside of Thule and had to leave it there. They came back a year later to find it entirely buried in the ice, and sent a team of people to recover it. It took them several weeks of digging to free it from the ice, and eventually they got it out.
These never get old, every night is different.
I'll have a more time tomorrow to post pictures (I know that's all that most people see :) and some pretty plots of telemetry data. I've also received some extremely well considered and length responses to the 'should you pee if you're cold' argument and will post links to the solutions that some people have posed. If anyone else wants to throw their hat in the ring, send me your response. I've recruited a coalition now on base that's on the thermodynamically accurate side of the debate, but many remain unconvinced!
*These barrels are probably not filled with anything that is either toxic or waste, since neither are allowed under the Antarctic treaty. Technically I'm not even allowed to pee outside the building, and any drop of fuel or even food that is spilled gets cleaned up and packed out.