首页 / 资讯中心 / 文章详情

无人机飞控硬件在环测试设备深度解析与实战经验

无人机飞控硬件在环测试设备深度解析与实战经验 ★ FEATURED ARTICLE
开头无人机飞控系统测试设备听起来是个很窄的门类但真正做过飞控开发的人都知道飞控从代码编译通过到能放心装进机体里上天中间隔着一条巨大的深沟。我在某项目组干了将近两年飞控测试常年面对的就是型号名里带着ETest_FlyCtrl的这套专用测试设备。简单说它就是一台把无人机飞控当成真实被测对象、同时把机体动力学、传感器、舵机和供电环境全部模拟出来的硬件在环测试系统用来在实验室里复现飞行中的正常工况和故障工况。这篇文章不是产品说明书而是我从接触这套设备到用它完成十几个飞控版本回归测试之后的一点经验沉淀。适合刚接手飞控测试岗位、准备搭建飞控HIL测试环境、或者正在犹豫要不要给实验室添置一台专用测试设备的工程师参考。我会尽量把内部结构、测试项设计、操作流程和踩坑记录都写清楚让大家看完之后既能理解这类设备的原理也能少走一些弯路。1. 飞控测试为什么不能只靠实飞ETest_FlyCtrl要解决的核心矛盾1.1 实飞验证的三个硬伤很多飞控团队早期的验证方式很直接代码编好地面粗调然后找块空地起飞。实飞确实能暴露很多问题但它有三个绕不开的硬伤。第一是边界条件不可控。你要验证飞控在GPS丢星、气压计突变、磁罗盘受干扰时的表现实飞里这些情况往往要碰运气才会遇到。就算遇到了也很难判断是传感器真的坏了还是飞控判断逻辑的问题。真正危险的是如果飞控在故障状态下响应错误飞机可能在几秒内失控造成的损失不只是飞机本身还有地面人员和设备的安全隐患。第二是重复性差。实飞时的风速、光照、气压、温度每时每刻都在变同一个版本固件早上飞和下午飞数据曲线可能差异很大。你想用实飞数据做版本间的回归对比总会掺入环境噪声很难区分到底是固件改动引入了问题还是环境变了。第三是成本和效率。每次实飞都要准备场地、电池、遥控、机务人员飞一次可能只有十几分钟的有效数据还要花大量时间判读。飞控迭代到一定程度后一天要跑几十轮测试靠实飞根本无法完成。1.2 测试设备在V字形开发流程里的位置飞控开发一般走V字形流程从需求定义左侧下探到单元测试、集成测试再沿右侧上行到系统验证和确认。传统的实飞验证处在V字形最右侧最末端一旦发现问题修改成本非常高。ETest_FlyCtrl这类硬件在环测试设备的位置正好卡在飞控硬件已经做出来、但还没上真机的环节。它把飞控的传感器输入用仿真数据替代把舵机、电机这类执行机构用负载模型替代让飞控以为自己真的在飞。这样既保留了真实飞控硬件的运算逻辑、接口时序和故障响应特性又能反复解耦地测试把验证工作从V字形最末端提前到中间阶段。这也是为什么很多团队宁可花大力气搭一套半实物仿真环境也不愿意在实飞时去复现故障场景。设备解决的核心矛盾就是想测又不愿真摔、想重复又受制于环境。1.3 设备定位不是一个采集仪而是一个闭环仿真环境第一次接触这类设备的时候很容易把它理解成一个采集仪——接上飞控记录几路信号出报告。但实际上ETest_FlyCtrl的核心价值在闭环二字。闭环的意思是设备输出仿真传感器信号给飞控飞控根据这些信号跑控制算法输出PWM/总线指令控制执行机构设备再根据这些执行结果实时解算新的飞机状态更新传感器信号形成一个循环。飞控在这个环路里跑的每一步都对应着一次完整的状态更新。如果只是采集信号那就只能做开环的静态检查比如看看某路电压是不是对、某条报文是不是在发。但飞控的很多问题恰恰发生在闭环互动中——比如某一时刻传感器数据跳变后控制率如何响应响应是否超调是否震荡。这些只有在闭环仿真环境里才能稳定、安全、可重复地复现。2. 一个能用的飞控测试设备内部是怎么组织的2.1 硬件接入层从信号类型说起飞控对外接口看起来好像是密密麻麻的线缆和接口但拆开来看信号类型其实很有限。ETest_FlyCtrl的硬件接入层就是围绕这些信号类型来设计的。常见的信号包括信号类型典型用途测试设备侧的处理方式PWM信号电机调速、舵机偏转高精度PWM采集与生成注意频率和脉宽精度模拟量输入/输出气压计、空速、电压监测信号调理、滤波、隔离通道间防串扰RS422/485数传链路、外设通信串口转发与协议仿真CAN总线电调、传感器节点通信总线监听、错误帧注入、丢帧模拟开关量/数字量模式切换、航灯控制电平转换、时间同步记录供电电源飞控主供电、输出隔离电压/电流可调支持掉电时序测试这些硬件接口通常做在信号调理板和板卡上再通过转接盒或线缆与被测飞控连接。实际选型时有人问过我是不是接口种类越多越好我的建议是别单纯追求接口数量要看你手头飞控的主通信协议是什么。有些飞控以CAN为主有些以RS422为主把主力总线的仿真精度做高比堆十几个不常用的接口更有价值。另外硬件接入层还有一个容易被忽略的指标——通道间的隔离度和串扰。做模拟量测试时如果一路信号突然阶跃旁边一路跟着跳那基本是通道隔离没做好。实测中我们会先做通道一致性校准确保每条模拟通道的偏置和增益误差被修正到可接受范围内。2.2 实时仿真层六自由度模型和传感器模型跑在哪设备能不能让飞控以为自己在飞取决于实时仿真层的模型质量。它至少要包含三个部分飞机六自由度动力学模型、传感器模型、执行机构/环境模型。六自由度模型负责根据飞控输出的舵面偏转和电机推力实时解算飞机的线加速度、角速度、姿态、位置和速度等状态。模型里要设置飞机的质量、惯量、气动系数、电机时间常数等参数。刚开始我们偷懒直接把公开论文里的某通用机型参数填进去结果飞控在仿真里怎么调都不对——后来才意识到模型参数要尽量贴近真实机型的特性否则测试出的控制参数没有参考价值。传感器模型是把真实物理量转换成飞控能读到的信号。比如真实IMU输出的是加速度和角速度数据气压计输出的是高度对应的电压或数字磁罗盘输出的是地磁矢量投影。传感器模型的意义在于它决定了仿真数据在时序、噪声、量化和异常形态上是否真实。ETest_FlyCtrl在这部分会给用户开放噪声和漂移参数我们后来做故障注入时就是在传感器模型层人为加入零偏漂移和随机游走噪声。执行机构模型同样不能忽略。飞控PWM输出去驱动电机电调电调和电机有延迟和响应带宽桨叶推力和飞机加速度之间还有一阶惯性。如果忽略这些环节飞控输出的控制量会立刻转变为加速度变化反馈回路失真严重测出来的控制参数在真机上大概率不可用。2.3 测试管理层用例、调度、记录三位一体硬件再好模型再准没有一套好用的测试管理层整个设备也用不起来。ETest_FlyCtrl的软件端通常包含三块内容测试用例管理、实时调度与监控、数据记录与报告。测试用例管理用来把不同的测试场景组装成可重复执行的脚本。比如一个姿态阶跃响应测试用例包含初始条件设置、激励参数、执行时长、通过判据。它的设计核心是步骤可编排——用户可以把10个不同的信号激励动作串联成一条测试流程中间允许设置延时、等待飞控状态字跳变、判断反馈值超限等条件。实时调度与监控负责在测试执行过程中展示关键状态。常见界面会同时显示模型解算状态、飞控返回的遥测数据、PWM输出波形、当前用例执行进度和错误事件。这一步对调试帮助很大——遇到问题不用等整个用例跑完才看数据可以实时暂停定位到具体时序。数据记录与报告则把每次测试的所有输入输出、遥测、事件、模型状态全部打包存储。我们后来做版本比较时就是用同一套用例在不同固件版本上跑然后逐点对比记录文件中的姿态曲线。3. 测试项怎么设计从静态检查到故障注入的逐步递进3.1 第一梯队供电、接线和通信链路的基础体检拿到一台新飞控或者固件大改版之后我会先跑一组基础体检项通常包括上电时序测试、供电电压拉偏测试、通信链路握手测试、PWM输出初始状态检查。上电时序测试看起来简单实际上问题不少。飞控的主控芯片、传感器、存储模块各有各的上电需求有些外设需要主控先完成初始化才能接入总线如果供电时序不对可能造成外设总线锁死或者传感器首次读取失败。测试设备通过可编程电源能精确控制各路输出的上电顺序和间隔然后通过飞控返回的状态字判断是否正常。供电电压拉偏测试也很实用。无人机电池电压会随放电深度和负载变化测试时我们把供电电压从额定值往下拉到靠近欠压保护点再往上拉到过压报警点看飞控在边界电压下是否仍能维持正常采集和输出。这里特别要观察PWM波形的稳定性——供电波动到一定程度后飞控如果输出抖动电机就会跟着抖动这在真机上可能引起机架共振。通信链路握手测试则是逐一验证每路串口、CAN总线、以太网口能不能正常收发。这个测试配合波特率误码率统计分析能快速捕获物理层问题比如某路CAN终端电阻没接好导致偶发错误帧。3.2 第二梯队传感器数据有效性与控制律响应基础体检通过后我一般会进入动态测试。传感器数据有效性测试是针对IMU、气压计、磁罗盘、空速管等传感器输入做各类验证。例如IMU测试中给飞控模拟一个缓慢的俯仰角变化观察飞控解算输出的姿态角是否平滑跟随再给一个高频小幅振动观察飞控能否正确抑制噪声是否会产生虚假的姿态漂移。气压计测试里通过模型把气压高度缓慢变化几米看飞控高度估计是否跟得上以及是否触发不必要的垂直速度修正。控制律响应测试是动态测试里的重头戏。最常用的是阶跃响应测试——在飞控处于某个稳定状态时突然给定一个姿态角目标指令比如要求从0度俯仰阶跃到15度记录姿态角的变化曲线。从曲线上我们能直接读出超调量、调节时间、稳态误差和振荡情况。这里很多新手会忽略一个点阶跃指令的幅值要结合机型特点来设有些飞控对大幅阶跃会主动限流/限幅如果不看飞控内部的模式状态只盯着姿态曲线很容易得出错误结论。我习惯把这组测试设计成多组对比用例同一阶跃指令分别在不同前向速度、不同侧风干扰、不同电池电压下执行形成一个响应矩阵。这样做的价值在于能发现控制参数是否只在特定工况下表现良好而不是全包打天下。3.3 第三梯队故障注入与边界压力测试故障注入是ETest_FlyCtrl这类设备最能体现价值的地方。它能在不拆机、不冒险的情况下人为制造信号异常观察飞控的故障响应和容错逻辑。传感器故障是我们注入最多的一类。比如给IMU注入零偏漂移模拟传感器因温度变化产生的缓慢漂移给磁罗盘注入一个瞬间的大角度跳变模拟飞机经过高压线塔或铁架结构时受到的磁干扰。实测中某些刚开始做容错的飞控在罗盘跳变超过20度时姿态估计会发散导致控制量饱和然后设备里能看到明显的振荡。这类问题在实飞中往往要等飞机真的快到危险边界才会出现而HIL测试能在一个小时内反复让飞控经历几十次同样的故障场景。总线丢帧和错误帧注入也很有价值。CAN总线在无人机上承载电调、传感器、飞控之间的关键数据。我们在测试里随机丢弃特定ID的报文或者注入一个错误帧观察飞控的短时断路处理和恢复机制。一个值得注意的点是不同飞控对丢帧的容忍窗口差异很大有的容许连续丢10帧才触发保护有的丢2帧就切换冗余源。通过测试摸清每个版本的这个参数对后续整机联调非常有帮助。边界压力测试则是把飞控推到极端工况——比如超高速飞行时的超压报警、深油门输出下PWM频率和脉宽的极限、连续模式切换下的状态机一致性。我们做过一次连续200次模式切换的测试结果在切换过程中偶发了一次模式状态回退靠人工放飞测试几乎是没法这样批量复现的。4. 跑通一轮HIL测试的可复现流程从接线到报告4.1 接线与自检最容易被低估的一步一套飞控HIL测试从零开始跑通第一步其实是接线和自检。这项工作听起来没有技术含量但它决定了后面所有测试数据的可信度也是故障排查最费时的地方。我常用的做法是先把被测飞控的所有接口定义列成一张表包括接口名称、线序定义、信号类型、电平标准、供电要求。然后对照ETest_FlyCtrl设备端的转接盒接口逐一确认映射关系。最忌讳的是边接边猜——线接错了轻则采集不到数据重则烧坏飞控IO或者板卡通道。接完线之后要先做一遍设备自检。自检通常包括各通道回环测试、板卡自检、供电输出检查、总线接口环回。以CAN总线为例设备端会将自己发的报文转发回自身校验收发一致性这一步能判断板卡的物理层和底层软件是否正常。自检通过后再接入被测飞控上电观察飞控启动日志和状态反馈确认飞控侧也正常运行。有一个细节我建议注意接线的接触电阻。无人机机载环境里常用JST风格插头但在实验室测试环境中反复插拔后插头端子容易氧化或松动导致接触电阻变大。我们曾经因为一根信号线接触不良偶尔出现模拟量跳变排查了很久才定位到是插头问题。后来所有的信号线都改为压接端子或者航空插头并且在上电前用万用表量一遍关键通路。4.2 校准与建模仿真可信度的关键硬件通路正常之后要对设备和模型做校准。很多人跳过这一步直接用出厂默认值跑最后发现测试数据跟自己飞场采集到的真机数据差得离谱。校准分两块。一是信号通道的零点和增益校准设备给飞控一个已知的模拟信号电平对比飞控内部的ADC采样值反向标定偏置和增益系数。对PWM通道则用示波器/脉冲计数器标定设备回采的脉宽和周期精度。二是模型的静态匹配校准飞机模型参数需要根据真实机型结构、电机型号、电池内阻做调整。这里我给一个常见做法。先把飞机放在称重台上获得总质量再用电机测试台测出PWM占空比到拉力的映射关系把这些数据填进设备模型后再做hover状态仿真对比飞控解算的悬停油门与实测悬停油门的差异。如果差异超过5%基本可以确定模型参数有误需要回到气动参数或电机响应时间常数上排查。我们有一个版本模型里电机时间常数设成了实际值的两倍导致所有姿态响应测试的相位滞后都偏大整整浪费了三天。4.3 用例配置与执行监控模型校准通过后就可以配置测试用例。ETest_FlyCtrl的用例通常以工程文件形式组织里面定义了飞机初始状态、仿真时长、模型参数路径、激励信号序列和判据规则。一个典型的姿态阶跃用例配置逻辑大致如下test_name: attitude_step_pitch duration: 20s vehicle: model: fixedwing initial: speed_mps: 25 pitch_deg: 0 scenario: at_time: 2s set_target_pitch: 15deg monitor: channels: - fc_attitude_pitch - fc_pwm_output success: settling_time_s: 6 overshoot_percent: 20 fault_injection: none recording: rate_hz: 200 channels: all配置完成后执行用例之前我会先花几分钟在界面上过一遍监控变量确认飞控遥测里的姿态角、电机转速、模式状态都已经有真实数据刷新。这一步相当于确认飞控真的活着、仿真真的在跑如果遥测一直不动很可能模型未初始化或者总线地址配置错了。执行过程中我会重点关注三个信息模型状态是否发散尤其是速度或高度是否跑飞、飞控是否进入异常模式半稳模式、强制着陆等、实时性指标是否满足预设要求。如果模型发散通常不是飞控问题而是模型参数或初始化状态有问题要先暂停排查仿真环境再去分析飞控响应。4.4 数据回放与报告生成测试执行完之后的环节往往比执行本身更耗时间。ETest_FlyCtrl的数据记录通常以高采样率存储多个通道一轮20秒的用例可能产生几十万条数据。可视化回放时可以同步看到飞机姿态的三维动画、姿态角时间曲线、PWM输出变化和事件标记。我在实际工作中养成了一个习惯每次测试跑完第一时间导出原始数据并打上标签包括被测飞控版本号、测试用例版本号、模型版本号、设备校准日期。这些元信息在后续做版本比较时价值巨大——没有元信息的测试记录过一个月再翻出来基本等于废数据。报告生成方面我不太建议直接使用设备自带的默认报告模板。默认模板适合做交付物存档但做技术分析时我更倾向于从原始数据里自己分析关键指标。比如计算阶跃响应的超调量时我会先手动圈出进入阶跃的时间点再取后续曲线的峰值自动计算的逻辑如果没考虑前向滤波结果可能偏大。这一条经验我是在某次评审会上被问住之后才学会的。5. 实测中的避坑实录噪声、时序和模型失真5.1 地环路与模拟量噪声第一轮上模拟量测试时我印象最深的问题是噪声。飞控返回的某个电压信号在界面上显示为不断跳动的波形幅值高达真值的5%完全无法作为有效数据。排查过程是这样的先怀疑是设备通道本身噪声做了设备内部回环测试结果正常。再怀疑是飞控输出端的电源纹波用示波器抓飞控供电入口看到低频纹波确实偏大但仍在飞控设计容差内。最后把设备、飞控、示波器还有旁边的一台电脑全部连到同一个插线板后问题突然消失。这就是典型的地环路问题——设备端和飞控端各自经由不同的接地路径之间形成了电位差导致共模电流在信号线上流动表现为模拟量通道的低频噪声。解决办法是统一采样同一接地参考信号传输尽量使用差分方式。后来我在所有模拟量测试中都主动检查接地点噪声问题基本再没出现过。5.2 实时性抖动的排查思路HIL系统的实时性直接决定仿真是否可信。ETest_FlyCtrl在模型解算过程中如果因为上位机操作、磁盘写入或网络中断出现调度抖动仿真时间轴上就会出现非物理的间隙飞控看到的传感器数据帧率也会跟着波动。有一次我们跑一个长航时仿真飞机在120秒左右突然出现高度估计波动。我一开始怀疑是气压计模型有问题反复检查后没有发现异常。后来打开了实时监控界面看到模型解的周期在某个时段从1毫秒跳到了8毫秒才意识到是数据记录线程占用过高导致的调度抖动。解决思路通常分几层一是把实时仿真任务绑定到独立的高优先级核二是控制上位机与实时机之间的数据交换频率不要每条内环数据都实时上传而是缓冲打包后降低频率上传三是给磁盘写入加缓存和批量刷盘机制。经过这几项调整后模型解算周期重新恢复到设定范围内。5.3 传感器模型的过分干净陷阱传感器模型最容易犯的错是做得很干净。仿真输出的IMU数据毫无噪声气压计变化平滑如直线总线报文总是按精确周期到达。飞控在这样的环境里表现完美但一到真机上就各种意外的偏移和波动。ETest_FlyCtrl的模型里通常带有噪声注入参数包括白噪声功率、闪烁噪声、量化噪声、非正交安装误差等。我第一次做某型号飞控测试时把所有噪声参数都设成了零结果飞控解算出的姿态角精度极高当时还觉得这个版本真稳。后来某导师提醒我你这测的是理想飞控不是真实飞控才意识到问题。正确的做法是从真机试飞数据中提取典型噪声水平代入仿真模型中复现。比如把实飞记录中的IMU角速度零偏和随机游走参数导入模型再跑姿态估计测试。观察到的量测噪声水平也会显著影响控制律参数整定的结果——不加入真实噪声测出来的控制收益在实飞中往往会显得过于激进。6. 用ETest_FlyCtrl做了半年HIL测试之后我的几点体会这台设备刚上手的时候我确实交了不少学费像地环路、传感器模型噪声、用例元信息丢失这类问题都踩过。但半年下来HIL测试已经成了我们版本验证流程里不可缺少的一环。我最直观的感受是HIL测试的价值不完全在于找到了多少个bug而在于把飞控测试的边界推到了实飞无法到达的区域。飞行器可以连续在一个小时内经历上百次故障注入可以在深夜由脚本自动执行整轮回归可以在发布新固件前对上一版本的性能数据进行逐点对比。这些工作量靠实飞几乎不可能完成。如果大家刚接触这类设备我的建议是不要急着把模型调到高仿真度先把最简单的开环链路跑通确认飞控的每个输入输出都在可控范围内然后加入闭环模型验证飞控能否稳定悬停最后再叠加故障注入和随机噪声逐步逼近真实场景。每一步的测试用例都要有版本号、日期和设备校准记录否则后期数据分析时会很痛苦。另外一点体会是HIL测试数据不能直接替代实飞但可以大幅压缩实飞的轮次和时间。我在某次新机型调试时先在设备上完成了80%的参数粗整定把剩下有风险的边界情况单独列表再带到外场实飞验证整个试飞周期比上一版缩短了大约一半。设备建立的数据基线还能在后续每次固件迭代时自动对照一旦出现异常波动就能第一时间给出提醒。如果你也在搭建或使用飞控测试设备希望这些经验能帮你少踩几个坑。设备本身只是一个工具真正决定测试价值的是测试用例的设计、模型的可信度和对数据的态度。
阅读完成 · 觉得有帮助?
咨询建站