5937 MI-Robotics 2023 Build Thread

Hello and welcome to 5937’s first ever build thread!

We’re a high school FRC team operating out of Mercer Island High School and we found OA threads invaluable last year so we wanted to give back a bit and share our limited experience. We have roughly 60 active members, which is the largest we’ve ever been so we’ll likely also talk a little bit about our structure changes and our plans for dealing with this sudden influx of members. We’ll likely not produce anything groundbreaking in this thread, but we’ll do our best to give our best QoL improvements born from our unending laziness quest for efficiency.

Hope y’all have a great season,
Joey
CTO of 5937

10 Likes

As a general recap of various things we changed in preparation for build season:

On our off-season: We attended Washington Girls Gen, Bordie React, and PNW Block Party which is the record for the most off-season competitions we’ve ever done in a season. This was definitely not the right move to do as we didn’t have enough to improve between competitions which led to a lot of rookies feeling like they didn’t really gain anything from their effort which is completely fair.
What we learned: don’t do off-season comps just because you can, they’re a valuable recruitment and retention tool so make sure to use them wisely to not burn rookies out before their first build season.

On our education/training: This year we had three different tracks of education, one for students who only attended once a week, one for students who attended twice a week, and one for intermediate students who have been here a year but don’t have everything down just yet. We found that this left a lot of holes where intermediate students or bi-weekly students had nothing to do and nothing to learn as leads were busy handling other students. We also started a beginner programmer track and an advanced programmer track as programming experienced 1600% growth, and with that came many budding programmers who don’t know Java. The beginner track focuses on learning Java while the advanced track focuses on robot code specifics.
What we learned: we need to cut down to two tracks for intermediate students and rookie students, which will mean attendance policies/cuts, extracurricular reading, or something of the sort. We also changed our education focus from trying to fit everything in one year to learning FRC over multiple years which hopefully helps a bit.

On our infrastructure: Last year we experimented with Trello which was great… When we used it… This year we’re mandating Trello to ensure that we work more productively with clear deadlines, and to make our handoffs between meetings more smooth. We also had problems with motors disappearing last year so I made a rudimentary inventory sheet in Trello, that tracks who checks what out so we know who to ask. Trello also includes a Gantt chart in the premium track that is really helpful for scheduling which will hopefully ensure that our deadlines line up this season.
What we learned: from last year, but still applicable. Document everything from short-term to long-term to ensure that things flow smoothly, short-term or long-term.

On our business/outreach: Our business team was able to get us a sponsorship with Pagliacci’s for pizza during kickoff and we hope to extend this relationship further. They also were able to collect and donate 469 pairs of socks for the homeless with Operation Nightwatch. Our business team is planning on building up our social media presence and learning what it means to be a FRC robotics business team. We also donated motors to various rookie teams in the PNW, if your team needs CIMs/Redlines/775s/etc and is willing to pay for shipping or pick them up locally, please dm me here. I can possibly drop them off at your location (if reasonable) as well.
What we learned: Many organizations are willing to work with FRC teams if you just send them an email. Don’t be scared and feel free to reach out to them, they don’t bite!

On our tooling: Some of you may have seen my requests for recommendations for new tooling. Our band-saw and drill press finally broke after almost 25 years of use so we have bought new tools, namely a DW872 chop saw with an aftermarket fixture plate. This fixture plate’s blade clearance slot was off by around a couple of degrees but the fence is perpendicular as far as we can tell. We also purchased an OMIO (today morning in fact) as we were delaying this in preparation for eviction to move to a new space but plans fell through. We’re also looking into buying a drill press, so if you’re local and you have one you’re willing to offload dm me, or if you have recommendations let me know, as I have very little experience in purchasing shop tools.
What we learned: plan for now, not the uncertain future lest you be rushed to learn something quickly that shouldn’t be learned quickly.

I think that’s all for now, we’ll update after kickoff or whenever we feel like we have something to share! Have a good break and then a good kickoff!

Joey
CTO of 5937

6 Likes

Back with another update over break, this one about my adventures researching purchasing an Omio. 5937 in general has no way to cut plate currently and has struggled with precise machining for bearings and power transmission and the like so a CNC router was the obvious solution.

