RoboSub ROS 水下机器人控制系统
robosub-ros
ROS
高级
🧩 软硬件结合
已发布
项目简介
ROS系统控制RoboSub竞赛机器人。
杜克大学机器人俱乐部开发的 robosub-ros 是一个面向水下自主机器人竞赛(RoboSub)的完整软件系统,曾在 2019 至 2024 年间作为团队主力代码库运行。该项目基于 ROS Noetic 构建,采用 Docker 容器化部署,将软件栈划分为 onboard(机载)和 landside(岸端)两个工作空间,分别运行在机器人内部计算机和本地开发机上,通过局域网实现 ROS 消息互通,极大简化了环境配置与部署流程。
标签
项目特点
**完整的自主导航软件栈**:从传感器数据采集、状态估计到任务规划和运动控制,形成完整闭环
**Docker 容器化部署**:简化环境配置,支持机载和岸基分离运行,便于开发和测试
**模块化 ROS 架构**:各功能模块独立封装,易于扩展和维护
**支持真实机器人和仿真**:可在物理机器人上运行,也可在本地仿真环境中进行开发和调试
**丰富的传感器支持**:集成 IMU、DVL、压力传感器、摄像头、声纳和水听器等水下机器人常用传感器
**计算机视觉与机器学习**:通过摄像头输入和机器学习算法定位目标和障碍物
**声学定位系统**:处理水下声学定位任务,定位水听器信标位置
技术规格
| 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 模型
所需工具
| 工具 | 用途 | 是否必需 |
|---|---|---|
| Docker | 容器化运行环境 | ✅ 是 |
| SSH 客户端 | 远程连接容器 | ✅ 是 |
| XQuartz (Mac) / MobaXterm (Windows) | 图形界面转发 | ▢ 推荐 |
| ROS Noetic | 机器人操作系统 | ▢ 推荐 |
| Python 3 | 编程语言 | ▢ 推荐 |
| Catkin 构建工具 | ROS 工作空间构建 | ▢ 推荐 |
| rviz | ROS 可视化工具 | ▢ 推荐 |
能力画像
记忆与知识检索
逻辑推演
表达与交流
感知与观察
数理与计算
动手与操作
狂热与坚持
创造与创新
项目图库
所需技能
🔧 **动手能力**:需要组装和调试水下机器人硬件,包括传感器安装、推进器配置、Arduino 接线等
💻 **编程能力**:需要掌握 Python 和 ROS 编程,理解 Docker 容器化部署,熟悉 Linux 命令行操作
⚡ **电子电路**:需要了解 Arduino 编程、PWM 控制、传感器接口(I2C/串口/以太网)等基础知识
适用场景
**RoboSub 竞赛**:作为参赛团队的完整软件解决方案,覆盖水下机器人自主导航的所有环节
**水下机器人研究**:可作为学术研究平台,用于验证新的控制算法、计算机视觉方法或传感器融合技术
**ROS 教学案例**:作为 ROS 机器人系统设计的完整参考,展示大型 ROS 项目的架构设计和模块划分
**水下自主系统开发**:为工业级水下机器人(ROV/AUV)的软件开发提供参考架构