I have a system arm that free-ranges within a certain area. The arm swings, translates and rotates about a vertical axis which sits atop a mobile base. The mobile base can move any direction in the X-Y plane. It's movements are strictly programmed but I would like to start a new version that is semi-autonomous. This new version would need to receive feedback on 3-axis positioning, speed and rotation relative to a fixed point at the edge of the enclosed system (or relative to the position at which it is initialized). Sensor feedback is completely new to me but I am willing to dive in. Could someone recommend a great starting point for me? Thanks!

  • 1
    \$\begingroup\$ Maybe I am on the wrong track but Couldn't also use a digital Compass to have your "Fixed point". You may already done this but here is something that might help: sparkfun.com/products/9371 and sparkfun.com/search/results?term=3-axis&what=products for a "general look". Note that if this is what you want I can give you a full answer. \$\endgroup\$
    – avitex
    May 8, 2011 at 1:45
  • \$\begingroup\$ @james thanks! that would definitely yield heading info for the base. But I need rotational info and height from the floor for the arm since it rotates about AND goes up/down the vertical axis \$\endgroup\$
    – KirkB
    May 8, 2011 at 18:43
  • \$\begingroup\$ I have been looking for similar info for awhile. one place i started looking was en.wikipedia.org/wiki/Path_planning It gave me a basic concept and terminology used. \$\endgroup\$
    – jsolarski
    May 9, 2011 at 8:08

2 Answers 2


What kind of range and accuracy are you looking for?

From a repeated position accuracy standpoint, using a accelerometers and gyroscopes would accumulate errors and drift over time.

Rotary and linear position encoders would probably be the way to go.

If you've opened up a more recent mechanical mouse, you've probably seen the slotted plastic wheel running through the gap of a caliper-like component like this one. You count pulses to keep track of where you are. These are pretty cheap, as long as you have a way of easily making/obtaining the necessary rotary or linear code strip.

There are nicer encoders that cost a bit more. Avago seems to have a bunch of position sensing and motion sensing technologies (led/laser mouse motion detectors, for example).


Accelerometers and Gyroscopes are going to be good, but not perfect. Depending on what your goal of the feedback is, you might want to consider using something like stepper motors. They will give you more of an absolute position of the current rotation of each motor.

If you want to use accelerometers and gyroscopes you should go take a look at this question: How to determine position from gyroscope and accelerometer input?

  • \$\begingroup\$ Ugh.... Stepper motors are horrible for any serious motion control. If you're serious, stick encoders on your brushed motors, and use closed-loop servo controllers to move the arm. \$\endgroup\$ May 10, 2011 at 0:09
  • \$\begingroup\$ @jsolarski @Kellenjb @Fake thanks everyone for the inputs/answers. I am very interested in the forces generated at an impact point by the combined motion of the base and arm, so I am thinking a gyro/accelerometer at the end of the arm in combo with the base vector would give me a good starting point. \$\endgroup\$
    – KirkB
    May 10, 2011 at 0:35
  • \$\begingroup\$ @Fake Name - if you pulse a stepper motor at the right frequency it runs as smooth as a brushed motor. \$\endgroup\$
    – stevenvh
    May 10, 2011 at 12:14
  • \$\begingroup\$ @stevenvh - Sure, but you can't ever avoid the possibility of dropped steps unless you put an encoder on it, and at that point, you're better off with a brushed motor, because they have far more torque for their size, and you already have everything needed to implement a closed loop servo anyways. \$\endgroup\$ May 10, 2011 at 21:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.