MARSH Manager

The marsh-mgr program is a graphical application for Linux and Windows that serves as the central node in the simulator architecture.

It is meant as a single tool to provide:

  • Communicating data between simulator parts (nodes)
  • Controlling the simulation execution and configuration
  • Logging and replaying the simulation data

diagram showing MARSH Manager as central element of the simulator

Installation

If your operating system or processor architecture do not have a release provided, you can build the application from source code using the developer documentation

Linux

Download the .AppImage file from the Releases page. Make it executable, using the GUI, or with the following command:

chmod +x MARSH_Manager-x86_64.AppImage

If you haven't used AppImage files before you might need to install the FUSE library. The command below was tested to work on Ubuntu 22.04, if you still have problems, see AppImage documentation about FUSE.

sudo apt install libfuse2

Run the program using GUI, or from terminal:

./MARSH_Manager-x86_64.AppImage

Optional: register as marsh-mgr command

It is recommended to put your own executables in ~/.local/bin

mkdir -p ~/.local/bin
cp ./MARSH_Manager-x86_64.AppImage ~/.local/bin/marsh-mgr

If the command marsh-mgr is still not found at this point, this directory isn't in PATH variable, where system looks for executables (you can display it with echo $PATH). An example fix for users of bash (default shell in Ubuntu):

echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Windows

Download and unpack the ZIP file for Windows from the Releases page. Run marsh-mgr.exe.

Note

This is a temporary solution, expect some changes.

Usage

Start the application executable, dependent on your operating system may be the marsh-mgr command. If other nodes are running on different computers, configure "manager address" to IP address of the computer running the manager.

screenshot of MARSH Manager window

Saving data

The user can choose a folder to save the data, the files are named depending on the logging start time to avoid overwriting previous saves. A "file comment" can be added which will be a part of the generated filename, but will also be saved as a STATUSTEXT message at the start of the file. The maximum length for file comment is 50 characters.

Tip

You can use the file comment to help with your data processing afterwards: write test subject initials, short description of test case etc.

The data files saved are "MAVLink telemetry log", recognizable by .tlog extension. This binary file format is a de facto standard between multiple UAV flight stacks, the file just contains MAVLink messages, each preceded by a timestamp in microseconds.

There are multiple external tools available for viewing the logs, notable examples:

Roadmap

The following are already planned future features of MARSH Manager, approximately in the order of priority / expected implementation date:

  • Emit parameters to log for nodes with MARSH_MODE_SINGLE_MESSAGE
  • Distribution:
    • Automated builds and releases on GitHub
    • Windows package (with windeployqt)
  • Connecting nodes on serial port
  • Button to remove timed out nodes from network view
  • Graph visualisation, considering these candidate solutions:
  • Using full message definitions:
    • Displaying units of message fields
      • Displaying angular values sent as radians also as degrees
    • Showing text identifiers for enum values
      • Find length of common prefix from enum names
      • Show bitfields as a collection of flags
    • Maybe later: using tooltips to show descriptions for message fields and enum constants
  • Extend support for Parameter Protocol:
  • Console showing STATUSTEXT messages
  • Replaying log files
  • Allow unregistered clients to do some operations that would make sense for simple utility scripts, for example parameters

Contributing

Contributions to documentation and code are welcome. The repository is on GitHub as marsh-sim/marsh-manager. If you notice a problem, or want to request a new feature, you can create a new issue Code contributions are expected as Pull Requests to that repository. See the developer documentation to get started.

Licenses

The code for MARSH Manager is licensed under GNU General Public License v3.0.

General application structure provided by Qt Framework under terms of the GNU Lesser General Public License (LGPL).

Communication between components with MAVLink using generated code under MIT License.