Software deployment » History » Version 5
Simon Lacroix, 2018-08-15 19:57
1 | 1 | Simon Lacroix | h1. Software deployment |
---|---|---|---|
2 | |||
3 | This pages presents the requirements of the set of tools that helps to easily configure, launch and run the robots on-board softwares. |
||
4 | |||
5 | h2. General requirements |
||
6 | |||
7 | 4 | Simon Lacroix | * The tools must be very easy to use, maintain and update |
8 | 1 | Simon Lacroix | * The tools must allow to specify and configure the softwares that will be run |
9 | * In a second step, the tools will endow means to supervise the execution of scenarios |
||
10 | |||
11 | h2. General principles |
||
12 | |||
13 | 4 | Simon Lacroix | The following principles take very much after the "dala scripts" (see the git repo: git+ssh://softs.laas.fr/git/robots/dala-scripts.git , some file names of this suite are referred to hereafter. There is an important difference still, the notion of "scenario"). |
14 | 1 | Simon Lacroix | |
15 | 4 | Simon Lacroix | 1. A shell script: (see shell-script/start.sh) |
16 | 2 | Simon Lacroix | * sets a series of environment variables required to launch the softwares (in particular, a LOGDIR) |
17 | 3 | Simon Lacroix | * Interprets the "main configuration file" that specifies which softwares must be launched (a software can be a ROS node, a Genom3 module, some utilities -- e.g. display server, redirection of the GPS correction data to the proper device, ... what else ?) |
18 | 2 | Simon Lacroix | * Properly launches each software -- and warn the user in case launch failed |
19 | 1 | Simon Lacroix | * Redirects standard and error outputs of each software into dedicated files in LOGDIR |
20 | |||
21 | A companion shell-scripts terminates "in a clean manner" all the launched softwares |
||
22 | |||
23 | 4 | Simon Lacroix | 2. A python interpreter is launched, loading: |
24 | 3 | Simon Lacroix | * For each launched module/node, a .py file that contains: |
25 | 4 | Simon Lacroix | ** A function that loads the set of parameters associated to the software (mainly initialisation parameters, but also functioning mode, ...). These parameters are defined in a module/node configuration file |
26 | ** A series of "generic" functions: init/start, run, log, stop-log (some doing nothing if they are not implemented in the software) |
||
27 | 5 | Simon Lacroix | * A .py file that contains "meta-calls" to the modules/nodes (e.g. "init" runs the "init" requests of all the modules) |
28 | |||
29 | 1 | Simon Lacroix | |
30 | 4 | Simon Lacroix | The python interpreter must know which softwares have been launched, that is, which scenario is the current one -- it could hence be run with the scenario name as a a parameter. |
31 | 3 | Simon Lacroix | A question: how does the python interpreter inherits some environment variables that have been set by the shell script ? (by launching the interpreter at the end of the script ?) |
32 | 1 | Simon Lacroix | |
33 | 5 | Simon Lacroix | h2. Some details and questions |
34 | 3 | Simon Lacroix | |
35 | 4 | Simon Lacroix | * It would be nice to execute the launch shell script with the main configuration file as an argument (so that one can manage a series of configuration files). Or rather, with the name of the scenario |
36 | * The user edits the configuration files, not the shell or python scripts. The latter are in a git repo, as well as some exemple configuration files |
||
37 | * The individual configuration files are named with the same name than the main configuration file. Or rather, saved in a directory with the scenario name that contains all the configuration files |
||
38 | 1 | Simon Lacroix | * To enable replay, also to "document" the data, the scenario files could be copied in the LOGDIR |
39 | 5 | Simon Lacroix | * the situation will be a bit more complex on Minnie, because the softwares are launched on 2 different CPUs (the dala-scripts allowed this, in a bit tricky manner) |
40 | * What will be the syntax of the main and modules/nodes configuration files? (python? Any other easy syntax already understood by python?) |