RoboSub ROS 水下机器人控制系统
robosub-ros
ROS
1/5
🧩 软硬件结合
已发布
项目简介
ROS系统控制RoboSub竞赛机器人。
杜克大学机器人俱乐部开发的 robosub-ros 是一个面向水下自主机器人竞赛(RoboSub)的完整软件系统,曾在 2019 至 2024 年间作为团队主力代码库运行。该项目基于 ROS Noetic 构建,采用 Docker 容器化部署,将软件栈划分为 onboard(机载)和 landside(岸端)两个工作空间,分别运行在机器人内部计算机和本地开发机上,通过局域网实现 ROS 消息互通,极大简化了环境配置与部署流程。
项目特点
**完整的自主导航软件栈**:从传感器数据采集、状态估计到任务规划和运动控制,形成完整闭环
**Docker 容器化部署**:简化环境配置,支持机载和岸基分离运行,便于开发和测试
**模块化 ROS 架构**:各功能模块独立封装,易于扩展和维护
**支持真实机器人和仿真**:可在物理机器人上运行,也可在本地仿真环境中进行开发和调试
**丰富的传感器支持**:集成 IMU、DVL、压力传感器、摄像头、声纳和水听器等水下机器人常用传感器
**计算机视觉与机器学习**:通过摄像头输入和机器学习算法定位目标和障碍物
**声学定位系统**:处理水下声学定位任务,定位水听器信标位置
技术规格
| ROS 版本 | ROS Noetic |
|---|---|
| 编程语言 | Python |
| 容器化方案 | Docker |
| 机器人名称 | Oogway, Cthulhu |
| 机载工作空间 | 包含声学、相机、控制、视觉、数据发布、执行、通信、描述、传感器融合等模块 |
| 岸基工作空间 | 包含摄像头视图、手柄控制、物理仿真等模块 |
| 通信方式 | 通过本地网络共享 ROS 消息 |
| 支持传感器 | IMU (VectorNav)、DVL、压力传感器、以太网相机、Ping360 声纳、水听器 |
| 执行器 | 推进器、舵机(标记投放器) |
| 中间硬件 | Arduino (压力/推进器/舵https://raw.githubusercontent.com/DukeRobotics/robosub-ros/main/CONTRIBUTING.md)itHub 仓库](https://github.com/DukeRobotics/robosub-ros) -- 项目主仓库 |
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| VectorNav IMU | 1 | — | 提供姿态和角速度数据 |
| DVL (多普勒测速仪) | 1 | — | 提供线速度数据 |
| 压力传感器 | 1 | — | 测量深度 |
| 电压传感器 | 1 | — | 监测电池电压 |
| 以太网相机(前视) | 1 | — | 用于计算机视觉 |
| 以太网相机(底视) | 1 | — | 用于计算机视觉 |
| Ping360 声纳 | 1 | — | 声纳探测 |
| 水听器阵列 | 1 | — | 声学定位 |
| 推进器 | 若干 | — | 机器人推进 |
| 标记投放舵机 | 1 | — | 投放标记物 |
| Arduino(压力/电压) | 1 | — | 采集压力和电压数据 |
| Arduino(推进器) | 1 | — | 控制推进器 PWM |
| Arduino(舵机/传感器) | 1 | — | 控制舵机并采集传感器 |
| 机载计算机 | 1 | — | 运行 onboard 容器 |
| 以太网交换机 | 1 | — | 连接机载计算机和岸基计算机 |
3D 模型
能力画像
⚪ 记忆与知识检索: 1/5
🔵 逻辑推演: 4/5
⚪ 表达与交流: 1/5
⚪ 感知与观察: 3/5
🔵 数理与计算: 4/5
🔵 动手与操作: 3/5
🔵 狂热与坚持: 4/5
🔵 创造与创新: 4/5
项目图库
所需技能
🔧 **动手能力**:需要组装和调试水下机器人硬件,包括传感器安装、推进器配置、Arduino 接线等
💻 **编程能力**:需要掌握 Python 和 ROS 编程,理解 Docker 容器化部署,熟悉 Linux 命令行操作
⚡ **电子电路**:需要了解 Arduino 编程、PWM 控制、传感器接口(I2C/串口/以太网)等基础知识
适用场景
**RoboSub 竞赛**:作为参赛团队的完整软件解决方案,覆盖水下机器人自主导航的所有环节
**水下机器人研究**:可作为学术研究平台,用于验证新的控制算法、计算机视觉方法或传感器融合技术
**ROS 教学案例**:作为 ROS 机器人系统设计的完整参考,展示大型 ROS 项目的架构设计和模块划分
**水下自主系统开发**:为工业级水下机器人(ROV/AUV)的软件开发提供参考架构