<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 03/19/2013 04:10 PM, Chris Mueller
wrote:<br>
</div>
<blockquote cite="mid:51487FE0.60800@dfki.de" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
Hi,<br>
<br>
i'm currently developing with the new syskit interface from rock
and i'd like to share some feedback <br>
for the current version (some Bug reports, Recommendations, etc.)<br>
<br>
1) Action calls with missing arguments get stucked. If you have a
Roby Tasks that needs some<br>
arguments and you call it without the necessary arguments, the
system acts like it's fallen into a <br>
deadlock. No Error Message is written out and the Task itself is
not executed. (Some verbose<br>
status information would be helpful, otherwise its quite confusing
if you don't realize you have missed<br>
the arguments).<br>
</blockquote>
I can't reproduce that one. You should have an error message both in
the shell and on the console where you run roby.<br>
<blockquote cite="mid:51487FE0.60800@dfki.de" type="cite"> 2) I'm
often using Roby's scripting facalities and like to experiment
with its interface. I'm running often<br>
into a requirement writing a Roby Task, that needs to write/read
some data ports on a data service. <br>
More concret: it has a dependency to a roby/syskit component
(Composition, DataService, Task)<br>
The cleanest approach in my opinion would be to use a composition
in the following sense, because<br>
it has a generic and simple interface for defining dependencies to
the model, and data services can<br>
be filled by the active profile from the action interface.<br>
</blockquote>
Yes, that would be my pick as well. If you need to read/write ports,
using a composition is probably your best pick.<br>
<blockquote cite="mid:51487FE0.60800@dfki.de" type="cite"> class
WriterTask < Syskit::Composition<br>
# can be also a Composition or Task<br>
add Base::OrientationSrv, :as => 'orientation'<br>
<br>
script do<br>
wait_any orientation_child.start_event<br>
<br>
execute do <br>
# scripting with system model ...<br>
end<br>
<br>
emit :success <br>
end<br>
end<br>
<br>
This is unfortanetely not working, because its seems
child_components for a composition are not valid within the
scripting block:<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
/home/chris/repos/virgo/tools/roby/lib/roby/task_scripting.rb:138:in
`resolve': undefined method `event' for nil:NilClass
(NoMethodError)<br>
<br>
Don't know if this is a bug. I suppose compositions has not been
intended for this usage in the past. My current workaround is
using Roby::Task parent class <br>
and add the dependency from the corresponding ruby constructor.<br>
<br>
def intialize(*arguments)<br>
super<br>
depends_on(..., :role => 'orientation')<br>
end<br>
</blockquote>
You mean that the scripting block that you have defined works on
Roby::Task but not on compositions ?<br>
<blockquote cite="mid:51487FE0.60800@dfki.de" type="cite"> 3)
DataService are not shadowing the actual task in this szenario.<br>
<br>
# profile ...<br>
use Base::Motion2DControlledSystemSrv => aria_dev<br>
<br>
class ConstantMovement < Syskit::Composition<br>
add Base::Motion2DControlledSystemSrv, :as => 'system'<br>
<br>
on :start do |ev|<br>
puts "#{system_child}" ==> returns the concrete Task (in
my case Aria::Task)<br>
system_child.command_in_port => throws an error because
the port command_in does not exists in Aria::Task<br>
end<br>
end<br>
</blockquote>
This is "intended". There are issues with both options, and I am
personally not really sure which one is best. Needs more
discussions.<br>
<br>
<blockquote cite="mid:51487FE0.60800@dfki.de" type="cite"> 4)
undefined method 'writer' for Syskit::InputPort<br>
(only reader for Syskit::OutputPort is defined in
tools/syskit/port.rb)<br>
</blockquote>
Ah. Yuk.<br>
<pre class="moz-signature" cols="72">--
Sylvain Joyeux (Dr.Ing.)
Senior Researcher
Space & Security Robotics
Underwater Robotics
!!! Achtung, neue Telefonnummer!!!
Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 5
28359 Bremen, Germany
Phone: +49 (0)421 178-454136
Fax: +49 (0)421 218-454150
E-Mail: <a class="moz-txt-link-abbreviated" href="mailto:robotik@dfki.de">robotik@dfki.de</a>
Weitere Informationen: <a class="moz-txt-link-freetext" href="http://www.dfki.de/robotik">http://www.dfki.de/robotik</a>
-----------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
(Vorsitzender) Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
USt-Id.Nr.: DE 148646973
Steuernummer: 19/673/0060/3
----------------------------------------------------------------------- </pre>
</body>
</html>