# DWIRobo_Pub
**Repository Path**: lhamojam/DWIRobo_Pub
## Basic Information
- **Project Name**: DWIRobo_Pub
- **Description**: DWIRobo_Pub ROV开源文档及API接口开机说明
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 1
- **Created**: 2023-10-06
- **Last Updated**: 2026-05-08
## Categories & Tags
**Categories**: auto-driving
**Tags**: None
## README
# ABROV参考文档
https://www.douyin.com/user/self?modal_id=7340900808516504858
微信: 17863999712
*每台机器根据客户要求不一样, 请参考自己的设备包含的部分*
# !! [DWIRobo官网](https://www.dwirobo.tech/app/)
https://www.dwirobo.tech/app/
# !! [DWII开机教程](https://www.dwirobo.tech/dwii-%e4%bd%bf%e7%94%a8%e8%af%b4%e6%98%8e/)
# !! [API接口文档/源代码](ARS-API.md)
## [(停用, 仅作参考, 用户请尽快联系客服升级)DWIHub版开机配置(适合有DWIHub的用户)](DWIHub版开机配置.md)
## [(停用, 仅作参考, 用户请尽快联系客服升级)开机配置(适合无DWIHub的用户)](开机配置.md)
## [(停用, 仅作参考, 用户请尽快联系客服升级)API&定制版说明](API&定制版说明.md)
# 总体架构
## OTPS电源架构:

## DWI无线浮漂方案架构:

## 硬件
> **注意:** 硬件内容仅供技术参考,理论可完整实现;非本公司实际使用技术,不要根据此参考改装机器。
## 系统组件概览
| 模块 | 组件 | 接口 |
|------|------|------|
| 主控计算机 | 树莓派 BCM2837 | 以太网、GPIO、USB |
| 飞控 | Pixhawk 2.4.8(运行 ArduSub) | UART、I2C、PWM |
| 主 MCU | STM32F427 | PWM × 8 |
| 协处理器 | STM32F100 | PWM × 6 |
| 无线通信 | 5G 模块 | USB |
| 深度传感器 | MS5837-30BA | I2C |
| 推进器 | 无刷推进器 × 6 | ESC(PWM,最高 500 Hz) |
---
## 主控计算机 — 树莓派 BCM2837

树莓派作为上位机,负责 STM32 的信号中继与摄像头图像推流。
| 参数 | 规格 |
|------|------|
| 处理器 | Broadcom BCM2837,四核 Cortex-A53 @ 1.2 GHz |
| 以太网 | 10/100 Mbps(板载) |
| GPIO | 40-pin 扩展接口 |
| USB | USB 2.0 × 4 |
| 操作系统 | Linux(Raspbian / Ubuntu) |
**功能说明:**
- 通过板载以太网口连接飞控,作为信号中继
- 通过 GPIO 与下位机通信
- 通过 USB 读取摄像头数据并进行 RTSP 推流
- 通过 5G USB 模块实现远程无线通信
---
## 飞控 — Pixhawk 2.4.8

Pixhawk 运行 ArduSub 固件,提供姿态稳定与运动控制。
| 参数 | 规格 |
|------|------|
| 处理器 | STM32F427,168 MHz |
| IMU | 3 轴陀螺仪 + 3 轴加速度计(内置) |
| 罗盘 | 3 轴磁力计(内置,可外接) |
| 气压计 | 内置 |
| PWM 输出 | 14 路(8 主 + 6 辅助) |
| 串口 | UART × 5 |
| I2C | 支持外接传感器(如 MS5837 深度传感器) |
| 上位机软件 | QGroundControl(QGC),跨平台 |
**功能说明:**
- 内置姿态解算算法,可自稳运行
- 通过 QGC 进行参数调试、模式切换与实时监控
- 支持自定义 PWM 引脚输出,可扩展灯光、机械臂等外设
- MS5837 深度传感器通过 I2C 口连接至 Pixhawk
---
## MCU

### 主 MCU — STM32F427
| 参数 | 规格 |
|------|------|
| 型号 | STM32F427 |
| 主频 | 最高 168 MHz |
| PWM 输出 | 8 路 |
| 控制对象 | 6 台推进器(4 水平 + 2 垂直) |
| ESC 信号频率 | 最高 500 Hz |
接收上位机指令,输出 PWM 信号驱动 6 路电调(ESC),控制推进器转速实现各运动姿态。
### 协处理器 — STM32F100
| 参数 | 规格 |
|------|------|
| 型号 | STM32F100 |
| PWM 输出 | 6 路 |
| 控制对象 | 灯光、机械臂俯仰(PWM 500–2200 μs)、机械臂抓取(PWM 500–2200 μs) |
---
## 5G 通信模块

| 参数 | 规格 |
|------|------|
| 接口 | USB(直插树莓派) |
| 天线 | 内置 |
| 系统支持 | 提供 Linux 驱动 |
| SIM 卡 | 标准 5G SIM |
**功能说明:**
- 插入 5G SIM 卡后即可组网,快捷方便
- 用于岸基与水下 ROV 之间的实时视频流和控制数据传输
---
## 传感器单元
### 水压 / 深度传感器 — MS5837-30BA

