I feel like we've changed something on every subsystem during these weeks between competitions...
By changed, I mean fixed or replaced.
We caught a few breaks with noticing issues, and/or broke a few things ourselves. :-)
Anywho - between competitions we had full access to our robot, a change since the 2020 season. (Previously, your robot would be tagged and bagged - literally placed in a giant bag, until the next competition.) We had our competition debrief from Glacier Peak - what went well, where can we improve, what things should we try to repeat? Great discussions all around, and from the feedback here we built a rough development plan.
Generally - make more faster, and make more reliable. From Glacier Peak, we saw a few concerns with the consistency of deploying our intake when trying to collect or score game pieces. We did not properly tune our lifting mechanism, so we intentionally limited the max power/speed - to 30% of its potential. Once we sorted those, we could then get more drive practice - more experience and comfort operating the robot, and work on some automation - what common operating tasks can we combine into a single button, or simply do automatically?
Inevitably, our first look at the robot told us we had some other problems...
Inevitably, our first look at the robot told us we had some other problems...
Straight-ish..? |
Bent bearing bolt? Bent bearing belt. Whelp, that's not good.
Fortunately, in a complex robot, small incidents are isolated and don't impact anything else! (spoiler: yes they do.) Before we get to that - this should have been an expected failure. Our elevator is tilted at 60 degrees, which increases the forces on certain bearings up to 50%. (sin(30) = 0.5) The fix for this particular was easy - beefier bolts. As foreshadowed, there was more mayhem to come.
Technically still one piece... |
Yeah...
Linear movements generally prefer to move, well linearly. With the bent bearing bolt on the edge, the sliding tube was no longer in-line with the other bearings. Instead of rolling the tube up and down, the bearings were dragging and skidding across the metal surface, scarring and starting to cut into the tube itself. We set aside an entire Friday and Saturday to prepare new tubes, disassemble the robot, and re-assemble with brand new, clean tubes.
Progress!
It's alive! Again! |
With the elevator repairs complete, we increased the speed, and coded a "soft stop" to prevent the elevator slamming down into the low position. Obviously everything worked. (I bet you can see where this is going...)
Quick and loose overview: The elevator code is based off setpoint travel and measured with encoders on the motor itself. The code says "when button X is pressed, set the elevator setpoint to <n>". If the current elevator position is not <n>, we calculate proportional distance, and increase motor speed to approach <n>. Rinse and repeat 20 times a second.
The 'soft stop' was built using linear interpolation - once the elevator gets within a certain distance to the setpoint, we linearly clamp the maximum power the pid algorithm can use. This interpolation is based on the absolute value of the distance (as this can be negative when traveling down). We then calculated the output power correctly, adjusting for the absolute value... Well, we kinda did, and kinda didn't. Long story short - there was a bug that, while traveling down (power is a negative number), we could calculate a positive number, and the motor would attempt to suddenly shift from negative power to positive, with all the weight and momentum of the elevator bearing down on it. This created a very large amperage spike, heating the motor.
One day at practice, the elevator started to show fatigue, moving more slowly than expected, and one of the motors started smelling funny, and smoking. (Sorry, no pictures of that, but we are working on installing smell-o-vision!)
Queue us replacing both of those motors, and diving into the code to find that bug. Well, if we have a write-up for it, yeah, we found and fixed the bug!
Surely with 2 weeks remaining before our next event, we could spend the rest of our time practicing!
Multi-directional self-threading screws? |
While unloading the robot at the practice field, we noticed the above - bolts holding our wheels hubs together had backed out, and were cutting into the metal plate that the wheel is supported on. Both of our driven wheels showed this failure.
It's confetti! The aluminum was celebrating inside our gearbox! |
Upon further investigation, we found this cutting action was spewing metal shavings into our gearbox. Lovely!
Fortunately, FRC teams are very generous and supporting of each other. From Lynnwood High School (again!), team 2522 provided us new hardware to better capture our wheel hubs, and make sure they wouldn't come apart. A mentor from Lake Washington High School team 5827 helped out during the rebuild and provided a few tools that made the job easier.
In the 3 weeks between competitions we replaced our main drive wheel hub hardware, elevator tubes, elevator bearing hardware, elevator motors, intake mounting plates, re-organized wires, and fixed some code bugs!
Make more reliable complete!
Alongside and between all the issues, we were also able to make performance improvements. With more tuning, the lift speed has been increased to 50% power while being more reliable on the motors and hardware. We've added automation by reading the amperage of our intake motor - we can determine when we have acquired a game piece, and automatically stow and lower our intake and elevator. We also added a gyroscope into the electronics bay - we can read the tilt angle to help us automatically balance on the Charge Station in autonomous, or at the end of a match.
Make more faster complete!
Michael! wait - Shaquille! no - Lebron! One of them... |
Make more fun-er complete!
Bring on Auburn!
Bring on Auburn!
No comments:
Post a Comment