High-frequency odometry running at 200Hz, using a NavX2 and a full Kraken drivebase for robust localization
Fully autonomous scoring and feeder station pickup
All mechanism control loops run entirely on onboard motor controllers
Our auto-align system utlizes a repulsion field for avoiding collisions with the reef. Other than that it’s just P control on odometry x, y, and θ. Everything was done from scratch.
We also made a desmos calculator as a proof-of-concept. You can drag the purple robot around and hit play in the top-left to animate its behavior. (Note: The real robot includes acceleration limits to mitigate the jerkiness you might see in Desmos when we switch from applying repulsion to not applying repulsion)
The repulsion field only kicks in if we detect a potential collision on a straight path to the target. Here’s a quick summary of how it works:
We calculate vectors from each reef vertex to the robot’s center, scaled by the inverse square of the distance
These are summed and combined with an attraction vector from the robot to the target.
The same auto align system is used for all our autons.
We had a blast playing REEFSCAPE this season and would be thrilled to answer any questions about our code, or anything else here!
How did you guys like the repulsion field solution? We thought about implementing one but decided against it because it felt like the robot would drive too slowly when autonomous over a longer distance.
We actually ended up really liking the repulsion field. When properly tuned, it was more than fast enough for our needs. That said, we typically don’t use auto-align from very far away from the reef. The main purpose of the repulsion is to prevent the robot from driving straight into the reef if the driver triggers auto-align from a bad angle.
Here’s a video from before our first regional that shows our auto-align and repulsion in action:
It’s worth noting that after our first event, we made our auto-align significantly faster by starting to raise the elevator earlier and just driving more aggressively. In the video, whenever the LEDs are red, the robot is fully autonomous. You’ll see it auto-aligning from some pretty awkward positions and still getting the job done. We also don’t use auto-align to feeder station in this video.
One thing we forgot to mention in the reveal post, our anti-reef collision logic. You can see it in action in the video when we place the first coral: the robot backs up a bit while raising the elevator, then moves forward again. That’s because if we raise the elevator while next to the reef, the coral in the robot actually collides with any coral already on the branches of the reef. To accomplish this we estimate how long it’ll take the elevator to reach its setpoint vs. time for the drivetrain to reach the correct position. If the elevator will still be going up when we get there, we either slow down or back up depending on the situation to avoid crashing into anything.
Here it is, the CAD for our robot Goldfish from the 2025 season!
We did the CAD for this season in SolidWorks and imported it to Onshape, this is our first time working with Onshape, so we’re hoping it goes well.
We were very happy with our robot construction this year, especially with the effectiveness of the elevator. We combined parts and elements from a few different elevator kits from various manufacturers to make something we were happy with.
Like a lot of other teams, we went with a modified Everybot climber which worked remarkably well for us this year.
We have a feeder station intake through a ramp and indexer, which pivots with a combined arm mechanism that also handles algae dislodge.
We made heavy use of 3d printing on the robot this year, most of our coral mechanism (coralizer) was all 3d printed, which made spares and replacements much easier.
If there are any questions or comments about the CAD, please feel free to respond!