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.
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.
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.
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.
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:
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)
attention to detail of the electrical design (proper wiring to motors and gyro, selection of gyro with minimal drift, etc)
well-designed driver interface (match the driver interface to the driver)
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.
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.
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.
**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.
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” ?
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.