This is a project for controlling a fully-actuated robot arm with six degrees of freedom (DOF). The manipulator is a PUMA 560 with six rotoidal joints. The manipulator's description and Denavit-Hartenberg table are based on [1], and the regression matrix was computed using [2].
Prerequisites • Use • Presentation • Sample Images
The project includes several control aspects, including inverse kinematic control, dynamic control, and adaptive control. The following is a list of the simulations and techniques included in the project:
- Gradient descent method for posture control
- Levenberg-Marquardt method for posture control and circular trajectory tracking
- Newton-Raphson method is not used due to its instability in singular configurations of the Jacobian
- Proportional-Derivative (PD) controller synthesis and simulation for pick and place task
- Computed torque controller synthesis and simulation for pick and place task and circular trajectory tracking
- Backstepping controller synthesis and simulation for pick and place task and circular trajectory tracking
- Computed torque adaptive controller synthesis and simulation for trajectory tracking using Finite Fourier Series (FFS) and parameter estimation
- Backstepping adaptive controller synthesis and simulation for trajectory tracking using FFS and parameter estimation
- Robotics Toolbox for MATLAB - a package that provides functions for the study and simulation of classical arm-type and mobile robotics
- SymPyBotics - a Python-based symbolic framework used for modeling and identifying the dynamics of robots
To use inverse kinematic (using gradient descent and Levenberg-Marquardt), proportional-derivative, computed torque control, or backstepping controllers, follow these steps:
- Edit
src/main_puma560.m
:- Choose a controller by modifying the
controller
variable:Kinematic_grad
: inverse kinematic using gradient descent methodKinematic_LevMar
: inverse kinematic using Levenberg-Marquardt methodPD
: proportional-derivativeCT
: computed torqueBS
: backstepping
- Choose a task by modifying the
task
variable:position_control
: position control (compatible withKinematic_grad
andKinematic_LevMar
)pick_and_place
: pick and place (compatible withPD
,CT
, andBS
)circular_trajectory_tracking
: circular trajectory tracking (compatible withCT
,BS
, andKinematic_LevMar
)
- Choose a controller by modifying the
- Edit
src/plot_Simulation.m
:- Set
saving_flag
to 1 if you want to save plot images - Set
title_flag
to 1 if you want to add titles to the plots - Set
threeDplot_flag
to 1 if you want to plot the robot's trajectory in 3D space - Set
image_extension
to the file format you want to use when saving the plots (iftitle_flag
is 1), e.g., 'pdf', 'png', 'jpg'. - Set
images_path
to the directory where you want to save the plot images (iftitle_flag
is 1), e.g., '/Users/username/Documents/MATLAB/puma560-control/img/' - Set
main_path
to the directory where the source code is located (iftitle_flag
is 1), e.g., '/Users/username/Documents/MATLAB/puma560-control/src/'
- Set
- Run
src/main_puma560.m
To use adaptive computed torque and adaptive backstepping controllers:
- Edit
src_adaptive/main_puma560_adaptive.m
:- Choose a controller by modifying the
controller
variable:adaptiveCT
: adaptive computed torqueadaptiveBS
: adaptive backstepping
- Choose a task by modifying the
task
variable: *position_control
: position controlsinusoidal_trajectory_tracking
: sinusoidal trajectory tracking in joint spacefinite_fourier_series_trajectory_tracking
: Finite Fourier Series (FFS) trajectory tracking in joint space
- Choose a controller by modifying the
- Edit
src_adaptive/plot_adaptive.m
:- Set
saving_flag
to 1 if you want to save plot images - Set
title_flag
to 1 if you want to add titles to the plots - Set
threeDplot_flag
to 1 if you want to plot the robot's trajectory in 3D space - Set
image_extension
to the file format you want to use when saving the plots (iftitle_flag
is 1), e.g., 'pdf', 'png', 'jpg'. - Set
images_path
to the directory where you want to save the plot images (iftitle_flag
is 1), e.g., '/Users/username/Documents/MATLAB/puma560-control/img/' - Set
main_path
to the directory where the source code is located (iftitle_flag
is 1), e.g., '/Users/username/Documents/MATLAB/puma560-control/src/'
- Set
- Run
src_adaptive/main_puma560_adaptive.m
- P. I. Corke and B. Armstrong-Helouvry "A search for consensus among model parameters reported for the PUMA 560 robot" in Proceedings of the 1994 IEEE International Conference on Robotics and Automation, 1994, pp. 1608-1613 vol.2, doi:10.1109/ROBOT.1994.351360.
- C. D. Sousa and R. Cortesao, "SageRobotics: Open Source Framework for Symbolic Computation of Robot Models" in Proceedings of the 27th Annual ACM Symposium on Applied Computing, Trento, Italy, 2012, pp. 262-267, doi:10.1145/2245276.2245329.
Some images of the PUMA 560 robot during different simulations:
- End-effector trajectory (Lissajous, inverse kinematic controller)
- End-effector trajectory
- EE translation - orientation - XY view - 3D view
- Joint trajectories
- Joint errors
- End-effector trajectory
- EE translation - orientation - XY view - 3D view
- Joint trajectories
- Joint errors