Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Speed of MoveL_Test

#11
If you have collision check properly disabled you should not see the collision check time in the standard output/debug output. So, somewhere in the code you must be activating it or you may have another instance connecting to the API and doing other things.

I was able to run the following code without issues and getting constant timings.

Code:
   RDK = new RoboDK();
   RDK->Connected();

   RDK->setCollisionActive(false);
   RDK->Render(false);


   //station = RDK->AddFile("Sim Robot.rdk"));
   Item robot = RDK->getItem("", RoboDK::ITEM_TYPE_ROBOT);

   Mat pose1 = RDK->getItem("Take").Pose();
   Mat pose2 = RDK->getItem("Out").Pose();

   tJoints home = robot.JointsHome();
   Mat toolTCP = robot.PoseTool();
   Mat robot2ref = robot.PoseFrame();



   // Test reachable
   for (int i=0; i<1000; i++){
       tJoints start = robot.SolveIK(pose1, home, &toolTCP, &robot2ref);
       if (start.Length() != 6) { return; }
       tJoints end = robot.SolveIK(pose2, home, &toolTCP, &robot2ref);
       if (end.Length() != 6) { return; }

       // Simulate MoveL
       auto res = robot.MoveL_Test(start, pose2);
       qDebug() << res;
   }
#12
I have the same code, collision deactivated, render deactivated. I only have one instance, I only use RoboDK when my Robot check for the next position, the debug output doesn't show anything if I don't ask to check the next position, so everything act as is it supposed to.

What timing should I expect to check a MoveL position without collision ?
#13
I did more testing to see if the RDK->setCollisionActive(false) truly worked. I do have some differences when I activate it or not (subtle differences). I modify my program to test the exact same movement every time and check the differencies:
With collision ON: time between 100 - 110 ms (for one short movement) 
With collision OFF: time between 160 - 180 ms (for the same one short movement)

In the console of RoboDK, there is also a difference:


With Collision OFF: 

Code:
Running API Command:  "CollisionMoveL"
MoveL Test: Started ...
MoveL Test: Linear Movement is possible. Checking collisions...
Collision check started...
Collision check time:  2  ms. Collisions:  0     Average:  1  ms
Collision check started...
Collision check time:  2  ms. Collisions:  0     Average:  1  ms
MoveL Test: Done! No collision found. Tested Times:  50
Updating positions and rendering...
No 3D window to render
Done with API Command:  "CollisionMoveL"

With Collision ON:

Code:
Running API Command:  "CollisionMoveL"
MoveL Test: Started ...
MoveL Test: Linear Movement is possible. Checking collisions...
Collision check started...
Collision check time:  1  ms. Collisions:  0     Average:  1  ms
Collision check started...
Collision check time:  2  ms. Collisions:  0     Average:  1  ms
Collision check started...
Collision check time:  2  ms. Collisions:  0     Average:  1  ms
Collision check started...
Collision check time:  2  ms. Collisions:  0     Average:  1  ms
Collision check started...
Collision check time:  1  ms. Collisions:  0     Average:  1  ms
MoveL Test: Done! No collision found. Tested Times:  50
Updating positions and rendering...
No 3D window to render
Done with API Command:  "CollisionMoveL"

So it seems that RoboDK is testing 5 set of collision with COLLISION_ON, and 2 with COLLISION_OFF.
If I only want the singularity / axis limit check, No collision at all, not even the robot with himself, nothing. How can I set that ? I know that the singularity checking is faster, since when it detect a singularity it takes a few ms.

PS: If I let my program send RDK->Render(false) with no UI, RoboDK crash
#14
Is there an update on this problem ? It's been a month
  




Users browsing this thread:
1 Guest(s)