Why aren't six CIMs chic anymore?

My team last used six CIM motors on a competition drivebase in 2014, and since then we’ve used only four. We experimented with six miniCIMs several years ago on an off season project, and we may revisit that configuration this year depending on the game.

But why is this a trend among other teams, especially ones that I look up to as leaders in design and tech? Is it the way ideal (or required) robot size has gotten smaller since about 2009? Is it brownouts? Is it avoiding pushing matches instead of winning them?

I’m curious what folks think, especially those who have experience on their teams.

The biggest reason my team avoids using 6 cims in our drivetrain is brownouts. The “new” control system browns out much more easily than the previous control system in my experience. We also haven’t strategically valued putting that much weight into our drivetrain for a while.

While I can confirm from this year that a 6 CIM drive will brown out, this can be easily avoided by just adding Talon current limits (voltage ramping wasn’t nessecary for us, YMMV). This makes me think the pendulum may swing back a bit as more teams switch to Talons and discover how good the current limit is. We also used automatic shifting, which really helps decrease the load when accelerating/decelerating.

My team used a 6 cim drivetrain this past year. As far as I know we only brown out during practice not so much in competition .

We had “ratchety” brownouts with our 2015 two-CIM drivetrains after less than a half hour of practice with the 2015+ control system that we did not experience before with four CIMs. Given the poor rate of CIM heat dissipation, six heavily-worked CIMs with no software limits is clearly a recipe for brownouts within a match, especially as the matches run closer together in eliminations. I agree that once teams adapt current management schemes learned from the 775 crowd, the 6 CIM market share will likely increase for the next couple of years.

The term “winning a pushing match” is a bit of a misnomer. whether or not you win has nothing to do with how many motors are in your drive, but whether you get where you want to go (or stop your opponent from getting where they want to go). This is why you’re seeing an increase in all omni wheel drives - side pins don’t work on them.

We ran 4 CIM 2 mini last year because of brown out issues we’d had in 2014 with 6 CIMs. They’re heavy, and I’m not convinced you really go any faster. I think it hurts you in a pushing match because you’re more likely to brown out (unless you have SW limits, but even then you’re traction limited). The battery only puts out so much current. we may do 6 mini next year or stick to 2 CIM depending on the game. Short of an open flat field like this year I don’t see us doing 4 CIM 2 mini again and even then…

How high did you set your current limit? And how did you implement the shifting? That sounds very interesting.

You’ve given me an opportunity to direct you to one of my favorite white papers. My former team conducted an experiment a few years back that compared 4 drive trains, 2 Cims, 4 Cims, 6 Cims, and 4Cims + 2 Mini Cims.

In the whitepaper, the 4Cims + 2 Mini Cims drive train out performs the 6 Cims drive train in most categories. That may be something you can consider for next season.

Link to the whitepaper: Here.

We started with a 35 amp limit per motor for Worlds and upped it to 40 for offseason with no problems.

For auto shifting, we started with just simply checking if both motors were above a certain speed or below a different speed. Our drive was geared at about 6 low 17 high on ground at full charge, so we shifted up at 4fps and down at 2. This historesis is crucial for getting shifting to work properly, I’m not sure if 1/3rd and 2/3rds of low gear speed just happened to work for us or if it will work in general, but definitely play around with and tune those numbers. As the season went on we added more and more conditions to shifting, which were: stay in low gear while turning in place, don’t shift up if the driver is commanding a speed that can be achieved in low gear, shift down immediately if the driver commands 0, and that the conditions to up or down shift had to be met for some period of time (I think we settled on 0.1 seconds) before shifting happened.

A big downside of auto shifting is that when you shift when moving (at least with dogs), one side will engage before the other side, jerking the robot up to about 20 degrees off course. To account for this we used the NavX to maintain a constant heading with a simple PID loop. This year we’re using pancake cylinders with sensors to detect when the piston is fully extended/retracted so we can disable the motors until both sides engage. All of our code is thoroughly commented (with JavaDocs!) and can be found in my signature, our autoshifting logic is in AutoshiftComponent.

EDIT: Forgot that we also had a “cooldown period” option where after shifting we couldn’t shift again for some period of time, to prevent back-and-fourths. Another key part of this setup is joystick scaling: the stick should always be scaled so that full throttle commands the high gear max speed. This keeps the controls nice and smooth, and makes it way more intuitive.

A 40 amp current limit seems a little low, wouldn’t that mean that during initial acceleration the system is drawing less current than a 4-CIM system under the same load? And thus accelerating slower. I don’t know how resistance and efficiency play into all this above 0fps though.
That’s in interesting way to autoshift, it’s nice that it plays nicely with the NavX. Did you also try shifting only when both were above a certain speed?

That makes sense, but we didn’t notice any changes in behavior when we added the current limit. Maybe inductance is coming into play during the first little burst, so no drive can get high currents?

Oops, that’s what we do. I’ll fix it, this is what I get for posting technical writeups at midnight.

I read that when it came out, thanks for the link. It is really useful data.

We have used six CIMs for at least the past two years, and while we had problems with brownouts in 2016, in 2017 the drive base ran well and was able to push almost anyone out of the way. I would say having the extra motors has made us a solid defense bot anytime our arms were broken or we finished our tasks early.

The specific reason for the drop from 6 to 4 CIMs between 2014 and 2015 is the combination of the new control system browning out when voltage drops too much, and the lack of drive power needed in 2015.

As teams reconsidered their assumptions, they learned that there is an effective cap on the total robot power available based on the breakers and battery and how much current you can actually discharge without dropping the voltage too much. Some quanitative testing data that was posted here showed that, for example, a 4 CIM 2 Mini-CIM drive performed almost identically to a 6 CIM drive.

For shooting teams, this was a particularly power-hungry year, so that power was needed elsewhere and thus 6 motor drives weren’t in vogue. In 2014, other than the drive you really didn’t need THAT much power (maybe an intake roller, or a winch for a catapult running intermittently) so you could put more in the drive.

The new control system browns out the motors, but not the RIO or Radio. VRM firmware in 2016 resolved that. This is caveated with the assumption that the wheels will slip in low gear.

If a robot browns out and no one realized it, did it really matter?

The Rio is powered off the PDP via an unregulated port though (please correct me if wrong).

All I know is that in our high-gear testing where we drove our robot into a “brick wall” in order to force a radio or RIO brown-out, we couldn’t. The electrical guys said there was a new PDP/VRM firmware update that was supposed to prevent this kind of thing. Maybe that part was a misunderstanding.

Yet the testing (and our season) showed that brown outs on the RIO with 6 CIMs aren’t* a ‘thing’ any more. With zero current monitoring on the drive train, we had exactly 2 electrical issues this year. One was a broken MIL-specc’ed CAN connector. The other was from a partially-seated APP at IRI.

*It wasn’t an issue for us. If it was for someone else I’d love to do drive comparisons to understand the underlying root causes.

Not quite sure what you mean here. When the voltage at the roboRIO falls below a certain point (that I don’t feel like looking up right now), it disables all motors till the voltage recovers. That action is called “browning out”. True, the roboRIO doesn’t black out, but it certainly does brown out.

Accelerating a 6 CIM drive without proper current limits or voltage ramping can cause the battery voltage to drop low enough to brown out the roboRIO. Even if the wheels are geared to slip, they can do so at a high enough voltage across all the motors to drop the battery voltage and brown out the roboRIO.

Also, what do you mean by “If a robot browns out and no one realized it, did it really matter?” Maybe if it only browns out for a few milliseconds you won’t notice, but often the brownouts go on an off every few milliseconds for a period of seconds, which is definitely noticeable and hindering.

No, you’e right. The roboRIO sees basically whatever voltage the battery is giving. If that falls below insert value here, you’ll brownout.


It may not have been an issue for the robot that you tested with, but I know that I helped a number of 6 CIM teams this year who had problems with browning out. If you draw too high of a current with any mechanism (but especially a 6 CIM drive), the battery voltage will fall and the roboRIO will brownout. No amount of VRM firmware can help that.

It wasn’t noticeable or hindering in any of our matches. We didn’t brownout during full acceleration in high gear (there was no stuttering). We hit plenty of robots in high gear, and probably stayed in high gear for at least a few ms each time. The driver never complained about non-responsiveness of the drive, nor did the robot sit while something rebooted.

So sure, it browned out. I’m not attempting to imply that it didn’t brown out, but rather, the 6-CIM brownout discussion is irrelevant.

I’d love to understand what you did to help those teams get through their issues.

Also - missed this snippet. This is important. We did set voltage ramping to 72V/s in low gear (dampened turning jerkiness) and 120V/s in high gear (0 to 12V in 0.1s –> 0.1s was determined to be the time window for wheel slip during acceleration).