Monday, January 23, 2006

Servo Motors, Rotation Encoding and Robot Reflexes

Tags: My-Robots

Right now, the information on the NXT is still very scarce. On its servo motors, the official Lego launch press release mentions only the following:

“3 interactive servo motors feature inbuilt rotation sensors to align speed for precise control”

Does this mean that you can measure the position of the servo motor inside the controller? If so, we can build really fancy robot reflexes.


Some Background

Most do-it-yourself robots are built using hobby servo motors. These motors are great for robotics, because you can tell them to move to a particular angle. To accomplish this, the motors measure the difference between the desired position, and the actual position, and try to minimize this. Unfortunately, hobby servo motors do not return the current position back. Returning the position over a digital signal requires an analog-to-digital converter inside the motor, which is too expensive for hobby servos. In addition, hobby servos are designed for model airplanes and steering of model cars or boats. There is usually no obstacle preventing the motor from turning, so there is no need to distinguish between desired and actual position. Rather, these motors typically focus on speed and accuracy.

A hobby servo cannot make a 360° turn, and hence cannot be used for going forward. You can adapt hobby servo motors make full rotations. The result is that the servo motor can now be told to rotate at a specific speed, but it is no longer possible to control the position of the hobby servo by specifying the desired angle.

The servo motors that Lego has shown us, appear to be capable of doing both things. They can make full rotations a specified speeds, or they can move to a specific angle. But how? I am hoping they do it by measuring the angle, and feeding that information back to the controller. The controller then turns the motor until it reaches the desired angle. That’s how I interpret “inbuilt rotation sensors to align speed for precise control”.


Robot Reflexes

If that assumption is true, that means that every motor is also a sensor. You can use the rotation sensors to create really lifelike reflexes on robots. Here's a few seconds from a movie on one of our older research robots (the movie is in .WMV format. Click here to see how to play these files on MacOS or Linux).

The robot in the movie is built using customized hobby servos. The electronics in the servos has been modified to send the current angle back to the controller. As you can see, the controller notices in microseconds when the leg is moving in unexpected ways. As soon at this unwanted motion is above a certain threshold, the controller executes a "stepping reflex". The stepping reflex is very useful when walking on slippery services, to keep the robot from falling flat on its belly. Achieving the same behavior is not possible using other sensors, such as touch sensors. Image that the leg of the robot is resting on a piece of paper. Touch sensors would notice nothing special about this situation. Then, that we gently pull the piece of paper away. Assuming that the leg has a good (rubber) grip on the paper, then the servo may not be able to compensate for the slippage. The servo gets strained, but meanwhile the controller is not aware of the problem because the touch sensor thinks everything is normal. Clearly, the only effective way for the robot to notice this is to monitor the angle inside the joint (servo). Using this kind of low level reflexes is also a very effective way to avoid servo motors to be stressed. Plus, combined with other reflexes, it looks very realistic.

The same kind of sensing can be used when moving an arm, a leg, ... Being able to detect a difference between the expected rotation and the real rotation makes it possible to detect blocked motors, and provides valuable feedback. You can even build whiskers using this principle. In real insects, whiskers are used to feel the environment by moving them around, and feeling where they get blocked.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home