| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| from typing import cast |
|
|
| from lerobot.utils.import_utils import make_device_from_device_class |
|
|
| from .camera import Camera |
| from .configs import CameraConfig, Cv2Rotation |
|
|
|
|
| def make_cameras_from_configs(camera_configs: dict[str, CameraConfig]) -> dict[str, Camera]: |
| cameras: dict[str, Camera] = {} |
|
|
| for key, cfg in camera_configs.items(): |
| |
| if cfg.type == "opencv": |
| from .opencv import OpenCVCamera |
|
|
| cameras[key] = OpenCVCamera(cfg) |
|
|
| elif cfg.type == "intelrealsense": |
| from .realsense.camera_realsense import RealSenseCamera |
|
|
| cameras[key] = RealSenseCamera(cfg) |
|
|
| elif cfg.type == "reachy2_camera": |
| from .reachy2_camera.reachy2_camera import Reachy2Camera |
|
|
| cameras[key] = Reachy2Camera(cfg) |
|
|
| elif cfg.type == "zmq": |
| from .zmq.camera_zmq import ZMQCamera |
|
|
| cameras[key] = ZMQCamera(cfg) |
|
|
| else: |
| try: |
| cameras[key] = cast(Camera, make_device_from_device_class(cfg)) |
| except Exception as e: |
| raise ValueError(f"Error creating camera {key} with config {cfg}: {e}") from e |
|
|
| return cameras |
|
|
|
|
| def get_cv2_rotation(rotation: Cv2Rotation) -> int | None: |
| import cv2 |
|
|
| if rotation == Cv2Rotation.ROTATE_90: |
| return int(cv2.ROTATE_90_CLOCKWISE) |
| elif rotation == Cv2Rotation.ROTATE_180: |
| return int(cv2.ROTATE_180) |
| elif rotation == Cv2Rotation.ROTATE_270: |
| return int(cv2.ROTATE_90_COUNTERCLOCKWISE) |
| else: |
| return None |
|
|