sp_vision_25 部署完整指南:4步搞定自启动注册、udev规则配置与GPU推理加速

发布时间:2026/11/2 10:54:10
sp_vision_25 部署完整指南:4步搞定自启动注册、udev规则配置与GPU推理加速

【免费下载链接】sp_vision_25

同济大学SuperPower战队25赛季视觉框架

项目地址:https://gitcode.com/gh_mirrors/sp/sp_vision_25
点击查看免费下载

sp_vision_25 是同济大学 SuperPower 战队开源的 RoboMaster 25 赛季视觉框架,涵盖装甲板识别、弹道解算与云台通信的完整自瞄工作流。本文将带你用 4 个步骤完成它的部署:环境编译、自启动注册(.desktop 开机自启)、udev 规则配置(固定云台串口名与 CAN 总线)以及基于 OpenVINO 的GPU 推理加速,让视觉程序开机即跑、推理全速。

部署环境一览:硬件与软件要求

sp_vision_25 的部署环境以 Ubuntu 22.04 为核心,推荐配置与战队的实车环境保持一致:

项目配置
操作系统Ubuntu 22.04
运算平台NUC12WSKI7(i7-1260P,16GB)
相机海康 MV-CS016-10UC + 6mm 镜头
下位机RoboMaster 开发板 C 型(STM32F407)
通信USB2CAN / MicroUSB 虚拟串口

💡 GPU 推理加速依赖 Intel 集显(Alder Lake 核显)与 OpenVINO 的 Level Zero GPU 驱动,这也是实车选用 NUC 平台的原因。

一键安装依赖与编译:最快上手方法

1. 安装依赖项

先安装相机 SDK(MindVision 或 HikRobot 二选一)与 OpenVINO(项目要求 2024.6.0),再执行:

sudo apt install -y \ git g++ cmake can-utils libopencv-dev libfmt-dev \ libeigen3-dev libspdlog-dev libyaml-cpp-dev \ libusb-1.0-0-dev nlohmann-json3-dev openssh-server screen

注意:CMake 中写死了 OpenVINO 路径为/opt/intel/openvino_2024.6.0/runtime/cmake/(见 CMakeLists.txt),版本装错会直接报Could NOT find OpenVINO。

2. 编译项目

cmake -B build make -C build/ -j$(nproc)

编译产物按兵种划分:standard(步兵)、sentry(哨兵)、uav(无人机)等实车程序,以及大量独立的模块测试程序(见 CMakeLists.txt)。

3. 运行 demo 验证

./build/auto_aim_test

该程序读取 assets/demo/demo.avi 演示视频跑通"识别→解算"全流程,无需任何硬件。能在屏幕上看到装甲板识别框,说明编译部署成功,可以进入正式部署环节。

自启动注册:开机自动启动视觉程序

比赛场上靠手敲命令启动是来不及的,sp_vision_25 提供了现成的自启动脚本 autostart.sh:它等待 5 秒、切到项目目录,再用screen以分离模式(-d -m)拉起watchdog.sh守护脚本,并把每次运行的日志按时间戳写入logs/目录,方便赛后回溯问题:

sleep 5 cd ~/Desktop/sp_vision_25/ screen -L -Logfile logs/$(date "+%Y-%m-%d_%H-%M-%S").screenlog -d -m bash -c "./watchdog.sh"

3 步注册 .desktop 开机自启

第 1 步,确认已安装screen(sudo apt install screen),然后创建自启目录与.desktop文件:

mkdir -p ~/.config/autostart/ touch ~/.config/autostart/sp_vision.desktop

第 2 步,在sp_vision.desktop中写入:

[Desktop Entry] Type=Application Exec=/home/rm/Desktop/sp_vision_25/autostart.sh Name=sp_vision

⚠️Exec必须是绝对路径,否则桌面环境会静默忽略这条自启项。

第 3 步,赋予脚本可执行权限并重启验证:

chmod +x autostart.sh

重启后执行screen -ls能看到名为watchdog.sh的会话,即表示自启动注册成功。

udev规则配置:固定云台串口名与CAN总线

设备每次插拔或重启后,ttyACM*编号可能漂移,程序读取到的串口就"对不上号"。udev 规则可以按硬件 ID 创建固定符号链接,一劳永逸。

云台串口固定为 /dev/gimbal

第 1 步,授予当前用户串口访问权限(需重新登录生效):

sudo usermod -a -G dialout $USER

第 2 步,查询串口的硬件标识:

udevadm info -a -n /dev/ttyACM0 | grep -E '({serial}|{idVendor}|{idProduct})'

第 3 步,创建规则文件/etc/udev/rules.d/99-usb-serial.rules,用查到的真实 ID 替换示例值:

SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="1234", ATTRS{serial}=="A1234567", SYMLINK+="gimbal"

第 4 步,重新加载规则并验证:

