pic: FRC973 Presents Emperor Swerve

It is a “Unicorn” drive. 4 motor drive and 4 motor steering with infinite rotation.

fully omnidirectional swerve that can translate and rotate simultaneously through all orientations

I’m surprised no one has challenged this claim; such tornado-like moves are the holy grail of FRC movement (IMO) yet I haven’t found a single video of a robot actually performing a 360-degree translate-and-rotate move. This drive train is definitely setup to perform the maneuver with its independent controls, and I’d love to see it work – it’s like a video game come to life, tbh.

I like how the crab drive required minimal CNC work. Was the main coaxial shaft split up into plates? If so, you could easily call them poker chips because that’s what they’d look like. What was the hardest part of the crab modules manufacturing implementation?

<draw hits floor>

Seriously, that is an impressive machine. Can’t wait for pics of the elevator. I am curious what you did as far as programming the drive system is concerned. Someone must have spent a lot of time with vectors…

I think no one has challenged that claim because on paper, this robot is fully capable of translating and rotating at the same time. I’m sure video will surface shortly of it running.

Also, Mecanum and Holonomic/Killough drives, if programmed properly can translate and rotate at the same time. I’ve seen some FRC robots do it before (2008 comes to mind), but never in full circles (really no reason to, not to mention that it’s really hard to keep a constant radius while doing so.)

I spy with my little eye, a window motor in each module. I’m guessing those are for rotating the individual wheels.

What diameter wheels are being used on this"? It appears that they couldn’t be much bigger than 4" Of course, smaller wheels makes for smaller modules and less gearing so that would make sense.

Madison posted a video a couple of years ago of their mecanum drive doing full rotations while translating. I’m trying to find it on youtube, but have been unable to as of yet.

It’s definitely been done. Not often, but I’ve definitely seen it.


Our 2011 Octocanum can definitely rotate freely while translating – I’m trying to find a good video of it doing so.

Edit: Here are two –


Yes it shifts, we’re so into the style of robots we’ve been building that there is no way we could give up shifting. It wasn’t much work to integrate at all, just a little more weight.

We prefer to cal it a Emporer Swerve or West Cost Swerve instead of Unicorn Drive, Unicorn Drive’s can’t shift after-all :wink:

The entire mechanical design focused on making programming/controls easier, and there are some cool features we plan to implement. Currently the separate incremental encoder and zeroing sensor allow us to never have to zero sensors by hand, or in code. We also plan to have code that detects an encoder failure, locks that wheel straight, and switches to a drivemode without strafe but still the ability to translate forward/back and steer (We had similar functionality on our arm this year). We really are aiming to make this as reliable as possible.

We currently could make that move, but it’d be difficult as the drive would have to continuously change the translation direction. We have the code written for a gyro offset to allow this to switch into field-centric and seamlessly implement the move, but have yet to get a gyro on there. We’ve really only just barely got to what’s pictured, and are shooting for normal functionality first. Low angle (<30*) rotation while driving has been tested and is pretty intuitive.

The main coaxial shaft is actually a very simple lathe part, it’s got less operations than the parts you make in the intro to machining classes here at Cal Poly. The Only CNC’d part I believe is what we call the module tophat. We could have made them on our mill, but wanted to pocket them and there are also a few tight tolerances on them. We also don’t really count 2d (Water/laser) cutting as CNC as the time investment involved is vastly different.

I derived the steering equations, and they actually converged to exactly what Ether had posted in his whitepapers. This makes sense, as it’s the same physical system, but it was really cool to see.

*By now the inverse kinematics1 of mecanum or Unicorn are well known in the CD community.

Their 3 degrees of freedom are translation forward/reverse, translation sideways, and rotation.

All possible motions or maneuvers can be commanded in terms of these 3 inputs.

To rotate while driving forward, for example, all that is required is a field-centric “forward” command (which gets converted into separate time-varying robot-centric forward/reverse and sideways commands) plus a rotate command.

The devil is in the details though. Unless the vehicle is built with craftsmanship and attention to detail, it will drift off course due to friction and motor performance tolerances. Encoders can be added to the gearboxes to provide closed-loop control of wheelspeed and/or position to help mitigate these variations, but doing so adds extra complexity and failure modes. For swerve especially, the interaction between steering angle and wheel speed requires careful design of the software to help the driver avoid sudden commands that could in some cases actually result in the vehicle tipping over. So that’s the challenge, and it’s one of the reasons why teams who want to try their hand at swerve do so off-season.

Looks like Team 973 has engineered and crafted a fine specimen. It will be fun to see it perform.

1 given a desired vehicle motion, convert that into the required 4 wheel speeds (for mecanum) or the required 4 wheelspeed/steeringAngle pairs (for swerve)


I’ve been wanting to build this drivetrain for years, and then you come along and beat me to it. So it’s back to the drawing board for me…maybe I’ll sketch out a flying robot this time.

(Nice work; send CAD files!)

It’s absolutely gorgeous. Well done!

you guys have certainly stepped it up doing great things with your team.
Wish I could witness it at the off-season event.


Can someone explain in simple terms what you mean by translation and rotation?

Rotation: Turning about a single point, usually (but not always) the center of the robot, or somewhere close to that area.
Translation: Motion in a single direction (either front/back or side-side, or in the case of an omnidirectional drivetrain, some line in between).

If the point of rotation happens to be translating as you rotate, you are pulling off a very tricky move–that sort of motion is usually reserved for things like frisbees, not stuff that stays on the ground.

Richard, our robot can drive any direction it wants to, and at the same time rotate. Much like the videos Madison posted.

The point of rotation is not a point we directly control, it is determined by the combination of x, y and rotation inputs. It is only ever on the robot when our translation speed is very slow or nonexistant (which I guess is true of all FRC robots).

very nice
mike d

You pick a point, usually the center of geometry of the wheels1, and then any motion of the vehicle can be described in terms of these 3 “degrees of freedom”:

  1. rotation of the vehicle around that point, and

  2. translation (motion) of that point in the forward/reverse direction (with respect to the vehicle), and

  3. translation (motion) of that point in the left/right direction (with respect to the vehicle).

Some examples:

a) a car driving forward in a straight line. The forward translation is non-zero, and the rotation and sideways translation are both zero.

b) the moon going around the Earth. Call the “front” of the moon the part that is facing the Earth. The forward translation is zero, the sideways translation is non-zero, and the rotation is non-zero (it is equal, in radians per second, to the sideways translation speed divided by the length of the radius of the moon’s orbit).

Here are some example diagrams of how Ackermann, rotary, “moon”, and “dosado” motions can be described in terms of the 3 degrees of freedom.

1this usually makes the inverse kinematics easier


Emperor Swerve is a fully omnidirectional swerve that can translate and rotate simultaneously through all orientations.

How easy is it for you to do this? (how much driver input is required?)

I remember accomplishing this on our robot, but it was a very tough maneuver.

It’s funny. I learn more from Ether’s posts than I do from my normal science class! Thank you, Ether, for your interesting yet educational posts! :smiley: