Welcome to the Parallax Discussion Forums, sign-up to participate.

# Articulated Robot Arm Path

Posts: 1,897
Hello All;

Sorry for the wordy description--

I have a challenging (for me at least) real world problem to solve. I am building a 4 degree of freedom robot arm to unload parts from a machine as they are being produced in real time, and I want to control the motion of all 4 degrees with a Propeller.

The robot arm is mounted to a ceiling slide (Degree #1) and can move 10 feet in a plane laterally centered on the length of the machine. To this slide is mounted a rotary "shoulder" swivel ( (Degree #2) that has a 22 inch upper arm attached to it. At the bottom of that is a rotary "elbow" swivel (Degree #3) with an 18 inch forearm attached. That in turn is connected to a rotary "wrist" swivel (Degree #4) with a 12 inch hand attached. All swivels move in the same plane as the upper linear track, so this is only a two dimensional system. All rotary action is driven by 16:1 geared-down stepper motors which, if required can be geared down another 4X. Degree #2 has 180* rotation, Degree #3 has 300* rotation, and Degree #4 has 360* (continuous) rotation.

So the challenge for me is to translate the required motion paths (different paths when making different parts) into synchronized pulse sequences for all 4 steppers. The speed of any complete cycle need not be fast, say 10 to 20 seconds to pick up a part and drop it into a bin, average 5 feet away, and return. There are several constraints to the machine such as numerous "keep-out" areas to prevent collisions with the production machine itself.

So I'm just starting to think on how to "program the path coordinates" into the machine, and am soliciting input from the Robotics group here who may have solved similar challenges in the past and can put me onto the right track before starting out.

The electronic or mechanical side of things is not an issue for me. I will be programming the propeller in a combination of Spin and Assembler.

Thanks for reading, and any suggestions or responses.

Cheers,
Peter (pjv)

• Posts: 4,030
Quick question. Are you familiar with inverse kinematics?

I would solve the problem in Cartesian coordinates, and then use inverse kinematics to translate it into arm joint positions. You would them want an object that can translate a joint angle into stepper pulses.
• Posts: 2,295
Since you are describing a fairly static path, and assuming your joints have positional feedback, one approach is to "train" your arm by manually moving it through the motions and taking measurements along the way. As long as you ensure that you take measurements at least at every point where a joint rotation would change direction, then the rest of the movement can be handled by linear (or whatever curve you prefer) interpolation. You can take it a little further by locking one or more joints at the last recorded position, allowing you to focus on few joints at a time, as well as removing apparent jitter in the final path (due to unintended small movements of the joints you weren't focusing on).
• Posts: 1,897
@Martin, thank you.
No, I'm not familiar with that, and will have to dig into it. A whole new arena here for me to learn.

@Seairth, your path training concept is what I had originally been considering, but without positional feedback as the arms will be very stiff. While training, have each stepper continuously dither one step forwards and backwards, and at the same time look for a change in each winding's inductance/back EMF due to movements made by hand. Then effectively step each motor position to follow its inductance change, thereby leading the arms through the desired path and record the angular coordinates. During "replay" velocities could be altered to suit so the training need be done at real speed. Not sure how to do all this yet, but will experiment.

Then a simpler approach might be a good way to start; a 5 way joystick with up/down left/right and rotary outputs to drive the path of the "hand" and again record the angular coordinates, and introduce a subsequent speed profile.

I'm welcoming any other ideas, thanks.

Cheers,
Peter (pjv)

• Posts: 18,731
Yes, a joystick or other teach pendant can work well. In my video below I use an IR remote to position a tiny 6-servo arm. The new Feedback360 servo has a low gear rartio and would be great for manually positioning thru feedback.

"When you make a thing, a thing that is new, it is so complicated making it that it is bound to be ugly. But those that make it after you, they don’t have to worry about making it. And they can make it pretty, and so everybody can like it when others make it after you."

- Pablo Picasso