sudo udevadm control --reload-rules sudo udevadm trigger ls -l /dev/gimbal

看到lrwxrwxrwx ... /dev/gimbal -> ttyACM0即配置成功。此时配置文件里的com_port: "/dev/gimbal"(如 configs/demo.yaml)在任何一台机器人上都不用再改。

CAN 总线开机自动拉起

USB2CAN 方案的 CAN 接口每次重启都会回到 down 状态,同样用 udev 规则解决:创建/etc/udev/rules.d/99-can-up.rules,写入:

ACTION=="add", KERNEL=="can0", RUN+="/sbin/ip link set can0 up type can bitrate 1000000" ACTION=="add", KERNEL=="can1", RUN+="/sbin/ip link set can1 up type can bitrate 1000000"

插拔 USB2CAN 后,can0/can1即自动以 1Mbps 比特率拉起,与配置文件中的can_interface: "can0"对应。

GPU推理加速:OpenVINO 核显部署全解

安装 Intel GPU 推理驱动

OpenVINO 的 GPU 插件依赖 Intel Compute Runtime 的 Level Zero 后端。在 Ubuntu 22.04 上需从 Intel Compute Runtime / IGC 官方发布渠道下载对应版本的.deb包(版本组合:intel-igc-core与intel-igc-opencl1.0.13463.18,intel-level-zero-gpu1.3.25812.14、intel-opencl-icd23.09.25812.14、libigdgmm1222.3.0,amd64),然后执行:

sha256sum -c ww09.sum # 校验完整性 sudo dpkg -i *.deb

⚠️ 注意:如果启用 GPU 异步推理(async-infer,多线程版本采用),桌面显示最高分辨率为 1920×1080@24Hz——GPU 会独占显示与推理任务。

配置文件中切换推理设备

打开对应机器人的 YAML 配置(configs 目录下按车号区分,如standard3.yaml),把device从CPU改为GPU:

yolo_name: yolov5 device: GPU # 改这一行即可启用 GPU 推理 min_confidence: 0.8

推理模块 mt_detector.cpp 会读取该参数,调用 OpenVINO 的compile_model把 YOLO 模型编译到指定设备:

compiled_model_ = core_.compile_model( model, device_, ov::hint::performance_mode(ov::hint::PerformanceMode::THROUGHPUT));

多线程检测器还采用了start_async()+wait()的异步推理流水线(见 mt_detector.cpp):CPU 线程负责预处理并立即把帧推入 GPU,同时处理上一帧的输出,让推理耗时几乎完全被流水线掩盖,这也是帧率能稳定跑满的关键。

验证 GPU 是否生效

重新运行./build/auto_aim_test(把 configs/demo.yaml 中的device临时改为GPU),若程序无No GPU类报错、日志显示初始化成功,且识别窗口流畅输出,则说明 GPU 推理加速已生效;再用nvidia-smi的替代品intel_gpu_top(安装intel-gpu-tools)可观察核显占用率佐证。

常见问题速查表

现象原因解决方法
Could NOT find OpenVINOOpenVINO 版本或路径不符安装 2024.6.0 版,确保位于/opt/intel/openvino_2024.6.0/
启动报Device GPU not foundLevel Zero 驱动未装好补装上文 GPU 驱动包后重启
串口时好时坏、设备名漂移未配置 udev 符号链接按上文创建/dev/gimbal固定链接
开机后视觉没起来桌面自启项未生效检查~/.config/autostart/sp_vision.desktop的Exec是否为绝对路径
screen -ls有会话但无识别结果相机被其他程序占用相机同一时刻只能被一个进程打开,先关掉测试程序
GPU 异步推理后桌面变卡顿分辨率超限显示分辨率调到 1920×1080 以内

部署完成度自检清单

  • ✅./build/auto_aim_test在无硬件环境下跑通 demo 视频
  • ✅ 重启后screen -ls出现watchdog.sh会话,logs/下有新的.screenlog
  • ✅ls -l /dev/gimbal显示符号链接存在且指向正确
  • ✅ip link show can0显示state UP与bitrate 1MBps(USB2CAN 方案)
  • ✅ 配置中device: GPU时程序正常启动,推理窗口帧率稳定

至此,sp_vision_25 的自启动注册、udev 规则配置与 GPU 推理加速三步部署已全部完成,视觉程序可以跟随机器人开机即战。各车型的详细参数(相机内参、手眼标定、规划器参数等)都在 configs/ 目录中按车维护,上车前对照实车微调即可。

【免费下载链接】sp_vision_25

同济大学SuperPower战队25赛季视觉框架

项目地址:https://gitcode.com/gh_mirrors/sp/sp_vision_25
点击查看免费下载

相关推荐

上一篇:为什么选择kaniko?深入解析Kubernetes原生容器镜像构建的5大优势
下一篇:SmartUnderline高级配置教程:定制属于你的个性化下划线样式

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考