首页/新闻资讯/正文详情

PX4 CameraTrigger uORB 消息详解:相机触发信号的定义、生成与消费链路

发布时间:2026/9/27 8:26:08 来源:云帆数科 栏目:资讯中心
PX4 CameraTrigger uORB 消息详解:相机触发信号的定义、生成与消费链路
嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载CameraTrigger 是 PX4 飞控中用于发布相机拍摄触发事件的核心 uORB 主题TOPIC 名为camera_trigger它贯穿相机触发驱动的输出、相机热靴反馈的采集以及 MAVLinkCAMERA_TRIGGER消息的下行转发。本文以 docs/en/msg_docs/CameraTrigger.md 中的消息定义为骨架结合 camera_trigger 驱动、camera_capture 驱动、camera_feedback 模块 与 MAVLink 流 的源码实现完整说明该消息的每个字段含义、生产/消费链路以及航测与地理标记geotagging场景下的实际配置方法。CameraTrigger 消息定义总览消息源文件为 msg/CameraTrigger.msg其完整定义如下uint64 timestamp # time since system start (microseconds) uint64 timestamp_utc # UTC timestamp uint32 seq # Image sequence number bool feedback # Trigger feedback from camera uint32 ORB_QUEUE_LENGTH 2消息共包含 4 个数据字段和 1 个队列长度常量原始字段表格见 docs/en/msg_docs/CameraTrigger.md。字段名类型单位/帧说明timestampuint64微秒系统启动以来的时间time since system start由hrt_absolute_time()获取timestamp_utcuint64微秒UTC 时间戳用于事后将航拍照片与地理/时间信息关联sequint32—图像序列号从 0 开始逐次递增用于对齐照片顺序feedbackbool—是否为来自相机的触发反馈Trigger feedback from camera该消息对应的生成头文件为uORB/topics/camera_trigger.h由构建系统从 .msg 自动生成uORB 发布端与订阅端分别使用ORB_ID(camera_trigger)引用该主题。ORB_QUEUE_LENGTH 常量的作用消息定义中uint32 ORB_QUEUE_LENGTH 2为 uORB 主题队列深度常量表示该主题的环形发布队列最多缓存 2 条历史消息。队列深度为 2 意味着即使消费者如 camera_feedback 模块 与 MAVLink 流处理稍慢也仍能读到最近的两条触发事件降低高触发频率下丢事件的概率从源码结构看camera_trigger在定时触发intervalometer模式下以TRIG_INTERVAL为周期持续产生消息较短队列深度配合快速消费端即可满足需求避免不必要的内存占用。谁在发布 CameraTrigger两种生产者从 PX4 Camera Architecture/Integration 的架构说明可以看出CameraTrigger主题存在两类生产者二者的区分标志正是feedback字段。生产者一camera_trigger 驱动指令侧触发feedbackfalsecamera_trigger 驱动 订阅VehicleCommand主题响应四类 MAVLink 触发命令MAV_CMD_DO_TRIGGER_CONTROL使能/暂停触发、复位序列号MAV_CMD_DO_DIGICAM_CONTROL单次拍摄MAV_CMD_DO_SET_CAM_TRIGG_DIST距离触发MAV_CMD_OBLIQUE_SURVEY倾斜摄影CAMPOS 模式当按时间间隔或距离阈值判定应触发时驱动通过engage()回调实际驱动相机接口GPIO/PWM/Seagull/MAVLink 后端随后发布camera_trigger消息。关键发布代码camera_trigger.cpp体现了几点实现细节// Send camera trigger message. This messages indicates that we sent // the camera trigger request. Does not guarantee capture. camera_trigger_s trigger{}; if (trig-_pps_hrt_timestamp 0) { // Current RTC time (RTC time captured by the PPS module elapsed time since capture) trigger.timestamp_utc trig-_pps_rtc_timestamp hrt_elapsed_time(trig-_pps_hrt_timestamp); } else { // No PPS capture received, use RTC clock as fallback timespec tv{}; px4_clock_gettime(CLOCK_REALTIME, tv); trigger.timestamp_utc ts_to_abstime(tv); } trigger.seq trig-_trigger_seq; trigger.feedback false; trigger.timestamp hrt_absolute_time(); orb_publish(ORB_ID(camera_trigger), trig-_trigger_pub, trigger); // increment frame count trig-_trigger_seq;该段代码对应的消息字段语义timestamp使用高分辨率定时器hrt_absolute_time()获取精度可达微秒级timestamp_utc优先采用 PPS 捕获模块pps_capture主题提供的 RTC 基准时间加上自捕获以来的流逝时间保证 UTC 时间与真实时刻严格对齐未收到 PPS 时回退到CLOCK_REALTIME系统时钟seq使用驱动内部的_trigger_seq计数器每次发布后自增通过MAV_CMD_DO_TRIGGER_CONTROL的 param2 可复位为 0feedback恒为false表示这是飞控发出了触发请求并不保证相机确实完成了曝光。此外驱动还实现了快门激活时间与最小间隔的防护engage()在距离上次触发不足TRIG_MIN_INTERVA时会直接放弃本次触发camera_trigger.cpp避免过快连拍压垮相机。生产者二camera_capture 驱动热靴反馈侧feedbacktruecamera_capture 驱动 监听飞控上的相机捕获引脚捕获引脚通过将某个 AUX 输出通道功能配置为Camera_Capture功能码 2032来启用见 camera_capture.cpp。当相机热靴实际触发边沿事件时该驱动发布CameraTrigger消息并将feedback置为truefeedback true的消息代表相机确认了拍摄动作可用于校正记录到的真实曝光时刻从而提升地理标记geotagging精度该功能由CAM_CAP_FBACK参数控制开关默认关闭。谁在消费 CameraTriggerMAVLink 转发、反馈与日志MAVLink CAMERA_TRIGGER 消息下行MAVLink 流 CAMERA_TRIGGER.hpp 订阅camera_trigger主题并将其映射为 MAVLink 的CAMERA_TRIGGER消息对外发送。其发送逻辑CAMERA_TRIGGER.hpp/* ensure that only active trigger events are sent and ignore camera capture feedback messages*/ if (camera_trigger.timestamp 0 !camera_trigger.feedback) { mavlink_camera_trigger_t msg{}; msg.time_usec camera_trigger.timestamp; msg.seq camera_trigger.seq; mavlink_msg_camera_trigger_send_struct(_mavlink-get_channel(), msg);两点值得注意feedback true的反馈消息不会被转发为CAMERA_TRIGGERMAVLink 消息即热靴反馈仅用于飞控内部时间校正不会与下行触发消息混淆同一处还会向所有相机组件MAV_COMP_ID_CAMERA起 6 个保留组件 ID发送MAV_CMD_IMAGE_START_CAPTURE与MAV_CMD_DO_DIGICAM_CONTROL指令实现简单 MAVLink 相机的触发协议Camera Protocol v1。camera_feedback 模块生成地理标记用的 CameraCapturecamera_feedback 模块 订阅camera_trigger主题无论feedback为false还是true都会结合全局位置、姿态以及云台姿态生成并发布CameraCapture主题CameraFeedback.cpp其中CameraCapture.timestamp、timestamp_utc、seq直接透传自CameraTrigger额外补充纬度/经度/高度、对地距离、四元数姿态以及result1 表示成功等字段字段定义见 msg/CameraCapture.msg当CAM_CAP_FBACK 1时模块会忽略feedback false的指令侧触发只依据真实的热靴反馈feedback true生成捕获记录CameraFeedback.cpp。CameraCapture会被记录到 ulog 日志见 logged_topics.cpp 中的add_optional_topic(camera_capture)航测完成后即可离线将照片与飞行数据对齐。日志记录camera_trigger与camera_capture均为可选记录主题logged_topics.cpp在正常飞行记录中默认包含便于事后回放分析触发时序。完整数据流从命令到照片结合 camera_architecture.md 与上述源码CameraTrigger消息的完整生命周期如下地面站下达命令或任务中出现相机航点 → navigator 将任务项转为VehicleCommanduORB 消息发布参见 navigator_main.cpp 中publish_vehicle_command的实现camera_trigger驱动订阅VehicleCommand按TRIG_MODE时间/距离/命令模式计算触发时机并驱动 GPIO/PWM 等接口输出触发信号驱动发布CameraTriggerfeedback false→ MAVLink 流将其转为下行CAMERA_TRIGGER消息并转发拍摄指令给相机若启用CAM_CAP_FBACK相机热靴触发后camera_capture驱动发布CameraTriggerfeedback truecamera_feedback模块消费两类消息生成带位置/姿态的CameraCapture供日志记录与地理标记。feedback字段是区分飞控发出触发请求与相机确认完成拍摄的关键信号也是各消费端决定是否采信、是否转发、是否生成捕获记录的核心判据。配套配置参数与模块命令CameraTrigger消息本身只描述事件触发行为由 camera_trigger_params.yaml 中的TRIG_*系列参数决定均在修改后需要重启飞控生效参数默认值说明TRIG_INTERFACE4触发接口1GPIO2Seagull MAP2PWM3MAVLinkCamera Protocol v14通用 PWMIR 触发器/舵机TRIG_MODE0触发模式0禁用1时间触发/命令控制2时间触发/始终开启3距离触发/始终开启4距离触发/命令控制航测模式TRIG_INTERVAL40.0 ms连续两次触发事件的时间间隔范围 4.0–10000.0 msTRIG_MIN_INTERVA1.0 ms相机支持的最小触发间隔范围 1.0–10000.0 ms驱动会以此限速TRIG_DISTANCE25.0 m距离触发模式下触发相机的飞行距离阈值TRIG_ACT_TIME40.0 ms触发引脚保持激活状态的时长范围 0.1–3000 msPWM 模式下最低会被强制到 40 ms以保证 50 Hz PWM 周期内脉冲完整见 camera_trigger.cppTRIG_POLARITY0触发极性0低电平有效1高电平有效仅 GPIO 接口相关TRIG_PWM_SHOOT/TRIG_PWM_NEUTRAL1900 / 1500 µsPWM 接口下触发/中位脉宽输出值相机反馈侧由 camera_capture_params.yaml 中的CAM_CAP_*参数控制如CAM_CAP_FBACK启用反馈、CAM_CAP_MODE/CAM_CAP_EDGE配置捕获引脚触发方式。模块以标准 PX4 驱动方式启动与查询命令入口camera_trigger_main见 camera_trigger.cppcamera_trigger start # 启动触发驱动 camera_trigger status # 打印触发使能/暂停状态、模式、间隔/距离、相机电源与激活时间 camera_trigger test # 触发一张测试图像不记录日志、不转发给地面站 camera_trigger test_power # 切换相机电源 camera_trigger stop # 停止驱动更多相机使用与配置说明可参考 docs/en/camera/index.md 与 fc_connected_camera.md。小结CameraTrigger是 PX4 相机子系统中承上启下的核心消息timestamp与timestamp_utc提供微秒级、可对齐到 UTC 的时刻基准seq维护连续的照片序列号feedback则明确区分触发请求与拍摄反馈两种事件来源。理解该消息的定义与生产/消费链路是掌握 PX4 航拍触发、相机协议转发与航测地理标记数据流的关键一步如需深入可直接阅读 CameraTrigger.msg、camera_trigger.cpp、CAMERA_TRIGGER.hpp 与 CameraFeedback.cpp 等源码文件。赞分享嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载相关推荐如何快速上手tensorrt_demos10个步骤从零开始部署TensorRT模型如何快速上手tensorrt_demos10个步骤从零开始部署TensorRT模型 想要在NVIDIA Jetson平台上快速部署深度学习模型吗tensor嵌入式物联网机器人自动驾驶智能硬件SeleniumBase Desired Capabilities 完全指南远程 Selenium Grid 与云端浏览器配置实战SeleniumBase Desired Capabilities 完全指南远程 Selenium Grid 与云端浏览器配置实战 导读 本文基于 Selen嵌入式物联网机器人自动驾驶智能硬件PX4 uORB 消息 AirspeedValidatedV0 全解析字段语义、数据来源与下游消费链路PX4 uORB 消息 AirspeedValidatedV0 全解析字段语义、数据来源与下游消费链路 airspeed_validated_v0 是 PX4嵌入式物联网机器人自动驾驶智能硬件上一篇react-native-vector-icons 的 FontAwesome Pro Duotone Thin 字体包从 0.1.0 到 1.1.2 的演进、安装与使用指南下一篇Dgraph数据迁移后性能对比全面基准测试结果与优化指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

别再把它们搞混了!传统 AI vs Agent:一文讲透本质区别
别再把它们搞混了!传统 AI vs Agent:一文讲透本质区别

前言:一个真实场景,两种截然不同的结局 上周我让 AI 帮我做同一件事:“分析一下我们上季度的销售数据,找出下滑原因,出一份报告。” 传统 AI(ChatGPT 对话框)的结局: 我导出 CSV&… · 2026/9/27 8:25:56

创始人的认知进化:如何从“个人英雄主义”走向“组织化战斗力”实战
创始人的认知进化:如何从“个人英雄主义”走向“组织化战斗力”实战

创始人的认知进化:如何从“个人英雄主义”走向“组织化战斗力”实战在技术驱动型公司创立的最初期,创始人往往依赖强烈的**“个人英雄主义(Individual Heroism)”**完成破局: 创始人一个人身兼架构师、前端、后端、算法… · 2026/9/27 8:25:50

开源作者的自我修养:保持更新与长期主义
开源作者的自我修养:保持更新与长期主义

开源作者的自我修养:保持更新与长期主义在开源社区中,最常见的景象是:一个项目在刚发布的前两周万众瞩目,收获了数百上千个 Star;但三个月后,维护者的热情消退,仓库里堆满了无人理睬的 Issue&am… · 2026/9/27 8:25:50

Azure Data Studio 集成 Azure CLI(az):azcli 扩展的功能定位、配置项与源码实现剖析
Azure Data Studio 集成 Azure CLI(az):azcli 扩展的功能定位、配置项与源码实现剖析

数据库客户端桌面应用数据分析 【免费下载链接】azuredatastudio Azure Data Studio is a data management and development tool with connectivity to popular cloud and on-premises databases. Azure Data Studio supports Windows, macOS, and Linux, with immediate capa… · 2026/9/27 9:06:38

用 Terratest 为 Terraform SSH 基础设施编写自动化测试:terraform-ssh-example 模块实战解析
用 Terratest 为 Terraform SSH 基础设施编写自动化测试:terraform-ssh-example 模块实战解析

测试开发工具DevOps质量保障 【免费下载链接】terratest Terratest is a Go library that makes it easier to write automated tests for your infrastructure code. 项目地址: https://gitcode.com/gh_mirrors/te/terratest 点击查看 免费下载 本篇指南以仓库中的… · 2026/9/27 9:06:32

xiaobei(wiseflow)IT Engineer Agent 运维指南:环境变量、渠道绑定与排障流程全解析
xiaobei(wiseflow)IT Engineer Agent 运维指南:环境变量、渠道绑定与排障流程全解析

人工智能AI Agent大模型AI 应用媒体生成 【免费下载链接】xiaobei 为OPC/中小微企业量身打造的自媒体获客智能体 项目地址: https://gitcode.com/gh_mirrors/wi/xiaobei 点击查看 免费下载 导读 xiaobei(wiseflow)是 OpenClaw 的一个特制版… · 2026/9/27 9:06:32

