FRC 95 The Grasshoppers 2023 Build Thread

Let’s talk about how to make good OA content.

I have been writing open build threads since 2014 and sharing open content before that. I’ve developed my own style over the years and have opinions about what works and what does not work for OA/build thread content. I think it would be useful to share some of my thoughts as the OA sees explosive growth.

OA posting is technical writing. Sure, the environment is much less formal than academia, but the same basic rules of technical writing apply.

  1. You suck at technical writing. Paraphrased from my Dad and Mom. Technical writing is hard, basically untaught before college, and from evidence available to me it is often poorly taught in college. You will have to work hard to be good at it.

  2. Be concise. Paragraphs should be four sentences or shorter. No run-on sentences. Long blocks of text are rarely engaging, and people will ask for more detail in the areas of their interest.

  3. Don’t waste time writing about what you see. Take pictures and video (or make other visual content) and share those instead. Provide bullet notes on what you see. Your audience can, and will, notice things your whole team missed. Sometimes these insights are critical.

  4. Acknowledge that you have your own biases, even if it’s just to yourself. We are all biased. “I like using virtual 4-bars” or “colson wheels have served us well in the past” are the type of phrases I like to use and see in OA posts to acknowledge these biases.

  5. Share failures, but be positive and not whiny. E.g. a 2018 video where our elevator assembly experienced rapid unplanned disassembly during testing was quite popular. Seeing a team explode things during testing, do a failure analysis, and implement a solution is a REALLY helpful process to share. Some of the best feedback I have received from a build thread has been about sharing our failures.

Now that I’ve made an OA post that breaks many of the rules I suggest…

  1. Understand the rules so you know when to break them. No, not like the game rules, that’s not okay. Breaking the rules such as ‘I try to never have posts that are all text,’ but ‘this post doesn’t really benefit from graphics, so, I’m skipping it’ kind of breaking the rules.

Good luck, and be open!


Huge fan of Fusion’s nesting feature. Enjoy seeing the once odd shaped material can be saved.

Am I crazy…I don’t think I saw this feature before.


Our big batch of 3D printed parts got rolling between yesterday and today, we expect to see them on Friday.

I am printing some templates to make marking our parts for rework easier.

Largely waiting on school district purchasing and shipping to filter through before we can do much more assembly and wiring.

The wait is painful.

1 Like

Programming Update!

With the high number of scoring and starting locations this year, as well as changeable gamepiece staging and the possibility of balancing the ramp in auto, I thought a system for customizing auto routines might be helpful. Essentially, I’ve created a very small, Java-esque domain-specific-language (DSL) for constructing automoves: you put the text on the SmartDashboard, click compile, and then the robot runs that auto when it’s next enabled. Here’s a demonstration in sim:

Of course, all the code is on our Github.

In addition, because we’re using the full 3d localization with AprilTags and Limelight, I’m looking at creating an automove that drives the robot to a point with on-the-fly path generation, allowing the robot to be placed anywhere on the field at the start of the match.

Combining these, we could then have alliance strategy meetings that start with something like this:
“We can score up to X gamepieces and balance, or up to Y gamepieces without balance. Where should we stage the robot to let your autos run, and where should we pick up/score gamepieces to maximize scoring?”
Start-from-anywhere autos also reduces setup time, as well as allowing greater flexibility.


ok nerds imma talk about gripper now

using only one air cylinder to reduce mass creates too much floppiness. Not good.

In order to control the chaotic motion of the pinchers, nylon components were added to limit the motion of each side of the mechanism and prevent any metal-on-metal nastiness. A benefit of limits is that the gripper automatically centers when fully opened or fully closed

the concave geometry is designed to maximize surface area on both game pieces whilst still being able to open wide enough for the whole intake. Do to the likely use of a shuttle valve, mass can be reduced further by using the same section of the gripper to pick up cubes and cones without creating purple confetti.

cubes are to be picked up in a partially closed position

squished cones should roughly match the curvature of the gripper when fully closed

total mass is 3.2 lbs, even using two layers of 1/4" polycarbonate



To provide some history for @StephenWitwick’s post:

Let’s talk about placing game pieces.

2011 was my first year as the lead technical mentor on 95, so a lot of my choices (and mistakes) are etched into my memory. One of the choices was to use a roller claw.

(hooray low-rez pics)

While this claw overall met our team goals for the season it was not as consistent as I would have liked. We reversed the rollers to score game pieces which usually worked. However, sometimes the tubes did not release quite right, or they got pinched between a roller and a field component, or otherwise didn’t actually wind up getting scored on a peg.

Infuriating to say the least.

Then I read this.

  • Pneumatics jaw releases tubes without using rollers to gracefully hang tubes on rack.

Ever since then I have tried to make end effectors that could ‘gracefully release’ game pieces. Some of our most competitive robots (2017-19) all used pneumatically-released effectors for at least once game piece. The repeatability of this approach was great, giving the drivers and programmers confidence to push cycles faster and faster.

