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
- Follow the instructions to have Robulab working specified in this tutorial.
-
Open the image you created on the previous step and download the LRP code1
Gofer it smalltalkhubUser: 'jfabry' project: 'LiveRobotProgramming'; configuration; loadDevelopment
-
Download the code with the example by executing the following snippet on a workspace:
Gofer new smalltalkhubUser: 'mcamp' project: 'RobotExperiments'; package: 'LrpharosPackage'; load.
-
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.
-
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 ofLrpharosPackage
. Due to the live feature of LRP, it needs to have an unique instance of the package (which contains the nodes).LrpharosPackage uniqueInstance
-
Open the LRP UI by right-clicking the World and selecting ** Live Robot Programming **. It will open a window like this:
-
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
-
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.
-
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.
-
An alternatively way to stop the robot using the LRP UI is by setting the
stop
variable to 1 in the ** Variables: ** pane. -
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
-
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.
-
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. -
Everytime you create a kompai node (through
PureROS new scriptKompai1
orscriptKompai2
) you should then reset the LRP singleton by executing:LrpharosPackage reset.
This way the LrpharosPackage instance will be bound to the correct kompai node.