wiki:WikiStart/OngoingWork/App

Rock Apps

Purpose While Rock is becoming a rich collection of components, we miss a structure in which a "system view" can be created, i.e. set of files that allow to manage a system.

Proposal Create an app structure. It would be single packages that contain everything needed to manage a system:

  • run scripts
  • log convertion scripts
  • log sanity scripts
  • GUIs
  • when using the supervision, the supervision models

Usage

Proposal 1

a ROCK_APP_PATH environment variable would list the apps that should be used on a system. Whenever a file is searched, the first file found in the path is used.

I.e., a ROCK_APP_PATH could look like

export ROCK_APP_PATH=$HOME/dev/imoby/apps/calibration:$HOME/dev/imoby/apps/main:$HOME/dev/apps/rock

Proposal 2

still use ROCK_APP_PATH, but that would point to _prefixes_. Then, rock applications would list dependencies they have with each other, forming the complete path at runtime.

The example above would look like

export ROCK_APP_PATH=$HOME/dev/imoby/apps:$HOME/dev/apps

with dependencies: calibration => imoby and imoby => rock

Structure

In all the following proposals, specific are optional (i.e. one would probably start with only config/orogen and scripts)

Proposal 1

Keep the structure compatible with Roby supervision structure (preferred for backward compatibility reasons):

scripts/
startup scripts (either pure ruby scripts or tooling scripts)
scripts/orocos/
common scripts for management of a rock system (instanciate, run, ...)
scripts/gui/
GUI scripts
config/orogen/
YAML files containing property values
config/
other config files
tasks/
supervision models (with tasks/orogen/, and tasks/rock/ that replaces data_services and compositions)
planners/
supervision planner models
controllers/
controller scripts
log/
logs from the currently running script/system
results/
older logs
data/
system specific data files
data/migration/
log migration scripts
data/sanity/
data sanity checks (could be used on live systems and log data alike)

Proposal 2

Be compatible with supervision, but use the occasion to redesign the layout (i.e. change the supervision). The main goal would be to diminish the amount of toplevel directories (to make getting into the package easier), and add support for a few new things

scripts/
startup scripts (either pure ruby scripts or tooling scripts)
scripts/orocos/
common scripts for management of a rock system (instanciate, run, ...)
scripts/gui/
GUI scripts
scripts/controllers/
supervision controller scripts (previously controllers/)
config/orogen/
YAML files containing property values
config/
other config files
models/????
base models (all files that were originally in tasks/data_services and tasks/compositions)
models/tasks/
supervision task models (previously tasks/)
models/orogen
extension to supervision task representing orogen components (previously tasks/orogen/)
models/typelib/
extensions to the typelib types (new folder)
models/planners
supervision planner models (previously planners/)
data/
system specific data files
data/migration/
log migration scripts
data/sanity/
sanity checks on log data
logs/
base directory under which log files are saved (previously log/ and results/)
logs/current/
symlink to the current log directory (i.e. the directory in logs/ where data is currently being produced)
Last modified 7 years ago Last modified on 01/06/12 15:21:05