Close

First Coordinated Movements - Joint Interpolated Motion

A project log for 3D Printable Robotic Arm - ARManda

This is a 4 DOF 3D printable robotic arm that I am currently developing.

mattiasMattias 06/23/2020 at 22:030 Comments

Old: Slew Motion

The last few days I have been finding a way to make the robot travel in fluid movements. Before I was using simple slew motion for controlling each joints, meaning that after the inverse kinematics (IK) computes the desired joint angles, it would send those angles to each motor and run them all at their max speed. This works however it creates a jerky looking motion path from the end effectors perspective. 

New: Joint Interpolated Motion

After doing some research, I found that joint interpolated motion would be a better approach (the following reading helped me understand the implementation: https://www2.isye.gatech.edu/~czhou/MotionTypes.pdf). It works by making all joints of the robot start and stop at the same time. This causes the end effector to follow a smoother path, not a straight line, but more circular in nature. In practice, the controller will get the joint configuration from the IK model, then we will find which joint will travel the farthest distance - since the maximum speed of each joint is known, the longest time for each joint can be found as well:

maxIndex = findMaximum(jointTimes, JOINT_SPACE); 
maxTime  = jointTimes[maxIndex];

Now with the maximum time, the new velocity of the other joints can be found since the distance traveled is known from the IK. The full code can be found in the code repo for this in the motors.h file. (https://github.com/mAzurkovic/robotic-arm/blob/master/src/input_program.c/motors.h).

Demonstration

Here is a demo of the implemented joint interpolation controller running to a few coordinates:

As it can be seen there are still a few issues - the main one being the joint with the longest distance to travel does not stop at the same time as the rest of the joints. This is currently believed to be a mechanical issue. 

Discussions