by nicole
3. February 2010 15:11
The actuating system of the robot is controlled by a SSC-32 serial servo controller (for details http://www.lynxmotion.com). The 32 servos provide precise control using a signal that consists of a positive pulse ranging from 0.50mS to 2.50mS (milliseconds) long. This range corresponds to about 180°. The motion control can be immediate response, speed controlled, timed motion, or a combination. A unique "Group Move" allows any combination of servos to begin and end motion at the same time, even if the servos have to move different distances.
Summarizing the communication protocol, a SSC-32 command is an ASCII string in this format:
#<ch> P<pw> S<spd> ... #<ch> P<pw> S<spd> T<time> <cr>
where:
- <ch> is the channel number in decimal, 0-31
- <pw> is the pulse width in microseconds, 500-2500
- <spd> is the movement speed in uS per second for one channel (Optional)
- <time> is the time in mS for the entire move, affects all channels, 65535 max (Optional)
- <cr> is the carriage return character, ASCII 13 (Required to initiate action)
- <esc> cancel the current action, ASCII 27
Multiple commands of the same type can be issued simultaneously in a Command Group so we can have a configuration with at most 32 commands at time. All the commands in a command group will be executed after the final carriage return is received.
It is possible to specify a time for the entire configuration or a speed for each servo; in case that you specify a speed value, consider that 1000uS of travel will result in around 90° of rotation so a speed value of 100uS per second means the servo will take 10 seconds to move 90°. Alternately, a speed value of 2000uS per second equates to 500mS (half a second) to move 90°.
For example:
#5 P1600 S750 <cr> : this command will move the servo on channel 5 to position 1600. It will move from its current position at a rate of 750uS per second until it reaches its commanded destination.
#5 P1600 T1000 <cr> : this command will move servo 5 to position 1600. It will take 1 second to complete the move regardless of how far the servo has to travel to reach the destination.
All the servos will start and stop moving at the same time; the time to complete the movement is the time of the slowest servo and it is depends on its own initial position.
It is possible to combine the speed and time commands; in this case the speed for each servo will be calculated according to the following rules:
- All channels will start and end the move simultaneously.
- If a speed is specified for a servo, it will not move any faster than the speed specified (but it might move slower if the time command requires).
- If a time is specified for the move, then the move will take at least the amount of time specified (but might take longer if the speed command requires).