fix(pybot): 录制时改用同步 capture() 按需抓帧,避免帧重复

_grab_frame 从 camera.latest()(读后台队列)改为 camera.capture()
(直接调 grabber 同步抓帧),确保每个微动作拿到独立帧而非队列中
可能重复的旧帧。Camera 新增 capture() 方法。
This commit is contained in:
qing committed 2026-08-13 16:38:15 +08:00
1 parent 3fc213e7b9
commit bfa6d8deb6
3 files changed
+25 -5

No files matched your search

+5 -5
View File
@@ -254,13 +254,13 @@ class RobotStruct:
return vec
def _grab_frame(self, camera_var):
"""从摄像头取最新帧;dry_run 或无帧时返回随机噪声帧"""
"""从摄像头同步抓一帧;dry_run 或无帧时返回随机噪声帧"""
import numpy as np
if camera_var is not None:
result = camera_var.play({})
if result is not None:
return result[1] # (timestamp, frame)
# dry_run 或队列空:随机噪声帧(用 camera 配置尺寸)
frame = camera_var.camera.capture()
if frame is not None:
return frame
# dry_run 或无 grabber:随机噪声帧(用 camera 配置尺寸)
h, w = 480, 640
if camera_var is not None:
cam = camera_var.camera