RobotStudio event

PC SDK 5.13: Execute single RAPID command

Hi all,

I want to use the PC SDK to move an IRB 120 to a position (specified by axes positions).
Did I get it right, that the only way to do so, is to create a small RAPID program and transfer it to the controller? Or can I execute a single RAPID command directly?
Or is there any other (more straightforward) way to move the robot from PC SDK?

Best regards,
Achim


Comments



  • Hi Achim,
     
    you can create the RAPID program in advance, which you start with PC SDK, and then update a jointtarget data from PC SDK.
     
    The program would run in a loop like
    WHILE TRUE DO
    MoveAbsJ myJointtarget....;
    ENDWHILE
     
    It can be stopped again using PC SDK.
     
    I have not tried this myself so it is just an idea. Anyone else on the forum that have done something similar?
     
    You can also use the Messaging class in PC SDK to send information to the RAPID program, like joint values or other things.
     
    I would try option 1 first.
     
    I have seen several people asking for this function in PC SDK. I'm a bit interested in the usage scenario. Do you mind share something about it here, or otherwise you can send a PM, if you like.

    Best Regards, Niklas Skoglund
    ABB Robotics

    Developer Center
    RobotStudio Blog
  • Hi Niklas,

    thank you for your reply. We are working on a research project in which a kinect sensor recognizes a scene and the software shell command the robot arm to grab objects in the scene. That's why i'm trying to avoid "hard-coded" RAPID programs. I'm new to PC SDK, so I wondered if there isn't some kind of command like SetPosition() (analog to the MechanicalUnit's GetPosition()).




  • Hi Achim,
     
    unfortunately there is no SetPosition(). The RAPID code does not need to be exactly hard coded with regards to the position. ABBs product PickMaster 3 for example is implemented using a static pice of RAPID (its a lot of code since it is a complex thing it does, but anyway) which extremely simplifed could be seen as an infinite loop where new position/robtarget data is aquired from the vision system and put on a queue. The infinite loop pops positions from the queue. As long as there is something on the queue the robot moves.
     
    So the RAPID code is hardcoded, but not the actual position. 
     
    I will leave for vacation today so I'll not be able to assist you for some time. Hope you get more help from other users.
     
    Hints: Check the PC SDK Application Manual / API Reference for:
    * starting/stopping RAPID execution
    * loading RAPID module
    * writing to a RAPID data (variable)

    Best Regards, Niklas Skoglund
    ABB Robotics

    Developer Center
    RobotStudio Blog
  • Hi,
    I can suggest a similar method.
    You can write a simple rapid code that sets and waits for inputs and between them goes to a robtarget. Such that:

    WaitDI di1, 1;
    MoveL myrobtarget, v1000, z10, tool0;
    WaitRob InPos;
    PulseDO do1;

    You can listen the input do1 in a different thread then when the new position ready you can change the variable "myrobtarget" and set the input di1. This will make the robot move to new target in each time.

    You can load this rapid code from pc to controller and start it.
    So the position is not hard coded,and the rapid code is only a few lines.