You write down the kinematics of your robot as a series of simple transforms, translations and rotations. In MATLAB this would be:
>> s = 'Rz(q1) Tz(L1) Tx(L2) Ry(q2) Tz(L3) Ry(q3) Tz(L4) Tx(L5) Rx(q4) Tx(L6) Ry(q5) Tx(L7) Rx(q6)';
in words: rotate about the z-axis by q1, translate in the z-direction by L1, translate in the x-direction by L2, rotate about the y-axis by q2 etc. Note that q2, q3 and q5 have the opposite rotation sense to your diagram because my tool can't express a rotation about the negative y-axis.
Then this string can be factorised into DH parameters terms using the Robotics Toolbox for MATLAB:
>> DHFactor(s)
DH(q1, L1, L2, -90).DH(q2+90, 0, -L3, 0).DH(q3, 0, -L4, 90).DH(q4, L6+L5, 0, -90).DH(q5+180, 0, 0, 90).DH(q6+90, L7, 0, -90).Rz(-90)
In DHFactor, parseString is done
ans =
DH(q1, L1, L2, -90).DH(q2+90, 0, -L3, 0).DH(q3, 0, -L4, 90).DH(q4, L6+L5, 0, -90).DH(q5+180, 0, 0, 90).DH(q6+90, L7, 0, -90).Rz(-90)
and the result is a series of Denavit-Hartenberg terms, different to yours because of the y-axis direction. Note also there is a constant rotation, a tool transform, at the end of the sequence.
You could create a robot model by first defining the symbolic lengths then creating a SerialLink
robot object
>> L1=1.33; L2=0.4; L3=1.1; L4=0.23; L5=0.766; L6=0.344; L7=0.244;
>> r = eval( dh.command('myrobot') )
r =
myrobot:: 6 axis, RRRRRR, stdDH, fastRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 1.33| 0.4| -1.5708| 0|
| 2| q2| 0| -1.1| 0| 1.5708|
| 3| q3| 0| -0.23| 1.5708| 0|
| 4| q4| 1.11| 0| -1.5708| 0|
| 5| q5| 0| 0| 1.5708| 3.14159|
| 6| q6| 0.244| 0| -1.5708| 1.5708|
+---+-----------+-----------+-----------+-----------+-----------+
tool: t = (0, 0, 0), RPY/xyz = (-90, 0, 0) deg
and then compute the forward kinematics for zero joint angles
>> r.fkine([0 0 0 0 0 0])
ans =
-1 0 0 1.266
0 1 0 0
0 0 -1 2.66
0 0 0 1
and plot it as a stick figure
>> r.plot([0 0 0 0 0 0])
--
Peter Corke,
developer of Robotics Toolbox for MATLAB