Skip to content

Repository files navigation

基于 MaixCam 的 AprilTag 卡尔曼滤波跟踪实验

项目简介

本项目记录了在 MaixCam 上使用卡尔曼滤波跟踪 AprilTag 的几个练习版本。程序通过 find_apriltags() 获取标签检测结果,把位置、速度以及目标框尺寸作为观测量输入滤波器,再将预测框绘制到图像上,用于观察不同状态模型的跟踪效果。

仓库内容

  • 位置滤波:只估计目标位置,标签丢失时无法继续向前预测。
  • 位置滤波_持续预测:在短时丢失检测结果时继续执行预测,但由于状态中没有速度项,预测框会停留在原位置附近。
  • 位置和速度滤波:把位置与速度一起纳入状态量,可以得到更平滑的跟踪结果。
  • 位置和速度滤波2:位置与速度模型的另一版实现。
  • 位置和速度滤波-持续预测:在位置与速度模型基础上加入持续预测。
  • 位置和速度滤波-持续预测30帧:最多在连续 30 帧未检测到标签时继续预测,用来观察短时遮挡情况下的表现。
  • 位置-速度-高宽持续滤波:进一步把目标框宽高加入状态量,同时估计位置、速度和框尺寸。
  • 位置-速度-高宽持续滤波30帧:上一版本的 30 帧持续预测实验。
  • 卡尔曼滤波.docx:课程学习过程中整理的补充说明。

运行环境

  • 硬件:MaixCam
  • 被跟踪目标:AprilTag 标签
  • 主要依赖:maixnumpy

基本思路

  1. 使用摄像头采集图像并检测 AprilTag。
  2. 将标签位置或位置、速度、宽高等信息作为观测量输入卡尔曼滤波器。
  3. 通过预测步骤和更新步骤估计目标状态。
  4. 用红色框绘制滤波结果,用绿色框绘制当前检测结果,便于对比观察。

使用说明

  1. 根据需要进入对应实验目录。
  2. 将目录中的 main.py 部署到 MaixCam 运行。
  3. 把 AprilTag 放到摄像头视野中,观察检测框与预测框的变化。

说明

  • 这些代码以学习和实验为主,重点是比较不同状态建模方式对跟踪效果的影响。
  • 参数 FQR 等均可继续调整,不同运动速度和噪声条件下效果会有明显变化。
  • 部分版本使用毫秒时间间隔,是基于当时实验效果做出的取舍。

About

基于MaixCam使用卡尔曼滤波实现简单的目标定位和预测

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages