roby 0.7

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.
Files changed (240) hide show
  1. data/.gitignore +29 -0
  2. data/History.txt +4 -0
  3. data/License-fr.txt +519 -0
  4. data/License.txt +515 -0
  5. data/Manifest.txt +245 -0
  6. data/NOTES +4 -0
  7. data/README.txt +163 -0
  8. data/Rakefile +161 -0
  9. data/TODO.txt +146 -0
  10. data/app/README.txt +24 -0
  11. data/app/Rakefile +8 -0
  12. data/app/config/ROBOT.rb +5 -0
  13. data/app/config/app.yml +91 -0
  14. data/app/config/init.rb +7 -0
  15. data/app/config/roby.yml +3 -0
  16. data/app/controllers/.gitattributes +0 -0
  17. data/app/controllers/ROBOT.rb +2 -0
  18. data/app/data/.gitattributes +0 -0
  19. data/app/planners/ROBOT/main.rb +6 -0
  20. data/app/planners/main.rb +5 -0
  21. data/app/scripts/distributed +3 -0
  22. data/app/scripts/generate/bookmarks +3 -0
  23. data/app/scripts/replay +3 -0
  24. data/app/scripts/results +3 -0
  25. data/app/scripts/run +3 -0
  26. data/app/scripts/server +3 -0
  27. data/app/scripts/shell +3 -0
  28. data/app/scripts/test +3 -0
  29. data/app/tasks/.gitattributes +0 -0
  30. data/app/tasks/ROBOT/.gitattributes +0 -0
  31. data/bin/roby +210 -0
  32. data/bin/roby-log +168 -0
  33. data/bin/roby-shell +25 -0
  34. data/doc/images/event_generalization.png +0 -0
  35. data/doc/images/exception_propagation_1.png +0 -0
  36. data/doc/images/exception_propagation_2.png +0 -0
  37. data/doc/images/exception_propagation_3.png +0 -0
  38. data/doc/images/exception_propagation_4.png +0 -0
  39. data/doc/images/exception_propagation_5.png +0 -0
  40. data/doc/images/replay_handler_error.png +0 -0
  41. data/doc/images/replay_handler_error_0.png +0 -0
  42. data/doc/images/replay_handler_error_1.png +0 -0
  43. data/doc/images/roby_cycle_overview.png +0 -0
  44. data/doc/images/roby_replay_02.png +0 -0
  45. data/doc/images/roby_replay_03.png +0 -0
  46. data/doc/images/roby_replay_04.png +0 -0
  47. data/doc/images/roby_replay_event_representation.png +0 -0
  48. data/doc/images/roby_replay_first_state.png +0 -0
  49. data/doc/images/roby_replay_relations.png +0 -0
  50. data/doc/images/roby_replay_startup.png +0 -0
  51. data/doc/images/task_event_generalization.png +0 -0
  52. data/doc/papers.rdoc +11 -0
  53. data/doc/styles/allison.css +314 -0
  54. data/doc/styles/allison.js +316 -0
  55. data/doc/styles/allison.rb +276 -0
  56. data/doc/styles/jamis.rb +593 -0
  57. data/doc/tutorials/01-GettingStarted.rdoc +86 -0
  58. data/doc/tutorials/02-GoForward.rdoc +220 -0
  59. data/doc/tutorials/03-PlannedPath.rdoc +268 -0
  60. data/doc/tutorials/04-EventPropagation.rdoc +236 -0
  61. data/doc/tutorials/05-ErrorHandling.rdoc +319 -0
  62. data/doc/tutorials/06-Overview.rdoc +40 -0
  63. data/doc/videos.rdoc +69 -0
  64. data/ext/droby/dump.cc +175 -0
  65. data/ext/droby/extconf.rb +3 -0
  66. data/ext/graph/algorithm.cc +746 -0
  67. data/ext/graph/extconf.rb +7 -0
  68. data/ext/graph/graph.cc +529 -0
  69. data/ext/graph/graph.hh +183 -0
  70. data/ext/graph/iterator_sequence.hh +102 -0
  71. data/ext/graph/undirected_dfs.hh +226 -0
  72. data/ext/graph/undirected_graph.hh +421 -0
  73. data/lib/roby.rb +41 -0
  74. data/lib/roby/app.rb +870 -0
  75. data/lib/roby/app/rake.rb +56 -0
  76. data/lib/roby/app/run.rb +14 -0
  77. data/lib/roby/app/scripts/distributed.rb +13 -0
  78. data/lib/roby/app/scripts/generate/bookmarks.rb +162 -0
  79. data/lib/roby/app/scripts/replay.rb +31 -0
  80. data/lib/roby/app/scripts/results.rb +15 -0
  81. data/lib/roby/app/scripts/run.rb +26 -0
  82. data/lib/roby/app/scripts/server.rb +18 -0
  83. data/lib/roby/app/scripts/shell.rb +88 -0
  84. data/lib/roby/app/scripts/test.rb +40 -0
  85. data/lib/roby/basic_object.rb +151 -0
  86. data/lib/roby/config.rb +5 -0
  87. data/lib/roby/control.rb +747 -0
  88. data/lib/roby/decision_control.rb +17 -0
  89. data/lib/roby/distributed.rb +32 -0
  90. data/lib/roby/distributed/base.rb +440 -0
  91. data/lib/roby/distributed/communication.rb +871 -0
  92. data/lib/roby/distributed/connection_space.rb +592 -0
  93. data/lib/roby/distributed/distributed_object.rb +206 -0
  94. data/lib/roby/distributed/drb.rb +62 -0
  95. data/lib/roby/distributed/notifications.rb +539 -0
  96. data/lib/roby/distributed/peer.rb +550 -0
  97. data/lib/roby/distributed/protocol.rb +529 -0
  98. data/lib/roby/distributed/proxy.rb +343 -0
  99. data/lib/roby/distributed/subscription.rb +311 -0
  100. data/lib/roby/distributed/transaction.rb +498 -0
  101. data/lib/roby/event.rb +897 -0
  102. data/lib/roby/exceptions.rb +234 -0
  103. data/lib/roby/executives/simple.rb +30 -0
  104. data/lib/roby/graph.rb +166 -0
  105. data/lib/roby/interface.rb +390 -0
  106. data/lib/roby/log.rb +3 -0
  107. data/lib/roby/log/chronicle.rb +303 -0
  108. data/lib/roby/log/console.rb +72 -0
  109. data/lib/roby/log/data_stream.rb +197 -0
  110. data/lib/roby/log/dot.rb +279 -0
  111. data/lib/roby/log/event_stream.rb +151 -0
  112. data/lib/roby/log/file.rb +340 -0
  113. data/lib/roby/log/gui/basic_display.ui +83 -0
  114. data/lib/roby/log/gui/chronicle.rb +26 -0
  115. data/lib/roby/log/gui/chronicle_view.rb +40 -0
  116. data/lib/roby/log/gui/chronicle_view.ui +70 -0
  117. data/lib/roby/log/gui/data_displays.rb +172 -0
  118. data/lib/roby/log/gui/data_displays.ui +155 -0
  119. data/lib/roby/log/gui/notifications.rb +26 -0
  120. data/lib/roby/log/gui/relations.rb +248 -0
  121. data/lib/roby/log/gui/relations.ui +123 -0
  122. data/lib/roby/log/gui/relations_view.rb +185 -0
  123. data/lib/roby/log/gui/relations_view.ui +149 -0
  124. data/lib/roby/log/gui/replay.rb +327 -0
  125. data/lib/roby/log/gui/replay_controls.rb +200 -0
  126. data/lib/roby/log/gui/replay_controls.ui +259 -0
  127. data/lib/roby/log/gui/runtime.rb +130 -0
  128. data/lib/roby/log/hooks.rb +185 -0
  129. data/lib/roby/log/logger.rb +202 -0
  130. data/lib/roby/log/notifications.rb +244 -0
  131. data/lib/roby/log/plan_rebuilder.rb +470 -0
  132. data/lib/roby/log/relations.rb +1056 -0
  133. data/lib/roby/log/server.rb +550 -0
  134. data/lib/roby/log/sqlite.rb +47 -0
  135. data/lib/roby/log/timings.rb +164 -0
  136. data/lib/roby/plan-object.rb +247 -0
  137. data/lib/roby/plan.rb +762 -0
  138. data/lib/roby/planning.rb +13 -0
  139. data/lib/roby/planning/loops.rb +302 -0
  140. data/lib/roby/planning/model.rb +906 -0
  141. data/lib/roby/planning/task.rb +151 -0
  142. data/lib/roby/propagation.rb +562 -0
  143. data/lib/roby/query.rb +619 -0
  144. data/lib/roby/relations.rb +583 -0
  145. data/lib/roby/relations/conflicts.rb +70 -0
  146. data/lib/roby/relations/ensured.rb +20 -0
  147. data/lib/roby/relations/error_handling.rb +23 -0
  148. data/lib/roby/relations/events.rb +9 -0
  149. data/lib/roby/relations/executed_by.rb +193 -0
  150. data/lib/roby/relations/hierarchy.rb +239 -0
  151. data/lib/roby/relations/influence.rb +10 -0
  152. data/lib/roby/relations/planned_by.rb +63 -0
  153. data/lib/roby/robot.rb +7 -0
  154. data/lib/roby/standard_errors.rb +218 -0
  155. data/lib/roby/state.rb +5 -0
  156. data/lib/roby/state/events.rb +221 -0
  157. data/lib/roby/state/information.rb +55 -0
  158. data/lib/roby/state/pos.rb +110 -0
  159. data/lib/roby/state/shapes.rb +32 -0
  160. data/lib/roby/state/state.rb +353 -0
  161. data/lib/roby/support.rb +92 -0
  162. data/lib/roby/task-operations.rb +182 -0
  163. data/lib/roby/task.rb +1618 -0
  164. data/lib/roby/test/common.rb +399 -0
  165. data/lib/roby/test/distributed.rb +214 -0
  166. data/lib/roby/test/tasks/empty_task.rb +9 -0
  167. data/lib/roby/test/tasks/goto.rb +36 -0
  168. data/lib/roby/test/tasks/simple_task.rb +23 -0
  169. data/lib/roby/test/testcase.rb +519 -0
  170. data/lib/roby/test/tools.rb +160 -0
  171. data/lib/roby/thread_task.rb +87 -0
  172. data/lib/roby/transactions.rb +462 -0
  173. data/lib/roby/transactions/proxy.rb +292 -0
  174. data/lib/roby/transactions/updates.rb +139 -0
  175. data/plugins/fault_injection/History.txt +4 -0
  176. data/plugins/fault_injection/README.txt +37 -0
  177. data/plugins/fault_injection/Rakefile +18 -0
  178. data/plugins/fault_injection/TODO.txt +0 -0
  179. data/plugins/fault_injection/app.rb +52 -0
  180. data/plugins/fault_injection/fault_injection.rb +89 -0
  181. data/plugins/fault_injection/test/test_fault_injection.rb +84 -0
  182. data/plugins/subsystems/README.txt +40 -0
  183. data/plugins/subsystems/Rakefile +18 -0
  184. data/plugins/subsystems/app.rb +171 -0
  185. data/plugins/subsystems/test/app/README +24 -0
  186. data/plugins/subsystems/test/app/Rakefile +8 -0
  187. data/plugins/subsystems/test/app/config/app.yml +71 -0
  188. data/plugins/subsystems/test/app/config/init.rb +9 -0
  189. data/plugins/subsystems/test/app/config/roby.yml +3 -0
  190. data/plugins/subsystems/test/app/planners/main.rb +20 -0
  191. data/plugins/subsystems/test/app/scripts/distributed +3 -0
  192. data/plugins/subsystems/test/app/scripts/replay +3 -0
  193. data/plugins/subsystems/test/app/scripts/results +3 -0
  194. data/plugins/subsystems/test/app/scripts/run +3 -0
  195. data/plugins/subsystems/test/app/scripts/server +3 -0
  196. data/plugins/subsystems/test/app/scripts/shell +3 -0
  197. data/plugins/subsystems/test/app/scripts/test +3 -0
  198. data/plugins/subsystems/test/app/tasks/services.rb +15 -0
  199. data/plugins/subsystems/test/test_subsystems.rb +71 -0
  200. data/test/distributed/test_communication.rb +178 -0
  201. data/test/distributed/test_connection.rb +282 -0
  202. data/test/distributed/test_execution.rb +373 -0
  203. data/test/distributed/test_mixed_plan.rb +341 -0
  204. data/test/distributed/test_plan_notifications.rb +238 -0
  205. data/test/distributed/test_protocol.rb +516 -0
  206. data/test/distributed/test_query.rb +102 -0
  207. data/test/distributed/test_remote_plan.rb +491 -0
  208. data/test/distributed/test_transaction.rb +463 -0
  209. data/test/mockups/tasks.rb +27 -0
  210. data/test/planning/test_loops.rb +380 -0
  211. data/test/planning/test_model.rb +427 -0
  212. data/test/planning/test_task.rb +106 -0
  213. data/test/relations/test_conflicts.rb +42 -0
  214. data/test/relations/test_ensured.rb +38 -0
  215. data/test/relations/test_executed_by.rb +149 -0
  216. data/test/relations/test_hierarchy.rb +158 -0
  217. data/test/relations/test_planned_by.rb +54 -0
  218. data/test/suite_core.rb +24 -0
  219. data/test/suite_distributed.rb +9 -0
  220. data/test/suite_planning.rb +3 -0
  221. data/test/suite_relations.rb +8 -0
  222. data/test/test_bgl.rb +508 -0
  223. data/test/test_control.rb +399 -0
  224. data/test/test_event.rb +894 -0
  225. data/test/test_exceptions.rb +592 -0
  226. data/test/test_interface.rb +37 -0
  227. data/test/test_log.rb +114 -0
  228. data/test/test_log_server.rb +132 -0
  229. data/test/test_plan.rb +584 -0
  230. data/test/test_propagation.rb +210 -0
  231. data/test/test_query.rb +266 -0
  232. data/test/test_relations.rb +180 -0
  233. data/test/test_state.rb +414 -0
  234. data/test/test_support.rb +16 -0
  235. data/test/test_task.rb +938 -0
  236. data/test/test_testcase.rb +122 -0
  237. data/test/test_thread_task.rb +73 -0
  238. data/test/test_transactions.rb +569 -0
  239. data/test/test_transactions_proxy.rb +198 -0
  240. metadata +570 -0
