09-22-2022, 02:14 PM
Hello,
I am experiencing problems with controlling a KUKA KR 700 PA with RoboDK. My setup and issues are listed below.
My setup:
It seems like the RoboDK model of this robot is not set up correctly. Reasons for this assumption:
Even though this robot only has 4 axes, 6 joint values are received from and sent to the controller (two of those are passive and cannot be controlled directly). Axis 4 and 5 are passive, 6 is the flange. It seems like RoboDK sets the value of axis 4 as the flange when receiving data, and the flange's value for axis 4 when sending data. To get to this conclusion, I checked the network traffic between RoboDK and the controller with WireShark.
The following behaviour could be recorded:
To avoid sending joint values to the controller, I tried to send linear move instructions. These seem to not be processed at all, since the COM_ACTION 3 signal for triggering a linear move is never sent by RoboDK to the controller (also recorded with WireShark).
To find a solution to my issues, I tried to use the KUKA driver as console tool. After copying the missing Qt5Network.dll (taken from "RoboDK\bin") to "RoboDK\api\Robot", the program gives the following error: "The application was unable to start correctly (0xc000007b)."
Unfortunately, the combination of issues 1-3 pose a severe problem for using RoboDK in this setup. I explored possible errors on my side, but was unable to find a solution. Help is very much appreciated.
I am experiencing problems with controlling a KUKA KR 700 PA with RoboDK. My setup and issues are listed below.
My setup:
- OS: Windows 10
- Version: RoboDK 5.5.1 (Professional license)
- Robot: KUKA KR 700 PA (4-axis industrial palletizer)
- Controller: KRC5
- RoboDK driver: downloaded via this post, but had to fix RoboDKsync542.src (declarations were missing, see attachment "RoboDKsync542_MODIFIED.src")
- Station: contains only the manipulator from RoboDK library, no external axis or tool (see attachment "example.rdk")
- Base and tool frame are set to [0, 0, 0, 0, 0, 0], both in RoboDK and the controller
- The robot will be controlled in real-time by the Windows-PC and RoboDK (no offline programming)
It seems like the RoboDK model of this robot is not set up correctly. Reasons for this assumption:
- When using "Get Position", the coordinates of the simulated robot differ from the actual coordinates (see attachment "get_position.jpg"). The joint angles are the same, but the position does not look the same. I am certain that our actual robot is installed correctly.
- When manually setting the actual coordinates in the simulation, the position matches the real robot, but the 3rd joint angle (A3) is different (see attachment "corrected_position.jpg").
- Sending a position from RoboDK to the robot causes either a coordinate mismatch or, in some cases, valid coordinates set in the simulation cannot be reached by the real robot. I assume this is because not the coordinates, but the joint values (containing the invalid A3 joint) from the simulation are transferred to the controller.
Even though this robot only has 4 axes, 6 joint values are received from and sent to the controller (two of those are passive and cannot be controlled directly). Axis 4 and 5 are passive, 6 is the flange. It seems like RoboDK sets the value of axis 4 as the flange when receiving data, and the flange's value for axis 4 when sending data. To get to this conclusion, I checked the network traffic between RoboDK and the controller with WireShark.
The following behaviour could be recorded:
- Get Position:
- RoboDK: requests position
- Controller: sends "{E6AXIS: A1 3.93568277, A2 -112.663696, A3 103.796738, A4 -2.35408331E-31, A5 98.8669586, A6 3.93568277, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}"
- RoboDK: sets joint values as "1: 3.93568277, 2: -112.663696, 3: 103.796738, 4: -2.35408331E-31", whereas 4 should have the value of A6 (similiar results can be seen in attachment "get_position.jpg")
- Move Joints:
- RoboDK: move joints to HOME-position (coordinates: [2020, 0, 1900, -180, 0, -189]; angles: [0, -90, 90, 0]
- RoboDK: sends MOVEJ instruction with "COM_E6AXISI{A1 0.00000,A2 -90.00000,A3 90.00000,A4 0.00000,A5 2020.00000,A6 0.00000}", where it seems like A4 has been set to joint 4, and A5 and A6 have been set to X and Y of the target coordinates (maybe previously allocated memory is used?)
- Controller: moves the robot in HOME-position despite some invalid values (other positions might not be reachable by the robot and others will have mismatched coordinates, I haven't found the exact cause for this)
To avoid sending joint values to the controller, I tried to send linear move instructions. These seem to not be processed at all, since the COM_ACTION 3 signal for triggering a linear move is never sent by RoboDK to the controller (also recorded with WireShark).
- RoboDK: run program on robot containing only linear move to HOME-position (see program "MOVEL" in .rdk-file)
- RoboDK: does not send any instruction to controller
- RoboDK: program is finished (simulated robot did not move either, but path is shown)
To find a solution to my issues, I tried to use the KUKA driver as console tool. After copying the missing Qt5Network.dll (taken from "RoboDK\bin") to "RoboDK\api\Robot", the program gives the following error: "The application was unable to start correctly (0xc000007b)."
Unfortunately, the combination of issues 1-3 pose a severe problem for using RoboDK in this setup. I explored possible errors on my side, but was unable to find a solution. Help is very much appreciated.