Skip to content
CoorynPublic

About

RoboMaster 装甲板识别与 3D 位姿解算系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Armor:装甲板检测与运动预测

面向 RoboMaster 场景的视觉项目,使用 C++、OpenCV 和 Eigen 实现装甲板检测、三维位姿解算与运动状态估计。系统支持视频回放和摄像头输入,通过单板或四板扩展卡尔曼滤波器(EKF)生成目标的当前位姿与未来预测,并提供画面显示、录像和数据记录。

项目以视觉处理为核心,坐标转换、下位机通信与云台控制仍在开发和实物联调中。

系统流程

视频 / 摄像头
      ↓
图像采集与时间戳
      ↓
灯条提取与装甲板匹配
      ↓
PnP 三维位姿解算
      ↓
单板 EKF / 四板 EKF
      ↓
当前状态估计与未来位姿预测
      ↓
画面叠加、录像与数据记录

视频回放和未连接下位机的摄像头模式在相机坐标系下进行估计。连接下位机的摄像头模式通过姿态反馈,在 PnP 与 EKF 之间加入相机系到基座系的转换,再将预测结果交给控制接口。

主要功能

图像采集

统一读取视频或摄像头图像,维护帧号与时间戳,为逐帧处理和运动预测提供输入。视频按源帧率建立时间信息,摄像头使用实际采集时间。

装甲板检测

通过目标颜色差分与亮度筛选提取候选区域,再根据轮廓面积、长宽比、填充率和方向筛选灯条。配对阶段综合比较灯条方向、长度及相对位置,对候选装甲板评分并去除冲突,输出装甲板角点。

三维位姿解算

结合相机标定参数、装甲板尺寸与图像角点,使用 PnP 求解位置和朝向。通过正深度、重投影误差和短时朝向连续性筛选候选解,并整理为滤波器使用的观测。

跟踪与预测

系统提供两种 EKF 模型:

模型 跟踪对象 处理方式
单板模型 一块装甲板 估计三轴位置、速度、朝向与角速度,使用最近观测修正状态
四板模型 车体及四块装甲板 统一估计车体中心运动、转动与几何参数,关联板号后联合融合多板观测

两种模型均在首次有效观测时初始化,后续根据帧间时间先预测、再更新。缺少有效观测时仅进行模型预测;未来几何由当前状态外推生成。

结果展示与记录

在图像上叠加灯条、装甲板轮廓及预测几何,使用实线与虚线区分当前估计和未来预测。同时保存处理后的视频和观测、预测等数据,便于回放与分析。

程序与模块

项目提供两个入口:

  • Armor.cpp:完整视觉流程,连接采集、检测、PnP、EKF、结果输出及可选控制接口。
  • Armor_detect.cpp:前端验证流程,保留采集、检测、PnP 与画面输出,不进行 EKF 运动预测。
模块 主要职责
camera 视频与摄像头采集、帧号和时间戳管理
lightbar_detector 灯条筛选、装甲板匹配与检测结果绘制
solver PnP 位姿解算、候选筛选与短时关联
predictor_single 单板 EKF 状态估计与预测
predictor_armor 四板关联、车体状态估计与联合更新
video_output 图像叠加、预览与录像
log_output 观测、预测及运行数据记录
pose_base 相机系与基座系转换,实物标定与验证待完善
serial / gimbal 下位机通信与云台控制接口,仍在联调

主要模块以头文件声明接口、源文件实现功能,入口程序负责流程调度,便于复用和分步验证。

技术组成

  • C++17:主体程序与算法实现。
  • OpenCV:图像采集、轮廓处理、PnP 与视频显示和保存。
  • Eigen:矩阵运算、坐标变换和 EKF 计算。
  • CMake:项目构建管理。
  • Python:结果绘图与数据分析。

当前摄像头采集和串口实现主要面向 Windows。

当前状态与适用范围

项目已具备视频回放和摄像头输入下的核心视觉处理流程,可以展示装甲板检测、位姿解算及单板、四板预测结果。坐标转换与云台控制已有接口和实现,但相机安装外参标定、通信及实物闭环验证仍需完善,离线模拟结果不代表实物控制已完成。

检测效果受光照、模糊和遮挡影响;位姿解算依赖相机标定、角点质量与装甲板尺寸假设。当前模型主要针对单个目标车体,不具备完整的多车身份管理。突变运动或长时间漏检可能导致预测漂移,实际预测精度需要结合对应未来时刻的观测或真值评估。

About

RoboMaster 装甲板识别与 3D 位姿解算系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages