The objective of this tutorial is to be able to create a behaviour for the Robulab described using Live Robot Programming. The LRP program transparently uses PhaROS to communicate with the Robulab.

Let’s do it step by step

  1. Follow the instructions to have Robulab working specified in this tutorial.
  2. Open the image you created on the previous step and download the LRP code1

    Gofer it
        smalltalkhubUser: 'jfabry' project: 'LiveRobotProgramming';
        configuration;
        loadDevelopment
    
  3. Download the code with the example by executing the following snippet on a workspace:

    Gofer new smalltalkhubUser: 'mcamp'
        project: 'RobotExperiments';
        package: 'LrpharosPackage';
        load.
    
  4. Let’s check everything is ok before launching LRP UI:

    • The laptop is connected to UBNT network
    • roscore is running.
    • You have cleaned processes by executing ProcessesCleaner clean.
    • You started the driver node for kompai.
  5. Our example needs a PhaROS node subscribed to /kompai2/pose and another node publishing on /command_velocity, to do so you need to create a instance of LrpharosPackage. Due to the live feature of LRP, it needs to have an unique instance of the package (which contains the nodes).

    LrpharosPackage uniqueInstance
    
  6. Open the LRP UI by right-clicking the World and selecting ** Live Robot Programming **. It will open a window like this:

    Live Robot Programming UI

  7. Now, copy&paste the following script into the left pane (You can find it also in LrpharosPackage class>>lrpSimple)

    (var robulab := [LrpharosPackage uniqueInstance])
    (var stop := [0])
    (machine simple
        (state forward
            (onentry [robulab value forward: 0.1])
        )
        (state stop
            (onentry [robulab value stop])
        )
        (state finish
            (onentry [robulab value stop])
        )
    
        (on forceStop *-> finish t-finish)
        (event forceStop [stop value = 1])
    
        (ontime 2000 forward -> stop t-f)
        (ontime 1000 stop -> forward t-s)
    )
    

    It should look something like this

    Forward-Stop machine

  8. Now we are almost close to launch the script. Before that you should be aware to have ways to stop it in an emergency case: have a remote joystick or just switch it off.

  9. To trigger it add the following line at the end of the script:

    (spawn simple forward)
    

    Et voilà! The robot will start moving forward and then stop as the two steps.

  10. An alternatively way to stop the robot using the LRP UI is by setting the stop variable to 1 in the ** Variables: ** pane.

    Stop the robot by setting stop variable

  11. After stopping the robot, if you want to re-start it you have to click Reset Int. button in the bottom of the left pane.

Any question? Feel free to ask below.

NOTES

  1. LRP uses Roassal visualization engine for displaying the machines, states and transitions. After LRP is installed, you should run do a few simple steps in order to avoid a small-but-hard-to-solve bug related to fonts. You can fix it in less than 1 minute following the instructions here.

  2. Each time you need to clean the proccesses through ProcessesCleaner clean, the LRP process is terminated. Then you have to close the window after doing it.

  3. Everytime you create a kompai node (through PureROS new scriptKompai1 or scriptKompai2) you should then reset the LRP singleton by executing:

    LrpharosPackage reset.
    

    This way the LrpharosPackage instance will be bound to the correct kompai node.

Leave a reply

required

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>