Wand-Enhancer 免费解锁 Wand 专业版:三步完成完整实操指南
Wand-Enhancer 免费解锁 Wand 专业版:三步完成完整实操指南

Wand-Enhancer 免费解锁 Wand 专业版:三步完成完整实操指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand 把去广告、无限制游戏… · 2026/9/27 9:06:32

Sphinx 扩展开发必读:BuildEnvironment 构建环境 API 深度解析
Sphinx 扩展开发必读:BuildEnvironment 构建环境 API 深度解析

文档开发工具 【免费下载链接】sphinx The Sphinx documentation generator 项目地址: https://gitcode.com/gh_mirrors/sp/sphinx 点击查看 免费下载 本文以 Sphinx 官方扩展开发文档 doc/extdev/envapi.rst 为核心,结合当前仓库中 sphinx/environment… · 2026/9/27 9:06:26

FluentRead 完整设置指南:目标语言、翻译服务、界面布局与数据管理的配置实战
FluentRead 完整设置指南:目标语言、翻译服务、界面布局与数据管理的配置实战

前端AI 应用本地部署 【免费下载链接】FluentRead An open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。 项目地址: https://gitcode.com/gh_mirrors/fl/FluentRead 点击查看 免费下载 FluentRead 是一款开源的浏览器双语… · 2026/9/27 9:06:26

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码