Stronghold – Day 1

The Krypton Cougars utilized a bold new strategy for this year’s robotics competition, and arrived at the arena with a machine that was neither mechanically complete nor programmed. I wasn’t in the arena the first evening and morning, with its flurry of activity, but I was kept in the loop via text message. The first problem brought to my attention was an old friend from previous seasons. Once our robot’s radio was configured for use with the field, we could no longer connect to the robot from our laptops.

This doesn’t seem to impact other teams. Perhaps they prepare their computer properly ahead of time, or maybe most teams just don’t do much programming after their robot is configured to go on the field. It stood directly in the way of the Krypton Cougars’s bold plan, however. In a stroke of brilliance, the team mounted a second radio on the robot, one for the field and another set up like we had at home. They stacked them, to make reading the signal lights as difficult as possible. Before each match, they would unplug one radio and plug in the other. After each match, they reversed the process. I’d like to say this arrangement didn’t cause them any problems, but that would be very misleading.

Having solved their radio difficulties, they were free to complete their robot. While driving toward Philadelphia the morning of the competition, I received a text message informing me that the arm on the front of the robot could move up, but never down. After walking the programmers through common troubleshooting steps, I asked them to describe the blink pattern on the affected motor controller. They reported that when the arm wasn’t moving it showed red lights, blinking in sequence: A limit switch was being triggered.

When the robot was designed, I hoped there would be limit switches at the top and bottom limits of the arms, both to avoid the arms moving beyond their expected range and to allow us to recalibrate the position periodically. The team had wired limit switches to the motor controllers, but attaching them to the robot had been left for some future date that never materialized. Instead, the limit switches were bundled up and dropped into the interior of the robot. The solder on one limit switch had been poorly applied, and the wires disconnected. Rather than fix the switch, the team tossed the loose wires in with the rest. Deep inside the belly of the robot, these wires had managed to cross, creating a short-circuit that was being read as a closed limit switch. Once these wires were separated, the arm moved downward with ease.

Kelly and I arrived at the high school shortly after noon. The parking lot was crowded, but we eventually found a space far from the school, where we unloaded our lifetime supply of baby gear and braved the bitter cold. Once Kelly and Miranda were safely in the arena, I headed for the pits.

By this time we had already had our first match, where our robot had put on a notable performance by spinning counterclockwise for the entire length of the match. While this had provided the spectators with much needed amusement, our team felt it was not a viable long-term strategy. There are many reasons why a robot might drive in a circle, but to continue doing so without input is rather unusual. We hypothesized it was caused by a sensor on the drive base not returning the correct speed. Rather than investigate the nature of the failure and correct it, we opted to turn off the sensors on the wheels and hope for the best.

This strategy was immediately successful. Without its sensors the robot drove in a straight line. Since the robot no longer knew its own speed, it went full force at all times, much like the students driving it. In fact, they were so excited by their new-found driving capabilities that they forgot the rules of the game and racked up twenty-five penalty points in their next match.

Up to this point in the competition, the robot’s arms had been restrained with bungee cords until they could be tested. Spurred by their success, the team removed the bungee cords. During their next match, the shooter arm, now free of the bungee cords, ran into its own bumpers, ripping the shooter wheel sensor from its mount. The team decided they didn’t really need a shooter wheel sensor anyway.

The next step was to fine-tune the motion of the arms. The pickup arm was too weak to lift the portcullis, so the programmers tried to increase its power. After a few changes, the robot stopped working entirely. The team frantically looked over the robot, testing every possibility. Network connectivity was good. The motors had power. The roboRIO was turned on. All the wires were still connected. Yet no commands were running on the robot. “What did you change?” asked a mentor in frustration.

“Nothing. Just numbers in the config file.”

“How could that cause this?”

It couldn’t, of course. The numbers only controlled the shooter system, yet all systems had stopped responding to controller input. Finally, after exhausting all other avenues, I asked the programmers to show me, rather than tell me, what they had changed, just in case, somehow, their configuration changes were responsible.

We worked through, line by line, until we came to a removed line:

#include "ControllerMap.h"

“Why did you remove that line,” I asked in shock.

“We decided it didn’t look right,” they answered.

“Please put it back. It is what tells the program how to turn button presses and joystick movements into commands.”

With the program back in working order, the team returned to the field to destroy more sensors. Within a few hours, all our sensors except the light sensor in the center of the robot were broken or disabled. Mechanical failures stacked up as the team drove with a reckless abandon better suited for the last match of the world championship instead of the first day of our first district competition.

Soon, though, the drive team reported a seemingly non-mechanical issue. “The arms aren’t moving. We don’t know why.” The programmers pored over the code, but nothing seemed amiss. The drive base continued to work as normal, but the pickup and shooter system were unresponsive. When the programmers left to grab food, I picked up the driver station.

