Skip to content

OpenHUTB/Underwater

Repository files navigation

HoloOcean

HoloOcean Image

pages-build-deployment Build Status

HoloOcean is a high-fidelity simulator develped by the Field Robotic Systems Lab (FRostLab) at Brigham Young University.

Built upon Unreal Engine (by Epic Games) and Holodeck (developed by the BYU PCCL Lab), HoloOcean enables easy simulation of marine robotics and autonomy with a wide variety of sensors, agents, and features.

Features

  • 3+ rich worlds with various infrastructure for generating data or testing underwater algorithms
  • Complete with common underwater sensors including DVL, IMU, optical camera, various sonar, depth sensor, and more
  • Highly and easily configurable sensors and missions
  • Multi-agent missions, including optical and acoustic communications
  • Novel sonar simulation framework for simulating imaging, profiling, sidescan, and echosounder sonars
  • Imaging sonar implementation includes realistic noise modeling for small sim-2-real gap
  • Easy installation and simple, OpenAI Gym-like Python interface
  • High performance - simulation speeds of up to 2x real time are possible. Performance penalty only for what you need
  • Run headless or watch your agents learn
  • Linux and Windows support

Installation

Clone the repo, then cd client pip install .

(requires >= Python 3.6)

See Installation for complete instructions (including Docker).

Documentation

Usage Overview

HoloOcean's interface is similar to OpenAI's gym.

We try and provide a batteries included approach to let you jump right into using HoloOcean, with minimal fiddling required.

To demonstrate, here is a quick example using the DefaultWorlds package:

import holoocean

# Load the environment. This environment contains a hovering AUV in a pier
env = holoocean.make("PierHarbor-Hovering")

# You must call `.reset()` on a newly created environment before ticking/stepping it
env.reset()                         

# The AUV takes commands for each thruster
command = [0, 0, 0, 0, 10, 10, 10, 10]   

for i in range(30):
    state = env.step(command)  
  • state: dict of sensor name to the sensor's value (nparray).

If you want to access the data of a specific sensor, import sensors and retrieve the correct value from the state dictionary:

print(state["DVLSensor"])

Attribution and Relevent Publications

In addition to the online documentation for HoloOcean, the features developed in HoloOcean have also been disseminated via publication in peer-reviewed conferences and journal. Please refer to these publications in addition to the documentation as needed.

If you use HoloOcean for your research, please cite the relevent publications depending on the features you use as outlined below:

General HoloOcean Use

@inproceedings{Potokar22icra,
  author = {E. Potokar and S. Ashford and M. Kaess and J. Mangelson},
  title = {Holo{O}cean: An Underwater Robotics Simulator},
  booktitle = {Proc. IEEE Intl. Conf. on Robotics and Automation, ICRA},
  address = {Philadelphia, PA, USA},
  month = {May},
  year = {2022}
}

Simulation of Sonar (Imaging, Sidescan, Profiling/Bathymetric)

@inproceedings{Potokar22iros,
  author = {E. Potokar and K. Lay and K. Norman and D. Benham and T. Neilsen and M. Kaess and J. Mangelson},
  title = {Holo{O}cean: Realistic Sonar Simulation},
  booktitle = {Proc. IEEE/RSJ Intl. Conf. Intelligent Robots and Systems, IROS},
  address = {Kyoto, Japan},
  month = {Oct},
  year = {2022}
}

About

水下机器人

Resources

License

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors