sierra-research 1.3.6__py3-none-any.whl → 1.5.0__py3-none-any.whl

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 (254) hide show
  1. sierra/__init__.py +3 -3
  2. sierra/core/__init__.py +3 -3
  3. sierra/core/batchroot.py +223 -0
  4. sierra/core/cmdline.py +681 -1057
  5. sierra/core/compare.py +11 -0
  6. sierra/core/config.py +96 -88
  7. sierra/core/engine.py +306 -0
  8. sierra/core/execenv.py +380 -0
  9. sierra/core/expdef.py +11 -0
  10. sierra/core/experiment/__init__.py +1 -0
  11. sierra/core/experiment/bindings.py +150 -101
  12. sierra/core/experiment/definition.py +414 -245
  13. sierra/core/experiment/spec.py +83 -85
  14. sierra/core/exproot.py +44 -0
  15. sierra/core/generators/__init__.py +10 -0
  16. sierra/core/generators/experiment.py +528 -0
  17. sierra/core/generators/generator_factory.py +138 -137
  18. sierra/core/graphs/__init__.py +23 -0
  19. sierra/core/graphs/bcbridge.py +94 -0
  20. sierra/core/graphs/heatmap.py +245 -324
  21. sierra/core/graphs/pathset.py +27 -0
  22. sierra/core/graphs/schema.py +77 -0
  23. sierra/core/graphs/stacked_line.py +341 -0
  24. sierra/core/graphs/summary_line.py +506 -0
  25. sierra/core/logging.py +3 -2
  26. sierra/core/models/__init__.py +3 -1
  27. sierra/core/models/info.py +19 -0
  28. sierra/core/models/interface.py +52 -122
  29. sierra/core/pipeline/__init__.py +2 -5
  30. sierra/core/pipeline/pipeline.py +228 -126
  31. sierra/core/pipeline/stage1/__init__.py +10 -0
  32. sierra/core/pipeline/stage1/pipeline_stage1.py +45 -31
  33. sierra/core/pipeline/stage2/__init__.py +10 -0
  34. sierra/core/pipeline/stage2/pipeline_stage2.py +8 -11
  35. sierra/core/pipeline/stage2/runner.py +401 -0
  36. sierra/core/pipeline/stage3/__init__.py +12 -0
  37. sierra/core/pipeline/stage3/gather.py +321 -0
  38. sierra/core/pipeline/stage3/pipeline_stage3.py +37 -84
  39. sierra/core/pipeline/stage4/__init__.py +12 -2
  40. sierra/core/pipeline/stage4/pipeline_stage4.py +36 -354
  41. sierra/core/pipeline/stage5/__init__.py +12 -0
  42. sierra/core/pipeline/stage5/pipeline_stage5.py +33 -208
  43. sierra/core/pipeline/yaml.py +48 -0
  44. sierra/core/plugin.py +529 -62
  45. sierra/core/proc.py +11 -0
  46. sierra/core/prod.py +11 -0
  47. sierra/core/ros1/__init__.py +5 -1
  48. sierra/core/ros1/callbacks.py +22 -21
  49. sierra/core/ros1/cmdline.py +59 -88
  50. sierra/core/ros1/generators.py +159 -175
  51. sierra/core/ros1/variables/__init__.py +3 -0
  52. sierra/core/ros1/variables/exp_setup.py +122 -116
  53. sierra/core/startup.py +106 -76
  54. sierra/core/stat_kernels.py +4 -5
  55. sierra/core/storage.py +13 -32
  56. sierra/core/trampoline.py +30 -0
  57. sierra/core/types.py +116 -71
  58. sierra/core/utils.py +103 -106
  59. sierra/core/variables/__init__.py +1 -1
  60. sierra/core/variables/base_variable.py +12 -17
  61. sierra/core/variables/batch_criteria.py +387 -481
  62. sierra/core/variables/builtin.py +135 -0
  63. sierra/core/variables/exp_setup.py +19 -39
  64. sierra/core/variables/population_size.py +72 -76
  65. sierra/core/variables/variable_density.py +44 -68
  66. sierra/core/vector.py +1 -1
  67. sierra/main.py +256 -88
  68. sierra/plugins/__init__.py +119 -0
  69. sierra/plugins/compare/__init__.py +14 -0
  70. sierra/plugins/compare/graphs/__init__.py +19 -0
  71. sierra/plugins/compare/graphs/cmdline.py +120 -0
  72. sierra/plugins/compare/graphs/comparator.py +291 -0
  73. sierra/plugins/compare/graphs/inter_controller.py +531 -0
  74. sierra/plugins/compare/graphs/inter_scenario.py +297 -0
  75. sierra/plugins/compare/graphs/namecalc.py +53 -0
  76. sierra/plugins/compare/graphs/outputroot.py +73 -0
  77. sierra/plugins/compare/graphs/plugin.py +147 -0
  78. sierra/plugins/compare/graphs/preprocess.py +172 -0
  79. sierra/plugins/compare/graphs/schema.py +37 -0
  80. sierra/plugins/engine/__init__.py +14 -0
  81. sierra/plugins/engine/argos/__init__.py +18 -0
  82. sierra/plugins/{platform → engine}/argos/cmdline.py +144 -151
  83. sierra/plugins/{platform/argos/variables → engine/argos/generators}/__init__.py +5 -0
  84. sierra/plugins/engine/argos/generators/engine.py +394 -0
  85. sierra/plugins/engine/argos/plugin.py +393 -0
  86. sierra/plugins/{platform/argos/generators → engine/argos/variables}/__init__.py +5 -0
  87. sierra/plugins/engine/argos/variables/arena_shape.py +183 -0
  88. sierra/plugins/engine/argos/variables/cameras.py +240 -0
  89. sierra/plugins/engine/argos/variables/constant_density.py +112 -0
  90. sierra/plugins/engine/argos/variables/exp_setup.py +82 -0
  91. sierra/plugins/{platform → engine}/argos/variables/physics_engines.py +83 -87
  92. sierra/plugins/engine/argos/variables/population_constant_density.py +178 -0
  93. sierra/plugins/engine/argos/variables/population_size.py +115 -0
  94. sierra/plugins/engine/argos/variables/population_variable_density.py +123 -0
  95. sierra/plugins/engine/argos/variables/rendering.py +108 -0
  96. sierra/plugins/engine/ros1gazebo/__init__.py +18 -0
  97. sierra/plugins/engine/ros1gazebo/cmdline.py +175 -0
  98. sierra/plugins/{platform/ros1robot → engine/ros1gazebo}/generators/__init__.py +5 -0
  99. sierra/plugins/engine/ros1gazebo/generators/engine.py +125 -0
  100. sierra/plugins/engine/ros1gazebo/plugin.py +404 -0
  101. sierra/plugins/engine/ros1gazebo/variables/__init__.py +15 -0
  102. sierra/plugins/engine/ros1gazebo/variables/population_size.py +214 -0
  103. sierra/plugins/engine/ros1robot/__init__.py +18 -0
  104. sierra/plugins/engine/ros1robot/cmdline.py +159 -0
  105. sierra/plugins/{platform/ros1gazebo → engine/ros1robot}/generators/__init__.py +4 -0
  106. sierra/plugins/engine/ros1robot/generators/engine.py +95 -0
  107. sierra/plugins/engine/ros1robot/plugin.py +410 -0
  108. sierra/plugins/{hpc/local → engine/ros1robot/variables}/__init__.py +5 -0
  109. sierra/plugins/engine/ros1robot/variables/population_size.py +146 -0
  110. sierra/plugins/execenv/__init__.py +11 -0
  111. sierra/plugins/execenv/hpc/__init__.py +18 -0
  112. sierra/plugins/execenv/hpc/adhoc/__init__.py +18 -0
  113. sierra/plugins/execenv/hpc/adhoc/cmdline.py +30 -0
  114. sierra/plugins/execenv/hpc/adhoc/plugin.py +131 -0
  115. sierra/plugins/execenv/hpc/cmdline.py +137 -0
  116. sierra/plugins/execenv/hpc/local/__init__.py +18 -0
  117. sierra/plugins/execenv/hpc/local/cmdline.py +31 -0
  118. sierra/plugins/execenv/hpc/local/plugin.py +145 -0
  119. sierra/plugins/execenv/hpc/pbs/__init__.py +18 -0
  120. sierra/plugins/execenv/hpc/pbs/cmdline.py +30 -0
  121. sierra/plugins/execenv/hpc/pbs/plugin.py +121 -0
  122. sierra/plugins/execenv/hpc/slurm/__init__.py +18 -0
  123. sierra/plugins/execenv/hpc/slurm/cmdline.py +30 -0
  124. sierra/plugins/execenv/hpc/slurm/plugin.py +133 -0
  125. sierra/plugins/execenv/prefectserver/__init__.py +18 -0
  126. sierra/plugins/execenv/prefectserver/cmdline.py +66 -0
  127. sierra/plugins/execenv/prefectserver/dockerremote/__init__.py +18 -0
  128. sierra/plugins/execenv/prefectserver/dockerremote/cmdline.py +66 -0
  129. sierra/plugins/execenv/prefectserver/dockerremote/plugin.py +132 -0
  130. sierra/plugins/execenv/prefectserver/flow.py +66 -0
  131. sierra/plugins/execenv/prefectserver/local/__init__.py +18 -0
  132. sierra/plugins/execenv/prefectserver/local/cmdline.py +29 -0
  133. sierra/plugins/execenv/prefectserver/local/plugin.py +133 -0
  134. sierra/plugins/{hpc/adhoc → execenv/robot}/__init__.py +1 -0
  135. sierra/plugins/execenv/robot/turtlebot3/__init__.py +18 -0
  136. sierra/plugins/execenv/robot/turtlebot3/plugin.py +204 -0
  137. sierra/plugins/expdef/__init__.py +14 -0
  138. sierra/plugins/expdef/json/__init__.py +14 -0
  139. sierra/plugins/expdef/json/plugin.py +504 -0
  140. sierra/plugins/expdef/xml/__init__.py +14 -0
  141. sierra/plugins/expdef/xml/plugin.py +386 -0
  142. sierra/{core/hpc → plugins/proc}/__init__.py +1 -1
  143. sierra/plugins/proc/collate/__init__.py +15 -0
  144. sierra/plugins/proc/collate/cmdline.py +47 -0
  145. sierra/plugins/proc/collate/plugin.py +271 -0
  146. sierra/plugins/proc/compress/__init__.py +18 -0
  147. sierra/plugins/proc/compress/cmdline.py +47 -0
  148. sierra/plugins/proc/compress/plugin.py +123 -0
  149. sierra/plugins/proc/decompress/__init__.py +18 -0
  150. sierra/plugins/proc/decompress/plugin.py +96 -0
  151. sierra/plugins/proc/imagize/__init__.py +15 -0
  152. sierra/plugins/proc/imagize/cmdline.py +49 -0
  153. sierra/plugins/proc/imagize/plugin.py +270 -0
  154. sierra/plugins/proc/modelrunner/__init__.py +16 -0
  155. sierra/plugins/proc/modelrunner/plugin.py +250 -0
  156. sierra/plugins/proc/statistics/__init__.py +15 -0
  157. sierra/plugins/proc/statistics/cmdline.py +64 -0
  158. sierra/plugins/proc/statistics/plugin.py +390 -0
  159. sierra/plugins/{hpc → prod}/__init__.py +1 -0
  160. sierra/plugins/prod/graphs/__init__.py +18 -0
  161. sierra/plugins/prod/graphs/cmdline.py +269 -0
  162. sierra/plugins/prod/graphs/collate.py +279 -0
  163. sierra/plugins/prod/graphs/inter/__init__.py +13 -0
  164. sierra/plugins/prod/graphs/inter/generate.py +83 -0
  165. sierra/plugins/prod/graphs/inter/heatmap.py +86 -0
  166. sierra/plugins/prod/graphs/inter/line.py +134 -0
  167. sierra/plugins/prod/graphs/intra/__init__.py +15 -0
  168. sierra/plugins/prod/graphs/intra/generate.py +202 -0
  169. sierra/plugins/prod/graphs/intra/heatmap.py +74 -0
  170. sierra/plugins/prod/graphs/intra/line.py +114 -0
  171. sierra/plugins/prod/graphs/plugin.py +103 -0
  172. sierra/plugins/prod/graphs/targets.py +63 -0
  173. sierra/plugins/prod/render/__init__.py +18 -0
  174. sierra/plugins/prod/render/cmdline.py +72 -0
  175. sierra/plugins/prod/render/plugin.py +282 -0
  176. sierra/plugins/storage/__init__.py +5 -0
  177. sierra/plugins/storage/arrow/__init__.py +18 -0
  178. sierra/plugins/storage/arrow/plugin.py +38 -0
  179. sierra/plugins/storage/csv/__init__.py +9 -0
  180. sierra/plugins/storage/csv/plugin.py +12 -5
  181. sierra/version.py +3 -2
  182. sierra_research-1.5.0.dist-info/METADATA +238 -0
  183. sierra_research-1.5.0.dist-info/RECORD +186 -0
  184. {sierra_research-1.3.6.dist-info → sierra_research-1.5.0.dist-info}/WHEEL +1 -2
  185. sierra/core/experiment/xml.py +0 -454
  186. sierra/core/generators/controller_generator_parser.py +0 -34
  187. sierra/core/generators/exp_creator.py +0 -351
  188. sierra/core/generators/exp_generators.py +0 -142
  189. sierra/core/graphs/scatterplot2D.py +0 -109
  190. sierra/core/graphs/stacked_line_graph.py +0 -249
  191. sierra/core/graphs/stacked_surface_graph.py +0 -220
  192. sierra/core/graphs/summary_line_graph.py +0 -369
  193. sierra/core/hpc/cmdline.py +0 -142
  194. sierra/core/models/graphs.py +0 -87
  195. sierra/core/pipeline/stage2/exp_runner.py +0 -286
  196. sierra/core/pipeline/stage3/imagizer.py +0 -149
  197. sierra/core/pipeline/stage3/run_collator.py +0 -317
  198. sierra/core/pipeline/stage3/statistics_calculator.py +0 -478
  199. sierra/core/pipeline/stage4/graph_collator.py +0 -319
  200. sierra/core/pipeline/stage4/inter_exp_graph_generator.py +0 -240
  201. sierra/core/pipeline/stage4/intra_exp_graph_generator.py +0 -317
  202. sierra/core/pipeline/stage4/model_runner.py +0 -168
  203. sierra/core/pipeline/stage4/rendering.py +0 -283
  204. sierra/core/pipeline/stage4/yaml_config_loader.py +0 -103
  205. sierra/core/pipeline/stage5/inter_scenario_comparator.py +0 -328
  206. sierra/core/pipeline/stage5/intra_scenario_comparator.py +0 -989
  207. sierra/core/platform.py +0 -493
  208. sierra/core/plugin_manager.py +0 -369
  209. sierra/core/root_dirpath_generator.py +0 -241
  210. sierra/plugins/hpc/adhoc/plugin.py +0 -125
  211. sierra/plugins/hpc/local/plugin.py +0 -81
  212. sierra/plugins/hpc/pbs/__init__.py +0 -9
  213. sierra/plugins/hpc/pbs/plugin.py +0 -126
  214. sierra/plugins/hpc/slurm/__init__.py +0 -9
  215. sierra/plugins/hpc/slurm/plugin.py +0 -130
  216. sierra/plugins/platform/__init__.py +0 -9
  217. sierra/plugins/platform/argos/__init__.py +0 -9
  218. sierra/plugins/platform/argos/generators/platform_generators.py +0 -383
  219. sierra/plugins/platform/argos/plugin.py +0 -337
  220. sierra/plugins/platform/argos/variables/arena_shape.py +0 -145
  221. sierra/plugins/platform/argos/variables/cameras.py +0 -243
  222. sierra/plugins/platform/argos/variables/constant_density.py +0 -136
  223. sierra/plugins/platform/argos/variables/exp_setup.py +0 -113
  224. sierra/plugins/platform/argos/variables/population_constant_density.py +0 -175
  225. sierra/plugins/platform/argos/variables/population_size.py +0 -102
  226. sierra/plugins/platform/argos/variables/population_variable_density.py +0 -132
  227. sierra/plugins/platform/argos/variables/rendering.py +0 -104
  228. sierra/plugins/platform/ros1gazebo/__init__.py +0 -9
  229. sierra/plugins/platform/ros1gazebo/cmdline.py +0 -213
  230. sierra/plugins/platform/ros1gazebo/generators/platform_generators.py +0 -137
  231. sierra/plugins/platform/ros1gazebo/plugin.py +0 -335
  232. sierra/plugins/platform/ros1gazebo/variables/__init__.py +0 -10
  233. sierra/plugins/platform/ros1gazebo/variables/population_size.py +0 -204
  234. sierra/plugins/platform/ros1robot/__init__.py +0 -9
  235. sierra/plugins/platform/ros1robot/cmdline.py +0 -175
  236. sierra/plugins/platform/ros1robot/generators/platform_generators.py +0 -112
  237. sierra/plugins/platform/ros1robot/plugin.py +0 -373
  238. sierra/plugins/platform/ros1robot/variables/__init__.py +0 -10
  239. sierra/plugins/platform/ros1robot/variables/population_size.py +0 -146
  240. sierra/plugins/robot/__init__.py +0 -9
  241. sierra/plugins/robot/turtlebot3/__init__.py +0 -9
  242. sierra/plugins/robot/turtlebot3/plugin.py +0 -194
  243. sierra_research-1.3.6.data/data/share/man/man1/sierra-cli.1 +0 -2349
  244. sierra_research-1.3.6.data/data/share/man/man7/sierra-examples.7 +0 -488
  245. sierra_research-1.3.6.data/data/share/man/man7/sierra-exec-envs.7 +0 -331
  246. sierra_research-1.3.6.data/data/share/man/man7/sierra-glossary.7 +0 -285
  247. sierra_research-1.3.6.data/data/share/man/man7/sierra-platforms.7 +0 -358
  248. sierra_research-1.3.6.data/data/share/man/man7/sierra-usage.7 +0 -725
  249. sierra_research-1.3.6.data/data/share/man/man7/sierra.7 +0 -78
  250. sierra_research-1.3.6.dist-info/METADATA +0 -500
  251. sierra_research-1.3.6.dist-info/RECORD +0 -133
  252. sierra_research-1.3.6.dist-info/top_level.txt +0 -1
  253. {sierra_research-1.3.6.dist-info → sierra_research-1.5.0.dist-info}/entry_points.txt +0 -0
  254. {sierra_research-1.3.6.dist-info → sierra_research-1.5.0.dist-info/licenses}/LICENSE +0 -0
