【免费下载链接】sp_vision_25
同济大学SuperPower战队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 OpenVINO | OpenVINO 版本或路径不符 | 安装 2024.6.0 版,确保位于/opt/intel/openvino_2024.6.0/ |
启动报Device GPU not found | Level 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赛季视觉框架
相关推荐
3步极速部署BitNet:让1-bit LLM在CPU端飞起来的完整指南
3步极速部署BitNet:让1 bit LLM在CPU端飞起来的完整指南 BitNet是一款革命性的1 bit LLM高效推理框架,专为CPU端快速运行大语言模
人工智能大模型推理引擎本地部署模型量化3步搞定CVAT网络加速:从配置到部署的完整CDN优化指南
3步搞定CVAT网络加速:从配置到部署的完整CDN优化指南 你是否遇到过CVAT标注平台加载缓慢、大型数据集传输超时的问题?尤其当团队分布在不同地域时,这些网络
数据标注计算机视觉后端前端数据集android-udev-rules: 快速配置Android设备的udev规则
android udev rules: 快速配置Android设备的udev规则 android udev rules 是一个开源的脚本集,用于快速配置Linu
开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考