data/Manifest.txt ADDED
@@ -0,0 +1,245 @@
1
+ .gitignore
2
+ History.txt
3
+ License-fr.txt
4
+ License.txt
5
+ Manifest.txt
6
+ NOTES
7
+ README.txt
8
+ Rakefile
9
+ TODO.txt
10
+ app/README.txt
11
+ app/Rakefile
12
+ app/config/ROBOT.rb
13
+ app/config/app.yml
14
+ app/config/init.rb
15
+ app/config/roby.yml
16
+ app/controllers/.gitattributes
17
+ app/controllers/ROBOT.rb
18
+ app/data/.gitattributes
19
+ app/planners/ROBOT/main.rb
20
+ app/planners/main.rb
21
+ app/scripts/distributed
22
+ app/scripts/generate/bookmarks
23
+ app/scripts/replay
24
+ app/scripts/results
25
+ app/scripts/run
26
+ app/scripts/server
27
+ app/scripts/shell
28
+ app/scripts/test
29
+ app/tasks/.gitattributes
30
+ app/tasks/ROBOT/.gitattributes
31
+ bin/roby
32
+ bin/roby-log
33
+ bin/roby-shell
34
+ doc/images/event_generalization.png
35
+ doc/images/exception_propagation_1.png
36
+ doc/images/exception_propagation_2.png
37
+ doc/images/exception_propagation_3.png
38
+ doc/images/exception_propagation_4.png
39
+ doc/images/exception_propagation_5.png
40
+ doc/images/replay_handler_error.png
41
+ doc/images/replay_handler_error_0.png
42
+ doc/images/replay_handler_error_1.png
43
+ doc/images/roby_cycle_overview.png
44
+ doc/images/roby_replay_02.png
45
+ doc/images/roby_replay_03.png
46
+ doc/images/roby_replay_04.png
47
+ doc/images/roby_replay_event_representation.png
48
+ doc/images/roby_replay_first_state.png
49
+ doc/images/roby_replay_relations.png
50
+ doc/images/roby_replay_startup.png
51
+ doc/images/task_event_generalization.png
52
+ doc/papers.rdoc
53
+ doc/styles/allison.css
54
+ doc/styles/allison.js
55
+ doc/styles/allison.rb
56
+ doc/styles/jamis.rb
57
+ doc/tutorials/01-GettingStarted.rdoc
58
+ doc/tutorials/02-GoForward.rdoc
59
+ doc/tutorials/03-PlannedPath.rdoc
60
+ doc/tutorials/04-EventPropagation.rdoc
61
+ doc/tutorials/05-ErrorHandling.rdoc
62
+ doc/tutorials/06-Overview.rdoc
63
+ doc/videos.rdoc
64
+ ext/droby/dump.cc
65
+ ext/droby/extconf.rb
66
+ ext/graph/algorithm.cc
67
+ ext/graph/extconf.rb
68
+ ext/graph/graph.cc
69
+ ext/graph/graph.hh
70
+ ext/graph/iterator_sequence.hh
71
+ ext/graph/undirected_dfs.hh
72
+ ext/graph/undirected_graph.hh
73
+ lib/roby.rb
74
+ lib/roby/app.rb
75
+ lib/roby/app/rake.rb
76
+ lib/roby/app/run.rb
77
+ lib/roby/app/scripts/distributed.rb
78
+ lib/roby/app/scripts/generate/bookmarks.rb
79
+ lib/roby/app/scripts/replay.rb
80
+ lib/roby/app/scripts/results.rb
81
+ lib/roby/app/scripts/run.rb
82
+ lib/roby/app/scripts/server.rb
83
+ lib/roby/app/scripts/shell.rb
84
+ lib/roby/app/scripts/test.rb
85
+ lib/roby/basic_object.rb
86
+ lib/roby/config.rb
87
+ lib/roby/control.rb
88
+ lib/roby/decision_control.rb
89
+ lib/roby/distributed.rb
90
+ lib/roby/distributed/base.rb
91
+ lib/roby/distributed/communication.rb
92
+ lib/roby/distributed/connection_space.rb
93
+ lib/roby/distributed/distributed_object.rb
94
+ lib/roby/distributed/drb.rb
95
+ lib/roby/distributed/notifications.rb
96
+ lib/roby/distributed/peer.rb
97
+ lib/roby/distributed/protocol.rb
98
+ lib/roby/distributed/proxy.rb
99
+ lib/roby/distributed/subscription.rb
100
+ lib/roby/distributed/transaction.rb
101
+ lib/roby/event.rb
102
+ lib/roby/exceptions.rb
103
+ lib/roby/executives/simple.rb
104
+ lib/roby/graph.rb
105
+ lib/roby/interface.rb
106
+ lib/roby/log.rb
107
+ lib/roby/log/chronicle.rb
108
+ lib/roby/log/console.rb
109
+ lib/roby/log/data_stream.rb
110
+ lib/roby/log/dot.rb
111
+ lib/roby/log/event_stream.rb
112
+ lib/roby/log/file.rb
113
+ lib/roby/log/gui/basic_display.ui
114
+ lib/roby/log/gui/basic_display_ui.rb
115
+ lib/roby/log/gui/chronicle.rb
116
+ lib/roby/log/gui/chronicle_view.rb
117
+ lib/roby/log/gui/chronicle_view.ui
118
+ lib/roby/log/gui/chronicle_view_ui.rb
119
+ lib/roby/log/gui/data_displays.rb
120
+ lib/roby/log/gui/data_displays.ui
121
+ lib/roby/log/gui/data_displays_ui.rb
122
+ lib/roby/log/gui/notifications.rb
123
+ lib/roby/log/gui/relations.rb
124
+ lib/roby/log/gui/relations.ui
125
+ lib/roby/log/gui/relations_ui.rb
126
+ lib/roby/log/gui/relations_view.rb
127
+ lib/roby/log/gui/relations_view.ui
128
+ lib/roby/log/gui/relations_view_ui.rb
129
+ lib/roby/log/gui/replay.rb
130
+ lib/roby/log/gui/replay_controls.rb
131
+ lib/roby/log/gui/replay_controls.ui
132
+ lib/roby/log/gui/replay_controls_ui.rb
133
+ lib/roby/log/gui/runtime.rb
134
+ lib/roby/log/hooks.rb
135
+ lib/roby/log/logger.rb
136
+ lib/roby/log/notifications.rb
137
+ lib/roby/log/plan_rebuilder.rb
138
+ lib/roby/log/relations.rb
139
+ lib/roby/log/server.rb
140
+ lib/roby/log/sqlite.rb
141
+ lib/roby/log/timings.rb
142
+ lib/roby/plan-object.rb
143
+ lib/roby/plan.rb
144
+ lib/roby/planning.rb
145
+ lib/roby/planning/loops.rb
146
+ lib/roby/planning/model.rb
147
+ lib/roby/planning/task.rb
148
+ lib/roby/propagation.rb
149
+ lib/roby/query.rb
150
+ lib/roby/relations.rb
151
+ lib/roby/relations/conflicts.rb
152
+ lib/roby/relations/ensured.rb
153
+ lib/roby/relations/error_handling.rb
154
+ lib/roby/relations/events.rb
155
+ lib/roby/relations/executed_by.rb
156
+ lib/roby/relations/hierarchy.rb
157
+ lib/roby/relations/influence.rb
158
+ lib/roby/relations/planned_by.rb
159
+ lib/roby/robot.rb
160
+ lib/roby/standard_errors.rb
161
+ lib/roby/state.rb
162
+ lib/roby/state/events.rb
163
+ lib/roby/state/information.rb
164
+ lib/roby/state/pos.rb
165
+ lib/roby/state/shapes.rb
166
+ lib/roby/state/state.rb
167
+ lib/roby/support.rb
168
+ lib/roby/task-operations.rb
169
+ lib/roby/task.rb
170
+ lib/roby/test/common.rb
171
+ lib/roby/test/distributed.rb
172
+ lib/roby/test/tasks/empty_task.rb
173
+ lib/roby/test/tasks/goto.rb
174
+ lib/roby/test/tasks/simple_task.rb
175
+ lib/roby/test/testcase.rb
176
+ lib/roby/test/tools.rb
177
+ lib/roby/thread_task.rb
178
+ lib/roby/transactions.rb
179
+ lib/roby/transactions/proxy.rb
180
+ lib/roby/transactions/updates.rb
181
+ plugins/fault_injection/History.txt
182
+ plugins/fault_injection/README.txt
183
+ plugins/fault_injection/Rakefile
184
+ plugins/fault_injection/TODO.txt
185
+ plugins/fault_injection/app.rb
186
+ plugins/fault_injection/fault_injection.rb
187
+ plugins/fault_injection/test/test_fault_injection.rb
188
+ plugins/subsystems/README.txt
189
+ plugins/subsystems/Rakefile
190
+ plugins/subsystems/app.rb
191
+ plugins/subsystems/test/app/README
192
+ plugins/subsystems/test/app/Rakefile
193
+ plugins/subsystems/test/app/config/app.yml
194
+ plugins/subsystems/test/app/config/init.rb
195
+ plugins/subsystems/test/app/config/roby.yml
196
+ plugins/subsystems/test/app/planners/main.rb
197
+ plugins/subsystems/test/app/scripts/distributed
198
+ plugins/subsystems/test/app/scripts/replay
199
+ plugins/subsystems/test/app/scripts/results
200
+ plugins/subsystems/test/app/scripts/run
201
+ plugins/subsystems/test/app/scripts/server
202
+ plugins/subsystems/test/app/scripts/shell
203
+ plugins/subsystems/test/app/scripts/test
204
+ plugins/subsystems/test/app/tasks/services.rb
205
+ plugins/subsystems/test/test_subsystems.rb
206
+ test/distributed/test_communication.rb
207
+ test/distributed/test_connection.rb
208
+ test/distributed/test_execution.rb
209
+ test/distributed/test_mixed_plan.rb
210
+ test/distributed/test_plan_notifications.rb
211
+ test/distributed/test_protocol.rb
212
+ test/distributed/test_query.rb
213
+ test/distributed/test_remote_plan.rb
214
+ test/distributed/test_transaction.rb
215
+ test/mockups/tasks.rb
216
+ test/planning/test_loops.rb
217
+ test/planning/test_model.rb
218
+ test/planning/test_task.rb
219
+ test/relations/test_conflicts.rb
220
+ test/relations/test_ensured.rb
221
+ test/relations/test_executed_by.rb
222
+ test/relations/test_hierarchy.rb
223
+ test/relations/test_planned_by.rb
224
+ test/suite_core.rb
225
+ test/suite_distributed.rb
226
+ test/suite_planning.rb
227
+ test/suite_relations.rb
228
+ test/test_bgl.rb
229
+ test/test_control.rb
230
+ test/test_event.rb
231
+ test/test_exceptions.rb
232
+ test/test_interface.rb
233
+ test/test_log.rb
234
+ test/test_log_server.rb
235
+ test/test_plan.rb
236
+ test/test_propagation.rb
237
+ test/test_query.rb
238
+ test/test_relations.rb
239
+ test/test_state.rb
240
+ test/test_support.rb
241
+ test/test_task.rb
242
+ test/test_testcase.rb
243
+ test/test_thread_task.rb
244
+ test/test_transactions.rb
245
+ test/test_transactions_proxy.rb
data/NOTES ADDED
@@ -0,0 +1,4 @@
1
+ * Consistency checking on relations is done in adding_(parent|child)_object. Don't modify any
2
+ internal structure before having called add_child_object or remove_child_object as the
3
+ task is supposed to behave if one of these hooks raises an exception
4
+
data/README.txt ADDED
@@ -0,0 +1,163 @@
1
+ = Roby: a plan manager for robot control in Ruby
2
+
3
+ http://roby.rubyforge.org
4
+ http://www.rubyforge.org/projects/roby
5
+ http://github.com/doudou/roby (dev. repository)
6
+
7
+ <b>Note for Gem users</b> While using the normal RDoc generator, the
8
+ documentation generation process of Roby is a bit modified. In particular, the
9
+ plugin documentation is separated from the core documentation, and a clearer
10
+ template is used instead of the standard one. RubyGems does not support any
11
+ kind of customization in that area, so I would _strongly_ suggest that you use
12
+ the documentation provided at http://roby.rubyforge.org instead of the
13
+ RubyGem-generated one.
14
+
15
+ = What is Roby ?
16
+
17
+ Roby is a plan manager: it allows to represent, execute and adapt a plan, which
18
+ is a representation of the past, present and future activities of a robot along
19
+ with the information needed to verify that their executin is going well, and to
20
+ manage errors.
21
+
22
+ Roby is:
23
+ * a task/event model in which one can represent the activities (Roby::Task) and
24
+ the noticeable situations during execution (Roby::EventGenerator,
25
+ Roby::Task.event).
26
+ * a set of task relations describing the interactions between the activities
27
+ (Roby::TaskStructure).
28
+ * a set of event relations describing the reaction the system should have in
29
+ response to some situations (Roby::EventStructure).
30
+ * error management tools which allow to catch errors during execution and
31
+ repair them (i.e. let the system manage the error).
32
+ * a mean to modify the plan as it is being executed (Roby::Transaction)
33
+ * (G)UI tools for interacting/controlling the living system.
34
+ * all of that in a multi-robot context.
35
+
36
+ == Acknowledgments
37
+
38
+ This work has been supported by the DGA (http://www.defense.gouv.fr/dga) which
39
+ financed my PhD and the LAAS/CNRS (http://www.laas.fr), where I did it. It is
40
+ now supported by the DFKI (http://www.dfki.de) where I currently work and use
41
+ this plan manager.
42
+
43
+ == Related publications
44
+
45
+ Roby is the result of my PhD. As such, my PhD thesis can be considered as a
46
+ design document for the system. If you want an overview of the principles, you
47
+ can also refer to the two publications I did.
48
+
49
+ See {this page}[link:files/doc/papers_rdoc.html] for the list of publication
50
+ and the associated PDF files.
51
+
52
+ == Videos
53
+
54
+ The videos that are available show some capabilities of the system. Frankly you
55
+ will not be able to understand them unless you have already an idea on what is
56
+ going on. They are also referenced in other parts of the API documentation,
57
+ when it is meaningful.
58
+
59
+ See {here}[link:files/doc/videos_rdoc.html] for the available videos.
60
+
61
+ == Tutorials
62
+
63
+ A set of tutorials describe Roby's main features and let you experiment with
64
+ them:
65
+ 1. the GettingStarted[link:files/doc/tutorials/01-GettingStarted_rdoc.html] tutorial makes
66
+ you start a brand new Roby application and explains its structure.
67
+ 2. the GoForward[link:files/doc/tutorials/02-GoForward_rdoc.html] tutorial shows how to create
68
+ a simple task, how to start the Roby controller and how to interact with it
69
+ using a shell.
70
+ 3. the PlannedPath[link:files/doc/tutorials/03-PlannedPath_rdoc.html] tutorial
71
+ shows how to create a (slightly) more complex plan, using the plan-generation
72
+ capabilities of Roby. It also shows some properties of that plan.
73
+ 4. the EventPropagation[link:files/doc/tutorials/04-EventPropagation_rdoc.html]
74
+ tutorial describes how the plan execution actually goes, with examples from
75
+ Roby's plan execution display (requires to have QtRuby)
76
+ 5. the ErrorHandling[link:files/doc/tutorials/05-ErrorHandling_rdoc.html]
77
+ tutorial shows how errors are represented in the system, and how it is possible
78
+ to handle and repair them.
79
+ 6. {not really a tutorial}[link:files/doc/tutorials/06-Overview_rdoc.html], but
80
+ an overview of features that have not been presented in the first five
81
+ tutorials.
82
+
83
+ == License
84
+
85
+ Copyright 2006-2007, LAAS/CNRS <openrobots@laas.fr>
86
+ Copyright 2006-2008, Sylvain Joyeux <sylvain.joyeux@m4x.org>
87
+ Copyright 2008 DFKI <robotik-bremen@dfki.de>
88
+
89
+ This work is licensed under the CeCiLL-B license, which is a free software
90
+ license with the same spirit than the BSD license. See License.txt for details,
91
+ and License-fr.txt for the french version.
92
+
93
+ == Plugins
94
+
95
+ === Core plugins
96
+
97
+ Two plugins are shipped with the Roby core:
98
+ fault_injection[link:../plugins/fault_injection/index.html] and
99
+ subsystems[link:../plugins/subsystems/index.html]. See their respective
100
+ documentation for description and usage.
101
+
102
+ Roby::Application#using(plugin_name) must be calledallows to enable the
103
+ plugins at initialization time. You can for instance put the following in
104
+ <tt>config/init.rb</tt>
105
+
106
+ Roby.app.using 'fault_injection'
107
+
108
+ === External plugins
109
+
110
+ For now, only one plugins exists. This plugin allows to represent and control
111
+ seamlessly a Genom[http://softs.laas.fr/openrobots] functional layer in a Roby
112
+ plan. This plugin is not yet released, but if you're interested I can give you
113
+ directions on how to get it and install it. The documentation is available here[link:../plugins/genom/index.html]
114
+
115
+ = Installation
116
+
117
+ == External dependencies
118
+ * The Roby engine needs
119
+ * +utilrb+, which is available on RubyForge[http://utilrb.rubyforge.org] as a gem
120
+ * Facets, available on RubyForge[http://rubyforge.org/projects/facets] or as a gem
121
+ * ActiveSupport, available on RubyForge[http://rubyforge.org/projects/activesupport] or as a gem
122
+ * the Boost C++ library, including Boost/Graph[www.boost.org]
123
+
124
+ * the test suite needs also
125
+ * FlexMock, available on RubyForge[http://rubyforge.org/projects/flexmock]
126
+
127
+ * finally, the GUI requires {QtRuby >=
128
+ 1.4.9}[http://rubyforge.org/projects/korundum], SVG export requires QtRuby to
129
+ be built with Qt >= 4.3
130
+
131
+ == Before installation
132
+
133
+ Whatever the way you install Roby, the only dependencies that you really have
134
+ to install yourself are boost (including boost/graph) and (optionally) QtRuby
135
+ (see above). If boost is not installed in a standard location, you will also
136
+ have to use the --with-boost-dir option to build Roby graph's extension.
137
+
138
+ Moreover, Roby uses {the jamis
139
+ template}[http://weblog.jamisbuck.org/2005/4/8/rdoc-template], which is
140
+ provided with the Roby sources (nothing needs to be done). If you want to use
141
+ another template, you can define the +ROBY_RDOC_TEMPLATE+ environment variable
142
+ before the installation. For instance, to use the standard RDoc HTML template,
143
+ do (for Unix-like shells):
144
+
145
+ ROBY_RDOC_TEMPLATE=html rake docs
146
+
147
+ == Installing the easy way
148
+
149
+ Roby is available on RubyForge as a gem. After having installed the C++
150
+ dependencies (boost with boost/graph), you can simply install it with
151
+
152
+ gem install roby
153
+
154
+ == Installing from source
155
+
156
+ First, install all the required dependencies. Then, get the sources either
157
+ from a release tarball or the RubyForge git
158
+ repository[http://rubyforge.org/projects/roby], or from the development
159
+ one[http://github.com/doudou/roby].
160
+
161
+ Once the source is installed, run
162
+ rake setup
163
+
data/Rakefile ADDED
@@ -0,0 +1,161 @@
1
+ $LOAD_PATH.unshift File.expand_path('lib', File.dirname(__FILE__))
2
+ require 'enumerator'
3
+ require 'hoe'
4
+ require 'roby/config'
5
+
6
+ begin
7
+ require 'hoe'
8
+ namespace 'dist' do
9
+ hoe = Hoe.new('roby', Roby::VERSION) do |p|
10
+ p.developer 'Sylvain Joyeux', 'sylvain.joyeux@m4x.org'
11
+
12
+ p.summary = 'A plan-based control framework for autonomous systems'
13
+ p.url = p.paragraphs_of('README.txt', 1).join("\n\n")
14
+ p.description = p.paragraphs_of('README.txt', 2..18).join("\n\n")
15
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
16
+ p.post_install_message = p.paragraphs_of('README.txt', 2).join("\n\n")
17
+
18
+ p.extra_deps << ['facets', '>= 2.0'] << 'activesupport' << ['utilrb', '1.2']
19
+ if p.respond_to? :need_rdoc=
20
+ p.need_rdoc = false
21
+ end
22
+ end
23
+ hoe.spec.extensions <<
24
+ 'ext/droby/extconf.rb' <<
25
+ 'ext/graph/extconf.rb'
26
+
27
+ hoe.spec.extra_rdoc_files =
28
+ hoe.spec.files.grep /(\.rdoc|\.cc|\.hh|\.rb|\.txt)$/
29
+
30
+ hoe.spec.description = hoe.summary
31
+
32
+ hoe.spec.rdoc_options <<
33
+ '--main' << 'README.txt' <<
34
+ "--inline-source" <<
35
+ "--accessor" << "attribute" <<
36
+ "--accessor" << "attr_predicate"
37
+
38
+ if !hoe.respond_to? :need_rdoc=
39
+ # This sucks, I know, but Hoe's handling of documentation is not
40
+ # enough for me
41
+ tasks = Rake.application.instance_variable_get :@tasks
42
+ tasks.delete_if { |n, _| n =~ /dist:(re|clobber_|)docs/ }
43
+ end
44
+ end
45
+ rescue LoadError
46
+ puts "cannot load the Hoe gem, distribution is disabled"
47
+ end
48
+
49
+ def build_extension(name, soname = name)
50
+ Dir.chdir("ext/#{name}") do
51
+ extconf = "ruby extconf.rb"
52
+ extconf << " --with-boost-dir=#{ENV['BOOST_DIR']}" if ENV['BOOST_DIR']
53
+ if !system(extconf) || !system("make")
54
+ raise "cannot set up #{name} extension"
55
+ end
56
+ end
57
+ FileUtils.ln_sf "../../ext/#{name}/#{soname}.so", "lib/roby/#{soname}.so"
58
+ end
59
+ def clean_extension(name, soname = name)
60
+ puts "Cleaning ext/#{name}"
61
+ Dir.chdir("ext/#{name}") do
62
+ FileUtils.rm_f ["#{soname}.so", 'Makefile', 'mkmf.log']
63
+ FileUtils.rm_f Dir.enum_for(:glob, '*.o').to_a
64
+ end
65
+ end
66
+
67
+ task :cruise => [:setup, :recore_docs, :test]
68
+
69
+ #########
70
+ # Test-related targets
71
+
72
+ desc 'run all tests'
73
+ task :test => ['test:core', 'test:distributed']
74
+
75
+ namespace 'test' do
76
+ desc 'run tests on the Core'
77
+ task 'core' => :setup do
78
+ if !system("testrb test/suite_core.rb")
79
+ puts "failed core suite"
80
+ exit(1)
81
+ end
82
+ end
83
+ desc 'run tests on Distributed Roby'
84
+ task 'distributed' => :setup do
85
+ if !system("testrb test/suite_distributed.rb")
86
+ puts "failed droby suite"
87
+ exit(1)
88
+ end
89
+ end
90
+ end
91
+
92
+ desc 'generate and build all the necessary files'
93
+ task :setup => :uic do
94
+ build_extension 'droby'
95
+ build_extension 'graph', 'bgl'
96
+ end
97
+
98
+ desc 'remove all generated files'
99
+ task :clean => 'dist:clean' do
100
+ clean_extension 'droby'
101
+ clean_extension 'graph', 'bgl'
102
+ end
103
+
104
+ UIFILES = %w{relations.ui relations_view.ui data_displays.ui replay_controls.ui basic_display.ui chronicle_view.ui}
105
+ desc 'generate all Qt UI files using rbuic4'
106
+ task :uic do
107
+ UIFILES.each do |file|
108
+ file = 'lib/roby/log/gui/' + file
109
+ if !system('rbuic4', '-o', file.gsub(/\.ui$/, '_ui.rb'), file)
110
+ STDERR.puts "Failed to generate #{file}"
111
+ end
112
+ end
113
+ end
114
+
115
+ ###########
116
+ # Documentation generation
117
+ #
118
+ # This redefines Hoe's targets for documentation, as the documentation
119
+ # generation is not flexible enough for us
120
+ namespace 'doc' do
121
+ require 'roby/app/rake'
122
+ Rake::RDocTask.new("core") do |rdoc|
123
+ rdoc.options << "--inline-source" << "--accessor" << "attribute" << "--accessor" << "attr_predicate"
124
+ rdoc.rdoc_dir = 'doc/rdoc/core'
125
+ rdoc.title = "Roby Core"
126
+ rdoc.template = Roby::Rake.rdoc_template
127
+ rdoc.options << '--main' << 'README.txt'
128
+ rdoc.rdoc_files.include('README.txt', 'TODO.txt', 'History.txt')
129
+ rdoc.rdoc_files.include('lib/**/*.rb', 'ext/**/*.cc')
130
+ rdoc.rdoc_files.include('doc/videos.rdoc', 'doc/papers.rdoc')
131
+ rdoc.rdoc_files.include('doc/tutorials/**/*')
132
+ rdoc.rdoc_files.exclude('lib/roby/test/**/*', 'lib/roby/app/**/*', 'lib/roby/log/gui/*')
133
+ end
134
+
135
+ Rake::RDocTask.new("tutorials") do |rdoc|
136
+ rdoc.options << "--inline-source" << "--accessor" << "attribute" << "--accessor" << "attr_predicate"
137
+ rdoc.rdoc_dir = 'doc/rdoc/tutorials'
138
+ rdoc.title = "Roby Tutorials"
139
+ rdoc.template = Roby::Rake.rdoc_template
140
+ rdoc.options << '--main' << 'README.txt'
141
+ rdoc.rdoc_files.include('README.txt', 'TODO.txt', 'History.txt')
142
+ rdoc.rdoc_files.include('doc/videos.rdoc', 'doc/papers.rdoc')
143
+ rdoc.rdoc_files.include('doc/tutorials/**/*')
144
+ end
145
+
146
+ def plugins_documentation_generation(target_prefix)
147
+ task "plugins_#{target_prefix}docs" do
148
+ Roby::Rake.invoke_plugin_target("#{target_prefix}docs")
149
+ end
150
+ end
151
+ desc 'generate the documentation for all installed plugins'
152
+ plugins_documentation_generation ''
153
+ desc 'remove the documentation for all installed plugins'
154
+ plugins_documentation_generation 'clobber_'
155
+ desc 'regenerate the documentation for all installed plugins'
156
+ plugins_documentation_generation 're'
157
+ end
158
+
159
+ task 'docs' => ['doc:core', 'doc:plugins_docs']
160
+ task 'clobber_docs' => ['doc:clobber_core', 'doc:plugins_clobber_docs']
161
+ task 'redocs' => ['doc:recore', 'doc:replugins_docs']