[Rock-dev] How to explicit assign task ports to service ports?

Matthias Goldhoorn matthias.goldhoorn at dfki.de
Tue Sep 3 16:15:11 CEST 2013


please set in config/app.yml

   8 log:
   9     filter_backtraces: false

to get a complete backtrace ;)

Matthias





On 03.09.2013 15:48, Christian Rauch wrote:
> I forgot to mention that I am on next. I therefore changed line 315 
> according to your suggestion, i.e.:
> {{{
> def method_missing(m, *args, &block)
>     if m.to_s =~ /^(\w+)_port$/
>         port_name = $1.to_s
>         mapped_port_name = 
> @composition_task.map_child_port(@child_name, port_name)
>         [...]
> }}}
>
> The same error occurs and the backtrace is:
> {{{
> 15:47:25.897 (Roby) uncaught exception in an event handler of the 
> start event of Trigger::GyroMonitor:0x4da12c8
> 15:47:25.897 (Roby) called during the propagation of [15:47:25.620 @8] 
> Trigger::GyroMonitor:0x4da12c8{conf => [default]}[]/start
> 15:47:25.897 (Roby) 
> /home/seekurjr/virgo_next/tools/orocos.rb/lib/orocos/ports_searchable.rb:68:in 
> `find_port': /wrappers/VectorX</double> is provided by multiple ports 
> prediction_value: dbg_prediction_valueN, prediction_value (ArgumentError)
> 15:47:25.897 (Roby) 
> /home/seekurjr/virgo_next/tools/orocos.rb/lib/orocos/ports_searchable.rb:68:in 
> `find_port'
> 15:47:25.897 (Roby)   ./models/blueprints/triggers.rb:87:in `block in 
> <class:GyroMonitor>'
> 15:47:25.898 (Roby)
> 15:47:25.898 (Roby) EE: will kill the following tasks because of 
> unhandled exceptions:
> 15:47:25.898 (Roby)   Trigger::GyroMonitor:0x4da12c8{conf => [default]}[]
> 15:47:25.919 (Robot seekurjr) cleaning up 
> Logger::Logger:0x4c2f408{orocos_name => seekur_monitor_Logger, conf => 
> [default]}[]
> }}}
>
> Regards,
> Christian
>
>
> Am 03.09.2013 15:26, schrieb Matthias Goldhoorn:
>> i assume this is a mistake within the attribute_missing implementation
>> of composition...
>>
>> try to add (.to_s) to syskit/lib/syskit/composition.rb line 256
>>
>> 256                         port_name = $1.to_s
>>
>> and re-run your application. There should also no need to call
>> .to_orocos_port
>>
>> Please attach if this does not solve your problem the whole backtrace..
>>
>> Matthias
>>
>>
>>
>>
>> On 03.09.2013 14:57, Christian Rauch wrote:
>>> Hello,
>>>
>>> I assigned a service to a task:
>>> {{{
>>> provides Trigger::PredictorSrv,
>>>            'prediction' =>  'prediction_value',
>>>            :as =>  'predictor'
>>> }}}
>>>
>>> whose service port "prediction" is later on accessed by
>>> "gyro_prediction_child.as(PredictorSrv).prediction_port.to_orocos_port". 
>>>
>>>
>>> Doing this results in this error:
>>> {{{
>>> |
>>> /home/seekurjr/virgo_next/tools/orocos.rb/lib/orocos/ports_searchable.rb:68:in 
>>>
>>> `find_port': /wrappers/VectorX</double>  is provided by multiple ports
>>> prediction_value: dbg_prediction_valueN, prediction_value 
>>> (ArgumentError)
>>> }}}
>>>
>>> I assume here, that the task port name "prediction_value" that I gave
>>> explicitly in the definition is used as a search term (two ports of the
>>> task match that substring and have same type) instead as the port I 
>>> want.
>>>
>>> Is this the desired behaviour? Can I deactivate this behaviour and have
>>> syskit use that port, that I explicitly gave in my service assignment?
>>>
>>> Regards,
>>> Christian
>>>
>>>
>>
>>
>


-- 
  Dipl.-Inf. Matthias Goldhoorn
  Space and Underwater Robotic

  Universität Bremen
  FB 3 - Mathematik und Informatik
  AG Robotik
  Robert-Hooke-Straße 5
  28359 Bremen, Germany

  Tel.:     +49 421 178 45-4193
  Zentrale: +49 421 178 45-6550
  Fax:      +49 421 178 45-4150
  E-Mail:   matthias.goldhoorn at uni-bremen.de

  Weitere Informationen: http://www.informatik.uni-bremen.de/robotik



More information about the Rock-dev mailing list