Wednesday, June 5, 2024

Event 2: Bonney Lake

Oppo is so small! Hiding among our small team...


Bearcat's second event took place an hour or so south in the town (city? hovel?) of Bonney Lake. Generally speaking, we know that Glacier Peak is a competitive event, with a number of generally high performing teams attending year after year. Due to the semi-randomness of how teams choose their district events and the general availability of each event, Bonney Lake looked even tougher than Glacier Peak. We had two weeks to prepare and improve our robot for the madness, and attempt to scoop up as many District Points as we could.


In the two weeks leading up to Bonney Lake we did two things: we took one day to mechanically update and check everything we could, and we took the rest of the days to tune autonomous routines. (Author's note: technically we did three things, 'cause drive practice, but that was really just a lot of "hey grab the Note over there and put it over here" over and over again...) On the intake, we tried some new wheel configurations and strategic dremeling to make our intaking area a little wider to aid both autonomous and tele-operated control. We spent every possible night at the practice field tweaking and finding speed in our autonomous paths. If there was one thing we learned last year, and again this year, it was the importance of autonomous. In this regard, we did not arrive in Glacier Peak well-prepared. We would be for Bonney Lake.


We cut away from plastic material to ensure our first contact
with the Note came from the grippy intake wheels.


Through tuning with PathPlanner, we learned a few things. Firstly, the box being drawn on the screen was very small, because we somehow had never actually set our frame perimeter plus bumper. While it is still a small robot, the box on the screen suddenly got much bigger! Another thing we learned was that PathPlanner seems to use the robot with the simulation telemetry, and ours showed large errors during moments of initial acceleration. Turn out, back in week 2 we set the weight to 30 pounds, and hadn't updated it since! We still saw some variance, but after much tuning, the simulation was looking much closer to reality.


PathPlanner makes it look so simple!


In the background, there was a design getting worked on for that v8 intake, hoping for the opportunity (heh, get it?) to score more easily from the Podium, and maybe in Auto as well. With the robot constantly not in the shop, and many able hands, we also got to clean up from the build season's mess, and better organize the storage unit we acquired last summer. Being able to move around and find things in labeled bins is a huge plus!


We brought out our 2023 robot Insight to help with driver practice.


We loaded into Bonney Lake Saturday morning, saving a Friday trip as the venue was quite far away! We have a nice simple pit, and this year the goal was to improve in our ease of load-in and pit space use, without adding time for unpacking and setup. Some teams have very beautiful and very labour intensive structures to advertise their team, sponsors, the robot, a full set of LED lights, toolboxes and parts for everything any robot could ever need. We... don't. Our one major frill is a tiled foam floor, because it gives so much comfort to those standing in the pit area for the long competition days. Beyond that we have four rolling carts: one contains batteries/chargers/large spare parts. One contains (hopefully) labeled bins with small spare parts, specialty tools, electrical/pneumatic supplies, and first aid equipment. One is our primary toolchest (with I think one drawer dedicated to zip ties and hook-and-loop tape). And finally the last cart is our robot cart, which held Oppo, the spare bumpers, and the drive station. The students timed our load-in: 2 minutes 30 seconds. (My favourite part is how I got to enjoy doing nothing at all!)


Our 3.5 Note auto was decently consistent - we ran it a lot at this event!


Day one progressed, I think pretty much as I expected. A few tough matches, a few good matches, and we performed both reliably and consistently! Early in our quals matches we did have a lovely Bear-pair. It's always fun playing with similarly named teams, and we performed super well, winning a 4RP match!


Around lunchtime we were in good spirits, the robot was working well, and we were doing our best to keep on top of things. Lunchtime is sometimes difficult, as you can be at a table eating food and suddenly wonder if the chain tensioner that you haven't looked at since match 1 is doing okay. It gets mentioned to another team member who's also eating, and of course we should be able to take a look before the next match. We don't have any paper checklists or sticky notes or anything at the lunch table, but this will be fine, and this freshly cooked burger is pretty good, no worries!


"What do you mean nobody tensioned the chain?"
(Probably not at all what they were actually discussing.)


Our next match after lunch we missed pretty much every Speaker shot we took. Whoops! Fortunately we came out with with win, but no bonus RP on top. Lesson learned - keep up with our maintenance schedule, and probably figure out how to convert lunch questions into tangible actions. At the end of day 1, we had a solid 7-3 record and were looking good to get a decent haul of District Points.


What could possibly go wrong?


After main assembly, testing, tuning, two events, and even
more drive practice, Oppo was starting to show signs of wear.


Lots, it turns out. 


The next morning - bleary eyed after a late night and early bus ride - we arrived at the venue feeling great. Scouts found spaces in the stands, pit crew and drive team headed down to our pit, and we had a software change in the works just to ease one of the operator buttons. We made the change, then proceeded through our morning systems check - all the swerve modules drive and steer correctly, the shoulder and wrist zoom between each programmed setpoint, the shoulder wiggles about 15-20 degrees each time it changes direction - wait. What? We paused the system check, and sure enough, we could rotate the arm by hand. A lot.


Breathe in. We're in one the early matches this morning and we have a big mechanical problem. Breathe out. Time to get to work. Let's make sure the drive team knows whats happening and we follow the correct procedure, having a team member on the field. Breathe in. Chain off, shoulder bolt and axle removed. Problem identified! The sprocket is held on by 4 bolts on each side, and most have loosened, but one actually snapped. Breathe out. We need someone to cut and tap another standoff while we remove the failed one and re-tighten the remaining 7 bolts. Breathe in. We get our first call to Queue.


