Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
research:software:lrp [2016/12/21 16:10]
jfabry [Advanced Features]
research:software:lrp [2018/04/02 18:51] (current)
mcampusa
Line 7: Line 7:
  
 We all like videos of robots, right? Here are some of LRP on a few different robots for your viewing pleasure. We all like videos of robots, right? Here are some of LRP on a few different robots for your viewing pleasure.
-  * [[https://​www.youtube.com/​watch?​v=fl21wsb_a3c|{{https://​www.youtube.com/​yt/​brand/​media/​image/​YouTube-icon-full_color.png?​25}}]] [[https://​www.youtube.com/​watch?​v=fl21wsb_a3c|How does a PR2 move through a door with LRP]]? (This uses ROS to control the robot.) +  * [[https://​www.youtube.com/​watch?​v=2bKEEVfuMic|Moving the Duckiebot platform using LRP]] (This uses ROS to control the robot.) 
-  * [[https://​www.youtube.com/​watch?​v=ENmuGU4gBh4|{{https://​www.youtube.com/​yt/​brand/​media/​image/​YouTube-icon-full_color.png?​25}}]] ​[[https://​www.youtube.com/​watch?​v=ENmuGU4gBh4|Flying a Parrot AR.Drone 2]], using AR tags. (This uses the Parrot API to control the drone.) +  * [[https://​www.youtube.com/​watch?​v=fl21wsb_a3c|How does a PR2 move through a door with LRP]]? (This uses ROS to control the robot.) 
-  * [[https://​www.youtube.com/​watch?​v=q1jGDtaW41U|{{https://​www.youtube.com/​yt/​brand/​media/​image/​YouTube-icon-full_color.png?​25}}]] ​[[https://​www.youtube.com/​watch?​v=q1jGDtaW41U|Making a NAO robot follow a ball]]. (This uses the NAO API to control the robot.) +  * [[https://​www.youtube.com/​watch?​v=ENmuGU4gBh4|Flying a Parrot AR.Drone 2]], using AR tags. (This uses the Parrot API to control the drone.) 
-  * [[https://​www.youtube.com/​watch?​v=rtSKH-FBbzA|{{https://​www.youtube.com/​yt/​brand/​media/​image/​YouTube-icon-full_color.png?​25}}]] ​[[https://​www.youtube.com/​watch?​v=rtSKH-FBbzA|PR2 pick and place interaction with speech control]]. (This uses ROS to control the robot.)+  * [[https://​www.youtube.com/​watch?​v=q1jGDtaW41U|Making a NAO robot follow a ball]]. (This uses the NAO API to control the robot.) 
 +  * [[https://​www.youtube.com/​watch?​v=rtSKH-FBbzA|PR2 pick and place interaction with speech control]]. (This uses ROS to control the robot.)
  
 **NEWS**: **NEWS**:
 +  * Miguel presented LRP at the [[https://​jpsandoval.github.io/​sla2017/​|Cochabamba Summer School 2017]], at the Universidad Mayor the San Simón, Cochabamba, Bolivia.
   * [[http://​pharo.org/​news/​AR.Drone|Parrot AR.Drone 2 support is finished!]]   * [[http://​pharo.org/​news/​AR.Drone|Parrot AR.Drone 2 support is finished!]]
   * [[http://​pharo.org/​news/​Nao-robot|A first version of NAO support is out!]]   * [[http://​pharo.org/​news/​Nao-robot|A first version of NAO support is out!]]
Line 212: Line 214:
 In a nested machine it is possible to define transitions that go to a state of the parent machine, effectively exiting the nested machine. Such transitions are like normal transactions,​ except that their keyword is ''​exit''​ and the destination state should be a state of the parent machine. Note that exit transitions are in fact syntactic sugar. In a nested machine it is possible to define transitions that go to a state of the parent machine, effectively exiting the nested machine. Such transitions are like normal transactions,​ except that their keyword is ''​exit''​ and the destination state should be a state of the parent machine. Note that exit transitions are in fact syntactic sugar.
  
-A simple example is as follows:+A simple example is as follows. As soon as the ''​out''​ variable is set to ''​true'',​ the nested machine is exit.
 <​code>​ <​code>​
 (machine root (machine root
Line 224: Line 226:
  )  )
  (state two)  (state two)
- (ontime 1000 two->​one) 
 ) )
 (spawn root one) (spawn root one)
Line 231: Line 232:
 === Eventless transitions === === Eventless transitions ===
  
-It can become tedious for transitions to need an event as a trigger, since it requires the definition of a separate ​event. This happens ​especially ​if the transition is the only that references that event. To ease this tedium, transitions also accept a block instead of an event name. This block should return true for the transition to trigger. ​+It can become tedious for transitions to need an event as a trigger, since it requires the definition of an event as a separate ​statement. This is especially ​tedious when the transition is the only that references that event. To ease this tedium, transitions also accept a block instead of an event name. This block should return true for the transition to trigger. ​
  
-Eventless transitions are in fact syntactic sugar: an event is generated and added to the machine, with as action block the block that was specified, and the transition then refers to that event.+Eventless transitions are in fact syntactic sugar: an event is generated and added to the machine, with as action block the block that was specified ​in the transition, and the transition ​instead ​then refers to that event.
  
-=== User interface: ​Jump to and Transition ​to ===+=== User interface: ​Transition ​to and Jump to ===
  
 +The LRP user interface allows for the user to force a machine in a given state. By right-clicking on a state in the visualisation a menu appears, with the option to ''​transition to''​ or ''​jump to''​. The former acts as if a transition is added from the currently active state to the selected state, and this transition is removed immediately after it is taken. The latter also transitions to the given state, however **without** running the ''​onexit''​ and ''​onentry''​ actions of all affected states. (Recall that if a state has a nested machine, its active state ''​onexit''​ actions are normally also executed.)
  
 +Transition to and jump to also combine with concurrency (see above for concurrency):​ if this machine and none of its parents is running, the machine is spawned as a top-level spawn. If it (or its parents) is running, the active state of that running machine is considered as the state from which the transition or jump starts. ​
 ==== Downloads ==== ==== Downloads ====
  
Line 279: Line 282:
  
 Next time the LRP interpreter is opened the ROS bridge UI will open, asking for the name of the class that represents the current package. ​ Next time the LRP interpreter is opened the ROS bridge UI will open, asking for the name of the class that represents the current package. ​
 +
 +If you have problems installing PhaROS, you can bypass the main installation by downloading only the PhaROS API for Pharo.
 +  Gofer it
 +    smalltalkhubUser:​ '​CAR'​ project: '​PhaROS';​
 +    configuration;​
 +    load
 +
 +After installing PhaROS, you can install the LRP ROS bridge (see above).
  
 === Parrot AR.Drone Support === === Parrot AR.Drone Support ===