You are on page 1of 55

Instructor: Dr.

Numan Khurshid
➢Developed a general theory to describe an articulated
sequence of joints.
➢Each joint in the robot is described by four parameters.
➢Only applicable to serial link mechanisms NOT parallel
mechanisms
• Z-axisaligns with joint axis
• Frame origin is where a, the perpendicular intersects the
joint axis
• X-axis points along link length a
➢Single transformation that relates frame {N} to frame {0}
➢Section 3.7 of Introduction to Robotics (Craig)
➢Robot configuration is described by a vector of
generalized coordinates
➢Coordinate is
➢Angle in case of revolute joints
➢Length in case of prismatic joints

Space of all
Joint Number of
Joint possible
Configuration Joints
Coordinate Configurations
➢The space of all possible end-effector poses

Space of all
possible end-
effector poses

➢In 2D

➢In 3D
➢Robots degree of freedom (number of joints)
➢Task space degrees of freedom

➢To reach all of the task space


Configuration
String?
➢Definition: Set of all possible points a robot can reach.

Courtesy Peter Corke


*DH Table completely
defines the kinematics of
the robot
dh = [ 0 0 1 0;
0010]
% each row corresponds to one row of DH
table i.e theta, d, a and alpha parameters of
each joint

r = SerialLink(dh)
r.tool
r.gravity
r.base
dh = [ 0 0 1 0;
0010]
% each row corresponds to one row of DH
table i.e. theta, d, a and alpha parameters of
each joint

r = SerialLink(dh)
r.tool
r.gravity
r.base

r.plot([0.2 0.3])
r.teach

r.fkine([0.2 0.3])
%returns the pose of end-effector
mdl_puma560
p560

p560.plot(qz)
p560.plot(qr)
p560.teach
p560.fkine ([0.1 0.2 0.3 0.4 0.5 0.6])
➢Forward Kinematics: How to compute the pose of the
end-effector?
➢How to determining DH parameters?
➢Inverse Kinematics: How to compute the position of
each joint given the end-effector pose?
➢How to generate smooth paths/trajectories for the end-
effector?
➢What joint angles to set to achieve a certain end-
effector pose.
*We need to find
angle alpha so we
apply cosine rule
Inverse Kinematic Solution
After applying sum of a angle identities and
substituting cosq2 by C2 and sinq2 by S2
Trigonometric Solution:

https://mathworld.wolfram.com/HarmonicAdditionTheorem.html
➢We look at a 6-DOF puma robot
mdl_puma560
p560.plot(qz)
T=transl(0.6, 0.1, 0)*rpy2tr(0, 180, 0, 'deg');
%to superimpose the desired impose in
current figure
hold on
trplot(T)
mdl_puma560
p560.plot(qz)
T=transl(0.6, 0.1, 0)*rpy2tr(0, 180, 0, 'deg');
%to superimpose the desired impose in
current figure
hold on
trplot(T)

%lets find the joint angles for desired pose

q = p560.ikine6s(T)

p560.plot(q)
%left and right hand configuration
p560.plot3d(q) %default left handed configuration

%For right handed configuration


q=p560.ikine6s(T,'r')
p560.plot3d(q)
➢Multiple possible configurations
➢Left/right handed
➢Elbow up/down
➢Wrist position
➢A characteristic of inverse kinematics is that there is
often more than one solution, that is, more than one set
of joint angles gives exactly the same end-effector pose.
➢The end point remains the same whereas joint angles
need to adjust themselves
➢How robot move from one configuration to other? Or
more specifically can we compute the trajectory for
configuration change?
➢Example case from left handed configuration to right
hand configuration or vice versa.
mdl_puma560
T=transl(0.6, 0.1, 0)*rpy2tr(0, 180, 0, 'deg');

%joint angles required for the pose in left


hand configuration
ql= p560.ikine6s(T, 'l')
qr= p560.ikine6s(T, 'r')

p560.plot(ql)
p560.plot(qr)
tg = jtraj(qz, ql, 50);
%to look at the configuration change while
moving from zero configuration to left handed
configuration
p560.plot(tg)

tg = jtraj(qz, qr, 50);


%to look at the configuration change while
moving from zero configuration to right
handed configuration
p560.plot(tg)

tg = jtraj(ql, qr, 50);


%to look at the configuration change while
moving from left handed configuration to right
handed configuration
p560.plot(tg)
➢Analytical Solution
➢Pros?
➢Cons?
➢What is the alternative and when we need it?
➢Numerical Solution
➢We can derive the forward kinematics of a Robot

➢In IK problem, we know the desired pose


➢To find q, we adjust q until
➢This is formally achieved through optimization
mdl_planar2
p2.plot(qz)
T=transl(1,1,0)

q=p2.ikine(T, [0 0], 'mask',[1 1 0 0 0 0])


% Input Arguments > desired pose,
initial conditions and mask vector

p2.plot(q)
mdl_puma560
p560.plot(qz)
T2=transl(0.6,0.2,0)

hold on
trplot(T2)
q=p560.ikine(T2,'q0',[0 0 0 0 0
0],'rlimit',1000,'ilimit',1000,'mask', [1 1 1 0 0
0])
➢Problems
➢Initial joint coordinates is critical
➢No knowledge about a particular robot configuration
➢Computationally expensive
➢Reach-ability?
➢Singularity:
➢Loss of degree of freedom
➢End-Effector is not capable of adopting particular
orientations
➢Robots with high degree of freedom

*A highly redundant robot with


100 joints has large
configuration space

What is configuration space of Puma


Robot?
Inverse Kinematics problem?

You might also like