[Rock-dev] Preventing multiple instances of compositions

Christian Rauch Christian.Rauch at dfki.de
Wed Mar 19 19:51:59 CET 2014


Hi,

I placed a (huge) logfile on the fileserver at 
<temp>/syskit_merge_error/syskit-debug.txt which contains syskits 
debugging output.

This was a run with successful merges (e.g. lines 129488...141740) at 
the beginning and the failed merge at the end (lines 143922...147087).

In the failed merge you can read
{{{
checking cycle Simulation::MarsActuator{1}[...]
looking to resolve cycle between Simulation::MarsActuator{1}:[...]
   looking to resolve cycle between Skid4Control::SimpleController[...]
  not a cycle: AriaSimulation::MotionCommandProxy[...] are not cycle \ 
candidates
not a cycle: cannot find mapping to merge \ 
Skid4Control::SimpleController[...]
cannot merge cycle Simulation::MarsActuator{1}[...]
}}}

In the log I cannot find any "checking cycle" with a successful merge.

I am wondering why merge fails as soon as you get in the "checking cycle 
.." state and why this only happens sometimes.

Regards,
Christian


Am 17.03.2014 11:17, schrieb Matthias Goldhoorn:
> Hmh i wondering regarding this,
>
> i thought we fixed this issue, the problem is here:
>
> Simulation::MarsActuator{1}:0x69a7f58
> and
> Simulation::MarsActuator{1}:0x73ca0a8
>
> This should be resolved by syskit and reused insted. There seems a
> problem in the nerwork_generation merge-phase.
> Try to look into this, why, during the transaction is applied the the
> component could not be reused.
> Increase the debug level for this, this should give you the right hin.
>
> It does not seems to be a design problem for syskit.
>
> Otherwise try to create a simple unit-testcase which i can work on...
>
> Matthias
>
> On 17.03.2014 10:48, Christian Rauch wrote:
>>
>>
>> Am 17.03.2014 07:59, schrieb Matthias Goldhoorn:
>>> Are you using master?
>>> If you are using next the next commit after the merge phase should fix
>>> this problem.
>> Yes, we are on next. With syskit commit 423fb288 (net_gen: properly
>> synchronize finishing [...]) the error is still present. The error
>> also occurs when switching completely with syskit and roby to master.
>>
>> Regards,
>> Christian
>>
>>
>>> We had this a while ago.
>>>
>>> Best,
>>> Matthias
>>>
>>> On 14.03.2014 18:25, Christian Rauch wrote:
>>>> Hello,
>>>>
>>>> we have a simulation composition (AriaSim) using some simulated
>>>> devices.
>>>>
>>>> If we start this and an additional composition connected to simulated
>>>> devices we get sometimes (not reproducible) this error message:
>>>>
>>>> {{{
>>>> Syskit[FATAL]:
>>>> /home/christian/rock_virgo_next/tools/syskit/lib/syskit/network_generation/engine.rb:526:in
>>>>
>>>> `block (2 levels) in validate_generated_network': device locomotion is
>>>> assigned to both Simulation::MarsActuator{1}:0x69a7f58{driver_dev =>
>>>> device(Dev::Simulation::Mars::Actuator, :as => locomotion), conf =>
>>>> [locomotion], locomotion_actuators_mappings => [1, 2, 3, 4]}[] and
>>>> Simulation::MarsActuator{1}:0x73ca0a8{driver_dev =>
>>>> device(Dev::Simulation::Mars::Actuator, :as => locomotion), conf =>
>>>> [locomotion], locomotion_actuators_mappings => [1, 2, 3, 4]}[], but
>>>> the tasks have mismatching inputs (Syskit::SpecError)
>>>> }}}
>>>>
>>>> Where locomotion is a simulated devices defined by:
>>>> {{{
>>>> define_simulated_device("locomotion", Dev::Simulation::Mars::Actuator)
>>>> do |dev|
>>>> ::Simulation::MarsActuator.dispatch('locomotion_actuators',
>>>> (1..4).to_a ).
>>>>           use_deployments(/mars_locomotion/).
>>>>           with_arguments(dev.arguments).
>>>>           with_conf('locomotion')
>>>> end
>>>> locomotion_dev.period 0.01
>>>> }}}
>>>>
>>>> and used in:
>>>> {{{
>>>>     define 'aria', Virgo::AriaSim.use(
>>>>       'actuators' => locomotion_def,
>>>>       [...]
>>>>     )
>>>> }}}
>>>>
>>>> In the network graph (see attached *.dot file) one can see that the
>>>> simulation composition (Virgo::AriaSim) is started twice, and
>>>> therefore also the Simulation::MarsActuator::Cmp.
>>>> I guess that is not correct.
>>>>
>>>> It might be, that this problem does not occur when a second
>>>> composition is started accessing a simulated device, but then it
>>>> happens later when a third, ... composition is started.
>>>>
>>>> => Any ideas why this happens and only happens randomly?
>>>>
>>>>
>>>> Our guess was to prevent the creation of multiple AriaSim instances by
>>>> setting it as a driver by:
>>>> {{{
>>>> class AriaSim < Syskit::Composition
>>>>       [...]
>>>>       driver_for Dev::Platforms::MobileRoboticsSim, :as=>'ariasimdev'
>>>> end
>>>> }}}
>>>>
>>>> Which results in the error:
>>>> {{{
>>>> Syskit[FATAL]: cannot find a device to tie to 1 task(s)
>>>> Syskit[FATAL]: for Virgo::AriaSim:0x64e5380{}[]
>>>> Syskit[FATAL]:   no candidates for Virgo::AriaSim:ariasimdev
>>>> Syskit[FATAL]: Engine#resolve failed
>>>> }}}
>>>>
>>>> => So the second question is if a composition could be set as a driver
>>>> and if so, how?
>>>>
>>>> Regards,
>>>> Christian
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Rock-dev mailing list
>>>> Rock-dev at dfki.de
>>>> http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
>>>
>>>
>>
>
>

-- 
  Christian Rauch
  Space Robotics

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

  Zentrale: +49 421 178 45-6611

  Besuchsadresse der Nebengeschäftstelle:
  Robert-Hooke-Straße 5
  28359 Bremen, Germany

  Tel:     +49 421 178 45-6619
  Empfang: +49 421 178 45-6600
  Fax:     +49 421 178 45-4150
  E-Mail:  Christian.Rauch at dfki.de

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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4988 bytes
Desc: S/MIME Cryptographic Signature
Url : http://www.dfki.de/pipermail/rock-dev/attachments/20140319/213c9086/attachment.bin 


More information about the Rock-dev mailing list