do_set_mode

PX4 能力域:system-control。PX4 映射:MAV_CMD_DO_SET_MODE 该命令用于设置 PX4 飞行模式。请求通过 base mode、custom mode 和 custom submode 字段表达目标模式,最终是否切换由 PX4 状态机决定。

中文说明

do_set_mode 是 PX4 MAV_CMD_DO_SET_MODE 的 named downlink command。调用方只提交 command_type 和具名 payload 字段;云端协议不暴露 param1..param7。PX4 agent 在 guardedhitloffboard 模式下确认 operator guard 和 transport ready 后,按 COMMAND_LONG 构造 MAVLink frame,并通过 COMMAND_ACK 关联最终 flow 结果。默认 disabled 模式不会向 PX4 发送 frame。

请求参数

vendor
string
必填
固定 px4
device_id
string
必填
目标 PX4 设备 ID
command_type
string
必填
固定 do_set_mode
idempotency_key
string
必填
幂等键;重复请求返回同一命令
timeout_seconds
integer
超时秒数,范围 0~300
payload
object
必填
该 command 的 typed request payload;字段名由 PX4 MAVLink XML 标签生成,但调用方不需要提交裸 param1..param7
payload.mode
number
字段含义:Mode,枚举 MAV_MODE_FLAG;PX4 帧映射到 MAVLink 参数 1。
payload.custom_mode
number
字段含义:Custom Mode;PX4 帧映射到 MAVLink 参数 2。
payload.custom_submode
number
字段含义:Custom Submode;PX4 帧映射到 MAVLink 参数 3。

PX4 帧映射

  • MAVLink command: MAV_CMD_DO_SET_MODE
  • Command ID: 176
  • Default transport: COMMAND_LONG
  • Source XML: common.xml
  • Completion: COMMAND_ACK
  • Guard: 真实 PX4 下发默认关闭;guarded 模式需要显式授权和 ready transport。

创建响应

command_id
string
平台命令 ID,用于后续查询
status
string
受理状态:ACCEPTED
accepted_at
string(datetime)
命令受理时间(UTC)

查询响应

command_id
string
平台命令 ID
status
string
执行状态:ACCEPTED / DELIVERED / SUCCEEDED / FAILED / TIMED_OUT / UNMATCHED_RESPONSE
vendor
string
厂商标识,固定为 px4
device_id
string
目标 PX4 设备 ID
command_type
string
PX4 command 类型
response_code
string
映射后的 COMMAND_ACK.result
response_message
string
PX4 ACK 摘要
vendor_response
object
PX4 ACK 摘要,包含 MAVLink command ID 和 transport

PX4 ACK 关联

PX4 agent 发送 frame 后等待 COMMAND_ACK,按 command id 关联响应。默认 disabled 模式不会发 frame,而是直接生成 rejected lifecycle。
curl -X POST "/api/v1/open/downlink/commands" \
  -H "Content-Type: application/json" \
  -H "X-Api-Id: YOUR_API_ID" \
  -H "X-Api-Timestamp: YOUR_UNIX_SECONDS" \
  -H "X-Api-Nonce: YOUR_NONCE" \
  -H "X-Api-Signature: YOUR_SIGNATURE" \
  -d "{\"vendor\":\"px4\",\"device_id\":\"px4-real-1\",\"command_type\":\"do_set_mode\",\"payload\":{\"mode\":0,\"custom_mode\":0,\"custom_submode\":0},\"idempotency_key\":\"req-do_set_mode-001\",\"timeout_seconds\":30}"

curl "/api/v1/open/downlink/commands/8cdb5bf3-8902-c5f7-f9aa-dc7fa0af1de0"
{
  "command_id": "8cdb5bf3-8902-c5f7-f9aa-dc7fa0af1de0",
  "status": "ACCEPTED",
  "accepted_at": "2026-06-15T00:00:00Z"
}