相机

相机提供 policy 所看到的图像 observation。每个后端——OpenCV、Intel RealSense、Reachy 2——都 实现了 Camera 接口,因此更换硬件不会改变读取帧的代码。

有关选择与配置相机的说明,请参阅 相机指南、 以及针对核心集合之外设备的第三方相机与传感器

Camera

class lerobot.cameras.Camera

< >

( config: CameraConfig )

参数

  • fps (int | None) — 配置的每秒帧数
  • width (int | None) — 帧宽(像素)
  • height (int | None) — 帧高(像素)

相机实现的基类。

为不同后端的相机操作定义标准接口。 子类必须实现所有抽象方法。

管理相机的基本属性(FPS、分辨率)和核心操作:

  • 连接/断开连接
  • 帧捕获(同步/异步/最新)

connect

< >

( warmup: bool = True )

参数

  • warmup — 如果为 True(默认),返回前会捕获一帧预热帧。对于需要时间 调整捕获设置的相机很有用。 如果为 False,则跳过预热帧。

建立与相机的连接。

disconnect

< >

( )

断开与相机的连接并释放资源。

read

< >

( ) np.ndarray

返回

np.ndarray

捕获的帧,以 numpy 数组形式返回。

同步捕获并返回来自相机的单帧。

这是一个阻塞调用,会等待硬件及其 SDK。

async_read

< >

( timeout_ms: float = Ellipsis ) np.ndarray

参数

  • timeout_ms — 等待新帧的最长时间(毫秒)。 默认为 200ms(0.2s)。

返回

np.ndarray

捕获的帧,以 numpy 数组形式返回。

抛出异常

TimeoutError

  • 如果在 timeout_ms 内没有新帧到达,则抛出 TimeoutError

返回最新的新帧。

此方法获取后台线程捕获的最新帧。 如果缓冲区中已有新帧可用(自上次调用以来捕获的), 它会立即返回。

仅当缓冲区为空或最新帧 已被上一次 async_read 调用消耗时,它才会阻塞至多 timeout_ms

本质上,此方法返回最新的未消耗帧,必要时会等待 新帧在指定超时时间内到达。

用法:

  • 非常适合控制环路,因为它能确保每个被处理的帧 都是新鲜的,从而有效地让你的循环与相机的 FPS 同步。
  • 超时的常见原因包括:相机 FPS 极低、处理负载过重、 或相机已断开连接。

find_cameras

< >

( ) List[Dict[str, Any]]

返回

List[Dict[str, Any]]

字典列表, 其中每个字典包含有关检测到的相机的信息。

检测连接到系统的可用相机。

CameraConfig

class lerobot.cameras.CameraConfig

< >

( fps: int | None = Nonewidth: int | None = Noneheight: int | None = None )

make_cameras_from_configs

lerobot.cameras.make_cameras_from_configs

< >

( camera_configs: dict )

在 GitHub 上更新