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

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. 

Semifinals

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.

Recap

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

Scouting

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.

Inspection

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
pm71430011718
pm253010221517
pm2900606612
fl1641011112
fl2624131316
fl350008513
fl41230031518
average11.715.1

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

Climber

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 

Climber

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

Day 55: Comp Bot Assembly 9 – Journey to Belt-land (2/27/2020)

Authors: Andrew Georgioff, Ritik Mishra

This is a picture of the robot. A lot of electronics and bumper-related tasks still need to be done, but most of the mechanical stuff is almost completely assembled/installed. 

Things that are done

  • All belts are installed 
  • Intake, Hopper, Shooter are ready for electronics

Things that still need to be done

  • Drivetrain CANBus is real sketchy and should probably get soldered together 
  • Pneumatics needs to get finished
  • Climber needs to be installed
  • A new revision of the bottom hood needs to get received from Stratasys (there were interference issues with the climber)
  • Intake needs a SparkMAX

Hopper Belts 

Today, the hopper side belts were installed. We also installed the motor that powers the hopper belts onto the robot, and those were belted to the side belts using random 54 tooth/270mm belts we had laying around the room.

Above: A picture of the well-tensioned side hopper belts and the overly tight belt going to the motor. We will have to move the motor by a few hairs (literally, on the order of 0.01”) for the belt to become happy. 

Intake Mounting

The intake was mounted onto the Airpods on our comp robot today. This was relatively fast since the intake was basically fully assembled yesterday. 

Above: An image of the intake on the robot. 

Bumpers

We continued to fabricate brackets for our bumpers today. One mild issue that we have is that the horizontal bandsaw does not cut square anymore, so the ends of the bumper brackets are not square in the slightest. Nevertheless, we continued to fabricate and install them into the bumper. 

Above: a red bumper with brackets attached. 

Climber

We received the 80-20 for our climber in the mail today. The climber was quickly assembled, but we could not install it onto the robot due to interference issues with the bottom feeder hood. We sent a new hood revision to Stratasys, and hopefully that can come back soon. 

Robot Naming

We conducted voting for our competition robot’s name today during our team meeting. After a close vote, we decided upon the name Orion. The runner up name was “mr zoom zoom,” which was submitted by some leads (and a captain :smh:) in the back of the room who were goofing off during an all-leads meeting yesterday. 

Scouting App

As most of the front-end work was finished, work was done on Firebase integration for the scouting app today. This was to upload the statistics taken by team members onto google sheets, so we can analyze the data in a usable format. 

Above: The scouting app on the main menu

Pit Crew Interviews

We held interviews for our pit crew today in preparation for our first tournament next week. The pit crew is the group of team members in the pit who work on the robot and answer questions from judges. The pit crew has been selected and will be publicly revealed soon, likely at the next team meeting.

Quote of the Day:Don’t be bad. Be good.” – Isaac Wenc, former engineering captain


Author’s note: There are very many Land Before Time episodes, and each of them has a “catchy” title. We have been taking inspiration from their titles for the last few blog posts. 

Day 54: Comp Bot Assembly 8 – The Big Belt Package (2/26/2020)

Authors: Ritik Mishra

Belts

Today, we finally got our shipment from SDP/SI. If we had not contacted them about our belt shipment, it would have arrived in April, which is a ways away. 

Anyways, now that we have our belts, we installed as many as we could onto the comp robot, which ended up being

  • All intake belts
  • Bottom squeezer roller belt
  • Bottom hopper belt

The belts are quite tight, which is good for operation, but makes installation a little difficult. In any case, we’ll be able to install the rest of the belts shortly, including

  • Side hopper belts
  • Shooter belts

Above: A picture featuring the bottom hopper belt. It only has a small amount of clearance on the top side (shown) with the HDPE plate (maybe 0.020”), but clearance nonetheless. The bottom squeezer belt can be seen to the left hand side. 

Above: A picture of the bottom squeezer roller, with the timing belt visible.

Pneumatics

Today, we put the following items onto the robot

  • Stored pressure gauge
  • Pressure switch
  • Working pressure regulator
  • Dump valve

They are all in a nice, neat line (pictured below)

They were also installed onto the robot (pictured below)

Core Values

The leads had a meeting to finalize our core value statements today. A long time ago in the fall, there was a team meeting to decide our core values. Eventually, we landed on 5 values agreed upon by both the mentors and the team. These values are 

  • Cooperation
  • Hard Work
  • Integrity
  • Competitiveness
  • and Fun

The core value statements are small paragraphs that describe why the value is important to Talon. These were successfully finalized today.

Scouting App

We began testing our homemade scouting app to find potential improvements today. This weekend, there will be a full test of the app on the LA North regional. Scouters will watch matches and use the app as if we were in a real competition. This way, we will be able to find important problems before we use the app in Duluth.

Here are some screenshots of the app. It looks similar to the custom app made for the 2019 offseason.

Quote of the Day: “Spare me the analysis” — Isaac Ash, after having an analysis provided to him about which team member submitted a strange robot name suggestion under an inappropriate name.