“Did no one notice that the second controller isn’t showing up?” We tried unplugging it, plugging it into a different port, and even forcing a USB rescan, but the laptop continued to report that no second controller was present. The controller was dead. While a team mother rushed out to purchase a replacement controller, our team begged for a spare controller, and soon found a team willing to sacrifice a controller for the cause.

Reinvigorated, the team returned to the field. The robot, now nearly completely blind, was entirely dependent upon its drivers to keep it safe. The drivers, however, had other, more important considerations, and smashed the pickup arm into so many obstacles that it eventually broke free from the robot. Thrilled by their clever modification to the design, they decided they hadn’t needed that either.

Stronghold – Preview

“Let’s check the robot’s camera feed.”

Click. The robot blinks to life. Eric waits at the programming laptop for the wireless connection.

“Hey, this motor isn’t plugged in.”

Click. The robot goes dark. Thirty seconds pass.

“How are we supposed to check the camera without power?”

“Oh yeah. Eric, we turned off the robot.”


“It’s ridiculous how we have to relearn the same lessons every year. We should write down what went wrong and go over it at the beginning of next season.”

“Connor, we did that this season, and look what happened.”

“Oh yeah. But, like, the arm outside of the robot. Every year we have one and every year it gets broken. We even made this year’s arm from quarter-inch steel, and it still got destroyed. We shouldn’t be extending outside of the bumpers.”

Twenty feet away, Tory and Gavin work feverishly to attach new aluminum arms to extend outside the bumpers.


“Gavin did a terrible job taping these wires. I can do better.”

Connor grabs the scissors and cuts through the delicate encoder wires taped inside.


“Henry, that motor is already attached.”

“What?” Henry asks, tugging it from the robot and snapping the data cable.

Stronghold – Westtown

The Krypton Cougars arrived at their second competition with only one obstacle standing between them and total domination: themselves. The new pickup system (also known as the old shooter) had been designed without measuring if a ball sitting on the floor would touch the intake wheels. Testing revealed that the new metal base-plate would hit the ball first, knocking the ball away repeatedly. After much deliberation, and a sometimes contentious discussion about what shape the cut should be, the team decided to cut off an inch from the front.

With their robot now even more unstoppable than before, they had it weighed and inspected. Once their radio was configured to be plugged into the field, they got in line for their first practice match. Finally they reached the front of the line, eager to test their new design. “Sorry guys, that’s all the matches we have time for tonight.”

Undeterred, they returned the next morning and stood in line again. When they finally played their long-awaited match, the new arms performed as anticipated, getting hit early in the match, bending the shooter and causing significant damage to the robot. Back in the pits, the team decided that making the same mistake a second time wasn’t quite enough. They removed the angled intake bars from the aluminum arms, leaving only two short tusks in front. Since each tusk was one-inch-square, the pickup mechanism’s width was now approximately the same as the ball, making collecting a ball from the field nearly impossible. The team saw that their pickup design was good and took the robot to the practice field to see how great their shooter was.

The team stood, waiting by the field as team after team tested their robots. “Where are we on the list?”

“List?”

“Yeah, the list where you sign up for a time slot to test your robot. You did sign up for that?”

“Oh.” The team reserved for a time slot and eventually tested their shooter. They scored two high goals, out of dozens of attempts, and their joy was beyond containing as they shouted for joy while the other teams stood silently for the national anthem.

Practice time was over and the main event began. In their first match, the Krypton Cougars got off to a great start, easily clearing the defense in front of them, and slamming full-speed into their opponent’s wall, an effective, if unplanned, intimidation technique. Delighted, the team scurried into line for their second match.

The second match was equally successful, with another intimidating autonomous, until a head-on collision with an opposing robot sheered through two aluminum brackets like they were tissue paper, leaving the shooter hanging by its wires. Without enough time to fix the brackets before their next match, the team used bungee cords to strap the shooter to the robot and went back on the field. Unfortunately, they neglected to strap down the duct-taped-on limit switch, and left it laying on the field like a deceased orange long-tailed rat.

Their next match wasn’t until after lunch. They worked feverishly to make new brackets (They hadn’t brought replacement parts). Far too quickly lunch was over, and matches resumed. Their match approached and the team continued reattaching the parts they had disconnected. The match before theirs began, and the team still hadn’t finished. Duct tape and zip ties flew as the team strapped down every loose piece they could find. It was time for their match to start, and the team deployed code to the robot as it rolled towards the field.

When officials finally made them stop working on the robot, it drove well and the shooter worked, mostly. After the match, the team found that the limit switch had come unsoldered again. They re-soldered it, but then the arm would only move down, until it reached the bottom switch, at which point it wouldn’t move at all. The team checked the top limit switch, but it wasn’t closed. Figuring it had short-circuited, they removed it entirely, but the arm still didn’t move. Closer inspection revealed solder between the solder pads, creating a tiny short-circuit. The team melted the solder off the pads, but didn’t have time to attach the limit switch before the next match.

