Team 4788 - Can’t Control’s inaugural Open Alliance Thread
We are thrilled to be the first Australian team to join the Open Alliance! We are a community team based out of Curtin University in Perth, Western Australia, ~4000km/2500miles from the nearest regional on the other side of the country. Team 4788 began its modern form by merging team 5333 and 5663. We have been sharing our robot dev, code, and CAD freely for the 10 years we have been active, as such, joining the Open Alliance was a no brainer!
Last Year
2023 was our official return the national/international stage and it was a beaut! Taking the impact award and making it to playoffs at the Southern Cross regional, was experienced by all team members that flew with us. This was our only regional and we had a blast. Our biggest success in Houston was the learnings we gained and the friends we made. Running our offseason event for the 3rd year was also tons of fun and it was great to grow the West Aus community again.
FLL is one of our favorite outreach programs we run, in 2023 we only ran 10 events and 1 championship, this was in favor of moving our rural events to 2024 and running them as offseason so we can better support the teams. There was fierce ‘coopertion’ in the FLL championships held at Curtin University with matching energy at the regionals leading up to. We wish the best of luck to the qualifying teams in their international competitions to come and all FLL teams for next year! We’ll do more in depth posts on FLL (the competition set-ups, our custom tournament management software, etc) later in 2024 when it becomes relevant to us again, so be sure to hit that notification bell!
Master Classes
Our students at 4788 (and anyone around WA [West Aus] that we could invite) have been involved in our new hands-on learning Masterclasses, to prepare for the 2024 season we’ve hit the ground running with students gaining experience in the programming, mechanical and marketing skills required for the season to come.
Masterclasses is a revised version of our former “preseason”, the goal was to grow the knowledge base of all WA teams (now that there are many pre-rookie teams). We get people like university lab demonstrators to present engaging “lectures” in the morning and then hands on workshops in the afternoon.
Ri3D Training
Now our members are testing their problem-solving abilities in an unofficial Ri3D 2017 FRC challenge working to have a functional robot by the 6th of January. This is our annual brain warm-up before kickoff so that we are ready to kick in to gear! More on this, Friday.
Every year prior to kickoff 4788 meets for 3 days, in these 3 days we build a robot to kick our brains into gear and practice our skills.
This year we did 2017 steamworks (balls only), this decision was made by the mentors because we still have an outlandish amount of fuel around and with a very rookie heavy team this year we wanted to do something a bit easier.
Final Robot
Choices:
Robot Must intake from floor and hopper
Should be able to unload as many balls as possible as quickly as possible
Can’t be too complex as we only have a short amount of time
Features:
Full length roller intake
Hopper style magazine ( Ultimately voided by the electronics panel being put on top )
Heavily inspired by Spectrum’s design guidelines (thanks @allengregoryIV) we created our own. Our process was to run though Spectrum’s as a template, and steal the best and invent the rest. The “inventing the rest” for us looked like removing irrelevant guidelines or guidelines that didn’t reflect our own team limitations, and then adding any guidelines we have experienced. This is a process we have never previously documented before season, and only discussed.
Do
Make a good robot (be in the meta)
Low center of gravity
Build compact robot
Simple
Swerve if viable
Use brushless motors only
Allow room for error
Don’t
Telescoping elevator/arm
Resting position shouldn’t need motor
Use claws/pinching mechanisms
Have unnecessary bumper cut outs
Passively drop mechanisms
Use pneumatics
Try to do everything
Shoot during pick and place games
Scissor lift
Pick up flat objects at a steep angle
Ramp bot (we expirenced this in 2018, in the end we removed our ramps and won the comp)
Materials
25 x 25 SHS & 25 x 50 RHS
1.6 or 3mm
25 x 25 angle
1.6 or 3mm
Aluminum sheet metal
3 or 5mm
3mm Polycarb
Corflute
1/2 in hex shaft
Circlips
3D Printing
Filament
PLA+, PETG
Don’t
Print anything structural
Print hex bores
Print gears
Large objects
Full mechanisms
Do
Print spacers
Anti-crush blocks
Print RSL mounts
Bumpers
Removable bumpers
Corner mounting (One of our students made quite a good system last year, I think it was inspired by 8177 Vector)
Good quality plywood
Solid core noodles
Cricut numbers
Put on before making bumpers
Handles
Give handles space for hands
Solid handles
Electrical
Battery → Mount flat
Create standard for battery lead direction
Breaker - Never use optifuse
XT60’s for power
MT60’s for brushless
Always solder CAN
Test ethernet cables
Mount radio landscape
Above bumper + 150 mm away from motors
Hot glue ports (after inspection)
Sensors
Encoders on gear bores
Sensors in home positions
Game piece detection
Power Transmission
High speed → pulleys
High torque → Chain
Bearing for all fast motion
Launchers, intakes
Bushings for slow motion is ok
Arms, wrists, pivots
Programming
Set points
Xbox controllers
Github
Vision
Remove control from driver to give control to robot
4788 likes to stay overnight at Curtin to watch the live stream. We do this mostly as a bit of fun and a team building exercise, this year we leant into playing some strategy out more than previous years. This was all done knowing that its only rough preliminary thoughts, as for us the kickoff stream is at 1am, so any “critical thinking” between 2am-4am is hard to trust!
Key Thoughts
Prior to kickoff we established our goal is to be 1st pick to number 1 alliance.
We find that in Aus there is usually one or two crazy good teams
This year we suspect that those teams will be 4613 Barker Redbacks and 4253 Raid Zero
Our strategy will likely be to fulfil a complementary role to a top seeded team
This game looks like it will be really fun! Certainly in the engineering and hopefully in spectating
We will next be meeting on Tuesday, this is mostly to give our members time to rest. The added advantage is that we get to see Ri3D robots on that day and since we have to wait for our KoP to be shipped to us the time until we get that from start is less.
Discussing
Game Strategy (What will matches look like)
Robot Strategy (How will our robot fit into that)
Robot Mechanisms (How will our robot accomplish this goal)
COVID is still real, and some of our members have it, so unfortunately we had to work from home today.
Today was about defining a concrete list of priorities, goals, and establishing our strategy.
Robot Goals
The reason we define these is so that we can have a good expectation within our team on how the robot should be performing (i.e. stability → the robot should be remaining fairly stable as it drives.)
We understand these are a bit loosey goosey.
Reliability
Fast scoring
Robustness
Stability
Mobility
Fixability
Expected Archetypes
These are the general robots we mostly expect to see at our regional, we don’t expect to see many if any of the final option.
Does not complete objectives
Defence Bot
Only does one objective
Amp
Speaker
Stage
Completes two objectives
Speaker + Amp → Most Viable (of 2 mech bots), Park + 1 shot in speaker (even not amplified) is worth same as climb
Stage + Amp → Potentially a good support bot
Stage + Speaker → Least Viable (of 2 mech bots)
Completes all 3 objectives
Speaker + Amp + Stage
Completes all 3 objectives + More
Speaker + Amp + Stage and More
Trap Scoring, Shuttling device, buddy climb, etc
Winning Alliances
The following data/analysis is based on a 2v2 match up. Mostly because the analysis is easier that way.
We think both robots doing low, then high (whilst amped) is by far the best. Our expectation of the winning alliance is 2 bots score low, then all 3 score high (3rd pick is a kitbot high only, cycles half the speed of the other 2 but scores 83.3% of the others) the 10 secs amplification should be plenty for everyone to score.
The big debate today was Single Arm vs Double Arm vs Handoff. This took a fair amount of discussion and consumed our whole morning.
Our final verdict was that Single Arm is easily viable and we believe it to be our skill floor, but to be more competitive we want to surpass this floor. As such our final architecture will be a double arm.
Some Geometry
We explored our double arm geometry in CAD. We found that to simplify the arm we ideally want the drive base to be 650mm long, this may change as we progress in season.
The goal for our geometry is to use the “forearm” to intake, score Speaker, and shuttle Notes. The purpose of our “bicep” is to score the Amp effectively and if needed adjust angles.
Moving Forward With COVID disrupting the expected flow of our season, we’ve had to adapt. Our approach is to have parts manufactured tomorrow and a mechanically complete drive base by the 12th. This will allow our already developed swerve code to be tested and tuned for a driving base by the 14th. Shortly after, our first version of subsystems will be mounted resulting in the birth of “Alpha Bot” by the 18th, allowing for driver testing.
After the immediate crunch, our schedule relaxes with almost 3 weeks dedicated to manufacturing and Electronics followed by 3 weeks of programming, resulting in the “Beta bot”. Don’t let the name fool you, as this is the bot we plan to be competing with at the Southern Cross Regional.
Our Alpha bot should be completely viable for the southern cross regional. Alpha bot is iteration 1 of our final robot, the goal of which is to learn failures earlier rather than later. Learning from these failures we can make Beta bot better. Alpha bot will also give us the opportunity to start driver training and co-driver selection earlier rather than later.
This is unusual for us, but we think it is beneficial for this season and all seasons going forward.
Since December 2022 our team has been working on a library for our team, Wombat. The aim of Wombat is to reduce the learning curve of writing code for FRC. In particular it prevents breaking changes in dependencies from drastically changing the way we write code, along with providing powerful abstractions over the APIs they expose. So what’s happened since then?
Over the 2023 season, offseason and now this season, we have come a long way. From one macro to an expansive library of utility functions and classes. Some of the highlights include:
behaviours; our in house commands alternative with lots of syntactic sugar
our swerve library
our unit safe PID controller
We also have a documentation site site in order to try and make the experience as nice as possible.
Going into the rest of the 2024 season we are excited to expand and improve Wombat as a tool for programming competitive robots. This week we will be testing core functionality on our new drivebase and then creating our first ever release of Wombat!
With the goal of a fully assembled drive base by the end of tomorrow, we’ve made quick progress. Two of our four swerve modules have been assembled, and the frame is nearing completion. A few brackets and a belly pan later, we’ll be ready to attach our electrical plate. With our experience in swerve from last year and organized schedule, this hasn’t been too painful for us.
Programming
Due to our many goals for programming, we divide and conquer. Students decided which subsystems sounded the most interesting to work on, while others dedicate their time towards features such as vision, dashboard, a scouting app, and autonomous planning. Despite the extra work, we’re aiming to have quite a “smart” first iteration with as much information as possible from encoders and sensors. While this may add to the initial crunch, it will ensure a similar feel between alpha and beta bot.
CAD
We spent the day completing our drivebase CAD and working on the overall geometry for our double arm. The geometry we’ve decided on gives us nice positions for intaking, shooting, stowed, and scoring in the amp. With geometry now decided, we’ll be moving on to the full robot CAD for our alpha bot with the goal of having the CAD done by Sunday.
We’ve been lackin’ on posts, so here’s a massive one. This post details the design process of our alpha-bot, our next post will be detailing the specifics of the constructed robot.
Bicep
Our Bicep arm draws heavily from 2910 and 1678’s 2023 robots. Our visit to champs allowed us to learn a lot last year, one of our learnings (which we have been broaching for a while now) is that Hex Shaft will hold you back if you let it.
As such we are using 40mm Round tube for our bicep shaft. This is live on alpha, connected to a 200:1 gearbox with a built in tensioning for the chain, powered by a NEO.
With a lack of Notes and time, we skipped prototyping for the most part in favour of watching other OA teams. We still have some plans in mind to test on Alpha, but its not something we have found necessary with this simple of a game and so much data out there already.
Prototyping Favorites:
Unqualified Quokkas, Especially our 3 mentors that participated on Unqualified Quokkas
Our current design runs our wrist actuation from the base to the 40mm tube, to the wrist through 25 Chain. This is to keep CG as low as possible and keep the end effector light.
We also run our shooter up, but with 9mm HTD belts instead. Both of these runs are not in the CAD.
Drivebase
We are using SDS Mk4i L2 modules, we used the Mk4s last year and loved them, however over the offseason we identified how game changing having a low CG robot is (Especially with our new rather wild driver).
Our size is 650x600mm
Next Steps
We are working on having our robot mechanically finished ASAP, as I post this we are assembling with the parts we’ve manufactured throughout the week. The hope is to provide programming with as much time as possible, especially with the unforeseen issues we’ve had with migrating from last years’ libraries. Robot should be mechanically finished Sunday, as we have a 2 day break now.
We’re hoping this can streamline our competitive bot, while providing our drivers with important practice.
Our Alpha-bot is now mechanically complete. (and has been for a week, blogging is hard)
The following is a breakdown of our robot, the techniques used to build it, and any issues we faced.
The “Forearm” is our integrated intake + shooter. V1 is okay, V2 and subsequently V3 will be massive improvements upon this version, but our goal was to have a testing base ready for now.
Features:
Intaking directly to shooter
The idea behind this choice was that we would be able to make a more elegant robot if we didn’t have a separate indexer/handoff for notes
Powered joint, this gives us 3 main benefits
Angled shooter, low to the ground. Keeps our CG low while traveling + allows us to get better angles on the speaker
Stowing. Having an in bumper position whilst doing full field movements always proves useful against G417.
A bit of distance we won’t have to cover during auto battles. (This is as opposed to an under-bumper intake)
Stats:
2in intaking AND shooting wheels with 15mm (~1/2in) compression
NEO ~1:1 on the shooter, driven from the drivebase via 9mm HTD Belts
NEO ~2:1 on the intake
Powered Joint
NEO ~100:1 on the shaft, driven from the drivebase via 25 Chain
Tests:
Shooter
Can we make 2in shooting wheels work? This would make packaging nicer, but we suspect it will be too slow
Wheel spacing + Compression? We like the idea of top and bottom wheels just at the edges
Intake
Compliant wheels vs PVC rollers (with or without coating)
Power Transmission
Will the slop from running the chain up the bicep be too much?
The “Bicep” is the large section of arm and the “Shoulder” is the joint it sits on.
Features:
The Bicep sits on 40mm tube and is driven by a gearbox in the drivebase, the final stage is able to rotate around the output of the 2nd stage so we can tension the chain.
Can do 180 in <1 seconds
40mm tube is driven in 4 HDPE plates which also act as bushings
Negligible backlash, with an absolute encoder on the edge for ideal control
Stats:
NEO 200:1
Tests:
Speed/Torque
Too fast/slow for perfect automation?
Strong enough for us to use in part for climbing?
Failures
FAILURE: HDPE does not act well as a bushing for large diameter shaft
FIX: Use bearings
FAILURE: As expected our polycarbonate gearbox plates flex, occasionally the NEO disengages
FIX: Temporary; Support the NEO to reduce flex. Final; Get the plates made by a sponsor out of aluminium
FAILURE: Brake mode doesn’t quite hold the arm level
FIX: Add a jank alpha only hardstop
Techniques:
We don’t have a CNC router, lathe, laser cutter etc, We just have hand tools and standard power tools. And yet, we prevail! Here’s how:
Intake Plates + Gearbox plates:
To make these we print our working drawings out 1:1 and use a jigsaw to trace the outline
We then tape the cut paper to the part and drill the holes
This method works great for us when we are in a pickle, we can get sponsors to make parts for us, but the lead time can be days or weeks. It is not ideal.
As detailed above, the final stage is able to rotate around the output of the 2nd stage so we can tension the chain by pulling away from sprocket, as such adding distance to C-C of the pulleys
Our second robot iteration dubbed “Betta Bot” is now mechanically complete circa last week. This post will breakdown the core decisions we’ve made these past couple of weeks and the many issues opportunities we’ve encountered.
Alpha Bot is Over Party:
This season has been coordinated very differently from our others in the past. The decision to build two primary iterations was made to streamline programming and minimize “dry patches” where a lot needs to be done, but members still lack jobs. With this structure, our first iteration “Alpha Bot” was disassembled across a two-day live stream. While Alpha Bot was extremely valuable in deciding the best possible drivers and making the path forward clear, it’s disassembly was required to re-use the parts and sensors. In future seasons, we hope to have two swerve robots existing simultaneously, to further the efficiency of the season and strengthen our driver training. (RIP Alpha Bot, you might be missed).
A primary decision reached after many days of heated discussion and voting was to transition from a “double arm” with a rotating wrist to a “single arm” with a fully static rotating arm. While a difficult decision, especially occurring later in season, the pros outweigh the cons. A single arm reduces the programming threshold substantially, reduces points of failure, streamlines construction as there is no need for an “integration” team, the degrees of freedom provided by a wrist were not seen as necessary and the arm will be less top heavy without an extra gearbox and hex shaft.
Easier to program
Less points of failure
Streamlines construction (intake and arm)
Unnecessary degrees of freedom
Weight (top heavy) and real estate
Spreading Our Wings:
As our season progresses the discussion of a climber has been a constant one. In the last week, this discussion was put into action with a small team dedicated to designing an effective climb. We initially planned to design an external climber as an entirely separate subsystem, however utilizing our arm to climb is more efficient. With the complexity of a double arm removed, we have the resources to dedicate towards a climber. While not essential, a climb allows more strategy during end game and reflects well on scouting data.
This season has had an unprecedented increase and retention of programming students. Because of this, we have been able to dedicate efforts towards many side projects which in the past have typically become abandoned. We now have a reactive LED display, a customizable FIRST Dashboard and a user-friendly data pipeline for scouting and strategy at competition. These are all things we’ve always wanted to do but thanks to our dedicated team, this has become a reality and greatly improved the quality of life of these aspects of our team’s software.
With Betta bot mechanically finished we are going to be “programming all over the place” with efficient poses, PID tuning, multiple autonomi and vision tracking coming soon. Don’t worry, we will have mechanical updates as programming attempts to push Betta bot past it’s limits (we may or may not have already melted one of the pulleys). It’s crunch time for all of us at 4788. (Don’t forget to enable notifications and follow!)
We fly out tomorrow, so our uniform arriving today was just in time.
Thought we’d post our thoughts on team uniforms.
We find that uniform can really solidify branding.
Good branding will make a team standout from the crowd and be memorable, this is important to us for a few reasons but most just because we like being remembered! It’s more fun that way
When making uniform we try and remember 3 things:
We are a robotics team, let that be known! We do this by adding our robot CAD wireframe, it looks cool and gives people who may not be in the FRC community a better taste of what we might be wearing that shirt
BRANDING. Our colour is magenta/pink, lets be that. We want to paint our position in the stands with pink, not only does it set our team apart but lets everyone know where we are. (It makes my job a bit easier, because its pretty hard to miss a student in bright pink)
Professionalism. When we want to be clean and slick, wear our jackets, they’re black so its a bit more toned down when we go out to schools or presentations. We also value our connection to sponsors, so you’ll see our sponsors pictured on our (mandatory for students) Polos and on our more professional jackets.
Personal notes about uniform:
Our pink on pink hoodie was inspired by 3847 Spectrum’s white on white that we saw last year, which was inspired 148’s black on black.