COVID-19 Update 2: PPE, Pit Cart, and Website improvements

Authors: Andrew Georgioff

While we have been unable to meet to do larger offseason projects due to COVID-19, we were still able to work on a few smaller tasks. 

PPE Printing:

Due to the effects of COVID-19, many places have had a shortage of PPE. Many FRC teams, notably 2052 ( have made efforts to combat this shortage through 3D printing. One of our team members printed face shields and donated them to Chanhassen.

Above: An image of fully assembled Face Shields

Above: An image of a team member delivering printed PPE

Above: A tweet from the city of Chanhassen mentioning the donated PPE

New Pit Cart:

We received our new pit from Bodeker recently. This pit cart was made through the efforts of multiple team members over the past few months. This was in addition to the support of Bodeker who fabricated the cart once they received the drawings. The new pit cart was designed to be more efficient with storage than the previous pit cart, as well as having an integrated battery charger. 

Above: the finished CAD model of the new pit cart

Above: An image of a battery in the new pit cart

Website Improvements:

Dev1 (A site being worked on to replace the old site) has received a lot of smaller changes over the past few weeks. Work was done to implement a child theme to make future changes easier. Some other minor changes were made on the navigation menu. Additionally, all of the blog posts were ported over. This means that once the site is ported over to production, the blog will be on the main site rather than the separate site which is being used currently. 

Above: An image of the blog on the navigation bar for dev1

Quote of the day: This is so sad – Ravisha Jaiswal, 2019-20 Business Captain

Day 1 – Offseason? (3/15/2020)

Authors: Andrew Georgioff,


As you have likely noticed, we are into the offseason. This is because all of this season’s current official FIRST events have either been canceled or postponed ( Additionally, our school has been shut down through spring break (starting March 28), so all meetings will be digital and there will likely be no more build time for a while. Additionally, with the upcoming months being uncertain, the status of upcoming events such as the team banquet and the Schooner days parade are questionable. 

Quote of the day: “Infinite Recharge, more like Infinite Build season, more like Infinite Spring Break” – An anonymous poster to the FRC subreddit

Days 67, 70, 71 – Winding Down the Season (03/10/2020)

Authors: Ritik Mishra, Andrew Georgioff

These days were the last days of open room for a while.

Intake Redesign Planning:

At Northern Lights we realized that a wider active intake would be very helpful. One thing that a wider intake would help us achieve is a 5 ball auto that steals the 2 balls that are next to each other from the opponent’s trench.  

Today, we started working on our intake redesign. The current active intake design is 18 inches wide, while our frame is 27 inches, leaving lots of room to become wider. The intake redesign is 23 inches so we can more easily pick up balls, especially those on the rendezvous point. The redesign also makes the corner formed by putting the airpods on the inside of the roller plates is reduced by only using one plate per side instead of two, like the current setup.

Above: An image of the new intake. The roller bar is noticeably wider than the previous design.

Improving shooter accuracy

At Northern Lights, we noticed that our accuracy from the trench was not very high (~50%). 

Since the shooter is very consistent mechanically, a few simple code changes were required in order to boost that accuracy to over 80%. We needed a way to automatically determine the shooter RPM based on how far we are from the target. 

First, we need to know how far we are from the target. Instead of using a fancy equation to determine the distance to the target, we are using an interpolating lookup table that maps from the vertical offset of the target (the ty value given by the limelight) to distance away from the target. The values in this table were measured empirically, and the interpolation seems to be accurate (at least much more accurate than the formula). 

Second, we need to know how fast to spin the flywheel. We also use an interpolating lookup table for this, mapping from distance from the target (provided by the first lookup table) to flywheel RPM. The correct RPM for each distance was also measured empirically by moving the robot to a certain distance from the target, then guessing+checking (by shooting balls) the correct RPM. 

These two lookup tables allow us to automatically adjust the RPM based on our distance away from the target. This also allows us to score balls while moving. As a result, the vision align command has been changed to allow the driver to move closer to/further from the target (as long as they are further than 10 ft away from the target).

Above: A video of autonomous testing from today

Quote of the day: Mecanum heelys… That’s the dumbest thing I’ve ever heard and I’m the one that said it – Andrew Georgioff, Blog Author

Day 64 – NLR Semifinalists (03/08/2020)

Authors: Ritik Mishra, Andrew Georgioff

Match 63: Foreshadowing

This was another tough match. Throughout the match we managed to out-shoot the other alliance, keeping the score slightly in our favor. However, the extra points they obtained from their double climb managed to barely tip the match, resulting in a loss with a match score of 114-125.  

Match 73: Smooth Sailing

This was one of our easier matches, as we were with KnightKrawler (one of the best teams in MN). As expected, we won the match with a score of 163-59 and earned the 3rd RP for a balanced double climb. 

Match 84: Won by a Penalty

This was a match that stayed close throughout. The start was rough, with the opposing alliance gaining a lead in auto (the shots made were 2 outer vs 7 outer and one inner). Despite the close scores throughout the match though, we managed to barely win with a score of 118-11, thanks to a tech foul awarded to us early in the match due to a G10 violation.  

Alliance Selection:

Coming into alliance selection, we were ranked 6th out of 59 teams. After 1 picked 3 and 2 picked 5, we were positioned to become the 4th alliance captain. The 3rd alliance captain, 4778, invited us to their alliance, but we respectfully declined. After they picked a different team, we were able to pick FRC team 1259, Paradigm Shift, a team with a very consistent trench shooting capability and 6-ball autonomous. During the second round, we were able to pick 7530 for their climbing ability. 

With our alliance complete, we were ready to go into quarterfinals.


Quarterfinals went relatively smoothly. While standing in the queue, the drive team was thinking about how we might go about beating the 1st alliance in semis. One potential strategy that they thought about involved playing defense against 2052. After all, alliance 1 was a very strong alliance, scoring 199 points in their first quarterfinal match. 

We won our first quarterfinal match — Quarterfinal 2 — with a score of 219-191. In our next quarterfinal match — Quarterfinal 6 — we won again with a score of 202-137, even though 1259’s climber was broken. Confident, we headed into semifinals, abandoning our strategy of playing defense against KnightKrawlers. 


As expected, we went into the semifinals against the first alliance. Given our strong performance in the quarterfinals, we went into the first semifinal hopeful. Throughout the match we managed to out-shoot the other alliance, keeping the score slightly in our favor. However, we lost with a score of 137-181, as both Paradigm and ourselves were unable to climb. 

In the second semifinal, a member of the red alliance fell off of the bar, which combined with some fouls awarded to us, allowed us to win the match with a score of 153-149.. However, in the tiebreaker match, despite outshooting them in auto and teleop, 7530 was unable to climb in time. Since the other alliance triple climbed, we lost the match with a score of 155-180.


For the first time in our team’s history since 2015, we have not qualified for Worlds at our first regional (we didn’t win any awards). We need to have an outstanding performance at 10k. Ideally, we can 

  • Make our 6 ball auto consistent
  • Become more consistent at shooting balls from the trench
  • Fix intake jams

Quote of the day: As long as it’s a strong rectangle I don’t care – Nathan Seelig, Fabrication Lead, talking with other teammates about an intake redesign

Day 63 – Rank: Three (03/06/2020)

Authors: Ritik Mishra, Andrew Georgioff

Match 7: Failed to Climb

In our first match of the day, we were doing well until endgame. We had shot (and scored) 12 balls. However, when we tried to climb, we were not able to do so. As it turns out, this is because the climber ratchet was flipped to the wrong direction. This caused the drive team confusion when they tried to climb. Although we were still able to snag a win  = 2 RP, we placed an arrow next to the climb ratchet so that we know which way it is supposed to be flipped after every match.

Match 12: Trench Shots, Intake Revisions

In match 12, we mostly shot from the trench, but we missed about half of our shots. We also noticed some issues with balls jamming in the intake. We ended up switching the third intake roller bar for some mecanums and omnis. We also added some spacers to the hopper so that the two hopper plates are just slightly wider apart.

Match 29: shooting the balls

In match 29, we were with 171 and 2491. We shot some balls and climbed, and in the end, we earned 3 RP.  This allowed us to be the 1st ranked team for a while. 

Match 36: dense cabbage

In match 36, our robot was rendered dead when a CAN connector into a Spark MAX was inadvertently pulled out at the end of our autonomous (the intake coming down yanked it out). This prevented any signals from reaching any of the motors/pneumatics. As a result, we were dead for the match, but we still managed to eke out a win anyway. At least our auto was able to sink 3 balls. 

Match 46: smooth sailing

This match was smooth sailing. Another victory in the bag.

Match 53: oopsie 

We lost this match by 3 points, but we were supposed to get a triple climb. Sadly, one of our alliance partners did not quite follow the strategy we planned ahead of time, thus preventing us from climbing and getting the 3 RP we were hoping for. Instead, we got 0 RP. 

Other Misc Pit Occurrences

  • We tested the hopper a bunch. To empty the hopper, we shot balls, but one of the balls bounced into the limelight and damaged the mount. We had to (super)glue the mount back together. 
  • We went to the practice field two separate times. First, we decreased the P gain on the auto-align. Second, we increased the RPM on the flywheel on the 6 ball auto.

Scouting/Scouting Meeting

We had some issues getting the scouting data compilation program to work properly. Therefore, instead of living the easy life and using a spreadsheet, we instead had to use the Firebase tree view to see the scouting data. It was inconvenient, but it still got the job done. 

Quote of the day: 
Ritik: “is this confirmed to work?”

Chris Olson: “this is confirmed to be called duct tape, beyond that, we don’t know”

Day 62 – Northern Lights: Practice Day (03/05/2020)

Authors: Ritik Mishra, Andrew Georgioff

We skipped a few blogs.

  • Day 60: We packed the trailer with our stuff
  • Day 61: We brought the trailer and the students to Duluth


We used today to get a more general overview of all of the competing teams. We started this with pit scouting, where we collected information on the specifications of other teams’ robots. This data included:

  • Drive train type
  • Motors used
  • Low bot? (able to go underneath the trench)
  • Climb
  • Control Panel
  • Ground Intake

We also scouted a few of the practice matches. This was primarily done to familiarize team members to our scouting app, so when actual scouting is done tomorrow it will be done with (hopefully) more consistency.


We passed inspection with flying colors

  • BOM (bill of materials): legal
    • The BOM is a list of all parts, their vendor, and price. There are price limits for both individual parts and the robot as a whole.
  • Robot
    • Weight: 124.2 lbs (out of a 125 lb limit)
    • Edges: Not that sharp
    • Parts: Safe
  • Red bumpers: 14.1 lbs (out of a 15 lb limit)
  • Blue bumpers: 14.4 lbs (out of a 15 lb limit)

Practice Matches

We were scheduled to compete in three practice matches, but thanks to the filler line (which continued to be sent to the field past the last practice match), we were able to compete in 7.

The table below shows how many balls we scored in each of our practice matches.

outer – init lineinner – init lineouter – trenchinner – trenchmissestotal scoredtotal shot

Above: Our 2020 robot, Orion, launching a power cell

Above: Our 2020 robot, Orion, climbing on the generator switch. 

Programming Issue

Today, after our first practice match, we tried to reset the climber. Unfortunately, when we pressed the “run the climber down” button, nothing happened. If we were lucky, we might maybe get one click out of the climber ratchet. 

As it turned out, the ID number for the climber Talon SRX was 5. The ID number for one of the Spark MAX’s for the hopper side belts was also 5. This caused us to think that the hopper Spark MAX was stealing the CAN packets for the Talon SRX and therefore preventing the climber from moving. To fix this supposed problem, we changed the climber Talon SRX ID to 55. For this to work, we also need to change the ID in code for everything to work. 

When we tried to deploy code, we got a “session is down” error from Gradle. We tried a few things (restarting the computer, killing random background apps, deploying while collected to the internet, etc), but nothing worked to fix the problem. Finally, we solicited the help of a CSA. We discovered that Gradle was trying to deploy Java (as in the thing oracle makes) to the roboRIO. One of the first things we did was reimage the roboRIO. Afterwards, we tried deploying through VSCode, which is the officially supported way to deploy code. Neither of these solutions worked to solve the problem. Finally, we decided to update our WPILib from 2019.1 to 2019.3. After we deployed (and waited 20 minutes for the new libraries to download), the code deployed. However, the climber was still broken. 

We looked at the code thoroughly. We changed the code so that it would run the wheel of fortune spinner. That worked great. This finally narrowed the problem down to the code that would spin the climber.

It would only spin the climber winch if the lock was retracted. 

We are dumb.

Above: 3 programmers and a very helpful CSA are pictured waiting for the WPILib to update.

Hopper Cam

Today, we added a camera so that the drivers can look inside the hopper. This helps them to know when to unjam and how many balls they have.

Above: a picture of the hopper camera

Chairman’s Presentation

The chairman’s presenters prepared and presented the chairman’s presentation today. Originally the presentation was going to be on Friday, but due to the large number of teams (27 out of 60), some presentations, including ours, were moved to Thursday. The overall theme of the presentation was transition and growth as a team through time. 

Quote of the day: “What is Asus giftbox and why is it eating all of my CPU? . . . Watch out I’m deleting it now” — Isaac AJ, engineering captain

Day 59 – Final Duluth Preparations (3/2/2020)

Authors: Ritik Mishra, Andrew Georgioff

Most of today was spent on final preparations for Duluth. Tomorrow, we will only be meeting until 5:30 due to the presidential primary, so we aimed to finish all major robot changes by today. The mandatory Duluth travel meeting was also today (from 7 to 7:45)

Most of today was spent on packing, organization, collecting spare parts, etc, but we did make a few robot changes today. 

Bumpers Complete

Final alterations to bumper brackets were made. We also put the team number on the bumpers.

Above: A photo showing a picture of the robot with the bumpers on. The bumpers have numbers. They look VERY nice.

Above: A blue bumper that also has numbers


The climber is confirmed to work.

Above: Video of the comp bot climbing, partially obscured by many onlookers. 
Quote of the Day:

Josie: “Salt is my favorite type of metal”

Miguel: “Get out of here”

Day 58 – 🦀 Comp Bot Works (3/1/2020)

Authors: Ritik Mishra, Andrew Georgioff

Above: A pic of the comp bot shooting from the initiation line

Things that work on the comp bot

  • Wheel of fortune
  • Flywheel shooter
  • Intake
  • Hopper
  • Drivetrain

Everything that we tested works quite well. We ran into a small issue with the hopper where one of the sides was intermittently spinning. As it turns out, the cause was a badly made anderson powerpole on that motor. We fixed it and everything runs smoothly.

Things that do not work on the comp bot

  • Climber

We bought some rope that is different from the rope on the practice bot. Sadly, this rope does not work on the climber. The correct rope is coming in the mail and should arrive Tuesday. Fortunately, we have some leftover rope from 2018 which should be plenty strong for the climber, just in case.

Autonomous Testing

We continued to work on our autonomous routines. The shooter on the comp bot had some slight variances from our practice bot and as such, we had to tune some values in order to be able to shoot accurately from the trench (the practice bot RPM for shooting from the initiation line was perfect). One thing changed was the drive straight routine. Previously, it would drive along whatever angle the robot was already at. Now, the code can optionally tell the robot to drive straight in a specific direction. This helps the autonomous be more consistent since the turn command has a tolerance of 2 degrees, which means that driving straight in the robot’s current direction could cause it to miss the third ball in the trench run. 

Above: A video showing where we’re at with the 6 ball. 

Quote of the Day: “Someone forgot to drill the hole in the pneumatic tubing” — Justin Silweski, engineering captain/human player, upon discovering that someone had used polycord instead of pneumatic tubing when plumbing the comp bot drive train shifters.

Day 57 – Testing in the Commons (2/29/2020)

Authors: Ritik Mishra, Andrew Georgioff, 

Wheel of Fortune

The wheel of fortune mechanism was finished for our practice bot. This mechanism was designed to be actuated by a cylinder so the robot could remain able to go underneath the trench. Another similar copy will be fabricated for the comp bot soon. 

Above: A Cylinder actuating the wheel of fortune mechanism

Above: The mechanism on the practice robot spinning the wheel 


During driver practice today we tested our new climber deployment.The text was successful and it deployed much quicker than previous tests.

Above: A video of the climber deploying after the changes. Once the deployment is started, it reaches max height after less than a second. 

Autonomous Coding

Today, we fixed the problem where the flywheel only ran at 80% of the speed it was supposed to be running at. This allowed our flywheel to be very consistent. In our basic “shoot 3 and drive backwards” autonomous, it consistently sends balls through the inner port. 

We started working on a trench-side 6 ball auto. We need to fine tune some of the motions before it will work,  but is nearing completion.

Here are some auto vids from testing today

Quote of the day: 

Why’d you glue the robot to the floor?

Because I glued it to the floor

Day 56: Comp Bot Assembly 10 – RSTLNE (2/28/2020)

Authors: Ritik Mishra

Wheel of Fortune

Today, breakthrough progress was made on the wheel of fortune spinner. 

We briefly attached it to the robot in its desired location, and confirmed that it will be able to spin the wheel of fortune.

Afterwards, we took it off of the robot and installed the cylinder. The original plan was to buy a cylinder, but we found (by chance) a random cylinder laying around in the room that will likely work well enough for the job.

Comp Bot Progress

Today, a lot of minor or technical changes were made to the electronics, pneumatics, or trivial mechanical mechanisms on the robot. One of these is the shooter feeder wheel belt (pictured below). 

Another such improvement is zipties around the CANbus connectors. That way, they should not come apart at all. 

We have also made preparations to install the new bottom hood tomorrow afternoon.

Above: The v4 feeder hood and the shooter hood lay on the ground, disassembled. The regulator, pressure switch, and stored pressure gauge make a cameo in this shot, as they will get relocated to somewhere where the gauges are easier to read.

Field Set-up

Today, we set up the field in preparation for drivers’ and autonomous practice tomorrow. 

Quote of the day: 60 rotations per minute, 60 rotations per second, same thing – Ritik Mishra, design lead, discussing the wheel of fortune mechanism