<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-forward-container"><br>
      <br>
      -------- Original Message --------
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th nowrap="nowrap" valign="BASELINE" align="RIGHT">Subject:
            </th>
            <td>Remote ActionInterface for Visualization</td>
          </tr>
          <tr>
            <th nowrap="nowrap" valign="BASELINE" align="RIGHT">Date: </th>
            <td>Tue, 30 Apr 2013 20:16:24 +0200</td>
          </tr>
          <tr>
            <th nowrap="nowrap" valign="BASELINE" align="RIGHT">From: </th>
            <td>Chris Mueller <a class="moz-txt-link-rfc2396E" href="mailto:christoph.mueller@dfki.de">&lt;christoph.mueller@dfki.de&gt;</a></td>
          </tr>
          <tr>
            <th nowrap="nowrap" valign="BASELINE" align="RIGHT">To: </th>
            <td>Allan E. Conquest <a class="moz-txt-link-rfc2396E" href="mailto:conquest@tzi.de">&lt;conquest@tzi.de&gt;</a>, Sylvain
              Joyeux <a class="moz-txt-link-rfc2396E" href="mailto:sylvain.joyeux@dfki.de">&lt;sylvain.joyeux@dfki.de&gt;</a></td>
          </tr>
          <tr>
            <th nowrap="nowrap" valign="BASELINE" align="RIGHT">CC: </th>
            <td>Felix Rehrmann <a class="moz-txt-link-rfc2396E" href="mailto:felix.rehrmann@dfki.de">&lt;felix.rehrmann@dfki.de&gt;</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-15">
      Hi all,<br>
      <br>
      Sorry for not reporting to you within the last weeks. I was a
      little busy with some preparation of my thesis :-). <br>
      <br>
      As you already know i'm currently evaluating roby's remote
      interface in order to provide all necessary data for Allan<br>
      to implement the Robot GUI.  I've found now some time to look more
      deeply into the roby's sources and i would like to share<br>
      you some informations (I have also some issues to discuss)<br>
      <br>
      We have currently the following use cases for the GUI:<br>
      1) Get and visualize a complete list about all available
      behaviours<br>
      2) Get and visualize a complete list of running behaviours <br>
      3) Support an Interaction-Interface to start and stop behaviours<br>
      <br>
      For Allan:<br>
      You can already completely implement Use Case (1). I've add a
      simple ruby script (with some helpful hints) which outputs<br>
      a list of all possible actions from the ActionInterface. <br>
      You can find it under the autoproj location:
      virgo/robots_viz/roby_remote_interface/roby_interface.rb<br>
      It should deliver all necessary information you need to fill your
      widgets.<br>
      <br>
      Issue (1):  <br>
      We need a mechanism to filter out the behaviour actions from the
      rest, because currently all behaviours are pure Roby::Actions. <br>
      I've done something similar for the RIMRES project, where we
      explicit marked exported actions: <br>
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-15">
      <a moz-do-not-send="true"
href="http://spacegit.dfki.uni-bremen.de/rimres/bundle-rimres/blobs/master/models/planners/rimres_main.rb">http://spacegit.dfki.uni-bremen.de/rimres/bundle-rimres/blobs/master/models/planners/rimres_main.rb</a><br>
      But I would recommend to keep this more simple and would introduce
      some convention to prefix all actions in the action interface.<br>
      (We could then filtered out behaviours by its prefixed action
      name). This would be already sufficient in my opinion.<br>
      <br>
      Use Case (2) is a little bit more complicated and needs maybe some
      refactorings like Sylvain has mentioned to me.<br>
      An interesting entrypoint for this problem is surely the following
      call:<br>
      <br>
      # remote_interface (Roby::RemoteInterface ..) <br>
      tasks = remote_interface.find_tasks.running.to_a <br>
      <br>
      With this i get a list of all running tasks (actions, missions, 
      tasks, defines, for clarification i call them: task concepts)
      through DRb interface and i guess it can be also directly
      controlled due to the remote object mechanism (also known as RMI)
      to each listed unit. <br>
      <br>
      It would be great if we could shortly clarify what kind of
      objects  the roby plan is currently handling and what are the
      concrete differences between each others "intuitively". <br>
      (I always know they are existing through the sources but never
      asked in detail about them. Maybe this is also some interesting
      viewpoint for roby's documentation. Though<br>
      it's more relevant for roby's developers)<br>
      <br>
      The clarification would be helpful because find_tasks on the
      remote side is implemented by a Roby::Query-class and <br>
      that is e.g. interacting with several instances of these tasks
      concepts. <br>
      <br>
      Currently known:<br>
       * Actions<br>
       * Missions<br>
       * Jobs (only accessible from the shell, but it corresponds to the
      plan) <br>
       * Defines<br>
       * Permanent tasks<br>
       * Interruptable tasks<br>
       * ...<br>
      <br>
      For the GUI we only need to filter out the Actions from the Rest
      (for visualization) and get the corresponding task (for remote
      control).  But i guess it could be <br>
      also extended in a more generalized fashion for all task concepts
      and provide a complete, clean "remote control interface". Do you
      have any preferences <br>
      how we going on in this case? <br>
      <br>
      e.g.:<br>
       - i could start to branch roby and try to refactor it on myself
      (or we specify an interface that can be implemented by sylvain
      later, if it takes too many changes<br>
      in sources)<br>
       - or we are first coping with Virgo requirements and let the
      sources unchanged as possible. <br>
      <br>
      Issue (2): <br>
      If remote_interface.find_tasks is the right interface, there will
      be also an open issue about it's performance. The call itself is
      currently very slowly for getting <br>
      the complete list (currently don't know if the bottleneck is
      depended on DRb Interface or maybe on roby engine itself). Some
      optimization for the response <br>
      time would be very grateful for all other implemtentations that
      access this interface.<br>
      <br>
      For Virgo, We could also touch the trigger scheduler (whose
      results could be maybe also visualized in the GUI). It should have
      a complete overview <br>
      about running behaviours, of course. (But this needs probably some
      interfacing to the RemoteInterface).<br>
      <br>
      <br>
      Chris<br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
    </div>
    <br>
  </body>
</html>