DroneMind/voicellmcloud/docs/PX4_CLIENT_CONTEXT.md
2026-04-14 10:08:41 +08:00

124 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 客户端上报PX4 载具上下文(`session.start.client.px4`
云端 LLM 需要知道**你在控哪一类 PX4 载具、当前能力边界**,才能把口语「往前十米、返航、降落」消歧成稳定的高层 `flight_intent`,避免把固定翼/VTL 按多旋翼瞎猜。
本字段**全部可选**;不传则 `vehicle_class` 在模型侧按 `unknown` 处理summary 里会更保守。建议在机端能取到的情况下**至少上报 `vehicle_class`,其次 `mav_type`**。
---
## 1. 建议优先级
| 优先级 | 字段 | 说明 |
|--------|------|------|
| P0 | `vehicle_class` | 粗粒度机型,见 §3 |
| P1 | `mav_type` | `HEARTBEAT.mav_type`,与机载一致 |
| P2 | `home_position_valid``rtl_available` | 影响「返航」是否可信 |
| P2 | `offboard_capable` | 影响含 Offboard/机载接管的语义 |
| P3 | `current_nav_state` | 当前 NAV_STATE / 可读模式名,消解「继续飞」等 |
| P3 | `default_setpoint_frame` | `goto` 默认用 `local_ned` 还是 `body_ned` 等 |
| P4 | `px4_version``airframe_id``cruise_alt_m_agl``extras` | 排障、高度尺度、自定义 |
---
## 2. JSON 示例(`session.start` 片段)
```json
{
"type": "session.start",
"proto_version": "1.0",
"transport_profile": "text_uplink",
"session_id": "...",
"auth_token": "...",
"client": {
"device_id": "drone-01",
"locale": "zh-CN",
"capabilities": {
"playback_sample_rate_hz": 24000,
"prefer_tts_codec": "pcm_s16le"
},
"px4": {
"vehicle_class": "multicopter",
"mav_type": 2,
"px4_version": "1.14.3",
"airframe_id": "px4_generic_quad",
"default_setpoint_frame": "local_ned",
"offboard_capable": true,
"mission_capable": true,
"rtl_available": true,
"home_position_valid": true,
"current_nav_state": "POSITION",
"cruise_alt_m_agl": 30.0,
"extras": {
"gps_ok": true,
"ekf_ok": true
}
}
}
}
```
服务端在 `session.ready.server_caps` 中带 `accepts_px4_vehicle_profile: true` 表示会消费该块并注入系统提示词。
---
## 3. `vehicle_class` 枚举(字符串)
与 PX4 常见机架大类对齐,客户端任选其一(**小写 + 下划线**
| 值 | 典型 PX4 / MAV 场景 |
|----|---------------------|
| `multicopter` | 四旋翼、六旋翼等 |
| `fixed_wing` | 固定翼 |
| `vtol_standard` | 标准尾座/倾转等 VTOL |
| `vtol_tailsitter` | 尾座 VTOL |
| `rover` | 地面车 |
| `boat` | 水面艇 |
| `submarine` | 水下(若业务用到) |
| `other` | 其它或少见构型 |
| `unknown` | 未知(默认) |
---
## 4. `mav_type`(可选,整数)
可直接填 **MAVLink `HEARTBEAT` 的 `mav_type` 原值**,便于与 QGC / MAVSDK 对齐。常见示例(完整表见 [MAV_TYPE](https://mavlink.io/en/messages/common.html#MAV_TYPE)
| 值 | 含义 |
|----|------|
| 1 | 固定翼 |
| 2 | 四旋翼quad |
| 3 | 六旋翼 |
| 10 | 地面车 |
| 11 | 水面船 |
| 19 | 双足/仿人(少见) |
| 20 | 尾座 VTOL |
| 21 | 六旋翼同轴等 |
| 22 | 三旋翼 |
若同时提供 `vehicle_class``mav_type`,模型以二者**一致性强**为前提;明显冲突时以 **`mav_type` 为准**(可在 `extras` 里注明数据来源)。
---
## 5. `default_setpoint_frame`
口语「前/右/上」在未说明坐标系时,云端生成 `goto` 会**优先用此字段**
- **`local_ned`**(默认):北东地局部系,与多数 Offboard 位置设定一致。
- **`body_ned` / `body`**:机体系前右下 —— 仅当机端确实按体轴解析相对位移时填写。
---
## 6. `extras`
任意 JSON 对象,原样进入 LLM 上下文(控制「电池低」「室内无 GPS」「仅限 mission」等。建议键名短、值可机器生成。
---
## 7. 与 MAVROS / ROS2 的对应关系(实现提示)
- `mav_type``current_nav_state`:可由 MAVROS `/mavros/state``px4_msgs` 等价话题映射得到。
- `home_position_valid``HOME_POSITION` 已设置或与 `RTL` 可用逻辑一致即可。
- `offboard_capable` companion 侧已验证能 **≥2Hz** 维持 Offboard 再置 `true`(见 PX4 Offboard 文档)。
本文不规定机端如何执行 JSON执行栈仍以贵方 MAVROS / 自研 bridge 为准。