[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