2102 Build Thread 2024-25 Open Alliance

image
Welcome to Team Paradox 2102’s 2024-2025 Open Alliance thread!
This will be our first year of running a build thread.

Who Are We?
FIRST Team Paradox 2102 are an FRC team based out of San Dieguito Academy in Encinitas, California. We have competed in every FRC season since our founding in 2006.

Links:
Github
Website
2025 CAD (to be added)

2024 CAD Release
2024 Robot
2024 Offseason Bot (never built)
code possibly coming soon!

32 Likes

19 Likes

Time for the first of hopefully a few writeups on sucessful practices we implemented this year that we will do before the season starts.
Wiring Writeup
We have had wiring issues for a long time, but this year we had one of our alumni come back to become a mentor. He does motorsports electronics, and helped us improve our wiring for this season. Information in this post comes from him via this writeup from @Footie. In addition, thanks to @Baby_Carrot and @Big_Ideas for additional info and clarifications.

The main change we made this year was to trunk/branch CAN topology. It’s worth noting that it is not recommended by FIRST, and it is pretty easy to have issues that could take out a branch if you do it wrong. In the past we have often had single bad connections or failure points that could take out the entire robot for a match, and this topology helps fix those problems, while not requiring a CANivore or another way to do extra loops (we are a REV motor only team). With trunk/branch topology, all the individual motors/other CAN controlled bits of the robot are on seperate CAN branches and can be lost without an effect to the rest of the robot. You do need to have a short stub length for each of the branches which can be troublesome in some design cases.

Trunk/Branch CAN layout diagram
image

Better topology does not solve bad connections though, so we made the following fixes:

No Wagos: Wagos/lever nuts are good for prototyping, but too easy to yank out during the stress of competition. Molex connectors are fine and easy to disconnect but not ideal.

Connector Choices We use Deutsch DTM connectors for most CAN connections, which can join many (2 to 12) sets of wires, and latch very well. We buy the non-waterproof versions because the waterproof ones are very expensive.

We still use Anderson Power Poles (ziptied together) for power, and SB50 battery connectors (we will probably update to SB120 at some point in the future). Andersons need to be crimped well and pull tests need to be performed to ensure a good connection.

Multiple wires per connection makes swerve wiring and swapping easier, since putting all of one type of wire in one connector makes it impossible to plug motors in wrong when swapping modules.

image of our 2024 wiring with swerve module CAN connectors circled

Automotive Wires: We use 12AWG stranded copper wire with cross-linked polyethylene (XLPE) insulation, originally intended for automotive use. There are 3 different thickness of insulation: (from thickest to thinnest) SXL, GXL, and TXL. TXL should be sufficient for most use cases. GXL or SXL might be useful in high risk zones of the robot. We largely use TXL. TEFZEL is the strongest kind of coating, but can be quite expensive. M22759/16 or generic TEFZEL is the kind we use. This should be used for critical systems where an increase in strength is worth the cost. The best use case would be for vulnerable small wires or mission critical systems like CAN Bus lines and long encoder or limit switch wires vital to robot function. In our prototyping this year, we used IDC 2-wire tee taps, but on the comp bot with Tefzel CAN wiring, the insulation was so strong/thick that the vampire taps couldn’t pierce through, so we had to find other solutions.

Heatshrink: The main heatshrink we use, SCL is a Semi-Rigid encapsulant-lined, heat-shrinkable tubing with a 3:1 shrink ratio. It provides excellent strain relief and damage protection. We use this on battery terminals and wherever strain relief is needed and is our most commonly used heatshrink. The full recovery temp is 135 C so care must be taken to not melt surrounding plastic. Once recovered and cooled, it turns into a semi-rigid hard plastic that keeps its shape and can be useful for guiding wires in the preferred direction. We also use Adhesive-Lined Polyolefin Tubing with either a 3:1 or 4:1 shrink ratio, it maintains flexibility and is useful to keep things together where they should be, but does not provide much strain relief.

Sleeving: The only sleeving we use is PET Braided Split Loom. Split Loom is required for inspection according to R613.

Tape: While generic electrical tape can be useful, it is easy to tear, does not offer much mechanical strength and leaves a residue when removed. A better tape to hold wires together is something like Fabric TESA tape for automotive harnesses. The fabric tape holds up better than the fuzzy interior tape of the same design.

No Soldering: Soldering should be a great option in theory, but usually, in our experience, due to the difficulty involved we end up with weaker connections than a properly soldered joint should be. The only time we solder is wires directly to limit switches. We use open barrel crimps now which are stronger and easier than soldering.