@@ -1,488 +0,0 @@
1
- .\" Man page generated from reStructuredText.
2
- .
3
- .
4
- .nr rst2man-indent-level 0
5
- .
6
- .de1 rstReportMargin
7
- \\$1 \\n[an-margin]
8
- level \\n[rst2man-indent-level]
9
- level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
10
- -
11
- \\n[rst2man-indent0]
12
- \\n[rst2man-indent1]
13
- \\n[rst2man-indent2]
14
- ..
15
- .de1 INDENT
16
- .\" .rstReportMargin pre:
17
- . RS \\$1
18
- . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
19
- . nr rst2man-indent-level +1
20
- .\" .rstReportMargin post:
21
- ..
22
- .de UNINDENT
23
- . RE
24
- .\" indent \\n[an-margin]
25
- .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
26
- .nr rst2man-indent-level -1
27
- .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
28
- .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
29
- ..
30
- .TH "SIERRA-EXAMPLES" "7" "Apr 01, 2024" "1.3.6" "SIERRA"
31
- .SH NAME
32
- sierra-examples \- Examples of SIERRA usage. These examples all assume that you have successfully set up SIERRA with a project of your choice.
33
- .sp
34
- This page contains reference examples of SIERRA usage to help you craft your own
35
- SIERRA invocation. These examples use the SIERRA project plugins from the
36
- SIERRA sample project repo: \fI\%https://github.com/jharwell/sierra\-sample\-project\fP\&. See
37
- \fI\%Trying Out SIERRA\fP or \fI\%Getting Started With SIERRA\fP for setting up the
38
- sample project repository.
39
- .sp
40
- In all examples:
41
- .INDENT 0.0
42
- .IP \(bu 2
43
- \fB$HOME/git/mycode\fP contains the ARGoS C++ library
44
- .IP \(bu 2
45
- \fB$HOME/git/sierra\-sample\-project/projects\fP contains the SIERRA project
46
- plugin
47
- .IP \(bu 2
48
- \fB$HOME/git/sierra\-sample\-project/projects\fP is on
49
- \fI\%SIERRA_PLUGIN_PATH\fP\&.
50
- .UNINDENT
51
- .sp
52
- If your setup is different, adjust paths in the commands below as needed.
53
- .sp
54
- \fBIMPORTANT:\fP
55
- .INDENT 0.0
56
- .INDENT 3.5
57
- The examples are grouped by platform, so they can be pasted into
58
- the terminal and executed directly. However, parts of many
59
- commands use common functionality in the SIERRA core; just
60
- because you don\(aqt see stage5 examples for the ROS1+Gazebo
61
- platform doesn\(aqt mean you can\(aqt run stage5 with that
62
- platform. Non\-uniformities in which commands are below are more a
63
- limitation of the sample project than SIERRA itself.
64
- .UNINDENT
65
- .UNINDENT
66
- .SH ARGOS EXAMPLES
67
- .SS Basic Example
68
- .sp
69
- This example illustrates the simplest way to use ARGoS with SIERRA to run
70
- experiments.
71
- .INDENT 0.0
72
- .INDENT 3.5
73
- .sp
74
- .nf
75
- .ft C
76
- sierra\-cli \e
77
- \-\-sierra\-root=$HOME/exp \e
78
- \-\-template\-input\-file=exp/your\-experiment.argos \e
79
- \-\-n\-runs=3 \e
80
- \-\-platform=platform.argos\e
81
- \-\-project=argos_project \e
82
- \-\-exec\-env=hpc.local \e
83
- \-\-physics\-n\-engines=1 \e
84
- \-\-exp\-setup=exp_setup.T10000 \e
85
- \-\-controller=foraging.footbot_foraging\e
86
- \-\-scenario=LowBlockCount.10x10x2 \e
87
- \-\-batch\-criteria population_size.Log64
88
- .ft P
89
- .fi
90
- .UNINDENT
91
- .UNINDENT
92
- .sp
93
- This will run a batch of 7 experiments using a correlated random walk robot
94
- controller (CRW), across which the swarm size will be varied from 1..64, by
95
- powers of 2. Experiments will all be run in the same scenario: \fBLowBlockCount\fP
96
- in a 10x10x2 arena; the meaning of \fBLowBlockCount\fP is entirely up to the
97
- project. In this case, we can infer it has to do with the # of blocks available
98
- for robots to forage for. In fact, whatever is passed to \fB\-\-scenario\fP is
99
- totally arbitrary from SIERRA\(aqs point of view.
100
- .sp
101
- Within each experiment, 3 copies of each simulation will be run (each with
102
- different random seeds), for a total of 21 ARGoS simulations. On a reasonable
103
- machine it should take about 10 minutes or so to run. After it finishes, you can
104
- go to \fB$HOME/exp\fP and find all the simulation outputs. For an explanation of
105
- SIERRA\(aqs runtime directory tree, see \fI\%SIERRA Runtime Directory Tree\fP\&.
106
- .SS HPC Example
107
- .sp
108
- In order to run on a SLURM managed cluster, you need to invoke SIERRA within a
109
- script submitted with \fBsbatch\fP, or via \fBsrun\fP with the correspond cmdline
110
- options set.
111
- .INDENT 0.0
112
- .INDENT 3.5
113
- .sp
114
- .nf
115
- .ft C
116
- #!/bin/bash \-l
117
- #SBATCH \-\-time=01:00:00
118
- #SBATCH \-\-nodes 10
119
- #SBATCH \-\-tasks\-per\-node=6
120
- #SBATCH \-\-cpus\-per\-task=4
121
- #SBATCH \-\-mem\-per\-cpu=2G
122
- #SBATCH \-\-output=R\-%x.%j.out
123
- #SBATCH \-\-error=R\-%x.%j.err
124
- #SBATCH \-J argos\-slurm\-example
125
-
126
- # setup environment
127
- export ARGOS_INSTALL_PREFIX=/$HOME/.local
128
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ARGOS_INSTALL_PREFIX/lib/argos3
129
- export ARGOS_PLUGIN_PATH=$ARGOS_INSTALL_PREFIX/lib/argos3:$HOME/git/mycode
130
- export SIERRA_PLUGIN_PATH=$HOME/git/sierra\-projects
131
- export PARALLEL=\(dq\-\-env ARGOS_PLUGIN_PATH \-\-env LD_LIBRARY_PATH\(dq
132
-
133
- sierra\-cli \e
134
- \-\-sierra\-root=$HOME/exp \e
135
- \-\-template\-input\-file=exp/your\-experiment.argos \e
136
- \-\-n\-runs=96 \e
137
- \-\-platform=platform.argos\e
138
- \-\-project=argos_project \e
139
- \-\-exec\-env=hpc.slurm \e
140
- \-\-exp\-setup=exp_setup.T10000 \e
141
- \-\-controller=foraging.footbot_foraging \e
142
- \-\-scenario=LowBlockCount.10x10x2 \e
143
- \-\-batch\-criteria population_size.Log64
144
- .ft P
145
- .fi
146
- .UNINDENT
147
- .UNINDENT
148
- .sp
149
- In this example, the user requests 10 nodes with 24 cores each, and wants to run
150
- ARGoS with 4 physics engines ( 4 * 6 = 24), with 8GB memory per core. Note that
151
- we don\(aqt pass \fB\-\-physics\-n\-engines\fP \-\- SIERRA computes this from the SLURM
152
- parameters. SIERRA will run each of the 96 simulations per experiment in
153
- parallel, 6 at a time on each allocated node. Each simulation will be 10,000
154
- seconds long and use \fBLowBlockCount\fP scenario in a 10x10x2 arena, as in the
155
- previous example.
156
- .sp
157
- \fBIMPORTANT:\fP
158
- .INDENT 0.0
159
- .INDENT 3.5
160
- You need to export \fI\%PARALLEL\fP containing all necessary
161
- environment variables your code uses in addition to those needed
162
- by SIERRA before invoking it, otherwise some of them might not be
163
- transferred to the SLURM job and/or the new shell GNU parallel
164
- starts each simulation in.
165
- .UNINDENT
166
- .UNINDENT
167
- .sp
168
- Note that if you compile ARGoS for different architectures within the same HPC
169
- environment, you can use a combination of conditionally setting
170
- \fI\%ARGOS_PLUGIN_PATH\fP with setting \fI\%SIERRA_ARCH\fP to some string to
171
- tell SIERRA to use a given version of ARGoS, depending on where you request
172
- resources from. For example, you could set \fBSIERRA_ARCH=x86\fP or
173
- \fBSIERRA_ARCH=arm\fP to link to an \fBargos3\-x86\fP or \fBargos3\-arm\fP executable
174
- and libraries, respectively.
175
- .SS Rendering Example
176
- .sp
177
- This example shows how to use ARGoS image capturing ability to create nice
178
- videos of simulations.
179
- .INDENT 0.0
180
- .INDENT 3.5
181
- .sp
182
- .nf
183
- .ft C
184
- sierra\-cli \e
185
- \-\-sierra\-root=$HOME/exp \e
186
- \-\-template\-input\-file=exp/your\-experiment.argos \e
187
- \-\-platform=platform.argos\e
188
- \-\-project=argos_project \e
189
- \-\-controller=foraging.footbot_foraging \e
190
- \-\-scenario=LowBlockCount.10x10x2 \e
191
- \-\-exec\-env=hpc.local \e
192
- \-\-n\-runs=3 \e
193
- \-\-platform\-vc \e
194
- \-\-exp\-graphs=none \e
195
- \-\-physics\-n\-engines=1 \e
196
- \-\-batch\-criteria population_size.Log8
197
- .ft P
198
- .fi
199
- .UNINDENT
200
- .UNINDENT
201
- .sp
202
- The runs 3 simulations in parallel with 1 physics engine each, and runs ARGoS
203
- under \fBXvfb\fP to get it to render headless images. During stage 4, these
204
- images are stitched together using \fBffmpeg\fP to create videos (see
205
- \fI\%SIERRA Runtime Directory Tree\fP for where the videos will appear). No
206
- graphs are generated during stage 4 in this example.
207
- .sp
208
- You may also be interested in the \fB\-\-camera\-config\fP option, which allows you
209
- to specify different static/dynamic camera arrangements (e.g., do a nice
210
- circular pan around the arena during simulation).
211
- .sp
212
- \fBNOTE:\fP
213
- .INDENT 0.0
214
- .INDENT 3.5
215
- Because LOTS of images can be captured by ARGoS to create videos,
216
- depending on simulation length, you usually want to have a very small
217
- \fB\-\-n\-runs\fP to avoid filling up the filesystem.
218
- .UNINDENT
219
- .UNINDENT
220
- .SS Bivariate Batch Criteria Example
221
- .sp
222
- This example shows how to use ARGoS with a bivariate batch criteria (i.e., with
223
- TWO variables/things you want to vary jointly):
224
- .INDENT 0.0
225
- .INDENT 3.5
226
- .sp
227
- .nf
228
- .ft C
229
- ::
230
- .ft P
231
- .fi
232
- .UNINDENT
233
- .UNINDENT
234
- .INDENT 0.0
235
- .INDENT 3.5
236
- sierra\-cli \-\-sierra\-root=$HOME/exp \-\-template\-input\-file=exp/your\-experiment.argos \-\-platform=platform.argos\-\-project=argos_project \-\-controller=foraging.footbot_foraging \-\-scenario=LowBlockCount.10x10x2 \-\-exec\-env=hpc.local \-\-n\-runs=3 \-\-platform\-vc \-\-exp\-graphs=none \-\-physics\-n\-engines=1 \-\-batch\-criteria population_size.Log8 max_speed.1.9.C5
237
- .UNINDENT
238
- .UNINDENT
239
- .sp
240
- The \fBmax_speed.1.9.C5\fP is a batch criteria defined in the sample project, and
241
- corresponds to setting the maximum robot speed from 1...9 to make 5 experiments;
242
- i.e., 1,3,5,7,9. It can also be used on its own\-\-just remove the first
243
- \fBpopulation_size\fP batch criteria from the command to get a univariate example.
244
- .sp
245
- The generated experiments form a grid: population size on the X axis and max
246
- speed on the Y, for a total of 3 * 5 = 15 experiments. If the order of the batch
247
- criteria is switched, then so is which criteria/variable is on the X/Y
248
- axis. Experiments are run in sequence just as with univariate batch
249
- criteria. During stage 3/4, by default SIERRA generates discrete a set of
250
- heatmaps, one per capture interval of simulated time, because the experiment
251
- space is 2D instead of 1D, and you can\(aqt easily represent time AND two
252
- variables + time on a plot. This can take a loooonnnggg time, and can be
253
- disabled with \fB\-\-project\-no\-HM\fP\&.
254
- .sp
255
- The generated sequence of heatmaps can be turned into a video\-\-pass
256
- \fB\-\-bc\-rendering\fP during stage 4 to do so.
257
- .SS Stage 5 Scenario Comparison Example
258
- .sp
259
- This example shows how to run stage 5 to compare a single controller across
260
- different scenarios, assuming that stages 1\-4 have been run successfully. Note
261
- that this stage does not require you to input the \fB\-\-scenario\fP, or the
262
- \fB\-\-batch\-criteria\fP; SIERRA figures these out for you from the \fB\-\-controller\fP
263
- and \fB\-\-sierra\-root\fP\&.
264
- .INDENT 0.0
265
- .INDENT 3.5
266
- .sp
267
- .nf
268
- .ft C
269
- sierra\-cli \e
270
- \-\-sierra\-root=$HOME/exp \e
271
- \-\-project=argos_project \e
272
- \-\-pipeline 5 \e
273
- \-\-scenario\-comparison \e
274
- \-\-dist\-stats=conf95 \e
275
- \-\-bc\-univar \e
276
- \-\-controller=foraging.footbot_foraging \e
277
- \-\-sierra\-root=$HOME/exp
278
- .ft P
279
- .fi
280
- .UNINDENT
281
- .UNINDENT
282
- .sp
283
- This will compare all scenarios that the
284
- \fBforaging.footbot_foraging\fP controller has been run on according to
285
- the configuration defined in \fBstage5.yaml\fP\&. SIERRA will plot the 95%
286
- confidence intervals on all generated graphs for the univariate batch criteria
287
- (whatever it was). If multiple batch criterias were used with this controller in
288
- the same scenario, SIERRA will process all of them and generate unique graphs
289
- for each scenario+criteria combination that the
290
- \fBforaging.footbot_foraging\fP controller was run on.
291
- .SS Stage 5 Controller Comparison Example
292
- .sp
293
- This example shows how to run stage 5 to compare multiple controllers in a
294
- single scenario, assuming that stages 1\-4 have been run successfully. Note that
295
- this stage does not require you to input \fB\-\-batch\-criteria\fP; SIERRA figures
296
- these out for you from the \fB\-\-controller\-list\fP and \fB\-\-sierra\-root\fP\&.
297
- .INDENT 0.0
298
- .INDENT 3.5
299
- .sp
300
- .nf
301
- .ft C
302
- sierra\-cli \e
303
- \-\-sierra\-root=$HOME/exp \e
304
- \-\-project=argos_project \e
305
- \-\-pipeline 5 \e
306
- \-\-controller\-comparison \e
307
- \-\-dist\-stats=conf95 \e
308
- \-\-bc\-univar \e
309
- \-\-controllers\-list=foraging.footbot_foraging,foraging.footbot_foraging\-slow \e
310
- \-\-sierra\-root=$HOME/exp
311
- .ft P
312
- .fi
313
- .UNINDENT
314
- .UNINDENT
315
- .sp
316
- SIERRA will compute the list of scenarios that the \fBforaging.footbot_foraging\fP
317
- and the \fBforaging.footbot_foraging_slow\fP controllers have \fIall\fP been
318
- run. Comparison graphs for each scenario with the
319
- \fBforaging.footbot_foraging,foraging.footbot_foraging_slow\fP controllers will be
320
- generated according to the configuration defined in \fBstage5.yaml\fP\&. SIERRA will
321
- plot the 95% confidence intervals on all generated graphs for the univariate
322
- batch criteria (whatever it was). If multiple batch criterias were used with
323
- each controller in the same scenario, SIERRA will process all of them and
324
- generate unique graphs for each scenario+criteria combination both controllers
325
- were run on.
326
- .SH ROS1+GAZEBO EXAMPLES
327
- .SS Basic Example
328
- .sp
329
- This examples shows the simplest way to use SIERRA with the ROS1+gazebo platform
330
- plugin:
331
- .INDENT 0.0
332
- .INDENT 3.5
333
- .sp
334
- .nf
335
- .ft C
336
- sierra\-cli \e
337
- \-\-platform=platform.ros1gazebo \e
338
- \-\-project=ros1gazebo_project \e
339
- \-\-n\-runs=4 \e
340
- \-\-exec\-env=hpc.local \e
341
- \-\-template\-input\-file=exp/your\-experiment.launch \e
342
- \-\-scenario=HouseWorld.10x10x1 \e
343
- \-\-sierra\-root=$HOME/exp/test \e
344
- \-\-batch\-criteria population_size.Log8 \e
345
- \-\-controller=turtlebot3_sim.wander \e
346
- \-\-exp\-overwrite \e
347
- \-\-exp\-setup=exp_setup.T10 \e
348
- \-\-robot turtlebot3
349
- .ft P
350
- .fi
351
- .UNINDENT
352
- .UNINDENT
353
- .sp
354
- This will run a batch of 4 experiments using a correlated random walk controller
355
- (CRW) on the turtlebot3. Population size will be varied from 1..8, by powers
356
- of 2. Within each experiment, 4 copies of each simulation will be run (each with
357
- different random seeds), for a total of 16 Gazebo simulations. Each experimental
358
- run will be will be 10 seconds of simulated time. On a reasonable machine it
359
- should take about 10 minutes or so to run. After it finishes, you can go to
360
- \fB$HOME/exp\fP and find all the simulation outputs. For an explanation of
361
- SIERRA\(aqs runtime directory tree, see \fI\%SIERRA Runtime Directory Tree\fP\&.
362
- .SS HPC Example
363
- .sp
364
- In order to run on a SLURM managed cluster, you need to invoke SIERRA within a
365
- script submitted with \fBsbatch\fP, or via \fBsrun\fP with the correspond cmdline
366
- options set.
367
- .INDENT 0.0
368
- .INDENT 3.5
369
- .sp
370
- .nf
371
- .ft C
372
- #!/bin/bash \-l
373
- #SBATCH \-\-time=01:00:00
374
- #SBATCH \-\-nodes 4
375
- #SBATCH \-\-tasks\-per\-node=6
376
- #SBATCH \-\-cpus\-per\-task=4
377
- #SBATCH \-\-mem\-per\-cpu=2G
378
- #SBATCH \-\-output=R\-%x.%j.out
379
- #SBATCH \-\-error=R\-%x.%j.err
380
- #SBATCH \-J ros1gazebo\-slurm\-example
381
-
382
- # setup environment
383
- export SIERRA_PLUGIN_PATH=$HOME/git/sierra\-projects
384
-
385
- sierra\-cli \e
386
- \-\-platform=platform.ros1gazebo \e
387
- \-\-project=ros1gazebo_project \e
388
- \-\-n\-runs=96 \e
389
- \-\-exec\-env=hpc.slurm \e
390
- \-\-template\-input\-file=exp/your\-experiment.launch \e
391
- \-\-scenario=HouseWorld.10x10x1 \e
392
- \-\-sierra\-root=$HOME/exp/test \e
393
- \-\-batch\-criteria population_size.Log8 \e
394
- \-\-controller=turtlebot3_sim.wander \e
395
- \-\-exp\-overwrite \e
396
- \-\-exp\-setup=exp_setup.T10000 \e
397
- \-\-robot turtlebot3
398
- .ft P
399
- .fi
400
- .UNINDENT
401
- .UNINDENT
402
- .sp
403
- In this example, the user requests 10 nodes with 24 cores each. SIERRA will run
404
- each of the 96 runs in parallel, 24 at a time on each allocated node. Each
405
- simulation will be 1,000 seconds long and use same scenario as before.
406
- .sp
407
- \fBIMPORTANT:\fP
408
- .INDENT 0.0
409
- .INDENT 3.5
410
- You need to export \fI\%PARALLEL\fP containing all necessary
411
- environment variables your code uses in addition to those needed
412
- by SIERRA before invoking it, otherwise some of them might not be
413
- transferred to the SLURM job and/or the new shell GNU parallel
414
- starts each simulation in.
415
- .UNINDENT
416
- .UNINDENT
417
- .SS Bivariate Batch Criteria Example
418
- .sp
419
- This example shows how to use ROS1+gazebo with a bivariate batch criteria (i.e.,
420
- with TWO variables/things you want to vary jointly):
421
- .INDENT 0.0
422
- .INDENT 3.5
423
- .sp
424
- .nf
425
- .ft C
426
- ::
427
- .ft P
428
- .fi
429
- .UNINDENT
430
- .UNINDENT
431
- .INDENT 0.0
432
- .INDENT 3.5
433
- sierra\-cli \-\-sierra\-root=$HOME/exp \-\-template\-input\-file=exp/your\-experiment.argos \-\-platform=platform.ros1gazebo\-\-project=ros1gazebo_project \-\-controller=turtlebot3_sim.wander \-\-scenario=HouseWorld.10x10x2 \-\-exec\-env=hpc.local \-\-n\-runs=3 \-\-exp\-graphs=none \-\-batch\-criteria population_size.Log8 max_speed.1.9.C5
434
- .UNINDENT
435
- .UNINDENT
436
- .sp
437
- The \fBmax_speed.1.9.C5\fP is a batch criteria defined in the sample project, and
438
- corresponds to setting the maximum robot speed from 1...9 to make 5 experiments;
439
- i.e., 1,3,5,7,9. It can also be used on its own\-\-just remove the first
440
- \fBpopulation_size\fP batch criteria from the command to get a univariate example.
441
- .sp
442
- The generated experiments form a grid: population size on the X axis and max
443
- speed on the Y, for a total of 3 * 5 = 15 experiments. If the order of the batch
444
- criteria is switched, then so is which criteria/variable is on the X/Y
445
- axis. Experiments are run in sequence just as with univariate batch
446
- criteria. During stage 3/4, by default SIERRA generates discrete heatmaps of
447
- results instead of linegraphs, because the experiment space is 2D instead of 1D.
448
- .SH ROS1+ROBOT EXAMPLES
449
- .SS Basic Example
450
- .sp
451
- This examples shows the simplest way to use SIERRA with the ROS1+robot platform
452
- plugin:
453
- .INDENT 0.0
454
- .INDENT 3.5
455
- .sp
456
- .nf
457
- .ft C
458
- ::
459
- .ft P
460
- .fi
461
- .UNINDENT
462
- .UNINDENT
463
- .INDENT 0.0
464
- .INDENT 3.5
465
- sierra\-cli \-\-platform=platform.ros1robot \-\-project=ros1robot_project \-\-n\-runs=4 \-\-template\-input\-file=exp/your\-experiment.launch \-\-scenario=OutdoorWorld.16x16x2 \-\-sierra\-root=$HOME/exp/test \-\-batch\-criteria population_size.Linear6.C6 \-\-controller=turtlebot3.wander \-\-robot turtlebot3 \-\-exp\-setup=exp_setup.T100 \-\-exec\-env=robot.turtlebot3 \-\-nodefile=turtlebots.txt
466
- \-\-exec\-inter\-run\-pause=60 \-\-no\-master\-node
467
- .UNINDENT
468
- .UNINDENT
469
- .sp
470
- This will run a batch of 4 experiments using a correlated random walk controller
471
- (CRW) on the turtlebot3. Population size will be varied from 1,2,3,4,5,6. Within
472
- each experiment, 4 experimental runs will be conducted with each swarm
473
- size. SIERRA will pause for 60 seconds between runs so you can reset the robot\(aqs
474
- positions and environment before continuing with the next
475
- run. \fBturtlebots3.txt\fP contains the IP addresses of all 6 robots in the swarm
476
- (SIERRA may use different combinations of these if the swarm size is < 6). You
477
- could also omit \fB\-\-nodefile\fP and set \fI\%SIERRA_NODEFILE\fP instead.
478
- .sp
479
- For these experiments, no master node is needed, so it is disabled. After all
480
- runs have completed and SIERRA finishes stages 3 and 4, you can go to
481
- \fB$HOME/exp\fP and find all the simulation outputs. For an explanation of
482
- SIERRA\(aqs runtime directory tree, see \fI\%SIERRA Runtime Directory Tree\fP\&.
483
- .SH AUTHOR
484
- John Harwell
485
- .SH COPYRIGHT
486
- 2022, John Harwell
487
- .\" Generated by docutils manpage writer.
488
- .