<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
 </head><body style="">
 
 
  <div>
   &#62; I think introducing conceptional good solutions would be much helpful 
   <br/>&#62; for the usage of the framework (especially for newcomers)
   <br/>&#62; I know each projects has also its individual, harsh requirements, most 
   <br/>&#62; solutions are also developed under big time pressure due
   <br/>&#62; to some milestones and generalizing in robotics is sometimes not very easy.
  </div> 
  <div>
   The reason why there are varying solution is IMO also historical. There was already a lot of code in the iMoby controller when the task scripting arrived, which is why we did not use too much of it. In general, I am pretty confident that the task scripting + state machines could cover almost all our current use cases.
  </div> 
  <div>
   <br/>&#62; (AVALON 2012) For the last SAUC-E i&#39;ve introduced a new abstraction 
   <br/>&#62; where a state machine is modelled with a ruby DSL that setted up
   <br/>&#62; the task relations for the user automatically. It&#39;s usage was very 
   <br/>&#62; limited and its design probably violates some concepts behind the roby 
   <br/>&#62; mechanism. But it
   <br/>&#62; did its job and provided the advantage, a mission could be changed by 
   <br/>&#62; members without a deep knowledge of the planning system.
  </div> 
  <div>
   I am pretty sure that the DSL you have written is not as bad as you make it sound ;-).
  </div> 
  <div>
   &#160;
  </div> 
  <div>
   Scripts &#34;learned&#34; more high-level capabilities just before I left for parental leave (which is why it did not get advertised). Namely, one can do
  </div> 
  <div>
   &#160;
  </div> 
  <div>
   &#160; # Start the required subsystem and wait for it to be running.
  </div> 
  <div>
   &#160; start(Cmp::Localization.use(...))
  </div> 
  <div>
   &#160; # Start the required subsystem and wait for it to end
  </div> 
  <div>
   &#160; run(Cmp::Localization.use(...))
  </div> 
  <div>
   &#160;
  </div> 
  <div>
   In conjunction with script_in_state (documented at the bottom of http://rock-robotics.org/master/api/tools/roby/building_plans/tasks.html), it already gives a pretty high-level view of a plan. How does what you did relate to that ? Actually, could you send a snippet of avalon code using your DSL ?
  </div> 
  <div>
   <br/>&#62; (RIMRES) currently embeds its code directly into its compositions 
   <br/>&#62; definition and uses the mechanism for &#34;refine_running_state&#34; to model
   <br/>&#62; behaviour switches. Each task is directly encoded in a &#34;poll_in_state&#34; 
   <br/>&#62; which bloats the compositions massively. State Machine transitions are
   <br/>&#62; often triggered by external RobyTasks that emits the relevant events. 
   <br/>&#62; (Thats also my current point i would like to refactor)
  </div> 
  <div>
   As far as I remember discussing the RIMRES structure in one of our roby meetings, one issue with RIMRES is that high-level tasks often represent multiple services / multiple processes. This might also be a reason why it gets so bloated.
  </div> 
  <div>
   <br/>&#62; (IMOBY) I&#39;ve read a little the Roby API about its common components and 
   <br/>&#62; looked afterwars into some files for imoby. I think it maps at best
   <br/>&#62; the description of the API where behaviours are encapsled in RobyTasks 
   <br/>&#62; (which represents Activities of a Robot) and the sequencing is
   <br/>&#62; controlled through the Planner Interface.
  </div> 
  <div>
   In general, I feel that the code in iMoby is not as well structured as you make it sound ;-) Especially in the iMoby exploration case where a lot of coordination got encoded in task code.
  </div> 
  <div>
   <br/>&#62; Sorry, if i mixed up intensively some terminology. I hope you can follow 
   <br/>&#62; this example without knowing the source code and see my points.
   <br/>&#62; 
   <br/>&#62; I guess, for the future there will be also much more complex szenarios 
   <br/>&#62; which would also prophibit from common patterns.
   <br/>&#62; Especially, when more projects are aiming and coping with reactive- and 
   <br/>&#62; behaviour-driven control architectures (*winks_to_Jan*) and try to map this
   <br/>&#62; requirements to the Roby API.
  </div> 
  <div>
   Thanks for this great email ! We should definitely start meeting again and discuss these things !
  </div> 
  <div>
   &#160;
  </div> 
  <div>
   Sylvain
  </div>
 
</body></html>