Why an Omio? For the obvious reason, copying other teams. Why get something new and different and quirky when we can just steal other teams hard work and benefit? General thought process of CAD lead and I was:
Step 1. Buy Omio
Step 2. Copy other teams that are successful
Step 3. Profit
Step 4. ???

When I was researching what to buy (because tbh its quite confusing as someone completely new to the world of cnc routers) I saw a varying amount of different opinions so I started trying to corroborate answers. Here’s what I ended up with:

  • 1 4mm and 1 6mm endmill (I know people go with huhao or ttb endmills, I bought these to get started with)
  • WCP Nut Strip for Fixture
  • WCP Tube Fixture w/ Clamps
  • OMIO
  • Resurfacing Bit
  • 2 * 30x22x0.5 PVC sheets for spoilboard as recommended in thread
  • ER20 Collet
  • Dial Test Indicator
  • Koolmist 78
  • Cheap Chinese mister
  • 5 gallon bucket
  • 5/16" OD tubing
  • Compressor

We’re very excited to see how this turns out, especially my jerry-rig version of a Fogbuster! That’s about it, I’ll probably update after we get the Omio or after kickoff, we’ll see!

Joey
CTO of 5937

2 Likes

Hey all,

As kickoff is approaching I want to share our (scuffed) plans for this season’s kickoff. Most of our leadership is also band leadership or involved in band and band has a mandatory activity from today after school to Sunday afternoon. This means that we won’t be able to do a live kickoff event, but I consider this somewhat advantageous as we’ve always come up with ideas that have turned out flawed. This late kickoff will allow us to research what other teams are doing and come up with a solution that will fit us, especially since the whole of 5937’s fab firepower consists of a chop saw and hand tools. We hope that this will reduce overextending and allow us to make a bot that’s simple, reliable, and competitively viable.

Hope y’all have a good kickoff,

Joey
CTO of 5937

3 Likes

Hey all,

We finished kickoff. We were able to get access to the game stream at our band retreat so we had a ton of ideas upon return. We spent the 3 hours we had at home on Sunday researching them before we hustled to school Monday and then met up after school where we decided on our MSCW’s. We then met up again at 9 pm remotely to discuss possible designs that would fit our criteria and also designs that could be extended if we encountered success early on which would free up our schedule.

5937’s 2023 MSCW
Must haves: l1/l2 cone + cube,
Should haves: preload + balance and preload + one piece autos, vision alignment, rgb for HP signaling, L3 scoring, and ground cube intaking.
Could haves: L3 Cube Shooter similar to 4613, and a counterbalanced arm with individual cube/cone mechanisms
Won’t haves: Swerve, ground cone intake

To accomplish these things we decided on a bot with a WCP telescope that would be used as a non-telescoping arm unless we could devote enough time to fully master the telescoping aspect which would help with L3. To be clear, this would happen after plenty of driver practice and auto/vision programming. Hopefully this isn’t an overreach but I think with our organization restructuring this year this seems like a relatively achievable goal, but will still require some hard work to be put in.

I feel a bit like a cat in a clothes dryer that was turned on when I was asleep in there, as I seem to be getting burned from all angles and in pain and have no idea what I’m doing.

Anyhow, aside from kickoff, I implemented a order form, Trello alternative, and internal documentation in Notion which we will now be using as Slack was hurting the wallet a tad.

Hope y’all are having a great Week 1!

Joey
CTO of 5937

Day 18: We finished our prototype elevator!

We ordered a TTB elevator kit early on and we finished it after around two weeks today. Here’s what it looks like mocked up and in action (at 0.1 speed, the first time we tested i attempted to retract and it extended instead and shattered a plastic box and cameraman’s head. at 0.4 speed. in my defense he was not there when i last looked) : 2023 FRC 5937 Elevator Test - YouTube

Some snaggles we ran into:

  • Versaframe is a pain. We will be saving our existing stock for prototype, match-drilling, or cnc use only as drilling out all holes to #10 and then adding holes because our current holes didn’t work is pain. We plan on switching to REV MAXTube and then using a cutting jig for hole context because that was probably the largest bottleneck in this project.
  • Pneumatic riveter broke -_-
  • Incorrect hole context from above led us not to be able to use two pulleys for the carriage, we will test more to see if this is viable or if we should go with two pulleys on the final version.
  • CF springs scare me and so I’m coping without one by reasoning that PID should still be relatively responsive without it due to hopefully correct gearing. I will update if we do run into issues due to lack of a CF spring.

We’ll probably cushion the ending positions with a lil bit of yoga mat or smt to ensure that we don’t smack anything too hard in addition to PID.

Now for the KOP chassis and we’ve got a mini-bot capable of driver practice for the most part. Hope y’all are having a fruitful build season!

Joey,
CTO of 5937

Day 26:

In what is 5937’s fastest build ever likely, we finished the ION drivetrain in one meeting. It was so easy to build that three people cut tubes, added gussets and rivets on both sides, built and mounted gearboxes, and ran chain in around 4 hours. Highly recommend if you’ve got weird mounting constraints. We modified ours to use double sprockets on all 6 wheels (because I’m lazy with spacers) and to be a 25" x 29" drivetrain to hopefully fit on charge station with partners.

Here’s what the final product looks like. We used VersaFrame for horizontal beams to use up the last of what we had and also in case we need to match drill for elevator mounting purposes after. This was slightly annoying because we had to drill out holes on a 0.5 hole context as I messed up the cut list for hole context when cutting. In my defense, we still have almost no CAD except for a layout sketch which is kinda sus but it’s alright, we carry on.


Hope y’all have a fruitful rest of week 4 (?),

Joey
CTO of 5937

1 Like

Day 29

I literally don’t know if the day is correct, someone dm me if it isn’t please. Today, we added a brainpan to the bot and also a battery mount.The battery mount has 1/4" foam on the top and the sides, ya boy forgot to measure properly to add some on the bottom so whoops. Since electrical didn’t show up, I attached the board really quickly to ensure that everything worked so we’re just waiting on them tomorrow to test our baller new drivetrain on our charge station (which some parents built for us, shoutout too the parents that contribute their time) with a bumper mockup to ensure I didn’t troll clearance.


Reminder that 5937 is mostly a freebuild team designed in my brain because I ran out of time to learn Onshape before the season :skull:. Perks of this is around .5" of clearance missing over our battery mount that I now have to add in for the elevator so that the battery can be properly inserted. Please please please let me know if you see anything that looks wrong as it probably is and I just didn’t notice it lol.

1 Like

Looking good!

My general notes on what you are showing so far:

The 6AWG between the battery connector and the PDP could use some electrical tape to cover the exposed metal crimps. Also, I would recommend more of those white clips (or just electrical tape) on the CAN connectors. Finally, you will need to put some structure between the wheels to make your bumpers legal.

1 Like

Good points on the board, this wasn’t final because I made it but I’ll be sure to post the board for another review when it’s done! The bumper thing is also definitely true, we were going to add some spare 2x1 in the middle of the wheels as bumper mount posts which I haven’t gotten around to yet, would like to see it driving first!

Thanks for the feedback!

Programming progress so far:
After spending 2.5 weeks struggling with our practice bot trajectories not having the right odometery and launching at full speed with no regard to the actual trajectory before visiting 948 for help, we’ve continued to keep most of our effort on auto “concepts” since we don’t have a real bot to get started with yet. We have flashed PhotonVision on to both of our LimeLight 2+s and are waiting for our OV9281 camera to arrive before finishing setting up our Beelink. Since this year we have more programmers than I have the capability to delegate tasks to, whenever we have a difficult task I assign two different pairs of people to try different approaches. Of course only having one bot makes it harder for them to test, but it does seem to help get working prototypes. As of today our balance is “working” (pictured below) and we’re working on integrating pose estimation. We have also set up our addressable LEDs which we will mainly use for signalling which game object we want to load.

final BUILD WEEK

