QGroundControl ArduCopter 调参详解:滑块调参、AutoTune 自动调参与飞行中旋钮调参

发布时间:2026/10/14 16:25:00
QGroundControl ArduCopter 调参详解:滑块调参、AutoTune 自动调参与飞行中旋钮调参
无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载本文基于 QGroundControl 用户指南中的 ArduCopter Tuning 文档系统讲解 QGroundControl 车辆配置视图Vehicle Setup中Tuning页面的三大功能Basic Tuning 滑块调参、AutoTune 自动调参的完整飞行流程以及基于遥控拨码/旋钮的 In-Flight Tuning 飞行中调参并结合开源仓库中的源码与配置定义剖析每个滑块背后对应的飞控参数、AutoTune 的 MAVLink 命令链路和进度反馈机制帮助多旋翼飞行开发者在实飞前安全、可控地优化 ArduCopter 的飞行特性。Tuning 页面定位QGroundControl 车辆配置中的调参入口Tuning 页面位于 QGroundControl 左侧Vehicle Setup车辆配置边栏中与 Summary、Firmware、Airframe、Radio、Flight Modes、Sensors、Power、Safety、Camera、Parameters 等页面并列。官方用户指南 setup_view.md 说明该视图用于首飞前配置新飞行器以及对已配置好的飞行器进行调参。从源码结构看ArduPilot 插件通过 APMAutoPilotPlugin.cc 创建APMTuningComponent组件并将其注册为车辆配置的一个页面组件名即 Tuning描述为 Configure flight performance and controller parameters.见 APMTuningComponent.h。对于多旋翼机型MAV_TYPE_QUADROTOR、MAV_TYPE_HEXAROTOR、MAV_TYPE_OCTOROTOR等APMTuningComponent会加载 ArduCopter 专用的调参页面 QML见 APMTuningComponent.ccQUrl APMTuningComponent::setupSource() const { switch (_vehicle-vehicleType()) { case MAV_TYPE_QUADROTOR: case MAV_TYPE_COAXIAL: case MAV_TYPE_HELICOPTER: case MAV_TYPE_HEXAROTOR: case MAV_TYPE_OCTOROTOR: case MAV_TYPE_TRICOPTER: // Generated from APMTuningCopter.VehicleConfig.json return QUrl::fromUserInput(qrc:/qml/QGroundControl/AutoPilotPlugins/APM/APMTuningCopterComponent.qml); default: return QUrl::fromUserInput(QString()); } }值得说明的是APMTuningCopterComponent.qml并不是手写的 QML 源文件而是构建期由tools/generators/config_qml生成器根据 JSON 声明APMTuningCopter.VehicleConfig.json自动生成的页面CMake 中的代码生成目标见 CMakeLists.txt。这意味着页面上的每一项控件都可以直接追溯到 JSON 中的参数声明后文对每个滑块与参数名的对应关系即来源于此。Basic Tuning用滑块调整飞行特性用户指南给出的基础操作非常直接将想要的滑块向左或向右移动以设定飞行特性。页面上方的Flight Response区块包含若干滑块每个滑块实际绑定的是一个或一组 ArduPilot 参数。根据 APMTuningCopter.VehicleConfig.json 的声明各滑块与参数的对应关系如下滑块界面标签主参数滑块范围联动参数说明界面提示原文Roll/Pitch SensitivityATC_RAT_RLL_P0.08 0.4步长 0.023 位小数ATC_RAT_RLL_I、ATC_RAT_PIT_P、ATC_RAT_PIT_I同值联动飞行器反应迟钝时向右滑抖动时向左滑Climb SensitivityPSC_D_ACC_P0.03 1.0步长 0.053 位小数PSC_D_ACC_I value × 2向右滑爬升更激进向左滑爬升更平缓RC Roll/Pitch FeelATC_INPUT_TC参数自身范围optional 控件无向左软操控感向右干脆利落Spin While ArmedMOT_SPIN_ARM0 0.3步长 0.11 位小数无上锁armed时电机空转程度应低于 Minimum ThrustMinimum ThrustMOT_SPIN_MIN0 0.3步长 0.11 位小数无飞行器产生位移所需的最小推力应高于 Spin While Armed从源码声明可以看到两个值得注意的实现细节Roll/Pitch 滑块采用一键四改拖动ATC_RAT_RLL_P时linkedParams中的ATC_RAT_RLL_I、ATC_RAT_PIT_P、ATC_RAT_PIT_I会按相同数值同步写入保证横滚与俯仰轴的比例/积分增益保持一致这是典型的手感型调参简化设计Climb 滑块的 I 项是 P 项的 2 倍PSC_D_ACC_I: value * 2即爬升加速度环的积分增益由滑块值自动推导用户不需要单独处理 I 项。这两个联动规则意味着滑块不是简单地改一个参数而是成组地重写姿态/爬升回路的一组增益。因此在界面上左右微调时实际下发到飞控的是 34 个参数的批量更新。AutoTune自动调整速率回路的完整操作流用户指南对 AutoTune 的定义是自动调整速率rate参数使飞行器在无明显过冲overshoot的前提下获得最高响应。这是 ArduCopter 的自动增益辨识功能飞行器在空中对指定轴施加激励飞控据此辨识出合适的 P/I/D 增益。AutoTune 参数配置在 Tuning 页面的AutoTune区块中根据 JSON 声明 与仓库内参数文件 Copter.OfflineEditing.params涉及以下参数参数界面控件含义AUTOTUNE_AXES位掩码bitmask复选框Roll / Pitch / Yaw选择参与自动调参的轴RC7RC12 通道选择下拉框Channel for AutoTune switch把 AutoTune 分配给遥控器哪个开关通道AUTOTUNE_AGGR数值optional默认 0.075激进程度aggressivenessAUTOTUNE_MIN_D数值optional默认 0.0005允许的 D 增益下限其中AUTOTUNE_AXES 7即二进制 111RollPitchYaw 全选是仓库参数文件中的默认值。通道选择由专用组件 APMAutoTuneChannelSelector.qml 实现其逻辑是遍历RC7_OPTIONRC12_OPTION共 6 个通道选项参数找到值为17_autoTuneOption 17即 ArduPilot 中 RC 通道选项 Autotune的通道作为当前 AutoTune 开关用户在界面下拉框选择新通道时先把所有通道中的 17 清零再向目标通道写入 17见 setChannelAutoTuneOption。也就是说QGroundControl 并不是让飞行员手动去 Parameters 页翻参数而是直接代写RCx_OPTION参数来完成把 AutoTune 分配到某遥控器开关这一动作。执行 AutoTune 的标准流程用户指南给出的完整操作步骤务必按序执行选择要调参的轴。提示一次调全部轴可能耗时很久甚至导致电量耗尽。为防止这种情况建议一次只调一个轴。把 AutoTune 分配到遥控器某个开关起飞前确认该开关处于低low位置。起飞并将多旋翼切换到AltHold定高模式。用遥控器开关打开 AutoTune。飞机会围绕指定轴抽搐抖动数分钟激励辨识过程的正常表现。AutoTune 完成后飞机会先回退到原参数继续飞行。把 AutoTune 开关拨回低位置、再拨回高位置即可用新参数测试飞行特性。把开关拨到低位置可切回旧参数对比。确认采用新参数在开关保持高位置的状态下落地并解锁disarm——参数才会被写入保存。指南给出的两条重要注意事项AutoTune 在 AltHold 中执行因此飞行器必须已具备在 AltHold 中最小可飞的调参水平随时把 AutoTune 开关拨回低位置即可中止过程。AutoTune 执行期间随时可以用遥控器移动飞行器位置避免偏离安全空域。源码层AutoTune 的 MAVLink 链路与进度反馈QGroundControl 侧的 AutoTune 由 Autotune.h / Autotune.cpp 实现挂在Vehicle上、供 QML 调用的 QML_ELEMENT 对象对外暴露三个状态属性autotuneInProgress是否正在进行autotuneProgress进度0.01.0autotuneStatus状态文本初始为 Autotune: Not performed。QML 端的启动界面 AutotuneUI.qml 提供 Start AutoTune 按钮仅在飞行器处于flying !landing且无 AutoTune 进程时可点击点击后先弹出警告对话框提示需先稳定飞行、随时准备用摇杆中止确认后调用_autotuneManager.autotuneRequest()。autotuneRequest() 的底层动作是向飞控发送 MAVLink 命令_vehicle-sendMavCommandWithHandler( handlerInfo, MAV_COMP_ID_AUTOPILOT1, // the ID of the autopilot MAV_CMD_DO_AUTOTUNE_ENABLE, // the mavlink command 1, // request autotune ...);同时启动一个1 秒间隔的轮询定时器_pollTimer.setInterval(1000)持续查询进度。进度与状态的映射关系在 handleAckStatus() 中飞控上报进度QGC 状态文本 20Autotune: initializing2039Autotune: roll4059Autotune: pitch6079Autotune: yaw95Wait for disarm并弹出提示 Land and disarm the vehicle in order to apply the parameters.8099Autotune: in progress100Autotune: Success弹提示 Autotune successful.失败/错误Autotune: Failed / Autotune: Ack error %1可以看到进度区间与指南中围绕指定轴抽搐几分钟的过程一一对应初始化和辨识按 roll → pitch → yaw 顺序推进95 时进入等待落地解锁阶段——这正好对应指南最后一步开关保持高位置时落地并解锁以保存新参数的协议语义。事后验证在日志中检查 AutoTune 结果调参完成后可以通过 QGroundControl 的日志回放功能核对 AutoTune 全过程。仓库的 DataFlash 日志解析器已内置 AutoTune 相关的消息码见 LogViewerDataFlashParser.cc消息码含义30AutoTune Initialised31AutoTune Off32AutoTune Restart33AutoTune Success34AutoTune Failed35AutoTune Reached Limit36AutoTune Pilot Testing37AutoTune Saved Gains日志中出现 33Success与 37Saved Gains即可确认辨识与参数落盘均已完成若看到 35Reached Limit或 34Failed则说明增益触及下限或流程失败需要回退旧参数重新检查飞行器状态。In-Flight Tuning用遥控器旋钮/拨码在线调参用户指南将 In-Flight Tuning 定义为高级选项使用遥控器某个拨码/旋钮通道在飞行中调整某个飞控参数。操作方式是在下拉框中选择要控制的参数control option再指定该旋钮映射的最小值Min与最大值Max。界面区块In Flight Tuning由 JSON 声明 驱动包含三项参数控件说明TUNE下拉框combobox标签RC Channel 6 Option (Tuning)选择第 6 通道旋钮要映射的调参选项None 或某个具体参数TUNE_MIN数值输入旋钮最小值对应的参数值界面示例默认 0TUNE_MAX数值输入旋钮最大值对应的参数值界面示例默认 1000需要注意一个固件版本兼容细节ArduCopterFirmwarePlugin.cc 中存在参数重映射TUNE_MIN → TUNE_LOW、TUNE_MAX → TUNE_HIGH。这表明不同 ArduPilot 固件版本对同一语义使用了不同参数名QGC 在按固件版本下发时会做自动换算用户在界面上始终面对的是统一的TUNE_MIN/TUNE_MAX标签。小结Basic Tuning 滑块是手感级调参每个滑块背后绑定一组 ArduPilot 参数如 Roll/Pitch 滑块一次改写ATC_RAT_RLL_P/I、ATC_RAT_PIT_P/I四个参数Climb 滑块联动PSC_D_ACC_I 2 × P拖动方向与飞行现象迟钝/抖动、爬升缓急一一对应。AutoTune是空中辨识选好轴建议一次一轴、把 AutoTune 分配到遥控器开关QGC 代写RC7~RC12_OPTION 17、AltHold 中触发飞机会按 roll → pitch → yaw 激励辨识数分钟完成后参数先回退旧值确认新参数满意后在开关高位落地解锁才真正保存。In-Flight Tuning通过TUNE/TUNE_MIN/TUNE_MAX三参数把遥控器旋钮变成在线调参器适合高阶用户在飞行中细调。整个过程可通过 Autotune 状态机 的进度/状态文本在 QGC 界面实时跟踪并在飞行日志中用 3037 号 AutoTune 消息码做事后审计。安全提醒AutoTune 与飞行中调参都要求飞行器当前调参至少能在 AltHold 中稳定飞行且随时可用摇杆或开关中止操作前务必在空旷安全空域进行并保持对飞行器的完全可操控性。赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐QGroundControl ArduCopter 调参完全指南Basic Tuning、AutoTune 与 In-Flight Tuning 实战QGroundControl ArduCopter 调参完全指南Basic Tuning、AutoTune 与 In Flight Tuning 实战 QGr无人机智能硬件QGroundControl PX4 调参实战指南自动调参与手动 PID 调优QGroundControl PX4 调参实战指南自动调参与手动 PID 调优 本篇技术指南以 QGroundControlQGC的 Vehicle se无人机智能硬件QGroundControl 调参Tuning完全指南PX4 与 ArduPilot 的 PID 调参、自动调参与源码实现解析QGroundControl 调参Tuning完全指南PX4 与 ArduPilot 的 PID 调参、自动调参与源码实现解析 QGroundContro无人机智能硬件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考