RC-servos
are widely used to build robots with many degrees of freedom, because they are
small, inexpensive, and easy to interface. Their main advantage, though, is
their good weight-to-torque ratio. Many robots in the RoboCup Humanoid League,
for example, almost entirely consist of servos. RC-servos come in two flavors:
analog and digital. In analog servos, the internal controller is synchronized
to the pulse train that encodes the target position. A typical problem of
analog servos is that they suffer from large position tracking errors and
variations of the zero-position which are caused by changes in temperature
and/or supply voltage. To overcome these problems, digital servos have been
introduced in the last years. Digital servos are, however, about twice as
expensive as analog servos. Furthermore, all large servos are still analog.
We
constructed the legs of a 120cm humanoid robot from large analog servos. To
improve position control, we modified the servos by replacing in the internal
circuit the potentiometer with two equivalent resistors. The potentiometer is
now interfaced to a microcontroller that measures position, implements digital
position control, and sends motion commands to the analog servo controller.
This
approach makes it possible to use more advanced control techniques, compared to
the original controller. For example, long-term position errors can be avoided
by integrating the short-term error. Similar to other intelligent actuators,
the parameters of the controller can be changed on a fast time scale, e.g.
depending on the gait phase. Furthermore, the digital actuator is able to
generate feedback for higher control levels. As the microcontroller is shared
between multiple servos and was already in place prior to the modification, the
additional hardware needed is negligible.
We
evaluate the proposed approach using systematic test signals. The results
indicate that position control is more precise, more flexible, and more stable
than before.