Professional Documents
Culture Documents
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
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)
q = p560.ikine6s(T)
p560.plot(q)
%left and right hand configuration
p560.plot3d(q) %default left handed configuration
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)
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