Code Monkey home page Code Monkey logo

cisc813-project-usv-nav's Introduction

CISC813-Project-USV-Nav

Project for CISC813 at Queen's University, "Dynamic Obstacle Avoidance by a USV with Moving Obstacles". This project is in the RDDL domain.

The goal of this project is to implement a path-planning problem involving safe movement of a Unmanned Surface Vehicle (USV) around moving obstacles, using Collision Regulations (COLREGS) to determine the correct movements for safe avoidance. This consists of a 2-dimensional cartesian plane, in which obstacles are given (limited) headings which change probabilistically. If the USV gets too close to an object, it flags a damaged boolean failing the condition. Ideally the reward function will make it such that the USV reaches the goal as quickly as possible.

Currently there are 3 versions: Version 1 is a depreceated grid and integer based model, do not use this. Version 2 is the general dynamic obstacle avoidance model, without COLREGS. This generally works well, but can experience issues with a lot of obstacles or too much randomness. Version 3 is the full model with COLREGS. Again, this is best suited to a limited number of obstacles, without too high a probability distribution.

An associated domain, problem, and config file are all provided. RDDL can be run in Google Colab (example here). Please see the attached sample python RDDL file for reference. This has the required visualization tool and imports for this model to work appropriately. Alternatively, this python file can be run in any other IDE.

This link should also work for an already working implementation in Colab.

To switch between random heading and unchanging heading for the obstacles, remove the Normal(0,0.001) with a 0.

Visualizations can be found in the CISC813 gifs folder, outlining certain situations. The problem files should be configured for a working version of the model already. Performance is often dependent on the configuration of the obstacle vessels, sometimes tuning of hyperparameters (small variation in batch size and epochs) is required but this should not be necessary.

To use the online planner, change the offline to online in the planner section, and add a rollout_horizon to the optimizer config. I have not yet got this to solve the problem successfully.

This is my first foray into RDDL, so much of this is not perfectly optimized as I learn more about the language and the tools (some of which are new to the domain) which are available.

cisc813-project-usv-nav's People

Contributors

cowboytime avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.