The Rover
utility
The rover utility is the main command used for interacting with the ASE software framework and starting/stopping the rover itself. The rover command centers around the configuration file /home/debix/rover.yaml. This file simply includes a list of programs which should be executed when starting the rover.
Understanding the rover.yaml file
The rover.yaml file is the central file that is used by the rover
utility. It is placed by default in /home/debix/rover.yaml. Let's consider an example rover.yaml:
# The modules that resolves dependencies and ZMQ addresses, nothing works without it!
- name: System Manager
cmd: mod-SystemManager -service-yaml /home/debix/mods/mod-SystemManager/service.yaml -debug
# My custom module
- name: My Module
cmd: /home/debix/myproject/main.py arg1 arg2
The example above tells the rover
utility to start the program mod-SystemManager
with a specific service.yaml file in debug mode, and to start the program /home/debix/myproject/main.py with arguments arg1 and arg2.
We also tell give it a name "My Module". Since the rover utility will create systemd services with our program we need to give it a unique name. This is the name that gets used for watching the stdout
of your program using the sudo rover watch
command. (So in this example, you could view the outputs of the program "My module" with sudo rover watch ase-my-module
).
In the above rover.yaml, you can see that the System Manger is launched by running mod-SystemManager
. By default, all native modules provided by the ASE framework are symlinked for you, but new modules will not be symlinked automatically. If you decide to move folders around in the /home/debix/mods folder, symlinks will break!
Commands
These are the most important sub-commands of the rover utility:
sudo rover start
- will apply the configuration found in /home/debix/rover.yaml and start all programs. If any program stops or crashes the rover will emit a short beep-beep sound and restart the program continuously with a 3 second delay.sudo rover stop
- will halt all programs that were last started.sudo rover status
- lists the status of every program, this is a quick way to see which program is crashing if you start hearing some beeping.sudo rover watch ase-my-module
- shows the live std-out of the program, in this case for the "My Module" example above, however if you misspell the service name in this command it will show you all available services to watch.sudo rover update
- This will download all latest ASE-Software modules and their corresponding service.yamls.
The rover update
command will destructively overwrite all files in the /home/debix/mods/
directory so make sure not to edit the service.yamls in there, but to instead make a new service.yaml somewhere outside of the mods
directory and simply point to it in the rover.yaml
Files and folders on the Rover
/home/debix/ase/
- The directory containing ASE-framework related things, can be safely ignored./home/debix/mods/
- The home of all ASE modules and their service.yamls. Do not edit service.yamls inside this directory, since they will be overwritten on update. This directory is a place that contains only modules provided by the ASE team, if you want to change a service.yaml of one of the modules, you must create a new service.yaml somewhere else on the debix (for example/home/debix/myproject/my-actuator-service.yaml
) and point to this file in therover.yaml
./home/debix/rover.yaml
- Explained in previous section.