FRC 95 The Grasshoppers 2024 Build Thread

Welcome all!

Important links for the season below.

Onshape
GitHub
YouTube
95 Onshape Main Robot Asm
95 2024 Shooter/Arm Onshape
95 2024 Intake/Chassis Onshape

Like every year we are open to specific testing, analysis, ‘Let’s Talk About™’ and other special requests. Please post them here!

Offseason and Preseason are pretty mellow for us. Not a ton to currently report.

54 Likes

One of my favorite build threads each year, can’t wait to see what you cook up this season!

13 Likes

As far as I recall, 95 is the original build thread team. Anyone fact check me?

1 Like

I think that is correct. We had open posts starting in 2011 and a build thread in 2014.

Man I feel old…

@AllenGregoryIV has had an open blog (outside CD) for some time, but I don’t recall when it started.

14 Likes

I’d like to work on rotational acceleration/velocity limits, better arm control, and maybe some auto stuff, but… one meeting a week, no drive space, college applications…

11 Likes

Correct, the Spectrum build blog stated for the 2012 season. We didn’t put every post on CD until the Open Alliance got started.

The Spectrum blog was originally inspired by post season blog releases in 2011 by 33 and 148.

9 Likes

Let’s talk about burnout.

I’m going to talk about burnout from my own experience. I think a personal perspective helps this topic resonate more effectively. Many warnings of burnout posted on CD in the past read like: “you might be burned out… hold my Falcon while I go spend 74.3 hours on robots this week #yolobluebanners” which does not do the topic justice, but is a not-so-subtle seeping of grind culture into FRC.

So, what is burnout? One of the more succinct definitions of burnout is:

Burn-out is a syndrome conceptualized as resulting from chronic workplace stress that has not been successfully managed. It is characterized by three dimensions:

  • feelings of energy depletion or exhaustion;
  • increased mental distance from one’s job, or feelings of negativism or cynicism related to one’s job; and
  • reduced professional efficacy.

I burned out sometime during the 2022 or 2023 seasons. My participation as 95’s head coach had become a burden instead of something I looked forward to doing. I finished the 2023 season through discipline instead of passion… not really where I wanted to be. Something had to change. I desperately wanted to avoid resenting FRC, which has been a 95% positive experience throughout my life.

So, I stepped back from the role of head coach. I am still participating in FRC and with 95, but in a reduced capacity. Another coach has stepped up to be head coach and I am working with them to transfer as much knowledge as I can. They are taking the team in a good direction; recruitment is up, fundraising is up, and overall our outlook is good.

With some time to gain perspective I think I had grown 95 about as far as I could as head coach; at this point my stepping back has been a good thing for The Grasshoppers.

So, what exactly does burnout look like in FRC? How do I know if I’m burning out? I cannot answer that in a perfectly general way, but I can share what I experienced.

  • I did not feel motivated to complete work at or outside of meetings
  • My focus and optimism waned in a big way, e.g. ‘why should we bother when XYZ team can just throw more people and money at it than we can?’
  • We left a number of items as ‘good enough’ instead of really trying to solve some of the challenges we faced
  • I was not always the coach I wanted to be

Keep an eye on yourself. Take an honest evaluation of your current state. Remember that FRC isn’t everything in life (as much as it can seem that way). Step back or step away if you need to, and don’t feel bad about it.

81 Likes

A small follow-up on intake compliance testing.

We added mockup carbon fiber intake bars onto Clarke and smashed them. The first time the drive mechanism worked as intended and back-drove. The second time the frangible mounts failed, but all of the principle components of the intake remained intact.

Now the rookies have a good repair project for next week’s preseason meeting at least.

9 Likes

inb4

this… the dampers…

26 Likes

That is slick

1 Like

ROBOCON reference is a deep cut. I was thinking of the exact same robot when I saw the intake testing. ROBOCON designs are an interesting rabbit hole to fall into with many parallels to FRC robots. They even have their own flavor of jumping robots.

8 Likes

We’ll be trying out grasshopper nuts this upcoming season due to the overwhelmingly glowing reviews from everyone about them. I am curious what techniques 95 used for battery connection retention prior to grasshopper nuts, and if the grasshopper nuts had any noticeable delta in effective electrical resistance of the battery.

1 Like

We used the supplied battery fasteners, but throwing out the split lock washers (which should almost never be used anywhere, ever), and carefully tightened them. We had an average of 1-2 lugs loosen over the course of a season (if my crotchety mind isn’t failing me) which were caught by regular battery lead inspections.

Grasshopper Nuts in the 2023 season had no detectable loosening.

We did not attempt to quantify any changes in electrical resistance because we are not equipped to make those measurements. Improvements there will be subtle if measurable.

2 Likes

Well, I finally see got a chance to.
Preventing tipping from rotating is more interesting than translating, because centrifugal force exists (yes, really, it does). If the center of gravity is not the center of rotation (CoR), then there are two factors that need to be limited to prevent tipping: rotational acceleration and rotational velocity.

Rotational Acceleration:
I’ll start with acceleration limiting because it’s simpler. The acceleration vector is perpendicular to the radius between the center of rotation and the rotating object (here the center of mass)— in terms of vector math, it’s the cross product of the angular acceleration vector and the position vector of the mass:


This means we can easily find the direction of acceleration, and, from there, I can just re-use my calcMaxAccel function that I’ve discussed before. Given the max linear acceleration, we can then just divide by the radius (the distance between the CG and the center of rotation) to get the maximum angular acceleration.

Rotational Velocity:
Because of centrifugal force (which exists, despite what some overzealous physics teachers might say), we also need a rotational velocity limit.

Centrifugal vs. Centripetal

In order for an object to continue moving in a circle, it needs to be accelerated in some direction. Otherwise, inertia will keep it moving in a straight line.


The acceleration needed is towards the center, or centri- (center) petal (seeking). However, this acceleration is not magically created— if the required acceleration is greater than can be supplied by the system, the mass will no longer move in a circle and instead fly off on a tangent. This force (mass * acceleration) can be supplied by a variety of means depending on the system— for a ball whirling on the end of a string, tension provides centripetal force, and for the case of the robot, the torque due to gravity provides centripetal force.

Now consider the reference frame of the rotating mass— for example, lets use the whirling ball. As already described, the pulls inward on the ball. However, from the ball’s point of view, the ball is not accelerating towards the center. We, as an outside observer, see that it is— otherwise, the ball would fly off in a straight line. However, the ball is not getting closer to the center of rotation, and therefore, from the rotating ball’s reference frame, the force inwards must be balanced by an equal force outwards: centri- (center) fugal (fleeing) force.


Hopefully that makes sense.

In our rotating robot’s reference frame, centrifugal force/acceleration acts outward, along the line between the CG and CoR. Again, we use the same calcMaxAccel function, and the result is the maximum linear acceleration in that direction. To turn this back into rotational velocity, we simply solve the centrifugal/centripetal acceleration formula for omega:

a = \omega^2 r
\omega = \sqrt{\frac a r}

In reality, the total forces from rotational and translational acceleration should probably be combined with rotational velocity, and then the maximum acceleration calculated from the resulting vector, and then somehow resolve out each component, but that seems hard and hopefully doing each part separately is good enough.

Implementation
Now that we can calculate the maximum angular acceleration (alpha) and velocity (omega), we need some way to impose those limits. What kind of control system lets you specify maximum acceleration and velocity to reach a desired position? Motion profiling! Specifically, in this case, a trapezoidal profile feeding our heading control loop. Previously, we were just using a PID loop to directly control angular position:

There’s a number of issues with this anyway— wheel slippage is most significant. Additionally, and more to the point here, neither velocity nor acceleration can be controlled directly. By using a TrapezoidProfile to generate setpoints and giving it the max alpha and omega values calculated earlier, we get this:

Much crisper, too.
One final note— if the CG is in the same location as the Cor, the theoretical maximums are both infinity. The simple solution is to just supply a constant maximum and pick whichever value is lower.

10 Likes

Here’s a re-run from late last season: talking about WAGO 221 inline splices.

I’ve gotten a few comments that people missed this last year and found it super helpful recently, so it is worth a re-run as we all gear up for 2024.

tl;dr

If you struggle with WAGO splices:

  • Strip around 1/4in
  • Never twist the strands

That’s it!

10 Likes

Hope you had a good kickoff! Let’s talk about game analysis.

Well, just one facet of game analysis really. The one we start most seasons with. Points analysis!

We identify all of the scoring actions a robot or HP can make, estimate times for each action, divide, and thus identify the most points-beneficial actions in each match. The first chart is our estimates sorted by points per second, the second is sorted by points ceiling.

Notes:

  • I took these screen shots while fussing around with numbers, they don’t match each other perfectly
  • This ignores the potential contributions of other alliance members
  • Boost speaker trio - score two in the amp, score one boosted speaker shot
  • End trap saves time because it assumes you’re driving there to hang

