新增离线任务管理模块 offline_task_manager,实现无人机自主任务规划与执行
本提交新增了一个 PX4 内部模块,用于无人机的离线任务托管和自动航线执行。
主要功能:
- 从本地 JSON 文件读取离线规划任务点 (/tmp/offline_tasks.json)
- 基于最近邻算法进行路径规划,支持任务优先级和紧急任务插队
- 电池电量感知与低电量任务过滤(支持模拟和真实电池)
- 自动生成 PX4 mission 并写入 dataman 持久化存储
- 完整状态机:IDLE → 等待home点 → 等待GPS定位 → 加载任务文件
→ 验证任务 → 规划路径 → 写入mission → 启动任务 → 监控执行
- 自动发送解锁命令并切换至 AUTO_MISSION 飞行模式
模块组成:
- offline_task.hpp/cpp: 任务数据结构定义与路径规划器
- cJSON.h/c: 嵌入式 JSON 解析库(最小实现)
- offline_task_parser: JSON 文件读取与校验
- offline_task_manager: 主模块,集成 PX4 uORB、dataman 与参数系统
新增参数:
- OTM_ENABLE: 启用/禁用模块
- OTM_START: 触发任务执行
- OTM_LOW_BATT: 低电量阈值
- OTM_FILE_PATH: 任务文件路径
关键修复:
- 在切换 AUTO_MISSION 模式前先发送 ARM 解锁命令,确保无人机正常起飞
- 使用 haversine 公式计算地球表面两点距离
集成说明:
- 添加到 amovlab_sitl_default 和 px4_sitl_default 构建目标
- 订阅 uORB 主题:mission、vehicle_command、battery_status、
vehicle_global_position、home_position
- 通过 vehicle_command 主题发送 MAVLink 模式切换命令
- 使用 dataman 存储离线任务 mission items
测试验证:
- SITL 仿真环境验证通过
- 支持最多 32 个离线任务点
- 成功实现任务加载、路径规划、mission 写入和模式切换
|