We, as a team, decided to scrap the 1 dof dream and instead go for something a bit cooler which I can respect. We’re now doing a double jointed arm on an elevator with an everybot intake on a non-parallel 4-bar linkage. Why, you ask? Lack of parts that we needed to do the 1dof design and also enough parts to make this monstrosity. Programming is gonna have so much fun! 1st prototype here, surprisingly only took a meeting to make so should be able to crank this out by the end of break given that I’ll have 35 hours to build roughly. I’m gonna have so much fun (not)…

On another note, sometimes an art teacher mentor has its perks. They may not be the best at engineering but they’re pretty darn close when it comes to blinging out your robot. We used steel wool/scotch-brite and hung these up and sprayed them up in a paint booth and they turned out great. Now for the pre-assembled chassis that I forgot to plan painting for…

2 Likes

I know it’s been a while since I posted. I sort of dropped off the face of the planet after our finish since we were one quals match or one award away from DCMP. It is what it is though.

I wanted to start to close off this thread with a couple of tips on free building an effective robot design (if I can say that about Shenanigans since it could do everything except for tipped cones ground pickup).

First of all for perfect c-c use MaxSpline pattern MaxTube. It’s crazy how good this stuff is. The chain tensioning on our drivetrain didn’t stretch at all throughout the entire season and we ran that thing decently hard. What’s even better is that perfect c-c is good for belts too.

When that fails, do bearing blocks. They allow for semi adjustable c-c depending on how you slot the tube to allow axles to pass through. They also allow for easy hex hubs on 2x1 for making sure hex is dead and not live for axle to reduce load concerns.

For dead axles on not high-load mechanisms, 1018 steel is surprisingly strong and didn’t budge an inch except in one freak case where our intake polycarb somehow didn’t bend but the steel bent. We never experienced a single failure event wise though. Could have helped that our arm was under 10lbs at its final form. YMMV. For most teams on aluminum 1/2 hex pivots, I would look in the future to learning MaxSpline 7/8" dead axles or sushi-esque dead axles. Using these types of tech also help with assembly.

I almost forgot. Tube plugs would make our entire build process have went much more smoothly. Add 3d printed crush blocks and you don’t need gussets for all perpendicular connections. And they’re stronger for directions that aren’t shear. I must have bought the most of these out of any COTS component this season. They’re that good.

And finally, what have I personally learned this season?

First off, copy harder. Over break I tried to do some quirky 3357 type beat since we had nothing but a drivetrain and I wanted to make something fast without analyzing inspiration. I quickly remembered that it’s quite hard to freebuild consistent handoffs. If I had done something simple like 3175 or 581, I could have avoided many of our pitfalls, one of which being our high Center of Gravity. However, this is not to say I hate everything about Shenanigans. For a bot that was completely freebuilt, it did its job well, while looking good doing so.

The second lesson I learned this season is to not assume that things are as easy as they seem. Some of us were excited to learn how to use new toys, like the cnc we got in January. We didn’t get it setup in time and I may or may not have “designed” (made measurements and angles and c-c distances which is basically a design right) critical parts for it. Whoops.

On a more positive note, the last lesson I learned this season was that FRC is blessed to be in its current state with the amount of people who are willing to help. Having access to OA, CD, FRC Discord, and other communities of helpful people allowed me to truly grow my skillset.

I’d like to thank:
David from 7461, Kremer/Ry/Adam from 3512, Banks on 2974, Boomie previously on 7492, and last but not least 3357, my main inspiration who let me annoy them about random things on their bot.

This season 5937 has improved (I hope) and it was quite educational for us.

Thanks for reading. If you have any questions, I check CD semi-regularly but you can find me on the OA discord pretty easily.

I always enjoy working with your team and this years robot was by far the best robot I have seen you field. I look forward to seeing your team in the offseason.

Been meaning to do a write up on rebuilding a programming team from scratch, might as well write this up to organize everything before our post-mortem tomorrow. Sorry if this is a bit of a mind dump. I know programming teams collapsing is not a regular event but can be quite devastating to teams, so hopefully something here helps some team out.

For context (TLDR everyone programming last year either graduated or quit except Joey who got elected to be “CTO”), last year I was a rookie electrical sublead as I (as a Junior) joined with prior experience in both elec and prog but saw that electrical seemed to need more help and that I didn’t want to do Java. Through the season electrical got more new members as programming struggled to teach their rookies and had a bit of drama that is out of the scope of this writeup. To sum it up, by the start of this school year everyone but Joey who was elected as CTO.

