# Make a Robotic Arm move straight not curved

I am planning on a project that includes a robotic arm controlled by Arduino. A simplified program of this would be:

• A robotic arm picks up an object
• The robotic arm then moves the object in a straight line
• The robotic arm releases the object

The problem with this is that every robotic arm that I have seen works with servos, which rotate precisely within 0 and 180 degrees. But, because the robotic arm moves with servos, it then moves in a curved path, rather than the desired straight path.

The two paths in this problem appear in this image. The one on the left is the desired, but the one on the right is the one that occurs when using any robotic arm. Is there any way to make the robotic arm move in a straight path? Is there a specific robotic arm that moves in straight lines rather than curved lines?

Thanks for any help!

Here is the link to an example of a robotic arm picking up an object and moving in a curved path, and not a desired straight path.

• can you not use stepper motors instead of servos? they can be moved in precise and non-fixed amounts – dandavis Jun 1 '17 at 3:34
• @dandavis Are there robotic arms or similar robots that can pick up objects run by stepper motors? And don't these motors also make the robot move in a circle, which doesn't solve the problem? – Assafi Cohen-Arazi Jun 1 '17 at 3:54
• ahh, i see your question. look into CNC design. or maybe you could invent some sort of weird elbowed arm with carefully choreographed movements... – dandavis Jun 1 '17 at 4:01
• The formal term for this is "inverse kinematics" - first you model how the arm responds to the angle of each motor, then you invert it to determine the sequence of angles that will produce the path you want. If you have just a few motors you may be able to puzzle it out analytically without formal methods. – Chris Stratton Jun 1 '17 at 5:00

## 2 Answers

It requires doing some geometry. Think about how you would do that with your arm. You'd have to move more than one joint at a time. So you have to define the line you want to follow, and back calculate from each point on the line what the angles of all the joints need to be in order to put the end there. This will require a bit of trigonometry. Is that something you've studied before?

You need to learn about Inverse Kinematics.

In robotics, inverse kinematics makes use of the kinematics equations to determine the joint parameters that provide a desired position for each of the robot's end-effectors. Specification of the movement of a robot so that its end-effectors achieve the desired tasks is known as motion planning. Inverse kinematics transforms the motion plan into joint actuator trajectories for the robot.

By deciding how you want the end to move and calculating the joint positions for each point along that path you can get straight line movements, etc.