Over the past couple weeks, Team 1072 has been hard at work finishing up our robots and beginning driver practice sessions!
CAD link: Onshape
Mechanical and Machining
Over the past weeks, we made lots of progress on our robot’s subsystems, finishing our first robot from the mechanical side.
A couple weeks ago, our Omio broke down, with the spindle stalling out upon contact with any aluminum. We verified our speeds and feeds were good and we were running sharp endmills with 6061 aluminum, eventually reaching the conclusion that we had killed the spindle somehow. We replaced the spindle and the new one lasted nine hours before the pump for spindle fluid died. We paused the job and replaced the pump, but the new spindle failed as well, with the same symptoms as the first. We tried debugging the second spindle but found no visible issues and so we swapped to a third, slightly used spindle. This one has a damaged plate which slips down as the spindle is run. The spindle also makes terrible, loud noises but it works and so we’ve been running it slowly for the past week. During the period where we were trying to get our Omio functioning again, Team 3501 (Firebots) generously helped us out and machined some plates for us, enabling us to complete our elevator and our shooter.
In addition, we were able to finish our custom 2-stage elevator, which uses ⅛” thick aluminum 2 x 1 tubing, TTB rope rigging, and a custom chain drive part, all on a 36:1 reduction for climbing (huge thanks to Team 972 (Iron Claw), who gave us several gears which we needed on the elevator). The ⅛” thick elevator tubes coupled with the massive ¼” mounting plates at the bottom helped a lot with the stability of the elevator, which was something we struggled heavily with our COTS 3-stage GreyT elevator last year, as when it was fully extended, the elevator wobbled laterally around a foot (the wobble was caused by a multitude of factors, including 16th” aluminum 2 x 1 tubing, not enough elevator support, poor tolerances on the tubes, etc.). However, the increased stability this year did come with a massive jump in the robot’s weight due to the thicker metal, and as a result, our elevator and shooter complex weighs around 50 pounds. This is causing some CoM issues with our trap and climb, which we will hopefully resolve in the coming weeks.
We also were able to finish building our indexer, and we improvised some 3D printed direction reversal gears to save time as we didn’t want to wait for shipping of the aluminum gears. Our original printed gear accidentally had a 1” hex bore instead of a .5” hex bore, so we had to 3d-print two clamping flanged hex hubs and put them inside the 1” hex bores to fix the issue.
We also were able to finish building our intake subsystem. Outside of CAD, we made a few minor changes, such as a bent poly deflection piece to prevent the note from contacting the direction reversal area and pulleys. We were able to improvise this using a 1/16” thick polycarbonate sheet and three drilled holes, two on one side for securing the polycarbonate sheet, and one for propping the other side up to achieve the bend. Initially, the NEO motor powering the intake took over 100A of current to be able to spin the system, even though the intake spun easily by hand and the motor shaft spun easily as well. We tried debugging the issue during our meeting, but didn’t find the root of the problem. The next day, we came back and tried again and it worked! We then rebuilt the intake (with some improvements to make it more structurally sound), greased the gears, and tested with the intake fully extended and rested on the ground. We had no further issues with our intake. We hypothesize that there was some mechanical binding in the gears on the intake which we didn’t find when running it by hand, but was an issue when it was being driven by the motor, due to the angle at which the intake was resting while we attempted to run it.
Our intake is now functional, but we have some consistency issues with the note getting stuck between the rollers. We plan on debugging and solving this issue today.
Our intake to indexer handoff is not consistent right now, but we plan on solving that problem today as well. Sometimes the note ends up going above the intake, and sometimes it ends up going below.
We also were able to finish assembling our shooter subsystem. We used a top-down shooter configuration with BaneBots 2-⅞” OD 30A durometer stealth wheels for our shooter flywheels, as the AndyMark 3” ones were out of stock. This left us with ⅜” of note compression for our shooter, which is still acceptable but less than the ½” inch of note compression that we designed for. Our shooter is also currently on a 1.5:1 step up, lowered from 3:1 as we realized that would give us too much speed and it would increase windup time too much. Currently, the subsystem shoots around 20 feet laterally.
We tested our ability to feed notes into our shooter and it works! Next, we will work on
There was a major CAD issue with one of the shooter mounting plates, where the pocketing on one of them was made unintentionally weak, so we had to “cheesecake” an ⅛” thick aluminum plate onto it to help support and reinforce the weakened plate.
We have also completed our second drivetrain and are working on finishing the superstructure. We decided to build two identical robots to increase the amount of driver practice and software time we could have. Having two robots allows us to perform technical fixes and improvements while driveteam practices and then swap robots and do the same. It also helps us because we have our main workshop on one of the school campuses, and our practice field at another. The two bots give us the ability to utilize both venues simultaneously.
Electrical:
The last week has been primarily dedicated to finishing the electrical setup for the robot, and debugging some of the issues that arose.
We wired our drivetrain (Falcon swerve) to be on the CANivore, but this ended up failing, with the status light flashing green and the CAN light rapidly cycling between red, orange and green. We verified that our CAN chain was intact and the CANivore was configured correctly in Phoenix, and then attempted to add one device at a time. We found that Phoenix was able to read all the devices and the CAN light flashed green until we added a tenth device. Experimenting with using a different CANivore, different combinations of the first nine devices, and different tenth devices ruled out the possibility of a faulty device. We reached the conclusion that the new CAN FD signal was of lower strength and our use of Anderson powerpole connectors for CAN was severely harming signal integrity, and the tenth device happened to be the one which made it break. To solve this problem, we decided to split our drivetrain into the left half and the right half, running a separate CANivore for each side. This works perfectly and so we will be running this setup throughout the season and we will switch to different connectors over the summer.
We also finished wiring the rest of the robot. We put the remaining subsystems (intake, indexer, elevator, shooter) on the Rio’s CANchain, which we believe should be able to handle the remainder of the devices despite the Anderson connectors because it was on CAN 2.0, which is supposed to have a stronger signal. However, to be safe, we ran a grounded core through our CAN connections on the superstructure.
Over the summer, we plan to experiment with grounded DMX cables, Molex connectors, and other alternatives to Andersons.
Software:
To get a working drivetrain, we used system identification (sysId) to tune our drivetrain with feedforward values. Although we initially ran into some issues with retrieving the robot’s sysId data from all four tests (quasistatic forward/backward and dynamic forward/backward), we ultimately used the DataLog tool from WPILib to access files from the roboRIO. With our feedforward values tuned, we started working on tuning the drivetrain’s proportional, integral, and derivative (PID) feedback values, which indicate how the robot responds to error. To expedite future autonomous tuning with a completed robot, we also tested our auton paths with only the drivetrain base. Our three-note, four-note, and six-note routines worked flawlessly, including auto-alignment to the speaker.
Instead of relying on only vision, we also use pose estimation to align our robot with the amp and speaker. With this mathematical estimation, we can make the auto-alignment more reliable and accurate. Initially, we experienced many issues with amp alignment, where the bot would consistently miss the center of the amp by a few inches. When checking our odometry, we saw the pose of the robot drift whenever we attempted to align the bot with the amp. After confirming that the measurements of our field were accurate, we knew that the issue was from the poor tuning of the pose estimator. Armed with this knowledge, we tuned the encoder and vision standard deviation values for the pose estimator to trust encoders a bit less and vision a bit more. Our efforts resulted in a significantly more accurate and precise auto-alignment of the amp and speaker.
With the robot’s intake, indexer, and shooter, we experienced issues where the note would not travel through each subsystem and would become stuck on different parts. By looking at Phoenix Tuner X and REV Hardware Client, we realized that the current limits for the respective motors were not high enough. We increased the current limits for all the motors on those three subsystems to around 80 amps, which successfully resolved the intaking issues. We faced an issue with the indexer on the pivot that restricts the note from traveling to the shooter, but after some debugging, the problem was fixed. We are currently working on tuning the shooter, as we noticed that the shooter would stop spinning too early, causing the note to not reach its needed velocity.
Outreach:
Outreach has continued to run Wonderbots, our 6-week course for middle school girls interested in STEM. To recap, our lessons are organized according to the LEGO Spike Prime “Lifehacks” and “Training Camp” lessons. So far, we’ve covered introductory tools such as variables, if-then-else statements, gyro sensors, and color sensors. We just completed lesson 5 this past weekend in which the students learned how to interact with their environment using the tools and sensors that they were taught earlier. Every lesson, we incorporate ice breakers, team bonding exercises, and a snack break, which we found help improve student retention. We’re proud of Wonderbots’ success this year with regards to the curriculum revamp that it underwent last year and student turn out. Above all, we believe that robotics is for everyone and Wonderbots is one of the ways that we strive to create an inclusive environment for girls interested in STEM.
Likewise, we’ve continued our VEX courses for middle schoolers: V5 and IQ. Our VEX V5 students recently attended their first local competition of the season, and some of the teams were able to make it into elims as middle schoolers while competing against more experienced high school teams. In our IQ program, students have been working on adding claws and other mechanisms to their drive bases and have learned to program simple autonomous programs using block code in order to navigate obstacle courses and drive their robots.
Over the past few weeks, the outreach subteam worked rigorously on the Impact Award short answers and essay. Initially, we drafted what we wanted to highlight in each question and made sure to avoid repeating content. Each member of outreach was assigned a question to draft, and at the following meeting, a different outreach member reviewed it and gave feedback. For answers that elaborate on other subteams’ work such as App Development and Scouting, we invited members from their subteams to contribute to our reviewing process. We also found that asynchronous work was useful to keep us on track. Most recently, outreach began writing the script for our Impact presentations at SAC and MBR.
App Development:
The App Development subteam has continued onboarding more teams to its collaborative scouting app, The Purple Warehouse (TPW). The app now has more than 200 teams registered, with more teams signing up daily as they prepare for upcoming competitions. Out of the 50 teams who most recently registered, 60% have joined FRC within the past two years (and more than 80% have joined FRC within the past four years), showcasing TPW’s commitment to supporting newer FRC teams and leveling the playing field through Coopertition and open-source development. The vibrant community on TPW’s Discord server has also continued to grow, hosting nearly 500 members and solidifying its place as one of the biggest scouting communities in FRC.
TPW’s powerful analysis features will be going live soon as the subteam works to refine the match predictions algorithm, rankings calculator, graphs/visualizations, and other AI-powered capabilities. Additional features for TPW are in development as the subteam constantly works to improve the app. Some upcoming advancements include a refreshed design that focuses on providing scouters with a beautiful experience, as well as exciting gamification incentives to help keep scouters engaged and having fun.
The first external integration of The Purple Standard (TPS) scouting data format has gone live in another team’s scouting app, with more scouting apps actively working to add support for TPS. The App Development subteam has been working to prepare an open-source API and SDK that enables sharing of TPS-formatted scouting data between teams through TPW’s collaborative scouting database, which can perform accuracy checks and analysis on the data. The API includes a number of carefully-designed security features which allow for scouting data to be shared safely and securely without exposing sensitive information through the API. Documentation for the API and SDK will be released within the next few days, and members of the App Development subteam will be available to assist with integration. If you are interested in joining our efforts to increase data collaboration between scouting apps, please reach out to us through our Discord server!
Media:
Our media team has been continuing to produce new designs for our pins this year as well as keeping some of our designs from last year. So far, they have made 500 pins!