I've been using RoboDK with Python API for a while now with KUKA Robots, and there's something that's bothering me lately... the robots take a long time between each movement, and by a long time I mean almost a 1 second pause between movements, is there something I can change for making the robot's movements smoother?
(12-11-2018, 11:37 PM)Albert Wrote: Make sure you don't have collision checking activated:
(uncheck this option)
Also, if you change some of the default settings it can alter the default behavior. I recommend you to set the default settings:
Tools-Options-Select Set Default Settings
I've made both things, but the robot still waits a lot in between movements, I was reading that this can be something about the $ADVANCE option for KUKA robots, default is 2 on RoboDK, but I have no idea if I have to set it less than 2 or bigger than 2...
Setting the $ADVANCE value to 5 should help. This is the maximum value accepted by KUKA KRC2 controllers (and KUKA KRC4 as well, I believe). This value tells the controller how far ahead the robot can look to smooth the movements and prevent speed changes (avoiding jerky movements).
Also, make sure you don't generate points that are too close to each other. For example, robots are repeatable in the 0.020-0.300 mm range. Having a step of 0.100 mm could be reasonable if you are concerned about accuracy. The robot motion should be smooth if the robot speed is not too fast.
I am new in robodk, I would like to know if robotdk has a feature similar to the one in Kuka PRC regarding the type of movements. In Kuka PRC you can choose the type of movement interpolation you desire for the path to execute, It looks like Movement interpolation by distance or by velocity
For example, if you look for the MoveL function in your post processor you can replace the PTP/LIN commands by SPTP/SLIN. You can also define custom triggers in your program to switch from one to the other. For example, if you call a program named SLIN you could intercept it in RunCode function of your post processor and for output as SLIN.
11-20-2021, 12:14 PM (This post was last modified: 11-20-2021, 01:02 PM by malek.luky.)
I am struggling with a similar issue. I am doing a 3D Printer as the final project at my uni, and I cannot figure out how to maintain the constant movement of the robot. I am parsing the values from gcode (part of the assignment), but when I move around corners using the MoveL command, it is slow, but on straight lines its speeds up rapidly. I am doing online programming using a separate Python script that communicates with RonoDK and KUKA KR 6 R700 Sixx robot.
Except for the speed issue, I have trouble with jerky movements. During the implementation of ball-tracking, I found that increasing RDK.setSimulationSpeed() solves the problem since I must ask RoboDK for the robot.Joints() coordinate to move the real robot, and having faster simulation creates more points where the robot moves, so the movement of the real robot is smoother.
Unfortunately, it is not possible in the case of 3D printing. Because I already know the track (the ball tracking was in real-time using a webcam), increasing the simulation speed results in too fast movements of the robot.
What I have tried so far:
1) I set up the linear speed and acceleration of the robot
2) I restored the settings and made sure that the collision check was unchecked
3) I turned off the blocking command of MoveL
4) I looked for the MoveP command instead of MoveL, which is used by Universal robots, but RoboDK has no movement like this
All mentioned above have not solved my issue, and I am running out of options. As it is online, I can't edit the parser to receive the desired result. The two files are attached below. Firstly open the robo_base, and then run the python script. I would be very grateful for any help.
I answered your question in the API section.
It's not the same thing if you are using the online programming feature (driver / direct connection between RDK and the robot).
You can't have fluid motion because a handshake is required between the robot and RDK at the end of each move. Therefore the robot must stop.
What you need to do is generate the program and load it on the controller.