A few things pop out in this view of the game.

  • Spotlighting takes zero robot time, so get your HPs practicing early and often. Its at most 3 points, but that’s more than a whole speaker cycle that your robot doesn’t need to drive
  • Shooting into the speaker during auto is a big deal
  • Multi-piece auto speaker shooting is a really big deal
  • Scoring all three traps in teleop is worth almost as many points as non-boosted speaker cycles for all of teleop (consider your RP implications though)
  • Gotta boost 'em all!
  • darkmode and color scales together are a little weird

We use this analysis to feed into an archetype concepts that we compare using a weight decision matrix.

Archetype key:

  • Ultra-cycler - ground load only, shoot into speaker only, climb and score in trap. This robot is decently strong on it’s own, but cannot setup a speaker boost on it’s own. Instead focusing only on getting notes into the speaker during auto and teleop with a strong finish of climb+trap score.
  • Cheesy Poofs - we add this one in every year to see what a really complex but capable robot looks like framed with our current team resources.
  • Amp-cycler - ground or HP load (not both), score tons of notes in the amp which frees up speaker shooters to do their job. Small, so harmonizes well with a late-game climb.
  • Stage Runner - scores the three traps in teleop then plays defense. Climbs late. Bad RP potential, good eliminations potential.
  • Thief - delivers notes to alliance partners, steals notes from opponent drops, plays opportunistic defense when making deliveries. Climbs quickly and late, no trap.
  • Running Back - Similar to thief, but can only HP load (no ground stealing). Maybe adds a trap scoring mechanism.

The ultra-cycler came out on top with almost every permutation of weighting we could come up with. Frankly, this design feels pretty on-brand as a Grasshopper robot, so I think we’ll be going that route. It was interesting to see the Amp Cycler and Stage Runner not far behind it though. These could be excellent robots for many teams to make.

Here are basically all the Grasshoppers:

Also, while we generally discourage mechanism designs on kickoff, a student made this small napkin sketch that looked super cool, so here it is! It isn’t much bigger than a credit card.

30 Likes

Let’s talk about statistics.

Using statistical analysis is a tremendous part of some engineering jobs, and I use it all the time to evaluate design and process changes to the product we make. I am going to start utilizing Minitab, a statistical analysis program, to help guide decisions for this year. Starting off we are going to use it to look at consistency for our first shooter prototype.

We leveraged our knowledge of shooter design (another post will be done on this) to go for a prototype that would be powerful and consistent while relatively robust against game piece degradation. This is what we made (from 100% parts stripped from robots as old as 2016):

It has two different diameter shooter wheels on non-parallel shafts. This creates a nice game piece rotation without relying on radial compression of a foam ring.

There is already some nice game piece material transfer after just a few dozen shots.

Here is a short video of some ranging shots at partial power using an old drill shell+trigger for speed control. For our data collection we ran at full power to eliminate trigger position as a variable.

[video is still processing as I’m typing this]

We shot at the wall a bunch, slapped a patch of tape at each approximate impact point, and then measured 2D coordinates from the left-most point to generate our data.

28ft range
~16° shooter exit angle
26.5in total elevation gain from shooter release point to 0,0 impact point

Now I’m going to throw some analysis plots at you. It’s not super important that you understand every little thing going on in them. What is important is to understand that these tools exist, they make analysis of these kinds of data super quick, and they can help us make good decisions.

First I looked at the capability of the X data only. Interestingly it failed the normality test. There were three flubbed shots, likely a result of hand-feeding the shooter. I am comfortable removing those data because we have an observed, mechanistic, cause for them that will not be present on the robot.

With apologies to our friends on 5687, here’s the data with outliers removed.

Much better, we have ‘normal’ data distribution! Now onto cleaned-up Y data.

Y data looks good. Well, not good, but it is normal enough to be believable.

I took a real squint at what the service limits should be, roughly centering them on the mean of each axis. And what these data are telling us is that when shooting from around half-field we’ll probably wind up centered on the speaker left-to-right, but have too much variation in elevation. Not shocking, perhaps, for shots from this range.

Simply re-plotting the data in x-y scatter is really interesting, and I’m not sure what to make of it yet. The impact points seem to vary in X or Y, but not both together. Perhaps due to the pull of the asymmetric shooter? Feeding inconsistencies? I’m not sure.

As we refine the prototype and our testing we will aim to (hah!) shoot from a more representative range and angle at a mockup speaker and get more data.

39 Likes

:sob:

8 Likes

p interesting idea to use two diff diameter wheels here, i wonder if adding feeder wheels of similar speeds would reduce error in the total shooter since the note’s initial acceleration wouldn’t be handled by launch wheels

2 Likes

Accelerators and a better feed will absolutely improve consistency

1 Like