Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Search Linear
#1
Hi everyone,

According to the RoboDK Documentation, there's a function called "SearchL" and is described like this:


Quote:SearchL(target, blocking=True)
Moves a robot to a specific target and stops when a specific input switch is detected (“Search Linear” mode). This function waits (blocks) until the robot finishes its movements.

Parameters:
target (Mat, list of joints or Item) – Target to move to. It can be the robot joints (Nx1 or 1xN), the pose (4x4) or a target (item pointer)
blocking (bool) – Set to True to wait until the robot finished the movement (default=True). Set to false to make it a non blocking call. Tip: If set to False, use robot.Busy() to check if the robot is still moving.

I would like to know if it's possible (and how) do what it says there... move the robot until an input switch is detected. According to what I understand, the robot just moves to the target without doing anything else in the path.

Is possible to send the robot an instruction that can be stopped if, lets say, I press a button or trigger a sensor?

Thanks for your time :)
#2
Hi Nox, 

The SearchL() instruction is used to find the exact position of an object using an external sensor. 

If you take this example : 

   

Imagine that those two suction cups need to take a paper sheet on top of a pile of paper sheets. Has the day goes by, the pile of sheets go down and you don't want to teach every single position going down. So you use a SearchL() and you connect your input on the suction sensor connected with the suction cup. This input will go to TRUE if the suction cups grab something. This will then stop the linear movement of the SearchL() . 

When the input is triggered, the program simply past to the following instruction. 


So, to answer your specific question, the linear movement of a SearchL() can be stopped by a button or a sensor.
#3
The integration with your robot depends on the controller you have. Linear search requires customizing the robot driver to intercept the search movement and link the stop condition to a specific signal. You can also use a customized post processor.

What robot are you using?

For example, if you have a Fanuc robot you'll see a program called go_mls.ls (MoveL Search) as part of the robot driver setup. This program looks like this:

   1:  SKIP CONDITION DI[101]=ON    ;
   2:  IF R[51]>=0,JMP LBL[10] ;
   3:L PR[50] R[50]mm/sec FINE Skip,LBL[50]    ;
   4:  PR[52]=JPOS    ;
   5:  END ;
   6:  LBL[10] ;
   7:L PR[50] R[50]mm/sec CNT R[51] Skip,LBL[50]    ;
   8:  PR[52]=JPOS    ;
   9:  END ;
  10:  LBL[50] ;
  11:  PR[52]=PR[50]    ;

In this example, the search is stopped by the the "Skip condition" DI[101]=ON. You can modify that line to match the DI of your choice. The final position is saved in the position register PR[52]. This can also be customized.
#4
Thanks both for your answers...
I own a KUKA KR-210 robot, I'm wondering what's the input for this robot? (or where I can check this)
#5
Hi Nox,

You just have to select your robot in RoboDK. Make sure you have a suitable post processor (for example, for KUKA you have KRC2 or KRC4 post processors).

Then, the correct output suitable for your controller will be generated. The example we provided is based on a Fanuc robot.
  




Users browsing this thread:
1 Guest(s)