03-19-2020, 12:28 PM
Hello, is there a way to change the KUKA KRC2 post processor, in order to declare the joint list as seen in the first picture (with E1 being the third joint)?
For some reason the KUKA LWR IV+ i use has declared the third joint as external and expects the joints to be send in this order:
robot.MoveJ([A1, A2, A3, A4, A5, A6, E1]) with E1 being the joint value for the 3rd Joint (J3) as seen in the first picture.
However robodk sends the joint values as:
robot.MoveJ([A1, A2, A3, A4, A5, A6, E1]) with E1 being the joint value of the 7th Joint (J7) as seen in the first picture.
So far i have manually swapped the order of the joints (as seen in the code below) before sending them to KUKA, to match the simulation with the robot's real movement.
Code:
from robolink import * # RoboDK API
from robodk import * # Robot toolbox
RDK = Robolink()
robot = RDK.Item("KUKA")
pose = RDK.Item("Bottom Left")
# Move Robot on Simulation Only
RDK.setRunMode(1)
robot.MoveJ(pose)
# Move real robot
"""
Change the position of the Joints because KUKA LWR IV+ has declared the third joint as an External Joint.
KUKA LWR IV+ Joints = [A1, A2, E1, A3, A4, A5, A6] and RoboDK sends the joints as [A1, A2, A3, A4, A5, A6, E1]
"""
RDK.setRunMode(6)
tar = tr(pose.Joints())
robot.MoveJ([tar[0, 0], tar[0, 1], tar[0, 3], tar[0, 4], tar[0, 5], tar[0, 6], tar[0, 2]])
However, due to different joint limits if i swap them and the 3rd Joint has a value bigger than 7th Joint then the program exits. So I am searching for a way to manipulate the post processor in order to send them correctly to avoid joint limitations.
For some reason the KUKA LWR IV+ i use has declared the third joint as external and expects the joints to be send in this order:
robot.MoveJ([A1, A2, A3, A4, A5, A6, E1]) with E1 being the joint value for the 3rd Joint (J3) as seen in the first picture.
However robodk sends the joint values as:
robot.MoveJ([A1, A2, A3, A4, A5, A6, E1]) with E1 being the joint value of the 7th Joint (J7) as seen in the first picture.
So far i have manually swapped the order of the joints (as seen in the code below) before sending them to KUKA, to match the simulation with the robot's real movement.
Code:
from robolink import * # RoboDK API
from robodk import * # Robot toolbox
RDK = Robolink()
robot = RDK.Item("KUKA")
pose = RDK.Item("Bottom Left")
# Move Robot on Simulation Only
RDK.setRunMode(1)
robot.MoveJ(pose)
# Move real robot
"""
Change the position of the Joints because KUKA LWR IV+ has declared the third joint as an External Joint.
KUKA LWR IV+ Joints = [A1, A2, E1, A3, A4, A5, A6] and RoboDK sends the joints as [A1, A2, A3, A4, A5, A6, E1]
"""
RDK.setRunMode(6)
tar = tr(pose.Joints())
robot.MoveJ([tar[0, 0], tar[0, 1], tar[0, 3], tar[0, 4], tar[0, 5], tar[0, 6], tar[0, 2]])
However, due to different joint limits if i swap them and the 3rd Joint has a value bigger than 7th Joint then the program exits. So I am searching for a way to manipulate the post processor in order to send them correctly to avoid joint limitations.