This experience (or scar tissue, depending on your view) led us to choose a pneumatically-actuated gripper for this year’s end effector.

Some of the design requirements include:

  • Open as wide as possible
  • Close small enough to grip at ~1/2 the cone height
  • Tend to center gripped game pieces
  • Keep it light (see mass compounding)

Would you mind expanding on the shuttle valve? If I understand correctly, it alows you to vary the pressure that you input into the piston, how would such a system look like om a robot?
Also I would love to know where would you source it.

1 Like

McMaster-Carr Page:

Simply put: plumb two different pressures to two different solenoids (or a single, fancier, solenoid). Plumb these solenoids into either input of the shuttle valve. If only one solenoid is activated that pressure will be passed to the cylinder. If both are activated only the higher pressure is passed to the cylinder.


Are shuttle valves that bring together the outputs of two separate solenoids legal with R814?


R814 *Don’t connect solenoid outputs together. The outputs from multiple solenoid valves must not be plumbed together.

What does a “single, fancier, solenoid” look like that has two different pressure inputs?

Love the work you all do on FRC 95. Thank you for sharing your process and progress.

1 Like

I remembered this being Q&Aed a few years ago and was able to find it in the 2018 Q&A archive.

Q219 gives the answer. Previous year’s Q&As aren’t binding to this season so you can ask again but seeing as this is how it was ruled in the past you can often anticipate a similar answer.


Here’s how you connect a shuttle valve to get two pressures in one cylinder:


Adding onto Wesley’s wonderful DSL system for running commands, we created a simple builder for this. Its a simple html page, the idea behind this is that it can be run on almost every computer because every computer has a browser.

Any amount of commands can be added and at the end you just copy and paste the DSL string into SmartDashboard to run it. Going forward depending on how complicated the DSL parser gets this will be modified as such.

Trajectory paths are automatically loaded via a small powershell script that gets all paths from pathplanner made by Adam, one of our programming mentors.

Check out the code here: GitHub - first95/FRC2023 at feature/AutonScriptBuilder

Along with this, shoutout to one of our newest programming students Olivia. She has been working on getting our Arm subsystem setup so once we get it all put together we can see it move!

This code can be found on the armSubsystem branch: GitHub - first95/FRC2023 at feature/armSubsystem


This is one of those big step-change updates. A ton of things just… poof got done in rapid succession.

We got the parts from Churchill Inc AND Progressive at basically the same time. The parts from Churchill (connected by 2713/@Ty_Tremblay ) are just absolutely lovely.

We got a serious hot glue gun at the suggestion of 2767. Extremely satisfied with some test joints so far, and it is really easy to use and heats up quickly, like 20-60s to easy operating temp. It can be had from McMaster for a semi-reasonable price: McMaster-Carr

This will be used to bond inserts into CF tubing. While the tubing order is still in limbo we did get the SLS-printed (nylon) inserts that @JWC_95 and I designed.

And the Markforged printed shoulder components. The arm/tube adapter got carbon fiber inlay treatment. The slotted hex portion allows us to remove the arm without pulling the shoulder shaft.

One of our rookies has made painting his goal, and is doing a pretty respectable job of it. This is all rattle-can work.

Even a couple coats looks good on the SLS prints.

The M12 rivet pullers are getting their big workout. Turns out the end of the tail container will pop off if it gets full/pushed out with too may rivet tails.

@StephenWitwick has been hard at work assembling the gripper he designed. Lots of little assembly details, including good grip material, opening spring, and some rivets/washers/hot glue to stick everything together.

Packing on this robot is snug, but working out. Even found a decent spot for the main breaker.

Here’s a decent view of intake and electronics packaging. Obviously many things to be cleaned up…

Weight check-in with as many things as we had on-hand, plugs a battery. Looking like we might be under 80lbs at inspection weight.

Always a good idea to weigh in once a week and see where things are. Better than a nasty surprise at your first inspection!

Whew… it was a busy couple of days.


I don’t have a great example right now… But I have called SMC or whatever company and asked for a PN to do some weird stuff and they always have a product for it.

1 Like

I took some gripper footage. Using a smaller air cylinder at 60 psi (or 40 psi? I forget) won’t compress the cones much nor will it burst the cubes.


It looks like the cone is falling out at the end. Is that the gripper’s fault or the setup’s fault?

Any idea what scale it is you’re using to weigh the robot? Getting a little tired of not know our weight until comp (using bathroom scales is usually iffy at best).

Would love to get a platform style scale with a remote display like that. Have one on my other team and its super convenient!

1 Like

are you worried at all about the cube bouncing away as you try to grab it? That’s the problem that my team had with our claw.

It looks like THIS scale from Amazon, which is what we use as well.

1 Like