用途:该技能用于在 PhysicalAI 运行时的 physicalai.capture 模块中新增或修改相机后端,适用于实现新的 Camera 类型或扩展 create_camera 工厂映射。
主要能力与结构:相机需实现 src/physicalai/capture/camera.py 中的 Camera 接口;工厂入口为 src/physicalai/capture/factory.py 中的 create_camera(),将小写类型名(uvc、realsense、basler 等)映射到具体实现。参考布局位于 src/physicalai/capture/cameras/ 下的 uvc/、realsense/、basler/。
使用流程:选择最接近新硬件的参考后端(USB 视频用 UVC,RGB-D 用 RealSense,GenICam 工业相机用 Basler);实现 connect()、disconnect()、read() / read_latest()、上下文管理器支持,并在 Frame(src/physicalai/capture/frame.py)上使用单调时间戳;若设备可枚举,在 src/physicalai/capture/discovery.py 或后端专属 _discover.py 中添加发现辅助;在 factory.py 注册类型,并在面向用户时从 src/physicalai/capture/init.py 导出公共类;可在 pyproject.toml 中为厂商 SDK 添加可选 extra,并在相机模块内惰性导入,使 pip install physicalai 保持轻量;在 tests/unit/capture/ 下使用现有 fake(tests/unit/capture/fake.py、conftest.py)编写测试。
共享传输:多进程访问时,create_camera(..., shared=True) 会用 SharedCamera 包装(依赖 physicalai[capture] / transport extra 与 iceoryx2),仅在安装 transport extra 时说明共享模式。
必要检查:面向用户时在 docs/reference/camera-api.md 记录 CameraType 或工厂字符串;Frame 形状与 dtype 匹配 README 示例(RGB (H, W, 3));导入时不做阻塞式发现。
验证:运行 uv run pytest tests/unit/capture -q 与 prek run --all-files。限制:资料未提供具体硬件 SDK 版本、性能指标或价格信息。