[Rock-dev] Periodic Mars Plugin as Device in Roby

Christian Rauch Christian.Rauch at dfki.de
Wed Jul 25 11:13:04 CEST 2012


Hi,

if I define in Roby that:

{{{
Robot.devices do
    device(Dev::SeekurJrSimulation, :as => "simulation_deployment")
end
}}}

{{{
class SeekurSimulation::Task
    driver_for 'Dev::SeekurJrSimulation' do
        provides Srv::ActuatorControlledSystem
    end
end
}}}

and the Task itself is defined as periodical in the *.orogen file

{{{
task_context "Task" do
    subclasses "simulation::Mars"
    [...]
end

deployment "simulation_deployment" do
    sim = task("seekur_simulation", "Task").periodic(0.1)
    [...]
end
}}}

I will get the following error when running or instantiating:

{{{
=
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:140:in
`+': nil can't be coerced into Fixnum (TypeError)
= Backtrace
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:140:in
`+',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:140:in
`queue_size',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:291:in
`initial_device_information_periodic_triggering',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/component.rb:179:in
`each_task_output_port',
|   (eval):17:in `each_value',
|   (eval):17:in `each_output_port',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/component.rb:357:in
`each_output_port',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/component.rb:153:in
`each_output_port',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/component.rb:178:in
`each_task_output_port',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:288:in
`initial_device_information_periodic_triggering',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:263:in
`initial_device_information_common',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:255:in
`each',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:255:in
`initial_device_information_common',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:287:in
`initial_device_information_periodic_triggering',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:243:in
`initial_device_information',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:325:in
`initial_information',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_computation.rb:177:in
`propagate',
|
/home/christian/rock_virgo/tools/utilrb/lib/utilrb/logger/indent.rb:23:in `nest',
|
/home/christian/rock_virgo/tools/utilrb/lib/utilrb/logger/forward.rb:19:in
`log_nest',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_computation.rb:176:in
`propagate',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_computation.rb:173:in
`each',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_computation.rb:173:in
`propagate',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:172:in
`propagate',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb:460:in
`compute_connection_policies',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/engine.rb:1584:in
`resolve',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/scripts/run.rb:61,
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1924:in
`execute',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1820:in
`execute',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:622:in `call',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:622:in `gather_external_events',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:512:in `gather_framework_errors',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:622:in `gather_external_events',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1190:in
`process_events',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:646:in `gather_errors',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1189:in
`process_events',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:476:in `gather_propagation',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:546:in `propagation_context',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:476:in `gather_propagation',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1188:in
`process_events',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1669:in
`event_loop',
|   /home/christian/rock_virgo/tools/roby/lib/roby/support.rb:182:in
`synchronize',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1667:in
`event_loop',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1645:in
`loop',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1645:in
`event_loop',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1526:in
`run',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1519:in
`initialize',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1519:in
`new',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1519:in
`run',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1518:in
`synchronize',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1518:in
`run',
|   /home/christian/rock_virgo/tools/roby/lib/roby/support.rb:137:in
`condition_variable',
|
/home/christian/rock_virgo/tools/roby/lib/roby/execution_engine.rb:1517:in
`run',
|   /home/christian/rock_virgo/tools/roby/lib/roby/app.rb:931:in `run',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/scripts/run.rb:51,
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/scripts/common.rb:269:in
`run',
|   /home/christian/rock_virgo/tools/roby/lib/roby/exceptions.rb:333:in
`display_exception',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/scripts/common.rb:267:in
`run',
|
/home/christian/rock_virgo/tools/orocos.rb/lib/orocos/roby/scripts/run.rb:50,
|   /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require',
|   /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require',
|   /home/christian/rock_virgo/tools/orocos.rb/bin/rock-roby:15
=

}}}

This is caused by "triggers.map" in
"tools/orocos.rb/lib/orocos/roby/dataflow_dynamics.rb" line 130 being empty.

Is there a restriction in using periodic Devices in Roby?

Regards,
Christian


-- 
 Christian Rauch
 Space Robotics

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

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

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



More information about the Rock-dev mailing list