Skip to main content

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:

/home/debix/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).

About symlinks

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.
Destructive command

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 the rover.yaml.
  • /home/debix/rover.yaml - Explained in previous section.