Skip to content

README.md

Machine-translated by Robotheca from the original in Chinese (opens in a new tab). License: MIT (opens in a new tab) and GPL-3.0-only (opens in a new tab).

FinsROV: an Underwater Camera-Based Multi-robot platform

(opens in a new tab) (opens in a new tab) (opens in a new tab)

FinsROV is a low-cost, open-source Underwater robot platform designed for underwater task and research in robotics and AI. The eight-thruster configuration effectively ensures the flexibility of the robot's omnidirectional movement, and the dual-gimbal platform provides ample hardware expansion space, which can be applied to task scenarios such as underwater object tracking and underwater target recognition. This project supports both Chinese and English languages, though some videos and documents are only available in Chinese (Maybe this is a great opportunity to learn Chinese LOL)

This section couldn't be translated automatically. Read the original (opens in a new tab)

Overview

The FinsROV consists of a waterproof compartment with its internal circuitry, 8 propellers, 4 servos, 4 water depth sensors, and various brackets in total, with the model shown as follows:

FinsROV整体包含防水仓及其内部电路、推进器 x8、舵机 x4、水深传感器 x4以及各个支架,模型如下: Model

FinsROV is equipped with two 2-DOF gimbals mounted on either side of the submersible respectively. Each gimbal consists of two servos, with a maximum rotation angle of -90° to 90° for each servo.

FinsROV配置了两个二自由度的云台、分别置于潜器的两侧,一个云台由两个舵机组成,每个舵机的最大旋转角度为(-90°~90°) image

We have open-sourced all structural components of the underwater robot, which can be found in the Structure (opens in a new tab) folder, with the corresponding STEP files provided. The robot’s structure can be modified using software such as Solidworks, and the relevant structural components can be manufactured by means including 3D printing and CNC machining. We welcome everyone to upgrade and modify this robot platform.

我们开源了水下机器人所有的结构件,在Structure (opens in a new tab)文件夹中,提供对应的STEP文件,通过Solidworks等软件,可以对机器人结构进行修改。通过3D打印或者CNC加工等不同的形式,都可以制造对应的结构件,我们欢迎大家对机器人平台进行升级和改造

Parameters

CategorySub-itemParameterAdditional Notes
SpecificationsDimensions (L×W×H)40cm35cm15cm
Power / Endurance~13.75 W, ~2 hCompatible with RC batteries with XT30/60 connectors
Weight in air4.85 kg
Operating depth10–20 m, pressure-testedPressure-tested
Power SystemMaximum acceleration in still water4.6 m/s²
Maximum speed in still water~3 m/s
Maximum turning angular rate in still water5.7 rad/s
Control frequency150 HzCan be adjusted as needed
Baud rate115200
Payload10–15 N

BOM

The complete BOM of our robot is shown below. For regions where components can be directly purchased on Taobao, you may click the links directly (this is not an advertisement; you may purchase from other suppliers). For those with no access to Taobao, please refer to the following information. A downloadable version of the BOM is also available in the Structure folder.

Chinese Version (opens in a new tab)

English Version BOM (opens in a new tab)

Controller

All controller codes are stored in the Lower level controller (opens in a new tab) and can be used with the Readme file. In this project, our lower-level controller is based on the DJI Robomaster C-board (STM32F4) and developed with Keil. For secondary development of the code, you need to download Keil Version 5.38 or later, and it depends on the file Keil.STM32F4xx_DFP.2.14.0.pack. Install dpinst_x86.exe (for 32-bit systems) or dpinst_amd64.exe (for 64-bit systems) from the STLink package. The process for wireless programmers is similar to that of wired programmers; simply select CMSIS-DAP Debugger when choosing the debug tool, and there is generally no need to modify the clock frequency. For better performance, we recommend using the FINEMOTE (opens in a new tab) developed by our laboratory (note: some hardware is not yet adapted). It is a powerful embedded development framework that will also be used synchronously in our new-generation underwater robots.

Wired Joystick

Our robot platform supports a variety of host computer systems, including but not limited to Windows, Linux, macOS, Android, Raspberry Pi, etc. We recommend using a game joystick for control. The relevant code is available in Joystick_Control (opens in a new tab) and should be used in conjunction with the README file.

Education

We provide a complete set of video tutorials for building the underwater vehicle. We sincerely apologize that these tutorials are only available on Bilibili with Chinese voice-overs and subtitles. We will also upload other relevant content, and we welcome you to subscribe to our channel (opens in a new tab). Additionally, the Making_Instructions (opens in a new tab) folder also contains some documentation on the making instructions.

How to build the robot platform & coding: 【Shanghai Jiao Tong University】From 0 to 1: Building an Underwater Robot (opens in a new tab)

Basic theory about underwater robots: 【Dynamics and Kinematics Modeling and Controller Analysis for Underwater Robots】 (opens in a new tab)

Demo: 【Publicly Available Information: FINS First-Generation Underwater Robot】 (opens in a new tab)

Thank & Citation

This project acknowledges the contributions of Ding Lin, Jisheng Xu, Jiahao Lin, Yanqi Feng, Jiaming Guo and other students who are or have been part of the FINS-Underwater Group.

If you find this code useful, we would appreciate if you would cite our paper:

@article{xu2025aucamp,
  title={Aucamp: An Underwater Camera-Based Multi-Robot Platform with Low-Cost, Distributed, and Robust Localization},
  author={Xu, Jisheng and Lin, Ding and Fong, Pangkit and Fang, Chongrong and Duan, Xiaoming and He, Jianping},
  journal={arXiv preprint arXiv:2506.09876},
  year={2025}
}

Files by @IWIN-FINS, at commit 1bc38e8, read from GitHub in your browser. Hardware license: MIT; software license: GPL-3.0-only. Robotheca doesn't review code: read it before running it.