FRC 6328 Mechanical Advantage 2020-2021 Build Thread

Any updates on this? We recently got a sheet metal sponsor, and are still exploring what we can do


Thanks for the reminder, I’ll work on finishing this up and should have it out in the next couple weeks!


Alright, long time no see, we’re back!

Happy to say, thanks to Zoom, Slack, and Onshape…


2021, wow, who would have thought. Look at us now. Happy to say 6328 is going to be continuing this blog sharing with everyone the updates, progress, setbacks, and lessons we experience throughout the 2021 season! It’ll look a little different, we’re hoping to lean on the students to write a lot more of the blog posts and answer questions alongside the rest of the mentor team.

So where do we currently stand?
We’re currently operating about ~87% online, with the remaining in-person meetings happening at the shop a couple of days a week with a couple mentors and a few students all masked working at proper social distance requirements and following all local safety guidelines. We’ve continued our training for all sub-teams throughout the off-season online and are in a good place to hit the ground running come kickoff. It’s been a rough road, but in the end I’m proud of how the team has continued to stay motivated over the course of 2020.

Looking forward
So what’s next? We’re registered and looking forward to all the different competitions FIRST will be giving us on kickoff. We’ve set up a new student leadership team who will be tackling the different pieces. While we’ll likely focus a lot on the robot building side of things with this blog, we’re going to share all we can with y’all and are happy to get feedback and answer any questions!

When we locked the doors for the last time after the canceled season in March, the robot was prepped and getting ready for the Carleton event.

Here’s a link to the Onshape document with how the robot was configured for Northern CT.

We were about half way through working on an updated intake and were evaluating what other changes we needed to accomplish before heading to Greater Boston. Here’s a summary of some of the biggest issues we needed to address.

Issues from NCT
Intaking - We ran over the balls a lot, couldn’t get them into the hopper.

Climbing - It was slow and the arms wiggled like al dente spaghetti. (3)

Slow Hopper unloading - The hopped was inconsistent with more than 3 balls, the last two would always take longer to clear(if at all).

Getting shut down by defense - lack of practice(top left)… (4)

Lack of Driver Practice - This one kinda speaks for itself, we just ran out of time… (2)

We drove the wheels off it - Literally, we spun the hubs in the colsons…(this is the practice robot but the same thing happened on the comp bot)

For some revision control, we made a new Onshape document for our Off-season changes we’ve made for the 2020 robot. Here’s a link to that.

We’re waiting until after kickoff to really start making some serious changes, but we’re moved forward a little with some incremental upgrades. Something we’re aiming to accomplish with this season is having the robot non-functional for the smallest amount of time possible. We really want to see the programming team and drive team get a lot of hours with the robot to practice, which is something we struggled with this past season.

The first major fix is making the robot drivable again. After a quick discussion, we decided to move from my beloved colson wheels, to a WCP Pneumatic wheel. In order to do this we had to switch over from 35# chain to 25# chain, respace all the items, and make new spacers. This was a relatively simple task, and thankfully when we initially did the c-c for the drivetrain we set it to a distance that would work for both 35# and 25#. We are slightly worried about not having enough drop in the center wheel, but inflating the center and deflating the outsides should hopefully be enough to eliminate any issues we run into. The final change/fix for the drivetrain was ordering up some new WCP Single Speed Flipped gearboxes to replace the ones we built ourselves last year. The ones that are coming out will go in the practice bot to replace the 3D printed ones.

Here’s a couple photos of the robot in its current status.

The intake and the hopper were pulled off for ease of access for everything, but will go back on after we reassemble the drivetrain.

After the robot is completely back together, we’ll continue along with the process of upgrading the intake.

Should have some more posts after kickoff!

Looking forward to a great year, stay safe everyone,


Week 1: Infinite Infinite Recharge…

And we’re back, its been a little bit so here are some updates that we have about our projects after kickoff, which was last Saturday. During kickoff, we had a really nice zoom meeting with many members of the team along with some members from rookie team 8604; we played some games too such as FRC Trivia Kahoot (Which I’m pretty sure was RIGGED but oh well).

