keita 5e7e0d9713 钉死结论: 锁定后仍无表4,并补协议级硬证据
复测(--detect person --auto-lock, 60s): 表3 1200帧@20Hz, 表2-2 3599帧@60Hz,
首次锁定 0.13s 且全程保持, 表4 仍 0 帧。→ 排除「没锁定所以不解算」。

协议级硬证据: 激光测距字段只存在于表2-2(吊舱→控制器); 表2-1/表3 均无距离
输入字段, 故即便 stereo_ranger 算出距离也无法回灌让吊舱解算 —— 连补救通道都没有。

架构走向: 目标经纬度改由我方自算(视觉测距+载机GPS/姿态+吊舱框架角),
吊舱退化为伺服指向+脱靶量传感器。附待改点 bridge.py:169 / guidance.py 输入。
唯一翻盘途径: 问厂商无激光配置下表4是否设计上就不输出。
2026-10-09 10:01:40 +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%