Hello to all,
I've seen that similar questions were discussed earlier, so I hope there is someone here who can help me understand why there is a difference between calculation of the TCP using DH parameters presented here:
Understanding DH Parameters using KUKA KR5 Arc Industrial Robot
When I load this robot in RoboDK and perform axis jog for these joint angle values, I get different result even though the first component X is the same (scaled to mm from meters).
I used the following py script from robotics toolbox to do calculation:
I've seen that similar questions were discussed earlier, so I hope there is someone here who can help me understand why there is a difference between calculation of the TCP using DH parameters presented here:
Understanding DH Parameters using KUKA KR5 Arc Industrial Robot
When I load this robot in RoboDK and perform axis jog for these joint angle values, I get different result even though the first component X is the same (scaled to mm from meters).
I used the following py script from robotics toolbox to do calculation:
Code:
import roboticstoolbox as rtb
from spatialmath import SE3
import numpy as np
# Conversion factor from mm to meters
mm = 0.001
# -------------------------------# Define KUKA KR5 ARC DH parameters
# Link format: RevoluteDH(d=..., a=..., alpha=..., offset=deltatheta)
link1 = rtb.RevoluteDH(d=400*mm, a=180*mm, alpha=np.pi/2, offset=0)
link2 = rtb.RevoluteDH(d=0, a=600*mm, alpha=0, offset=0)
link3 = rtb.RevoluteDH(d=0, a=120*mm, alpha=np.pi/2, offset=0)
link4 = rtb.RevoluteDH(d=620*mm, a=0*mm, alpha=np.pi/2, offset=0)
link5 = rtb.RevoluteDH(d=0, a=0, alpha=np.pi/2, offset=0)
link6 = rtb.RevoluteDH(d=115*mm, a=0, alpha=0, offset=0)
kuka_robot = rtb.DHRobot([link1, link2, link3, link4, link5, link6], name="KR5_Arc")
q_raw = [0, -np.pi/4, np.pi/2, 0, np.pi/4, 0]
q = [
q_raw[0],
q_raw[1],
q_raw[2],
q_raw[3],
q_raw[4],
q_raw[5]
]
# Forward kinematics
T = kuka_robot.fkine(q)
print("End-effector pose:")
print(T)
print("This is from RoboDK")
T = SE3.Trans(1127.523, 0, 355.711) * SE3.Rz(-180, unit='deg') * SE3.Rx(180, unit='deg')
print(T)