- 无人机
- 智能硬件
【免费下载链接】qgroundcontrol
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
本文围绕 Vehicle-Specific Setup (ArduPilot) 展开,系统讲解 QGroundControl(以下简称 QGC)的 Vehicle Setup 界面中,针对传统直升机(Helicopter)、ArduSub 潜艇(Submarine)与固定翼(Fixed Wing)三种机型额外呈现的专属配置页。读完本文,你将掌握这些页面何时出现、每个配置项的底层参数含义(如
H_SW_TYPE、H_RSC_MODE、FRAME_CONFIG、JS_LIGHTS_STEPS、ARSPD_TYPE等),并能结合源码理解其条件触发机制,从而正确完成对应机型的装机与调参。
一、这些专属页面是如何被“按机型”显示的?
QGC 的 Vehicle Setup 视图左侧会按机型动态渲染配置页列表,具体由 APMAutoPilotPlugin.cc 中的vehicleComponents()方法决定。该方法在参数全部就绪(parametersReady())后逐个实例化组件,其中与本文主题直接相关的三条关键逻辑为:
- 直升机页(Heli):仅当
_vehicle->vehicleType() == MAV_TYPE_HELICOPTER且固件版本不低于 4.0.0 时才创建APMHeliComponent(APMAutoPilotPlugin.cc#L133-L137); - 潜艇页:仅当
_vehicle->sub()为真时创建APMLightsComponent(灯光)与APMSubFrameComponent(机架),且 Sub Frame 页还要求固件版本 ≥ 3.5.0(APMAutoPilotPlugin.cc#L155-L165); - 空速页(Airspeed):只要参数集中存在
ARSPD_TYPE参数就创建APMAirspeedComponent(APMAutoPilotPlugin.cc#L86-L90),这是固定翼(Plane)机型的典型特征。
这也是官方文档所说“部分 ArduPilot 机型会显示仅与该机种相关的额外配置页”的源码本质。所有组件随后会按名称排序显示在侧栏中,setupComplete()始终返回true,即这些专属页不阻塞飞行,属于“辅助配置页”。
二、直升机(Helicopter,ArduPilot 4.0+)
传统直升机机架(带倾斜盘/十字盘结构)在 ArduPilot 4.0 及以上固件中会额外显示Heli配置页。其组件描述为 “Configure swashplate, governor, and rotor parameters.”(APMHeliComponent.h),页面由 APMHeliComponent.qml 实现,共分为五个区域。
2.1 Servo Setup(舵机设置)
页面顶部以表格形式列出Servo 1–8的输出配置,每行对应一组参数:SERVOn_FUNCTION(功能,下拉选择)、SERVOn_MIN(最小 PWM)、SERVOn_MAX(最大 PWM)、SERVOn_TRIM(中立点/微调)、SERVOn_REVERSED(是否反向)。这是直升机通道分配的基础,需先在此确认各舵机输出与H_*旋翼参数所期望的通道一致。
2.2 Swashplate Setup(倾斜盘设置)
对应参数与含义如下(均通过controller.getParameterFact(-1, "...")绑定,见 APMHeliComponent.qml#L28-L39):
| 参数 | 页面显示含义 | 说明 |
|---|---|---|
H_SV_MAN | Servo manual mode | 舵机手动模式开关,决定舵机是否由飞控直接驱动 |
H_SW_TYPE | Swashplate type | 倾斜盘类型(如 120° CCPM 等),必须与机械结构匹配 |
H_SW_COL_DIR | Collective direction | 总距(集体螺距)方向,错误会导致推油门反而减螺距 |
H_SW_LIN_SVO | Linearize servo | 舵机线性化,用于补偿摇臂非线性 |
H_FLYBAR_MODE | Flybar mode | 有/无平衡杆(flybar)模式选择 |
H_CYC_MAX | Cyclic max | 周期变距最大角度 |
H_COL_MAX | Collective max | 总距最大角度(正值上限) |
H_COL_ANG_MAX | Collective angle max | 总距角度最大值 |
H_COL_MIN | Collective min | 总距最小角度(负值下限) |
H_COL_ANG_MIN | Collective angle min | 总距角度最小值 |
H_COL_ZERO_THRST | Zero-thrust collective | 零推力总距角,悬停调参的关键参考点 |
H_COL_LAND_MIN | Landing collective minimum | 着陆时允许的最小总距 |
配置时建议顺序:先设H_SW_TYPE→ 检查H_SW_COL_DIR方向 → 再按机械行程设置各角度限位,最后验证H_COL_ZERO_THRST。
2.3 Throttle Settings(油门/旋翼转速设置)
RSC(Rotor Speed Control,旋翼转速控制)相关参数(APMHeliComponent.qml#L41-L52):
| 参数 | 页面显示含义 | 说明 |
|---|---|---|
H_RSC_MODE | RSC mode | 旋翼转速控制模式(如直连油门/转速闭环等) |
H_RSC_CRITICAL | Critical rotor speed | 临界转速,低于此值触发保护 |
H_RSC_RAMP_TIME | Ramp time | 转速斜坡建立时间 |
H_RSC_RUNUP_TIME | Runup time | 启动加速(runup)时间 |
H_RSC_CLDWN_TIME | Cooldown time | 停车减速(cooldown)时间 |
H_RSC_SETPOINT | Setpoint | 目标转速设定点 |
H_RSC_IDLE | Idle percentage | 怠速百分比 |
H_RSC_THRCRV_0/25/50/75/100 | Throttle curve | 油门曲线,取 0/25/50/75/100% 五个插值点(与文档描述一致) |
2.4 Governor Settings(转速调节器设置)
(APMHeliComponent.qml#L54-L59):
| 参数 | 说明 |
|---|---|
H_RSC_GOV_COMP | 调节器补偿(compensation) |
H_RSC_GOV_DROOP | 转速下垂(droop)系数 |
H_RSC_GOV_FF | 前馈(feed-forward)增益 |
H_RSC_GOV_RANGE | 调速范围 |
H_RSC_GOV_RPM | 调节器目标 RPM |
H_RSC_GOV_TORQUE | 扭矩估算相关参数 |
2.5 Miscellaneous Settings(杂项设置)
包括 Stabilize 模式总距曲线IM_STB_COL_1~IM_STB_COL_4,以及尾桨与陀螺仪参数:H_TAIL_TYPE(尾桨类型)、H_TAIL_SPEED、H_GYR_GAIN(陀螺仪增益)、H_GYR_GAIN_ACRO(特技模式增益)、H_COLYAW(总距-偏航混控)。
注意:Heli 组件在 APMHeliComponent.h 中声明
allowSetupWhileArmed()返回true,即允许在解锁(armed)状态下查看该页,但修改参数仍建议在解锁前完成。
三、潜艇(Submarine,ArduSub 3.5+)
ArduSub 机型(_vehicle->sub()为真)会显示Lights与Frame两个专属页。QGC 还内置了 ArduSub 的离线编辑参数文件 Sub.OfflineEditing.params(对应 Sub 4.7.0 固件),用于无飞控时的参数查看与编辑。
3.1 Sub Frame(机架选择)
组件描述为 “Configure the submarine motor layout and load default parameters.”(APMSubFrameComponent.h),页面由 APMSubFrameComponent.qml 实现,核心是一个可视化机架选择器:每种机架对应一张俯视图(BlueROV1、Vectored 等 PNG 资源,通过 CMake 的QT_RESOURCE_ALIAS注册为/qmlimages/Frames/*.png,见 CMakeLists.txt#L183-L208),点击卡片即设置FRAME_CONFIG参数。
内置机架清单(APMSubFrameComponent.qml#L82-L122):
| 显示名称 | FRAME_CONFIG值 | 默认参数文件 |
|---|---|---|
| BlueROV1 | 0 | (无,需手动确认) |
| BlueROV2/Vectored | 1 | Sub/bluerov2-<version>.params |
| Vectored-6DOF | 2 | Sub/bluerov2-heavy-<version>.params |
| SimpleROV-3 | 4 | (无) |
| SimpleROV-4 | 5 | (无) |
| SimpleROV-5 | 6 | (无) |
版本相关行为(这是该页最有用的细节):
- 选择有默认参数文件的机架后,会弹出确认对话框询问 “Would you like to load the default parameters for the frame?”,选Yes时 QGC 会调用
loadFrameDefaultParameters(),按固件版本自动选择参数文件(APMSubFrameComponent.qml#L31-L43):版本 ≥ 4.0.0 用4_0_0,≥ 3.5.4 用3_5_4,≥ 3.5.2 用3_5_2,否则用3_5; - 固件版本 ≥ 4.1.0 时(
_hasSensibledefaults),QGC 认为固件默认值已足够好,点击机架卡片直接写入FRAME_CONFIG,不再弹出加载默认参数的对话框(APMSubFrameComponent.qml#L167-L172)。
3.2 Lights(灯光设置)
灯光页由 APMLightsComponent.qml 实现,包含三部分:
Light Output Channels(灯光输出通道):通过SERVOn_FUNCTION参数分配灯光通道。代码约定RCIN9(值 59)→Lights 1,RCIN10(值 60)→Lights 2(APMLightsComponent.qml#L42-L45),可分配的通道范围为 Servo 5–16。设置新通道时会先清除其他通道上的同名功能(setRCFunction())。通道总数上限由BRD_PWM_COUNT决定:8 + (BRD_PWM_COUNT == 7 ? 3 : BRD_PWM_COUNT),最大 16 路。
Brightness Steps(亮度档位):这是文档提到的两个参数的分界点:
- 固件3.5.1 及更早:使用
JS_LIGHTS_STEP(单步增量值),页面按(1900-1100)/steps反算步进,且_stepSize低于 80 时强制回 80; - 固件3.5.2 及以上:改用
JS_LIGHTS_STEPS(亮度步数),下拉框直接提供 1–10 档。
(对应代码见 APMLightsComponent.qml#L36-L37 与calcCurrentStep()/calcStepSize()。)灯光电平相关的事实元数据(lights1/lights2以 % 为单位等)可在 SubmarineFact.json 中查看。
小贴士:若旧固件上无法直接看到
JS_LIGHTS_STEPS,说明你的飞控是 3.5.1 或更早版本,需改配JS_LIGHTS_STEP。
四、固定翼(Fixed Wing)的空速传感器校准
官方文档指出:当检测到空速传感器时,固定翼机型会额外显示空速校准页。从源码看,触发条件正是参数集中存在ARSPD_TYPE(APMAutoPilotPlugin.cc#L86-L90),组件描述为 “Configure airspeed sensor type and calibration.”(APMAirspeedComponent.h)。
页面(APMAirspeedComponent.qml)分为Basic与Advanced两个标签页:
4.1 Basic(基础)
- Primary Airspeed Sensor / Second Airspeed Sensor:分别配置
ARSPD_TYPE与ARSPD2_TYPE传感器类型。代码中定义了完整的类型枚举(APMAirspeedComponent.qml#L22-L36),包括:0=None、2=Analog、7=SDP3X、8=DroneCAN、9=DLVR、10=ASP5033、11/12=MS5525(两个地址)、13=NMEA、14=MSP、16=ExtAHRS、17/18/19=SDPx1/x2/x3。选择非 None 类型后还会显示:ARSPD_USE/ARSPD2_USE:是否使用该空速(对应 “Use airspeed” 开关);ARSPD_RATIO/ARSPD2_RATIO:空速比例因子(仅皮托管类传感器显示);ARSPD_AUTOCAL:飞行中自动校准比例。
- Multi-Sensor Options:当主、副传感器同时启用时出现,用
ARSPD_PRIMARY选择主用传感器。 - Airspeed Limits(空速限制):
AIRSPEED_CRUISE(巡航空速)、AIRSPEED_MIN(最小空速)、AIRSPEED_MAX(最大空速)、AIRSPEED_STALL(失速空速)。
4.2 Advanced(高级)
- Sensor Settings:
ARSPD_OFFSET(空速偏移,校准结果)、ARSPD_SKIP_CAL(跳过校准)、ARSPD_TUBE_ORDR(皮托管安装顺序/朝向)、ARSPD_PIN(模拟传感器引脚)、ARSPD_BUS(I2C 总线)、ARSPD_PSI_RANGE(量程,仅 SDP3X/DLVR/ASP5033/MS5525/SDPx 系列显示); - Health Monitoring(健康监控):
ARSPD_WIND_MAX(空速与地速最大允许差值)、ARSPD_WIND_WARN(告警阈值)、ARSPD_WIND_GATE(重新启用门限大小)、ARSPD_OFF_PCNT(偏移校准误差告警百分比); - Airspeed Options:以位掩码形式编辑
ARSPD_OPTIONS。
校准流程与机型联动:固定翼在 Sensors 页做压力(Baro/Airspeed)校准时,QGC 会提示“遮蔽空速传感器、勿触碰或堵塞气孔”,对应校准动作类型为CalibrationAPMPressureAirspeed(见 APMSensorsComponentController.cc#L363),校准结果会回写到空速偏移量中。
五、使用前提与限制小结
| 配置页 | 适用机型 | 固件版本要求 | 触发条件(源码依据) |
|---|---|---|---|
| Heli | 传统直升机 | ArduPilot 4.0+ | MAV_TYPE_HELICOPTER且版本 ≥ 4.0.0 |
| Frame(Sub) | ArduSub 潜艇 | ArduSub 3.5+(页面) | sub()为真且版本 ≥ 3.5.0 |
| Lights | ArduSub 潜艇 | ArduSub 3.5+ | sub()为真(参数名随版本差异:JS_LIGHTS_STEP/JS_LIGHTS_STEPS) |
| Airspeed | 固定翼(典型) | 无固定版本 | 参数集中存在ARSPD_TYPE |
所有这些页面都集中在 Vehicle Setup 视图 的 ArduPilot 专属页列表中(见 setup_view.md#L25)。需要强调的是:
- 本文所有参数名均以 QGC 源码中实际绑定的
H_*、SERVOn_*、FRAME_CONFIG、JS_LIGHTS_*、ARSPD*、AIRSPEED_*为准,最终生效数值仍以你所用 ArduPilot 固件版本的参数定义为准; - 若需离线查看潜艇默认参数,可参考仓库内置的 Sub.OfflineEditing.params;
- 修改任一专属页参数前,建议先通过Parameters页确认参数存在,避免因固件版本差异导致写入失败。
通过本文的“页面何时出现 + 每个参数做什么 + 源码如何绑定”三层视角,你可以快速定位 QGC 中 ArduPilot 机型专属配置的完整脉络,并在直升机倾斜盘调校、潜艇机架/灯光设置与固定翼空速校准三类任务中直接落地。
- 无人机
- 智能硬件
【免费下载链接】qgroundcontrol
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
相关推荐
QGroundControl 无人机地面站(QGC)ArduPilot 机型专属配置指南:直升机、潜航器与固定翼
QGroundControl 无人机地面站(QGC)ArduPilot 机型专属配置指南:直升机、潜航器与固定翼 导读 在 QGroundControl(QGC
无人机智能硬件QGroundControl ArduPilot 机型专属配置指南:直升机斜盘与 RSC、ArduSub 框架与灯光、固定翼空速标定
QGroundControl ArduPilot 机型专属配置指南:直升机斜盘与 RSC、ArduSub 框架与灯光、固定翼空速标定 本篇指南讲解 QGroun
无人机智能硬件QGroundControl 中 ArduPilot 机型专属配置页面详解:直升机斜盘、ArduSub 框架与固定翼空速校准
QGroundControl 中 ArduPilot 机型专属配置页面详解:直升机斜盘、ArduSub 框架与固定翼空速校准 导读 ArduPilot 固件支持
无人机智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考