

Ask HN: I need powerful and very fast, but silent servos. Where? - jeb

I'm currently working on a robot, and this robot needs to be really fast. Think of it like a robotic arm, but it needs to move about as fast as a human can turn his head.<p>For that, I need appropriate servos that can immediately make such a motion, without a long spin-up time. The effect is that natural movements should be simulatable with that.<p>Of course, I'd like the servos to be as quiet as possible and as small as possible. The question is : what servos do I buy? Money is not a problem.
======
ComputerGuru
I've worked on similar tech before (not for a robot though), and found the
best option to be a DC motor + optical feedback sensor. It's also the most
cost-effective solution.

Something to keep in mind: tiny servos (and even stepper motors) can provide
the blazing speeds you need...... but not with the torque required. Speed and
torque are commonly traded-off against one another. You'll need to first
determine what sort of resistance/weight the motor will be pulling/pushing,
because a lightning-quick motor that will turn in-place the minute any
counter-pressure is applied is way worse than a middling-speed motor with
decent torque.

~~~
jeb
A DC-Motor with optical feedback sounds like a pretty good option. They are
also much cheaper, are they not?

Would I be able to control such a motor appropriately with a standard board
like the arduino? Imagine I were moving 2kg 30centimers, and I want this to
react as a human hand would (same speed, start time), would this even be
possible?

~~~
ComputerGuru
Way cheaper.

And controlling it with an arduino is no problem. You've got to main options
for the sensor - either an optical tracker that is pointed at the shaft and
detects the presence of a striped/marked point which appears once every
revolution, or the (cheaper but just as reliable, really) solution of an iR
sender/receiver pair monitoring the turning of something (imagine a motor
shaft turning a fan. The iR pair would be positioned perpendicular to the fan
blades, each time a blade crosses the path of the iR, a signal is generated).

iR is cheaper.

