PX4 参数写入
PX4 参数写入统一使用 MAVLinkPARAM_SET,但 Open Platform 不暴露 generic px4.parameter.set。每个可写参数都有自己的 named command、请求结构、响应结构和 PX4 catalog evidence,调用者只填写 payload.value 和可选 target override。
当前 PX4 catalog 来自 parameters.json/xml,共有 1873 个 QGroundControl 同款 named 参数,其中 FLOAT 1310 个、INT32 563 个、volatile 101 个。平台为每个参数生成固定 command type:
CBRK_USB_CHK 对应 px4.parameter.cbrk_usb_chk.set。调用者不能在 payload 中传 param_id,参数名永远由 command type 固定绑定。
查找参数
全量 set 目录
一张完整索引表,包含 1873 个 named set command
按 PX4 组查找
按 Commander、EKF2、MAVLink、Sensors 等 group 进入分组页面
读取参数
先读当前值,再决定是否写入
参数协议总览
查看 response、allowlist 和完成语义
Payload 模型
catalog-backed 参数写入使用固定字段:| PX4 形态 | payload 写法 | 校验 |
|---|---|---|
FLOAT | number | 类型、最小值、最大值 |
INT32 | integer | 类型、最小值、最大值 |
| enum | string | 必须命中 catalog values |
| boolean | boolean | 转成 PX4 INT32 |
| bitmask | { "bits": integer } | 必须只设置 catalog bits |
payload.value 的业务含义。例如 COM_RC_IN_MODE 的 value 是手动控制输入来源枚举,MPC_XY_VEL_MAX 的 value 是水平最大速度。详情页只是重点参数说明,不代表 catalog 只有这几个命令。
请求示例
重点参数详情页
| 参数 | command_type | 说明 |
|---|---|---|
COM_RC_IN_MODE | px4.parameter.com_rc_in_mode.set | 手动控制输入来源 |
MPC_XY_VEL_MAX | px4.parameter.mpc_xy_vel_max.set | 最大水平速度 |
CBRK_USB_CHK | px4.parameter.cbrk_usb_chk.set | USB 连接检查 circuit breaker |
EKF2_GPS_CTRL | px4.parameter.ekf2_gps_ctrl.set | GNSS 融合 bitmask |
MPC_Z_VEL_MAX_UP | px4.parameter.mpc_z_vel_max_up.set | 最大上升速度 |
安全规则
- 不允许发送
command_type=px4.parameter.set。 - 不允许在 payload 中提供
param_id、value_type、param1到param7。 - enum、boolean、bitmask、float、int32 都必须按 PX4 catalog 校验。
- 真实写入需要
PX4_COMMAND_MODE=guarded、显式授权、ready transport 和 operator guard。 PX4_PARAMETER_WRITE_ALLOWLIST必须包含该 named command 固定映射的 PX4 参数 ID。PX4_COMMAND_MODE=disabled是默认值;此时所有参数写入都会在 agent 本地拒绝,不会向飞控发送PARAM_SET。
底层映射
| 层级 | 说明 |
|---|---|
| Cloud command | 每个参数一个 named command type |
| Request model | 每个参数一个 named request struct |
| MAVLink frame | PARAM_SET (23) |
| PX4 response | PARAM_VALUE 或 PARAM_ERROR |
| Completion | parameter_value_confirmed / parameter_error / parameter_response_mismatch / parameter_timeout |