Saturday, February 17, 2024

Week 5 - Apprehension

Robot parts, assembled!


For those with Week 1 Competitions, we are now closer to Competition than we are Kickoff. We have a Week 1 Competition. We're not crying - you're crying! Actually we're not entirely crying, we just need to continue to stay focused and make sure we take our time and do our work correctly. Our largest hurdles as we enter Week 5 are figuring out the Pathplanner and YAGSL libraries, producing an intake prototype that performs as expected, and getting our sheetmetal plates cut! Compared to the slump of Week 4, this week feels packed with stories to share. Let's gather 'round the campfire!


Hurdle One: The Pathplanner Paradigm


It works!! Oh, spoilers. Well, after a day off, used to peruse many Open Alliance threads and poke through a few code repositories, we came back with some thoughts and theories for why our auto paths always drive past their targets. First, we learned that every path in Pathplanner is a spline. There was a thread somewhere that you cannot create a path to spin in place because of this. What this also means however, is that translation <and> steering components are always verified. The tried and true "drive forward 3 feet and stop" won't let you tune just the translate PID, you need a solid starting rotate PID as well. Secondly we found a comment about drive speed and wheel discretization - if max linear speed and max wheel speed are the same, there is no overhead to rotate while translating.


Starting with setting speed values - in Pathplanner, for our first time tuning and figuring stuff out, we had set our max speed very low - I think like 1 or 2 feet per second. Because we were also testing our basic drive in YAGSL, we had also set our max module speed in robot constants to that same 1 or 2 feet per second. Oh hey, I think that's exactly point number 2 above, yeah? We can fix that. Looking at a few Open Alliance code depots, I also noticed a trend - they set 2 PID controllers for DrivePID and SteerPID at {5, 0, 0} and {5, 0, 0}. This wasn't just one team, this was 5. Or 6. Something about Computer Science struggles and off-by-one errors... Anywho, if it's good enough for a few of those teams, why not us? So we set our two PID controllers to match, then used the Swerve Drive Specialties values for our L2 system (15.1 feet per second) as the configured robot max speed (we still slowed this to 2 feet per second in PathPlanner). We booted up the robot, clicked run. And it. was. perfect.


Drive and.... stop!


It certainly look us a while to get here, but for me with my mentor cap on - I can provide reason and decent description for why we were struggling and why the fixes worked for us. Just as we got our software muscles flexing, we had to turn over control of the robot to the mechanical team to further test the V4 intake, then start the real building process. 


Hurdle Two: The Intake Investigation


Our V4 intake... doesn't work! This was our first "robot geometry" style prototype, though still cut out of wood. We technically tested two variables - squishy wheels and solid wheels - and tested 2 robot tasks - intaking and lobbing. Early in the season we had this goal of being able to shoot with only one movement (ignoring actually rotating the wheels/rollers...). It was not looking feasible. Our contact time with the Note is simply not long enough, our exit velocity is not high enough, we don't have enough juice, and the Note told me it really just didn't want to get tossed around. Fortunately, we are creative people and still have ideas tickling the backs of our minds, we're just rapidly running low on time as we need to complete the robot assembly, software bring-up, drive practice, and autonomous tuning. This is fine.


What V did I say this was? 3? 4? 5?


Let's talk math. Maybe we could have talked math earlier, but no time like the present! Some online physics calculators can provide lots of information here. Let's throw some random numbers pulled from thin air - at a 60-degree incline, starting 12 inches from the floor, a Note would have to exit a launcher with a speed around 22.5 feet per second to hit a total vertical distance of roughly 7 feet. For a 2" roller wheel, this is a speed of about 2800 rotations per minute. For a NEO motor, that's some amount of juice. (I stopped mathing about here, we thought we would prototype and make it work... We'll get there... One day...) Having calculated values to use and test against is one component of validating a prototype, let alone seeing if the Note actually reaches a given distance/height.


We're celebrating a lot of failures this season.
We did successfully score on a students foot though.


