by John Blankenship and Samuel Mishal
ROBOTIC ARM
FUNDAMENTALS
Programming a robotic arm is very different
from programming a mobile robot. This
article will examine some fundamental
requirements and principles associated with
this unique task. Furthermore, it will provide
a 3D robot arm simulation that can be
programmed just like a real world arm so
that you can experiment with the concepts
discussed here without the time and expense
of a physical arm.
We cannot properly examine the programming
aspects of a robotic arm without considering
potential hardware configurations. The
maneuverability of a robot arm is proportional to its degrees
of freedom (DOF) which roughly translates to the number of
joints that can be controlled. You could build an arm with
only one or two DOF, but it would be difficult to accomplish
anything practical. Even three DOF has many limitations (as
we will soon see), but the limited motion greatly simplifies
the mathematics needed for joint calculations making such an
arm perfect for introducing fundamental ideas. For these
reasons, this article will concentrate on an arm with three
DOF. Don’t be put off by the choice of a simplified arm. With
a few compromises, such an arm can still perform interesting
tasks while helping you learn the basic principles needed
before moving on to more complicated systems.
A Visit To The Armory
Let’s start by examining some decisions you might face
when building an arm with
three DOF. For purposes of this
article, we will assume the
following movements as shown
in Figure 1: a rotating base, a
shoulder joint attached to the
base, and an elbow joint
attached to the shoulder.
With the main form of the
arm established, you need to
decide on the types of motors
to use. We will consider three
40 SERVO 05.2009
motor types. These include stepper motors, DC gearhead
motors, and hobby servos. Each type has advantages and
disadvantages.
Stepper motors do not require feedback, but they
generally have limited torque and speed when compared to
the other choices. Stepper motors are unique in that they
draw the same amount of current when a joint is stationary
as when it is moving so power requirements can be hefty.
Stepper motors also require a specific sequence of pulses to
control the motor’s movements but this is often accomplished
with a stepper motor driver chip that provides both the logic
and current buffers.DC gearhead motors are generally the
most powerful choice for a hobby arm but they require some
form of feedback such as a potentiometer, incremental
encoder, or absolute encoder for each of the moveable joints.
This complicates the process as your software will have to
monitor the feedback to ensure proper movement. As with
stepper motors, a driver chip is often the best way to power
each motor.
If this is your first arm, hobby servomotors could be your
best choice. They are composed of a DC motor and gear
train, and internal feedback so they are very powerful for
their size and weight. They also contain an integrated
potentiometer and internal circuitry to automatically attain
the position requested. Again, a driver module is generally
the easiest way to provide computer control.
Once you have chosen your motors, the next step is to
decide how they will be mounted on your arm. You might be
surprised at how the choices you make can affect the controlling software that you will have to write. The details of the
mechanical assemblies are beyond the scope of this article,
but as you will see the mounting of these motors can affect
how the arm moves and thus
how it must be controlled.
The rotating base could be
something as simple as a lazy
susan bearing with a motor
mounted beneath the base. The
shoulder joint is also relatively
easy to implement because the
motor can be mounted on the
base with direct drive to the
Figure 1. A simple arm with three degrees of freedom.