Long story short, in two weeks we went from a programming team of three consisting of another elec person, and my friend Eyal who I convinced to join, to having over a dozen people. Now of course about two thirds of those people had never programmed Java before and had all almost exclusively done solely Python. My first decision was to basically dedicate Eyal who I knew was a pretty good tutor, to essentially try to teach a condensed AP CS curriculum to all of them. This was a large burden and I have to say he did a good job with this, as by the start of build season they were able to program a drive train as a group.

In parallel during training season I basically focused on learning WPI Lib and teaching what I had learned to the third of the members that did know Java (including a couple who only knew C# but quickly adapted to Java). There was a bit of debate over ROI on setting up sim and having students learn from it, versus setting up Romis. In the end we did both with two Romis ordered and setting up simulation for our drivetrain. In retrospect the sim payed off very well and kept the rookies interested as we couldn’t all share the one practice pancake bot we had, but the Romis were a waste of money as we could only secure one RPi from mentors and at that point it wasn’t worth being set up separately.

In terms of how I taught everyone, at this point it feels more like a blur and I wish I kept some record of my progress, but essentially I’d look through last year’s code and either find something I didn’t know (like command based programming), learned it, and then taught it the next day, or I’d find something from last year that I found to be suboptimal (like the commit messages or the file/class names) and made a lesson or two out of it. If anyone has to go through this the WPI docs really are your friend, and don’t be afraid to send out “reading assignments”.

During build season I immediately programmed a basic skeleton or MVP of the specs I was given. We spent the next two or so weeks working on auto with the bot (write up on that is above so I won’t go to much into it, except to give my thanks to 948 again for helping us figure it out). My takeaway from that was that you should always dump as much data to Shuffleboard as you can during dev and to always make sure the values are sane in terms of direction and order of magnitude. You don’t need to make sure you’re precise ±0.1mm during dev, but you do need to make sure the bot doesn’t think it’s moving -500m when it moves 10cm forward! After we got balance working with the practice bot I essentially had the team take a break until we had a physical robot to program. Another takeaway is a strategy I learned when dealing with the amount of people we had was to split people into groups working on the best thing and take whatever group’s code works the best.

Now perhaps it was selfish of me, but this is where I went from almost being a “mentor” to fully taking over. I wanted the code to be perfect so I adopted a strategy of asking rookies to do things yet having my own code to go with when we they had given it a good try. It still feels a bit wrong to do that but I think it was a good trade-off to let them learn while still keeping us mildly on target.

Now we really fell behind with elevator and arm control, PID seemed to just not work and in retrospect I was too afraid to raise P by too much so we tuned at a snails pace. Honestly just pump up that P more and more.

My proudest part is that we arrived at Bonney Lake with no auto code, but because we made our arm/elevator command based I was able to write code on the bus to score a preload, and then we used the practice field to make a very cursed timed move for auto mobility points. Timed auto may be cursed but it sure worked!

Anyway if you’re still reading this, or skipped to the bottom to see if there was anything interesting, my key takeaways:

  • Simulation is great, as an alum I plan on helping out the team by combining our existing drive sim with some sort of elevator or arm sim as it’s a great way for new rookies to get immediate feedback on their code without having to use a real bot! - Romis are not so great.
  • People working in groups are better than people working alone, we had problems with people being afraid to ask for help and at least in a group they’d work together and learn from each other.
  • Might not have bot early in build season but that’s no reason to not have some basic code skeleton.
  • When tuning PID: go all in, if you’re afraid of breaking things, set up some “clamp” of a reasonable area of movement and make it stop if the mechanism goes out of bounds, then just go ham with your P value until you see oscillation.
  • Write command based code in a way that you can combine it into an auto in less than an hour - Timed auto may be cursed, but better than no auto!
2 Likes

100% agree with the time based auto. Everyone talks about how bad it is, and yet, I had a 1.5 piece and 1+balance auto with minimal(about an hour) tuning!