sierra-research 1.3.11__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.11.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 -251
  191. sierra/core/graphs/stacked_surface_graph.py +0 -220
  192. sierra/core/graphs/summary_line_graph.py +0 -371
  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 -320
  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.11.data/data/share/man/man1/sierra-cli.1 +0 -2349
  244. sierra_research-1.3.11.data/data/share/man/man7/sierra-examples.7 +0 -508
  245. sierra_research-1.3.11.data/data/share/man/man7/sierra-exec-envs.7 +0 -331
  246. sierra_research-1.3.11.data/data/share/man/man7/sierra-glossary.7 +0 -285
  247. sierra_research-1.3.11.data/data/share/man/man7/sierra-platforms.7 +0 -358
  248. sierra_research-1.3.11.data/data/share/man/man7/sierra-usage.7 +0 -729
  249. sierra_research-1.3.11.data/data/share/man/man7/sierra.7 +0 -78
  250. sierra_research-1.3.11.dist-info/METADATA +0 -492
  251. sierra_research-1.3.11.dist-info/RECORD +0 -133
  252. sierra_research-1.3.11.dist-info/top_level.txt +0 -1
  253. {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info}/entry_points.txt +0 -0
  254. {sierra_research-1.3.11.dist-info → sierra_research-1.5.0.dist-info/licenses}/LICENSE +0 -0