Having now unsuccessfully soldered the limit switch three times, the team decided to rotate the gearbox so they could see what they were doing. After loosening the belts and disconnecting the output shafts, they rotated the gearbox until the solder pads were on top. Now able to actually see what they were soldering, the limit switch attachment was successful.

The team celebrated with cookies, which they took to the track field behind the high school. There was a large pole-vaulting mat on the field, with yellow warning labels on every side indicating it should not be stood on while covered. The team jumped on it happily and talked about how there was nothing that could be done to make their robot any more perfect than it already was.

In its next match the robot did not cross the defense in autonomous, and the drivers received a yellow card for being on the field when it wasn’t safe. Back in the pits,  the team realized they had no electricity. The battery charger was not charging batteries and the laptops were going to sleep. While event staff were summoned, the drivers complained that they had lost connectivity with the field, and hadn’t been able to tell the robot which autonomous program to run. They decided to reboot the driver’s station in the hopes it would correct the flaw.

It did not. After some deliberation, the programmers decided that rebooting right before a match would be better. That seemed to work, which was unfortunate, because the autonomous mode they chose was untested and the robot slammed its shooter into the low bar at full speed, rendering the shooter inoperable for the rest of the match. The team immediately took the robot to the practice field and tried to replicate that failure. Fortunately, mentors intervened and suggested that it might be worth testing without the obstacle until the issue was fixed. The programmers tweaked the code as their laptop batteries died, and deployed a fix for autonomous mode just before forced hibernation.

The robot performed well in its final match of the day. The team brought it back to the pits, excited at the great day they’d had. That’s when someone pointed out that the top limit switch was beside the shooter instead of above it, negating its protective abilities, and allowing the shooter to slam repeatedly into the top of the robot.

The next morning the team returned to the field, ready to cap off their glorious performance. In the first match, the robot sat quietly during autonomous. Once the driver took over, he could only turn right. Halfway through the match he threw up his hands and walked away, leaving the robot on the field without an operator. A programmer took over and moved the arms up and down a few times, but the robot remained jammed between the field wall and a defense.

Fortunately, a friendly judge noticed their plight and helped them properly connect the driver station to their robot. In the next match the robot behaved in a more pleasing manner and left the field without any complications.

As the last match of the competition neared, the team decided they needed a grand finale to cement their position in the minds of other teams. They wished to leave no doubt that they should be chosen for the playoffs. Fortunately, they had just the thing. They prepped the robot to shoot a high goal. Considering that they weren’t reliably hitting the goal on the ground it was a bit ambitious, but the team knew they needed a big finish. They started the match with the ball and drove down the field, positioning themselves eight feet in front of the goal. The carefully lined up the shooter, moving it up and down, and rotate the robot carefully into position. When they were sure it was perfect, they launched the ball.

With the tap of a button, the launcher sprang into action. The wheels spun and the ball flew upwards, spinning majestically under the fluorescent lights. It bounced harmless off the side of the goal and rolled away. The team parked their robot by the tower, with more than forty-five seconds remaining, and waited for the end. No one picked them for the playoffs.

Steamworks – Week 1

The Krypton Cougars are back in action. After their banner performance last year, the students were eager to learn from their mistakes and made an exhaustive list of everything they wanted to do better, presumably so they could pointedly ignore it.

Last year the battery was very hard to replace, causing much frustration during and after the competition season. One student ended up becoming the designated battery installation expert, and that could only be done in a timely manner if the robot was held up in the air. For 2017, the team decided that wasn’t nearly difficult enough, and buried the battery even deeper in the depths of the robot. It now requires two or three students to replace a battery, after moving multiple robot mechanisms out of the way.

Last year the team divided their focus between too many things, and vowed this season they would streamline aggressively. When the game was revealed, the first meeting was to discuss what game elements the team would target and which they would ignore. The team decided that the fractional point value of fuel made it unnecessary, and that the forty-point gears and fifty-point climbing were much more important. They then spent half of build season designing a hopper and loader for fuel. Which leads us to the next improvement…

Last year the robot was not mechanically completed until the last moment. The programmers were forced to program on the car ride to the competition. We agreed that this year we’d finish all mechanical changes at least a week before the end of build season, giving our programmers and drivers the time they needed. Naturally, the mechanical team decided that prototyping the fuel hopper system took priority over programming and driver practice, leaving the programmers to test their changes in the gaps. An additional motor was added to the robot, for the hopper, the night the team arrived at the competition, which the programmers did not find out about until the night before. It was programmed at the competition. The drivers got no practice time. Continue reading →