On that note, we will be working closely with team 8604 of Minuteman Regional Vocational Technical High School in Lexington, MA for our co-founder, Dee Clark, now teaches there and helped to start up Minuteman’s own FRC team. 8604 will also be following us in their build season open publication so don’t hesitate to check their thread out below!

Keep in mind that the game design team would be working on general strategy in a normal year, but due to the COVID situation, strategy discussions regarding competitions has been put on hold along with climber arm/hook updates. Once in-person competitions resume, these updates will be added to the build blog.

Game Design:

1/13/2021 - The Game Design Challenge team discussed potential game pieces for our game, and have narrowed our list down to three options after a long discussion: footballs, boxes, and a combination of rings and balls. Our plan is to make a final decision this upcoming Sunday. In preparation for this decision and the upcoming week, students are thinking of potential implementations (ways to use the piece in a match) for each game piece. -Jonathan

1/17/2021 - The Game Design Challenge team has decided that the game piece will be boxes. For our next meeting, the team is thinking of potential implementations for the piece. -Jonathan

Expected Design Process Timeline:

  • Wednesday Jan 13 - game piece decided
  • Wednesday Jan 20 - game piece implementation decided, basic auto/end-game structure decided, assign ppl for theme
  • Wednesday Jan 27 - field elements decided(game piece, climbing, other field structures), theme finalized
  • Wednesday Feb 3 - Layout auto/tele-op/endgame and basic sketch of field, rough draft of description of field elements,
  • Wednesday Feb 10 - game balance determined (points, penalties), Game overview draft written, expected robot actions written, description of game elements finalized, get someone to review game concept, supplementary information started, video assigned, logo assigned, assign ppl for CAD field
  • Wednesday Feb 17 - all documentation finalized, video started, logo finalized, powerpoint presentation and speaking parts of interview started (decide presenters)
  • Wednesday Feb 24 all documentation finalized, video finished, logo finished, powerpoint presentation and speaking parts of interview finished, field image finished, run through presentation , compile work for submission
  • Sunday Feb 28 Run-through of presentation, work submitted
  • Wednesday Mar 3 - celebrate our accomplishments

Awards Team:

1/13/2021 - The awards team worked out a timeline for submitting CA and WF nominations and made notes about what aspects of other teams’ CA submissions we liked and what to think about incorporating. We also did internal project management training this week. -Katie Bonner

Note: CA is for the Chairman’s Award and WF is for the Woodie Flowers Award

Mechanical/Shop work:

1/13/2021 - I worked with the mechanical team to mount our new gearbox onto the comp bot, we ran into an issue with the longer gearbox shafts not fitting into their bearings but we have a plan to fix them -Maddie

For the mechanical side of things, we decided to remove the climber due to the fact that there is no climbing in the skills challenge for this year. ( see disclaimer statement at top of document )

1/16/2021 - We took off material on gearbox plates on the mill and reassembled them, put on the new wheels and redid the drive chain, and put on the outer drive frame plates at the end of the day. -Shirish


1/14/2021 - We met for the first time since kickoff and reviewed all of the tasks to work on this season. Some of the top priorities- the AutoNav challenge and Galactic Search Challenge are both very software dependent, so those are a focus. We need to work with the mechanical team to do robot bring-up once the competition bot is more functional, and do testing for the Interstellar Accuracy challenge to determine if we need more advanced control to shoot from all of the zones. We also upgraded the robot code to the 2021 version of WPILib, which doesn’t affect current functionality but might allow us to use some more advanced features in the future. - Jonah

1/14/2021 - We discussed our approach to the Galactic Search challenge, since there’s still some confusion about the rules. Our current plan is to create four motion profiles for each possible path, and use vision to select which one to run at the start by detecting power cells. We considered whether this was feasible using the Limelight, but the mounting angle isn’t right (among other difficulties). Right now, we plan to use a separate camera and do the vision processing on the RIO. - Jonah

1/15/2021 - We introduced the students to the basics of vision by having them experiment with using GRIP (a software package for creating vision pipelines). One of the things we tried was mimicking the type of processing we might need for the Galactic Search challenge - detecting the locations of three power cells in front of the robot (see example below). This was good practice, but the specifics of how everything will be positioned for the challenge are different. - Jonah