@@ -1,508 +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" "Sep 23, 2024" "1.3.11" "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.git\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
- sierra\-cli \e
230
- \-\-sierra\-root=$HOME/exp \e
231
- \-\-template\-input\-file=exp/your\-experiment.argos \e
232
- \-\-platform=platform.argos\e
233
- \-\-project=argos_project \e
234
- \-\-controller=foraging.footbot_foraging \e
235
- \-\-scenario=LowBlockCount.10x10x2 \e
236
- \-\-exec\-env=hpc.local \e
237
- \-\-n\-runs=3 \e
238
- \-\-platform\-vc \e
239
- \-\-exp\-graphs=none \e
240
- \-\-physics\-n\-engines=1 \e
241
- \-\-batch\-criteria population_size.Log8 max_speed.1.9.C5
242
- .ft P
243
- .fi
244
- .UNINDENT
245
- .UNINDENT
246
- .sp
247
- The \fBmax_speed.1.9.C5\fP is a batch criteria defined in the sample project, and
248
- corresponds to setting the maximum robot speed from 1...9 to make 5 experiments;
249
- i.e., 1,3,5,7,9. It can also be used on its own\-\-just remove the first
250
- \fBpopulation_size\fP batch criteria from the command to get a univariate example.
251
- .sp
252
- The generated experiments form a grid: population size on the X axis and max
253
- speed on the Y, for a total of 3 * 5 = 15 experiments. If the order of the batch
254
- criteria is switched, then so is which criteria/variable is on the X/Y
255
- axis. Experiments are run in sequence just as with univariate batch
256
- criteria. During stage 3/4, by default SIERRA generates discrete a set of
257
- heatmaps, one per capture interval of simulated time, because the experiment
258
- space is 2D instead of 1D, and you can\(aqt easily represent time AND two
259
- variables + time on a plot. This can take a loooonnnggg time, and can be
260
- disabled with \fB\-\-project\-no\-HM\fP\&.
261
- .sp
262
- The generated sequence of heatmaps can be turned into a video\-\-pass
263
- \fB\-\-bc\-rendering\fP during stage 4 to do so.
264
- .SS Stage 5 Scenario Comparison Example
265
- .sp
266
- This example shows how to run stage 5 to compare a single controller across
267
- different scenarios, assuming that stages 1\-4 have been run successfully. Note
268
- that this stage does not require you to input the \fB\-\-scenario\fP, or the
269
- \fB\-\-batch\-criteria\fP; SIERRA figures these out for you from the \fB\-\-controller\fP
270
- and \fB\-\-sierra\-root\fP\&.
271
- .INDENT 0.0
272
- .INDENT 3.5
273
- .sp
274
- .nf
275
- .ft C
276
- sierra\-cli \e
277
- \-\-sierra\-root=$HOME/exp \e
278
- \-\-project=argos_project \e
279
- \-\-pipeline 5 \e
280
- \-\-scenario\-comparison \e
281
- \-\-dist\-stats=conf95 \e
282
- \-\-bc\-univar \e
283
- \-\-controller=foraging.footbot_foraging \e
284
- \-\-sierra\-root=$HOME/exp
285
- .ft P
286
- .fi
287
- .UNINDENT
288
- .UNINDENT
289
- .sp
290
- This will compare all scenarios that the
291
- \fBforaging.footbot_foraging\fP controller has been run on according to
292
- the configuration defined in \fBstage5.yaml\fP\&. SIERRA will plot the 95%
293
- confidence intervals on all generated graphs for the univariate batch criteria
294
- (whatever it was). If multiple batch criterias were used with this controller in
295
- the same scenario, SIERRA will process all of them and generate unique graphs
296
- for each scenario+criteria combination that the
297
- \fBforaging.footbot_foraging\fP controller was run on.
298
- .SS Stage 5 Controller Comparison Example
299
- .sp
300
- This example shows how to run stage 5 to compare multiple controllers in a
301
- single scenario, assuming that stages 1\-4 have been run successfully. Note that
302
- this stage does not require you to input \fB\-\-batch\-criteria\fP; SIERRA figures
303
- these out for you from the \fB\-\-controller\-list\fP and \fB\-\-sierra\-root\fP\&.
304
- .INDENT 0.0
305
- .INDENT 3.5
306
- .sp
307
- .nf
308
- .ft C
309
- sierra\-cli \e
310
- \-\-sierra\-root=$HOME/exp \e
311
- \-\-project=argos_project \e
312
- \-\-pipeline 5 \e
313
- \-\-controller\-comparison \e
314
- \-\-dist\-stats=conf95 \e
315
- \-\-bc\-univar \e
316
- \-\-controllers\-list=foraging.footbot_foraging,foraging.footbot_foraging\-slow \e
317
- \-\-sierra\-root=$HOME/exp
318
- .ft P
319
- .fi
320
- .UNINDENT
321
- .UNINDENT
322
- .sp
323
- SIERRA will compute the list of scenarios that the \fBforaging.footbot_foraging\fP
324
- and the \fBforaging.footbot_foraging_slow\fP controllers have \fIall\fP been
325
- run. Comparison graphs for each scenario with the
326
- \fBforaging.footbot_foraging,foraging.footbot_foraging_slow\fP controllers will be
327
- generated according to the configuration defined in \fBstage5.yaml\fP\&. SIERRA will
328
- plot the 95% confidence intervals on all generated graphs for the univariate
329
- batch criteria (whatever it was). If multiple batch criterias were used with
330
- each controller in the same scenario, SIERRA will process all of them and
331
- generate unique graphs for each scenario+criteria combination both controllers
332
- were run on.
333
- .SH ROS1+GAZEBO EXAMPLES
334
- .SS Basic Example
335
- .sp
336
- This examples shows the simplest way to use SIERRA with the ROS1+gazebo platform
337
- plugin:
338
- .INDENT 0.0
339
- .INDENT 3.5
340
- .sp
341
- .nf
342
- .ft C
343
- sierra\-cli \e
344
- \-\-platform=platform.ros1gazebo \e
345
- \-\-project=ros1gazebo_project \e
346
- \-\-n\-runs=4 \e
347
- \-\-exec\-env=hpc.local \e
348
- \-\-template\-input\-file=exp/your\-experiment.launch \e
349
- \-\-scenario=HouseWorld.10x10x1 \e
350
- \-\-sierra\-root=$HOME/exp/test \e
351
- \-\-batch\-criteria population_size.Log8 \e
352
- \-\-controller=turtlebot3_sim.wander \e
353
- \-\-exp\-overwrite \e
354
- \-\-exp\-setup=exp_setup.T10 \e
355
- \-\-robot turtlebot3
356
- .ft P
357
- .fi
358
- .UNINDENT
359
- .UNINDENT
360
- .sp
361
- This will run a batch of 4 experiments using a correlated random walk controller
362
- (CRW) on the turtlebot3. Population size will be varied from 1..8, by powers
363
- of 2. Within each experiment, 4 copies of each simulation will be run (each with
364
- different random seeds), for a total of 16 Gazebo simulations. Each experimental
365
- run will be will be 10 seconds of simulated time. On a reasonable machine it
366
- should take about 10 minutes or so to run. After it finishes, you can go to
367
- \fB$HOME/exp\fP and find all the simulation outputs. For an explanation of
368
- SIERRA\(aqs runtime directory tree, see \fI\%SIERRA Runtime Directory Tree\fP\&.
369
- .SS HPC Example
370
- .sp
371
- In order to run on a SLURM managed cluster, you need to invoke SIERRA within a
372
- script submitted with \fBsbatch\fP, or via \fBsrun\fP with the correspond cmdline
373
- options set.
374
- .INDENT 0.0
375
- .INDENT 3.5
376
- .sp
377
- .nf
378
- .ft C
379
- #!/bin/bash \-l
380
- #SBATCH \-\-time=01:00:00
381
- #SBATCH \-\-nodes 4
382
- #SBATCH \-\-tasks\-per\-node=6
383
- #SBATCH \-\-cpus\-per\-task=4
384
- #SBATCH \-\-mem\-per\-cpu=2G
385
- #SBATCH \-\-output=R\-%x.%j.out
386
- #SBATCH \-\-error=R\-%x.%j.err
387
- #SBATCH \-J ros1gazebo\-slurm\-example
388
-
389
- # setup environment
390
- export SIERRA_PLUGIN_PATH=$HOME/git/sierra\-projects
391
-
392
- sierra\-cli \e
393
- \-\-platform=platform.ros1gazebo \e
394
- \-\-project=ros1gazebo_project \e
395
- \-\-n\-runs=96 \e
396
- \-\-exec\-env=hpc.slurm \e
397
- \-\-template\-input\-file=exp/your\-experiment.launch \e
398
- \-\-scenario=HouseWorld.10x10x1 \e
399
- \-\-sierra\-root=$HOME/exp/test \e
400
- \-\-batch\-criteria population_size.Log8 \e
401
- \-\-controller=turtlebot3_sim.wander \e
402
- \-\-exp\-overwrite \e
403
- \-\-exp\-setup=exp_setup.T10000 \e
404
- \-\-robot turtlebot3
405
- .ft P
406
- .fi
407
- .UNINDENT
408
- .UNINDENT
409
- .sp
410
- In this example, the user requests 10 nodes with 24 cores each. SIERRA will run
411
- each of the 96 runs in parallel, 24 at a time on each allocated node. Each
412
- simulation will be 1,000 seconds long and use same scenario as before.
413
- .sp
414
- \fBIMPORTANT:\fP
415
- .INDENT 0.0
416
- .INDENT 3.5
417
- You need to export \fI\%PARALLEL\fP containing all necessary
418
- environment variables your code uses in addition to those needed
419
- by SIERRA before invoking it, otherwise some of them might not be
420
- transferred to the SLURM job and/or the new shell GNU parallel
421
- starts each simulation in.
422
- .UNINDENT
423
- .UNINDENT
424
- .SS Bivariate Batch Criteria Example
425
- .sp
426
- This example shows how to use ROS1+gazebo with a bivariate batch criteria (i.e.,
427
- with TWO variables/things you want to vary jointly):
428
- .INDENT 0.0
429
- .INDENT 3.5
430
- .sp
431
- .nf
432
- .ft C
433
- sierra\-cli \e
434
- \-\-sierra\-root=$HOME/exp \e
435
- \-\-template\-input\-file=exp/your\-experiment.argos \e
436
- \-\-platform=platform.ros1gazebo\e
437
- \-\-project=ros1gazebo_project \e
438
- \-\-controller=turtlebot3_sim.wander \e
439
- \-\-scenario=HouseWorld.10x10x2 \e
440
- \-\-exec\-env=hpc.local \e
441
- \-\-n\-runs=3 \e
442
- \-\-exp\-graphs=none \e
443
- \-\-batch\-criteria population_size.Log8 max_speed.1.9.C5
444
- .ft P
445
- .fi
446
- .UNINDENT
447
- .UNINDENT
448
- .sp
449
- The \fBmax_speed.1.9.C5\fP is a batch criteria defined in the sample project, and
450
- corresponds to setting the maximum robot speed from 1...9 to make 5 experiments;
451
- i.e., 1,3,5,7,9. It can also be used on its own\-\-just remove the first
452
- \fBpopulation_size\fP batch criteria from the command to get a univariate example.
453
- .sp
454
- The generated experiments form a grid: population size on the X axis and max
455
- speed on the Y, for a total of 3 * 5 = 15 experiments. If the order of the batch
456
- criteria is switched, then so is which criteria/variable is on the X/Y
457
- axis. Experiments are run in sequence just as with univariate batch
458
- criteria. During stage 3/4, by default SIERRA generates discrete heatmaps of
459
- results instead of linegraphs, because the experiment space is 2D instead of 1D.
460
- .SH ROS1+ROBOT EXAMPLES
461
- .SS Basic Example
462
- .sp
463
- This examples shows the simplest way to use SIERRA with the ROS1+robot platform
464
- plugin:
465
- .INDENT 0.0
466
- .INDENT 3.5
467
- .sp
468
- .nf
469
- .ft C
470
- sierra\-cli \e
471
- \-\-platform=platform.ros1robot \e
472
- \-\-project=ros1robot_project \e
473
- \-\-n\-runs=4 \e
474
- \-\-template\-input\-file=exp/your\-experiment.launch \e
475
- \-\-scenario=OutdoorWorld.16x16x2 \e
476
- \-\-sierra\-root=$HOME/exp/test \e
477
- \-\-batch\-criteria population_size.Linear6.C6 \e
478
- \-\-controller=turtlebot3.wander \e
479
- \-\-robot turtlebot3 \e
480
- \-\-exp\-setup=exp_setup.T100 \e
481
- \-\-exec\-env=robot.turtlebot3 \e
482
- \-\-nodefile=turtlebots.txt
483
- \-\-exec\-inter\-run\-pause=60 \e
484
- \-\-no\-master\-node \e
485
- .ft P
486
- .fi
487
- .UNINDENT
488
- .UNINDENT
489
- .sp
490
- This will run a batch of 4 experiments using a correlated random walk controller
491
- (CRW) on the turtlebot3. Population size will be varied from 1,2,3,4,5,6. Within
492
- each experiment, 4 experimental runs will be conducted with each swarm
493
- size. SIERRA will pause for 60 seconds between runs so you can reset the robot\(aqs
494
- positions and environment before continuing with the next
495
- run. \fBturtlebots3.txt\fP contains the IP addresses of all 6 robots in the swarm
496
- (SIERRA may use different combinations of these if the swarm size is < 6). You
497
- could also omit \fB\-\-nodefile\fP and set \fI\%SIERRA_NODEFILE\fP instead.
498
- .sp
499
- For these experiments, no master node is needed, so it is disabled. After all
500
- runs have completed and SIERRA finishes stages 3 and 4, you can go to
501
- \fB$HOME/exp\fP and find all the simulation outputs. For an explanation of
502
- SIERRA\(aqs runtime directory tree, see \fI\%SIERRA Runtime Directory Tree\fP\&.
503
- .SH AUTHOR
504
- John Harwell
505
- .SH COPYRIGHT
506
- 2022, John Harwell
507
- .\" Generated by docutils manpage writer.
508
- .