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.
- sierra/__init__.py +3 -3
- sierra/core/__init__.py +3 -3
- sierra/core/batchroot.py +223 -0
- sierra/core/cmdline.py +681 -1057
- sierra/core/compare.py +11 -0
- sierra/core/config.py +96 -88
- sierra/core/engine.py +306 -0
- sierra/core/execenv.py +380 -0
- sierra/core/expdef.py +11 -0
- sierra/core/experiment/__init__.py +1 -0
- sierra/core/experiment/bindings.py +150 -101
- sierra/core/experiment/definition.py +414 -245
- sierra/core/experiment/spec.py +83 -85
- sierra/core/exproot.py +44 -0
- sierra/core/generators/__init__.py +10 -0
- sierra/core/generators/experiment.py +528 -0
- sierra/core/generators/generator_factory.py +138 -137
- sierra/core/graphs/__init__.py +23 -0
- sierra/core/graphs/bcbridge.py +94 -0
- sierra/core/graphs/heatmap.py +245 -324
- sierra/core/graphs/pathset.py +27 -0
- sierra/core/graphs/schema.py +77 -0
- sierra/core/graphs/stacked_line.py +341 -0
- sierra/core/graphs/summary_line.py +506 -0
- sierra/core/logging.py +3 -2
- sierra/core/models/__init__.py +3 -1
- sierra/core/models/info.py +19 -0
- sierra/core/models/interface.py +52 -122
- sierra/core/pipeline/__init__.py +2 -5
- sierra/core/pipeline/pipeline.py +228 -126
- sierra/core/pipeline/stage1/__init__.py +10 -0
- sierra/core/pipeline/stage1/pipeline_stage1.py +45 -31
- sierra/core/pipeline/stage2/__init__.py +10 -0
- sierra/core/pipeline/stage2/pipeline_stage2.py +8 -11
- sierra/core/pipeline/stage2/runner.py +401 -0
- sierra/core/pipeline/stage3/__init__.py +12 -0
- sierra/core/pipeline/stage3/gather.py +321 -0
- sierra/core/pipeline/stage3/pipeline_stage3.py +37 -84
- sierra/core/pipeline/stage4/__init__.py +12 -2
- sierra/core/pipeline/stage4/pipeline_stage4.py +36 -354
- sierra/core/pipeline/stage5/__init__.py +12 -0
- sierra/core/pipeline/stage5/pipeline_stage5.py +33 -208
- sierra/core/pipeline/yaml.py +48 -0
- sierra/core/plugin.py +529 -62
- sierra/core/proc.py +11 -0
- sierra/core/prod.py +11 -0
- sierra/core/ros1/__init__.py +5 -1
- sierra/core/ros1/callbacks.py +22 -21
- sierra/core/ros1/cmdline.py +59 -88
- sierra/core/ros1/generators.py +159 -175
- sierra/core/ros1/variables/__init__.py +3 -0
- sierra/core/ros1/variables/exp_setup.py +122 -116
- sierra/core/startup.py +106 -76
- sierra/core/stat_kernels.py +4 -5
- sierra/core/storage.py +13 -32
- sierra/core/trampoline.py +30 -0
- sierra/core/types.py +116 -71
- sierra/core/utils.py +103 -106
- sierra/core/variables/__init__.py +1 -1
- sierra/core/variables/base_variable.py +12 -17
- sierra/core/variables/batch_criteria.py +387 -481
- sierra/core/variables/builtin.py +135 -0
- sierra/core/variables/exp_setup.py +19 -39
- sierra/core/variables/population_size.py +72 -76
- sierra/core/variables/variable_density.py +44 -68
- sierra/core/vector.py +1 -1
- sierra/main.py +256 -88
- sierra/plugins/__init__.py +119 -0
- sierra/plugins/compare/__init__.py +14 -0
- sierra/plugins/compare/graphs/__init__.py +19 -0
- sierra/plugins/compare/graphs/cmdline.py +120 -0
- sierra/plugins/compare/graphs/comparator.py +291 -0
- sierra/plugins/compare/graphs/inter_controller.py +531 -0
- sierra/plugins/compare/graphs/inter_scenario.py +297 -0
- sierra/plugins/compare/graphs/namecalc.py +53 -0
- sierra/plugins/compare/graphs/outputroot.py +73 -0
- sierra/plugins/compare/graphs/plugin.py +147 -0
- sierra/plugins/compare/graphs/preprocess.py +172 -0
- sierra/plugins/compare/graphs/schema.py +37 -0
- sierra/plugins/engine/__init__.py +14 -0
- sierra/plugins/engine/argos/__init__.py +18 -0
- sierra/plugins/{platform → engine}/argos/cmdline.py +144 -151
- sierra/plugins/{platform/argos/variables → engine/argos/generators}/__init__.py +5 -0
- sierra/plugins/engine/argos/generators/engine.py +394 -0
- sierra/plugins/engine/argos/plugin.py +393 -0
- sierra/plugins/{platform/argos/generators → engine/argos/variables}/__init__.py +5 -0
- sierra/plugins/engine/argos/variables/arena_shape.py +183 -0
- sierra/plugins/engine/argos/variables/cameras.py +240 -0
- sierra/plugins/engine/argos/variables/constant_density.py +112 -0
- sierra/plugins/engine/argos/variables/exp_setup.py +82 -0
- sierra/plugins/{platform → engine}/argos/variables/physics_engines.py +83 -87
- sierra/plugins/engine/argos/variables/population_constant_density.py +178 -0
- sierra/plugins/engine/argos/variables/population_size.py +115 -0
- sierra/plugins/engine/argos/variables/population_variable_density.py +123 -0
- sierra/plugins/engine/argos/variables/rendering.py +108 -0
- sierra/plugins/engine/ros1gazebo/__init__.py +18 -0
- sierra/plugins/engine/ros1gazebo/cmdline.py +175 -0
- sierra/plugins/{platform/ros1robot → engine/ros1gazebo}/generators/__init__.py +5 -0
- sierra/plugins/engine/ros1gazebo/generators/engine.py +125 -0
- sierra/plugins/engine/ros1gazebo/plugin.py +404 -0
- sierra/plugins/engine/ros1gazebo/variables/__init__.py +15 -0
- sierra/plugins/engine/ros1gazebo/variables/population_size.py +214 -0
- sierra/plugins/engine/ros1robot/__init__.py +18 -0
- sierra/plugins/engine/ros1robot/cmdline.py +159 -0
- sierra/plugins/{platform/ros1gazebo → engine/ros1robot}/generators/__init__.py +4 -0
- sierra/plugins/engine/ros1robot/generators/engine.py +95 -0
- sierra/plugins/engine/ros1robot/plugin.py +410 -0
- sierra/plugins/{hpc/local → engine/ros1robot/variables}/__init__.py +5 -0
- sierra/plugins/engine/ros1robot/variables/population_size.py +146 -0
- sierra/plugins/execenv/__init__.py +11 -0
- sierra/plugins/execenv/hpc/__init__.py +18 -0
- sierra/plugins/execenv/hpc/adhoc/__init__.py +18 -0
- sierra/plugins/execenv/hpc/adhoc/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/adhoc/plugin.py +131 -0
- sierra/plugins/execenv/hpc/cmdline.py +137 -0
- sierra/plugins/execenv/hpc/local/__init__.py +18 -0
- sierra/plugins/execenv/hpc/local/cmdline.py +31 -0
- sierra/plugins/execenv/hpc/local/plugin.py +145 -0
- sierra/plugins/execenv/hpc/pbs/__init__.py +18 -0
- sierra/plugins/execenv/hpc/pbs/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/pbs/plugin.py +121 -0
- sierra/plugins/execenv/hpc/slurm/__init__.py +18 -0
- sierra/plugins/execenv/hpc/slurm/cmdline.py +30 -0
- sierra/plugins/execenv/hpc/slurm/plugin.py +133 -0
- sierra/plugins/execenv/prefectserver/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/cmdline.py +66 -0
- sierra/plugins/execenv/prefectserver/dockerremote/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/dockerremote/cmdline.py +66 -0
- sierra/plugins/execenv/prefectserver/dockerremote/plugin.py +132 -0
- sierra/plugins/execenv/prefectserver/flow.py +66 -0
- sierra/plugins/execenv/prefectserver/local/__init__.py +18 -0
- sierra/plugins/execenv/prefectserver/local/cmdline.py +29 -0
- sierra/plugins/execenv/prefectserver/local/plugin.py +133 -0
- sierra/plugins/{hpc/adhoc → execenv/robot}/__init__.py +1 -0
- sierra/plugins/execenv/robot/turtlebot3/__init__.py +18 -0
- sierra/plugins/execenv/robot/turtlebot3/plugin.py +204 -0
- sierra/plugins/expdef/__init__.py +14 -0
- sierra/plugins/expdef/json/__init__.py +14 -0
- sierra/plugins/expdef/json/plugin.py +504 -0
- sierra/plugins/expdef/xml/__init__.py +14 -0
- sierra/plugins/expdef/xml/plugin.py +386 -0
- sierra/{core/hpc → plugins/proc}/__init__.py +1 -1
- sierra/plugins/proc/collate/__init__.py +15 -0
- sierra/plugins/proc/collate/cmdline.py +47 -0
- sierra/plugins/proc/collate/plugin.py +271 -0
- sierra/plugins/proc/compress/__init__.py +18 -0
- sierra/plugins/proc/compress/cmdline.py +47 -0
- sierra/plugins/proc/compress/plugin.py +123 -0
- sierra/plugins/proc/decompress/__init__.py +18 -0
- sierra/plugins/proc/decompress/plugin.py +96 -0
- sierra/plugins/proc/imagize/__init__.py +15 -0
- sierra/plugins/proc/imagize/cmdline.py +49 -0
- sierra/plugins/proc/imagize/plugin.py +270 -0
- sierra/plugins/proc/modelrunner/__init__.py +16 -0
- sierra/plugins/proc/modelrunner/plugin.py +250 -0
- sierra/plugins/proc/statistics/__init__.py +15 -0
- sierra/plugins/proc/statistics/cmdline.py +64 -0
- sierra/plugins/proc/statistics/plugin.py +390 -0
- sierra/plugins/{hpc → prod}/__init__.py +1 -0
- sierra/plugins/prod/graphs/__init__.py +18 -0
- sierra/plugins/prod/graphs/cmdline.py +269 -0
- sierra/plugins/prod/graphs/collate.py +279 -0
- sierra/plugins/prod/graphs/inter/__init__.py +13 -0
- sierra/plugins/prod/graphs/inter/generate.py +83 -0
- sierra/plugins/prod/graphs/inter/heatmap.py +86 -0
- sierra/plugins/prod/graphs/inter/line.py +134 -0
- sierra/plugins/prod/graphs/intra/__init__.py +15 -0
- sierra/plugins/prod/graphs/intra/generate.py +202 -0
- sierra/plugins/prod/graphs/intra/heatmap.py +74 -0
- sierra/plugins/prod/graphs/intra/line.py +114 -0
- sierra/plugins/prod/graphs/plugin.py +103 -0
- sierra/plugins/prod/graphs/targets.py +63 -0
- sierra/plugins/prod/render/__init__.py +18 -0
- sierra/plugins/prod/render/cmdline.py +72 -0
- sierra/plugins/prod/render/plugin.py +282 -0
- sierra/plugins/storage/__init__.py +5 -0
- sierra/plugins/storage/arrow/__init__.py +18 -0
- sierra/plugins/storage/arrow/plugin.py +38 -0
- sierra/plugins/storage/csv/__init__.py +9 -0
- sierra/plugins/storage/csv/plugin.py +12 -5
- sierra/version.py +3 -2
- sierra_research-1.5.0.dist-info/METADATA +238 -0
- sierra_research-1.5.0.dist-info/RECORD +186 -0
- {sierra_research-1.3.6.dist-info → sierra_research-1.5.0.dist-info}/WHEEL +1 -2
- sierra/core/experiment/xml.py +0 -454
- sierra/core/generators/controller_generator_parser.py +0 -34
- sierra/core/generators/exp_creator.py +0 -351
- sierra/core/generators/exp_generators.py +0 -142
- sierra/core/graphs/scatterplot2D.py +0 -109
- sierra/core/graphs/stacked_line_graph.py +0 -249
- sierra/core/graphs/stacked_surface_graph.py +0 -220
- sierra/core/graphs/summary_line_graph.py +0 -369
- sierra/core/hpc/cmdline.py +0 -142
- sierra/core/models/graphs.py +0 -87
- sierra/core/pipeline/stage2/exp_runner.py +0 -286
- sierra/core/pipeline/stage3/imagizer.py +0 -149
- sierra/core/pipeline/stage3/run_collator.py +0 -317
- sierra/core/pipeline/stage3/statistics_calculator.py +0 -478
- sierra/core/pipeline/stage4/graph_collator.py +0 -319
- sierra/core/pipeline/stage4/inter_exp_graph_generator.py +0 -240
- sierra/core/pipeline/stage4/intra_exp_graph_generator.py +0 -317
- sierra/core/pipeline/stage4/model_runner.py +0 -168
- sierra/core/pipeline/stage4/rendering.py +0 -283
- sierra/core/pipeline/stage4/yaml_config_loader.py +0 -103
- sierra/core/pipeline/stage5/inter_scenario_comparator.py +0 -328
- sierra/core/pipeline/stage5/intra_scenario_comparator.py +0 -989
- sierra/core/platform.py +0 -493
- sierra/core/plugin_manager.py +0 -369
- sierra/core/root_dirpath_generator.py +0 -241
- sierra/plugins/hpc/adhoc/plugin.py +0 -125
- sierra/plugins/hpc/local/plugin.py +0 -81
- sierra/plugins/hpc/pbs/__init__.py +0 -9
- sierra/plugins/hpc/pbs/plugin.py +0 -126
- sierra/plugins/hpc/slurm/__init__.py +0 -9
- sierra/plugins/hpc/slurm/plugin.py +0 -130
- sierra/plugins/platform/__init__.py +0 -9
- sierra/plugins/platform/argos/__init__.py +0 -9
- sierra/plugins/platform/argos/generators/platform_generators.py +0 -383
- sierra/plugins/platform/argos/plugin.py +0 -337
- sierra/plugins/platform/argos/variables/arena_shape.py +0 -145
- sierra/plugins/platform/argos/variables/cameras.py +0 -243
- sierra/plugins/platform/argos/variables/constant_density.py +0 -136
- sierra/plugins/platform/argos/variables/exp_setup.py +0 -113
- sierra/plugins/platform/argos/variables/population_constant_density.py +0 -175
- sierra/plugins/platform/argos/variables/population_size.py +0 -102
- sierra/plugins/platform/argos/variables/population_variable_density.py +0 -132
- sierra/plugins/platform/argos/variables/rendering.py +0 -104
- sierra/plugins/platform/ros1gazebo/__init__.py +0 -9
- sierra/plugins/platform/ros1gazebo/cmdline.py +0 -213
- sierra/plugins/platform/ros1gazebo/generators/platform_generators.py +0 -137
- sierra/plugins/platform/ros1gazebo/plugin.py +0 -335
- sierra/plugins/platform/ros1gazebo/variables/__init__.py +0 -10
- sierra/plugins/platform/ros1gazebo/variables/population_size.py +0 -204
- sierra/plugins/platform/ros1robot/__init__.py +0 -9
- sierra/plugins/platform/ros1robot/cmdline.py +0 -175
- sierra/plugins/platform/ros1robot/generators/platform_generators.py +0 -112
- sierra/plugins/platform/ros1robot/plugin.py +0 -373
- sierra/plugins/platform/ros1robot/variables/__init__.py +0 -10
- sierra/plugins/platform/ros1robot/variables/population_size.py +0 -146
- sierra/plugins/robot/__init__.py +0 -9
- sierra/plugins/robot/turtlebot3/__init__.py +0 -9
- sierra/plugins/robot/turtlebot3/plugin.py +0 -194
- sierra_research-1.3.6.data/data/share/man/man1/sierra-cli.1 +0 -2349
- sierra_research-1.3.6.data/data/share/man/man7/sierra-examples.7 +0 -488
- sierra_research-1.3.6.data/data/share/man/man7/sierra-exec-envs.7 +0 -331
- sierra_research-1.3.6.data/data/share/man/man7/sierra-glossary.7 +0 -285
- sierra_research-1.3.6.data/data/share/man/man7/sierra-platforms.7 +0 -358
- sierra_research-1.3.6.data/data/share/man/man7/sierra-usage.7 +0 -725
- sierra_research-1.3.6.data/data/share/man/man7/sierra.7 +0 -78
- sierra_research-1.3.6.dist-info/METADATA +0 -500
- sierra_research-1.3.6.dist-info/RECORD +0 -133
- sierra_research-1.3.6.dist-info/top_level.txt +0 -1
- {sierra_research-1.3.6.dist-info → sierra_research-1.5.0.dist-info}/entry_points.txt +0 -0
- {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
|
-
.
|