Skip to content

crabxia/nbut2025_vision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NBUT2025_AUTO_AIM Project

2025哨兵步兵自瞄,该项目在原FYT2024 Vision Project项目上修改了部分串口通信、能量机关识别模型,添加了海康相机驱动。

一、项目结构

├── README.md ├── rm_auto_aim (自瞄算法) │   ├── armor_detector (装甲板识别) │   ├── armor_solver (装甲板结算) │   ├── README.md │   └── rm_auto_aim ├── rm_bringup (启动及参数文件) ├── rm_hardware_driver │   ├── rm_camera_driver (大恒相机驱动) │   ├── rm_serial_driver (串口驱动) │   ├── rm_vision_ros2_galaxy_camera (独立线程的大恒相机驱动) │   └── ros2_hik_camera (海康相机驱动) ├── rm_interfaces (自定义消息类型) ├── rm_robot_description (机器人urdf文件,坐标系的定义) ├── rm_rune (打符算法) └── rm_utils (工具包) │   ├── math (包括PnP解算、弹道补偿等) │ └── logger (日志库)

二、环境配置

1. 基础

  • Ubuntu 22.04
  • ROS2 Humble
  • 大恒相机驱动

2. 自瞄

  • opencv
    sudo apt-get install build-essential
    sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
    mkdir build && cd build
    cmake .. && make -j8
    sudo make install

验证:cd /home/usr/opencv-4.6.0/samples/cpp/example_cmake cmake . && make -j8 ./opencv_example_project 出现hello opencv即可

  • ceres-solver

  • Eigen库

  • pybind11

  • fmt库

    sudo apt install libfmt-dev
  • Sophus库 (G2O库依赖)

    git clone https://github.com/strasdat/Sophus
    cd Sophus
    mkdir build && cd build
    cmake ..
    make -j
    sudo make install
  • G2O库 (优化装甲板Yaw角度)

    sudo apt install libeigen3-dev libspdlog-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5
    git clone https://github.com/RainerKuemmerle/g2o
    cd g2o
    mkdir build && cd build
    cmake ..
    make -j
    sudo make install

3. 能量机关

  • OpenVINO库 (能量机关识别)

    参考OpenVINO官方文档,建议同时安装GPU相关依赖

  • Ceres库 (能量机关曲线拟合)

    sudo apt install libceres-dev

5. 其他

本文档中可能有缺漏,如有,可以用rosdep安装剩下依赖

rosdep install --from-paths src --ignore-src -r -y

三、编译与运行

修改rm_bringup/config/launch_params.yaml,选择需要启动的功能和对应的相机类型。

# 编译
colcon build --symlink-install --parallel-workers 4 #本仓库包含的功能包过多,建议限制同时编译的线程数
# 运行
source install/setup.bash
ros2 launch rm_bringup bringup.launch.py

默认日志和内录视频路径为~/nbut2025-log/

使用的日志库是用fmt的,不是ros2的日志库

四、自启动

-可以参考auto-aim.sh脚本

五、部署调试说明

识别部分

相机标定

https://flowus.cn/lihanchen/share/02a518a0-f1bb-47a5-8313-55f75bab21b5

将标定得到的数据在 /rm_bringup/config/camera_info.yaml 中修改。 相机标定的参数对PNP解算的影响较大,测量实际相机到装甲板的距离与解算出的结果相比不能偏差过大。

串口通信

自瞄后续的解算部分需要通过串口接受到的gimbal姿态将机器人自身状态与目标物体的运动分离。因此在调解算前,需确保串口能够正常接收下位机发送的gimbal姿态,单位方向标准与视觉能对应上,imu的数据相对较稳定。

解算部分

根据代码中ekf部分,我们可以通过观测值来计算出观测协方差系数(具体的观测值自己挑选)

计算公式: 稳定观测量$Z$,匀速摇晃云台观测偏移量$\Delta Z$

那么$r=\frac{(\frac{\Delta Z}{4})^2}{Z}$

算出来之后在parms修改相对应的观测协方差系数(注意小数点),调完之后,保持云台不动,动靶车,使其小陀螺以及平移,观察可视化部分的整车观测是否准确,以及输出值是否正确

调补偿

在确保以上部分没有大问题的情况下,再开始加补偿才是有意义的。首先,可以根据静止靶的落点修改 /rm_bringup/config/launch_params.yaml 中的odom2camera参数,弹速在 /rm_bringup/config/armor_solver_params.yaml 中修改

其他

其他的一些具体参数,如相机曝光增益,识别的限制条件等 上场时必须关闭debug和foxglove,关闭后帧率能得到明显的提升。

赛季总结与改进方向

该版的自瞄,PNP解算测距经过一系列的图像处理优化,5m测距误差在8-10cm左右,识别解算帧率在80帧左右。识别部分比较稳定,同时鲁棒性也不错,最大的问题还是在于火控方面,小陀螺基本只能泼水的效果。

改进方向

  • 增加判断条件,区别处理静止和小陀螺装甲板,现有的代码所有情况都安装小陀螺预测来计算。
  • 优化视觉的火控部分。但是自瞄是一个综合的项目,机械弹道弹速的稳定性,电控的跟随响应频率都会影响自瞄的最终效果,因此需要综合多方面来优化。

致谢

本项目是在众多开源资料和队内学长学姐传承的基础上完成的,特别感谢学姐学长留下的车车,视觉组学长们无私的技术传承和经验分享,视觉群的群友们提供了宝贵的建议与解决方法,以及机械组和电控组的队友们一起联调完善优化。 最后,祝New Legends视觉组越来越好!

About

2025哨兵步兵自瞄

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published