Design cooked up a V6 intake. (Can't wait til the twin turbo V8 intake.) Our previous iterations ran identical power to the top and bottom powered wheel groups. We're going to swap to powering the front and rear axles separately, and be able pre-spin one set of wheels before feeding in the Note. We're a little late to the party, but we made it! Also in designs backlog was finishing touches on the climber. We got our climbing structure (we bought it) and found a fun new way to transfer load-paths without needing to introduce lots of new cross-members and square tube all over the place (we stole it). Tension rods! Two threaded rods in tension can support the weight of the robot - to support the climber, we found viable mounting locations to distribute the weight of the robot into our existing structure - no new structure to add! Well, we did have to re-think some of our "all rivets everywhere" strategy, but I think that is an acceptable trade-off to make.


Hurdle Three: The Sheetmetal Supply


It works! I'm not sure how to describe what "it" is in this context, but hey, the point is we cleared this hurdle too! (2 out of 3 ain't bad...) We reached out to one of our sponsors as soon as our baby waterjet died. They responded quickly and enthusiastically, and on Tuesday we had a sheetmetal parts drop. Love it! We know we don't have every single piece of sheetmetal we need, but the core structure is able to go together, and we should be able to manufacture smaller parts by hand if necessary.


Parts arrived, getting deburred and holes checked!


With tubes and sheetmetal cleaned, prepped, deburred, etc, we could really get this thing together. Once again we used Cleco's to dry-fit as many pieces as we could, verifying all the parts interacted as expected, quality checked the manual holes we drilled, and made sure the assemblies fit in space (as best we could with Cleco's sticking out all over the place). At this point for our critical assembly, we will continuously provide a few reminders - no hammers, don't force it, and slow down. 


More great cliches - if you don't take your time to do it right, where will you find time to do it twice? Slowing down is probably the single best instruction to give right now, especially since all season until now we've been crying out "GOTTA GO FAST!". Double check the holes fit. Double check if the hole is for a bolt or a rivet. Does the bolt clear the hole cleanly? Does the bolt thread in easily? Now is not a good time for stripping or cross-threading threads. While the parts from our sponsor with their "giant lazer" can pretty much be guaranteed for quality, our human center-punch and match drill process can't. We won't nail all our holes exactly, so let's minimize our opportunity for mistakes.


Cleco's let us test fit all out parts together, like a <very> expensive LEGO set!


During the week we made significant progress, focusing on the order of operations. Our arm assembly was able to be put together, and copying a local team's 2023 concept we are able to install or remove our arm with one bolt. Mounting the A-Frame also held specific requirements - we needed to ensure the should axle would correctly line up between the 4 plates. To help, we made liberal use of 3D printed parts to try and keep each pair of plates concentrically located, then we installed the entire frame assembly onto the chassis with the axle and shoulder in place. After checking things over and over, we installed the rivets holding the frame to the chassis. We unfastened the shoulder bolt, and the tube slid out cleanly, and then re-slid back into place cleanly. Woo! Successful installation of probably our most critical joint.


A-Frame attached, and the connecting axle is smooth as butter!


Bonus Hurdle: The Mentor Miscalculation


I pre-emptively ordered the wrong gears for the V6 intake prototype. I didn't have the CAD or an ordering sheet in front of me, and I bought 16T gears that would be impossible to mesh because you physically can't locate bearings for both axles they needed to sit on. Much whomp occurred. I actually don't mind making mistakes in front of the students: we are all human, even mentors and teachers and adults don't have every single answer, and I get to model an example of responding to (an albeit simple) failure. (Many tears, Ben and Jerry's, loud shrieking are not at all part of my repertoire.) The correct gears are now in transit. They match the CAD and the ordering sheet. And there was much rejoicing.


2024 FRC Crescendo
Our 7627 Robot - Opportunity


Quote of the Week:

Student 1: "I am Mister Beyer."

Coach: "WAAAAAAAAAT!!??"


No comments:

Post a Comment