pic: FRC488's Octocanum Ver 2.0

We used an “octocanum” drive in 2011 and really liked what it offered to our drivers. We implemented mecanum drive better than most of what I’ve seen on the field and made good use of the traction wheels to get ourselves through or out of situations that the mecanum wheels couldn’t.

The system, because we didn’t so much as think about something like it before kickoff, was heavy, expensive and labor-intensive. I am trying to minimize those things in this version by using as many COTS parts as possible and minimizing machining work.

Ask questions and I’ll answer them. :slight_smile:

This looks really great I have a couple questions

  1. Why did you choose to pivot the traction wheels down instead of moving the mecanum wheels?

  2. What are the final gear ratios to each set of wheels?

  3. Why did you choose to build under the kit frame instead of on top of it?What’s the sub-frame made out of?

What mecanum wheels are you using, why did you select them, and what (if any) issues have you had with them?

What makes your mecanum implementation better?


We pivot the traction wheels down for a few reasons. First, by putting them nearer to the center of the machine, it makes turning with four high-traction wheels a bit easier to accomplish. We also gear down further to that wheel set, so it makes sense for it to be at the end of the gear train.

The gear ratios are 8.45:1 at the mecanum wheels – that’s one of the options for the Toughbox Nano – and about 25:1 at the traction wheels. The traction wheel ratio makes things pretty slow, but it’s easy to swap in sprockets to speed things up as required.

The kit frame is 1.25" thick and the output of Toughbox is 1.5" from its edge, so when using a 6" mecanum wheel, we’d end up with just .25" of ground clearance if we built things the other way around.

The subframe, right now, is 1x1x.125" angle bolted to the perimeter of a .125" perforated PVC sheet and hung from the Toughbox Nano housings. It is intended to hold electronics and would need to be enhanced if it were going to see more substantial loading.

This is based on AndyMark 6" mecanum wheels – http://www.andymark.com/product-p/am-0136.htm

We used this last season and I’m happy with the build quality and performance. They’re heavy, but they’re not as heavy as the 8" set we originally played with years ago and we’re willing to deal with the weight and cost in place of building our own.

Our mecanum implementation worked. I didn’t program it, so I can’t speak too much to what made it work, but our programming team did a fantastic job there. We had accurate, fast, field-oriented drive that allowed us to fully use the movement capabilities of the mecanum wheel set. In my experience, most teams fail to achieve the level of control we managed.

Thanks that cleared some things up.

Are the wheel assemblies and bearing blocks the only machined parts?

How do you avoid compressing the C-channel when you bolt the tough-boxes through it?

The wheel assemblies are 1/4" ABS with .5x.5x.125" angle added for rigidity. We can laser cut the ABS parts in a few minutes; then it’s simply a matter of cutting the angle to length and match drilling it to the ABS.

The bearing blocks are of similar construction, but are really ugly right now. I’m still working on those.

If possible, we’ll bolt the transmissions through just one wall of the C-channel. Otherwise, we’ll laser cut 1/2" ABS inserts to stick inside the C-channel to prevent it from buckling where it’s bolted through.


I have seen many amazing drive trains in my time (and I mean MANY), but this is just AMAZING! I love the idea! Are you going to implement it next year?

Just some questions:

  1. How many KoP parts does it use?
  2. How many other parts?
    2.5 Where can these parts be obtained?
  3. How easy is this to make (during build season, with a team of builders)
  4. Is it open source? :wink:

Mecanum is not hard to program. It is very straightforward. The same is true of field-oriented drive.

If your robot had superior control, I suspect the reasons are probably:

  1. superior craftsmanship and attention to detail of the mechanical design (wheel and frame alignment, leveling, weight distribution, minimal and consistent drivetrain friction, carefully assembled and adjusted mecanum wheels)

  2. attention to detail of the electrical design (proper wiring to motors and gyro, selection of gyro with minimal drift, etc)

  3. well-designed driver interface (match the driver interface to the driver)

  4. skilled drivers with lots of practice


^ Those help too. :slight_smile:

Comments/ questions are bolded

Overall, very cool. I’m a fan of the ability to quickly strafe in any direction, to hold your ground when pushing, and with proper programming basically what amounts to a shifting drivetrain. Looks like you have a good thing going here. :slight_smile:

Any thought into making the Mecanum wheels the pivoting ones?? Our team last year developed some CAD prototypes for this combination, and eventually didn’t implement it due to the added complexity. However, we did use mecanum last year, and didn’t have a great experience with it. I think one of the biggest problems we saw (other then malfunctioning Jaguars…), was that when all four wheels were not on the ground (due to an un-even playing field, and seams in the carpet) the controllability of the system declined, and even worse the power of the drive system declined. Some of this we could correct with programing, but loss in power and acceleration was really noticeable. The loss in acceleration is I believe the biggest downside of using mecanum, the reality I saw was that our robot was just far slower in accelerating, changing direction, and stopping (decelleration) then high traction based drive systems.

I was wondering if you pivoted around the traction wheels instead of the Mecanum wheels in the octocanum, if you would see any advantages because the pistons could act as a suspension system. I’ve been told that mecanum drive systems perform better with a suspension system, I would be interested in hearing from teams that have used suspension in their mecanum drives. But for me I would need to see a big improvement in acceleration/deceleration to advocate for using mecanum again.

What do you think would cause a mecanum to stop unacceptably slowly?

Are you saying it slides across the carpet when you try to stop quickly?

Do you have any video showing this?


Granted, the 488’s 2011 machine was built quite well, but there were still all sorts of mechanical inconsistencies. The center of gravity moved around significantly as the arm moved, generally there was more weight in the back (and slightly more on the left side, I believe), not to mention occasionally getting rammed around or crashing into objects.

The base aspect of converting a desired vector/rotation into wheel speeds is pretty easy (it’s even included in the WPI libraries), but we did a lot of additional work so the robot would actually move the way you intended. There were many PID operations that more or less worked in concert to allow smooth robot control. It was essentially a solved problem from a theory perspective, but still required a lot of code in order to operate well.

Other than closed-loop speed control of the 4 wheels (did you do that?), what other closed loop controllers did you use for controlling the drivetrain?


Initially, we had 3 closed-loop systems:

**Rotational **- used a gyro to keep the robot on target heading
**Translational **- used encoders on “follow wheels” (unpowered wheels) to gauge ground speed and keep the robot translating on a target vector
**Wheel Speed **- used encoders on the drive wheels themselves to achieve precise wheel speed control

After a while, we actually disabled the wheel speed, as we didn’t appear to get much performance improvement from it and we were looking to save on some CPU cycles.

Wouldn’t measuring the vehicle’s actual velocity be more useful? After all, the drive has no care as to what wheel speed is (especially if that wheel is slipping).

Were these controls presented to the driver as the interface? i.e., did the driver interface allow the driver to command for example “Translate in direction A with the vehicle pointing in Direction B” ?


1 Like

The driver had two joysticks:

1st: X/Y joystick movement controlled X/Y direction & magnitude of the robot relative to the field
2nd: X joystick movement controlled rotational rate relative to the robot

So, not exactly what you described, but fairly close.

OK, so let me read back to you what I hear you saying:

  • You do closed-loop control of the vehicle speed as commanded by the radius1 of joystick #1

  • You do closed-loop control of vehicle heading as commanded by the angle2 of joystick #1

  • You do open-loop command of rotation rate as commanded by joystick #2 (X, Y, or Z axis?)

Am I understanding you correctly?

How many follower wheels did you use, and how are they mounted?

1 Do you use sqrt(X^2+Y^2) or max(abs(X),abs(Y))?

2 Do you use atan2(X,-Y) to calculate angle, or something else?


Sorry, I think something got lost in my description.

-We perform closed loop control of X translation as commanded by the X axis of Joystick1

-We perform closed loop control of Y translation as commanded by the Y axis of Joystick1

-We perform open loop control of Robot rotation rate as commanded by the X axis of Joystick2 (however, when desired rotation rate is 0, we perform closed-loop control of robot angle as commanded by the heading we were at when we stopped rotating)

This was accomplished with 3 follow wheels and a gyro. Two of the follow wheels were used to track the robot moving forward/backward, and one was placed directly under the center of rotation and used to track the robot strafing.