Hot Glue: This is the fastest, simplest, and cheapest way to make the biggest difference in wiring quality. We hot glue any connector that doesn’t have a locking mechanism or can be pulled out with moderate force. This includes basically everything plugged into your VRM, Rio, all USB ports, and all network ports. We do not hot glue the big power ports on the PDB/PDH or the breaker, but do hot glue little connectors like CAN. We pull it off with some needle nose pliers or pry it off with a flathead screw driver when we need to make changes and then immediately re-glue it.

Cutting Wires: To avoid getting wires caught on things or pulled into our drivetrain, we cut the wires to just a little bit over the length we need for strain relief.

Planning Wiring During Design Phase
In order to simplify the wiring process and ensure that we don’t leave any wire pinch points on the robot, we plan the entire wirepath in CAD using Onshape sketches before wiring anything. While an enormous amount of detail isn’t required, it’s good to at least map out where mounting/zip tie holes will be and where each wire branch will generally go.
Additionally, we anticipated needing to hotswap the intake/shooter mechanism during competition this year, as well as the climber. To assist in this, we designated certain “master disconnect” points, where all of the wires for a mechanism are bundled together in one or two connectors. Due to this being a major failure if something goes wrong, we paid extra special attention to strain relief and crimp quality in these areas. The best example is the 12 pin Deutsch connector and Anderson block that connects the chassis to the pivot.

The intake master disconnect point

17 Likes

I’m excited to see our frequent pit neighbors start a build thread!

3 Likes

Unfortunately, our teams won’t meet at regionals this year…
However, I’m still putting this thread on “Watching” because I feel like your team is about to have major breakthroughs this year when it comes to building competitive robots :muscle: :grin:

14 Likes

Also great for strain relieving wago lever locks when used in a pinch (just glue the body of the connector to the bot).

Remember isopropyl alcohol is awsome for removing hot glue (especially from closthes) just be careful where it is used on the robot (materials) and when (obviously keep away from an ignition source)

1 Like

Preparation is key to successful prototyping, so we are making sure we’re ready for the new season. The quicker you can find out what works and what doesn’t, the sooner you can get to an actual design.

Prototype Plates:

First off, we have what we call “Prototype Plates” that we started using last year. They are two big polycarb sheets with lots of holes pre-drilled in a grid, and mounting brackets for our old optical fixture table (it has a steel surface with lots of 1/4-20 holes). It makes it very easy to set up different geometries for dead-axle rollers (which we’re a huge fan of, and we’ll have a full write-up on later). These plates are used for day 1 testing of geometry, compression, roller material, speeds, and trajectories. Here’s a video of us testing angles that our intake could be at in relation to the floor to more effectively pick up a note. Usually we just start out powering it with a drill, but in the case of a shooter, it’s not too difficult to hook up an actual brushless motor and an off-board controller with a potentiometer for speed control, affectionately dubbed ‘Hell on Earth’ due to its rather questionable safety features in its first iteration

We usually have these attached to our fixture table, but I don’t see any reason we couldn’t attach them directly to a robot chassis if needed.

Prototyping Robot:

This last weekend we prepared our prototyping robot. This was originally our Charged Up off-season robot, but we found that last year it was invaluable for quickly fabricating an intake, attaching it to the wrist, setting the elevator to various heights, and using it to test out basic mechanisms. Last year this allowed us to have a robot that could do full cycles by Wednesday after kickoff, and proved that our basic intake/shooter combination was viable for the full robot. I expect after the game reveal in a few weeks, we’ll do that again, quickly making some grabbers to slap on the end of the wrist and test quickly.

Given the likelihood of Reefscape being a pick-and-place game, we think this chassis will be very helpful again, so we spent the weekend re-installing all the electronic components we scavenged from it. The wiring is what we’ll diplomatically call ‘prototype-grade’ – nowhere near our current standards, but really we just need it to work for about a week of testing, and then can strip the valuables off it and go back into storage. Largely this weekend was about re-wiring the CAN, updating all the spark maxes and setting the right IDs, getting the Rio and Radio back on it and programmed to work together (radio was set for comp mode and rio was loaned out to 3128 so had their team set on it). We still need to get swerve modules back on it though, which is happening today and/or tomorrow after school.

Having a basic robot that has some mechanisms to allow adjustable variables has been incredibly helpful. Even when there are limitations, where it would not match what the final robot would be, you can make adjustments to field elements. For instance, we were trying for shooting into the amp, but this robot had the shooter too high and too far forward, so we employed some creative field element elevation (read: chairs) and did some calculations to figure out how far back it should be, assuming the final robot’s bumpers were against the amp, and it got us what we needed.


