top of page

Path Planning for Baxter Arm using MATLAB

Solo Project

Problem Statement

The objective of this project was to create a motion plan for the Baxter robotic arm. The challenge presented was to ensure the arm could efficiently transport a glass of water from an initial position to a terminal location while maintaining the end effector's orientation throughout the trajectory. This movement should also be strictly horizontal.


The 7-DOF (Degrees of Freedom) kinematically redundant Baxter robotic arm provide a big challenge, distinguish it from its 6-DOF counterparts. Traditional methodologies, such as Paden-Khan subproblem approach fall short in the context of the IK problem for 7-DOF Baxter arm due to the link offsets between joints and task-space constraints during movement.


Given the intricacies, I adopted a Point-to-Point path planning Task space-based motion planning technique. This was synergized with the screw linear interpolation and pseudoinverse of the Jacobian, facilitating iterative calculations bridging Task space with Joint Space.

Baxter Left Arm
Reference Configuration

The axis joint and the DH parameters for the Baxter's left arm were given and are shown below:

The axis joint angles are defined within the Baxter's body frame, illustrated below where the grey circle in the center is the body base of the Baxter robot and the left adjoining segment representing the Baxter's left arm. For simplicity, the joint axis angles are expressed within the left arm's reference frame.

The cartesian reference frames for Baxter’s left arm and the corresponding new joint angle axes (W#s) are shown below.

Point-to-Point motion planning: The Algorithm

1. Set initial and final pose of the end-effector and the joint angles based on the reference configuration, where all the joint angles are set to zero. Both ‘go’ and ‘gd 'configurations must have the same orientation where the first three columns and the rows are identical.

2. Compute dual-quaternions forms of ‘go’ and ‘gd '.

3. Compute vector forms of ‘go’ and ‘gd’ as ‘gammao’ and ‘gammad’.

4. Set Screw Linear Interpolation parameter t = 0.001 and the step size beta joint space=0.05.

5.  Use while loop to perform iteration, stop when the pose is close to the desired pose by calculating the distance in position, and the distance in orientation separately. The tolerance is set to 0.000001 and 0.001.

6. Compute the next pose using Screw Linear Interpolation with parameter ‘t’, and compute the dual-quaternion to corresponding 7x1 vector ‘gamma’.

7. Use time -discretized velocity kinematics equation with pseudo inverse Jacobian matrix to compute the approximate IK solution joint angles, and then use forward kinematics to obtain the actual end-effector pose in homogeneous matrix form g.

8. Check if the joint angles are within the joint limits. If one of the joint angles are not within its joint limit, reduce the beta parameter size.

9. Update this new pose in both vector form and dual quaternion form correspond to g.

10. Iterate repeatedly until the pose reaches to the desired pose.

Algorithm described in previous section are implemented in the MATLAB script to compute joint paths for the left Baxter arm. The path orientation constraint can be validated by comparing the orientations of resulting path poses with the desired end-effector pose. The error between the last computed pose and desired orientation is very small. The final position of the end-effector exactly matches the desired end-effector position.

Finally, the motion planning was also plotted in MATLAB using Robotics Toolbox (shown in above animation).

bottom of page