<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 &lt; Syskit::Composition<br>
      &nbsp; # can be also a Composition or Task<br>
      &nbsp; add Base::OrientationSrv, :as =&gt; 'orientation'<br>
      &nbsp; <br>
      &nbsp; script do<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait_any orientation_child.start_event<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; execute do <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # scripting with system model ...<br>
      &nbsp;&nbsp;&nbsp;&nbsp; end<br>
      &nbsp; &nbsp;&nbsp; <br>
      &nbsp; &nbsp;&nbsp; emit :success&nbsp; <br>
      &nbsp; 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>
      &nbsp;&nbsp; super<br>
      &nbsp;&nbsp; depends_on(..., :role =&gt; '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 =&gt; aria_dev<br>
      <br>
      class ConstantMovement &lt; Syskit::Composition<br>
      &nbsp;&nbsp; add Base::Motion2DControlledSystemSrv, :as =&gt; 'system'<br>
      <br>
      &nbsp;&nbsp; on :start do |ev|<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts "#{system_child}" ==&gt; returns the concrete Task (in
      my case Aria::Task)<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system_child.command_in_port =&gt; throws an error because
      the port command_in does not exists in Aria::Task<br>
      &nbsp;&nbsp; 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 &amp; Security Robotics
Underwater Robotics

!!! Achtung, neue Telefonnummer!!!

Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Stra&szlig;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&szlig;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>