<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"><christoph.mueller@dfki.de></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"><conquest@tzi.de></a>, Sylvain
Joyeux <a class="moz-txt-link-rfc2396E" href="mailto:sylvain.joyeux@dfki.de"><sylvain.joyeux@dfki.de></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"><felix.rehrmann@dfki.de></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>