摘要
2025 年全國大學生電子設計競賽 C 題要求“僅用一顆固定攝像頭”在 5 s 內完成 100 cm~200 cm 距離、誤差 ≤2 cm 的單目測距,并實時顯示功耗。本文整合國一選手方案、CSDN 高分博文、B 站實測視頻及官方說明,給出從硬件選型→離線標定→在線算法→功耗優化→現場調試的完整工程指南
一、賽題縱覽:為什么 2 cm 精度這么難?
維度
官方指標
工程難點
絕對誤差
≤2 cm @200 cm
1 % 相對誤差,接近工業級
實時性
≤5 s 全流程
禁止 PC,只能用 MCU/MPU
目標多樣性
圓/三角/正方形 + 30°~60° 傾斜
透視畸變、特征混淆
功耗
實時顯示 P / Pmax
算法與硬件雙重約束
其他
一鍵啟動,禁網絡
魯棒性要求極高
二、系統架構總覽
功能分離式設計,已被多支國一隊驗證
模塊
方案
職責
視覺前端
OpenMV4 H7 Plus(OV5640) 或 CM4+CSI-2
640×480 采集、畸變矯正、PnP
主控
STM32H743 或 Raspberry Pi CM4 Lite
電流采樣、鍵盤/顯示、USB 供電
電流檢測
INA226 + 0.1 Ω 分流電阻
±0.5 %,I2C 接口
人機交互
0.96" OLED + 輕觸按鍵
一鍵觸發、實時顯示 D/x/P
結構
3D 打印 L 支架 + 燕尾槽微調
光軸穩固、俯仰角可鎖
三、離線標定:誤差預算的第一步
3.1 相機內參標定(張正友法)
棋盤格:9×7 方格,單格 35 mm,打印 A3 啞光相紙
OpenCV 一鍵腳本
import cv2, glob, numpy as np
objp = np.zeros((9*7,3), np.float32)
objp[:,:2]= np.mgrid[0:9,0:7].T.reshape(-1,2)*35# 35 mm
images = glob.glob('calib/*.jpg')# 自動檢測角點 → calibrateCamera
結果
重投影誤差 0.36 px
焦距 fx=1572 px,fy=1570 px,主點 (cx,cy)=(640,360)
k1=-0.38,k2=0.12,p1=0.001,p2=-0.002
誤差折算:0.36 px @200 cm ≈ 1.1 cm,為后續算法留足余量。
3.2 外參 & 基準線標定
基準線:在 100 cm 處貼一條 2 cm 寬黑線,用激光測距儀標定真實距離 L?=100.0 cm