File Exchange

image thumbnail

Nonlinear Control of 3 DOF PUMA Robot

version (386 KB) by Abdel-Razzak
Nonlinear Control of 3 DOF PUMA Robot


Updated 31 Mar 2016

View License

Three different nonlinear control algorithms are used to control a three degree of freedom PUMA560 robot. These algorithms are:
Computed Torque Control, Sliding Mode and Backstepping Control.
The robot dynamics are taken from:
Brian Armstrong, Oussama Khatib & Joel Burdick , “The Explicit Dynamic Model and Inertial Parameters of the PUMA 560 Arm” , Stanford University, Artificial Intelligence Laboratory, IEEE 1986

Put the libraries lorenz3d, sfunxyz and m3dscope into your work folder of the MATLAB

Cite As

Abdel-Razzak (2020). Nonlinear Control of 3 DOF PUMA Robot (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (23)


Apologies, but it has been more than ten years since I had worked on robot manipulators. Since then, I didn't return to playing with them. However, If you want your gripper to perform a spiral or rectangular path you have to use the inverse kinematics to find the required joint values/functions. With three joints it is easy; you have to find the inverse relation between the joint values and the gripper position. You may need an outer loop controller to perform the motion. The input of the outer loop is the gripper path (cosine for x, cosine for y, and ramp for z => a helix), then comes the inverse kinematic controller that generates the desired joint values from the desired and actual gripper position. The output of the kinematic controller is the desired joint angles that are the input of the inner loop controller. This controller has the desired and actual angle values as input, and generates the required control laws for the robot to follow the required path. Thus, you have a cascaded type controller or a controller with an inner and an outer loop.

thanks you sir. but in the model you provide we use theta1,theta2 and theta3 as reference trajectories and i want to replace it with either spiral or rectangular trajectories am new to matlab can you please guide me how can i add those trajectories. many thanks

The spiral trajectory along the z-axis is a circle in the x-y plane with the z-coordinate increasing with time e.g. z = at (a is constant). So the x trajectory is a cosine, y is a sine, and z = at.

how can i give spiral trajectory as input instead of the circle input. really appreciate your work and response. thanks


I think that the problem is in the solver, you may try different solvers and run the simulation. This code was written 12 years earlier, so it is expected to have many library/function/solver/parameter problems. Try to change the solver, try to change the step size, try to change the configuration parameters. You may also make a step function-like ramp function; a ramp function with very steep slope.
Good luck,

how can we give step input instead of ramp input? it causes more error when I give step input. can you please include step input for the controller

hello, whenever I give a step input the RMS error increase, how can I give step input instead of a ramp input? any help please

Arbaz Ahmed

c x

Thanks a lot,good luck!


Dear sir
I had compute that program successful !
thx a lot.

I have another question,
have you ever do the inverse kinematic block
that if we only give desired Px,Py,Pz ,then
we could get the angle for each joint.



Dear Mr. Balaji,
Everything should be included inside the file. any initial values/assumptions are given in the programs.

Good luck,

A. Merheb

Dear sir,
I need the initial values for sfunxyz

hello sir Abderrazak-Thank you for your help on the site; I am doing a project on the neuron-fuzzy comande a puma 560 robot and I need your help to make the robot 3 degree of freedom if you can please


Dear Mr. Muzaffar,
I think that you have to make some changes in the "configuration parameters" [in simulink, go to Simulation (left upper side of the screen) --> configuration parameters]. Perhaps you have to make some changes in the "solver" part (only expecting but I don't know exactly the problem). Is the MATLAB installed completely???

Good luck


Mr. Abdel, i have this error while i run the simulation :
The specified configuration type is missing. The tools for the
configuration might not be installed.
'nmake' is not recognized as an internal or external command,
operable program or batch file




Thank's a lot, :-)

dear Abdel-razzak,
I am doing and thesis on "Neural-fuzzy control for the robotic manipulator".could you help me to do this.
could you please make program and simulink model for this and please send to me on my E-mail
i shall be highly thankfull to you.
you can see this topic on IEEE Explorer site.


The program with the given libraries is working well, I have tested it on other computers. Perhaps it's the MATLAB version or may be other things.


Still the same error. You should do proper testing before publishing your work.


Thanks Mr. Stefan
I have added the libraries, I hope the program will work now; please inform me.


A library is missing, so the model isn't running:

Failed to find library 'aerolibutil' referenced by 'sliding_mode_control/3-Link PUMA Robot-Block 2/I matrix/B matrix/b112/SinCos(2*teta2+teta3)'. This library must be on your MATLAB path.


BSD license update

The famous 'aerolibutil' library is added finally, along with some documents about the 3 dof PUMA 560 Robot

some libraries were missing... I added them

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux

PUMA nonlinear control/