ArduSub 入门(一):ArduSub 系统组成:飞控、树莓派、QGC 和外设如何协同
目录一、前言二、先从整体看ArduSub 不是单一软件而是一套完整系统三、硬件部分整套系统都需要哪些核心设备2.1 连接图最低要求和推荐硬件2.2 各类硬件说明1自动驾驶仪整套系统的底层控制核心2Companion Computer不是主控替代品而是扩展与桥接中心3摄像头不是附属件而是水下作业的重要感知入口4ESC 与推进器真正把控制量变成水动力输出的执行端5电源、电源检测模块与缆线被忽视但极其关键的基础层6上位机电脑与手柄操作者与载具交互的主要入口7压力传感器、相机云台与灯光额外内容8附加外围设备为水下机器人扩展任务能力的重要补充四、软件部分ArduSub 为什么离不开这三个软件组成1. ArduSub Autopilot Firmware运行在飞控上的底层控制软件1ArduSub Autopilot 固件介绍2ArduSub 版本管理3ArduSub 安装版本确定2. Companion Computer Software运行在伴随计算机上的支持软件1配套计算机软件2Companion Computer Software 安装版本确定3. QGroundControl运行在地面站上的配置与操作软件1QGC软件2QGC 版本管理3QGC 安装版本确定五、各部分之间是怎么协同工作的六、初学者最容易混淆的几个点1. 飞控和树莓派谁才是“主控”2. QGroundControl 是不是只是一个看数据的软件3. ArduSub 能不能只靠飞控单独运行七、小结一、前言很多初学者第一次接触 ArduSub 时最容易产生一个误解认为它只是“刷进 Pixhawk 的一个固件”。这种理解并不完全错误但明显不够完整。因为在真实系统中想让一台水下机器人真正完成遥控、视频回传、状态监测、参数配置以及后续功能扩展仅靠飞控本身是远远不够的。飞控只是整个系统中的核心控制节点而不是全部。从官方文档和相关整理资料来看ArduSub 更准确的理解方式应该是一套围绕飞控、伴随计算机、地面站、通信链路和外设设备共同构成的水下机器人控制体系。飞控负责底层控制伴随计算机负责网络与扩展任务地面站负责配置和交互推进器、电调、摄像头、灯光、机械手等外设则承担具体执行与任务功能。也正因为如此ArduSub 才不仅能用于基础遥控还能进一步支持日志记录、模拟器测试、任务规划以及基于 MAVLink 的二次开发。因此本篇文章不去讲安装步骤而是先把一个最关键的问题讲清楚ArduSub 整套系统到底由哪些部分组成它们之间又是如何协同工作的。二、先从整体看ArduSub 不是单一软件而是一套完整系统官方资料中ArduSub 被归类为 ArduPilot 项目的一部分最初从 ArduCopter 代码发展而来面向 ROV 与 AUV 提供反馈稳定控制、深度保持、航向保持以及自主导航等能力。与此同时官方文档将其配套内容明确分为“所需硬件”和“所需软件”两大部分这说明 ArduSub 从设计之初就不是一个孤立的飞控程序而是一套完整的系统方案。如果从工程视角来理解ArduSub 系统一般可以概括为四个层级。第一层是底层执行与感知层。这一层包括推进器、电调、电源模块、基础传感器、摄像头以及可选的灯光、机械手、声呐等外设。它们直接和真实水下环境发生交互决定了机器人“能不能动”“看不看得见”“能不能完成任务”。第二层是飞控控制层。这一层的核心是自动驾驶仪也就是常说的 Pixhawk 一类硬件平台。ArduSub 固件运行在这里负责读取姿态、深度、罗盘等信息解释操作输入执行姿态稳定、深度保持、电机混控和安全保护逻辑。第三层是伴随计算与通信桥接层。这一层通常由树莓派等 Companion Computer 承担。它的主要任务并不是替代飞控而是完成高清视频传输、网络管理、MAVLink 中继以及更高带宽传感器或自定义程序的接入。整理文章也明确提到伴随计算机的职责之一是通过以太网在自动驾驶仪与地面计算机之间中继 MAVLink 通信。第四层是地面控制与操作层。这一层主要是上位机电脑、QGroundControl 和手柄。操作者通过它查看视频、监控状态、调整参数、切换模式并向水下机器人发送控制命令。官方文档将 QGroundControl 列为所需软件并将 Topside Computer 与 Joystick 列为所需硬件说明这部分是整套系统的重要组成。也就是说ArduSub 的系统架构并不是“一块飞控板独自完成所有工作”而是一个由飞控负责控制闭环、伴随计算机负责桥接扩展、地面站负责人机交互、外设负责执行任务的分层体系。三、硬件部分整套系统都需要哪些核心设备2.1 连接图最低要求和推荐硬件以下连接图展示了如何将设备连接到ArduSub控制系统。2.2 各类硬件说明1自动驾驶仪整套系统的底层控制核心官方文档把 Autopilot 放在所需硬件列表的第一位并指出 ArduSub 固件可运行于多种硬件平台但完全测试和支持最明确的是 Pixhawk 1。其原因在于自动驾驶仪承担的是整机最底层的实时控制任务它要持续读取 IMU、罗盘、压力传感器等状态信息同时向推进器、电调、舵机、继电器等执行端输出控制信号。在实际系统中自动驾驶仪的作用可以概括为三点。其一是状态感知与姿态估计。官方 Features 页面提到ArduSub 具备 AHRS 和 EKF这意味着飞控并不是简单做输入输出映射而是会基于板载或外接传感器进行姿态与导航状态估计。其二是控制律与模式管理。例如在稳定模式或深度保持模式下飞控会根据操作者指令和当前状态自动调整推进器输出而不是把手柄通道机械地一一对应到电机百分比。其三是推进器混控与安全机制执行。对于不同的推进器布局飞控会按 frame 类型和内部电机混控逻辑分配推力输出同时还会配合失控保护、电源监测、 failsafe 等机制维持系统安全。官方文档在 Vehicle Setup 页面中单独列出了 Power、Motors、Safety、Frame 等设置页也从侧面说明这些内容都属于飞控核心职责。因此自动驾驶仪在 ArduSub 里的地位类似于整个机器人系统的“实时控制中枢”。没有它系统就无法形成完整可靠的闭环控制。2Companion Computer不是主控替代品而是扩展与桥接中心很多人第一次看到树莓派或其他单板计算机出现在 ROV 方案里会误以为它才是“真正的大脑”。但从 ArduSub 的架构来看这种理解是不准确的。官方将 Companion Computer 单独列为所需硬件并且同时提供了 Companion Computer Software 和 Companion Web Interface 相关文档。整理文章进一步说明伴随计算机通常用于向地面端传送高清视频流并在自动驾驶仪和地面计算机之间通过以太网中继 MAVLink 通信。这意味着Companion Computer 的主要价值不在于替代飞控做姿态控制而在于承担以下几类任务。第一类任务是网络与通信桥接水下机器人通过缆线与水面端连接时很多数据并不是直接以“飞控串口连电脑”的形式传输而是会先进入伴随计算机再由伴随计算机进行网络转发和协议中继。第二类任务是视频流管理摄像头视频通常不适合由飞控这种资源有限的控制板直接处理因此更常见的方案是让伴随计算机采集、编码并传输视频再由地面端显示。第三类任务是扩展传感器与上层程序接入官方文档提到一些高带宽或专用传感器通常作为 Companion Sensors 接入例如深度声呐、外部水下定位系统输入和扫描成像声呐等。这样做的好处是不会把高层、非实时、计算量大的任务压给飞控而是由伴随计算机统一承接。所以更准确地说Companion Computer 在 ArduSub 中扮演的是“桥梁 扩展平台”的角色。飞控管实时控制伴随计算机管网络、视频与扩展这种分工是 ArduSub 架构能够兼顾稳定性和可扩展性的关键原因之一。3摄像头不是附属件而是水下作业的重要感知入口官方 Required Hardware 中明确列出了 Camera。对于陆地机器人来说没有摄像头仍然能完成很多基本控制测试但对于大多数 ROV 应用场景而言摄像头几乎是标准配置。因为在水下环境中操作者的直接视线无法到达载具所在位置视频回传往往是实现遥操作的主要信息来源。在 ArduSub 体系中摄像头的意义主要体现在两个方面。一方面它为操作者提供第一视角画面使操作者能够完成导航、避障、观察、检查和作业。另一方面它也为后续更复杂的视觉任务预留了可能例如目标识别、目标跟踪或视觉辅助定位。但需要注意的是这类高层任务一般不会直接在飞控中实现而更可能部署在伴随计算机或外部计算平台上。因此摄像头虽然不直接参与底层控制却是整机任务能力的重要组成部分。4ESC 与推进器真正把控制量变成水动力输出的执行端官方硬件列表中把 Electronic Speed Controls电调 和 Thrusters推进器 分开列出说明在 ArduSub 系统中推进器执行链路至少包含两部分飞控输出控制信号经 ESC 调节后再由推进器输出实际推力。推进器的数量、位置、方向和旋向会直接决定机器人能实现哪些自由度的运动控制。例如 vectored 布局和 vectored6dof 布局就分别对应不同的运动能力。官方 Features 页面列出了多种支持车架包括 BlueROV2 常见的 vectored 布局以及 BlueROV2 Heavy 使用的 8 推进器 vectored6dof 布局。这也是为什么在 ArduSub 系列文章里后续一定要专门拿出一篇来讲 frame 和推进器混控。因为在系统组成层面推进器并不只是“电机装上去就行”而是和飞控中的 frame 配置、PWM 输出映射、受控自由度设计密切相关。可以说飞控负责“算该怎么推”ESC 与推进器负责“真的把它推出来”。两者必须严格对应系统才能工作正常。5电源、电源检测模块与缆线被忽视但极其关键的基础层官方 Required Hardware 中专门列出了 Power Sensing Module、Power Supply 和 Tether。很多初学者更关注飞控、相机和推进器却低估了电源和缆线的重要性。实际上在水下机器人里这些部分往往直接决定系统是否稳定。电源的作用不仅是“供电”更关系到推进器负载波动下的电压稳定性以及整机供电架构是否合理。电源检测模块的作用在于把电压、电流等状态反馈给飞控或地面端用于状态监控和保护。缆线的作用则不仅是机械连接更是供电和数据通信链路的一部分。特别是在 ROV 场景中拖缆几乎就是整机与地面系统之间的生命线。视频流、遥测数据、操作命令很多都要经过这条链路来回传输。因此虽然这些部件不如飞控和推进器“显眼”但它们在系统可靠性上往往起决定作用。6上位机电脑与手柄操作者与载具交互的主要入口官方将 Topside Computer 和 Joystick 都列为所需硬件并在 QGroundControl 文档中提供了专门的操控与设置页面。Topside Computer 就是操作者在水面端使用的电脑。它承担两个主要功能一是运行 QGroundControl查看状态、设置参数、切换模式、读取日志二是接收并显示伴随计算机传回的视频和遥测信息。Joystick 则是人工控制输入的主要来源。整理文章和快速上手资料中都提到了 Joystick Setup Page 以及手柄校准流程这说明在 ArduSub 的典型使用方式中游戏手柄或摇杆并不是“额外可选的小配件”而是标准的人机交互设备之一。从系统链路上看操作者的动作并不是直接控制推进器而是先进入地面站和 MAVLink 链路再由飞控解释为对应的控制指令。这种方式使得系统能够在人工操控基础上叠加稳定控制、模式控制和安全保护而不是退化成最原始的“手柄直驱电机”。7压力传感器、相机云台与灯光额外内容需要外部压力传感器以获取深度读数并启用深度保持功能。一次只能连接一个传感器。ArduSub支持简单的伺服驱动PWM万向节其中自动驾驶仪的机载IMU控制稳定以及无刷直驱UART万向节后者拥有自己的自稳定控制器。灯光是任何进行光学检查的海洋车辆中不可或缺的组成部分。ArduSub能够控制使用脉宽调制PWM信号的灯光。两个独立的灯光组合可以通过两个不同的输出通道控制。8附加外围设备为水下机器人扩展任务能力的重要补充除核心组成部分外ArduSub 系统还支持多种附加外围设备。这些组件并不是构成基础控制系统所必需的部分但它们能够显著扩展水下机器人的任务能力和定制能力使平台从“可以正常运动”进一步提升到“可以执行特定作业任务”。其中泄漏传感器主要用于对耐压舱或电子舱内部的进水风险进行提前监测。当外壳发生密封失效或渗水时泄漏传感器能够在水侵入并损坏电子设备之前发出预警因此对于实际下水平台而言具有较高的安全价值。温度传感器则可作为辅助环境感知器件接入系统。相较于某些集成在压力传感器中的温度读数外接温度传感器通常能够提供更快或更准确的测量结果。这类信息在科研任务中尤其有意义特别是在环境温度会影响其他物理量估计或实验结果分析的情况下。当平台需要实现机构转动或小范围执行动作时伺服也是一种常见扩展部件。伺服既可以安装在耐压舱内部用于带动摄像头等装置进行转动也可以在满足防水与耐压要求的前提下用于舱外机构执行。对于具备云台、舵面或小型作业机构的系统而言伺服是实现附加自由度控制的重要部件。对于一些工作电压较高的外部设备继电器则可作为开关控制单元使用。继电器通常用于接通或断开高于常规逻辑电压的辅助设备因此适合在灯光、电磁装置或其他高压直流附件控制中使用。在作业型 ROV 中抓钩与操作器具有非常典型的应用价值。抓手能够用于拾取小型物体、连接回收绳索或解开挂钩绳而更复杂的机械操作器则可服务于清洁、检查、维修等任务。它们使平台不再只是一个“观察工具”而具备了实际干预环境和完成水下作业的能力。在导航与定位方面系统还可以接入水下定位系统与 GPS 相关设备。例如 SBL、USBL 等水声定位设备可用于提供水下位置参考帮助实现目标点导航、地图显示当前位置以及对采集数据进行位置标记。对于需要进行测绘、巡检或科学采样的任务平台而言定位能力往往是支撑任务闭环的重要基础。此外声呐也是 ArduSub 平台中非常重要的一类扩展感知设备。由于水下环境往往存在光照不足、悬浮颗粒较多、可见度低等问题纯视觉手段在很多场景下并不可靠。声呐可用于测量与表面的距离也可用于对目标进行声学成像因此在低能见度环境、结构化空间导航以及目标探测中具有明显优势。特别是在缺少替代定位系统时声呐对水下平台的导航辅助价值更加突出。四、软件部分ArduSub 为什么离不开这三个软件组成官方文档在 Required Software 中列出了三项核心软件ArduSub Autopilot Firmware、Companion Computer Software 和 QGroundControl Software。这个划分几乎和前面的硬件分层一一对应。1. ArduSub Autopilot Firmware运行在飞控上的底层控制软件ArduSub 自动驾驶仪固件ArduSub 固件是负责处理飞行员输入和控制 ROV 的自动驾驶仪软件。ArduSub 是 ROV 的“大脑”。这是整个系统的核心控制程序。它负责姿态稳定、深度保持、航向保持、电机混控、模式管理以及与地面站的 MAVLink 通信。官方 Features 页面中列出的多数能力例如 AHRS/EKF、参数系统、日志记录、地面站兼容等本质上都和这部分固件直接相关。1ArduSub Autopilot 固件介绍ArduSub固件是一个二进制文件加载到兼容的自动驾驶板内部存储器中。固件包含控制指定车辆类型此处为Sub所需的逻辑进程。一些自动驾驶例如Pixhawk配备了用于存储数据日志的SD卡。注意Autopilot固件并不在SD卡上。运行ArduSub无需软件编写连接QGroundControl时通过用户可配置参数进行调整。2ArduSub 版本管理ArduSub固件有三个版本稳定版4.0.X大多数用户推荐的构建。这些版本没有后缀只有数字。Beta4.0.X-beta最新的测试版面向希望在进入稳定版前帮助测试新功能的用户。这些版本的版本后缀为 -beta。开发4.1.X-dev开发构建频繁更新。该构建仅供开发者和高级用户实际使用。这些版本的版本后缀是 -dev。3ArduSub 安装版本确定要了解自动驾驶安装的固件版本请进入“车辆设置”视图然后选择“摘要”标签。固件版本会在“Frame”部分列出。2. Companion Computer Software运行在伴随计算机上的支持软件伴随计算机软件伴随计算机软件通过以太网通信中继自动驾驶仪与QGroundControl之间的通信。伴随软件还将高清视频流式传输至QGroundControl。官方文档显示这部分软件曾经是 ArduSub 官方体系的重要组成但当前已被标记为归档并逐步由 BlueOS 替代。即便如此其设计思路仍然清晰它负责网络配置、视频路由、MAVProxy、终端访问、文件系统访问以及部分外围设备集成等功能。这也说明 Companion Computer 在系统中并不是“随便装个 Linux 就行”而是有一套配套的软件层来承接视频、网络与扩展管理任务。1配套计算机软件Companion Computer 软件镜像是 Raspbian 的修改版本写入 microSD 卡并安装在 Companion Computer。伴随软件执行以下功能通过以太网通信中继自动驾驶仪与QGroundControl之间的通信高清视频流式传输到QGroundControl。允许额外外设传感器和声纳与兼容驱动进行接口。2Companion Computer Software 安装版本确定要了解伴侣电脑安装的软件版本请打开浏览器Chrome、Firefox、Edge 等并导航到 http://192.168.2.2:2770/。软件版本会显示在顶部的头部部分。3. QGroundControl运行在地面站上的配置与操作软件QGroundControl软件QGroundControl是操作ROV的用户界面。QGroundControl 是操作者最直观接触到的软件界面。官方文档在其目录中给出了 Main Toolbar、Vehicle Setup、Fly View、Analyze View 等一整套页面结构并且将其列为控制站软件的重要组成。快速上手文章也说明初始安装、固件刷写、框架选择、手柄设置和校准流程都离不开 QGroundControl。1QGC软件QGroundControlQGC是ArduSub的图形用户界面GUI提供设置和控制功能。QGC可在Windows、OS X和Linux平台上运行。主要特色ArduSub动力车辆的完整配置和配置。带仪表显示叠加的视频流。地图显示显示车辆位置、轨迹和航点使用水下定位系统。2QGC 版本管理QGroundControl 软件有两个版本稳定版4.0.X大多数用户推荐的构建。每日开发主管 |Git 修订 |日期 |时间开发版本频繁更新。这些版本仅供开发使用不建议日常使用。3QGC 安装版本确定要了解你桌面电脑安装的软件版本请进入应用设置滚动到“通用”标签页底部。五、各部分之间是怎么协同工作的如果把前面的内容串起来ArduSub 系统的基本工作链路其实并不难理解。操作者在上位机电脑上运行 QGroundControl并通过手柄发出控制意图。控制命令和配置请求通过通信链路发送到水下侧通常会经过伴随计算机进行网络转发和 MAVLink 中继然后送达飞控。飞控结合当前传感器状态与控制模式计算出各推进器应输出的控制量并通过 PWM 等方式驱动 ESC 和推进器。与此同时摄像头视频和飞控遥测数据则沿相反方向回传到地面端供操作者观察和决策。如果是更复杂的系统伴随计算机还可以接入额外传感器或者运行自定义程序再通过 MAVLink 或其他接口与飞控配合。官方文档明确指出一些高带宽专用传感器通常作为 companion sensors 与伴随计算机协同工作。从这个角度看ArduSub 更像一个分工明确的协同系统飞控负责实时控制伴随计算机负责桥接与扩展地面站负责配置与操作外设负责执行和感知这也是它能够既支持初学者快速上手又支持进一步二次开发的重要原因。六、初学者最容易混淆的几个点1. 飞控和树莓派谁才是“主控”如果说“底层实时控制主控”那一定是飞控。如果说“网络、视频和扩展程序中心”那通常是伴随计算机。它们不是互相替代关系而是分工协作关系。官方文档与整理文章都体现了这种双核心分层设计。2. QGroundControl 是不是只是一个看数据的软件不是。QGroundControl 不仅用来看状态它还承担固件刷写、参数设置、手柄校准、模式配置、日志分析入口等功能是 ArduSub 使用流程中的核心工具之一。3. ArduSub 能不能只靠飞控单独运行从理论上讲某些最简测试可以只靠飞控和基础外设完成但从完整系统角度看如果要实现视频回传、网络化操作和较好的扩展能力伴随计算机和上位机软件通常都是实际部署中的重要部分。官方的 Required Hardware / Required Software 列表也正说明了这一点。七、小结ArduSub 并不是一个孤立运行在 Pixhawk 上的小程序而是一套面向水下机器人开发的完整控制系统。它至少包含飞控、伴随计算机、地面站、推进器与电调、电源链路、摄像头以及操作输入设备等多个部分。飞控负责底层控制闭环伴随计算机负责视频与通信桥接QGroundControl 负责参数配置和人机交互外设则承担感知与执行任务。正是这些部分共同协作才构成了一套真正可用的 ROV/AUV 开源解决方案。