Software and Programming
between each step for much smoother operation.
Accordingly, to move joint #1 from position 100 to position 200, for example, the robot’s controller
software sends a sequence of 100 individual position commands to the Pioneer Arm controller, each
incremented by one position value and separated by a
SPEED
number of milliseconds until the joint
reaches its destination.
You may set individual joint speeds on-the-fly with the
SPEED
command #78 or set their start-up
defaults through FLASH parameters (see next chapter); 1-127 milliseconds delay each. Speeds may
be set at any time, even when the arm is not powered, and persist through servo-power and client
connection/disconnection cycles. Their current values are reflected in the
ARMINFOpac
.
When powered, control the Pioneer Arm’s servo positions with the
POS
command #77. Servos vary.
Each joint for your particular arm is characterized by maximum and minimum position values which
limit its range despite the value you may command, as well as a center position. Limiting values for
each and every joint are reflected in the
ARMINFOpac,
and may be updated in FLASH (see next
chapter)
. Individual servo positions are reflected in the
ARMpac
server information packet (see
above).
SPEED Limits
Joint speeds have limits. Generic arm-position commands take two bytes each. Serial communication
with the Pioneer Arm controller is 9600 baud, which is about 1 byte per millisecond. Hence, an
individual joint may move at the maximal speed at about one new position every two milliseconds,
even though the server attempts to update each joint every millisecond.
The delays are cumulative, too. Move two joints at a time, and the maximal update rate, due to serial
communication delays, is every four milliseconds. And so on.
Fortunately, the worst case—all six joints moving at once and requiring simultaneous position
updates—is rare, for which a complete update cycle takes 2 x 6 = 12 milliseconds. As it happens, the
larger, heavier joints move best at slower speeds, and speed-controlling delay times of 15
milliseconds and above are smoothest and plenty fast for most manipulation applications.
HOME and PARK
As described earlier,
HOME
is a safe and stable position for when the Pioneer Arm servo motors come
to rest. When switching servo power, the
HOME
position minimizes the drop as the arm goes limp
when powered OFF, as well as the snap-to-position jumps characteristic of servo motors as each joint
seeks its position when powered ON. Indeed, your robot controller’s arm servers
always
presume that
the Pioneer Arm is stored in its
HOME
position except when its servo motors power is ON.
Use the
HOME
command #75 to send one (servo number 1-6 as command parameter) or all (command
parameter >6) of your Pioneer Arm joints to their
HOME
, default positions.
Use the
PARK
command #76 to send all the joints to their
HOME
positions and shut power OFF to the
arm. The
HOME
and
PARK
commands are ignored if servo power is OFF.
INIT, CHECK, and Warm Reset Protocol
Upon
Main Power
start up or controller reset, the Pioneer Arm servers automatically initialize the arm
controller, setting the arm joints to their default
HOME
positions and their speeds to the defaults stored
in FLASH. It does not apply power to the arm’s servos.
Instead, initialization includes
removing
power from the arm’s servo motors. Please be careful to
recognize the implications: Upon reset, your robot controller’s arm servers cannot know the positions
of arm joints, and therefore presume, upon initialization, that they are at or near their
HOME
positions.
When reset, the controller’s arm servers cannot and will not drive the Pioneer Arm servos to their
HOME
positions, as they may do under other circumstances.
14