Skip to content

An Exemplar for Engineering Self-Adaptive Unmanned Vehicles

License

Notifications You must be signed in to change notification settings

SirCipher/UNDERSEA

 
 

Repository files navigation

Linux Build Status Mac Build Status Docs Build Status


UNDERSEA

An Exemplar for Engineering Self-Adaptive Vehicles, prototyped using the Mission Oriented Operating Suite (MOOS).

Additional information on the original UNDERSEA application can be found on the UNDERSEA webpage and it is recommended that you read the research paper before using this project to gain an understanding of how UNDERSEA works.

Further information on the project, architecture, tutorials are currently in progress. This project is currently under heavy development (as part of my dissertation) and is not recommended to be used in a production environment. The full report and research paper will be published in the coming months. Documentation will be available here or if you wish to dive straight in, the first guide is available here.


To setup and use on Ubuntu, or Mac OS, checkout the project, run setup.sh and wait for all the dependencies to pull.


The repository comprises the following directories:

  • libraries: populated by running setup.sh
  • resources: case studies
  • moos-ivp-UNDERSEA: Necessary UNDERSEA components (Sensor and UUV) for MOOS-IvP
  • undersea-agent:
    • agent: a sample implementation of the software, built for MOOS. This includes a DSL parser for the agent configuration files.
    • common: common functionality for all submodules
    • missionmanager: A mission manager and planner for agent missions
    • monitor: a monitoring application for the cluster
    • prospect: a custom Raft implementation for the cluster
    • seachain: a todo application which will migrate the distributed logging system to an Ethereum network
    • tutorials: contains a handful of tutorials that demonstrate the functionality of the project

UNDERSEA has primarily been developed using Ubuntu 18.04 LTS, however, it has also been tested on Mac OS, and Windows 10 using the Windows Subsystem for Linux (WSL) - without any GUI applications from MOOS.


Running UNDERSEA using Windows WSL:

UNDERSEA on Windows 10 has only been tested using CLion and IntelliJ, though not as a target release. In addition to this, WSL does not natively support GUI applications - while support can be added through an XServer, WSL sockets fail to bind - so pMarineViewer does not launch and run correctly. Instructions to setup for development are as follows: To setup UNDERSEA on Windows:

  • Setup the machine as per the instructions for Ubuntu 18.04 LTS
  • Install CLion
  • Setup CLion with WSL
  • Install dos2unix on WSL with: sudo apt install dos2unix
  • Checkout this repository: git clone https://github.com/SirCipher/UNDERSEA.git
  • Change to the repository: cd UNDERSEA
  • setup.sh will initialise the development environment, however, the line endings are incorrect and they need to be converted to the correct form: dos2unix moos-linux.sh ortools.sh matlab.sh setup.sh runner.sh

If you are planning to extend UNDERSEA and continue developing MOOS applications then the development environment can be setup such that IntelliJ/CLion/scripts launch the application on the WSL and no Java process issues will be encountered - as the agents are launched via terminal commands and these will be executed on Windows.

Developing on Windows:

In order to develop using Windows for the UNDERSEA platform but without the MOOS subsystem, Google OR Tools and Matlab must be installed to the libraries directory that resides in this folder. OR Tools must be installed to libraries/ortools and MATLAB to libraries/MATLAB.

Developing on Linux 16.04/18.04:

Run setup.sh in the root of this directory and all of the required external dependencies will pull. Run setup.sh in moos-ivp-undersea, add the libraries/moos/bin and moos-ivp-undersea/bin directories to your $PATH.


Case Studies:

Case study 1

Demonstrating automatic task decomposition, distribution and execution to local cluster clients. A leader is automatically elected and distributes the mission to the clients.

The video also demonstrates the leader being killed and a new one elected. The new mission is re-decomposed and distributed to the available clients. The same functionality is demonstrated by a follower failing.

Case study 1

Case study 2

Demonstrating automatic task decomposition, distribution and execution to local cluster clients. An agent is assigned a mission but then fails, notifies its leader and the leader assigns the remaining agents in the cluster to the mission.

The video also demonstrates the leader being killed and a new one elected. The new mission is re-decomposed and distributed to the available clients. The same functionality is demonstrated by a follower failing.

Case study 2

About

An Exemplar for Engineering Self-Adaptive Unmanned Vehicles

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 91.9%
  • C++ 5.8%
  • Shell 1.2%
  • CMake 0.7%
  • ANTLR 0.3%
  • MATLAB 0.1%