2009. Oh where to begin??
This year, KIPR decided to switch the hardware on us, replacing last year’s XBC with the new CBC. Like Sam said in the previous post, the CBC has a new fancy touch screen and seems like an improvement at first glance. After a first glance, however, one begins to realize that it is really not much of an upgrade from the XBC. More like a downgrade. The XBC was tough, reliable, and familiar whereas the CBC is completely the opposite.
We plotted our general strategy at the start-of-season meeting and voted on general designs. We decided to use the Vex motors rather than the black gear motors we used last year. This eventually became a very large problem. After the hardware team finished a working prototype of VexBot, the software team found out through experience how utterly unreliable the CBC really is. Many times (there was a running tally on the whiteboard at one time) the CBC would crash in the middle of a test run, but the motors and servos would still be enabled. This was a very strange occurrence that we initially attributed to power level. We thought that the CBC just needed to run at above 6.6 volts to avoid any more ‘suicides.’ That is, until it crashed on its first run after a full charge.
We began to zealously test the robot to try to find where the failures were coming from. The mentors suggested running “the simplest code possible that moves the robot.” The software team then created a few programs that moved the robot forward and backward using different drive methods (mrp’s, mav’s, motor commands) and came up with very interesting results.
It turns out that the culprits were the new Vex motors we were using. When running the tests, the software team found out that the robot would crash when VexBot would quickly change from driving full-speed forward to full-speed reverse. This was obviously a major problem for us because we want to finish our routine as quickly as possible (“Score early, score often”). I think that the problem was best explained by Mr. Gras when he said that it was similar to flicking the reverse switch on a ceiling fan while it’s running. When you hit that switch, the fan realizes that, suddenly, it’s turning the wrong way and it tries as hard as it can to go the right direction in as little time as possible. Naturally, this is very bad for the fan because it grinds itself to a halt and then runs the opposite direction like you wanted it to. Now for the robot, the same thing was happening. The CBC would get a command to reverse direction very quickly and would receive a large power overload while it tried to carry out that reverse.
Now, this was a very big problem. We could solve this one of two ways: we could add a short pause between speed reversals or we could switch to the black gear motors that we used last year and are more familiar with. We took a quick vote and decide to switch to the black gear motors which, unfortunately for hardware, meant we need a new chassis since the Vex motors are slimmer than the black motors.
I am happy to say that we are now running suicide-free and that the new chassis is actually more sturdy than the previous version. Hopefully, we can continue coding now with no more hiccups and accomplish all the tasks we set in our strategy! Piece of cake, eh software?