Mid-repair.
I think we were in okay spirits, given we were queued and the arm wasn't attached...


As a mentor in these situations, (and perhaps as a follower of Douglas Adams?) a key focus is DON'T PANIC! I personally actually start to focus on my breathing, which let's me stay aware of my tone of voice. Keep everything level, almost monotone. We're doing fine, one step at a time. Let's do this, then let's do that. Don't worry about anything else. If nothing else, this process helps me, but I do hope it resonates with the group enacting the fix. This was a pretty gnarly morning, and I don't recall if I had even finished my second cup of coffee. The queuer kept returning letting us know when we moved from pre-queue into queue 1 and out onto field queue. Head coach kept telling him we know, we're working on it! (His voice naturally carries, yeah, that's why it was loud :-D ) Our drive captain was probably freaking out. Our match kept coming closer and the robot was nowhere to be seen.


Students learned about material science and torque transfer
during this whole incident.


Breathe in. New standoff arrived, new bolts in hand, now we just need to line up the bolt, spacer, sprocket, spacer, stand-off. Breathe out. Got it! That took... forever. Twist the bolt until they are taught - not muscle-popping tight! We don't need to strip any threads here. Breathe in. Re-align the shoulder pivot while another student centers the dead axle. Tighten the bolt. Breathe out. Hold the arm here please, I'll start aligning the chain and setting the connecting link. Breathe in. Our alliance moved to field queue. Breathe out. Second chain attached. Please set the chain tensioner while you walk to the field. (They... didn't quite walk.)


I made it up to the stands to watch the match, and saw our robot getting placed onto the field. Breathe in. The teams are announced and autonomous begins. Raise, launch, score! Drive. Lower. Collect. Drive. Raise. Score! (Etc.) Breathe out. Nailed our auto. Played a match as if it were business as usual. (Got destroyed, but, that's not really the important part here.) I know this is not a unique situation, but it's always a curious thought - do people even know what they just witnessed? I breathed a sigh of relief that we conquered that struggle.


It wouldn't be the only struggle for us though.


We ended qualifications with a 7-5 record, the scheduling deities saving the biggest challenges for last, but we got picked up by the number 6 Alliance. More work to do - can we make our autonomous just a little faster, and score that elusive 4th Note? Lunch was consumed at a pace, and once again we got to work. Software had a plan and headed to the practice field to test. The practice field was in a smaller corner of the pit area - just big enough for a robot to run a 3-Note auto path, but not quite enough space for all 4. In the PathPlanner library, we removed the final segment so that we could test our speed improvements with the space in front of us. (There may be some of you who know where this is going - we did not.)


Attempting to continuously improve through the weekend, we
worked on speeding up autonomous, and improving operator controls.


Details do get a little fuzzy at this point. Somewhere between running tests and lunch, and sitting in queue for our first eliminations match, code was deployed (or re-deployed?) to the RoboRio. An issue in PathPlanner came up, wherein the deploy process crash-looped with an error hiding in the logs stating "null.path can not be found". Field staff and volunteers were extremely helpful and came to our aid, yet we had done them no favors by burying the Rio in the belly of our small beast. The incorrect reset sequence was pressed on the RoboRio, and we went into NoApp/safe mode. We lost visibility of our code and team number. The length of time it took to try, retry, and identify the root cause grew and grew until our Alliance's first and second match were both played, lost, and we were out.

Reliability in all things is key - we spoke with a few folks after learning of the known issue with PathPlanner (files removed from paths do not get deleted from the Rio, and the library will attempt to load them anyway), later reproduced the error state back in the shop, and wrote some error handling logic so we won't encounter this type of failure again.


I love to help, but it's never good when we're troubleshooting
an issue instead of playing a match.


We watched the remaining Eliminations matches, holding some hope that the judges saw our earlier robot performance, and would recognize some technical aspect of Oppo. The Quality Award - one I think would be quite fitting for the team - came up. And the judges talked about a team casting a line and fishing for quality. Hrm, there's a few water and ocean related teams here. Bummer. "The winner is team 7627!" I'm pretty sure I actually paused for a moment, trying to parse - what the heck did fishing have to do with our robot?


We had the best intention to let folks know when we were in the pit, or away. (It is sometimes difficult to tell if there's a herd of people and a robot, or a big empty space.) So we made a sign on our laser cutter! It simply read "Gone Fishing", with a few little fishes etched and colored. It was part of our pre-match checklist to make sure we flipped the sign over to let everyone know we had left the pit. That little detail came to a few folks minds as we walked toward the field to recieve our Award. Even with all the emotion and storytelling describing the ups and downs of a build and competition season - being recognized with the Quality Award is how I want to remember ending this day. And this season. With no points from Eliminations matches, we had not earned enough to progress to District Championships.


Quality sign.
Sadly we were 'gone fishing' for the remainder of the season.


It never feels good to end early, especially when there's belief that so much more was possible. Our goals were to compete effectively at District Championships with some hope of earning a place at the World Championship, and we fell short. Our goal now is to find all the positives in our season, and celebrate the accomplishments we did achieve. This was a much more complex robot than last year's, and while we didn't find immediate performance, we grew - a lot! Here's to taking that growth into next season. We'll see you then!


Quality team.


No comments:

Post a Comment