aeolus-ocean

An all-weather, day-and-night, collision avoidance simulator that can be implemented as a digital twin for the autonomous COLREG-compliant navigation of maritime vessels.

https://github.com/aavek/aeolus-ocean

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.9%) to scientific vocabulary

Keywords

autonomous autonomous-navigation autonomous-vehicles boat collision-avoidance colreg computer-vision graphics jonswap machine-learning marine-robotics ocean reinforcement-learning robotics simulation unity unity3d vessel waves
Last synced: 6 months ago · JSON representation ·

Repository

An all-weather, day-and-night, collision avoidance simulator that can be implemented as a digital twin for the autonomous COLREG-compliant navigation of maritime vessels.

Basic Info
  • Host: GitHub
  • Owner: aavek
  • License: bsd-3-clause
  • Default Branch: main
  • Homepage:
  • Size: 147 KB
Statistics
  • Stars: 44
  • Watchers: 3
  • Forks: 4
  • Open Issues: 4
  • Releases: 4
Topics
autonomous autonomous-navigation autonomous-vehicles boat collision-avoidance colreg computer-vision graphics jonswap machine-learning marine-robotics ocean reinforcement-learning robotics simulation unity unity3d vessel waves
Created about 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

Aeolus-Ocean

Aeolus Ocean - A simulation environment for the autonomous COLREG-compliant navigation of Unmanned Surface Vehicles using Deep Reinforcement Learning and Maritime Object Detection

Description

An all-weather, day-and-night, simulator that can be implemented as a digital twin for the autonomous navigation of maritime vessels as they attempt to reach waypoints while avoiding collisions with other vessels while respecting maritime collision regulations (COLREGs), obstacles and land.

The project consists of an ocean system (Beaufort 1-11) as well as physics algorithms that handle vessel-water interactions and propulsion. Each vessel has its own target acquisition systems. For Object Detection, cameras make use of YOLO-X to visually locate other vessels on-screen and this data is fused with information extracted from a simulated radar system to detect all other vessels positional data in its environment. Land is detected with a simplified sonar-like system. The navigational guidance of each vessel is controlled by an intelligent Agent that has been trained (as single-agents in the proximity of other single-agents in multiple environments) over a range of different scenarios using Deep Reinforcement Learning (PPO) and Imitation Learning with Unity's Machine Learning Agents Toolkit (ML-Agents).

Currently, the project is available in binary form. It can be downloaded as a release. If there is enough interest in the current work, the source code may become available in the future.

How to Run

Once you download the release, you can safely run the program with AEOLUS OCEAN.exe. The binary is created directly from Unity's build settings, and Windows might ask you to trust it as it may come from an 'unknown publisher'.

By clicking on the "Simulation" tab in the main-menu you should be presented with the following setup menu.

setupmenueveningv2

Simulation Setup

Each of the controllable setup parameters (default values shown) for the simulation are now described:

| Environment Parameters | Description | | :---: | --- | | Number of Environments | Number of environments agents will reach waypoints on. In the source code, this is used to train agents in parallel. | | Agents Per Environment | Each environment will have this many agents in it. NOTE: (Number of Environments) x (Agents Per Environment) must not exceed 32. | | Environment Spacing | Spacing in meters between consecutive environments. Environments are arranged so they fill, at maximum, a 4x4 grid. | | Environment Enclosures | Whether to use walls that restrict travel between environments. In the source code, this can speed up training. | | Ocean Current Factor | Slider that controls how strong ocean currents are in causing the vessel to drift off course. | | Wave Spectrum | Choose a non-directional wave spectrum (Pierson-Moskowitz, JONSWAP or JONSWAP with Texel MARSEN ARSLOE (TMA) correction). In each case, we use the Hasselmann Directional Spreading function. |


| Waypoint Parameters | Description | | :---: | --- | | Waypoint Change Distance | Distance in meters to a waypoint that, when reached, causes a new waypoint to be spawned for the current Agent. | | Show Waypoint Markers | Whether to show graphics for waypoint markers and navigational arrows. | | Minimum Waypoint Spawn | Minimum distance beyond which a waypoint will spawn from the Environment center as a percentage of the Environment Spacing. This can exceed 1 if you want waypoints to extend beyond the current environment. | | Maximum Waypoint Spawn | Maximum distance up to which a waypoint will spawn from the Environment center as a percentage of the Environment Spacing. This can exceed 1 for waypoints beyond the current environment. Must be larger than the minimum waypoint spawn value. | | Waypoint Type | Choose between random waypoint placement, or hard-coded crossing waypoint / head-on waypoint scenarios. |


| Procedural Island Parameters (Perlin Noise) | Description | | :---: | --- | | Generate Island Per Environment | Generates an island at the center of each Environment. | | Scale | Larger values control how smooth the surface of the island is while smaller values lead to many a more spiky surface. | | Height Multiplier | Multiplies the height and depth values of the surface by this amount. | | Falloff Multiplier | Multiplies the depth values at the edges of the island. Larger values mean deeper edges. | | Octaves | Controls how many levels of perlin noise will be applied for this island. | | Smooth A & B | As these values increase, the island shape transitions between a pyramid-like shape to a rectangular shape. | | Persistance | For values of less than 1, controls how the dominant the first layers of perlin noise are over the next consecutive ones. For values of more than 1, this leads to a more spiky surface to more contributions from each noise layer.| | Lacunarity | Smaller values lead to smoother surfaces while larger values lead to increased surface roughness. | | Offset X & Y | This can be used to randomize the surface generation process. |


| Designated Ego Vessel (DEV) Parameters | Description | | :---: | --- | | DEV ID | Slider that allows the user to select which vessel from this setup will be the DEV. Selecting a DEV tells the program on which vessel to implement the sensors system. | | DEV Camera | For a given DEV ID, whether to observe the environment from the on-board vessel camera. | | Computer Vision | Whether to use Deep Learning Computer Vision with object detection to visually locate other vessels on-screen. | | Sensors | 'Full Dynamic Awareness' allows all vessels to know all positional data of each other. 'Computer Vision and Simulated Radar' uses the DEV's on-board sensors to navigate its environment. | | Detection Rate | Interval period in seconds by which the object detection algorithm will read a frame and output detections (if any). Larger values lead to better overall performance at the cost of accuracy. | | Confidence | Threshold for object detections. Smaller values will be stricter while larger values will lead to more false positives. | | Vision Detection Distance | Distance in meters by which the DEV camera sensor will lock onto the nearest vessel and track it. If the target vessel is further than this distance, tracking stops. | | Radar Distance | Distance in meters by which the DEV radar sensor will pick up nearby vessels. | Radar Sweep | Rotations per minute of the radar sweep. Higher values may track nearby vessels more accurately at the cost of not detecting distant ones.


When ready, click on "Autonomous Vessel Control".\ Important Note : If the simulation hangs upon clicking this, disable "Generate Island Per Environment". This will be fixed soon.

During the Simulation

As the simulation is running, the user can choose to allow the autonomous operation to continue or override the control by clicking on the "Autonomous Control" button. This will switch it into a "User Control" mode where the vessel can be controlled by the keyboard arrow keys. A GUI button on the top-left of the screen allows the user to customize weather and lighting conditions. If "Show Waypoint Markers" is on, the green navigational arrow on the top shows the direction towards the next waypoint, while the blue arrow shows the directional vector of the vessels velocity. If rain or snow is enabled in the simulation, camera water drops are generated which can have an adverse impact on target vessel detection. Target vessel detection is also affected by fog, as well as the Sun's glare, and reflected sunlight in calmer sea-states, if they are in the direction of the target vessel.

Image: Vessel approaching towards waypoint (daytime). | Image: DEV tracking another target vessel at night. :-------------------------:|:-------------------------: | GIF: Vessels respect COLREG Rule 14(head-on) & 16. | GIF: Vessels respect COLREG Rule 15(crossing) & 16. | GIF: DEV tracking another target vessel during rain. | GIF: DEV tracking in snow and fog conditions. |

Note that the GIFs may be slightly sped up to manage upload size limits.

Limitations

  • Currently, only a single vessel type (motorboat) has been trained for a sufficiently long enough time.
  • Additionally, in this version (v1.11) only the same type of vessels are allowed to be simulated in each environment. Future versions will allow for different vessel types, each with their own Agent Brains.
  • Foam is based on a simplified particle system and so may not look great with larger waves.

License

BSD-3-Clause License

Citation

BibTex @article{vekinis2023aeolus, title={Aeolus Ocean -- A simulation environment for the autonomous COLREG-compliant navigation of Unmanned Surface Vehicles using Deep Reinforcement Learning and Maritime Object Detection}, author={Andrew Alexander Vekinis and Stavros Perantonis}, year={2023}, eprint={2307.06688}, archivePrefix={arXiv}, primaryClass={cs.RO} }

Owner

  • Login: aavek
  • Kind: user

Citation (citation.cff)

cff-version: 1.2.0
title: Aeolus Ocean
version: 1.11
message: >-
  If you like and use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Andrew
    family-names: Vekinis
    email: a.vekinis@iit.demokritos.gr
    affiliation: National Centre of Scientific Research "Demokritos"
  - given-names: Stavros
    family-names: Perantonis
    email: sper@iit.demokritos.gr
    affiliation: National Centre of Scientific Research "Demokritos"
repository-code: 'https://github.com/aavek/Aeolus-Ocean'
abstract: >-
  An all-weather, day-and-night, simulator that can be implemented as a digital twin for the autonomous COLREG-compliant navigation of maritime vessels. 
keywords:
  - reinforcement learning
  - machine learning
  - artificial intelligence
  - simulation
  - computer vision
  - computer graphics
license: BSD-3-Clause

GitHub Events

Total
  • Watch event: 19
  • Issue comment event: 1
  • Fork event: 2
Last Year
  • Watch event: 19
  • Issue comment event: 1
  • Fork event: 2

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 42
  • Total Committers: 1
  • Avg Commits per committer: 42.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 42
  • Committers: 1
  • Avg Commits per committer: 42.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
aavek 9****k 42

Issues and Pull Requests

Last synced: about 2 years ago

All Time
  • Total issues: 3
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 3
  • Total pull request authors: 0
  • Average comments per issue: 0.67
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 3
  • Pull request authors: 0
  • Average comments per issue: 0.67
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • machinevisionbeans (1)
  • LBJjames23 (1)
  • AkashDallen (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels