Choosing motors - my approach
Before I can consider which motors I might choose, it helps to guesstimate at the total mass (weight) of the rover, and make some ranges for performance, like how fast it should go, how much slope it can climb, and what kinds of payloads it might take.
1. The Weight Budget
After a first pass through the chassis design, I was able to make a guess at the final weight of the metal. A few quick web searches filled in some blanks for things like battery weights, and some total guesses for the weight of electronics (which isn't much). Here is what it looks like:
That's a total base mass (no payload) of 6500 grams, which is 6.5 kg or just over 14.3 lbs. Putting in a fudge factor and payload could be 10 kg. At the time I did this math I wasn't sure that the rules or goal of the race wouldn't change, so I also budgeted another 2 kg for a small manipulator arm in case they added any 'tasks' for the robots to do. But they didn't... so I guess that saves me some mass (and money!). However, once the race is over - on goes the arm! So although I hope it doesn't weigh 12 kg (26.5 lbs) on race day, that's the design mass. And as the bits arrive I'll be putting the digital postal scale to some use...
2. The Performance Envelope
The next considerations are the kinds of terrain slope and speed that the rover should operate in. This is an outdoor race, and I visited the site last summer and documented it photographically. There are slopes, gravel, grass, and small trees. There are also some concrete sewer accesses sticking up, an maybe a few mud puddles, and whatever else in terms of obstacles that the race organizers want.
Having some experience in driving robots up slopes (and a good background in math and physics), I know that as the slope increases the traction decreases, and as it happens, at about the same point that the traction loss is significant the stability (or tippy-ness) usually becomes an issue.
When a robot is operating near its tipping-point driving across the side of a hill and it drives over a rock on the uphill side - even a small rock, it can be game over pretty quickly. So traction and stability are usually in the same general vicinity, perhaps around 45 degrees, or a little less. The design has to also consider that a rocker-bogie suspension control system might be a little insensitive to driving over obstacles of roughly one wheel diameter, which could easily put it over the stability limit. Of course, that's what software and sensors are for... but it does mean that 40 degrees is probably the sensed limit, and 30 degrees is probably the commanded limit. But wait, there's more...
Driving straight up a good grippy slope without stalling the motors, or very near the stall limit, is a pretty substantial torque problem, and it's heavily influenced by robot mass. So the robot should be able to proceed above it's commanded limit, in case it runs over the aforementioned small rock, but designing much above that will lead to having to choose larger (and heavier) motors, bigger (and heavier) batteries, and eventually the math grinds to halt, leaving a lower max incline than either traction limit or stability limit. But wait - still more!!
The rocker-bogie system has a great feature - it can climb obstacles more than one wheel diameter. But that means that when a wheel encounters an obstacle it might have to climb straight up the front face of that obstacle. That's a 90 degree slope, but for that drive motor, it's only a fraction of the total mass of the robot. I chose to consider that two wheels might be off the ground, so the total mass (12 kg) would only be supported on 4 of the 6 wheels; that's 3 kg per wheel / motor.
The best online tool I've found for these kinds of what-if problems is the robotshop.com torque calculator. I've run the math through it, and compared it to real-world machines and I trust the numbers it gives.
For a 12 kg mass, with one wheel lifting 1/4 of the mass (3 kg), or all 6 wheels driving up the maximum slope (say 40 degrees), the torque numbers look like:
Single wheel, 0.06m in diameter, a 90 degree slope (obstacle), and 3 kg mass: 393 oz-in
Six wheels, 0.06m in diameter, 40 degree slope, and 12 kg mass: 170 oz-in
I'm going to use the more common torque measurement of oz-in, since that's what's often listed in product pages, but in my head I tend to think in kg-cm, since I can visualize it better. Just multiply kg-cm by 13.87 to get oz-in.
The second number - 170 oz-in for a 40 degree slope, is the minimum torque per motor for a straight uphill climb on a smooth-but-grippy surface. Actually, since a wheel might have to climb an obstacle, this number is below the minimum, and that a motor with a stall torque of 170 oz-in isn't even worth considering.
So is 393 oz-in of torque reasonable? No, for two reasons, but yes for a third reason.
First, that's a big number - which probably means very low RPM's (speed) because of gear reductions; not the small, fast hub-mounted motor I had in mind. More importantly it's tough to guesstimate a good coefficient of friction for a knobby rubber tire being driven up a rough surface, all the while having 4 or 5 other wheels driving the robot body forward, into the rock or obstacle. There should be plenty of contact force, but once the axle of the first wheel is above the axels of the other wheels it doesn't actually need to pull itself up - it would actually roll its way up if all the other wheels just pushed on it. That's the second reason; 100% of that torque may not be needed very often.
But it does give some guidance on what the upper limit is for the requirement; ie more is better, so it's still a useful number. I know if the stall torque of the motor is closer to 170 oz-in the robot might have trouble mounting a vertical obstacle if the other wheels can't push the robot forward, perhaps because they are in sand or mud. Likewise if the motor is somewhere between 200 and 300 oz-in there is going to be better single-wheel climbing performance.
Where does that leave the search for a motor? There is one last consideration: sensing motor speed. Geared motors are usually sold either with or without encoders; I pretty much need them for the software to work, so that's going to narrow the field of choice quite a bit. Encoders give an indication of speed and direction, so it's easy to calculate a dead-reckoned distance or speed, or detect a motor stalling or having issues with an obstacle.
One company that makes small-ish motors is Pololu. Of their lineup the only motors they carry that might work are in the 37D line. There are three that might work, and their calcuated speeds for a wheel radius of 0.06m are:
- 200 oz-in / 150 RPM = 0.94 m/s (just over 3 km/hr)
- 220 oz-in / 100 RPM = 0.63 m/s (just over 2 km/hr)
- 250 oz-in / 80 RPM = 0.5 m/s (just under 2 km/hr, probably closer to 1.5)
Let's try another source; superdroidrobots, they seem to have two that might work also:
- 347 oz-in / 265 RPM = 1.66 m/s (about 6 km/hr)
- 485 oz-in / 190 RPM = 1.19 m/s (about 4.3 km/hr)
Revisiting speed, control, and requirements
I like to take a step back at each decision and consider it in context, not just by the numbers, and make sure that I have everything in perspective. My data-driven instinct says that the faster of the 24V motors or the slowest of the 12V motors are close enough to compare.
The first two 12V motors probably aren't torque-y enough for the worst conditions, and down the road that might limit using larger tires on the rover. The torque-monster 24V motor is impressive, but is it too slow? Not really, 4.3 km/h is about walking speed, and it's possible to trade torque for speed by using larger wheels.
In the end I like the idea of a motor that can deliver all the torque required at the fastest possible speed. Although I don't know if the software (probably running on a 70Mhz Max32) can allow for safe navigation at 6 km/h, I think I'm going for the faster 24V motor. This is a race, after all!