尧图精选

PX4 Autopilot 载荷与相机系统实战指南:从任务触发到通用执行器控制

🕒 发布时间:2026/10/2 2:21:44 📁 来源:尧图网络
嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载本指南系统讲解 PX4 Autopilot 对机载载荷Payload的完整支持体系载荷如何接入飞控输出、如何在任务Mission中自动触发、如何通过遥控器RC、摇杆Joystick或地面站经由 MAVLink/MAVSDK 命令手动控制以及相机、云台Gimbal、抓手Gripper等典型载荷的具体配置方法。读完本文你将掌握载荷应用场景选型、相机触发参数配置、投递任务规划以及通用执行器控制Generic Actuator Control的完整实战方案。载荷接入与控制通路总览在 PX4 中**载荷Payload**指无人机为满足用户或任务目标而携带的设备涵盖各类相机、货物、仪器仪表等。PX4 支持范围广泛的载荷类型其核心接入方式是将载荷连接到 飞控输出Flight Controller Outputs如电机/舵机/执行机构输出然后通过以下三种方式触发任务中自动触发在 QGroundControl 中规划任务项飞行器到达指定航点后自动执行如拍照、投放包裹手动触发通过 RC 遥控器通道或 Joystick 摇杆按钮实时控制地面站命令触发通过 MAVLink/MAVSDK 命令如MAV_CMD_DO_SET_ACTUATOR、MAV_CMD_DO_GRIPPER、相机触发命令等由地面站软件或外部程序发起。这一统一输出、多路触发的架构使 PX4 能够在不改动飞行栈核心的前提下灵活适配从测绘相机到农业喷洒泵的各种载荷硬件。典型载荷应用场景与选型思路PX4 文档将常见载荷应用归纳为四大类见 载荷应用场景其选型核心是相机类走相机协议、机械类走抓手/通用执行器测绘无人机Mapping Drones测绘无人机按时间或距离间隔拍摄图像。PX4 支持两类相机通过 MAVLink 接入的相机 和 直接连接飞控输出的相机。两类相机都支持测绘场景但使用的 MAVLink 命令/任务项集合不同。货运无人机 / 包裹投递Cargo Drones货运无人机通常使用抓手Gripper、绞盘Winch等机构在目的地释放包裹。PX4 通过 抓手 支持任务内包裹投递抓手也可用MAV_CMD_DO_GRIPPERMAVLink 命令或 Joystick 按钮手动触发。规划与使用详见 包裹投递任务规划。绞盘等释放机构支持也在规划中。若你的投递硬件尚未集成可使用 通用执行器控制 先行驱动。侦察、搜索与救援Surveillance, Search Rescue侦察与搜救无人机需求与测绘类似但更强调对相机的独立控制拍照/录像、昼夜工作能力建议使用支持 MAVLink Camera Protocol 的 MAVLink 相机以获得拍照、录像、变焦、存储管理、多相机切换等能力并可通过 QGroundControl 手动控制或 MAVSDK 控制。直接连飞控输出的相机仅支持触发一般不适合搜救工作。农业无人机 / 喷洒Agricultural Drones农业应用作物健康测绘、病虫害检测、牲畜管理与测绘/搜救类似喷洒场景则需将喷洒泵作为 通用执行器 控制用 MAVLink 控制飞控输出接驳喷洒泵多数喷洒泵可启停泵部分还可调节流量或喷雾范围用 Survey 航线或航点定义喷洒区域并在航线前后插入 Set actuator 任务项 以启停喷洒。相机载荷三种集成方式的对比与选择相机是载荷中最常见的一类PX4 集成三种相机类型见 相机文档类型协议定位MAVLink 相机Camera Protocol v2推荐功能最全简易 MAVLink 相机Camera Protocol v1Simple Trigger兼容老相机连接飞控输出的相机Camera Protocol v1 子集仅触发成本最低MAVLink 相机推荐用于绝大多数场景若相机不支持该协议可在伴机Companion Computer上运行camera manager作为协议桥接。MAVLink 相机Camera Protocol v2推荐PX4 通过 MAVLink 相机文档 说明集成方式。相机基于 心跳/连接协议 被发现HEARTBEAT.type为MAV_TYPE_CAMERA随后可用MAV_CMD_REQUEST_MESSAGE请求CAMERA_INFORMATION消息通过其flags字段判断支持的CAMERA_CAP_FLAGS能力。相机额外参数可经相机定义文件CAMERA_INFORMATION.cam_definition_uri暴露但不能在任务中直接设置。PX4 允许在任务中使用以下 Camera Protocol v2 命令并在任务执行时以 MAVLink 命令形式重新发出MAV_CMD_IMAGE_START_CAPTURE/MAV_CMD_IMAGE_STOP_CAPTUREMAV_CMD_VIDEO_START_CAPTURE/MAV_CMD_VIDEO_STOP_CAPTUREMAV_CMD_SET_CAMERA_MODEMAV_CMD_SET_CAMERA_ZOOMMAV_CMD_SET_CAMERA_FOCUS其中前四个命令寻址到组件MAV_COMP_ID_CAMERA (100)模式/变焦/对焦命令发送给MAV_COMP_ID_ALL。需要说明的是PX4 当前忽略MAV_CMD_IMAGE_START_CAPTURE等消息中的目标相机id字段。Joystick 按钮也可映射为拍照/切换录像但不支持 RC 遥控器直接控制此类相机。端口配置将相机或伴机接到飞控空闲串口如TELEM2然后按 MAVLink 外设配置 配置将MAV_2_CONFIG指向该串口MAV_2_MODE设为2Onboard必要时将MAV_2_FORWARD置为启用以转发地面站通信。Camera Manager不支持 MAVLink 协议的相机可在伴机上运行 camera manager 桥接。通用方案包括 MAVLink Camera Manager基于 GStreamer 与 Rust-MAVLink 的跨平台服务与 Dronecode Camera Manager为 Linux 相机添加 Camera Protocol 接口也可用 MAVSDK 服务器插件自研SIYI A8 mini 相机 manager 即是一个可参考的实例此时需借助 mavlink-router 等工具在伴机上路由 MAVLink 流量。简易 MAVLink 相机Camera Protocol v1Camera Protocol v1 定义了一小组命令MAV_CMD_DO_TRIGGER_CONTROL、MAV_CMD_NAV_CMD_DO_DIGICAM_CONTROL、MAV_CMD_DO_SET_CAM_TRIGG_DIST、MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL、MAV_CMD_OBLIQUE_SURVEY、MAV_CMD_DO_CONTROL_VIDEO。由于协议无能力发现机制只能通过COMMAND_ACK判断相机是否支持某命令。PX4 以自动驾驶仪系统 ID、组件 ID 0寻址所有组件重发任务中的相机命令地面站通常将命令发给飞控PX4 会转发到onboard类型 MAVLink 通道并在每次触发拍照时发出CAMERA_TRIGGER。配置要点见 简易 MAVLink 相机文档TRIG_MODE4距离触发命令/勘测模式TRIG_INTERFACE3MAVLink若相机自身发出CAMERA_IMAGE_CAPTURED将CAM_CAP_REPORT设为0避免地面站重复上报禁用上报后仍会记录日志用于地理标记。连接飞控输出的相机FC-connected Camera相机可直接连接 PWM、GPIO 输出或通过 Seagull MAP2 转接由 camera_trigger 驱动 触发。其支持的 MAVLink 命令是 Camera Protocol v1 的子集任务与地面站均可使用命令说明MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL设置拍照时间间隔MAV_CMD_DO_SET_CAM_TRIGG_DIST设置拍照距离间隔MAV_CMD_DO_TRIGGER_CONTROL启停触发按距离或时间MAV_CMD_OBLIQUE_SURVEY启停倾斜摄影勘测MAV_CMD_DO_DIGICAM_CONTROL地面站试拍单帧MAV_CMD_DO_TRIGGER_CONTROL仅在命令控制模式TRIG_MODE1下接受参数 1 启停1 启用/0 禁用、参数 2 重置触发序列、参数 3 暂停不关机/不收相机。MAV_CMD_DO_DIGICAM_CONTROL在所有模式下接受触发驱动仅支持参数 5单次触发。触发模式TRIG_MODE模式行为0禁用相机触发1基础间隔计可由MAV_CMD_DO_TRIGGER_CONTROL启停2间隔计常开3距离触发超出行进距离即拍一张且受最小触发间隔限制4任务中执行勘测航线时自动触发首次启用相机触发应用后修改TRIG_MODE需重启飞控。触发接口后端TRIG_INTERFACE值后端说明1GPIOAUX 输出按TRIG_INTERVAL周期拉高/拉低取决于TRIG_POLARITY可直驱多数机器视觉相机注意 PX4FMU 系列 AUX 引脚为 3.3V2Seagull MAP2通过 MAP2 转接多种相机支持自动供电与 Sony Multiport如 QX-1保活3MAVLink旧版启用上节 MAVLink 命令接口任务中发现命令时自动在 onboard 通道发出4通用 PWM支持红外触发器或舵机触发引脚配置在 QGroundControl 的 Actuators 配置屏中为任一 FMU 输出分配Camera_Trigger功能MAP2 等双引脚方案可分配任意两个输出。若某个 PWM 输出用于触发该 PWM 组不能再用于其他功能定时器已被占用。目前触发仅在 FMU 引脚上工作带 FMUI/O 板的飞控如 Pixhawk 4、CUAV v5映射为AUX输出纯 FMU 板映射为MAIN输出。其他关键参数TRIG_POLARITY仅 GPIO 接口触发沿极性、TRIG_INTERVAL两次触发事件的毫秒间隔、TRIG_ACT_TIME引脚保持激活态时长PWM 模式下最小 40ms 以保证 50Hz PWM 信号中有完整脉冲。相机反馈Camera Capture设置CAM_CAP_FBACK1启用相机反馈引脚分配Camera_Capture功能相机通过热靴触点精确上报快门时刻用于地理标记或 VIO 同步。PX4 检测上升沿Pixhawk 通常 3.3V可通过热靴适配器如 Seagull SYNC2 光耦转接。PX4 在触发与反馈时都会发出CAMERA_TRIGGER消息配置反馈后使用反馈驱动的时间戳并默认向地面站上报CAMERA_IMAGE_CAPTURED由CAM_CAP_REPORT控制。触发功能可用camera_trigger test命令或在 QGroundControl 主仪表板点击Trigger Camera测试。云台Gimbal配置让相机指哪打哪PX4 内置通用云台/挂载控制驱动采用输入 输出双参数模型见 云台配置文档输入决定 PX4 以何种方式接收云台指令RC、MAVLink 或自动切换输出决定 PX4 如何驱动云台MAVLink v2 或 PWM 输出任意输入可驱动任意输出。输入MNT_MODE_IN推荐RC (1)、MAVlink gimbal protocol v2 (4)或Auto (0)Fixed attitude (5)用于固定姿态云台。选择输入模式后需重启以启动 mount 驱动。输出MNT_MODE_OUT默认AUX (0)PWM 端口云台支持 MAVLink Gimbal Protocol v2 时选MAVLink gimbal protocol v2 (2)云台自带 gimbal manager 时选Forward to external gimbal manager (3)第二个云台可用MNT_MODE_OUT2并行驱动。MAVLink 云台接任意空闲串口如TELEM2MAV_1_CONFIGTELEM2、MAV_1_MODEGimbal、MAV_1_FLOW_CTRLOff、MAV_1_FORWARDEnabled、SER_TEL2_BAUD厂商推荐波特率。外部 gimbal manager 场景下 PX4 作为该 manager 的客户端在有 onboard 输入时获取控制权、之后释放。PWM 输出云台则在 Actuators 配置屏为三个输出分配Gimbal Roll/Gimbal Pitch/Gimbal Yaw功能并用 Actuator Test 滑杆校准。固定姿态云台MNT_MODE_IN5保持世界坐标系姿态滚转/偏航水平、俯仰由MNT_FIXED_PITCH决定需设MNT_DO_STAB为Stabilize all axis (1)。任务中的云台命令如MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW目前全部发往 PX4 gimbal manager 管理的唯一云台云台运动非瞬时建议将MIS_COMMAND_TOUT设为大于云台全行程时间。调试可用 MAVLink 控制台执行gimbal status查看输入输出、gimbal test yaw 30测试运动、gimbal primary-control sys_id comp_id设置主控组件。货物投递抓手Gripper与投递任务PX4 自 v1.14 起支持基于抓手的包裹投递任务后续将扩展绞盘等硬件由payload_deliverer模块实现源码见 payload_deliverer.cpp模块通过订阅vehicle_command主题接收任务/手动指令并驱动抓手执行机构。启用与抓手类型确保板级配置启用 Payload Deliverer 模块CONFIG_MODULES_PAYLOAD_DELIVERERy设置PD_GRIPPER_TYPE匹配硬件PWM 舵机抓手或 DroneCAN EPM电永磁抓手设为Binary Grab/Release在 Actuators 配置 中将Gripper功能分配给抓手所连输出如 AUX5。源码中configure_gripper()依据PD_GRIPPER_TYPE初始化抓手实例当前反馈传感器类型固定为 NONE即暂不支持传感器反馈超时由PD_GRIPPER_TO秒换算为微秒后传入初始化成功后抓手默认进入抓取Grab位置。执行机构动作超时与任务命令超时由于多数抓手无传感器反馈PX4 用可配置超时判定抓手应该已打开/关闭在台架上拆掉桨叶实测开/关时间可在 QGC MAVLink Shell 运行payload_deliverer gripper_test若报[payload_deliverer] not running先payload_deliverer start或用摇杆触发开/关将PD_GRIPPER_TO设为开/关时间中较大者。任务层面为避免抓手未回报完成无反馈传感器、传感器损坏或 UORB 消息丢失导致任务卡死设置MIS_COMMAND_TOUT大于抓手动作超时作为兜底任务在未收到成功确认时按此超时继续。投递任务还应注意落地下投递时不要规划LAND GRIPPER RETURN TO LAUNCH着陆后 Return 模式被禁用任务中自动撤防默认关闭着陆投递期间飞行器保持 armed若在任务中手动命令抓手关闭会中断打开动作任务将在MIS_COMMAND_TOUT超时后继续。投递任务规划投递任务与普通航点任务类似但必须包含释放方式任务项Land落地释放或Waypoint空中释放与释放动作任务项Gripper Mechanism动作设为Release。落地释放通常更适合多旋翼/VTOL抓手无法安全降低包裹若已降落释放后的下一个任务项必须是Waypoint或Takeoff不能是Return。完整步骤与示例计划见 包裹投递任务。摇杆手动控制与 Pre-Arm 测试在 QGC 中通过Vehicle Setup Joystick Button Assignment将Gripper Open/Gripper Close映射到摇杆按钮即可在任何模式含任务中手动开合抓手若在抓手打开期间按Grab释放行为会被取消。RC 开关不支持直接控制抓手。建议将COM_PREARM_MODE设为Always启用预解锁模式此时电机保持禁用而抓手可活动便于安全装挂载荷预解锁模式同样适用于其他舵机类执行器的测试。通用执行器控制Generic Actuator Control当载荷没有对应的 MAVLink 命令或 PX4 尚未提供专门集成时可将任意硬件接到空闲 PX4 输出用 RC 或 MAVLink 控制见 通用执行器控制文档。仍建议优先使用已集成硬件如抓手——集成硬件让任务系统了解触发耗时等关键信息可优化任务规划与行为。通过 MAVLink 控制MAV_CMD_DO_SET_ACTUATOR可一次设置最多 6 个执行器在 Actuators 配置屏将Peripheral via Actuator Set 1至Peripheral via Actuator Set 6分配给目标输出命令的param1~param6分别对应这 6 个输出。例如把Peripheral via Actuator Set 1分配给AUX5则设置param1即可控制 AUX5 上的执行器。通过 RC 通道控制最多 6 个 PWM/CAN 输出可用 RC 通道控制将RC AUX 1至RC AUX 6分配给目标输出再用同名参数RC_MAP_AUXn把某个 RC 通道映射到对应的RC AUX n。例如将输出功能RC AUX 5分配给AUX3引脚然后设置RC_MAP_AUX5即可用该 RC 通道控制 AUX3。在任务中使用先按 MAVLink 方式配置好输出再在 QGroundControl 中把航点任务项改为Set actuator任务项编辑器头部进入Select Mission Command选Advanced Set actuator为连接的执行器设置归一化到 [-1, 1] 的值。注意通用执行器控制下QGC 与 PX4 都不了解硬件本身——处理任务项时 PX4 只是设置输出值并立即进入下一任务项若硬件需要激活时间必须在任务中额外规划停顿项。MAVSDK 示例脚本MAVSDK 的 Action 插件提供set_actuator()方法其索引值对应为机型定义的 MAVLink 载荷输出内部即发送MAV_CMD_DO_SET_ACTUATOR。以下示例演示触发载荷释放连接仿真器可用udp://:14540#include mavsdk/mavsdk.h #include mavsdk/plugins/action/action.h #include chrono #include cstdint #include iostream #include future using namespace mavsdk; void usage(const std::string bin_name) { std::cerr Usage : bin_name connection_url actuator_index actuator_value\n Connection URL format should be :\n For TCP : tcp://[server_host][:server_port]\n For UDP : udp://[bind_host][:bind_port]\n For Serial : serial:///path/to/serial/dev[:baudrate]\n For example, to connect to the simulator use URL: udp://:14540\n; } int main(int argc, char** argv) { if (argc ! 4) { usage(argv[0]); return 1; } const std::string connection_url argv[1]; const int index std::stod(argv[2]); const float value std::stof(argv[3]); Mavsdk mavsdk; const ConnectionResult connection_result mavsdk.add_any_connection(connection_url); if (connection_result ! ConnectionResult::Success) { std::cerr Connection failed: connection_result \n; return 1; } std::cout Waiting to discover system...\n; auto prom std::promisestd::shared_ptrSystem{}; auto fut prom.get_future(); // We wait for new systems to be discovered, once we find one that has an // autopilot, we decide to use it. mavsdk.subscribe_on_new_system([mavsdk, prom]() { auto system mavsdk.systems().back(); if (system-has_autopilot()) { std::cout Discovered autopilot\n; // Unsubscribe again as we only want to find one system. mavsdk.subscribe_on_new_system(nullptr); prom.set_value(system); } }); // We usually receive heartbeats at 1Hz, therefore we should find a // system after around 3 seconds max, surely. if (fut.wait_for(std::chrono::seconds(3)) std::future_status::timeout) { std::cerr No autopilot found, exiting.\n; return 1; } // Get discovered system now. auto system fut.get(); // Instantiate plugins. auto action Action{system}; std::cout Setting actuator...\n; const Action::Result set_actuator_result action.set_actuator(index, value); if (set_actuator_result ! Action::Result::Success) { std::cerr Setting actuator failed: set_actuator_result \n; return 1; } return 0; }载荷测试与安全实践预解锁Pre-Arm状态测试由舵机/执行机构触发的载荷如抓手可在预解锁状态测试——电机保持禁用但执行机构可活动比武装状态测试更安全COM_PREARM_MODE设为Always即可始终启用。相机随时可测相机载荷可在任何时刻触发与测试不受解锁状态限制。命令行测试payload_deliverer gripper_test测试抓手开合时序camera_trigger test测试相机触发gimbal status/gimbal test axis value测试云台。综上PX4 的载荷体系以飞控输出 任务/RC/MAVLink 多路触发为骨架覆盖相机三种协议接入、云台、抓手与通用执行器四类典型载荷开发者既可选用现成集成方案也可借助MAV_CMD_DO_SET_ACTUATOR与 MAVSDK 快速驱动任意自定义硬件。赞分享嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载相关推荐PX4 Autopilot 任务系统完全指南从 QGC 规划、可行性校验到自主飞行执行PX4 Autopilot 任务系统完全指南从 QGC 规划、可行性校验到自主飞行执行 任务Mission是 PX4 Autopilot 中最常用的自主飞嵌入式物联网机器人自动驾驶智能硬件从传感器到执行器PX4-Autopilot控制回路全链路解析从传感器到执行器PX4 Autopilot控制回路全链路解析 PX4 Autopilot作为开源无人机飞控系统的核心其控制回路是实现稳定飞行的关键。本文将深嵌入式物联网机器人自动驾驶智能硬件PX4 机载应用开发入门实战从 Hello Sky! 到 uORB 订阅与发布基于 PX4-AutopilotPX4 机载应用开发入门实战从 Hello Sky! 到 uORB 订阅与发布基于 PX4 Autopilot 本篇技术指南以 PX4 Autopil嵌入式物联网机器人自动驾驶智能硬件上一篇gogcli 终端更新 Google Sheets 单元格gog sheets update 命令全解析与实战下一篇深度解析 radix-vue YearPickerGrid年份选择网格的渲染、组合与无障碍实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →