Bear with me, this is going to be a long one.
Tl;DR:
I characterize a bunch of cheap brushless motors to investigate their usefulness in small running robots. Each motor gets a mechanical teardown and brief characterization. Scroll to the bottom for conclusions.
Background
I've worked on small running robots in the past, in the Biomimetic Robotics Lab. That robot was designed to be extremely low-cost, built out of super cheap off-the-shelf DC gearmotors, which proved to be a hugely limiting factor in terms of the kind of running the robot was capable of.
So here's the basic idea: The hobby remote-control-things market has produced an abundance of cheap, light, super powerful motors. This type of motor has showed up in my fleet of small electric vehicles, and many other people's vehicles, multi-copters, airplanes, etc. long before me. But not in robots as precision or fast, torque controlled actuators.
There are a couple reasons for this, I think. First, suitable motor controllers don't really exist. There are super expensive small brushless controllers made by companies like Maxon, and slightly less expensive (but larger) industrial-grade servo drives by the likes of AMC. These could be convinced to work by appending your own sensor array to a hobby motor. However, these motors tend to be wound for low torque constant, low resistance, low inductance, so they want lots of amps and relatively few volts, which doesn't play nicely with the fancy servo drives. On the other end of the spectrum, there are the hobby grade controllers which usually are awful for anything other than RC vehicles, as they lack any form of current or torque control.
As I'm interested in using these motors in dynamic running robots, all these motor control options become even less useful. The fancy industrial drives might output 10 amps all day, but won't give you a drop more than 10 amps ever. For running, on the other hand, that's not what you want. Instead, you want many times your continuous current for short bursts and much less current the rest of the time. So more dynamic current limiting is required.
Thanks to Nick's last semester at MIT working on the Derpbike (a.k.a Bremsthesis), I'm making this a senior thesis project. While I technically don't need to do one to graduate as I'm doing course 2A (the flexible MechE option), it's an excellent excuse to spend all of next term at MITERS working on my own project for credit. My end-goal for the semester is to get all the necessary motor control stuff worked out and build a prototype 2 degree-of-freedom leg using hobby RC motors.
Motor Characterization
I've started out this project by acquiring a pile of small brushless motors I thought would be suitable for this kind or robot, and characterizing them to figure out which are the best. These were visually narrowed down from the vast array of available motors by geometry. In general, pancake-shaped (large diameter, small depth) is best for high torque density1.
This can be seen with a little motor dimensional analysis. Assume your rotor and stator are two rings of constant thickness, and radius and depth can be varied (not too unreasonable, although not all-encompassing). Motor torque will be proportional to both air gap surface area and air gap radius. So for a fixed air gap surface area (which means fixed mass, in this case) increasing diameter means increasing torque per mass.
Obviously there are many practical reasons why this might not be perfectly true (motor supporting material mass may scale differently, thinner motor means larger percent of windings in the end turns, etc.) but it's a good place to start from.
Here's the pile of motors I ended up with. From left to right, the Turnigy HD 5208 Gimbal Motor, Turnigy Multistar Elite 5010, Gartt ML 5208, Turnigy Multistar 4830, Turnigy Multistar 4822, and Flycat i-Rotor 5010:
Methodology
The goal of this motor characterization is to get a good first-order understanding of each motor's electromagnetic performance, as well as gauge the quality of construction and ease with which these motors could be adapted to legged robot applications. All the characterization was done with a benchtop power supply, a pair of multimeters, a cordless drill, and an oscilloscope:
The two parameters I measured were line-to-line resistance and line-to-line back-EMF waveform at constant speed (hence the cordless drill). From these numbers, I can calculate the torque constant (Kt) and "motor constant" (Km) by finding Kt/sqrt(R). This number tells how much torque a motor can produce for a given amount of power dissipation in the windings (the units also work out to N*m/sqrt(watts). It is important to note that this number is independent of how the motor is wound (assuming constant pattern and same amount of copper). In other words, rewinding a motor to have twice the turns will give it twice the torque constant and four times the resistance, meaning the motor constant is unchanged. The motor's ability to produce torque (looking at just resistive loss) is not dependent on how high or low a torque constant it is wound for, if copper area is held constant. I find this to be a common point of confusion.
So, motor constant is a very limited motor performance metric, but if you just want a good idea of how much motor you have, it's a useful number.
Furthermore, perhaps a good metric of how well your motor's materials are used to produce torque would be Km/sqrt(mass). Sticking two identical motors end to end would double the mass and increase the motor constant by a factor of sqrt(2), so this number would remain constant.
Turnigy HD 5208 Gimbal Motor
Link
Price: $39.20
The rotor is axially constrained by a single e-clip. The shaft and bearings are very small diameter, and there's no extra shaft sticking out of either end.
There is plenty of space for more copper on the stator. The windings are a single strand of very fine wire.
Extra-thick laminations. Another indication that this motor wasn't designed to spin fast:
Nice thick magnets. There's no visible balancing done to the rotor.
Back EMF on the scope: This is nominally a 31 RPM/Volt motor.
Resistance: 11.7 Ω
Motor Constant: 0.0901 N*m/sqrt(watt)
Turnigy Multistar Elite 5010
Link
Price:
This is a beautiful motor. You pay for it, but Hobbyking really outdid themselves here. For an extra $15 over other motors of similar size, you get absolutely beautiful single-strand, perfect windings, curved N45SH magnets, and an overall just really nice feeling motor.
Solid construction all around. Big shaft and bearings. Shaft axially constrained by a locktite-ed screw.
Rather disappointingly, there's a lot more space for copper on the stator. However, I think for multirotor-duty, this actually is a good thing. I bet these motors are exceptionally well cooled with air forced past them by propellers, considering the thick, clean windings and room for airflow between stator slots. Also take notice of the tapered ends of the stator teeth. Every other motor tested has right angles at the ends of the stator teeth. Hard to say what this does without seeing the FEA.
As expected, it has nice, thin laminations:
A closer look at the curved magnets. Also some small daubs of blue balancing goop.
Drill-o-metered back EMF. This is nominally a 274 RPM/Volt Motor. Fairly sinusoidal looking.
Resistance: 128 mΩ
Motor Constant: 0.0930 N*m/sqrt(watt)
Gartt ML 5208
Link
Price: $38-$45
I had high hopes for this motor. I managed to offer them down to $38 on ebay, making it cheaper than most equivalently sized motors from Hobbyking. Unlike the two motors above, it has 22 rather than 14 poles. A nice thing about having more pole pairs is that there's less flux between poles (because each pole is smaller area). I was hoping this would mean that the rotor can would be less leaky (i.e. less flux leaking out of it). This indeed appears to be the case - you can barely feel metal objects stick to the can of the motor.
Solid construction here too. Again, big bearings, big shaft, snap ring and screw to axially retain the rotor. The magnet fill is pretty low though.
The windings are "Hobbykinged" with a bundle of parallel strands. Cleanly done, though. The cutouts in the stator between the bearings and the windings are interesting.
Nice thin laminations:
More balancing compound, and a better look at the magnets:
Back EMF. This is nominally a 340 RPM/Volt motor. Some much more noticeable harmonics on this one.
Torque Constant: 0.02498 N*m/A
Resistance: 97.5 mΩ
Motor Constant: 0.0800 N*m/sqrt(watt)
Turnigy Multistar 4830
Link
Price: $43.29
This motor has a different aspect ratio than the rest of them - longer axially, smaller diameter. Like the one above, it's a 22 pole motor. Rather annoyingly, it came in a fancy metal box with foam cutouts on the inside. I'd have preferred cheap cardboard packaging and a couple dollars less expensive motor.
Well constructed here. Not sure why so many washers at the end of the shaft, but like before it's a screw plus snap ring to hold the can on.
Good magnet fill, and a little balancing done to the rotor:
Eww, some big 5th harmonic in that back EMF. This is nominally a 420 RPM/Volt motor.
Torque Constant: 0.0212 N*m/A
Resistance: 102.8mΩ
Motor Constant: 0.0662 N*m/sqrt(watt)
Turnigy Multistar 4822
Link
Price: $32.91
I was expecting this motor to just be a shortened version of the 30mm motor, but there are a surprising number of changes between the two besides the stator length.
The rotor retention is different - this one just has a snap ring, while the 30 mm one had a snap ring and a screw-on cap to the shaft:
The bearings and shaft are also smaller:
As usual, there's some balancing goop on the rotor:
I was expecting the back EMF waveform to look pretty much the same as the 30mm version of the motor, but to my surprise it showed none of that 5th harmonic, and was very sinusoidal. Not sure what's going on here to cause the difference between the two. I can't imagine the winding pattern is different between the motors. This is nominally a 390 RPM/Volt motor.
Torque Constant: 0.0223 N*m/A
Resistance: 205 mΩ
Motor Constant: 0.0493 N*m/sqrt(watt)
Flycat i-Rotor 5010
Link
Price: $14.49
With its $14 price point, this motor is the odd one out. I got this motor because I searched "5010 Brushless Motor" on ebay, and didn't read the description carefully enough. Usually, "5010" means the motor has a 50mm diameter, 10mm tall stator. For this motor, those are the outer dimensions. The actual stator is much, much smaller. No surprises here, the motor is smaller than the others, and construction quality is about as awful as you would expect for a $14 motor.
Nice exposed underbelly. Makes it lighter, right?
The rotor is axially retained by a retaining ring and bronze washer. I managed to send the retaining ring flying across MITERS never to be seen again. I can't say I'm particularly broken up about the loss. Small diameter bearings and shaft.
Messy single-strand winding. More or less as expected.
Despite the lack of visible balancing, the motor was okay sounding when I spun it up with an RC airplane controller.
Back EMF. This is nominally a 360 RPM/Volt motor.
Torque Constant: .0249 N*m/A
Resistance: 286 mΩ
Motor Constant: .0497 N*m/sqrt(watt)
Conclusion
Here's a nice table:
Motor
|
Torque Constant (N*m/A)
|
Resistance (mΩ)
|
Motor Constant (N*m/sqrt(watt))
|
Mass without leads (g)
|
Price ($)
|
Turnigy HD 5208
|
0.3081
|
11,700
|
0.0901
|
167
|
39.20
|
Turnigy Multistar Elite 5010
|
0.0333
|
128.0
|
0.0930
|
183
|
52.69
|
Gartt Ml 5208
|
0.02498
|
97.5
|
0.0800
|
173
|
38.00
|
Turnigy Multistar 4830
|
0.0212
|
102.8
|
0.0662
|
162
|
43.29
|
Turnigy Multistar 4822
|
0.0223
|
205
|
0.0493
|
100
|
32.91
|
Flycat i-Rotor 5010
|
0.0249
|
286
|
0.0497
|
90
|
14.49
|
The real competition here is between the top three motors - the Turnigy gimbal motor, Multistar Elite, and the Gartt. The bottom two are bit smaller than the size range I'm interested in, and the Multistar 4830 is strictly worse than the others for similar cost and weight.
Rather to my surprise, just from numbers, the Turnigy Gimbal motor does quite well. A solid second in terms of motor constant, lighter than its two competitors, and basically the same price as the Gartt. From feasability of using in a robot, though, it doesn't look so good. To get equivalent performance from the gimbal motor to a, say, 20 V system with the other two motors, I'd need a 200V bus! Not too tasty. Its mechanical construction is generally worse than the others, as well. So the conclusion is....unclear. The Multistar Elite is just so nice... the extra 40% cost over the Gartt seems palatable when considering the overall cost of building a robot. 18% larger motor constant, back EMF is more sinusoidal, thermal performance I'd guess is better (although I have done no analysis or experimentation to back this claim up), and it just feels nice.
**Edit**
As of 1/29/2016, the Multistar Elite motors have dropped to $42.15, making them a clear winner in this motor shootout.
****
Next steps: I have already designed and laid out motor controller hardware (for now as a Nucleo shield. Once I get control stuff working I'll put the micro on board), and will send out for boards and parts from digikey shortly. Then I can get crunching away on motor control. I still need to decide on position sensing method.
There's also a lot of mechanical design work that needs to be done to integrate these motors into legs. Like the full-sized cheetah robot, I'd like to use a single state planetary reduction, so that needs to get figured out.
Stay tuned. This is gonna be good.
Dear Ben,
ReplyDeleteGood work, nice and scientific.
I would be interested to know what characteristics these brushless motors have that make you believe they are suitable for a legged-robot joint?
Brushless motors like these are generally designed for very high RPM, at low-ish torque. whereas robot limbs joints need huge torque at very low RPM.
Industrial robot arms use "Torque Motors" for this reason. Are these large diameter, short-length brushless motors analogous to Torque Motors in a useful way?
I would advise doing your required joint-torque calculations before you spend too much time designing a motor controller for a specific motor. (been there, made that mistake myself)
What are your thoughts?
Regards,
Nicholas Lee
PS: Consider what happens when the robot joint is stationary, supporting the weight of the robot. (i.e. Zero RPM, large static torque). The motor will be in stall (which is fine for a "Torque Motor" or "Direct Drive" motor), but a brushless motor's windings will be come almost a dead short, and the back-emf signal that tells you when to commutate the windings will disappear.
ReplyDeleteI am genuinely curious to know how you propose to solve those problems.
PPS: I hope your robot has compliant joints; I'm really into making compliant-joint robots myself.
Hi Nicholas,
DeleteTo address your points:
These motors are well-suited for robotic legs because of their torque density. I wouldn't say they're designed for high-speed, low-torque so much as they are "hot wound" - designed to spin fast at low voltage. Fortunately, this doesn't at all affect their torque producing capabilities. The "motor constant" metric (torque/sqrt(watt)) is unaffected by how fast the motor is designed to spin, only how well the motor utilizes it's active material and how big it is. Also, each motor will be paired to a single-stage planetary gear reduction.
The phrase "torque motor" is a fairly meaningless. Any brushed or brushless motor (given appropriate controller) can operate continuously at stall if thermal limitations are observed.
When supporting the weight of the robot: One of the beauties of jointed legs is that the effective "gearing", if you will, between motor torque and ground reaction force is dependent on leg configuration. Near the leg's singularities, it takes almost no torque from the motor to support the weight of the robot. Think standing straight up vs. trying to do a squat, with your legs bent.
I haven't said anything about sensorless commutation. For now, I've been using an encoder, simply for ease of use, to work on the motor control side of this project, but I'll eventually be abandoning the optical encoder in favor of a small magnet and an magnetic field rotation sensing IC. I'll post more information about that in the next couple weeks. For reference, version 1 of motor control hardware and firmware is done already, with a working field oriented control implementation:
http://build-its-inprogress.blogspot.com/2016/02/motor-control-progress-working-hardware.html
I do not intend to use compliant joints. Compliant joints (using series elastic actuators, for example) impose inherent control bandwidth limits. The strategy I'm more interested in is using a low-impedance transmission (low gear ratio, low inertia, highly backdrivable), for fast control of ground forces. There aren't many robots that do this right now. You should check out the MIT Cheetah Robot as the prototypical example, or Will Bosworth's SMC robot, as an example more on the scale I'm working on:
http://biomimetics.mit.edu/
https://biomimetics.mit.edu/research/mit-super-mini-cheetah
Hopefully I kind of answered your questions. Feel free to ask more.
Ben
Dear Ben,
ReplyDeleteThank you, that's most interesting. I think I agree with you.
For reference, a “Torque Motor” is a specialized form of electric motor which (by design) can operate indefinitely while stalled, that is, with the rotor blocked from turning, without incurring damage. Torque motors are normally induction motors of toroidal construction. Their main differences from other similar motors are their wide diameters, to allow for high levels of torque, and their thermal performance, to allow their continuous operation while drawing high current in a stalled state. Torque Motors do not generally use a gearbox, they drive the load directly. The torque output is highest at zero speed.
See also: http://machinedesign.com/motorsdrives/torque-motors-do-trick
You are however correct that these characteristics can largely be emulated by using appropriate current-limiting drivers. Also, the brushless motors you are considering have the similarly nice characteristic of having a relatively large diameter-to-length ratio compared to a typical brushed DC motor. The only issue might be efficiency compared to a Torque Motor designed with “high-torque at zero speed” specifically in mind.
I agree with you about doing the commutation based on an absolute magnetic angle encoder. Very sensible choice. You would need that sensor for proprioception anyway so you might as well use it for the motor commutation. (Just watch out that the motor’s magnetic field doesn’t affect the sensor! You might need a Mu-metal shield)
I agree that using compliant joints with series-elastic actuators are a compromise. Compliant joints with springs store energy which enable us to use running and bounding gaits. (With stiff-gearing and no-compliance, all you can do is a static walking gait, like an Elephant or Tortoise does). Springs allow a relatively small DC-motor with a high-impedance (stiff) gearbox to be coupled to the joint, without the gears shattering with the impact loads. However they aren't as controllable as a bigger (& more expensive) motor with a low-impedance (easily back-drivable) gearbox, and you can't control the effective spring constant like you can by modifying the motor current. This does (as you say) impose inherent control bandwidth limits.
If you can afford the brushless motors, then doing away with the physical spring would be the way to go. It will be interesting to see how the power-to-weight ratio works out for the robot given the relatively larger motor size requirements. The acid test is whether the robot can stand up under its own weight plus the weight of its batteries.
With a big motor and low-impedance gearing, the joint springiness is effectively just the energy stored in the magnetic field, and that is fully under your control.
With skill, a motor controller with "regenerative braking" could be designed that detected back-driving of the joint, and absorbed the leg-landing impact energy (into a capacitor) and re-applied it to the motor (to act like a spring releasing energy) when the leg pushes off the ground again. That would seem to give the best of both worlds. Otherwise you will need to dump the impact energy as heat and then use up battery power to push the leg off the ground again.
Here is a picture of my own quadruped robot: http://www.lee-technology.com/images/Robotics1.jpg
For scale, it is about 2 feet long. It has 12 degree-of-freedom, (3 DOF per-leg).
I shall follow your progress with interest. Best of luck
Regards,
Nicholas Lee
Would you be able to provide the stator measurements for the Multistar Elite ID, OD, and height? That would be extremely appreciated?
ReplyDeleteAlso is the Multistar Elite and actual 5010 stator while the flycat is just a 5010 outer dimensions or are they the same size stator? Thanks!
Hey Ben. Out of interest, are you the legendary Ben Katz who developed the MIT Cheetah motor controller board? I saw a video from skyentific on YouTube and heard some sort of name that sounded like Ben Katz.
ReplyDeleteI have a slight question which I am hoping you can answer.
Since this would be my first time making my own robot actuator, I am concerned about the anmount of space I have at the back of the motors to attach a magnet onto and then an encoder. I fear that the distance is not enough and I will not be able to do anything about it.
Is it possible to push the shaft backwards a bit when re-assembling the motor so that I have that extra cm or so to easily attach a magnet onto or does the motors assembly restrict that?
Since the little shaft at the front to attach a propellor onto is useless for robotics, im thinking there has to be a way to push that back.
Thanks again :)
Yep, that's me. Not sure I've achieved "legendary" status, but I'm flattered.
DeleteThese motors tend to have shoulders or snap ring grooves on the shafts that would prevent you from pushing them backwards. On my original pre-mini cheetah motor modules, I made new, longer shafts to replace the originals, so I could attach the encoder magnet and gears more easily. See:
https://build-its-inprogress.blogspot.com/2016/02/planetary-gearboxes.html
https://build-its-inprogress.blogspot.com/2016/04/motor-module.html
I see thanks for the reply. I dont have the tools available to make a new shaft however I found a motor I could use that would solve my concerns.
DeleteUsing the GM-5208 motor I could 3d print a shaft "extendor" which has a magnet on the end of it. Then ttach that to an AS5600 or AS5048
GM-5208 - https://www.aliexpress.com/item/32957563789.html?spm=a2g0o.detail.1000014.4.c4bc72cfvgE9UB&gps-id=pcDetailBottomMoreOtherSeller&scm=1007.13338.183346.0&scm_id=1007.13338.183346.0&scm-url=1007.13338.183346.0&pvid=46c36a3f-a743-4673-a69b-797b2612ab10&_t=gps-id:pcDetailBottomMoreOtherSeller,scm-url:1007.13338.183346.0,pvid:46c36a3f-a743-4673-a69b-797b2612ab10,tpp_buckets:668%230%23131923%2343_668%23888%233325%2313_3338%230%23183346%230_3338%233142%239890%2310_668%232846%238110%231995_668%232717%237559%2343_668%231000022185%231000066058%230_668%233422%2315392%23326
Since it is hollow in the centre it seems like an eas choice to attach things onto like a magnet.
If possible, i could even make my own encoder with a hall effect sensor built into the hole of the motor. If there is a changing manetic field I could measure that and determine its position but I think everything is easy going for the most part.
Thanks.
And you are a legend. Trust me