新闻详情

新闻详情

首页 / 资讯中心 / 详情

PX4-Autopilot 中 ActuatorArmed uORB 消息详解:解锁/预解锁/锁定与终结状态的完整机制

发布时间:2026/11/12 6:10:30来源:尧图网络
PX4-Autopilot 中 ActuatorArmed uORB 消息详解:解锁/预解锁/锁定与终结状态的完整机制
嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载本技术指南围绕 PX4-Autopilot 飞控固件中的actuator_armeduORB 主题消息类型ActuatorArmed展开系统梳理其字段语义、发布链路、消费方行为以及在地面站MAVLink HEARTBEAT、着陆检测、控制分配器等模块中的实际作用。阅读本文后你将掌握 PX4 解锁armed、预解锁prearmed、待解锁ready_to_arm、锁定lockdown、急停kill、终结termination与 ESC 标定模式in_esc_calibration_mode这七种安全状态标志的完整来龙去脉并能在源码层面追踪一条状态位从Commander发布到下游模块消费的全过程。一、消息概述一行状态广播承载整套飞控安全语义ActuatorArmed是 PX4 中使用最频繁、语义最关键的 uORB 消息之一。它以单一主题actuator_armed对外广播用一组紧凑的布尔字段描述飞行控制器当前处于何种武装/安全状态是连接飞行控制状态机Commander与底层输出/安全执行单元电机驱动、舵机输出、HEARTBEAT 上报等的枢纽。消息原始定义位于仓库 msg/ActuatorArmed.msg对应的自动生成文档为 docs/en/msg_docs/ActuatorArmed.md。消息本体十分精简——除时间戳外全部为bool字段但正是这 7 个布尔位协同描述了从上电待机到空中紧急终结的完整状态谱系。uint64 timestamp # time since system start (microseconds) bool armed # Set to true if system is armed bool prearmed # Set to true if the actuator safety is disabled but motors are not armed bool ready_to_arm # Set to true if system is ready to be armed bool lockdown # Set to true if actuators are forced to being disabled (due to emergency or HIL) bool kill # Set to true if manual throttle kill switch is engaged bool termination # Send out failsafe (by default same as disarmed) output bool in_esc_calibration_mode # IO/FMU should ignore messages from the actuator controls topics二、字段详解七个布尔位的完整语义名称类型单位 [Frame]范围/枚举描述timestampuint64系统启动以来的时间微秒armedbool为 true 表示系统已解锁armedprearmedbool为 true 表示作动器安全已解除但电机未解锁ready_to_armbool为 true 表示系统已准备好可以被解锁lockdownbool为 true 表示作动器被强制禁用因紧急情况或 HILkillbool为 true 表示手动油门急停开关kill switch已触发terminationbool发送故障安全输出默认与解锁状态相同in_esc_calibration_modeboolIO/FMU 应忽略来自 actuator controls 主题的消息各字段逐一解读如下timestamp毫秒级语义、微秒级精度的时间戳用于下游模块判断消息新鲜度与做时序对齐。armed核心标志true 表示电机可通电、动力输出激活。所有依赖电机运转的功能如推力测试、自动起飞都以此位为前置条件。prearmed中间安全态——作动器安全如舵机、电机调谐输出已解除但电机仍不上电。典型场景是地面调参、舵面测试此时允许非动力作动器动作而不允许电机旋转。ready_to_arm告知地面站一切就绪、可以解锁的绿灯信号通常与预飞检查preflight checks结果绑定。lockdown强制禁用作动器的硬性状态用于紧急降落伞触发后的保护、或 HIL硬件在环仿真时避免真实输出。kill由用户手动急停开关触发优先级极高无论是否在飞行中都会立即切断动力。termination系统进入终结termination导航状态时置位触发故障安全输出默认情况下输出与未解锁等价即全部作动器归零/失效。in_esc_calibration_modeESC 电调标定模式标志。置位期间 IO/FMU 必须忽略 actuator controls 主题发来的指令防止标定过程中输出被飞行控制指令污染。三、生产者视角Commander 状态机如何填充这些位actuator_armed的唯一权威发布者是Commander模块其核心循环位于 src/modules/commander/Commander.cpp 的run()方法中。每轮循环末尾约第 2124–2144 行Commander 将当前内部状态逐位映射到消息字段// update actuator_armed _actuator_armed.armed isArmed(); _actuator_armed.prearmed getPrearmState(); _actuator_armed.ready_to_arm _vehicle_status.pre_flight_checks_pass || isArmed(); _actuator_armed.lockdown _multicopter_throw_launch.isThrowLaunchInProgress(); // _actuator_armed.kill // action_request_s::ACTION_KILL _actuator_armed.termination (_vehicle_status.nav_state _vehicle_status.NAVIGATION_STATE_TERMINATION); // _actuator_armed.in_esc_calibration_mode // VEHICLE_CMD_PREFLIGHT_CALIBRATION从这里可以读出源码级的确切赋值关系armed直接取自isArmed()即 Commander 内部的上锁状态机。prearmed取自getPrearmState()。ready_to_arm与_vehicle_status.pre_flight_checks_pass绑定——预飞检查通过即可置位已解锁时恒为 true。预飞检查由 src/modules/commander/HealthAndArmingChecks/ 目录下的 batteryCheck、estimatorCheck、manualControlCheck 等子检查共同完成。lockdown在**多旋翼抛掷起飞throw launch**进行期间被置位_multicopter_throw_launch.isThrowLaunchInProgress()实现抛掷阶段输出锁定。termination与NAVIGATION_STATE_TERMINATION导航状态直接挂钩。3.1 kill 标志的写入路径kill位不直接由上述赋值产生而是通过ActionRequest消息msg/ActionRequest.msg中的ACTION_KILL/ACTION_UNKILL动作触发。在 executeActionRequest() 中收到ACTION_KILL且当前未处于 kill 状态时置_actuator_armed.kill true若已离地非 landed日志级别升级为 Critical。收到ACTION_UNKILL时清除该位并记录 Kill disengaged。3.2 ESC 标定模式的写入路径in_esc_calibration_mode由VEHICLE_CMD_PREFLIGHT_CALIBRATION指令ESC 标定子命令控制对应 Commander 约第 1531 行_actuator_armed.in_esc_calibration_mode true;的置位以及第 2453 行标定完成后的复位。实际标定流程实现在 src/modules/commander/esc_calibration.cpp 的do_esc_calibration()中先提示断开电池、检测电流变化确认电调接入再执行标定整个过程中该标志保持置位以屏蔽正常控制输出。3.3 发布节奏2 Hz 基线 变化即发Commander 采用节流 事件触发双机制发布Commander.cpp 第 2138–2144 行if ((now _vehicle_status.timestamp 500_ms) || _status_changed || nav_state_or_failsafe_changed || !(_actuator_armed actuator_armed_prev)) { // publish actuator_armed first (used by output modules) _actuator_armed.timestamp hrt_absolute_time(); _actuator_armed_pub.publish(_actuator_armed); ... }即平时以2 Hz低频周期发布以保持心跳一旦任意状态位变化与上一次发布的副本actuator_armed_prev比较见第 2002 行或导航状态/故障安全状态变化则立即发布。这也解释了为何该消息既是状态也是事件——下游模块只需订阅它即可同时获得周期性状态快照和即时变化通知。四、消费者视角各模块如何使用这些状态位4.1 MAVLink HEARTBEAT把安全状态上报给地面站地面站看到的是否解锁信息并非直接来自actuator_armed而是由 MAVLink 流 src/modules/mavlink/streams/HEARTBEAT.hpp 订阅该消息并映射为 HEARTBEAT 报文中的系统状态标志actuator_armed_s actuator_armed{}; _acturator_armed_sub.copy(actuator_armed); ... // 第 114 行附近in_esc_calibration_mode 参与 armed 状态合成 || actuator_armed.in_esc_calibration_mode) { ... } // 第 122-123 行termination / kill / lockdown 参与故障标志合成 if (actuator_armed.termination || actuator_armed.kill || (actuator_armed.lockdown vehicle_status.hil_state vehicle_status_s::HIL_STATE_OFF)) { ... }可见 HEARTBEAT 将termination、kill置位视为故障/紧急状态上报而lockdown仅在非 HILHIL_STATE_OFF时才算作故障——HIL 仿真中的 lockdown 属于预期行为不应误报。in_esc_calibration_mode则被计入地面站理解的已解锁条件确保标定期间地面站显示与飞控实际输出策略一致。4.2 着陆检测器armed 决定检测前提src/modules/land_detector/LandDetector.cpp 第 96–99 行订阅actuator_armed并取出armed位作为着陆判定输入的组成部分确保只在系统真正解锁、具备动力输出的语境下进行着陆/触地状态估计。4.3 控制分配预检armed/prearmed 作为作动器测试门槛控制分配器的 ActuatorGroupPreflightCheck.cpp 在作动器测试如推力测试、舵面测试前读取该消息**推力类测试thrust**要求actuator_armed.armed true否则返回thrust test requires armed**力矩/倾斜类测试torque/tilt**放宽为prearmed || armed不满足则返回not (pre)armed测试执行期间一旦前置条件丢失armed_requirement_lost/prearmed_requirement_lost会立即取消测试防止动力意外输出第 148–164 行。这体现了 prearmed 的实用价值允许舵机/倾斜机构动作而禁止电机旋转恰好覆盖地面标定与测试场景。4.4 其他下游消费方从源码搜索可见actuator_armed还被 src/modules/logger/logged_topics.cpp 收录进默认日志主题飞行日志中可直接回看该消息的时序并被 src/modules/mavlink/mavlink_receiver.h、src/modules/mavlink/streams/VFR_HUD.hpp 等引用用于同步地面站显示与机上状态。五、典型状态迁移与工程实践综合上述字段与生产/消费链路可归纳出几个典型状态组合场景armedprearmedready_to_armlockdownkilltermination上电待机、预飞检查未通过falsefalsefalsefalsefalsefalse预飞检查通过、等待解锁falsefalsetruefalsefalsefalse舵面测试/调参电机不动falsetruetruefalsefalsefalse正常飞行解锁truetruetruefalsefalsefalse手动急停触发falsefalsefalsefalsetruefalse多旋翼抛掷起飞锁定输出falsefalsefalsetruefalsefalse系统终结故障安全falsefalsefalsefalsefalsetrue工程实践要点调试排障时优先读ready_to_arm若地面站显示无法解锁先检查预飞检查失败项对应_vehicle_status.pre_flight_checks_pass而非盲目怀疑电机/电调硬件。ESC 标定期间留意in_esc_calibration_mode该位置位时 IO/FMU 会忽略 actuator controls 指令若标定流程异常退出导致该位残留控制输出会被屏蔽——可通过重启或重新执行标定流程复位。HIL 仿真中 lockdown 不算故障HEARTBEAT 上报逻辑已按HIL_STATE_OFF区分仿真环境出现 lockdown 属于正常保护行为不必视为异常。日志分析由于actuator_armed默认进日志飞行事故复盘时应结合该消息的kill、termination、lockdown位时间戳与 src/modules/commander/failsafe/ 的故障安全状态机日志交叉验证事件先后顺序。六、小结与延伸阅读ActuatorArmed以 7 个布尔位 1 个时间戳的极简结构承载了 PX4 从地面待机到空中终结的整套安全语义Commander 是唯一生产者2 Hz 周期 变化即发HEARTBEAT、LandDetector、ControlAllocator 预检、Logger 等模块各取所需。理解这一消息的字段与流转是排查解锁失败、急停失效、输出屏蔽等飞控问题的第一步。延伸阅读路径消息原始定义msg/ActuatorArmed.msg自动生成的字段文档docs/en/msg_docs/ActuatorArmed.md生产者核心循环src/modules/commander/Commander.cppMAVLink 上报src/modules/mavlink/streams/HEARTBEAT.hpp控制分配预检src/modules/control_allocator/ActuatorGroupPreflightCheck.cpp着陆检测src/modules/land_detector/LandDetector.cppESC 标定流程src/modules/commander/esc_calibration.cpp赞分享嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载相关推荐PX4-Autopilot uORB 消息详解ActuatorServosV0actuator_servos_v0舵机归一化控制消息PX4 Autopilot uORB 消息详解ActuatorServosV0actuator_servos_v0舵机归一化控制消息 ActuatorSe嵌入式物联网机器人自动驾驶智能硬件LangChain4j 官方文档站搭建指南基于 Docusaurus 的构建与本地开发全流程LangChain4j 官方文档站搭建指南基于 Docusaurus 的构建与本地开发全流程 本文是 LangChain4j 项目官方文档站docs 目录嵌入式物联网机器人自动驾驶智能硬件PX4-Autopilot 上电、解锁与预解锁配置完全指南从安全状态机到参数实战PX4 Autopilot 上电、解锁与预解锁配置完全指南从安全状态机到参数实战 本篇技术指南聚焦 PX4 Autopilot 的 Arm解锁/ Disa嵌入式物联网机器人自动驾驶智能硬件上一篇Aufgetretene Fehler已遇错误下一篇[主题]: Research Report创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