
MarineGym is a large-scale parallel framework designed for reinforcement learning research on unmanned underwater vehicles (UUVs). It is built upon OmniDrones and Isaac Sim, offering the following features:
[!TIP]
🚀 Collaborate with us on Underwater Embodied AI!
We are actively seeking research partners in the field of Underwater Embodied Intelligence and Reinforcement Learning. If you are interested in leveraging MarineGym for your project, please contact us at:
📮 Email: zjuoyh@163.com
To install MarineGym, we recommend reading one of the following guides: - Installation from Source (recommended for development) - Docker Environment (recommended for training purposes; no visualization interface)
If you encounter any issues, you can find solutions to common problems in the FAQ or feel free to open an issue.
For training and evaluation commands, please take a look at the Quick Start.
For installation details, please refer to our Setup Guide.
Currently, five gym environments are verified: Hover, Circle Tracking, Helical Tracking, Lemniscate Tracking, and Landing. Additional environments, including vision-based and sonar-based tasks, are under development.
The training script is located in the scripts folder, named train.py.
To start the training process, run:
python train.py task=Hover algo=ppo headless=false enable_livestream=false
where task specifies the training scenario, which can be Hover, Track, or Landing.
If you build on this work, please cite our paper:
@inproceedings{chu2025marinegym,
title={MarineGym: A high-performance reinforcement learning platform for underwater robotics},
author={Chu, Shuguang and Huang, Zebin and Li, Yutong and Lin, Mingwei and Li, Dejun and Carlucho, Ignacio and Petillot, Yvan R and Yang, Canjun},
booktitle={2025 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
pages={17146--17153},
year={2025},
organization={IEEE}
}
The architecture and certain implementation ideas build upon concepts introduced in OmniDrones.
$ claude mcp add MarineGym \
-- python -m otcore.mcp_server <graph>