roby 0.8.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (644) hide show
  1. checksums.yaml +7 -0
  2. data/.deep-cover.rb +3 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +24 -0
  5. data/.simplecov +10 -0
  6. data/.travis.yml +17 -0
  7. data/.yardopts +4 -0
  8. data/Gemfile +15 -0
  9. data/README.md +11 -0
  10. data/Rakefile +47 -177
  11. data/benchmark/{alloc_misc.rb → attic/alloc_misc.rb} +2 -2
  12. data/benchmark/{discovery_latency.rb → attic/discovery_latency.rb} +19 -19
  13. data/benchmark/{garbage_collection.rb → attic/garbage_collection.rb} +9 -9
  14. data/benchmark/{genom.rb → attic/genom.rb} +0 -0
  15. data/benchmark/attic/transactions.rb +62 -0
  16. data/benchmark/plan_basic_operations.rb +28 -0
  17. data/benchmark/relations/graph.rb +63 -0
  18. data/benchmark/ruby/identity.rb +18 -0
  19. data/benchmark/ruby/set_intersect_vs_hash_merge.rb +39 -0
  20. data/benchmark/ruby/yield_vs_block.rb +35 -0
  21. data/benchmark/run +5 -0
  22. data/benchmark/synthetic_plan_modifications_with_transactions.rb +79 -0
  23. data/benchmark/transactions.rb +99 -51
  24. data/bin/roby +38 -197
  25. data/bin/roby-display +14 -0
  26. data/bin/roby-log +3 -176
  27. data/doc/guide/{src → attic}/abstraction/achieve_with.page +1 -1
  28. data/doc/guide/{src → attic}/abstraction/forwarding.page +1 -1
  29. data/doc/guide/{src → attic}/abstraction/hierarchy.page +1 -1
  30. data/doc/guide/{src → attic}/abstraction/index.page +1 -1
  31. data/doc/guide/{src → attic}/abstraction/task_models.page +1 -1
  32. data/doc/guide/{overview.rdoc → attic/cycle/api_overview.rdoc} +6 -1
  33. data/doc/guide/{src → attic}/cycle/cycle-overview.png +0 -0
  34. data/doc/guide/{src → attic}/cycle/cycle-overview.svg +0 -0
  35. data/doc/guide/attic/cycle/error_handling.page +98 -0
  36. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.png +0 -0
  37. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.svg +0 -0
  38. data/doc/guide/{src/cycle/error_handling.page → attic/cycle/error_sources.page} +46 -89
  39. data/doc/guide/{src → attic}/cycle/garbage_collection.page +1 -1
  40. data/doc/guide/{src → attic}/cycle/index.page +1 -1
  41. data/doc/guide/{src → attic}/cycle/propagation.page +11 -1
  42. data/doc/guide/{src → attic}/cycle/propagation_diamond.png +0 -0
  43. data/doc/guide/{src → attic}/cycle/propagation_diamond.svg +0 -0
  44. data/doc/guide/attic/plans/building_plans.page +89 -0
  45. data/doc/guide/attic/plans/code.page +192 -0
  46. data/doc/guide/{src/basics → attic/plans}/events.page +3 -4
  47. data/doc/guide/attic/plans/index.page +7 -0
  48. data/doc/guide/{plan_modifications.rdoc → attic/plans/plan_modifications.rdoc} +5 -3
  49. data/doc/guide/{src/basics → attic/plans}/plan_objects.page +2 -1
  50. data/doc/guide/attic/plans/querying_plans.page +5 -0
  51. data/doc/guide/{src/basics → attic/plans}/tasks.page +20 -20
  52. data/doc/guide/config.yaml +7 -4
  53. data/doc/guide/ext/extended_menu.rb +29 -0
  54. data/doc/guide/ext/init.rb +6 -0
  55. data/doc/guide/ext/rdoc_links.rb +7 -6
  56. data/doc/guide/src/advanced_concepts/history.page +5 -0
  57. data/doc/guide/src/advanced_concepts/index.page +11 -0
  58. data/doc/guide/src/advanced_concepts/recognizing_patterns.page +83 -0
  59. data/doc/guide/src/advanced_concepts/scheduling.page +87 -0
  60. data/doc/guide/src/advanced_concepts/transactions.page +5 -0
  61. data/doc/guide/src/advanced_concepts/unreachability.page +42 -0
  62. data/doc/guide/src/base.template +96 -0
  63. data/doc/guide/src/basics_shell_header.txt +5 -7
  64. data/doc/guide/src/building/action_coordination.page +96 -0
  65. data/doc/guide/src/building/actions.page +124 -0
  66. data/doc/guide/src/building/file_layout.page +71 -0
  67. data/doc/guide/src/building/index.page +50 -0
  68. data/doc/guide/src/building/patterns.page +86 -0
  69. data/doc/guide/src/building/patterns_forwarding.png +0 -0
  70. data/doc/guide/src/building/patterns_forwarding.svg +277 -0
  71. data/doc/guide/src/building/runtime.page +95 -0
  72. data/doc/guide/src/building/task_models.page +94 -0
  73. data/doc/guide/src/building/tasks.page +284 -0
  74. data/doc/guide/src/concepts/error_handling.page +100 -0
  75. data/doc/guide/src/concepts/exception_propagation.png +0 -0
  76. data/doc/guide/src/concepts/exception_propagation.svg +445 -0
  77. data/doc/guide/src/concepts/execution.page +85 -0
  78. data/doc/guide/src/concepts/execution.png +0 -0
  79. data/doc/guide/src/concepts/execution.svg +573 -0
  80. data/doc/guide/src/concepts/execution_cycle.png +0 -0
  81. data/doc/guide/src/concepts/garbage_collection.page +57 -0
  82. data/doc/guide/src/concepts/index.page +27 -0
  83. data/doc/guide/src/concepts/plans.page +101 -0
  84. data/doc/guide/src/concepts/policy.page +31 -0
  85. data/doc/guide/src/concepts/reactor.page +61 -0
  86. data/doc/guide/src/concepts/simple_plan_example.png +0 -0
  87. data/doc/guide/src/concepts/simple_plan_example.svg +376 -0
  88. data/doc/guide/src/default.template +9 -74
  89. data/doc/guide/src/event_relations/forward.page +71 -0
  90. data/doc/guide/src/event_relations/index.page +12 -0
  91. data/doc/guide/src/event_relations/scheduling_constraints.page +43 -0
  92. data/doc/guide/src/event_relations/signal.page +55 -0
  93. data/doc/guide/src/event_relations/temporal_constraints.page +77 -0
  94. data/doc/guide/src/htmldoc.metainfo +21 -8
  95. data/doc/guide/src/index.page +8 -3
  96. data/doc/guide/src/{introduction/install.page → installation/index.page} +37 -25
  97. data/doc/guide/src/installation/publications.page +14 -0
  98. data/doc/guide/src/{introduction → installation}/videos.page +14 -7
  99. data/doc/guide/src/interacting/index.page +16 -0
  100. data/doc/guide/src/interacting/run.page +33 -0
  101. data/doc/guide/src/interacting/shell.page +95 -0
  102. data/doc/guide/src/plugins/creating_plugins.page +72 -0
  103. data/doc/guide/src/plugins/index.page +27 -5
  104. data/doc/guide/src/plugins/{fault_tolerance.page → standard_plugins/fault_tolerance.page} +2 -2
  105. data/doc/guide/src/plugins/standard_plugins/index.page +11 -0
  106. data/doc/guide/src/plugins/{subsystems.page → standard_plugins/subsystems.page} +2 -2
  107. data/doc/guide/src/style_screen.css +687 -0
  108. data/doc/guide/src/task_relations/dependency.page +107 -0
  109. data/doc/guide/src/task_relations/executed_by.page +77 -0
  110. data/doc/guide/src/task_relations/index.page +12 -0
  111. data/doc/guide/src/task_relations/new_relations.page +119 -0
  112. data/doc/guide/src/task_relations/planned_by.page +46 -0
  113. data/doc/guide/src/tutorial/app.page +117 -0
  114. data/doc/guide/src/{basics → tutorial}/code_examples.page +6 -5
  115. data/doc/guide/src/{basics → tutorial}/dry.page +15 -15
  116. data/doc/guide/src/{basics → tutorial}/errors.page +43 -68
  117. data/doc/guide/src/tutorial/events.page +195 -0
  118. data/doc/guide/src/{basics → tutorial}/hierarchy.page +53 -52
  119. data/doc/guide/src/tutorial/index.page +13 -0
  120. data/doc/guide/src/tutorial/log_replay/goForward_1.png +0 -0
  121. data/doc/guide/src/tutorial/log_replay/goForward_2.png +0 -0
  122. data/doc/guide/src/tutorial/log_replay/goForward_3.png +0 -0
  123. data/doc/guide/src/{basics → tutorial}/log_replay/goForward_4.png +0 -0
  124. data/doc/guide/src/tutorial/log_replay/goForward_5.png +0 -0
  125. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_1.png +0 -0
  126. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_2.png +0 -0
  127. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_3.png +0 -0
  128. data/doc/guide/src/tutorial/log_replay/moveto_code_error.png +0 -0
  129. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_1.png +0 -0
  130. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_2.png +0 -0
  131. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_3.png +0 -0
  132. data/doc/guide/src/tutorial/log_replay/plan_repair_4.png +0 -0
  133. data/doc/guide/src/tutorial/log_replay/roby_log_main_window.png +0 -0
  134. data/doc/guide/src/{basics → tutorial}/log_replay/roby_log_relation_window.png +0 -0
  135. data/doc/guide/src/{basics → tutorial}/log_replay/roby_replay_event_representation.png +0 -0
  136. data/doc/guide/src/tutorial/relations_display.page +153 -0
  137. data/doc/guide/src/{basics → tutorial}/roby_cycle_overview.png +0 -0
  138. data/doc/guide/src/tutorial/shell.page +121 -0
  139. data/doc/guide/src/{basics → tutorial}/summary.page +1 -1
  140. data/doc/guide/src/tutorial/tasks.page +374 -0
  141. data/lib/roby.rb +102 -47
  142. data/lib/roby/actions.rb +17 -0
  143. data/lib/roby/actions/action.rb +80 -0
  144. data/lib/roby/actions/interface.rb +45 -0
  145. data/lib/roby/actions/library.rb +23 -0
  146. data/lib/roby/actions/models/action.rb +224 -0
  147. data/lib/roby/actions/models/coordination_action.rb +58 -0
  148. data/lib/roby/actions/models/interface.rb +22 -0
  149. data/lib/roby/actions/models/interface_base.rb +294 -0
  150. data/lib/roby/actions/models/library.rb +12 -0
  151. data/lib/roby/actions/models/method_action.rb +90 -0
  152. data/lib/roby/actions/task.rb +114 -0
  153. data/lib/roby/and_generator.rb +125 -0
  154. data/lib/roby/app.rb +2795 -829
  155. data/lib/roby/app/autotest_console_reporter.rb +138 -0
  156. data/lib/roby/app/base.rb +21 -0
  157. data/lib/roby/app/cucumber.rb +2 -0
  158. data/lib/roby/app/cucumber/controller.rb +439 -0
  159. data/lib/roby/app/cucumber/helpers.rb +280 -0
  160. data/lib/roby/app/cucumber/world.rb +32 -0
  161. data/lib/roby/app/debug.rb +136 -0
  162. data/lib/roby/app/gen.rb +2 -0
  163. data/lib/roby/app/rake.rb +178 -38
  164. data/lib/roby/app/robot_config.rb +9 -0
  165. data/lib/roby/app/robot_names.rb +115 -0
  166. data/lib/roby/app/run.rb +3 -2
  167. data/lib/roby/app/scripts.rb +72 -0
  168. data/lib/roby/app/scripts/autotest.rb +173 -0
  169. data/lib/roby/app/scripts/display.rb +2 -0
  170. data/lib/roby/app/scripts/restart.rb +52 -0
  171. data/lib/roby/app/scripts/results.rb +17 -8
  172. data/lib/roby/app/scripts/run.rb +155 -24
  173. data/lib/roby/app/scripts/shell.rb +147 -62
  174. data/lib/roby/app/scripts/test.rb +107 -22
  175. data/lib/roby/app/test_reporter.rb +74 -0
  176. data/lib/roby/app/test_server.rb +159 -0
  177. data/lib/roby/app/vagrant.rb +47 -0
  178. data/lib/roby/backports.rb +16 -0
  179. data/lib/roby/cli/display.rb +190 -0
  180. data/lib/roby/cli/exceptions.rb +17 -0
  181. data/lib/roby/cli/gen/actions/class.rb +5 -0
  182. data/lib/roby/cli/gen/actions/test.rb +6 -0
  183. data/lib/roby/cli/gen/app/.yardopts +6 -0
  184. data/lib/roby/cli/gen/app/README.md +28 -0
  185. data/lib/roby/cli/gen/app/Rakefile +15 -0
  186. data/{app → lib/roby/cli/gen/app}/config/app.yml +29 -39
  187. data/lib/roby/cli/gen/app/models/.gitattributes +1 -0
  188. data/{app → lib/roby/cli/gen/app/scripts}/controllers/.gitattributes +0 -0
  189. data/{app/data/.gitattributes → lib/roby/cli/gen/app/test/.gitignore} +0 -0
  190. data/lib/roby/cli/gen/class/class.rb +6 -0
  191. data/lib/roby/cli/gen/class/test.rb +7 -0
  192. data/lib/roby/cli/gen/helpers.rb +203 -0
  193. data/lib/roby/cli/gen/module/module.rb +5 -0
  194. data/lib/roby/cli/gen/module/test.rb +6 -0
  195. data/lib/roby/cli/gen/roby_app/config/init.rb +17 -0
  196. data/lib/roby/cli/gen/roby_app/config/robots/robot.rb +40 -0
  197. data/lib/roby/cli/gen/task/class.rb +44 -0
  198. data/lib/roby/cli/gen/task/test.rb +6 -0
  199. data/lib/roby/cli/gen_main.rb +120 -0
  200. data/lib/roby/cli/log.rb +276 -0
  201. data/lib/roby/cli/log/flamegraph.html +499 -0
  202. data/lib/roby/cli/log/flamegraph_renderer.rb +88 -0
  203. data/lib/roby/cli/main.rb +153 -0
  204. data/lib/roby/coordination.rb +60 -0
  205. data/lib/roby/coordination/action_script.rb +25 -0
  206. data/lib/roby/coordination/action_state_machine.rb +125 -0
  207. data/lib/roby/coordination/actions.rb +106 -0
  208. data/lib/roby/coordination/base.rb +145 -0
  209. data/lib/roby/coordination/calculus.rb +40 -0
  210. data/lib/roby/coordination/child.rb +28 -0
  211. data/lib/roby/coordination/event.rb +29 -0
  212. data/lib/roby/coordination/fault_handler.rb +25 -0
  213. data/lib/roby/coordination/fault_handling_task.rb +13 -0
  214. data/lib/roby/coordination/fault_response_table.rb +110 -0
  215. data/lib/roby/coordination/models/action_script.rb +64 -0
  216. data/lib/roby/coordination/models/action_state_machine.rb +224 -0
  217. data/lib/roby/coordination/models/actions.rb +191 -0
  218. data/lib/roby/coordination/models/arguments.rb +55 -0
  219. data/lib/roby/coordination/models/base.rb +176 -0
  220. data/lib/roby/coordination/models/capture.rb +86 -0
  221. data/lib/roby/coordination/models/child.rb +35 -0
  222. data/lib/roby/coordination/models/event.rb +41 -0
  223. data/lib/roby/coordination/models/exceptions.rb +42 -0
  224. data/lib/roby/coordination/models/fault_handler.rb +219 -0
  225. data/lib/roby/coordination/models/fault_response_table.rb +77 -0
  226. data/lib/roby/coordination/models/root.rb +22 -0
  227. data/lib/roby/coordination/models/script.rb +283 -0
  228. data/lib/roby/coordination/models/task.rb +184 -0
  229. data/lib/roby/coordination/models/task_from_action.rb +50 -0
  230. data/lib/roby/coordination/models/task_from_as_plan.rb +33 -0
  231. data/lib/roby/coordination/models/task_from_instanciation_object.rb +31 -0
  232. data/lib/roby/coordination/models/task_from_variable.rb +27 -0
  233. data/lib/roby/coordination/models/task_with_dependencies.rb +48 -0
  234. data/lib/roby/coordination/models/variable.rb +32 -0
  235. data/lib/roby/coordination/script.rb +200 -0
  236. data/lib/roby/coordination/script_instruction.rb +12 -0
  237. data/lib/roby/coordination/task.rb +45 -0
  238. data/lib/roby/coordination/task_base.rb +69 -0
  239. data/lib/roby/coordination/task_script.rb +293 -0
  240. data/lib/roby/coordination/task_state_machine.rb +308 -0
  241. data/lib/roby/decision_control.rb +33 -21
  242. data/lib/roby/distributed_object.rb +76 -0
  243. data/lib/roby/droby.rb +17 -0
  244. data/lib/roby/droby/droby_id.rb +6 -0
  245. data/lib/roby/droby/enable.rb +153 -0
  246. data/lib/roby/droby/event_logger.rb +189 -0
  247. data/lib/roby/droby/event_logging.rb +57 -0
  248. data/lib/roby/droby/exceptions.rb +14 -0
  249. data/lib/roby/droby/identifiable.rb +22 -0
  250. data/lib/roby/droby/logfile.rb +141 -0
  251. data/lib/roby/droby/logfile/client.rb +176 -0
  252. data/lib/roby/droby/logfile/file_format.md +97 -0
  253. data/lib/roby/droby/logfile/index.rb +117 -0
  254. data/lib/roby/droby/logfile/reader.rb +139 -0
  255. data/lib/roby/droby/logfile/server.rb +199 -0
  256. data/lib/roby/droby/logfile/writer.rb +114 -0
  257. data/lib/roby/droby/marshal.rb +264 -0
  258. data/lib/roby/droby/marshallable.rb +12 -0
  259. data/lib/roby/droby/null_event_logger.rb +25 -0
  260. data/lib/roby/droby/object_manager.rb +205 -0
  261. data/lib/roby/droby/peer_id.rb +6 -0
  262. data/lib/roby/droby/plan_rebuilder.rb +373 -0
  263. data/lib/roby/droby/rebuilt_plan.rb +160 -0
  264. data/lib/roby/droby/remote_droby_id.rb +6 -0
  265. data/lib/roby/droby/timepoints.rb +205 -0
  266. data/lib/roby/droby/timepoints_ctf.metadata.erb +101 -0
  267. data/lib/roby/droby/timepoints_ctf.rb +125 -0
  268. data/lib/roby/droby/v5.rb +14 -0
  269. data/lib/roby/droby/v5/builtin.rb +120 -0
  270. data/lib/roby/droby/v5/droby_class.rb +45 -0
  271. data/lib/roby/droby/v5/droby_constant.rb +81 -0
  272. data/lib/roby/droby/v5/droby_dump.rb +1026 -0
  273. data/lib/roby/droby/v5/droby_id.rb +44 -0
  274. data/lib/roby/droby/v5/droby_model.rb +82 -0
  275. data/lib/roby/droby/v5/peer_id.rb +10 -0
  276. data/lib/roby/droby/v5/remote_droby_id.rb +42 -0
  277. data/lib/roby/event.rb +79 -957
  278. data/lib/roby/event_constraints.rb +835 -0
  279. data/lib/roby/event_generator.rb +1047 -0
  280. data/lib/roby/event_structure/causal_link.rb +6 -0
  281. data/lib/roby/event_structure/forwarding.rb +6 -0
  282. data/lib/roby/event_structure/precedence.rb +7 -0
  283. data/lib/roby/event_structure/signal.rb +8 -0
  284. data/lib/roby/event_structure/temporal_constraints.rb +640 -0
  285. data/lib/roby/exceptions.rb +446 -152
  286. data/lib/roby/executable_plan.rb +549 -0
  287. data/lib/roby/execution_engine.rb +1997 -950
  288. data/lib/roby/filter_generator.rb +26 -0
  289. data/lib/roby/gui/chronicle_view.rb +225 -0
  290. data/lib/roby/gui/chronicle_widget.rb +925 -0
  291. data/lib/roby/gui/dot_id.rb +11 -0
  292. data/lib/roby/gui/exception_view.rb +44 -0
  293. data/lib/roby/gui/log_display.rb +273 -0
  294. data/lib/roby/gui/model_views.rb +2 -0
  295. data/lib/roby/gui/model_views/action_interface.rb +53 -0
  296. data/lib/roby/gui/model_views/task.rb +47 -0
  297. data/lib/roby/gui/model_views/task.rhtml +41 -0
  298. data/lib/roby/gui/object_info_view.rb +89 -0
  299. data/lib/roby/gui/plan_dot_layout.rb +427 -0
  300. data/lib/roby/gui/plan_rebuilder_widget.rb +357 -0
  301. data/lib/roby/gui/qt4_toMSecsSinceEpoch.rb +8 -0
  302. data/lib/roby/gui/relations_view.rb +278 -0
  303. data/lib/roby/gui/relations_view/relations.ui +139 -0
  304. data/lib/roby/gui/relations_view/relations_canvas.rb +1088 -0
  305. data/lib/roby/gui/relations_view/relations_config.rb +292 -0
  306. data/lib/roby/gui/relations_view/relations_view.ui +53 -0
  307. data/lib/roby/gui/scheduler_view.css +24 -0
  308. data/lib/roby/gui/scheduler_view.rb +46 -0
  309. data/lib/roby/gui/scheduler_view.rhtml +53 -0
  310. data/lib/roby/gui/stepping.rb +93 -0
  311. data/lib/roby/gui/stepping.ui +181 -0
  312. data/lib/roby/gui/styles.rb +81 -0
  313. data/lib/roby/gui/task_display_configuration.rb +42 -0
  314. data/lib/roby/gui/task_state_at.rb +38 -0
  315. data/lib/roby/hooks.rb +26 -0
  316. data/lib/roby/interface.rb +136 -469
  317. data/lib/roby/interface/async.rb +20 -0
  318. data/lib/roby/interface/async/action_monitor.rb +188 -0
  319. data/lib/roby/interface/async/interface.rb +498 -0
  320. data/lib/roby/interface/async/job_monitor.rb +213 -0
  321. data/lib/roby/interface/async/log.rb +238 -0
  322. data/lib/roby/interface/async/new_job_listener.rb +79 -0
  323. data/lib/roby/interface/async/ui_connector.rb +183 -0
  324. data/lib/roby/interface/client.rb +553 -0
  325. data/lib/roby/interface/command.rb +24 -0
  326. data/lib/roby/interface/command_argument.rb +16 -0
  327. data/lib/roby/interface/command_library.rb +92 -0
  328. data/lib/roby/interface/droby_channel.rb +174 -0
  329. data/lib/roby/interface/exceptions.rb +22 -0
  330. data/lib/roby/interface/interface.rb +655 -0
  331. data/lib/roby/interface/job.rb +47 -0
  332. data/lib/roby/interface/rest.rb +10 -0
  333. data/lib/roby/interface/rest/api.rb +29 -0
  334. data/lib/roby/interface/rest/helpers.rb +24 -0
  335. data/lib/roby/interface/rest/server.rb +212 -0
  336. data/lib/roby/interface/server.rb +154 -0
  337. data/lib/roby/interface/shell_client.rb +468 -0
  338. data/lib/roby/interface/shell_subcommand.rb +24 -0
  339. data/lib/roby/interface/subcommand_client.rb +35 -0
  340. data/lib/roby/interface/tcp.rb +168 -0
  341. data/lib/roby/models/arguments.rb +112 -0
  342. data/lib/roby/models/plan_object.rb +83 -0
  343. data/lib/roby/models/task.rb +835 -0
  344. data/lib/roby/models/task_event.rb +62 -0
  345. data/lib/roby/models/task_service.rb +78 -0
  346. data/lib/roby/or_generator.rb +88 -0
  347. data/lib/roby/plan.rb +1751 -864
  348. data/lib/roby/plan_object.rb +611 -0
  349. data/lib/roby/plan_service.rb +200 -0
  350. data/lib/roby/promise.rb +332 -0
  351. data/lib/roby/queries.rb +23 -0
  352. data/lib/roby/queries/and_matcher.rb +32 -0
  353. data/lib/roby/queries/any.rb +27 -0
  354. data/lib/roby/queries/code_error_matcher.rb +58 -0
  355. data/lib/roby/queries/event_generator_matcher.rb +9 -0
  356. data/lib/roby/queries/execution_exception_matcher.rb +165 -0
  357. data/lib/roby/queries/index.rb +165 -0
  358. data/lib/roby/queries/localized_error_matcher.rb +149 -0
  359. data/lib/roby/queries/matcher_base.rb +107 -0
  360. data/lib/roby/queries/none.rb +27 -0
  361. data/lib/roby/queries/not_matcher.rb +30 -0
  362. data/lib/roby/queries/op_matcher.rb +8 -0
  363. data/lib/roby/queries/or_matcher.rb +30 -0
  364. data/lib/roby/queries/plan_object_matcher.rb +363 -0
  365. data/lib/roby/queries/query.rb +188 -0
  366. data/lib/roby/queries/task_event_generator_matcher.rb +86 -0
  367. data/lib/roby/queries/task_matcher.rb +344 -0
  368. data/lib/roby/relations.rb +42 -678
  369. data/lib/roby/relations/bidirectional_directed_adjacency_graph.rb +492 -0
  370. data/lib/roby/relations/directed_relation_support.rb +268 -0
  371. data/lib/roby/relations/event_relation_graph.rb +19 -0
  372. data/lib/roby/relations/fork_merge_visitor.rb +154 -0
  373. data/lib/roby/relations/graph.rb +533 -0
  374. data/lib/roby/relations/models/directed_relation_support.rb +11 -0
  375. data/lib/roby/relations/models/graph.rb +75 -0
  376. data/lib/roby/relations/models/task_relation_graph.rb +18 -0
  377. data/lib/roby/relations/space.rb +380 -0
  378. data/lib/roby/relations/task_relation_graph.rb +20 -0
  379. data/lib/roby/robot.rb +85 -38
  380. data/lib/roby/schedulers/basic.rb +155 -25
  381. data/lib/roby/schedulers/null.rb +20 -0
  382. data/lib/roby/schedulers/reporting.rb +31 -0
  383. data/lib/roby/schedulers/state.rb +129 -0
  384. data/lib/roby/schedulers/temporal.rb +91 -0
  385. data/lib/roby/singletons.rb +87 -0
  386. data/lib/roby/standalone.rb +4 -2
  387. data/lib/roby/standard_errors.rb +405 -82
  388. data/lib/roby/state.rb +6 -3
  389. data/lib/roby/state/conf_model.rb +5 -0
  390. data/lib/roby/state/events.rb +181 -95
  391. data/lib/roby/state/goal_model.rb +77 -0
  392. data/lib/roby/state/open_struct.rb +591 -0
  393. data/lib/roby/state/open_struct_model.rb +68 -0
  394. data/lib/roby/state/pos.rb +45 -45
  395. data/lib/roby/state/shapes.rb +11 -11
  396. data/lib/roby/state/state_model.rb +303 -0
  397. data/lib/roby/state/task.rb +43 -0
  398. data/lib/roby/support.rb +88 -148
  399. data/lib/roby/task.rb +1361 -1750
  400. data/lib/roby/task_arguments.rb +428 -0
  401. data/lib/roby/task_event.rb +127 -0
  402. data/lib/roby/task_event_generator.rb +337 -0
  403. data/lib/roby/task_service.rb +6 -0
  404. data/lib/roby/task_structure/conflicts.rb +104 -0
  405. data/lib/roby/task_structure/dependency.rb +932 -0
  406. data/lib/roby/task_structure/error_handling.rb +118 -0
  407. data/lib/roby/task_structure/executed_by.rb +234 -0
  408. data/lib/roby/task_structure/planned_by.rb +90 -0
  409. data/lib/roby/tasks/aggregator.rb +37 -0
  410. data/lib/roby/tasks/external_process.rb +275 -0
  411. data/lib/roby/tasks/group.rb +27 -0
  412. data/lib/roby/tasks/null.rb +19 -0
  413. data/lib/roby/tasks/parallel.rb +43 -0
  414. data/lib/roby/tasks/sequence.rb +88 -0
  415. data/lib/roby/tasks/simple.rb +21 -0
  416. data/lib/roby/{thread_task.rb → tasks/thread.rb} +50 -24
  417. data/lib/roby/tasks/timeout.rb +17 -0
  418. data/lib/roby/tasks/virtual.rb +55 -0
  419. data/lib/roby/template_plan.rb +7 -0
  420. data/lib/roby/test/aruba_minitest.rb +74 -0
  421. data/lib/roby/test/assertion.rb +16 -0
  422. data/lib/roby/test/assertions.rb +490 -0
  423. data/lib/roby/test/common.rb +368 -591
  424. data/lib/roby/test/dsl.rb +149 -0
  425. data/lib/roby/test/error.rb +18 -0
  426. data/lib/roby/test/event_reporter.rb +83 -0
  427. data/lib/roby/test/execution_expectations.rb +1134 -0
  428. data/lib/roby/test/expect_execution.rb +151 -0
  429. data/lib/roby/test/minitest_helpers.rb +166 -0
  430. data/lib/roby/test/roby_app_helpers.rb +200 -0
  431. data/lib/roby/test/run_planners.rb +155 -0
  432. data/lib/roby/test/self.rb +112 -0
  433. data/lib/roby/test/spec.rb +198 -0
  434. data/lib/roby/test/tasks/empty_task.rb +4 -4
  435. data/lib/roby/test/tasks/goto.rb +28 -27
  436. data/lib/roby/test/teardown_plans.rb +100 -0
  437. data/lib/roby/test/testcase.rb +239 -307
  438. data/lib/roby/test/tools.rb +159 -155
  439. data/lib/roby/test/validate_state_machine.rb +75 -0
  440. data/lib/roby/transaction.rb +1125 -0
  441. data/lib/roby/transaction/event_generator_proxy.rb +63 -0
  442. data/lib/roby/transaction/plan_object_proxy.rb +99 -0
  443. data/lib/roby/transaction/plan_service_proxy.rb +43 -0
  444. data/lib/roby/transaction/proxying.rb +120 -0
  445. data/lib/roby/transaction/task_event_generator_proxy.rb +19 -0
  446. data/lib/roby/transaction/task_proxy.rb +135 -0
  447. data/lib/roby/until_generator.rb +30 -0
  448. data/lib/roby/version.rb +5 -0
  449. data/lib/roby/yard.rb +169 -0
  450. data/lib/yard-roby.rb +1 -0
  451. data/manifest.xml +32 -6
  452. data/roby.gemspec +59 -0
  453. metadata +788 -587
  454. data/Manifest.txt +0 -321
  455. data/NOTES +0 -4
  456. data/README.txt +0 -166
  457. data/TODO.txt +0 -146
  458. data/app/README.txt +0 -24
  459. data/app/Rakefile +0 -8
  460. data/app/config/ROBOT.rb +0 -5
  461. data/app/config/init.rb +0 -33
  462. data/app/config/roby.yml +0 -3
  463. data/app/controllers/ROBOT.rb +0 -2
  464. data/app/planners/ROBOT/main.rb +0 -6
  465. data/app/planners/main.rb +0 -5
  466. data/app/scripts/distributed +0 -3
  467. data/app/scripts/generate/bookmarks +0 -3
  468. data/app/scripts/replay +0 -3
  469. data/app/scripts/results +0 -3
  470. data/app/scripts/run +0 -3
  471. data/app/scripts/server +0 -3
  472. data/app/scripts/shell +0 -3
  473. data/app/scripts/test +0 -3
  474. data/app/tasks/.gitattributes +0 -0
  475. data/app/tasks/ROBOT/.gitattributes +0 -0
  476. data/bin/roby-shell +0 -25
  477. data/doc/guide/src/basics/app.page +0 -139
  478. data/doc/guide/src/basics/index.page +0 -11
  479. data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
  480. data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
  481. data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
  482. data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
  483. data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
  484. data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
  485. data/doc/guide/src/basics/relations_display.page +0 -203
  486. data/doc/guide/src/basics/shell.page +0 -102
  487. data/doc/guide/src/default.css +0 -319
  488. data/doc/guide/src/introduction/index.page +0 -29
  489. data/doc/guide/src/introduction/publications.page +0 -14
  490. data/doc/guide/src/relations/dependency.page +0 -89
  491. data/doc/guide/src/relations/index.page +0 -12
  492. data/ext/droby/dump.cc +0 -175
  493. data/ext/droby/extconf.rb +0 -3
  494. data/ext/graph/algorithm.cc +0 -746
  495. data/ext/graph/extconf.rb +0 -7
  496. data/ext/graph/graph.cc +0 -575
  497. data/ext/graph/graph.hh +0 -183
  498. data/ext/graph/iterator_sequence.hh +0 -102
  499. data/ext/graph/undirected_dfs.hh +0 -226
  500. data/ext/graph/undirected_graph.hh +0 -421
  501. data/lib/roby/app/scripts/generate/bookmarks.rb +0 -162
  502. data/lib/roby/app/scripts/replay.rb +0 -31
  503. data/lib/roby/app/scripts/server.rb +0 -18
  504. data/lib/roby/basic_object.rb +0 -151
  505. data/lib/roby/config.rb +0 -14
  506. data/lib/roby/distributed.rb +0 -36
  507. data/lib/roby/distributed/base.rb +0 -448
  508. data/lib/roby/distributed/communication.rb +0 -875
  509. data/lib/roby/distributed/connection_space.rb +0 -616
  510. data/lib/roby/distributed/distributed_object.rb +0 -206
  511. data/lib/roby/distributed/drb.rb +0 -62
  512. data/lib/roby/distributed/notifications.rb +0 -531
  513. data/lib/roby/distributed/peer.rb +0 -555
  514. data/lib/roby/distributed/protocol.rb +0 -529
  515. data/lib/roby/distributed/proxy.rb +0 -343
  516. data/lib/roby/distributed/subscription.rb +0 -311
  517. data/lib/roby/distributed/transaction.rb +0 -498
  518. data/lib/roby/external_process_task.rb +0 -225
  519. data/lib/roby/graph.rb +0 -160
  520. data/lib/roby/log.rb +0 -3
  521. data/lib/roby/log/chronicle.rb +0 -303
  522. data/lib/roby/log/console.rb +0 -74
  523. data/lib/roby/log/data_stream.rb +0 -275
  524. data/lib/roby/log/dot.rb +0 -279
  525. data/lib/roby/log/event_stream.rb +0 -161
  526. data/lib/roby/log/file.rb +0 -396
  527. data/lib/roby/log/gui/basic_display.ui +0 -83
  528. data/lib/roby/log/gui/basic_display_ui.rb +0 -89
  529. data/lib/roby/log/gui/chronicle.rb +0 -26
  530. data/lib/roby/log/gui/chronicle_view.rb +0 -40
  531. data/lib/roby/log/gui/chronicle_view.ui +0 -70
  532. data/lib/roby/log/gui/chronicle_view_ui.rb +0 -90
  533. data/lib/roby/log/gui/data_displays.rb +0 -171
  534. data/lib/roby/log/gui/data_displays.ui +0 -155
  535. data/lib/roby/log/gui/data_displays_ui.rb +0 -146
  536. data/lib/roby/log/gui/notifications.rb +0 -26
  537. data/lib/roby/log/gui/relations.rb +0 -269
  538. data/lib/roby/log/gui/relations.ui +0 -123
  539. data/lib/roby/log/gui/relations_ui.rb +0 -120
  540. data/lib/roby/log/gui/relations_view.rb +0 -185
  541. data/lib/roby/log/gui/relations_view.ui +0 -149
  542. data/lib/roby/log/gui/relations_view_ui.rb +0 -144
  543. data/lib/roby/log/gui/replay.rb +0 -366
  544. data/lib/roby/log/gui/replay_controls.rb +0 -206
  545. data/lib/roby/log/gui/replay_controls.ui +0 -282
  546. data/lib/roby/log/gui/replay_controls_ui.rb +0 -249
  547. data/lib/roby/log/gui/runtime.rb +0 -130
  548. data/lib/roby/log/hooks.rb +0 -186
  549. data/lib/roby/log/logger.rb +0 -203
  550. data/lib/roby/log/notifications.rb +0 -244
  551. data/lib/roby/log/plan_rebuilder.rb +0 -468
  552. data/lib/roby/log/relations.rb +0 -1084
  553. data/lib/roby/log/server.rb +0 -547
  554. data/lib/roby/log/sqlite.rb +0 -47
  555. data/lib/roby/log/timings.rb +0 -233
  556. data/lib/roby/plan-object.rb +0 -371
  557. data/lib/roby/planning.rb +0 -13
  558. data/lib/roby/planning/loops.rb +0 -309
  559. data/lib/roby/planning/model.rb +0 -1012
  560. data/lib/roby/planning/task.rb +0 -180
  561. data/lib/roby/query.rb +0 -655
  562. data/lib/roby/relations/conflicts.rb +0 -67
  563. data/lib/roby/relations/dependency.rb +0 -358
  564. data/lib/roby/relations/ensured.rb +0 -19
  565. data/lib/roby/relations/error_handling.rb +0 -22
  566. data/lib/roby/relations/events.rb +0 -7
  567. data/lib/roby/relations/executed_by.rb +0 -208
  568. data/lib/roby/relations/influence.rb +0 -10
  569. data/lib/roby/relations/planned_by.rb +0 -63
  570. data/lib/roby/state/information.rb +0 -55
  571. data/lib/roby/state/state.rb +0 -367
  572. data/lib/roby/task-operations.rb +0 -186
  573. data/lib/roby/task_index.rb +0 -80
  574. data/lib/roby/test/distributed.rb +0 -230
  575. data/lib/roby/test/tasks/simple_task.rb +0 -23
  576. data/lib/roby/transactions.rb +0 -507
  577. data/lib/roby/transactions/proxy.rb +0 -325
  578. data/plugins/fault_injection/History.txt +0 -4
  579. data/plugins/fault_injection/README.txt +0 -34
  580. data/plugins/fault_injection/Rakefile +0 -12
  581. data/plugins/fault_injection/TODO.txt +0 -0
  582. data/plugins/fault_injection/app.rb +0 -52
  583. data/plugins/fault_injection/fault_injection.rb +0 -89
  584. data/plugins/fault_injection/test/test_fault_injection.rb +0 -78
  585. data/plugins/subsystems/README.txt +0 -37
  586. data/plugins/subsystems/Rakefile +0 -13
  587. data/plugins/subsystems/app.rb +0 -182
  588. data/plugins/subsystems/test/app/README +0 -24
  589. data/plugins/subsystems/test/app/Rakefile +0 -8
  590. data/plugins/subsystems/test/app/config/app.yml +0 -71
  591. data/plugins/subsystems/test/app/config/init.rb +0 -12
  592. data/plugins/subsystems/test/app/config/roby.yml +0 -3
  593. data/plugins/subsystems/test/app/planners/main.rb +0 -20
  594. data/plugins/subsystems/test/app/scripts/distributed +0 -3
  595. data/plugins/subsystems/test/app/scripts/replay +0 -3
  596. data/plugins/subsystems/test/app/scripts/results +0 -3
  597. data/plugins/subsystems/test/app/scripts/run +0 -3
  598. data/plugins/subsystems/test/app/scripts/server +0 -3
  599. data/plugins/subsystems/test/app/scripts/shell +0 -3
  600. data/plugins/subsystems/test/app/scripts/test +0 -3
  601. data/plugins/subsystems/test/app/tasks/services.rb +0 -15
  602. data/plugins/subsystems/test/test_subsystems.rb +0 -78
  603. data/test/distributed/test_communication.rb +0 -195
  604. data/test/distributed/test_connection.rb +0 -284
  605. data/test/distributed/test_execution.rb +0 -378
  606. data/test/distributed/test_mixed_plan.rb +0 -341
  607. data/test/distributed/test_plan_notifications.rb +0 -238
  608. data/test/distributed/test_protocol.rb +0 -525
  609. data/test/distributed/test_query.rb +0 -106
  610. data/test/distributed/test_remote_plan.rb +0 -491
  611. data/test/distributed/test_transaction.rb +0 -466
  612. data/test/mockups/external_process +0 -28
  613. data/test/mockups/tasks.rb +0 -27
  614. data/test/planning/test_loops.rb +0 -432
  615. data/test/planning/test_model.rb +0 -427
  616. data/test/planning/test_task.rb +0 -126
  617. data/test/relations/test_conflicts.rb +0 -42
  618. data/test/relations/test_dependency.rb +0 -324
  619. data/test/relations/test_ensured.rb +0 -38
  620. data/test/relations/test_executed_by.rb +0 -224
  621. data/test/relations/test_planned_by.rb +0 -56
  622. data/test/suite_core.rb +0 -29
  623. data/test/suite_distributed.rb +0 -10
  624. data/test/suite_planning.rb +0 -4
  625. data/test/suite_relations.rb +0 -8
  626. data/test/tasks/test_external_process.rb +0 -126
  627. data/test/tasks/test_thread_task.rb +0 -70
  628. data/test/test_bgl.rb +0 -528
  629. data/test/test_event.rb +0 -969
  630. data/test/test_exceptions.rb +0 -591
  631. data/test/test_execution_engine.rb +0 -987
  632. data/test/test_gui.rb +0 -20
  633. data/test/test_interface.rb +0 -43
  634. data/test/test_log.rb +0 -125
  635. data/test/test_log_server.rb +0 -133
  636. data/test/test_plan.rb +0 -418
  637. data/test/test_query.rb +0 -424
  638. data/test/test_relations.rb +0 -260
  639. data/test/test_state.rb +0 -432
  640. data/test/test_support.rb +0 -16
  641. data/test/test_task.rb +0 -1181
  642. data/test/test_testcase.rb +0 -138
  643. data/test/test_transactions.rb +0 -610
  644. data/test/test_transactions_proxy.rb +0 -216
@@ -1,74 +1,9 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{lang:}">
4
- <head>
5
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
- <meta name="description" content="your description goes here" />
7
- <meta name="keywords" content="your,keywords,goes,here" />
8
- <meta name="author" content="Your Name / Original design: Andreas Viklund - http://andreasviklund.com/" />
9
- <meta name="generator" content="webgen - http://webgen.rubyforge.org" />
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">&nbsp;</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">&nbsp;</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">&nbsp;</div>
69
- </div>
70
-
71
- <div id="footer"><p>&copy; 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
- /introduction:
1
+ index.page:
2
+ sort_info: 0
3
+ /installation:
4
+ sort_info: 25
5
+ /concepts:
2
6
  sort_info: 50
3
- /basics:
7
+ /tutorial:
4
8
  sort_info: 100
5
- /cycle:
6
- routed_title: Execution Cycle
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
- /abstraction:
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
@@ -1,7 +1,12 @@
1
1
  ---
2
- title: Table of Contents
3
- routed_title: Table of Contents
2
+ title: What is Roby?
4
3
  sort_info: 0
5
4
  ---
6
5
 
7
- {menu: {used_nodes: files}}
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
- --- pipeline:rdoc
5
- == External dependencies
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 on RubyForge[http://utilrb.rubyforge.org] as a gem
11
- * Facets, available on RubyForge[http://rubyforge.org/projects/facets] or as a gem
12
- * ActiveSupport, available on RubyForge[http://rubyforge.org/projects/activesupport] or as a gem
13
- * the {Boost C++ library}[www.boost.org], including Boost/Graph
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 and maruku for the generation of the user's
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 on RubyForge[http://rubyforge.org/projects/flexmock]
31
+ * FlexMock, available as a RubyGem
22
32
 
23
- * finally, the GUI requires {QtRuby >= 1.4.9}[http://rubyforge.org/projects/korundum], SVG export requires QtRuby to
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
- == Before installation
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
- == Setting the environment
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
- == Debian/Ubuntu: Installing binary dependencies with apt-get
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
- == Install using RubyGems
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
- == Install the development code from GitHub
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 github repository for roby.
96
+ the gitorious repository for roby.
82
97
 
83
- git clone git://github.com/doudou/roby.git roby
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 docs
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
- === Staying up to date
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
- == Generating the documentation
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 maruku rdoc coderay
135
+ gem install webgen rdoc coderay
124
136
 
125
137
  Then, the following commands allow to generate separate parts of the
126
138
  documentation: