Transcribed Text
PROJECT ON
Control of a SCARA ROBOT
1. Introduction
SCARA stands for Selective Compliant Assembly Robot Arm or Selective Compliant Articulated
Robot Arm. A SCARA robot is an assembly machine that installs parts or carries items. It is
designed to mimic the action of a human arm and can be used in jobs from automobile factories to
underwater construction. This tool is frequently utilized because of its speed, efficiency and low
cost.
Fig.1 picture of a SCARA robot: Adept Cobra s600
The SCARA robot was developed in 1981 by the manufacturing company Sankyo Seiki. SCARA
robots are primarily used for assembly. They are used by manufacturers of everything from bulky
automobiles to minuscule electronic items. It can be programmed to handle very precise
installation work and cannot carry a great deal of weight, so the arm works best when handling
small parts. These robots also can have their joints waterproofed in order to function in underwater
construction. A SCARA's ability to be controlled remotely makes it a common feature of work
sites that can be hazardous to humans, such as working with chemicals, or in environments with
extreme conditions, such as a steel mill.
In this project, you will focus on the control of a SCARA robot.
2. Dynamics Analysis
By using Lagrange method to analyze the dynamics of this mechanism, the state space model of
a SCARA robot can be simplified as
�̇(�) = ��(�) + ��(�), �(�) = ��(�)
where � = [q0 q1 �3 q0
̇ q1
̇ �3
̇ ]5, � = [t0 t1 t3]5, and � = [q0 q1 �3 ]5. Here t6s are the
torques generated at each joint. Also,
� = [� 0]3×:
Fig.2 Illustrative picture of a SCARA robot
6 6 0 0
0
´
ú
û
ù ê
ë
é = I
A
6 3
0
´
ú
û
ù
ê
ë
é = b
B
ú
ú
ú
û
ù
ê
ê
ê
ë
é


=
2
1
8
9
0 0
1 0
1 1 0
b
3. Control of the SCARA robot
Consider the robot outputs are subject to random white noises with zero mean and s=0.05. Design
MPC, LQR and an ILC approach (e.g., Ptype ILC, IIC, and MIIC) to control the robot. (Note
that you may find the robot system not stable, then you need to stabilize the system first, e.g., using
state feedback control).
Plot the control performance (output and desired) for each of the four controller (output and desired)
when the desired output is shown below, also compute the RMS control error using code
“RMS = norm(YdY)/sqrt(length(Yd))” %Yd is the desired output
For ILC approaches, plot the RMS error vs. iteration figure to show the convergence.
4. Appendix: Matlab code of desired output
% ===================================
% Genarate the desired output
% ===================================
Ts = 1e03;
Coff = 5;
Tend = 10;
T_ramp = 0:Ts:Tend/2Ts;
N_ramp = length(T_ramp);
DRatio = .5;
TFreq = Coff*2*pi/Tend;
T_Vec_y = 0:Ts:TendTs;
Yd = ((sawtooth(T_Vec_y*TFreq, DRatio)).*1+1)./2;
Yd_0 = linspace(0,0,N_ramp);
Yd1 = [Yd_0 Yd Yd_0]';
T_Vec = (0:length(Yd)1).*Ts;
% ===================================
% Genarate the desired output2
% ===================================
Yd2=sin(0.5*pi*T_Vec)’;
% ===================================
% Genarate the desired output3
% ===================================
Yd = ((sawtooth(T_Vec_y*TFreq, .5)).*1+1)./2;
Yd_0 = linspace(0,0,N_ramp);
Yd3 = [Yd_0 Yd Yd_0]';
These solutions may offer stepbystep problemsolving explanations or good writing examples that include modern styles of formatting and construction
of bibliographies out of text citations and references. Students may use these solutions for personal skillbuilding and practice.
Unethical use is strictly forbidden.
function [y, rms] = ilcController(plant_d, yd)
Ad = plant_d.A;
Bd = plant_d.B;
Cd = plant_d.C;
[r,n] = size(Cd);
Ad = stateFeedback(Ad, Bd, 0.7+(1:n)*0.01);
ntot = length(yd);
y = zeros(ntot,3);
e = y;
u = zeros(ntot,3);
niter = 50000;
rms = zeros(1, niter);
gamma = 10;
minrms = +inf;
for it = 1:niter
xt = zeros(n, 1);
for i=1:ntot
err = yd(i,:)  y(i,:);
u(i,:) = u(i,:) + gamma * err;
y(i,:) = (Cd*xt)' + randn(1,r)*0.05;
xt = Ad*xt + Bd*u(i,:)';
end
rms(it) = norm(yd  y)/sqrt(ntot);...