keita ded17d7995 实现预定流程全链路: 任务状态机 + 编排器 + 地面站 + 真机/SITL入口
- utils/task_runner: 6态状态机(WAIT→ARM_TAKEOFF→GOTO(L2)→TRACK(L1)→APPROACH→RTL)
  + 编排器(快照采集/状态动作) + 双层日志(事件JSONL/遥测CSV) + 吊舱控制指令(0x07/0x0F/0x0E/0x08)
- pod_bridge: ground_link 地面坐标UDP注入(超龄判无效,无激光替代表4);
  set_heading_servo_enabled() 运行时L1/L2切换(切换即reset清积分防输出跳变);
  pod_locked 提为公共门控; config 新增 ground_inject 段
- virtual_pod 模拟吊舱(无电机语义) + verify_px4 增量④仅飞控验证 +
  pod_sitl_test L1 SITL全流程(飞行编排不塞进 run_bridge, 保持纯offboard闭环入口)
- 入口: task_runner_sitl(VirtualPod+虚拟目标, SITL端到端跑通约1m24s) /
  task_runner_real(真串口+UDP注入+吊舱控制)
- 地面站 ground_station: 坐标注入 + 状态可视化(Flask)
- S1标定回填(2026-10-09): beta_sign=+1 / alpha_sign=-1, 加标定回归测试守护
- 新增测试: task_runner x4 + ground_link/virtual_pod*/bridge/px4_gateway 增量; 全量 483 passed
- 文档: 预定流程(需求) + 预定流程-操作指南(操作/待办) + L1方案补S1结论与实现状态
2026-10-13 15:50:32 +08:00
2026-09-14 15:05:03 +08:00
2026-09-07 10:37:05 +08:00
2026-09-07 10:37:05 +08:00

code-test-drone

本项目包含一个视觉目标追踪与控制系统的 C++ 参考实现及其 Python 移植版本,用于无人机对移动目标的追踪与控制。

项目结构

code-test-drone/
├── reference-c++/           # C++ 参考实现
│   ├── target_tracker/      # 目标追踪库(独立子工程)
│   │   ├── include/         # 头文件目录
│   │   ├── src/             # 源文件目录
│   │   └── tests/           # 单元测试
│   └── visual_track_control/# 视觉追踪控制库
│       ├── include/         # 头文件目录
│       ├── src/             # 源文件目录
│       └── tests/           # 单元测试
└── utils/                   # Python 移植
    ├── target_tracker/      # 目标追踪(Python 版)
    ├── visual_track_control/# 追踪控制(Python 版)
    └── tests/               # 单元测试

主要模块

target_tracker - 目标追踪库

提供基于卡尔曼滤波的目标追踪功能:

  • KalmanBoxFilter: 8维卡尔曼滤波器(位置、速度)
  • Tracklet: 目标轨迹管理与状态更新
  • TargetTracker: 主追踪器,包含关联、选举逻辑

核心特性:

  • 贪婪关联算法进行检测匹配
  • 主目标选举三级回退机制
  • 支持 Coast(纯预测)与 Lost(丢失)状态管理

visual_track_control - 视觉追踪控制库

基于追踪结果生成无人机控制指令:

  • PIDController: 距离 PID 控制
  • TrackingControlLaw: 追踪控制律
  • MavlinkCommandGateway: MAVLink 指令网关
  • PixelToAngle: 像素到角度转换
  • StalenessChecker: 数据时效性检查
  • SlewRateLimiter: 速率限制器

支持多种控制模式:

  • Rate 模式: 角速率控制
  • Position 模式: 绝对航向控制
  • 距离控制: 接近/后退策略

环境要求

C++ 版本

  • CMake 3.10+
  • C++17 编译器
  • MAVLink 库(MAVSDK)

Python 版本

  • Python 3.12+
  • 依赖:numpy, pymavlink, mavsdk

安装

Python 环境

pip install -r requirements.txt

C++ 构建

cd reference-c++/target_tracker
mkdir build && cd build
cmake ..
make

cd ../../visual_track_control
mkdir build && cd build
cmake ..
make

测试

Python 测试

cd utils
pytest

C++ 测试

cd reference-c++/target_tracker/build
ctest

cd ../../visual_track_control/build
ctest

配置

C++ 与 Python 版本均使用 JSON 格式配置文件:

{
    "control": {
        "frequency_hz": 20.0,
        "visual_stale_ms": 200,
        "radar_stale_ms": 500,
        "attitude_stale_ms": 300
    },
    "camera": {
        "image_width": 1920,
        "image_height": 1080,
        "fov_h_deg": 60.0,
        "fov_v_deg": 35.0
    },
    "heading": {
        "mode": "rate",
        "gain": 1.0,
        "yaw_rate_limit_dps": 30.0,
        "yaw_slew_limit_dps2": 60.0
    },
    "distance": {
        "d_exp_m": 10.0,
        "kp": 0.5,
        "ki": 0.05,
        "kd": 0.1,
        "integral_limit": 2.0
    }
}

使用示例

Python 追踪演示

cd utils
python demo_track_control.py

C++ 追踪演示

cd reference-c++/visual_track_control/build
./track_control_demo

移植说明

Python 版本与 C++ 版的接口差异请参考各子目录的 README:

许可证

本项目遵循开源许可证协议。

贡献指南

欢迎提交 Issue 和 Pull Request 改进本项目。

S
Description
无人机代码测试与控制律补丁
Readme
6.6 MiB
Languages
Python 75.4%
C++ 19.3%
HTML 4.3%
CMake 1%