Keith C’s Updates:

1/15/2021 - For my late announcement of absence on Wednesday, I cleaned the bathrooms tonight as punishment.

1/17/2021 - I consolidated drill bits and hex keys to make complete sets and identify those missing for potential purchase. So fun!

I say that Keith deserves the MVP award this week (insert plastic trophy from eBay and clapping sound loop here).

Quote of the Dave:

"I’ve very tired."


This is the most Keith-like thing Keith has ever said! :joy: :salt:


hahaha, that and “wait, let me take a selfie”



Just saw this post.
Happy for you embarking on the next stage of your career.

You were a decent Emcee (Dangerous Dave), but are far and away one of those supermentors who knows how to take students beyond their expectations.


He is the Executive Toilet Manager after all :rofl:


Week 2: Robot Repairs, Nav Point Placing, and Never-Ending Clamps…

I apologize for this week’s blog post being posted on a Monday instead of a Sunday, things have just been super busy, but I sincerely hope everyone is staying safe and taking care of themselves. Anyway, this week or… whenever… (I’ve honestly lost track of what day it is and I only know procrastination at this point but what’s new lol).

HQ Update: We have still been moving at a slow yet steady pace for our progress and can only do so much with Governer Baker (MA) deciding to remain at 25% building capacity for mandates

Game Design:

1/20/2021 - The Game Design Challenge team started with a discussion about potential implementations for our game piece, and after a long discussion and a semi-fledged game idea, we have decided to shift our game piece from a box to a chain, which is the game element. The general idea for this game is that you have to put out fires in a burning building with water (chain) and extract some sort of object by climbing up ladders.
So for our next meeting, students are working on developing a potential theme for this game idea, whether expending on the current theme or creating an entirely new theme to match the game. Also, we are planning to have a general auto/endgame structure discussion. - Jonathan M.

Concept Field Draft Presentation:

1/24/2021 - The Game Design Challenge team discussed improvements to current ideas for game elements and new ideas that we could implement into our game. We also came up with a broad theme for the game, Hacker/code based game, in replacement of the burning building idea.
For this upcoming meeting, groups of students are further developing the game elements that we have come up with. Also, everybody has been tasked to come up with a game story/plot to further develop our theme. - Jonathan M.

To-Do List for Next Meeting:

  • The building - Hallie, Aryan
  • hp station - Jonathan, Hunter
  • opp side item? - Ayush, Owen
  • Amazon truck - Callum, Declan
  • ladder implementation - Hallie, Aryan
  • Note: Not the real names of the field elements
  • Think of game story/plot/theme - Everyone

Awards Team:

1/17/2021 - We selected the theme for our Chairman’s essay (continued family tree), assigned questions for people to work on the first draft of the Executive Summary, and discussed potential areas to work in sponsors, changes in team apparel, and putting together a presentation for the Girl Scouts virtual meeting - Anne

Mechanical/Shop work:

1/19/2021 - Maddie and I redid the drivetrain because the spacers were off so the wheels were hitting the frame on both sides. We drove on blocks, the shop floor and then on the carpet. The wheels on the robot now don’t rub on the frame at all. - Alisha

In terms of the agenda, the mechanical crew plans to replace the current #35 chain with #25 as well as the current air-filled pneumatic wheels with treaded ones (see below for ordered wheels).

1/19/2021 - I worked on adding vibration absorption to the limelight mount w/ approximately 1/8" surgical tubing pieces on either end of the limelight itself. For next time we need to do is test it and cut cleaner pieces. - Me (Hallie)

1/19/2021 - No more shall we hear the phrase “I can’t find a clamp“ - Brett Bonner

We got wheels (as well as a couple of other tools that we needed)! Hopefully, we can get these powder coated by the end of this week after we obtain all of the materials to do so!


Right now, we are working on improving our power cell intake by allowing for a better ball grabby grab using a four-bar and incorporating less room for these balls to fly out.


1/19/2021 - We tested out the angle from the driver cam to see if it would be usable for the Galactic Search Challenge. Because of the wide-angle lens, it turns out we can see far enough using the current mount. Based on this, our plan is just to plug this camera into the RIO to run the vision pipeline. - Jonah

After marking down all of the Nav Points on the field using colored gaffers tape on Saturday 1/23, Brett mentioned that it was “3 1/2 hours of work…” to which Jonah responded with “for a six-second video…” which consisted of the motion profiling test run for the robot.

Motion Profiling Video:

Nav-Point-Placing Time lapse:

Keith C’s Updates:

1/20/2021 - Repaired the band saw with the new tires Brett procured.
Works like it’s brand new! …NOT

Quote of the Dave:

“You know what I always say”


I love 6328. Keep the posts coming, always a good read!


Thanks Peter!

Already miss NE like crazy, but it’ll be even sweeter when I come home for some events! It’s hard to explain how much the FIRST program did for me growing up, so always pushing to give back as much as I can.


Hi all,

Just wanted to hop in to talk a little bit about how we’re structuring team management this year. With all of us being virtual(and me being 3000 miles away), it’s been quite a challenge to keep the team engaged and moving in the right direction. I’m extremely happy with some of the progress we’ve made so far and look forward to the next couple months as we continue to try to hit our goals.

To make this simple, I figured I’d just share what a typical week looks like for 6328 in terms of meetings and agendas. We’ve tweaked this slightly over the last few months to try to figure out what works best for us, and of course your mileage may very, so I suggest just trying different methods until you find a way to keep the students and mentors engaged.

Our week starts on Sunday, we start off with our weekly Mentors and student leads meeting. We just started doing this recently, as we felt it made sense to start pulling some of the student leaders into some of the full team planning and it does a nice job of closing the communication loop and getting everyone on the same page. We’ve found recently the students do most of the talking and the mentors just give feedback, which is the direction we’ve been wanting to move for a while. During this meeting the agenda typically consists of going over subteam accomplishments the week prior, setting goals for upcoming week, scheduling out which days each subteam will be in the shop, and then go over anything else that comes up that we need to discuss. If it’s needed, we’ll kick the students off the call and have a just mentors meeting after we’ve finished up the agenda.

Over the course of the week, depending on what the goals are for the week, we schedule out meetings for each subteam to go into the shop. Some of the students can talk about the covid guidelines and rules we’ve set for the team, students and mentors, but we’ve worked hard to ensure we’re always adhering to all state and federal guidelines.

Most subteams will have a couple students in the shop working, and the rest of the subteam on a zoom call so we can include everyone in all our progress. Currently we’ve shifted a lot of focus on letting the programming subteam get as much time with the robot as possible, so they’ve been meeting regularly with mechanical going in to do tasks, robot improvements, and maintenance as needed.

Some tools we use to keep everything on track.
Thanks to one of our awesome mentors, Greg McGurrin(an expert at project management) we’ve started to implement some tools to keep everything moving in the right direction. Greg and a few student leads are currently working to develop a weekly report template that the student team leads will use to more formally set weekly goals and then report progress at the student team leads and mentors meeting, and the full team when necessary. I’ll have Greg and Maddie share those when we get them to a point we feel comfortable sharing.

The second major tool I’ve been pushing to utilize is a Gantt Chart. I’m a big fan of these and actually use them in my day to day life to track work, personal, and robotics projects and goals. We’re still working on polishing this up, but once it’s at a good place I’ll have Maddie or Hallie share here.

All and all, this season so far has been challenging, but I proud of the progress we’ve made so far. To make up for this rather boring post about team management, I figure I’d share some videos of the progress we’ve made on a few of the @ home challenges!

Galactic Search(no intake on though)
Test 1

Test 2

Bounce Path - Autonav

Slalom Path - Autonav
Run 1

Run 2 (my favorite)


Props to the programming team. Looking solid!


I know I’m a bit late to the party, but I’ve been mired in nostalgia lately watching our recap videos from last year. It was really great fun teaming up with you guys in Northern CT. Your bot ran as beautifully as it looks. Congrats on a well-deserved banner!


Week 3: Insert Witty, Robot-Themed Title Here

I know I know, the title is cliché but it’s been a hectic third week of build/work season and I’m running out of ideas ALREADY. I probably just need some sleep, but oH WeLL.

In the shop, unfortunately, there is still only 25% building capacity following COVID precautions so there can only be about four people in the shop at any one time and one person per every other room.

Game Design:

1/31/2021 - The Game Design Challenge team discussed changes to the auto/tele-open/endgame structure for our game, a cooperation mission between the teams, which will include some sort of addition scoring location on the opposite side of each alliance’s driver stations, and how climbs will affect endgame and robot interactions during the time. We will be continuing with students creating basic sketches of the field for this week and starting rough drafts of required documentation. -Jonathan M.

Basic Field Map Draft:

2/3/2021 - The Game Design Challenge team finalized the general endgame tasks, but we still need to figure out the specifics of how the climbing mechanism will work and robot interactions during the endgame. We also divided the match time into separate auto/tele-op/endgame time frames for the match. The team broke into small groups to discuss, in more depth, the physical dimensions of the game elements, which included initial CAD sketches with the help of the mechanical team, who also provided their opinions on the game and the design of the game elements and pieces. The other team went further into developing our theme by giving names to game pieces and elements that fit the overarching theme. We decided on where we want the cooperation task between the teams to be located, but still, need to go into further specifics.
We are planning to continue developing the field sketch in CAD, continue to develop the theme, and start to focus on game balancing (points, penalties, etc.). -Jonathan M.

Sketch-Up of Main Scoring Location:

Awards Team:

1/31/2021 - Quick summary from tonight:

  • Katie reviewed executive summary questions and edited them to make sure same info isn’t presented twice, etc. Maddie and Michelle will review this week to get down to the right number of characters.
  • Aryan and Anne have a draft of WF nomination ready for review.
  • For 2/7, will have a rough draft of CA essay ready for review.
  • Once essay is in review process, will start outlining CA interview/presentation.
  • Need to start focus at the same time on prepping tech and game design teams for doing virtual interviews/presentations.

Mechanical/Shop Work:

2/2/2021 - Here are some pictures of our first blue nitrile wheel! The powder coat chipped a little so we may need to touch up. Tomorrow we’ll be done with the rest, and we’ll try rivets on the remaining two so we have a way to compare and possibly save some effort in future years. Thanks to Maddie, AJ, Shirish, and Jack for doing all the work and making this go so smoothly! -Cameron E.

Definitely didn’t poorly edit out some of the paint chips in these photos with a mouse to make it look prettier… wh- why would I do that? PFFT, definitely NOT ME though.

2/3/2021 - Powder coated. - Luke

2/3/2021 - All 6 wheels ready to go! Spacers were a bit tight so they are being reprinted, some students are planning to come in tomorrow afternoon to get them installed before programming tests them in the evening.

2/4/2021 - I helped replace all the wheels on the drive today with Lizzy, Shirish, Maddie, and Jack. - Alisha

2/4/2021 - So on arrival tonight the compressor was not remounted, and when we went to do that, we found it doesn’t quite fit between the wheels any more; the new ones are notably bigger, roughly 6 1/4" instead of 5 3/4". :slightly_frowning_face: - Brett Bonner


2/4/2021 - For Cad and Design, we have been working on designing a new sheet-metal robot cart with some students to allow them to gain knowledge and experience for next year. We only started meeting with these four sophomores last Monday (2/1/2021) and are at the stage where these students are observing the process first and will begin working on their design in the upcoming week or two. - Me (Hallie)

2/4/2021 - Also, the intake is undergoing a bit of a redraw because we still need to add a spot for the motor (probably a 775 Pro for more power) and gearbox. Overall the basics of the design will stay the same though but more will be added to it. I will try to post some more pictures of it by the middle of next week (if procrastination doesn’t get the best of me first lol). - Me (Hallie)


2/3/2021 - In order to ensure we can accurately hit the target from all of the zones, the software team did a ton of testing to characterize the shooter behavior at different flywheel speeds. We started at our standard 6000 RPM from each zone, and established that (yes) we can mostly hit the outer port but (no) we can’t reliably hit the inner port. - Jonah B.

2/3/2021 - At each hood position, we then manually measured the optimal flywheel speed for a variety of distances through trial and error. We can plot those on a graph and use polynomial regression to fit a quadratic function to each one (see below). The x-axis is the distance from the center of the robot to the target in inches and the y axis is flywheel speed in RPM. Purple is the wall shot, red is the initiation line, and blue is the trench. These data points represent the maximum range where we could reliably hit the target in each hood position. A few notes- There’s a fairly wide overlap in the ranges for line and trench, so we’ll probably put an arbitrary cutoff between 180-200 inches when selecting which hood position to use. On the opposite side, the wall shot data was unexpected. We can fairly reliably hit the inner port from several feet back using low RPMs (even if that isn’t incredibly useful). Unfortunately, it’s extremely difficult to make shots between about 90 inches and 120 inches. That’s not somewhere we’re likely to shoot from, but worth noting. - Jonah B.


Flywheel Graphing:

2/3/2021 - After creating these models, we did a quick test by shooting from a previously untested distance in the line hood position, using the calculated RPM. The ball bounced out, but the freeze frame says it all. - Jonah B.


2/4/2021 - For software work tonight we took it out as we were just driving, but we’ll need a solution before we can shoot anything. Short term, it could mount in the right-hand climber space - until we decide to put a climber back on. It could still go between the wheels if supported about 1" below the bottom of frame rails since the mounting ears are the widest part, but that sort of bottom protrusion probably isn’t ideal (pics below). Also, we’re having some clearance issues between the right-hand pneumatics tank & the hopper which I don’t remember having before, or maybe just hadn’t noticed - may need another custom low-profile clip mount as we have on the left, or something similar. (The right-hand tank has a standard mount, which is taller.) - Brett Bonner

Challenge Updates:

This section is just primarily for challenge videos but I may post some photos in the future.

Slalom Path - Autonav (Run 3):

Slalom Path - Autonav (Run 4):

Slalom Path - Autonav (Run 5):

Barrel Racing - Autonav (Run 1):

Robot motor go BRRRRRRRRR

Quote of the Dave:



Thanks my friend! We had a great time working with y’all! Hopefully next time we can get those last two wins!


You have NO IDEA how much we wanted that!


absolutely dying at this Hallie, look at this graph will never not be funny :rofl:


Bahahha facts though, iconic meme moment


Hey everyone,
The previous few posts have included some information about what the 6328 software team has been working on, but we thought it would be worth going into a little more detail about our adventures with motion profiling.

Our motion profiling system is built using the standard functionality built into WPILib. We wrote a custom command which wraps the normal RamseteCommand. This gives us an easier API for setting up the profiles and means we don’t have to define all of the constraints for each one; There’s only one configuration per robot.

For each path, we wrap the motion profiling command in a command group. We do this for a couple of reasons - first, breaking each path into a separate file makes them easier to manage. Also, we can easily add in functionality before and after the profile. Before running, we set the odometry position using our coordinate system (with the origin in the upper right of the field near A11). Because we don’t care about the ending position, we set the ending velocity of the profile as high as possible and chain a command to brake after - the robot can stop quite quickly so we don’t hit a wall. The odometry can’t track accurately through that kind of skidding, but exact positioning doesn’t matter at the end of the profile.


When iterating quickly through versions of the trajectories, testing on the robot can get quite cumbersome. We’ve been using a path visualization tool put together by @came20 . Here’s some more information on that system from him:

I wrote this tool a couple of years ago as a student on FRC Team 401. We were getting into advanced trajectory following (this was before spline trajectories and the Ramsete controller were part of WPILib) using Team 254’s code as a reference. I needed a way to quickly visually examine trajectories before running them on a robot to ensure they had no malformed sections (such as wheels reversing due to tight turns, forgetting to set a trajectory as reversed, etc.), check that constraints were being applied correctly, and verify waypoint geometry.

