Hi, I'm using RoboDK to simulate a machine containing multiple mechanisms and robots, and design and export programs to be executed. I would like to know if it's possible to set a (Mecademic 500) robot to a "slowmotion" mode to do a *real world* test run and check for e.g. collisions before going to full speed.
An option I considered is simply scaling all Cartesian linear or joint velocities down by a factor. To exactly scale all positions with time however, the accelerations would need to be scaled the same factor squared, then also the jerk, and so on for further time derivatives (if any).
This seems like a cumbersome approach to a problem which has probably encountered many times before. Is there a recommended approach for this and which tools does RoboDK offer to implement it?
10-19-2021, 08:23 AM
(This post was last modified: 10-19-2021, 08:23 AM by Albert.)
You can check for collisions in RoboDK by right clicking on a program and selecting "Check path and collisions". This will run the program step by step and look for collisions. The collision step is 4 mm and 4 deg by default, you can define this tolerance here: Tools-Options-Motion. Scaling or growing your 3D models by 5-10 mm or more would be a good idea to safely check for collisions.
You can also run and test it using the API. You can check the whole program using the Update function or the functions MoveJ_Test and MoveL_Test for single movements.
Hi Albert, thanks for helping out, the quick replies on this forum are much appreciated.
The motion simulation with collision detection works nicely, but what I am looking for is to slow down the executed motion to verify it is as planned and no problems such as collision occur, before going full speed. Not in simulation, but in the real world.
For a single robot in a time independent ("static") environment, reducing the maximum velocity using the setSpeed command would suffice. However, since accelerations and further time derivatives come into play, this does not linearly scale positions with time. This causes trouble when multiple robots and additional axes are moving at the same time, since their motion relative to each other will not be scaled perfectly to slowmotion. Collisions could occur in full speed mode which are not foreseen when max velocities are reduced.
So, can programs designed in RoboDK be executed in a true, time scaled "slowmotion" mode?
I believe I understand what you mean now. Yes, you can set a slow simulation speed and run the simulation that runs multiple robots. You can enter the simulation speed here:
Or by moving the simulation speed slider in the toolbar.
You are right regarding the fact that the "Check path and collisions" option does not check movements with multiple robots (it ignores starting threads) so you should simulate programs by double clicking on them (this properly simulates accelerations and cycle time).
However, this may take a long time because you may be checking for collisions on points that are very close to each other. This script can help you map the joint axes vs. time somehow accurately:
You could therefore skip checking for collisions.
Also, these 2 scripts can help you accomplish similar things: