ArduPilot 执行器 Chirp 扫频脚本:舵机/电调频响测量的台架实验指南

发布时间:2026/9/15 22:25:49
ArduPilot 执行器 Chirp 扫频脚本:舵机/电调频响测量的台架实验指南 ArduPilot 执行器 Chirp 扫频脚本舵机/电调频响测量的台架实验指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读actuator_chirp是 ArduPilot 脚本系统中一个面向台架实验的工具脚本脚本源码官方说明它驱动单个舵机或电调输出通道执行一段指数扫频chirp信号同时记录执行器的响应电调转速或舵机位置用于在台架上测量舵机/电调的频率响应带宽。读完本文你将掌握该脚本的安装部署、全部 9 个ACHRP_参数的取值含义与默认值、扫频信号的数学原理含源码级剖析、ECRP/SCRP 日志的分析方法以及安全使用该工具的前提条件。脚本定位为什么需要 chirp 扫频伺服系统舵机、电调并不是理想的输入 PWM、立即输出对应位置/转速的元件——它们存在带宽限制、延迟和非线性。要定量刻画其动态特性一种经典做法是注入扫频激励让输入频率从低到高连续变化同时记录输出响应从而估计出系统的幅频特性magnitude response找到 -3dB 带宽等关键指标。该脚本正是为这个场景设计的对单个输出通道注入指数 chirp频率随时间指数增长信号以约 200 Hz 的循环速率实时生成波形并驱动通道见 actuator_chirp.lua 中return update, 5 -- 200Hz实时通过 MAVLinkNAMED_VALUE_FLOAT消息广播激励频率、输出 PWM 和执行器反馈供地面站在线观察同时将三者写入 dataflash 日志ESC 用ECRP、舵机用SCRP消息供离线分析。需要特别强调的是这是一个台架实验工具文档明确指出脚本在飞机解锁armed状态下不会自动停止扫频。虽然ACHRP_CHAN在启动时会被强制复位为 0见下文保证扫频永远不会自动开始但在使用前必须拆除螺旋桨或断开连杆机构确保安全。参数体系9 个 ACHRP_ 参数详解脚本启动时通过param:add_table/param:add_param注册了一张名为ACHRP_的参数表表键 137见 actuator_chirp.lua。以下表格完整列出全部参数默认值与取值范围直接取自脚本源码中的参数定义注释。参数默认值取值范围/单位含义ACHRP_CHAN00~32无单位要驱动的舵机/电调输出通道号1 起始。设为通道号即开始扫频设为 0 即停止启动时自动复位为 0扫频完成后自动写回 0ACHRP_PWM_MIN1300800~2200PWM波形下 PWM 边界与ACHRP_PWM_MAX共同决定扫频波形的中心点与幅值ACHRP_PWM_MAX1600800~2200PWM波形上 PWM 边界ACHRP_F_START0.50.05~200Hz扫频起始频率正式扫频前会自动加入一段该频率的恒频驻留dwellACHRP_F_STOP200.05~500Hz扫频终止频率必须大于等于起始频率ACHRP_F_FADE_IN50~30s扫频开始时幅值从零线性实际为余弦窗爬升到全幅所需时间ACHRP_F_FADE_OUT10~30s扫频结束时幅值回落到零所需时间ACHRP_TIME601~600s总扫频时长包含初始驻留、fade-in 与 fade-out 全程ACHRP_TYPE00:ESC1:Servo被测执行器类型决定反馈量是电调 RPM 还是舵机位置关于参数实现细节从源码可见所有参数均在启动阶段绑定并强制set_and_save(0)actuator_chirp.lua这是扫频永不自动开始的机制保证ACHRP_PWM_MIN/MAX并非直接输出而是先算出中点pwm_mid与半幅值pwm_mag再叠加归一化波形pwm floor(pwm_mid pwm_mag * chirp_output)actuator_chirp.lua因此实际激励是围绕中点 PWM 的对称振荡振荡幅值恰为(PWM_MAX - PWM_MIN)/2初始驻留时长由脚本自动计算为2.0 / ACHRP_F_STARTactuator_chirp.lua即在起始频率下停留约两个完整周期无需用户设置。信号生成原理指数扫频与窗函数脚本核心在chirp:init与chirp:update两个函数中actuator_chirp.lua。其信号设计有四个要点指数扫频以角频率wMin 2π·F_START、wMax 2π·F_STOP为界令B ln(wMax/wMin)瞬时频率随归一化时间expFactor指数增长w wMin·exp(B·expFactor)。指数而非线性扫频保证每个倍频程占据相同的时间长度更符合伺服系统的对数频率标度习惯。恒频驻留扫频正式开始前先在wMin上驻留2/F_START秒time const_freq分支让执行器建立初始稳态。窗函数抑制暂态为避免阶跃激励带来的瞬态冲击幅值按余弦窗形状爬升/回落——fade-in 段使用0.5 - 0.5·cos(π·t/fade_in)fade-out 段使用对称的余弦回落actuator_chirp.lua。这是工程上经典的 Tukey/Hann 类窗口思路能显著改善频响测量质量。相位连续扫频段的正弦相位用解析积分式term (wMin·(record - const_freq)/B)·(exp(B·expFactor) - 1)计算保证相位在驻留段与扫频段之间连续过渡。当前瞬时频率通过chirp:get_frequency_hz()随时可取并被写入日志的Freq字段与实时FREQ命名浮点数。实时遥测NAMED_VALUE_FLOAT 在线观察每周期脚本会调用gcs:send_named_float广播以下命名浮点数actuator_chirp.luaFREQ当前激励频率HzPWM当前输出 PWM 值RPM仅当ACHRP_TYPE0ESC时发送来自电调遥测的转速esc_telem:get_rpm(chan-1)无数据时为 -1POS仅当ACHRP_TYPE1舵机时发送来自舵机遥测的实测位置servo_telem:get_telem(chan):measured_position()无数据时为 -1。地面站可直接观察这些命名浮点值实时确认扫频是否在按预期进行。相关 API 的签名可在 AP_Scripting 文档 中查到例如esc_telem:get_rpm(instance)0 起始的实例号、servo_telem:get_telem(servo_index)、gcs:send_named_float(name, value)。部署与操作步骤安装与加载将 actuator_chirp.lua 复制到飞控 microSD 卡的APM/SCRIPTS目录置SCR_ENABLE为 1 并重启飞控若安装成功地面站消息区应出现ActuatorChirp loaded。台架准备ESC 测试确认目标通道的电调遥测ESC telemetry工作正常RPM 反馈可用。注意许多 DroneCAN 电调只在解锁armed状态下驱动电机因此要么在测试期间解锁要么在电调设置中关闭该要求舵机测试舵机必须能通过舵机遥测servo telemetry例如 DroneCAN 舵机提供实测位置反馈安全措施拆除螺旋桨/断开连杆仅在台架上使用。参数设置与启停将ACHRP_PWM_MIN、ACHRP_PWM_MAX设为对被测设备安全的 PWM 边界用ACHRP_F_START、ACHRP_F_STOP、ACHRP_TIME选择扫频范围与时长按执行器类型设置ACHRP_TYPE开始把ACHRP_CHAN设为目标输出通道号1 起始脚本会发送 Chirp starting 消息并开始扫频结束扫频完成时打印 Chirp finished 并把ACHRP_CHAN自动写回 0也可随时手动把ACHRP_CHAN设为 0 提前停止此时打印 Chirp stopped。从源码看运行时状态机由run_chirp()驱动actuator_chirp.lua通道号为 0 时停止complete标志置位时收尾复位首次运行chirp.running false时初始化扫频参数并记录t_start_us作为时间基准。输出使用SRV_Channels:set_output_pwm_chan_timeout(chan-1, pwm, 100)API 文档即以 100 ms 超时持续覆盖该通道的 PWM——这正是脚本在解锁时仍能驱动输出的原因也再次印证了必须台架使用、杜绝螺旋桨的安全警告。数据记录与离线频响分析扫频全程的数据被写入飞控 dataflash 日志执行器类型日志消息字段ESCACHRP_TYPE0ECRPPWM, Freq, RPM舵机ACHRP_TYPE1SCRPPWM, Freq, Pos写入由logger:write(...)完成actuator_chirp.lua 与 L235日志格式为fff三个 float。其中Freq字段是当前激励频率HzPWM是激励量RPM/Pos是被测执行器的响应。分析方法用地面站日志查看器或 Mission Planner 的绘图功能将反馈量RPM 或 Pos对Freq作图即可得到该执行器的幅频响应估计通过观察响应随频率升高而衰减的转折点可以近似确定其带宽。文档特别建议保持幅值适中即让PWM_MIN到PWM_MAX的跨度尽量小使激励始终落在线性区间避免大摆幅下执行器的非线性如死区、饱和、限位污染测量结果。典型场景与限制典型用法电调 电机的带宽测量配合 RPM 遥测、DroneCAN 舵机的位置响应测量必要条件无论 ESC 还是舵机都必须具备对应的遥测反馈通道否则RPM/Pos恒为 -1无法形成有意义的响应曲线安全边界脚本不会因解锁状态自动停止扫频输出通过带超时的 PWM 覆盖实现务必在台架、无螺旋桨/断开连杆的条件下使用启动保护ACHRP_CHAN启动即复位为 0 并保存扫频完成后自动归零杜绝意外自动启动。如果需要更多脚本化激励的参考写法仓库中还提供了类似的示例例如 plane-doublets.lua飞机副翼双脉冲激励等可与本脚本对照阅读加深对 ArduPilot 脚本驱动舵机输出与遥测回读机制的理解。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考