Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

此文档为自瞄算法相关文档(开源来源于同济25自瞄开源)

代码结构

sp_vision_25
├── assets         // 包含demo素材、网络权重等
│   └── ...
├── calibration    // 标定相关程序
│   ├── calibrate_camera.cpp             // 相机内参标定程序
│   ├── calibrate_handeye.cpp            // 手眼标定程序
│   ├── calibrate_robotworld_handeye.cpp // 手眼标定程序(同时计算标定板位置)
│   └── capture.cpp                      // 相机标定数据采集程序
├── CMakeLists.txt // CMake配置文件
├── configs        // 每台机器人的YAML配置文件
│   └── ...
├── io             // 硬件抽象层,见3.4软件架构
│   └── ...
├── src            // 应用层,见3.4软件架构
│   └── ...
├── tasks          // 功能层,见3.4软件架构
│   ├── auto_aim       // 自瞄相关算法实现
│   │   └── ...
│   ├── auto_buff      // 打符相关算法实现
│   │   └── ...
│   └── omniperception // 全向感知相关算法实现
│   │   └── ...
├── tests
│   ├── auto_aim_test.cpp         // 自瞄录制视频测试程序
│   ├── auto_buff_test.cpp        // 打符录制视频测试程序
│   ├── camera_detect_test.cpp    // 识别器测试程序(工业相机)
│   ├── camera_test.cpp           // 相机测试程序
│   ├── camera_thread_test.cpp    // 相机线程测试程序
│   ├── cboard_test.cpp           // C板测试程序
│   ├── detector_video_test.cpp   // 识别器测试程序(视频)
│   ├── dm_test.cpp               // 达妙IMU测试程序
│   ├── fire_test.cpp             // 开火测试程序
│   ├── gimbal_response_test.cpp  // 云台响应测试程序
│   ├── gimbal_test.cpp           // 云台通信测试程序
│   ├── handeye_test.cpp          // 手眼标定测试程序
│   ├── minimum_vision_system.cpp // 最小视觉系统测试程序
│   ├── multi_usbcamera_test.cpp  // 多USB摄像头测试程序
│   ├── planner_test_offline.cpp  // 规划器测试程序(离线)
│   ├── planner_test.cpp          // 规划器测试程序(实车)
│   ├── publish_test.cpp          // ROS发送测试程序
│   ├── subscribe_test.cpp        // ROS接收测试程序
│   ├── topic_loop_test.cpp       // ROS话题循环测试程序
│   ├── usbcamera_detect_test.cpp // 识别器测试程序(USB相机)
│   ├── usbcamera_test.cpp        // USB相机测试程序
│   └── ...
└── tools          // 工具层,见3.4软件架构
    ├── crc.hpp                    // CRC校验
    ├── exiter.hpp                 // 退出检测
    ├── extended_kalman_filter.hpp // 扩展卡尔曼滤波器
    ├── img_tools.hpp              // 图像处理工具
    ├── logger.hpp                 // 日志记录器
    ├── math_tools.hpp             // 数学工具
    ├── plotter.hpp                // 曲线图绘制工具
    ├── recorder.hpp               // 视频录制器
    ├── thread_safe_queue.hpp      // 线程安全队列
    ├── trajectory.hpp             // 弹道解算
    ├── yaml.hpp                   // YAML配置文件解析器
    └── ...

1.相关测试程序

1.Cboard_cboard_test硬件通信测试程序(后续会改名字)

1.Can口通信测试,需在Cboard.cpp中默认初始化SocketCAN的实例,在yaml文件配置canid

2.串口通信测试

2.标定

3.相机连接

4.硬件通信

5.自瞄代码运行

6.调试问题

10.26

1.

修复无开火指令问题:上位机给下位机发的是角度,获取的云台姿态来源于陀螺仪,是弧度,修改后可正常发送

11-12月

1.

新增前哨站算法,修改卡尔曼滤波部分,利用矩阵的l和h两个维度作为前哨站两个不同高低差,雅可比矩阵增加dz_dl,dz_dh,扩展卡尔曼会自适应不同高低差变化

2.

删除同济冗余代码,ROS2,多线程,多余测试等,修复一些warning警告问题,如数据类型不统一等

3.

增加哨兵脱锁算法,目前置于Cboard.cpp中,当锁定一帧目标时脱锁会延迟3秒后再进入扫描模式

4.

修改crc高地位,适应电控校验数据

5.

问题:目前已测试GPU推理加速在Y7000p中,效果不如cpu,暂未查询到原因,准备更改OPENVINIO为ORT

6.

使用SSH连接远程终端时,跑无debug程序终止原因是因为在yolo识别部分有imshow,目前已注释

2026.1

1.

由于受灯光影响,网络模型会误识别强光部分为目标,只能降低曝光或者设置多次识别

2026完整形态与联盟赛

1.电脑的降压模块不稳定,无法发挥电脑的最高性能导致代码帧率较低,与电控降压有关

2.openvino可安装25版本或者24版本,但安装新版本需要修改CMakeLists,如果没修改会报找不到libopnvino的错误

3.修改了识别友军的bug,统一了io,armor,main,main_debug的装甲板颜色数据类型,误识别友军的原因是因为使用了yolov5模型,使用v8可以解决

4.修改CMakeLists的编译模式,Debug改为Realse,提高代码性能

5.联盟赛对于远距离目标弹道偏下,对于近距离目标快速小陀螺无开火建议,目前未解决

6.对于新前哨战,除了需要修改Target部分,还需要在Tracker模块中给步兵整车状态的Q矩阵的l和h维度给予参数,否则无效

7.同济代码的选板目前有跳板问题导致yaw角度突变严重,目前未解决,发现观测的整车旋转角速度不稳定,有2rad的波动,不准确,目前未解决

8.24版本的ubuntu有远程连接不上的问题,换22版本可以解决,22版本RDP连接秘密重启会改变,修改电脑对于登陆的密钥为空可以解决,记得不是RDP秘密为空

9.电脑的USB2.0口连接相机会导致读取相机帧率很低,导致给下位机发送延迟高达40ms,改用USB3.0口可以解决