Last year was the first year our team competed in the regular season with a swerve drive chassis. We noticed that our drivers spent a lot more time than expected lining up with the various field targets (double substation, grid, and game pieces on the field floor). During one of our debriefs, we discussed whether the control scheme we used was the best way to translate driver intent into robot action. That discussion led to an idea: What if there was a better interface for driving swerve?
1. Background
Here’s our 2023 driver control scheme, which used a standard X-Box controller. Having spoken with a lot of other teams, I gather this is a pretty typical layout:
- Translation is on the left thumbstick, and is “field-centric” (ie, up on the stick goes straight down field, away from the driver wall, no matter what angle the robot is pointed in).
- Rotation (or Yaw Velocity) of the whole robot (not the modules themselves) is on the left-right axis of the right stick.
- Both sticks are in “Rate Mode”, where the stick angle controls the speed (not the angle or position) of the robot. That means you have to move the right stick and hold it for a precise amount of time to turn the robot to a desired Yaw angle.
- Holding the right stick at the far left or far right makes the robot spin at full speed.
The Swerve API we’re using “YAGSL” has the option for a different control mode, shown below. In this “Angle Mode” (I’m sorry - I don’t know the YAGSL name for this mode, and I can’t find a reference):
- You move the right stick to a given angle from vertical, and the robot turns itself to match that angle relative to the field.
- Holding the right stick at the far left makes the robot point to the left side of the field and stay at that angle.
- When you let go of the stick, the robot holds the last angle set by the right stick.
We experimented with the Angle Mode layout in the early season. It seemed to offer more alignment precision, but our drivers found it had some flaws. If they accidentally let go of the right stick, it would be difficult to move the stick back to the exact same angle. So the robot would snap to some unpredictable yaw angle whenever they tried to make an adjustment. It was also more difficult to “spin” while driving to avoid defense. For those two reasons we stuck with “Rate Mode” in 2023.
2. Steering Knob Idea
I had an idea this fall which resurrected the idea of Angle Mode control. What if we lightly modified the X-Box controller so that the right stick didn't snap back to center. That way we could maybe get the extra precision, without having unpredictable motions when you take your thumb off the stick. The first prototype of this idea looked like this:But we found that the stick tended to jam if you put too much thumb pressure towards the center. So we took the original thumb stick off completely, and designed a new 3D printed “knob” that fit in its place. This knob has an angled slot in the underside that captures the joystick module below and keeps in pointing in the set direction:
In fact, the shape of the knob became a bit of a Human Factors design exercise:
3. Testing
The drivers seemed to like the knob, but we needed to test to make sure it offered a performance benefit. After all, the easiest person to fool is yourself! So yesterday we prepared our field as follows:- Placed four sand-bagged milk crates, each with a Charged Up Cone taped to one side, around the field as “Target Cubes”.
- Attached another cone to the front of each of our robots with the flange pointing outwards from the bumper.
- One robot was programmed with “Rate Mode” steering, using a regular X-Box controller.
- The other robot was programmed with “Angle Mode” steering, using the modified controller with 3D printed knob.
- Both robots have very similar specs (same gearing, motors and wheels), although the robot with “Rate Mode” steering was a little lighter.
The goal of the test was for the driver to tag each Target Cube in order for as many laps as we could within a 2 minute time cap.
So how did the Steering Knob / Angle Mode idea compare? Here’s a table of our results:
Trial # | Robot | Time Cap | Number of Targets Tagged |
---|---|---|---|
1 | Edwin (Angle Mode) | 2:00 | 24 |
2 | Q-Bert (Rate Mode) | 2:00 | 30 |
3 | Edwin (Angle Mode) | 2:00 | 27 |
4 | Q-Bert (Rate Mode) | 2:00 | 28 |
So, basically, the same!
4. Conclusions
You could argue that since the driver was more familiar with Rate Mode, and since the Angle Mode robot was a bit heavier, getting results this close is actually a good result for Rate Mode. However, we were hoping that we’d see a really clear improvement that would justify the extra effort it would take to bring modified controllers to competition. So while we’re proud of the effort and the idea, Celt-X is abandoning the pursuit of a Swerve Steering Knob. Ideas don’t always pan out - STEM be like that sometimes .
If anyone wants to pick up on our research and carry it further, you can find 3D models for the knob designs we liked best in OnShape here.
If you’re still reading at this point, thanks for your attention. I’m happy to answer any questions about our concept or testing? Has any other team experimented with alternate control schemes for Swerve drives?