An arduino (or just about any other microcontroller) has an operating
frequency way over the rotational speed of the motor. Both optical and iR
sensors can easily handle the relatively-slow rotational speed of the shaft.
I've used an MC68k from, what, 20 or 30 year old production lines(?) to pull
this off. The code is dead simple, just connect the iR/optical output to a
counter (which comes built-in in several of the arduino input ports) (you'll
need to run it through an inverter first, if you're doing the iR approach) and
then loop over the count until it's moved as far as you need it to.

The human hand isn't crazy fast the way you're thinking. If you've ever seen a
stepper motor snap from one position to another, _that_ is real acceleration.
Basic DC motors typically have lower acceleration than that - their
acceleration and speed will vary greatly depending on the model chosen.

2KG is _not_ a light weight. I would have recommended the stepper approach,
but you'll need motors about the size of your fist running at 12V and a
relatively high current to rotate an object of that size. Basic statics says
that the farther away from the point of rotation a weight is applied, the
stronger its force. You've got 2KG distributed (I assume) evenly across the
30cm surface, it's going to be quite the weight to turn against gravity, so
stepper motors are out.

Servos, which are basically your run-of-the-mill DC motors with their own
close-lood feedback system will work. But you'll have better luck with the
larger variety of DC motors available online or in your local electronics
store.

~~~
jeb
Nice, that's exactly the info I want to hear. By the way, I need to also
measure the position of the object being turned. That is, I was intending for
my robot to have two modes - training mode and execution mode, so your DC
suggestion makes it even better.

Thing is - I don't want to skimp on the positioning logic - I need it pretty
accurate in space (sub millimeter) and in time. Overshooting the target is
fine, I'll correct it with one of those algorithms.

What is the most arduino compatible and accurate measurement method that will
handle both use-cases? I should be able to use it both to control my DC motor,
and also to record the position of the wheel being turned, even when the motor
is switched off?

~~~
ComputerGuru
You can't. Once your device is switched-off, you can't know what position it
will start up in. The easiest option is to have an initialization routine that
will move the motor to a known position. For instance, move it all the way
clockwise until it jams (assuming there's a limited range of motion) or until
it signals a button, whatever that it has reached a position. This is known as
calibration or zeroing.

~~~
jeb
What I mean is that the item it is turning is marked, so I can detect it's
position. Using infrared perhaps?

~~~
pingswept
You can get motors with encoders built into them that are very, very accurate.
You can decode their pulses into position with a quadrature decoder like the
HCTL-2020.

------
adoyle
If money is not a problem, then I think you should not try to hit the perfect
solution the first time. Trying to do that will make it harder to get started.
I had to build a linear motion platform last spring. Since I had never done
anything like that before I decided to just start buying stuff and testing it.
I started with some small servos and brackets from Trossen Robotics -
[http://www.trossenrobotics.com/c/hobby-servos-for-
robotics.a...](http://www.trossenrobotics.com/c/hobby-servos-for-
robotics.aspx) and some Phidgets USB controllers from
<http://www.phidgets.com/>

I started with the servos because it seemed cheaper and I could start without
having to build a lot of stuff.

Then once I was happy with being able to control a two-axis setup with a
little webcam on it using Python on a Linux box, I moved up to some 185oz-in
steppers from Keling and some more Phidget stepper controllers. One of the big
motors with a toothed belt can lift a full can of paint and hold it
indefinitely.

I chose the Phidgets over Arduino because I didn't want to have to
simultaneously learn a new toolchain while I was concentrating on the
mechanical stuff. I figure I can always go to an Arduino or other controller
if I need to shrink things down.

Having now worked with the steppers, I would second the idea of using DC
motors with some kind of external feedback, maybe optical shaft encoders or
something. Even with steppers, where you can count the number of steps and
know where you are, you still really need to be able to run it into a limit
switch in order to find some kind of a zero point.

------
crcarlson
Maxon will occasionally donate motors to students in my experience, but I have
not found them to be particularly generous with hobbiests and their motors
tend to be fairly pricey.

You might consider the motor control packages from this guy
<http://www.kelinginc.net/index.html> or similar. They close the loop for you
and you position your motor based on a pulse train which can be generated by a
variety of devices. The step-direction control of the servo does tend to
generate more vibration than other kinds of inputs, but is very easy to
interface with.

There are others vendors as well, just search for hobby cnc and servo and
examples will pop up. Advanced Motion Control also offers servo amplifiers
which take other forms of input than step and direction which might be
quieter.

As mentioned before, gear boxes are a big producer of noise as are powertrains
in general. Toothed Belt drives, especially at low speeds or capstan drives
for finite rotation machines can be very quiet.

To figure out your motor sizing you need to estimate the speeds and forces /
torques on your system. From there you can estimate the power your system
needs to produce and then calculate a gear-ratio based on the available motor
torques and powers available from off the shelf devices. Maxon's catalog has
design rules, equations and worked examples if you want samples of the math.

For what it is worth, I would guess that the Kelling 350W motors would be able
to move a 2KG mass with what looks to be high accelerations and speeds with a
decently designed drivetrain.

------
pingswept
Maxon is a Swiss company that makes very high power-density motors that are
commonly used in high-end robots.

(I don't know if they're the quietest.)

<http://www.maxonmotor.com>

I suspect most of the noise is generated by the gearbox. That makes this seem
hopeful: [http://www.maxonmotorusa.com/media_releases_maxon-Koax-
Drive...](http://www.maxonmotorusa.com/media_releases_maxon-Koax-Drive-
KD-32.html)

~~~
jeb
This is exactly my problem. I can look at the picture and see the information,
but how do I figure out if that motor will do what I want it to do without
buying it and programming it?

I need to move 2kg through space in a natural manner - is there any series of
numbers I can apply that will allow me tell if that motor would be suitable
for this?

~~~
thegoleffect
Call them, tell them what you're making, and ask for a sample. If it doesn't
work, "adjust" your story. Most suppliers will gladly ship out a sample if it
is likely that you would buy in bulk in the future. Some will gladly ship to
hobbyists. Depends on the person you talk to.

~~~
jeb
I'm unlikely to buy bulk later. You sure that they will give me a free motor
just because I ask for it? Sounds...too good to be true :)

~~~
thegoleffect
<http://www.ladyada.net/library/procure/samples.html>

------
Keyframe
DC stepper motors + gecko driver should be a cost effective solution. Define
natural movements though.

FYI. For example a head turn does not follow a single axis turn (around Y for
example). Imagine a line drawn by eyes as head turns, eyes follow an arc. In
fact, every single animal motion (human and other animals) follow an arc.
First thing you learn when doing an animation.

------
HeyLaughingBoy
Forgetting motor type for the moment, you need to give us numbers.

How fast? How much mass must be moved? The inertia of the assembly? Required
acceleration?

Once you know this, then you'll know how much power is needed to move the
object. At that time you can start searching motor databooks to find one
that's suitable.

And then don't forget you'll want to figure out how precise the motion must be
(how much overshoot/undershoot is permissible?) so you can start with the
electronic/control system design.

Fun stuff!!!

------
HeyLaughingBoy
Maxon motors are about as quiet a motor as I've ever used. But be prepared to
open that wallet wide :-)

[edit] OK, from reading your responses below I think I misunderstood what you
meant. I'm not talking about the typical cheap R/C servos. Maxon makes
precision balanced motors with just about every parameter you need to know
specified. And then you can just put an encoder on the endcap to close the
loop.

But the first point still holds: we're talking at least an order of magnitude
cost-wise, from R/C servo motors.

------
hugo_vincent
You'll probably find some in Japanese or German robotics research labs....
good luck buying some off the shelf!

