# infantry Vision Project **Repository Path**: seekerrm/infantry-vision-project ## Basic Information - **Project Name**: infantry Vision Project - **Description**: 湖南工学院Seeker战队2025赛季步兵视觉仓库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-15 - **Last Updated**: 2025-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Seeker 2025 infantry Vision Project 湖南工学院Seeker战队2025赛季步兵视觉仓库,该项目基于rm_vision,并大部分参考中南大学FYT战队24赛季视觉。 ## 一、项目结构 创建src文件,并将仓库文件放入 ``` . │ ├── rm_bringup (启动及参数文件) │ ├── rm_robot_description (机器人urdf文件,坐标系的定义) │ ├── rm_interfaces (自定义msg、srv) │ ├── rm_hardware_driver │ │ │ ├── rm_camera_driver (相机驱动) │ │ │ └── rm_serial_driver (串口驱动) │ ├── rm_auto_aim (自瞄算法) │ ├── rm_rune (打符算法) │ ├── rm_utils (工具包) │ ├── math (包括PnP解算、弹道补偿等) │ │ │ └── logger (日志库) │ └── rm_upstart (自启动配置) ``` ## 二、环境 如果你不需要完整功能,可以直接把相关的功能包删除掉 ### 1. 基础 - Ubuntu 22.04 - ROS2 Humble - 海康相机驱动 ### 工具列表 如果你不需要使用,可以直接略过 #### foxglove(用于可视化调试) 1. 安装依赖 ```bash sudo apt install ros-$ROS_DISTRO-foxglove-bridge ``` 1. 启动节点 ```bash source install/setup.bash ros2 launch foxglove_bridge foxglove_bridge_launch.xml ``` #### nomachine(用于远程连接机载电脑,有些电脑需要使用hdmi诱骗器才有桌面画面) 直接在官网下载即可[NoMachine - Download Free Remote Desktop Access](https://downloads.nomachine.com/) #### 相机标定 参考以下链接 [ROS 摄像头标定-camera_calibration_摄像头标定指令-CSDN博客](https://blog.csdn.net/hai411741962/article/details/133809244?ops_request_misc=%7B%22request%5Fid%22%3A%22e0ab280e2f451cfa0d7a2c7df6d64a77%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=e0ab280e2f451cfa0d7a2c7df6d64a77&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-133809244-null-null.142^v102^pc_search_result_base2&utm_term=ros-camera-calibration&spm=1018.2226.3001.4187) 可直接使用本仓库中的相机驱动 注意:size参数中的xy需要根据格数-1,因为使用的是交点 ### 2. 自瞄 - fmt库 ```bash sudo apt install libfmt-dev ``` - *Ceres库*(Sophus库依赖) **去网页下载分支,不要直接clone,可能会报错,我这里以2.2.0为例** https://gitee.com/fw520jl/ceres-solver.git 下载ceres-solver-2.2.0.zip 解压到指定文件夹 ```bash sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev cd ceres-solver-2.2.0 mkdir build cd build cmake .. make -j3 sudo make install ``` - Sophus库 (G2O库依赖) ```bash git clone https://gitee.com/zjcan/Sophus.git cd Sophus mkdir build && cd build cmake .. make -j2 sudo make install ``` - *如果报错* ``` CMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.24 or higher is required. You are running version 3.22.1 ``` *则需要更新cmake版本* *更新方式如下*: 1. *查看当前版本* ``` cmake --version ``` 2. *下载安装包* *从CMake官网下载需要版本的安装包,如 cmake-3.26.5.tar.gz* *https://cmake.org/download/#previous* *解压到自定义文件夹* *可以解压到你自己指定的目录,将cmake-3.26.5.tar.gz移动到自定义目录下* *然后执行* ```bash cd cmake-3.26.5 # 给予完全权限,防止出现不可执行的情况 chmod 777 ./configure ./configure ``` *反馈的结果为* ```bash Cmake has bootstrapped. Now run make. ``` 3. *编译和安装* ```bash make sudo make install ``` 4. *创建软链接* ```bash sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force ``` 5. *再次检查当前版本* ```bash cmake --version ``` *理想输出* ``` cmake version 3.26.5 CMake suite maintained and supported by Kitware (kitware.com/cmake). ``` - G2O库 (优化装甲板Yaw角度) ```bash sudo apt install libeigen3-dev libspdlog-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5 git clone https://gitee.com/oss_tools/g2o.git cd g2o mkdir build && cd build cmake .. make -j4 #如果卡死,建议减小j后面的值 sudo make install ``` ### 3. 能量机关 - OpenVINO库 (能量机关识别) 参考[OpenVINO官方文档](https://docs.openvino.ai/2022.3/openvino_docs_install_guides_installing_openvino_from_archive_linux.html),建议同时安装GPU相关依赖 ## 安装 OpenVINO 运行时 ### 第 1 步:设置 OpenVINO 工具包 APT 存储库 1. 安装存储库的 GPG 密钥 1. 下载 [GPG-PUB-KEY-INTEL-SW-PRODUCTS](https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB) 您还可以使用以下命令: ``` wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB ``` 2. 将此密钥添加到系统密钥环中: ``` sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB ``` 注意 你可能需要安装 GnuPG: ``` sudo apt-get install gnupg ``` 2. 通过以下命令添加存储库: Ubuntu 22 ``` echo "deb https://apt.repos.intel.com/openvino/2024 ubuntu22 main" | sudo tee /etc/apt/sources.list.d/intel-openvino-2024.list ``` 3. 通过 update 命令更新软件包列表: ``` sudo apt update ``` 4. 验证 APT 存储库是否已正确设置。运行 apt-cache 命令查看所有可用 OpenVINO 软件包和组件的列表: ``` apt-cache search openvino ``` ### 第 2 步:使用 APT 包管理器安装 OpenVINO 运行时 1. 安装 OpenVINO 运行时 最新版本 运行以下命令: ``` sudo apt install openvino ``` 特定版本 注意 您可以使用 option 仅安装所需的软件包。 请记住,如果要编译示例,则必须**单独**安装生成工具。`--no-install-recommends` 1. 检查已安装的软件包和版本 运行以下命令: ``` apt list --installed | grep openvino ``` - Ceres库 (能量机关曲线拟合) ```bash sudo apt install libceres-dev ``` ### 4. 其他 本文档中可能有缺漏,如有,可以用`rosdep`安装剩下依赖 ```bash rosdep install --from-paths src --ignore-src -r -y ``` ## 三、编译与运行 1. 串口权限设置 将当前用户加入`dialout`用户组,避免每次都要手动赋予权限。 ``` sudo usermod -aG dialout seeker ``` 修改rm_bringup/config/launch_params.yaml,选择需要启动的功能 ```bash # 编译 colcon build --symlink-install --parallel-workers 1 #本仓库包含的功能包过多,建议限制同时编译的线程数 #赋予串口权限 sudo chmod 777 /dev/ttyUSB0 # 运行 source install/setup.bash ros2 launch rm_bringup bringup.launch.py ``` foxglove启动 ``` source install/setup.bash ros2 launch foxglove_bridge foxglove_bridge_launch.xml ``` 查看相机帧率 ```bash ros2 topic hz /camera_info ``` 默认日志和内录视频路径为`~/seeker2025-log/` > 我们的日志库是用fmt搓的,不使用ros2的日志库 ## 四、自启动 ### 1. 创建启动脚本 ```bash sudo nano /home/seeker/seeker2025_vision_standard/src/rm_upstart/seeker_vision_startup.sh ``` ```bash #!/bin/bash # 初始化ROS2环境 source /opt/ros/humble/setup.bash # 进入工作目录 cd /home/seeker/seeker2025_vision_standard # 加载工作空间环境 source install/setup.bash # 启动ROS2 launch文件 ros2 launch rm_bringup bringup.launch.py # 保持服务存活(根据实际需要选择是否添加) # 如果节点是长期运行的,可以不加sleep # 如果服务意外退出会自动重启(由systemd控制) exec sleep infinity ``` 赋予执行权限: ```bash sudo chmod +x /home/seeker/seeker2025_vision_standard/src/rm_upstart/seeker_vision_startup.sh ``` ### 2. 创建systemd服务文件 ```bash sudo nano /etc/systemd/system/seeker-vision.service ``` ```shell [Unit] Description=Seeker Vision ROS2 Launch Service After=network.target Wants=network.target [Service] Type=simple User=seeker WorkingDirectory=/home/seeker/seeker2025_vision_standard ExecStart=/home/seeker/seeker2025_vision_standard/src/rm_upstart/seeker_vision_startup.sh Restart=always RestartSec=30 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target ``` ### 3. 启用并启动服务 ### 1. 创建启动脚本 ```bash sudo systemctl daemon-reload sudo systemctl enable seeker-vision.service sudo systemctl start seeker-vision.service ``` ### 4. 常用命令 查看服务状态: ```bash systemctl status seeker-vision.service ``` 查看日志: ```bash journalctl -u seeker-vision.service -f ``` 停止服务: ```bash sudo systemctl stop seeker-vision.service sudo systemctl disable seeker-vision.service ``` 中南大学原自启动(因看门狗占用太高,我们机载电脑性能不够,在本项目中未使用): - 编译程序后,进入rm_upstart文件夹 ```bash cd rm_upstart ``` - 修改**rm_watch_dog.sh**中的`NAMESPACE`(ros命名空间)、`NODE_NAMES`(需要看门狗监控的节点)和`WORKING_DIR` (代码路径) - 注册服务 ```bash sudo chmod +x ./register_service.sh sudo ./register_service.sh # 正常时有如下输出 # Creating systemd service file at /etc/systemd/system/rm.service... # Reloading systemd daemon... # Enabling service rm.service... # Starting service rm.service... # Service rm.service has been registered and started. ``` - 查看程序状态 ```bash systemctl status rm ``` - 查看终端输出 ``` 查看screen.output或~/seeker2025-log下的日志 ``` - 关闭程序 ```bash systemctl stop rm ``` - 取消自启动 ```bash systemctl disable rm ``` ## 维护者及开源许可证 > 赛季结束开源 Maintainer : Seeker Vision Group ``` Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` ## 致谢 感谢这个赛季视觉组的每一个成员的付出,感谢以下开源项目: - [rm_vision](https://gitlab.com/rm_vision) rv是本项目的基础,提供了一套可参考的,规范、易用、高效的视觉算法框架 - [rmoss](https://github.com/robomaster-oss/rmoss_core) rmoss项目为RoboMaster提供通用基础功能模块包,本项目的串口驱动模块基于rmoss_base进行开发 - [沈阳航空航天大学TUP战队2022赛季步兵视觉开源](https://github.com/tup-robomaster/TUP-InfantryVision-2022) 为本项目的能量机关识别与预测算法提供了参考 - [沈阳航空航天大学YOLOX关键点检测模型](https://github.com/tup-robomaster/TUP-NN-Train-2) 提供了本项目能量机关识别模型训练代码 - [四川大学OpenVINO异步推理代码](https://github.com/Ericsii/rm_vision-OpenVINO) 提供了本项目能量机关识别模型部署的代码 - [上海交通大学自适应扩展卡尔曼滤波](https://github.com/julyfun/rm.cv.fans/tree/main) 使用Ceres自动微分功能,自动计算Jacobian矩阵 - [中南大学FYT战队RoboMaster24赛季视觉项目](https://github.com/CSU-FYT-Vision/FYT2024_vision)为本项目提供了大部分开源框架 ## 更新日志 - 参考中南大学开源,实现了此自瞄项目 - 将原中南大学的相机驱动更改为海康相机