The tool generates the trajectory using WPILib’s trajectory generator, and then plots the resulting path on the screen. It then uses inverse kinematics to draw the paths of the left and right wheels, and colors these paths on a gradient based on the maximum speed throughout the path. This “heatmap” visualization makes it very clear to see which parts of the path are acceleration or deceleration, and to check that centripetal and region constraints are being applied correctly. The tool also provides the ability to “simulate” the path by drawing a “robot” (black square) which traverses the path at real-time speed. This isn’t a true simulation in that it does not account for any sort of physics, instead purely drawing what the trajectory is commanding the robot to do. This is useful for getting a visual sense of how the robot should behave, and identifying areas where the robot appears to be doing something physically impossible. Along with this real-time display, some statistics are drawn in the upper left corner about current pose and timestamp. The tool uses Swing (built in Java GUI API) to draw the graphics, and it was built very rapidly, so not much work was put into making it pretty.

The code for the visualizer can be found in my “FRCKit” library, a work in progress to bring tools like this as well as simulation and other utility libraries to more FRC teams. The project is in no form release-ready or even well organized yet, but nevertheless the source code can be found here

As an example, here’s a video from the visualizer of a trajectory we tried for the barrel racing path:

Galactic Search

Our plan for Galactic Search is to define the four possible profiles ahead of time and select one to follow when the run starts using vision (more details on that in the coming weeks). Our work thus far has been to start defining each of those profiles. One of the questions we had to answer was whether to start each profile from the same place (which simplifies the vision pipeline) or try to optimize each starting location (potentially saving valuable time). As a proof of concept, we visualized two trajectories for each path - one with a center starting position and another with an optimized off-center starting position. We tested using a cubic spline with waypoints on each power cell, and tuned the starting directions of each. The results of our testing are below. There are also videos included, where left is off-center and right is centered.

Given the short length of these profiles, our conclusion is that saving even a fraction of a second is worth the extra complexity. Also note that the center starting positions are still tuned to different angles, so if we used a single starting position (including direction) the discrepancy would be even greater.

Circle Profiles

For several of the paths (slalom and barrel racing) the robot needs to maneuver in a circle around the waypoints. For our initial testing, we tried to define waypoints such that they formed a continuous curve:


That isn’t terrible, but it’s also clearly not the optimal route. We’ve been doing some work to instead define perfectly circular profiles. Unfortunately, WPILib’s trajectory generator doesn’t support something like this on its own, so we needed to give it a little (a lot) of help. All of this functionality is part of our motion profiling command I linked previously if you’re interested in the details. The path itself is defined by hundreds of waypoints spaced a tenth of an inch apart in a circle. That forms a trajectory which looks something like this:

Unfortunately, the red color coding indicates that both sides are moving at the same maximum velocity, which a) doesn’t satisfy the centripetal acceleration constraint we defined and b) isn’t how to drive in a circle. On a real robot, you get something like this ( It tries to correct the position, but goes way off course. The issue is that the trajectory generator thinks the curvature of this section is 0 (it’s completely straight), meaning it doesn’t properly apply constraints or compute wheel speeds. Since we know the properties of this circle, our solution was to manually adjust the curvature of each point after the trajectory was generated, which results in this:

That’s a big improvement, but there are still some issues. First of all, the curvature changes abruptly going into the circle which means the wheels have to accelerate very quickly. We actually found that this wasn’t a major issue in testing, and the drivetrain seems to behave reasonably. However, the larger issue is that our constraints are still not being obeyed so we’re exceeding the maximum velocity and centripetal acceleration (those are all still calculated using a curvature of 0). The solution? Apply a custom constraint within the circle. To provide maximum velocities and accelerations, this constraint passes calls through to all of the standard constraints that we apply to the whole path. However, it runs the calculations using the corrected curvature. The constraint also determines the maximum chassis velocity which will prevent the outer wheels exceeding their maximum velocity. Once the curvature is fixed after generation, all of the constraints are obeyed properly:

Below are some examples of running these profiles on the robot. This is the first time we ran with proper constraints- the circle looks good but the positioning is a little off. We were able to address that with further tuning.

Here’s another example on the barrel racing path:

We’ll keep everyone updated as we make more improvements in all of these areas, and we’re happy to answer any questions.