| 参数 | 规格 |
|------|------|
| 通信接口 | I2C |
| ArduSub 兼容 | 是 |
| 型号(标准版) | MS5837-30BA50(ELEC-DSI-3050),量程约 300 m |
| 型号(增强版) | MS5837-30BA26(ELEC-DSI-3026),量程约 260 m |
**型号区别(30BA26 增强版):** 高化学耐久性与金属屏蔽,增强结构设计,适用于苛刻液体介质环境。
**接线:** SDA / SCL 连接至 Pixhawk I2C 接口;VCC 3.3 V,GND 公共地。
### 其他传感器(集成于 Pixhawk)
| 传感器 | 说明 |
|--------|------|
| 3 轴陀螺仪 | 姿态解算(Pixhawk 内置) |
| 3 轴加速度计 | 姿态解算(Pixhawk 内置) |
| 3 轴磁力计 | 罗盘方向(Pixhawk 内置) |
| 内置气压计 | 高度 / 深度参考(Pixhawk 内置) |
| 泄漏传感器 | 检测水密舱进水,触发告警 |
| 电流 / 电压检测 | 电池状态实时监控 |
---
## 推进系统

### 无刷电子调速器(ESC)
| 参数 | 规格 |
|------|------|
| 额定电流 | 20 A |
| 控制信号 | PWM |
| PWM 频率 | 最高 500 Hz |
| 信号中值(停止) | 1500 μs |
| 正转范围 | 1500–2000 μs |
| 反转范围 | 1000–1500 μs |
### 推进器配置
| 类型 | 数量 | 安装角度 | 功能 |
|------|------|----------|------|
| 水平推进器 | 4 | 矢量 45° 或 30° | 前进 / 后退 / 侧移 / 旋转 |
| 垂直推进器 | 2 | 垂直 | 上浮 / 下沉 |
> **安装角度选择(参考 BlueROV2 矢量推进器方案):**
> - **45°**:各方向推力均衡(推荐)
> - **30°**:前进推力提升约 25%,侧移推力降低约 25%
# 通信系统
1、通信方式
本系统中STM32F407和传感器单元采用IIC总线通信。
2、IIC协议
IIC通信过程由开始、结束、发送、响应、接收五个部分构成。
1) 开始信号和结束信号
开始信号:当SCL为高期间,SDA由高到低的跳变;
停止信号:当SCL为高期间,SDA由低到高的跳变;

2) 数据传输
SDA的数据在SCL高电平期间被写入从机。所以SDA的数据变化要发生在SCL低电平期间。
3) 应答信号
一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位(ACK), 此时才认为一个字节真正的被传输完成。并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否定应答位(UACK)。

4) 设备地址选取
I2C总线上的每一个设备都对应一个唯一的地址,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据,每一小包数据由9位bit组成。
# 算法
## AI目标识别
### 海洋垃圾监测
使用YOLOV5自主训练海洋垃圾数据集, 使用3080显卡,共训练上千epochs, 使用基础权重为yolov5l.pt, 如下为训练过程:

Tensor board训练过程如下, 随着epochs的增加, AI的mAP_0.5也在持续上升, 但是当epochs的数量超过400时, 整个AI的mAP_0.5反倒开始下降, 此时说明整个模型weights处于过拟合的状态, 需要增加更多数据集。如下图6所示:

图6 Tensor board训练过程

图7是所有epochs训练完成之后, 使用视频对训练效果进行验证, 所使用的conf 0.7, 从视频中明显看出, 由于海洋垃圾的数据量多, 所以对于海洋垃圾的检测十分准确且一直没有丢失, 反倒对于生物和ROV的检测由于数据量少, 检测容易出错和丢失。如下图7, 海洋垃圾检测效果十分出色

图7海洋垃圾检测效果十分出色
摄像头通过BCM2837推流图像信息到控制端, 控制端pytorch服务会拉取视频流并进行处理, 将处理后的结果输出显示到监视器。Pytorch运行的yolov5服务会对图像中的海洋垃圾、生物、ROV进行分类识别。协助完成海洋垃圾的分拣工作, 还给海洋干净。
### 机械臂移动与抓取
通过遥控器控制机械臂的俯仰角度和机械臂的抓取, 机械臂的俯仰角度在500-2200之间。机械臂的抓取也在500-2200之间。在完成AI目标检测之后, 控制机器人靠近, 然后调整机械臂的俯仰角度进行抓取, 抓取后可以放下机械臂, 避免遮挡ROV的水下视线。

图17 AI目标检测机械臂抓取效果图
### 完整项目
+ 询问客服

# 理论支持
## Yolov5网络结构图
YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:
输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;
基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;
Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;
Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言,我们通常可以将其划分为4个通用的模块,具体包括:输入端、基准网络、Neck网络与Head输出端,对应于上图中的4个红色模块。YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种,本文重点讲解YOLOv5s,其它的版本都在该版本的基础上对网络进行加深与加宽。
输入端-输入端表示输入的图片。该网络的输入图像大小为608*608,该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小,并进行归一化等操作。在网络训练阶段,YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法。
基准网络-基准网络通常是一些性能优异的分类器种的网络,该模块用来提取一些通用的特征表示。YOLOv5中不仅使用了CSPDarknet53结构,而且使用了Focus结构作为基准网络。
Neck网络-Neck网络通常位于基准网络和头网络的中间位置,利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、FPN+PAN模块,但是实现的细节有些不同。
Head输出端-Head用来完成目标检测结果的输出。针对不同的检测算法,输出端的分支个数不尽相同,通常包含一个分类分支和一个回归分支。YOLOv4利用GIOU_Loss来代替Smooth L1 Loss函数,从而进一步提升算法的检测精度
# 参数
## 参数-ROV-框架式
## 规格

| **参数** | 国际 | 英规 |
| ------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :----------------: |
| **物理的** | | |
| 长度 | 457 mm | 18 in |
| 宽度 | 338 mm | 13.3 in |
| 高度 | 254 mm | 10 in |
| 空气重量(使用电池) | 11-12 kg | 24-27 lb |
| 空气重量(不含电池) | 9-10 kg | 20-22 lb |
| 电缆穿透器孔 | 共 18 个,其中 6 个可用于扩展 | |
| 接液材料 | 6061-T6, 7075-T6 阳极氧化铝
316, 18-8 不锈钢
高分子聚合物塑料
尼龙
树脂
化合物 | |
| 电子外壳 | 110外壳 | |
| 电池外壳 | 80外壳 | |
| 浮力泡沫 | 高强度深海浮力泡沫 | |
| 配重重量 | 18 x 100 克不锈钢砝码 | |
| **性能** | | |
| 最大额定深度 | 100 米
300 米 | 330 英尺
985 英尺 |
| 温度范围 | 0-30°摄氏度 | 32-86°华氏度 |
| 有效载荷容量(取决于配置) | 3-40kg | |
| 最大前进速度 | 1.5 米/秒 | 3节 |
| 前系柱推力 (45°) | 6-40kg | |
| 垂直系柱推力 | 6-40kg | |
| 侧向系柱推力 (45°) | 6-40kg | |
| 推进器配置 | 6 个推进器(4 个水平推进器,2 个垂直推进器
) | |
| **电池** | | |
| 电池寿命(16Ah 电池) | ~2 小时(正常使用)
~4 小时(轻度使用)
电池可在大约 30 秒内更换 | |
| 电池连接器 | 水下插头 | |
| **灯** | | |
| 亮度 | 每个 2200 流明,带调光控制 | |
| 光束角 | 135度,倾斜度可调 | |
| **系链** | | |
| 直径 | 7.6 毫米 | 0.30 英寸 |
| 长度 | 25-300米 | 80-980 英尺 |
| 工作强度 | 45公斤力 | 100磅力 |
| 断裂强度 | 160公斤力 | 350磅力 |
| 实力会员 | 带水冷头的凯夫拉尔 | |
| 淡水中的浮力 | 中性 | |
| 盐水中的浮力 | 略微阳性 | |
| 导体 | 4 或 1 双绞线,26 AWG | |
| **传感器** | | |
| IMU | 6-自由度 IMU(在导航器上) | |
| 指南针 | 双 3 自由度磁力计(在 Navigator 上) | |
| 内压 | 内部气压计(在导航器上) | |
| 压力/深度和温度传感器(外部) | 水下深度传感器 | |
| 电流和电压检测 | 电压检测板 | |
| 泄漏传感器 | 集成泄漏传感器(在 Navigator 上) | |
| **相机倾斜** | | |
| 倾斜范围 | +/- 90 度相机倾斜度(总范围 180) | |
| 倾斜舵机 | PWM 1500中值 云台有自稳 | |
| **照相机** | | |
| 相机型号 | 低光高清摄像头 | |
| 分辨率 | 1080p / 2k / 4k | |
| 视野(水下) | 110度(水平) | |
| 感光度 | 低光照0.01lux | |
| **控制系统** | | |
| 板载计算机 | 参考配置 LinuxARM主控 | |
| 软件 | ARG / QGround | |
| ¹ 某些有效载荷配置将需要额外的浮力。 | | |
## 系统要求
| **参数** | **价值** |
| --------------------------------------------------------------------------------------------- | ---------------------------- |
| **操作系统** | |
| 窗户 | Windows 10 64 位或更高版本 Android |
| MacOS操作系统 | 10.20 或更高版本 |
| Ubuntu的 | 最新的 LTS (20.04) 或更高版本 |
| **推荐硬件¹** | |
| 处理器 | i5 处理器同等或更高 |
| 独立 Nvidia 或 AMD 显卡² | AI需要 |
| 公羊 | 8千兆字节 |
| 存储 | 固态硬盘 (SSD) |
| ¹ 地面控制站软件性能取决于系统环境、第三方应用程序和可用的系统资源。功能更强大的硬件将提供更好的体验。
² 在大多数情况下,集成显卡是合适的,建议使用独立显卡以获得最佳体验。 | |
## 2D 图纸
[](https://docs.bluerobotics.com/brov2/cad/2d-drawing-brov2-2018.png)