Our previous strategy was to have just a chassis with mounting points on the frame, but we lucked out having this robot last year, and it seems like a perfect early prototyping platform, so we want to keep using it (or something like it) going forward. Once build season kicks off, you’ll be seeing these in our

Stay tuned for our next write-up on our silicon wrapped dead axle rollers; our simple sleeving method and how we managed to spin them at ~7,000 RPM without the silicon ripping itself apart.

18 Likes

I want to be 2102 when I grow up

9 Likes

Code Release
This code is rough and never got truly polished (I would not suggest using it as a reference for anything), but we would still like to release it out into the world.
Repository
The main problems that led to the code being this messy are twofold: working as fast as possible to get the robot working with very few looks back to clean up or review code, and not utilizing all our programmers well. The core problem to solve with our robot, the combination intake/shooter mechanism, was quite complicated for the programming side of things with all its functions, and we aspired to a pretty high level of automation. Features we managed to get working include retracting the intake when a note is acquired, automatically stowing the note in the correct pair of rollers and revving up the other depending on the side we shoot from, and constantly passively aiming to either shoot or pass as long as we have a note in speaker mode. This level of automation allowed us to in ideal circumstances run a whole match on 4 buttons besides the drive sticks: the driver has buttons to intake and shoot, and the operator has a switch to toggle between amp and speaker and a button to climb. Both also have multiple manual overrides if something goes wrong, but we actually achieved a mostly ideal match (save for the occasional manual pass to get around defense or look at apriltags) most of the time (around 80%, i dont have exact numbers). However, when things went wrong they were slow and difficult to fix due to our complicated and often undocumented code, and the problem was often spread across multiple different files. This year was also our first year since COVID with more than 2 frc-ready programmers, and we did not do a good job delegating out enough tasks to newer people. This next year we will be focusing more on rewrites and reviews of code that has be written, trying out new techniques like command factories and triggers to try to seperate and clean up our subsystems, and giving out more basic code sections like PID tuning and auto path writing to our newer members (we are up to 7 people this year which i think is a team record!)

TLDR: just because our code worked this year didnt mean it was good

9 Likes
3 Likes

Alright, I teased a post on our silicone rollers, and here it is.

Basically every team had intakes with rollers last year, many used cat’s tongue tape wrappings, and others used silicone tubing stretched around it. We had the unique challenge of not only intaking notes with silicone dead axle rollers, but also shooting with them, since our robot architecture meant that we’d pickup and then shoot out of the same side (well, actually we could shoot from both sides). It’s probably the most effective touch-it, own-it intake our team has ever used.

Pickup

Shoot Forward

Shooting Backwards so we don't have to turn around in Auto

There’s nothing special about the rollers themselves, we’re using Spectrum’s dead axle roller setup because they are amazing. What we are doing differently, is spinning silicone at 7K RPM in order to shoot a note. Let me tell you, silicone does NOT like spinning that fast, and the centripetal force will make it balloon out. When the ends are just bare, they will flare out at about 4K RPM or so, which will result in the silicone hitting the adjacent roller, always accompanied by a terrible noise, and usually resulting in the silicone ripping.

Through many different tests and unsuccessful solutions to this, we found that a bulletproof fix is to wrap the end with Tesa Tape, which is an adhesive backed fabric tape usually used in automotive wiring, and a specific property of it is that it does not stretch. Then, so that it could not possibly unravel, we put thin super glue where the seam of the tape meets, and because it’s fabric, it soaks in. We also like to put silver sharpie on the tape so we can easily see that what direction it’s spinning from a distance, but that’s up to personal preference.

I’m sure everyone does this to some extent, but we fastidiously cleaned the rollers between matches with microfiber rags soaked in isopropyl alcohol. As long as we did that, they would keep their grip.

We occasionally got rips in the middle of the silicon, which lead to massive expansion. When the ends were taped and glued, this effectively formed an air seal, and the middle part of the silicone would not expand because there was vacuum keeping it in place. If there was a rip, air could subsequently get in, and it would balloon out again. Thankfully, we found that if the rip wasn’t too bad, we could just add another strip of tape, and because the note was so wide, it didn’t really impact the function.

That being said, we specifically designed the intake/shooter so that all of the rollers were identical (aside from the 3d print insert pulleys, which could be swapped). We treated them like consumable parts and made many, many spares.

We only had one catastrophic failure, slamming against our buddies over on 2485 Overclocked, fighting over a centerline note. We learned that we can’t fight over notes, we’re fast and nimble enough that we just need to go for uncontested notes. Intakes should be floppy, but shooters should be rigid, and we have a intake/shooter combo, so we had to go with rigid intake, and rigid mechanisms don’t like getting rammed.

We tried two different durometer silicone tubings. The white tubing is 30A, and the blue tubing is 50A. We didn’t really find much difference between them, except that the harder blue ones were more difficult to apply to the tubes. Largely we only used the blue rollers as emergency backups, as we weren’t sure if changing between them would impact our shooting consistency.

We also have a novel method of applying our silicone tubing that we haven’t seen anyone else use. We are thankful that the shop we work out of is outfitted with many cool tools that we normally never need to use, and one of them is a vacuum investment casting table, mainly used for making plaster molds for the jewelry making class that uses it for one or two periods a day. Another one of our mentors (Steve) whipped up this handy device that uses the vacuum to stretch the silicone tubing outward against the inner wall of some PVC, so we can just slide the tube right in, and then release the vacuum and it tightens around it again. We’re lucky to have this vacuum table, but I don’t see any reason it wouldn’t work by hooking it up to a shop vac instead.

Here’s my MS Paint diagram of the section view of it.

One other thing you might have noticed in the photos above is that we aren’t using a gearbox or multiple motors in order to spin our top and bottom rollers in opposite directions. We have one Vortex for the front two rollers, and another Vortex for the back two, and we’re using polybelts in a infinity loop. I hate polycord/belt with all of my being, and we started using it as a temporary solution, but it just worked surprisingly well, and it meant not having a heavy gearbox or more motors. We had to make some little shields so that notes wouldn’t get stuck on the belt itself, but otherwise they worked shockingly well.

The key to it working was to slice off a ring of the silicon, and super glue that into the groove of the pulley so that it would get enough grip to keep the follow roller at/near the speed of the driving roller. No amount of texture on the 3D printed pulley would help, it just acted as an abrasive that chewed the cord apart.

Ring of silicone for Grip

These silicone rollers were a crucial part of what made our robot both lightweight and effective. While the design had its challenges - from high-speed stability to competition patch jobs - the combination of dead axle rollers, carefully wrapped silicone tubing, and our simplified belt drive system proved to be a robust solution. For teams looking to implement something similar, our key lessons were: secure the silicone ends with non-stretch tape, treat the rollers as consumable parts, and keep them clean between matches. This setup helped us build one of the lightest and nimblest robots in our region- proving that sometimes the simplest solutions can deliver unexpectedly powerful results.

15 Likes

2024 AI Gamepiece tracking repo:

2025 Base Drivetrain CAD

posting these now since I tried to attach both to earlier posts before and failed (I think I can’t edit those anymore since I forgot to make this topic a wiki)

5 Likes

Day 1 Decisions/Strat Summary:

  • Coral is used for a majority of the RP, very important to be able to score on all levels if you want to rank high and control your destiny
  • Deep Cage makes climb RP trivial, but is very difficult (probably requires some kind of clamp/magnet with a pivot). Shallow Cage can probably be solved with hooks on an existing elevator or arm but requires your partners to have a climb for RP
  • Station Coral seems to be almost certainly the play over ground pickup, given you only miss out on 3 pieces that are already tricky, and there are many more coral than scoring locations.
  • Algae is not that important for any RP, the two for coop are probably all that you need at a higher level

Overall a robot with a station intake/coral placing end effector, plus a simple ground algae intake/scorer, a way to get the algae off the reef, and a climb (TBD on height) seems able to solve most of the game we want to do, and we will probably spend the next few days prototyping and deciding on the overall robot shape.

Mechanism prototyping/ideas
For coral, @Footie had an idea to pick up out of the station sideways and feed into a funnel to score it the correct direction.


We initially liked this idea and put it onto a lot of our archetype sketches but abandoned it due to simply being too large/complex. We also entertained the idea of a v-shaped station intake to funnel the coral into the correct orientation but that was also rejected due to size and weight.
We are currently weighing 3 options for coral scoring, the first being a simple roller claw on a wrist, which is the simplest and lightest but also is expected drop coral the easiest due to misalignment or being pushed away. To solve this, we are developing 2 ideas. The first is a wide intake with top and bottom rollers similar to 2023 intakes. The main problem with this idea is that it is hard to score game pieces precisely, requiring some kind of centering mechanism. To figure this out, we will be attaching a first version of this intake to an “alpha” bot, essentially just our 2023 practice bot with the elevator made vertical:

The other idea is a static hopper based on the v-shaped funnel that can be dropped into by the HP and then picked up by our scoring mechanism, but this is pretty bulky and complicated (maybe preventing a deep climb), and the design is not yet finished. This might become our “beta” robot.

For algae, we have done some simple tests and determined that it isnt that hard to knock it out of the reef, we will probably use some kind of stick, maybe with a roller on it, to flip the algae out, and then a simple slap-down ground intake to grab it and score it into the Processor.

We haven’t done any climb related testing yet, and would like to get a Deep climb, but it isn’t at the top on our list of priorities and seems very hard. a Shallow climb seems very doable.

Early Archetype Whiteboard Sketches


Coral intake and algae knocker on front, algae intake on back, with room for a climber in the middle. Probably similar to what we want to build.

Flat stowing tilting elevator a la 1678/2910 2023 with ball knocker on top. Height makes deep climb a lot easier.

Coral mech on front, algae on back. simple shallow climb stuck to the side of the elevator.

Elevator and arm combo holds both a coral and algae mech. The only sketched archetype that can score net, but probably a bit too complicated and lacks algae ground intake or room for a climb.

passthrough for algae from a rear ground intake with a reef cleaning mechanism on the front, and a simple coral scorer above. Again probably too complicated for us to manage well.

Claw on a wrist for coral at the front, slapdown on the back, sideways flip climb in the middle to handle Deep.

similar to the previous, but the climb and intake are combined into one.

13 Likes

Autonomous Planning

Last year, at many of our events, auto compatibility was a huge liability for us. In fact, 3255 SuperNURDs almost didn’t pick us at the San Diego Regional because of this. As such, having reliable and complementary autos is a top priority this year.

Our Main Goals

  • 3 reliable autos, one on each side and the center
  • Ensure that we can secure the Autonomous RP

This was especially evident in the past two years, but we realized that the autonomous period typically consists of two alliance members making long runs on the outside while a third robot performs a simple center/close routine (e.g. charge station or 3 notes closest to the speaker). Looking at the field layout, we speculate that (assuming you’re in the drive station facing the field) two robots will score on the right/left side of the reef :coral:, utilizing the coral stations, while the third robot will perform a simple auto on the far side just scoring the preload and removing algae or close side scoring the pre-placed game pieces. Therefore, our main goal is to have some form of complex autos on both sides and a simple middle auto ready by the time Week 1 comes around.


(Each color is an abstract representation of a plausible autonomous routine.)

Guaranteeing the Auto RP

As I mentioned earlier in our main goals, we want to ensure that we can secure the autonomous ranking point. You might be wondering how we plan to guarantee this RP, given that it requires our alliance partners to do something. Our solution:
ezgif-4-427a8cf7a4
Since the rules allow robots to start anywhere as long as part of the robot is across the line, we realized that we can line up in such a way that our alliance partners are right next to us and barely straddle the line. All we need to do is push them out, score our preload, and secure the ranking point. (Note that this is only to be used if our alliance partners can’t move/move unpredictably during auto)

Final Notes

In addition to creating new autos, we also want to determine the ideal routine. Since this year’s autonomous period is more similar to 2023 than 2024 (with fewer point bonuses and game pieces that require more precision to score), we were wondering if it might be more worthwhile to score more game pieces at lower levels rather than fewer at higher levels. The reasoning is that, during teleop, there’s probably not much of a time difference between scoring on L4 and L2. Therefore, if we can get extra cycles by scoring low during auto, it might actually be more beneficial than the extra points from scoring high, as it would make it easier to acquire the Coral RP. With our plan to quickly refurbish our old robots :older_man::robot: so we can jump straight into testing autos and drive practice, we hope to quickly figure out the most optimal strategies and create reliable routines.

13 Likes

The gif is dead

Why would you want your center auto to process ALGAE? Is that to make sure you aren’t in the way of your alliance partners who are potentially running the red and blue autos or is there another reason?

2 Likes

yes, we anticipate that one bot will take each coral station and if our alliance partners want those roles we need an auto that ignores the feeder station

6 Likes

Processing algae is just a possible idea. The thought is to mainly score on L4 and knock out the back algae. If we can pick it up and assuming our alliance partners already made it to the coral station, we’d rather score it in the processor than just sit there for another 10 seconds.

4 Likes

Thanks for letting me know! Here is a drawing version of it:

10 Likes

Are you worried about wheel slip and the odometry inaccuracy that entails from trying to push bots?

2 Likes