roby 0.8.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.deep-cover.rb +3 -0
- data/.gitattributes +1 -0
- data/.gitignore +24 -0
- data/.simplecov +10 -0
- data/.travis.yml +17 -0
- data/.yardopts +4 -0
- data/Gemfile +15 -0
- data/README.md +11 -0
- data/Rakefile +47 -177
- data/benchmark/{alloc_misc.rb → attic/alloc_misc.rb} +2 -2
- data/benchmark/{discovery_latency.rb → attic/discovery_latency.rb} +19 -19
- data/benchmark/{garbage_collection.rb → attic/garbage_collection.rb} +9 -9
- data/benchmark/{genom.rb → attic/genom.rb} +0 -0
- data/benchmark/attic/transactions.rb +62 -0
- data/benchmark/plan_basic_operations.rb +28 -0
- data/benchmark/relations/graph.rb +63 -0
- data/benchmark/ruby/identity.rb +18 -0
- data/benchmark/ruby/set_intersect_vs_hash_merge.rb +39 -0
- data/benchmark/ruby/yield_vs_block.rb +35 -0
- data/benchmark/run +5 -0
- data/benchmark/synthetic_plan_modifications_with_transactions.rb +79 -0
- data/benchmark/transactions.rb +99 -51
- data/bin/roby +38 -197
- data/bin/roby-display +14 -0
- data/bin/roby-log +3 -176
- data/doc/guide/{src → attic}/abstraction/achieve_with.page +1 -1
- data/doc/guide/{src → attic}/abstraction/forwarding.page +1 -1
- data/doc/guide/{src → attic}/abstraction/hierarchy.page +1 -1
- data/doc/guide/{src → attic}/abstraction/index.page +1 -1
- data/doc/guide/{src → attic}/abstraction/task_models.page +1 -1
- data/doc/guide/{overview.rdoc → attic/cycle/api_overview.rdoc} +6 -1
- data/doc/guide/{src → attic}/cycle/cycle-overview.png +0 -0
- data/doc/guide/{src → attic}/cycle/cycle-overview.svg +0 -0
- data/doc/guide/attic/cycle/error_handling.page +98 -0
- data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.png +0 -0
- data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.svg +0 -0
- data/doc/guide/{src/cycle/error_handling.page → attic/cycle/error_sources.page} +46 -89
- data/doc/guide/{src → attic}/cycle/garbage_collection.page +1 -1
- data/doc/guide/{src → attic}/cycle/index.page +1 -1
- data/doc/guide/{src → attic}/cycle/propagation.page +11 -1
- data/doc/guide/{src → attic}/cycle/propagation_diamond.png +0 -0
- data/doc/guide/{src → attic}/cycle/propagation_diamond.svg +0 -0
- data/doc/guide/attic/plans/building_plans.page +89 -0
- data/doc/guide/attic/plans/code.page +192 -0
- data/doc/guide/{src/basics → attic/plans}/events.page +3 -4
- data/doc/guide/attic/plans/index.page +7 -0
- data/doc/guide/{plan_modifications.rdoc → attic/plans/plan_modifications.rdoc} +5 -3
- data/doc/guide/{src/basics → attic/plans}/plan_objects.page +2 -1
- data/doc/guide/attic/plans/querying_plans.page +5 -0
- data/doc/guide/{src/basics → attic/plans}/tasks.page +20 -20
- data/doc/guide/config.yaml +7 -4
- data/doc/guide/ext/extended_menu.rb +29 -0
- data/doc/guide/ext/init.rb +6 -0
- data/doc/guide/ext/rdoc_links.rb +7 -6
- data/doc/guide/src/advanced_concepts/history.page +5 -0
- data/doc/guide/src/advanced_concepts/index.page +11 -0
- data/doc/guide/src/advanced_concepts/recognizing_patterns.page +83 -0
- data/doc/guide/src/advanced_concepts/scheduling.page +87 -0
- data/doc/guide/src/advanced_concepts/transactions.page +5 -0
- data/doc/guide/src/advanced_concepts/unreachability.page +42 -0
- data/doc/guide/src/base.template +96 -0
- data/doc/guide/src/basics_shell_header.txt +5 -7
- data/doc/guide/src/building/action_coordination.page +96 -0
- data/doc/guide/src/building/actions.page +124 -0
- data/doc/guide/src/building/file_layout.page +71 -0
- data/doc/guide/src/building/index.page +50 -0
- data/doc/guide/src/building/patterns.page +86 -0
- data/doc/guide/src/building/patterns_forwarding.png +0 -0
- data/doc/guide/src/building/patterns_forwarding.svg +277 -0
- data/doc/guide/src/building/runtime.page +95 -0
- data/doc/guide/src/building/task_models.page +94 -0
- data/doc/guide/src/building/tasks.page +284 -0
- data/doc/guide/src/concepts/error_handling.page +100 -0
- data/doc/guide/src/concepts/exception_propagation.png +0 -0
- data/doc/guide/src/concepts/exception_propagation.svg +445 -0
- data/doc/guide/src/concepts/execution.page +85 -0
- data/doc/guide/src/concepts/execution.png +0 -0
- data/doc/guide/src/concepts/execution.svg +573 -0
- data/doc/guide/src/concepts/execution_cycle.png +0 -0
- data/doc/guide/src/concepts/garbage_collection.page +57 -0
- data/doc/guide/src/concepts/index.page +27 -0
- data/doc/guide/src/concepts/plans.page +101 -0
- data/doc/guide/src/concepts/policy.page +31 -0
- data/doc/guide/src/concepts/reactor.page +61 -0
- data/doc/guide/src/concepts/simple_plan_example.png +0 -0
- data/doc/guide/src/concepts/simple_plan_example.svg +376 -0
- data/doc/guide/src/default.template +9 -74
- data/doc/guide/src/event_relations/forward.page +71 -0
- data/doc/guide/src/event_relations/index.page +12 -0
- data/doc/guide/src/event_relations/scheduling_constraints.page +43 -0
- data/doc/guide/src/event_relations/signal.page +55 -0
- data/doc/guide/src/event_relations/temporal_constraints.page +77 -0
- data/doc/guide/src/htmldoc.metainfo +21 -8
- data/doc/guide/src/index.page +8 -3
- data/doc/guide/src/{introduction/install.page → installation/index.page} +37 -25
- data/doc/guide/src/installation/publications.page +14 -0
- data/doc/guide/src/{introduction → installation}/videos.page +14 -7
- data/doc/guide/src/interacting/index.page +16 -0
- data/doc/guide/src/interacting/run.page +33 -0
- data/doc/guide/src/interacting/shell.page +95 -0
- data/doc/guide/src/plugins/creating_plugins.page +72 -0
- data/doc/guide/src/plugins/index.page +27 -5
- data/doc/guide/src/plugins/{fault_tolerance.page → standard_plugins/fault_tolerance.page} +2 -2
- data/doc/guide/src/plugins/standard_plugins/index.page +11 -0
- data/doc/guide/src/plugins/{subsystems.page → standard_plugins/subsystems.page} +2 -2
- data/doc/guide/src/style_screen.css +687 -0
- data/doc/guide/src/task_relations/dependency.page +107 -0
- data/doc/guide/src/task_relations/executed_by.page +77 -0
- data/doc/guide/src/task_relations/index.page +12 -0
- data/doc/guide/src/task_relations/new_relations.page +119 -0
- data/doc/guide/src/task_relations/planned_by.page +46 -0
- data/doc/guide/src/tutorial/app.page +117 -0
- data/doc/guide/src/{basics → tutorial}/code_examples.page +6 -5
- data/doc/guide/src/{basics → tutorial}/dry.page +15 -15
- data/doc/guide/src/{basics → tutorial}/errors.page +43 -68
- data/doc/guide/src/tutorial/events.page +195 -0
- data/doc/guide/src/{basics → tutorial}/hierarchy.page +53 -52
- data/doc/guide/src/tutorial/index.page +13 -0
- data/doc/guide/src/tutorial/log_replay/goForward_1.png +0 -0
- data/doc/guide/src/tutorial/log_replay/goForward_2.png +0 -0
- data/doc/guide/src/tutorial/log_replay/goForward_3.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/goForward_4.png +0 -0
- data/doc/guide/src/tutorial/log_replay/goForward_5.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_1.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_2.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_3.png +0 -0
- data/doc/guide/src/tutorial/log_replay/moveto_code_error.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_1.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_2.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_3.png +0 -0
- data/doc/guide/src/tutorial/log_replay/plan_repair_4.png +0 -0
- data/doc/guide/src/tutorial/log_replay/roby_log_main_window.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/roby_log_relation_window.png +0 -0
- data/doc/guide/src/{basics → tutorial}/log_replay/roby_replay_event_representation.png +0 -0
- data/doc/guide/src/tutorial/relations_display.page +153 -0
- data/doc/guide/src/{basics → tutorial}/roby_cycle_overview.png +0 -0
- data/doc/guide/src/tutorial/shell.page +121 -0
- data/doc/guide/src/{basics → tutorial}/summary.page +1 -1
- data/doc/guide/src/tutorial/tasks.page +374 -0
- data/lib/roby.rb +102 -47
- data/lib/roby/actions.rb +17 -0
- data/lib/roby/actions/action.rb +80 -0
- data/lib/roby/actions/interface.rb +45 -0
- data/lib/roby/actions/library.rb +23 -0
- data/lib/roby/actions/models/action.rb +224 -0
- data/lib/roby/actions/models/coordination_action.rb +58 -0
- data/lib/roby/actions/models/interface.rb +22 -0
- data/lib/roby/actions/models/interface_base.rb +294 -0
- data/lib/roby/actions/models/library.rb +12 -0
- data/lib/roby/actions/models/method_action.rb +90 -0
- data/lib/roby/actions/task.rb +114 -0
- data/lib/roby/and_generator.rb +125 -0
- data/lib/roby/app.rb +2795 -829
- data/lib/roby/app/autotest_console_reporter.rb +138 -0
- data/lib/roby/app/base.rb +21 -0
- data/lib/roby/app/cucumber.rb +2 -0
- data/lib/roby/app/cucumber/controller.rb +439 -0
- data/lib/roby/app/cucumber/helpers.rb +280 -0
- data/lib/roby/app/cucumber/world.rb +32 -0
- data/lib/roby/app/debug.rb +136 -0
- data/lib/roby/app/gen.rb +2 -0
- data/lib/roby/app/rake.rb +178 -38
- data/lib/roby/app/robot_config.rb +9 -0
- data/lib/roby/app/robot_names.rb +115 -0
- data/lib/roby/app/run.rb +3 -2
- data/lib/roby/app/scripts.rb +72 -0
- data/lib/roby/app/scripts/autotest.rb +173 -0
- data/lib/roby/app/scripts/display.rb +2 -0
- data/lib/roby/app/scripts/restart.rb +52 -0
- data/lib/roby/app/scripts/results.rb +17 -8
- data/lib/roby/app/scripts/run.rb +155 -24
- data/lib/roby/app/scripts/shell.rb +147 -62
- data/lib/roby/app/scripts/test.rb +107 -22
- data/lib/roby/app/test_reporter.rb +74 -0
- data/lib/roby/app/test_server.rb +159 -0
- data/lib/roby/app/vagrant.rb +47 -0
- data/lib/roby/backports.rb +16 -0
- data/lib/roby/cli/display.rb +190 -0
- data/lib/roby/cli/exceptions.rb +17 -0
- data/lib/roby/cli/gen/actions/class.rb +5 -0
- data/lib/roby/cli/gen/actions/test.rb +6 -0
- data/lib/roby/cli/gen/app/.yardopts +6 -0
- data/lib/roby/cli/gen/app/README.md +28 -0
- data/lib/roby/cli/gen/app/Rakefile +15 -0
- data/{app → lib/roby/cli/gen/app}/config/app.yml +29 -39
- data/lib/roby/cli/gen/app/models/.gitattributes +1 -0
- data/{app → lib/roby/cli/gen/app/scripts}/controllers/.gitattributes +0 -0
- data/{app/data/.gitattributes → lib/roby/cli/gen/app/test/.gitignore} +0 -0
- data/lib/roby/cli/gen/class/class.rb +6 -0
- data/lib/roby/cli/gen/class/test.rb +7 -0
- data/lib/roby/cli/gen/helpers.rb +203 -0
- data/lib/roby/cli/gen/module/module.rb +5 -0
- data/lib/roby/cli/gen/module/test.rb +6 -0
- data/lib/roby/cli/gen/roby_app/config/init.rb +17 -0
- data/lib/roby/cli/gen/roby_app/config/robots/robot.rb +40 -0
- data/lib/roby/cli/gen/task/class.rb +44 -0
- data/lib/roby/cli/gen/task/test.rb +6 -0
- data/lib/roby/cli/gen_main.rb +120 -0
- data/lib/roby/cli/log.rb +276 -0
- data/lib/roby/cli/log/flamegraph.html +499 -0
- data/lib/roby/cli/log/flamegraph_renderer.rb +88 -0
- data/lib/roby/cli/main.rb +153 -0
- data/lib/roby/coordination.rb +60 -0
- data/lib/roby/coordination/action_script.rb +25 -0
- data/lib/roby/coordination/action_state_machine.rb +125 -0
- data/lib/roby/coordination/actions.rb +106 -0
- data/lib/roby/coordination/base.rb +145 -0
- data/lib/roby/coordination/calculus.rb +40 -0
- data/lib/roby/coordination/child.rb +28 -0
- data/lib/roby/coordination/event.rb +29 -0
- data/lib/roby/coordination/fault_handler.rb +25 -0
- data/lib/roby/coordination/fault_handling_task.rb +13 -0
- data/lib/roby/coordination/fault_response_table.rb +110 -0
- data/lib/roby/coordination/models/action_script.rb +64 -0
- data/lib/roby/coordination/models/action_state_machine.rb +224 -0
- data/lib/roby/coordination/models/actions.rb +191 -0
- data/lib/roby/coordination/models/arguments.rb +55 -0
- data/lib/roby/coordination/models/base.rb +176 -0
- data/lib/roby/coordination/models/capture.rb +86 -0
- data/lib/roby/coordination/models/child.rb +35 -0
- data/lib/roby/coordination/models/event.rb +41 -0
- data/lib/roby/coordination/models/exceptions.rb +42 -0
- data/lib/roby/coordination/models/fault_handler.rb +219 -0
- data/lib/roby/coordination/models/fault_response_table.rb +77 -0
- data/lib/roby/coordination/models/root.rb +22 -0
- data/lib/roby/coordination/models/script.rb +283 -0
- data/lib/roby/coordination/models/task.rb +184 -0
- data/lib/roby/coordination/models/task_from_action.rb +50 -0
- data/lib/roby/coordination/models/task_from_as_plan.rb +33 -0
- data/lib/roby/coordination/models/task_from_instanciation_object.rb +31 -0
- data/lib/roby/coordination/models/task_from_variable.rb +27 -0
- data/lib/roby/coordination/models/task_with_dependencies.rb +48 -0
- data/lib/roby/coordination/models/variable.rb +32 -0
- data/lib/roby/coordination/script.rb +200 -0
- data/lib/roby/coordination/script_instruction.rb +12 -0
- data/lib/roby/coordination/task.rb +45 -0
- data/lib/roby/coordination/task_base.rb +69 -0
- data/lib/roby/coordination/task_script.rb +293 -0
- data/lib/roby/coordination/task_state_machine.rb +308 -0
- data/lib/roby/decision_control.rb +33 -21
- data/lib/roby/distributed_object.rb +76 -0
- data/lib/roby/droby.rb +17 -0
- data/lib/roby/droby/droby_id.rb +6 -0
- data/lib/roby/droby/enable.rb +153 -0
- data/lib/roby/droby/event_logger.rb +189 -0
- data/lib/roby/droby/event_logging.rb +57 -0
- data/lib/roby/droby/exceptions.rb +14 -0
- data/lib/roby/droby/identifiable.rb +22 -0
- data/lib/roby/droby/logfile.rb +141 -0
- data/lib/roby/droby/logfile/client.rb +176 -0
- data/lib/roby/droby/logfile/file_format.md +97 -0
- data/lib/roby/droby/logfile/index.rb +117 -0
- data/lib/roby/droby/logfile/reader.rb +139 -0
- data/lib/roby/droby/logfile/server.rb +199 -0
- data/lib/roby/droby/logfile/writer.rb +114 -0
- data/lib/roby/droby/marshal.rb +264 -0
- data/lib/roby/droby/marshallable.rb +12 -0
- data/lib/roby/droby/null_event_logger.rb +25 -0
- data/lib/roby/droby/object_manager.rb +205 -0
- data/lib/roby/droby/peer_id.rb +6 -0
- data/lib/roby/droby/plan_rebuilder.rb +373 -0
- data/lib/roby/droby/rebuilt_plan.rb +160 -0
- data/lib/roby/droby/remote_droby_id.rb +6 -0
- data/lib/roby/droby/timepoints.rb +205 -0
- data/lib/roby/droby/timepoints_ctf.metadata.erb +101 -0
- data/lib/roby/droby/timepoints_ctf.rb +125 -0
- data/lib/roby/droby/v5.rb +14 -0
- data/lib/roby/droby/v5/builtin.rb +120 -0
- data/lib/roby/droby/v5/droby_class.rb +45 -0
- data/lib/roby/droby/v5/droby_constant.rb +81 -0
- data/lib/roby/droby/v5/droby_dump.rb +1026 -0
- data/lib/roby/droby/v5/droby_id.rb +44 -0
- data/lib/roby/droby/v5/droby_model.rb +82 -0
- data/lib/roby/droby/v5/peer_id.rb +10 -0
- data/lib/roby/droby/v5/remote_droby_id.rb +42 -0
- data/lib/roby/event.rb +79 -957
- data/lib/roby/event_constraints.rb +835 -0
- data/lib/roby/event_generator.rb +1047 -0
- data/lib/roby/event_structure/causal_link.rb +6 -0
- data/lib/roby/event_structure/forwarding.rb +6 -0
- data/lib/roby/event_structure/precedence.rb +7 -0
- data/lib/roby/event_structure/signal.rb +8 -0
- data/lib/roby/event_structure/temporal_constraints.rb +640 -0
- data/lib/roby/exceptions.rb +446 -152
- data/lib/roby/executable_plan.rb +549 -0
- data/lib/roby/execution_engine.rb +1997 -950
- data/lib/roby/filter_generator.rb +26 -0
- data/lib/roby/gui/chronicle_view.rb +225 -0
- data/lib/roby/gui/chronicle_widget.rb +925 -0
- data/lib/roby/gui/dot_id.rb +11 -0
- data/lib/roby/gui/exception_view.rb +44 -0
- data/lib/roby/gui/log_display.rb +273 -0
- data/lib/roby/gui/model_views.rb +2 -0
- data/lib/roby/gui/model_views/action_interface.rb +53 -0
- data/lib/roby/gui/model_views/task.rb +47 -0
- data/lib/roby/gui/model_views/task.rhtml +41 -0
- data/lib/roby/gui/object_info_view.rb +89 -0
- data/lib/roby/gui/plan_dot_layout.rb +427 -0
- data/lib/roby/gui/plan_rebuilder_widget.rb +357 -0
- data/lib/roby/gui/qt4_toMSecsSinceEpoch.rb +8 -0
- data/lib/roby/gui/relations_view.rb +278 -0
- data/lib/roby/gui/relations_view/relations.ui +139 -0
- data/lib/roby/gui/relations_view/relations_canvas.rb +1088 -0
- data/lib/roby/gui/relations_view/relations_config.rb +292 -0
- data/lib/roby/gui/relations_view/relations_view.ui +53 -0
- data/lib/roby/gui/scheduler_view.css +24 -0
- data/lib/roby/gui/scheduler_view.rb +46 -0
- data/lib/roby/gui/scheduler_view.rhtml +53 -0
- data/lib/roby/gui/stepping.rb +93 -0
- data/lib/roby/gui/stepping.ui +181 -0
- data/lib/roby/gui/styles.rb +81 -0
- data/lib/roby/gui/task_display_configuration.rb +42 -0
- data/lib/roby/gui/task_state_at.rb +38 -0
- data/lib/roby/hooks.rb +26 -0
- data/lib/roby/interface.rb +136 -469
- data/lib/roby/interface/async.rb +20 -0
- data/lib/roby/interface/async/action_monitor.rb +188 -0
- data/lib/roby/interface/async/interface.rb +498 -0
- data/lib/roby/interface/async/job_monitor.rb +213 -0
- data/lib/roby/interface/async/log.rb +238 -0
- data/lib/roby/interface/async/new_job_listener.rb +79 -0
- data/lib/roby/interface/async/ui_connector.rb +183 -0
- data/lib/roby/interface/client.rb +553 -0
- data/lib/roby/interface/command.rb +24 -0
- data/lib/roby/interface/command_argument.rb +16 -0
- data/lib/roby/interface/command_library.rb +92 -0
- data/lib/roby/interface/droby_channel.rb +174 -0
- data/lib/roby/interface/exceptions.rb +22 -0
- data/lib/roby/interface/interface.rb +655 -0
- data/lib/roby/interface/job.rb +47 -0
- data/lib/roby/interface/rest.rb +10 -0
- data/lib/roby/interface/rest/api.rb +29 -0
- data/lib/roby/interface/rest/helpers.rb +24 -0
- data/lib/roby/interface/rest/server.rb +212 -0
- data/lib/roby/interface/server.rb +154 -0
- data/lib/roby/interface/shell_client.rb +468 -0
- data/lib/roby/interface/shell_subcommand.rb +24 -0
- data/lib/roby/interface/subcommand_client.rb +35 -0
- data/lib/roby/interface/tcp.rb +168 -0
- data/lib/roby/models/arguments.rb +112 -0
- data/lib/roby/models/plan_object.rb +83 -0
- data/lib/roby/models/task.rb +835 -0
- data/lib/roby/models/task_event.rb +62 -0
- data/lib/roby/models/task_service.rb +78 -0
- data/lib/roby/or_generator.rb +88 -0
- data/lib/roby/plan.rb +1751 -864
- data/lib/roby/plan_object.rb +611 -0
- data/lib/roby/plan_service.rb +200 -0
- data/lib/roby/promise.rb +332 -0
- data/lib/roby/queries.rb +23 -0
- data/lib/roby/queries/and_matcher.rb +32 -0
- data/lib/roby/queries/any.rb +27 -0
- data/lib/roby/queries/code_error_matcher.rb +58 -0
- data/lib/roby/queries/event_generator_matcher.rb +9 -0
- data/lib/roby/queries/execution_exception_matcher.rb +165 -0
- data/lib/roby/queries/index.rb +165 -0
- data/lib/roby/queries/localized_error_matcher.rb +149 -0
- data/lib/roby/queries/matcher_base.rb +107 -0
- data/lib/roby/queries/none.rb +27 -0
- data/lib/roby/queries/not_matcher.rb +30 -0
- data/lib/roby/queries/op_matcher.rb +8 -0
- data/lib/roby/queries/or_matcher.rb +30 -0
- data/lib/roby/queries/plan_object_matcher.rb +363 -0
- data/lib/roby/queries/query.rb +188 -0
- data/lib/roby/queries/task_event_generator_matcher.rb +86 -0
- data/lib/roby/queries/task_matcher.rb +344 -0
- data/lib/roby/relations.rb +42 -678
- data/lib/roby/relations/bidirectional_directed_adjacency_graph.rb +492 -0
- data/lib/roby/relations/directed_relation_support.rb +268 -0
- data/lib/roby/relations/event_relation_graph.rb +19 -0
- data/lib/roby/relations/fork_merge_visitor.rb +154 -0
- data/lib/roby/relations/graph.rb +533 -0
- data/lib/roby/relations/models/directed_relation_support.rb +11 -0
- data/lib/roby/relations/models/graph.rb +75 -0
- data/lib/roby/relations/models/task_relation_graph.rb +18 -0
- data/lib/roby/relations/space.rb +380 -0
- data/lib/roby/relations/task_relation_graph.rb +20 -0
- data/lib/roby/robot.rb +85 -38
- data/lib/roby/schedulers/basic.rb +155 -25
- data/lib/roby/schedulers/null.rb +20 -0
- data/lib/roby/schedulers/reporting.rb +31 -0
- data/lib/roby/schedulers/state.rb +129 -0
- data/lib/roby/schedulers/temporal.rb +91 -0
- data/lib/roby/singletons.rb +87 -0
- data/lib/roby/standalone.rb +4 -2
- data/lib/roby/standard_errors.rb +405 -82
- data/lib/roby/state.rb +6 -3
- data/lib/roby/state/conf_model.rb +5 -0
- data/lib/roby/state/events.rb +181 -95
- data/lib/roby/state/goal_model.rb +77 -0
- data/lib/roby/state/open_struct.rb +591 -0
- data/lib/roby/state/open_struct_model.rb +68 -0
- data/lib/roby/state/pos.rb +45 -45
- data/lib/roby/state/shapes.rb +11 -11
- data/lib/roby/state/state_model.rb +303 -0
- data/lib/roby/state/task.rb +43 -0
- data/lib/roby/support.rb +88 -148
- data/lib/roby/task.rb +1361 -1750
- data/lib/roby/task_arguments.rb +428 -0
- data/lib/roby/task_event.rb +127 -0
- data/lib/roby/task_event_generator.rb +337 -0
- data/lib/roby/task_service.rb +6 -0
- data/lib/roby/task_structure/conflicts.rb +104 -0
- data/lib/roby/task_structure/dependency.rb +932 -0
- data/lib/roby/task_structure/error_handling.rb +118 -0
- data/lib/roby/task_structure/executed_by.rb +234 -0
- data/lib/roby/task_structure/planned_by.rb +90 -0
- data/lib/roby/tasks/aggregator.rb +37 -0
- data/lib/roby/tasks/external_process.rb +275 -0
- data/lib/roby/tasks/group.rb +27 -0
- data/lib/roby/tasks/null.rb +19 -0
- data/lib/roby/tasks/parallel.rb +43 -0
- data/lib/roby/tasks/sequence.rb +88 -0
- data/lib/roby/tasks/simple.rb +21 -0
- data/lib/roby/{thread_task.rb → tasks/thread.rb} +50 -24
- data/lib/roby/tasks/timeout.rb +17 -0
- data/lib/roby/tasks/virtual.rb +55 -0
- data/lib/roby/template_plan.rb +7 -0
- data/lib/roby/test/aruba_minitest.rb +74 -0
- data/lib/roby/test/assertion.rb +16 -0
- data/lib/roby/test/assertions.rb +490 -0
- data/lib/roby/test/common.rb +368 -591
- data/lib/roby/test/dsl.rb +149 -0
- data/lib/roby/test/error.rb +18 -0
- data/lib/roby/test/event_reporter.rb +83 -0
- data/lib/roby/test/execution_expectations.rb +1134 -0
- data/lib/roby/test/expect_execution.rb +151 -0
- data/lib/roby/test/minitest_helpers.rb +166 -0
- data/lib/roby/test/roby_app_helpers.rb +200 -0
- data/lib/roby/test/run_planners.rb +155 -0
- data/lib/roby/test/self.rb +112 -0
- data/lib/roby/test/spec.rb +198 -0
- data/lib/roby/test/tasks/empty_task.rb +4 -4
- data/lib/roby/test/tasks/goto.rb +28 -27
- data/lib/roby/test/teardown_plans.rb +100 -0
- data/lib/roby/test/testcase.rb +239 -307
- data/lib/roby/test/tools.rb +159 -155
- data/lib/roby/test/validate_state_machine.rb +75 -0
- data/lib/roby/transaction.rb +1125 -0
- data/lib/roby/transaction/event_generator_proxy.rb +63 -0
- data/lib/roby/transaction/plan_object_proxy.rb +99 -0
- data/lib/roby/transaction/plan_service_proxy.rb +43 -0
- data/lib/roby/transaction/proxying.rb +120 -0
- data/lib/roby/transaction/task_event_generator_proxy.rb +19 -0
- data/lib/roby/transaction/task_proxy.rb +135 -0
- data/lib/roby/until_generator.rb +30 -0
- data/lib/roby/version.rb +5 -0
- data/lib/roby/yard.rb +169 -0
- data/lib/yard-roby.rb +1 -0
- data/manifest.xml +32 -6
- data/roby.gemspec +59 -0
- metadata +788 -587
- data/Manifest.txt +0 -321
- data/NOTES +0 -4
- data/README.txt +0 -166
- data/TODO.txt +0 -146
- data/app/README.txt +0 -24
- data/app/Rakefile +0 -8
- data/app/config/ROBOT.rb +0 -5
- data/app/config/init.rb +0 -33
- data/app/config/roby.yml +0 -3
- data/app/controllers/ROBOT.rb +0 -2
- data/app/planners/ROBOT/main.rb +0 -6
- data/app/planners/main.rb +0 -5
- data/app/scripts/distributed +0 -3
- data/app/scripts/generate/bookmarks +0 -3
- data/app/scripts/replay +0 -3
- data/app/scripts/results +0 -3
- data/app/scripts/run +0 -3
- data/app/scripts/server +0 -3
- data/app/scripts/shell +0 -3
- data/app/scripts/test +0 -3
- data/app/tasks/.gitattributes +0 -0
- data/app/tasks/ROBOT/.gitattributes +0 -0
- data/bin/roby-shell +0 -25
- data/doc/guide/src/basics/app.page +0 -139
- data/doc/guide/src/basics/index.page +0 -11
- data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
- data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
- data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
- data/doc/guide/src/basics/relations_display.page +0 -203
- data/doc/guide/src/basics/shell.page +0 -102
- data/doc/guide/src/default.css +0 -319
- data/doc/guide/src/introduction/index.page +0 -29
- data/doc/guide/src/introduction/publications.page +0 -14
- data/doc/guide/src/relations/dependency.page +0 -89
- data/doc/guide/src/relations/index.page +0 -12
- data/ext/droby/dump.cc +0 -175
- data/ext/droby/extconf.rb +0 -3
- data/ext/graph/algorithm.cc +0 -746
- data/ext/graph/extconf.rb +0 -7
- data/ext/graph/graph.cc +0 -575
- data/ext/graph/graph.hh +0 -183
- data/ext/graph/iterator_sequence.hh +0 -102
- data/ext/graph/undirected_dfs.hh +0 -226
- data/ext/graph/undirected_graph.hh +0 -421
- data/lib/roby/app/scripts/generate/bookmarks.rb +0 -162
- data/lib/roby/app/scripts/replay.rb +0 -31
- data/lib/roby/app/scripts/server.rb +0 -18
- data/lib/roby/basic_object.rb +0 -151
- data/lib/roby/config.rb +0 -14
- data/lib/roby/distributed.rb +0 -36
- data/lib/roby/distributed/base.rb +0 -448
- data/lib/roby/distributed/communication.rb +0 -875
- data/lib/roby/distributed/connection_space.rb +0 -616
- data/lib/roby/distributed/distributed_object.rb +0 -206
- data/lib/roby/distributed/drb.rb +0 -62
- data/lib/roby/distributed/notifications.rb +0 -531
- data/lib/roby/distributed/peer.rb +0 -555
- data/lib/roby/distributed/protocol.rb +0 -529
- data/lib/roby/distributed/proxy.rb +0 -343
- data/lib/roby/distributed/subscription.rb +0 -311
- data/lib/roby/distributed/transaction.rb +0 -498
- data/lib/roby/external_process_task.rb +0 -225
- data/lib/roby/graph.rb +0 -160
- data/lib/roby/log.rb +0 -3
- data/lib/roby/log/chronicle.rb +0 -303
- data/lib/roby/log/console.rb +0 -74
- data/lib/roby/log/data_stream.rb +0 -275
- data/lib/roby/log/dot.rb +0 -279
- data/lib/roby/log/event_stream.rb +0 -161
- data/lib/roby/log/file.rb +0 -396
- data/lib/roby/log/gui/basic_display.ui +0 -83
- data/lib/roby/log/gui/basic_display_ui.rb +0 -89
- data/lib/roby/log/gui/chronicle.rb +0 -26
- data/lib/roby/log/gui/chronicle_view.rb +0 -40
- data/lib/roby/log/gui/chronicle_view.ui +0 -70
- data/lib/roby/log/gui/chronicle_view_ui.rb +0 -90
- data/lib/roby/log/gui/data_displays.rb +0 -171
- data/lib/roby/log/gui/data_displays.ui +0 -155
- data/lib/roby/log/gui/data_displays_ui.rb +0 -146
- data/lib/roby/log/gui/notifications.rb +0 -26
- data/lib/roby/log/gui/relations.rb +0 -269
- data/lib/roby/log/gui/relations.ui +0 -123
- data/lib/roby/log/gui/relations_ui.rb +0 -120
- data/lib/roby/log/gui/relations_view.rb +0 -185
- data/lib/roby/log/gui/relations_view.ui +0 -149
- data/lib/roby/log/gui/relations_view_ui.rb +0 -144
- data/lib/roby/log/gui/replay.rb +0 -366
- data/lib/roby/log/gui/replay_controls.rb +0 -206
- data/lib/roby/log/gui/replay_controls.ui +0 -282
- data/lib/roby/log/gui/replay_controls_ui.rb +0 -249
- data/lib/roby/log/gui/runtime.rb +0 -130
- data/lib/roby/log/hooks.rb +0 -186
- data/lib/roby/log/logger.rb +0 -203
- data/lib/roby/log/notifications.rb +0 -244
- data/lib/roby/log/plan_rebuilder.rb +0 -468
- data/lib/roby/log/relations.rb +0 -1084
- data/lib/roby/log/server.rb +0 -547
- data/lib/roby/log/sqlite.rb +0 -47
- data/lib/roby/log/timings.rb +0 -233
- data/lib/roby/plan-object.rb +0 -371
- data/lib/roby/planning.rb +0 -13
- data/lib/roby/planning/loops.rb +0 -309
- data/lib/roby/planning/model.rb +0 -1012
- data/lib/roby/planning/task.rb +0 -180
- data/lib/roby/query.rb +0 -655
- data/lib/roby/relations/conflicts.rb +0 -67
- data/lib/roby/relations/dependency.rb +0 -358
- data/lib/roby/relations/ensured.rb +0 -19
- data/lib/roby/relations/error_handling.rb +0 -22
- data/lib/roby/relations/events.rb +0 -7
- data/lib/roby/relations/executed_by.rb +0 -208
- data/lib/roby/relations/influence.rb +0 -10
- data/lib/roby/relations/planned_by.rb +0 -63
- data/lib/roby/state/information.rb +0 -55
- data/lib/roby/state/state.rb +0 -367
- data/lib/roby/task-operations.rb +0 -186
- data/lib/roby/task_index.rb +0 -80
- data/lib/roby/test/distributed.rb +0 -230
- data/lib/roby/test/tasks/simple_task.rb +0 -23
- data/lib/roby/transactions.rb +0 -507
- data/lib/roby/transactions/proxy.rb +0 -325
- data/plugins/fault_injection/History.txt +0 -4
- data/plugins/fault_injection/README.txt +0 -34
- data/plugins/fault_injection/Rakefile +0 -12
- data/plugins/fault_injection/TODO.txt +0 -0
- data/plugins/fault_injection/app.rb +0 -52
- data/plugins/fault_injection/fault_injection.rb +0 -89
- data/plugins/fault_injection/test/test_fault_injection.rb +0 -78
- data/plugins/subsystems/README.txt +0 -37
- data/plugins/subsystems/Rakefile +0 -13
- data/plugins/subsystems/app.rb +0 -182
- data/plugins/subsystems/test/app/README +0 -24
- data/plugins/subsystems/test/app/Rakefile +0 -8
- data/plugins/subsystems/test/app/config/app.yml +0 -71
- data/plugins/subsystems/test/app/config/init.rb +0 -12
- data/plugins/subsystems/test/app/config/roby.yml +0 -3
- data/plugins/subsystems/test/app/planners/main.rb +0 -20
- data/plugins/subsystems/test/app/scripts/distributed +0 -3
- data/plugins/subsystems/test/app/scripts/replay +0 -3
- data/plugins/subsystems/test/app/scripts/results +0 -3
- data/plugins/subsystems/test/app/scripts/run +0 -3
- data/plugins/subsystems/test/app/scripts/server +0 -3
- data/plugins/subsystems/test/app/scripts/shell +0 -3
- data/plugins/subsystems/test/app/scripts/test +0 -3
- data/plugins/subsystems/test/app/tasks/services.rb +0 -15
- data/plugins/subsystems/test/test_subsystems.rb +0 -78
- data/test/distributed/test_communication.rb +0 -195
- data/test/distributed/test_connection.rb +0 -284
- data/test/distributed/test_execution.rb +0 -378
- data/test/distributed/test_mixed_plan.rb +0 -341
- data/test/distributed/test_plan_notifications.rb +0 -238
- data/test/distributed/test_protocol.rb +0 -525
- data/test/distributed/test_query.rb +0 -106
- data/test/distributed/test_remote_plan.rb +0 -491
- data/test/distributed/test_transaction.rb +0 -466
- data/test/mockups/external_process +0 -28
- data/test/mockups/tasks.rb +0 -27
- data/test/planning/test_loops.rb +0 -432
- data/test/planning/test_model.rb +0 -427
- data/test/planning/test_task.rb +0 -126
- data/test/relations/test_conflicts.rb +0 -42
- data/test/relations/test_dependency.rb +0 -324
- data/test/relations/test_ensured.rb +0 -38
- data/test/relations/test_executed_by.rb +0 -224
- data/test/relations/test_planned_by.rb +0 -56
- data/test/suite_core.rb +0 -29
- data/test/suite_distributed.rb +0 -10
- data/test/suite_planning.rb +0 -4
- data/test/suite_relations.rb +0 -8
- data/test/tasks/test_external_process.rb +0 -126
- data/test/tasks/test_thread_task.rb +0 -70
- data/test/test_bgl.rb +0 -528
- data/test/test_event.rb +0 -969
- data/test/test_exceptions.rb +0 -591
- data/test/test_execution_engine.rb +0 -987
- data/test/test_gui.rb +0 -20
- data/test/test_interface.rb +0 -43
- data/test/test_log.rb +0 -125
- data/test/test_log_server.rb +0 -133
- data/test/test_plan.rb +0 -418
- data/test/test_query.rb +0 -424
- data/test/test_relations.rb +0 -260
- data/test/test_state.rb +0 -432
- data/test/test_support.rb +0 -16
- data/test/test_task.rb +0 -1181
- data/test/test_testcase.rb +0 -138
- data/test/test_transactions.rb +0 -610
- data/test/test_transactions_proxy.rb +0 -216
|
@@ -1,74 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<link rel="stylesheet" type="text/css" href="{relocatable: default.css}" />
|
|
11
|
-
<title>{title: }</title>
|
|
12
|
-
</head>
|
|
13
|
-
|
|
14
|
-
<body>
|
|
15
|
-
<div id="thetop">
|
|
16
|
-
<a id="top"></a>
|
|
17
|
-
<p class="hide">Skip to: <a href="#sitemenu" accesskey="2">Site menu</a> | <a href="#maincontent" accesskey="3">Main content</a></p>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div id="container">
|
|
21
|
-
<div id="main">
|
|
22
|
-
|
|
23
|
-
<div id="logo">
|
|
24
|
-
<h1>[<a href="{relocatable: /index.html}" accesskey="4">Roby</a>]</h1>
|
|
25
|
-
<span id="tagline">User's guide</span><BR />
|
|
26
|
-
for {execute_cmd: git describe --tags}
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
<div id="intro">
|
|
30
|
-
<h2><a id="maincontent"></a>Robot supervision and planning in Ruby</h2>
|
|
31
|
-
<!--
|
|
32
|
-
<p>Here could go a description of your website! Or a quick overview of the page!</p>
|
|
33
|
-
-->
|
|
34
|
-
</div>
|
|
35
|
-
<div class="clear"> </div>
|
|
36
|
-
|
|
37
|
-
<div class="navbar">
|
|
38
|
-
{breadcrumb_trail: }
|
|
39
|
-
<div>
|
|
40
|
-
<div class="previous">
|
|
41
|
-
{previous:: }<b>Previous</b>: %{previous}
|
|
42
|
-
</div>
|
|
43
|
-
<div class="next">
|
|
44
|
-
{next:: }<b>Next</b>: %{next}
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
<webgen:block name="navbar" notfound="ignore"/>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<h1>{title: }</h1>
|
|
51
|
-
<div class="clear"> </div>
|
|
52
|
-
<webgen:block name="content" />
|
|
53
|
-
<div class="navbar">
|
|
54
|
-
{breadcrumb_trail: }
|
|
55
|
-
<webgen:block name="navbar" notfound="ignore"/>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<div id="sidebar">
|
|
61
|
-
|
|
62
|
-
<h2 class="sidelink menuheader"><a id="sitemenu"></a>Main Menu</h2>
|
|
63
|
-
<div id="menu">{menu: {max_levels: 2, show_current_subtree_only: true, nested: true, used_nodes: files}}</div>
|
|
64
|
-
<br>
|
|
65
|
-
<a class="hide" href="#top" accesskey="1">Top of page</a>
|
|
66
|
-
|
|
67
|
-
</div>
|
|
68
|
-
<div class="clear"> </div>
|
|
69
|
-
</div>
|
|
70
|
-
|
|
71
|
-
<div id="footer"><p>© 2009 Sylvain Joyeux | Generated by <a href="http://webgen.rubyforge.org/">webgen</a> | Design by <a href="http://andreasviklund.com">Andreas Viklund</a></p></div>
|
|
72
|
-
|
|
73
|
-
</body>
|
|
74
|
-
</html>
|
|
1
|
+
---
|
|
2
|
+
template: base.template
|
|
3
|
+
--- name:content pipeline:blocks
|
|
4
|
+
<webgen:block name='content' />
|
|
5
|
+
|
|
6
|
+
--- name:leftbar
|
|
7
|
+
<div class="nav3">
|
|
8
|
+
{menu: {start_level: 1, max_levels: 2, show_current_subtree_only: true, nested: true, used_nodes: files}}
|
|
9
|
+
</div>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: The Forward relation
|
|
3
|
+
sort_info: 100
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Available as Roby::EventStructure::Forward
|
|
7
|
+
|
|
8
|
+
This relation is part of the Roby core relations, and therefore forward-related
|
|
9
|
+
methods are defined on the Roby::EventGenerator class directly.
|
|
10
|
+
|
|
11
|
+
Semantics
|
|
12
|
+
---------
|
|
13
|
+
The forward relation causes the emission of the child event when the source
|
|
14
|
+
event is emitted.
|
|
15
|
+
|
|
16
|
+
From a semantic point of view, the forward relation expresses a
|
|
17
|
+
__generalization__ of an event. I.e. it expresses that the set of situations
|
|
18
|
+
that cause the emission of the target event is a __superset__ of the situations
|
|
19
|
+
that cause the emission of the source event. Indeed, the target event will
|
|
20
|
+
_always_ be emitted when the source event is __and__ might be emitted in other
|
|
21
|
+
cases.
|
|
22
|
+
|
|
23
|
+
A direct example is the _stop_ event, which is forwarded from both _success_ and
|
|
24
|
+
_failed_.
|
|
25
|
+
|
|
26
|
+
There are two main use cases:
|
|
27
|
+
|
|
28
|
+
* the "horizontal" use case, usually within one task model. The forwarding
|
|
29
|
+
relation allows to create event categorization, creating more general
|
|
30
|
+
representations of specific situations, without losing the information of
|
|
31
|
+
the exact causes.
|
|
32
|
+
* the "vertical" use case, where events are forwarded between tasks. This
|
|
33
|
+
allows to create "interfaces" in the plan, where a given task accesses
|
|
34
|
+
other tasks only when they are directly associated to it. See [this
|
|
35
|
+
page](../building/patterns.html)
|
|
36
|
+
|
|
37
|
+
It is created with #forward_to
|
|
38
|
+
|
|
39
|
+
{coderay:: ruby}
|
|
40
|
+
special_case.forward_to(generalized_case)
|
|
41
|
+
{coderay}
|
|
42
|
+
|
|
43
|
+
The emission context is passed along, i.e.
|
|
44
|
+
|
|
45
|
+
{coderay:: ruby}
|
|
46
|
+
generalized = Roby::EventGenerator.new
|
|
47
|
+
generalized.on do |context|
|
|
48
|
+
puts context.inspect
|
|
49
|
+
emit
|
|
50
|
+
end
|
|
51
|
+
special_case.forward_to(generalized)
|
|
52
|
+
special_case.emit(42) # displays "[42]"
|
|
53
|
+
{coderay}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Task models
|
|
57
|
+
--------------
|
|
58
|
+
Forwards can be declared from within a task model by using Task.forward:
|
|
59
|
+
|
|
60
|
+
{coderay:: ruby}
|
|
61
|
+
class Move < Roby::Task
|
|
62
|
+
event :blocked
|
|
63
|
+
forward :blocked => :failed
|
|
64
|
+
end
|
|
65
|
+
{coderay}
|
|
66
|
+
|
|
67
|
+
Relationship to Scheduling
|
|
68
|
+
--------------------------
|
|
69
|
+
The forward relation has an influence on both [the basic and
|
|
70
|
+
temporal schedulers](../advanced_concepts/scheduling.html).
|
|
71
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Event Relations
|
|
3
|
+
sort_info: 0
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
This section is a reference for the event relations. As you should already know
|
|
7
|
+
now, these relations are used to build the plans that are executed by Roby.
|
|
8
|
+
|
|
9
|
+
The objects representing each of these relations are stored in
|
|
10
|
+
Roby::EventStructure. New relations are defined with Roby::EventStructure.relation
|
|
11
|
+
(whose documentation is in {rdoc_class: RelationGraph}).
|
|
12
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Scheduling Constraints
|
|
3
|
+
sort_info: 120
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Available as Roby::EventStructure::SchedulingConstraints
|
|
7
|
+
|
|
8
|
+
See {rdoc_class: EventStructure::SchedulingConstraintsGraphClass::Extension} for the list
|
|
9
|
+
of methods that are defined on Roby::EventGenerator and
|
|
10
|
+
{rdoc_class: EventStructure::SchedulingConstraintsGraphClass} for the methods accessible on the
|
|
11
|
+
relation graph.
|
|
12
|
+
|
|
13
|
+
Semantics
|
|
14
|
+
---------
|
|
15
|
+
The scheduling constraint network allows to specify that an event _b_ can be
|
|
16
|
+
scheduled only if _a_ can be scheduled, ignoring in this particular case all
|
|
17
|
+
temporal constraints on _a_ that are due to _b_.
|
|
18
|
+
|
|
19
|
+
This is usually used to delay the startup of planning tasks until the actual
|
|
20
|
+
task is needed. Let's imagine a simple [planning
|
|
21
|
+
pattern](../building/runtime.html#planning-pattern). A common case is to
|
|
22
|
+
require the planner to be called only when the task is actually needed. However,
|
|
23
|
+
this cannot be specified by temporal constraints as the task itself requires the
|
|
24
|
+
planning to be finished to start.
|
|
25
|
+
|
|
26
|
+
This situation would be encoded by mixing temporal and scheduling constraints:
|
|
27
|
+
|
|
28
|
+
{coderay:: ruby}
|
|
29
|
+
planned_task.should_start_after planning_task
|
|
30
|
+
planning_task.start_event.schedule_as(planned_task.start_event)
|
|
31
|
+
{coderay}
|
|
32
|
+
|
|
33
|
+
Error Conditions
|
|
34
|
+
----------------
|
|
35
|
+
This is used only as hints for scheduling, and therefore does not really specify
|
|
36
|
+
hard constraints
|
|
37
|
+
|
|
38
|
+
Relationship to Scheduling
|
|
39
|
+
--------------------------
|
|
40
|
+
The scheduling relation has an influence on [the temporal
|
|
41
|
+
scheduler](../advanced_concepts/scheduling.html).
|
|
42
|
+
|
|
43
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: The Signal relation
|
|
3
|
+
sort_info: 90
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Available as Roby::EventStructure::Signal
|
|
7
|
+
|
|
8
|
+
This relation is part of the Roby core relations, and therefore signal-related
|
|
9
|
+
methods are defined on the Roby::EventGenerator class directly.
|
|
10
|
+
|
|
11
|
+
Semantics
|
|
12
|
+
---------
|
|
13
|
+
The signal relation expresses a reaction to an event in the form of calling the
|
|
14
|
+
command of another controllable event.
|
|
15
|
+
|
|
16
|
+
It is created with #signals
|
|
17
|
+
|
|
18
|
+
{coderay:: ruby}
|
|
19
|
+
cause.signals(controllable_event)
|
|
20
|
+
{coderay}
|
|
21
|
+
|
|
22
|
+
Once this relation is createdm, he command of controllable_event is going to be
|
|
23
|
+
called each time the _cause_ event is emitted.
|
|
24
|
+
|
|
25
|
+
The emission context is passed to the command, i.e.
|
|
26
|
+
|
|
27
|
+
{coderay:: ruby}
|
|
28
|
+
controllable_event = Roby::EventGenerator.new do |context|
|
|
29
|
+
puts context.inspect
|
|
30
|
+
emit
|
|
31
|
+
end
|
|
32
|
+
cause.signals(controllable_event)
|
|
33
|
+
cause.emit(42) # displays "[42]"
|
|
34
|
+
{coderay}
|
|
35
|
+
|
|
36
|
+
Task models
|
|
37
|
+
--------------
|
|
38
|
+
Signals can be declared from within a task model by using the Task.signals:
|
|
39
|
+
|
|
40
|
+
{coderay:: ruby}
|
|
41
|
+
class Task < Roby::Task
|
|
42
|
+
event :blocked
|
|
43
|
+
event :replan do |context|
|
|
44
|
+
puts "doing replanning"
|
|
45
|
+
emit :replan
|
|
46
|
+
end
|
|
47
|
+
signals :blocked => :replan
|
|
48
|
+
end
|
|
49
|
+
{coderay}
|
|
50
|
+
|
|
51
|
+
Relationship to Scheduling
|
|
52
|
+
--------------------------
|
|
53
|
+
The signal relation has an influence on both [the basic and
|
|
54
|
+
temporal schedulers](../advanced_concepts/scheduling.html).
|
|
55
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Temporal Constraints
|
|
3
|
+
sort_info: 110
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Available as Roby::EventStructure::TemporalConstraints
|
|
7
|
+
|
|
8
|
+
See {rdoc_class: EventStructure::TemporalConstraintsGraphClass::Extension} for the list
|
|
9
|
+
of methods that are defined on Roby::EventGenerator and
|
|
10
|
+
{rdoc_class: EventStructure::TemporalConstraintsGraphClass} for the methods accessible on the
|
|
11
|
+
relation graph.
|
|
12
|
+
|
|
13
|
+
Semantics
|
|
14
|
+
---------
|
|
15
|
+
This relation allows to encode two type of related constraints:
|
|
16
|
+
|
|
17
|
+
* temporal relationships such as __emission of event 1 should happen within 2
|
|
18
|
+
minutes of emission of event 2__.
|
|
19
|
+
* constraints of occurence, such as __event 1 should be emitted at least twice
|
|
20
|
+
before event 2 is emitted__
|
|
21
|
+
|
|
22
|
+
The temporal constraints are added with #add_temporal_constraint:
|
|
23
|
+
|
|
24
|
+
{coderay:: ruby}
|
|
25
|
+
# Specifies that if +ev1+ is emitted, then +ev2+ should be emitted within [0.2,
|
|
26
|
+
# 10] seconds. Note that emitting ev2 alone is fine.
|
|
27
|
+
ev1.add_temporal_constraint(ev2, 0.2, 10)
|
|
28
|
+
{coderay}
|
|
29
|
+
|
|
30
|
+
The exact semantic of the temporal constraint is one of a forward relation: it
|
|
31
|
+
constrains the emission of the target event __if__ the source event is emitted.
|
|
32
|
+
|
|
33
|
+
The second type of constraints allows to force the issue: one can specify with
|
|
34
|
+
__occurence constraints__ that, for ev2 to be emitted, ev1 should have be
|
|
35
|
+
emitted a certain number of times.
|
|
36
|
+
|
|
37
|
+
{coderay:: ruby}
|
|
38
|
+
# Specifies that +ev2+ can be emitted only if +ev1+ has already been emitted at
|
|
39
|
+
# least once. If an upper bound is needed, give it as second option
|
|
40
|
+
ev1.add_occurence_constraint(ev2, 1)
|
|
41
|
+
ev1.add_occurence_constraint(ev2, 1, 10)
|
|
42
|
+
{coderay}
|
|
43
|
+
|
|
44
|
+
The most common case (by far) is to specify an ordering between two events. This
|
|
45
|
+
is done by #should_emit_after:
|
|
46
|
+
|
|
47
|
+
{coderay:: ruby}
|
|
48
|
+
ev2.should_emit_after(ev1)
|
|
49
|
+
# Equivalent to
|
|
50
|
+
# ev1.add_occurence_constraint(ev2, 1)
|
|
51
|
+
# ev1.add_temporal_constraint(ev2, 0, Infinity)
|
|
52
|
+
{coderay}
|
|
53
|
+
|
|
54
|
+
There is also a shortcut between tasks with #should_start_after
|
|
55
|
+
|
|
56
|
+
{coderay:: ruby}
|
|
57
|
+
task.should_start_after(event_or_task)
|
|
58
|
+
{coderay}
|
|
59
|
+
|
|
60
|
+
Error Conditions
|
|
61
|
+
----------------
|
|
62
|
+
The temporal constraint relation has two ways to report error:
|
|
63
|
+
|
|
64
|
+
* an event is emitted outside of its allowed range. Either
|
|
65
|
+
TemporalConstraintViolation or OccurenceConstraintViolation errors are
|
|
66
|
+
injected in the plan, using the event as their source.
|
|
67
|
+
* an event has not been emitted but should have according to the temporal
|
|
68
|
+
constraints. In the ev1.add_temporal_constraint(ev2, 0.2, 10) example, ev2
|
|
69
|
+
did not emit after 10 seconds of ev1's emission. The MissedDeadlineError
|
|
70
|
+
error is generated, with the relevant generator as its source point.
|
|
71
|
+
|
|
72
|
+
Relationship to Scheduling
|
|
73
|
+
--------------------------
|
|
74
|
+
The temporal constraint relation has an influence on [the temporal
|
|
75
|
+
scheduler](../advanced_concepts/scheduling.html).
|
|
76
|
+
|
|
77
|
+
|
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
index.page:
|
|
2
|
+
sort_info: 0
|
|
3
|
+
/installation:
|
|
4
|
+
sort_info: 25
|
|
5
|
+
/concepts:
|
|
2
6
|
sort_info: 50
|
|
3
|
-
/
|
|
7
|
+
/tutorial:
|
|
4
8
|
sort_info: 100
|
|
5
|
-
/
|
|
6
|
-
|
|
9
|
+
/building:
|
|
10
|
+
sort_info: 150
|
|
11
|
+
/interacting:
|
|
12
|
+
sort_info: 160
|
|
13
|
+
/advanced_concepts:
|
|
14
|
+
sort_info: 170
|
|
15
|
+
/event_relations:
|
|
16
|
+
sort_info: 180
|
|
17
|
+
/task_relations:
|
|
7
18
|
sort_info: 200
|
|
8
|
-
|
|
9
|
-
sort_info: 300
|
|
10
|
-
/relations:
|
|
11
|
-
sort_info: 400
|
|
19
|
+
|
|
12
20
|
/plugins:
|
|
13
21
|
sort_info: 950
|
|
22
|
+
/plugins/standard_plugins/index.page:
|
|
23
|
+
in_menu: false
|
|
14
24
|
|
|
15
25
|
/introduction/index.page:
|
|
16
26
|
in_menu: false
|
|
@@ -18,3 +28,6 @@
|
|
|
18
28
|
/*/index.page:
|
|
19
29
|
in_menu: false
|
|
20
30
|
|
|
31
|
+
|
|
32
|
+
/attic:
|
|
33
|
+
in_menu: false
|
data/doc/guide/src/index.page
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
routed_title: Table of Contents
|
|
2
|
+
title: What is Roby?
|
|
4
3
|
sort_info: 0
|
|
5
4
|
---
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
Roby is a plan manager: it allows to represent, execute and adapt a plan, which
|
|
7
|
+
is a representation of the past, present and future activities of a robot along
|
|
8
|
+
with the information needed to verify that their execution is going well, and to
|
|
9
|
+
manage errors.
|
|
10
|
+
|
|
11
|
+
If you are new to Roby, go first to the [concepts](concepts/index.html) page.
|
|
12
|
+
You can then go on with the [tutorial](tutorial/index.html)
|
|
@@ -1,29 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Installation
|
|
3
3
|
sort_info: 100
|
|
4
|
-
---
|
|
5
|
-
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Installation in Rock
|
|
7
|
+
--------------------
|
|
8
|
+
|
|
9
|
+
Roby is one of the underlying tools of the Rock robot development environment.
|
|
10
|
+
It gets installed along with the rock toolchain. Check it out !
|
|
11
|
+
(http://rock-robotics.org)
|
|
12
|
+
|
|
13
|
+
External dependencies
|
|
14
|
+
---------------------
|
|
6
15
|
Roby requires ruby version 1.8.6 or 1.8.7. Ruby 1.9 is a work in progress, but
|
|
7
16
|
will not work with this release
|
|
8
17
|
|
|
9
18
|
* The Roby engine needs
|
|
10
|
-
* +utilrb+, which is available
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
*
|
|
19
|
+
* +utilrb+, which is available as a RubyGem or on
|
|
20
|
+
[gitorious](git://gitorious.org/orocos-toolchain/utilrb.git)
|
|
21
|
+
* Facets, available as a RubyGem
|
|
22
|
+
* ActiveSupport, available as a RubyGem
|
|
23
|
+
* the [Boost C++ library](http://www.boost.org), including Boost/Graph
|
|
14
24
|
|
|
15
25
|
* the documentation generation requires
|
|
16
26
|
* the RDoc gem (not the default RDoc) for the generation of the API
|
|
17
|
-
* the webgen gem with coderay
|
|
27
|
+
* the webgen gem with coderay for the generation of the user's
|
|
18
28
|
guide
|
|
19
29
|
|
|
20
30
|
* the test suite needs also
|
|
21
|
-
* FlexMock, available
|
|
31
|
+
* FlexMock, available as a RubyGem
|
|
22
32
|
|
|
23
|
-
* finally, the GUI requires
|
|
33
|
+
* finally, the GUI requires [QtRuby >= 1.4.9](http://rubyforge.org/projects/korundum), SVG export requires QtRuby to
|
|
24
34
|
be built with Qt >= 4.3
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
Before installation
|
|
37
|
+
-------------------
|
|
27
38
|
|
|
28
39
|
Before doing anything else, you will need to have the C++ dependencies listed
|
|
29
40
|
above installed on your system:
|
|
@@ -34,7 +45,8 @@ See the next page for a step-by-step installation on Debian/Ubuntu.
|
|
|
34
45
|
|
|
35
46
|
All the rest can be installed with RubyGems
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
Setting the environment
|
|
49
|
+
-----------------------
|
|
38
50
|
|
|
39
51
|
As a first step, you should set you environment variables. This is done by
|
|
40
52
|
the following commands.
|
|
@@ -49,7 +61,8 @@ The +GEM_HOME+ and +ROBYHOME+ should be set to wherever you want these parts to
|
|
|
49
61
|
be installed. It would be wise to append these lines to your ~/.bashrc so that
|
|
50
62
|
they are executed each time you start a console.
|
|
51
63
|
|
|
52
|
-
|
|
64
|
+
Debian/Ubuntu: Installing binary dependencies with apt-get
|
|
65
|
+
----------------------------------------------------------
|
|
53
66
|
|
|
54
67
|
You can install those packages with the following line.
|
|
55
68
|
|
|
@@ -59,7 +72,8 @@ You can install those packages with the following line.
|
|
|
59
72
|
If you don't have administrative rights on your local pc, contact your system
|
|
60
73
|
administrator.
|
|
61
74
|
|
|
62
|
-
|
|
75
|
+
Install using RubyGems
|
|
76
|
+
----------------------
|
|
63
77
|
|
|
64
78
|
This is as simple as
|
|
65
79
|
|
|
@@ -70,7 +84,8 @@ the unit tests and/or to generate the user's guide, you will need to do
|
|
|
70
84
|
|
|
71
85
|
gem install --development roby
|
|
72
86
|
|
|
73
|
-
|
|
87
|
+
Install the development code from Gitorious
|
|
88
|
+
-------------------------------------------
|
|
74
89
|
|
|
75
90
|
To do this, you will need to install Roby's gems dependencies yourself. This is
|
|
76
91
|
as simple as
|
|
@@ -78,32 +93,28 @@ as simple as
|
|
|
78
93
|
gem install rake utilrb facets activesupport rdoc webgen maruku coderay flexmock
|
|
79
94
|
|
|
80
95
|
All you have to do now is changing into your development folder and clone
|
|
81
|
-
the
|
|
96
|
+
the gitorious repository for roby.
|
|
82
97
|
|
|
83
|
-
git clone git://
|
|
98
|
+
git clone git://gitorious.org/rock-toolchain/roby.git roby
|
|
84
99
|
|
|
85
100
|
The last parameter (+roby+) is the folder which should be created to put
|
|
86
101
|
roby's files in. You can easily adjust this to your needs.
|
|
87
102
|
|
|
88
103
|
+cd+ into the newly created roby folder.
|
|
89
104
|
|
|
90
|
-
To work on the development version of roby, check it out with
|
|
91
|
-
|
|
92
|
-
git checkout -b next origin/next
|
|
93
|
-
|
|
94
|
-
Otherwise just stay on the default master branch.
|
|
95
105
|
To finally have a running copy of roby, run
|
|
96
106
|
|
|
97
107
|
rake setup
|
|
98
108
|
|
|
99
109
|
to compile roby on your workstation and you're done. Additionally, you can run
|
|
100
110
|
|
|
101
|
-
rake
|
|
111
|
+
rake doc:all
|
|
102
112
|
|
|
103
113
|
To generate HTML documentation of Roby and its core plugins. The documentation
|
|
104
114
|
is generated in doc/html
|
|
105
115
|
|
|
106
|
-
|
|
116
|
+
Staying up to date
|
|
117
|
+
------------------
|
|
107
118
|
|
|
108
119
|
To grab the newest updates of roby just change into your robyfolder and run
|
|
109
120
|
|
|
@@ -116,11 +127,12 @@ you must run
|
|
|
116
127
|
|
|
117
128
|
again.
|
|
118
129
|
|
|
119
|
-
|
|
130
|
+
Generating the documentation
|
|
131
|
+
----------------------------
|
|
120
132
|
|
|
121
133
|
To generate the documentation, you will need to install the following gems:
|
|
122
134
|
|
|
123
|
-
gem install webgen
|
|
135
|
+
gem install webgen rdoc coderay
|
|
124
136
|
|
|
125
137
|
Then, the following commands allow to generate separate parts of the
|
|
126
138
|
documentation:
|