Spaces:
Running
Running
# Copyright 2024 The HuggingFace Inc. team. All rights reserved. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
from typing import Protocol | |
import numpy as np | |
from lerobot.common.robot_devices.cameras.configs import ( | |
CameraConfig, | |
IntelRealSenseCameraConfig, | |
OpenCVCameraConfig, | |
) | |
# Defines a camera type | |
class Camera(Protocol): | |
def connect(self): ... | |
def read(self, temporary_color: str | None = None) -> np.ndarray: ... | |
def async_read(self) -> np.ndarray: ... | |
def disconnect(self): ... | |
def make_cameras_from_configs(camera_configs: dict[str, CameraConfig]) -> list[Camera]: | |
cameras = {} | |
for key, cfg in camera_configs.items(): | |
if cfg.type == "opencv": | |
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera | |
cameras[key] = OpenCVCamera(cfg) | |
elif cfg.type == "intelrealsense": | |
from lerobot.common.robot_devices.cameras.intelrealsense import IntelRealSenseCamera | |
cameras[key] = IntelRealSenseCamera(cfg) | |
else: | |
raise ValueError(f"The camera type '{cfg.type}' is not valid.") | |
return cameras | |
def make_camera(camera_type, **kwargs) -> Camera: | |
if camera_type == "opencv": | |
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera | |
config = OpenCVCameraConfig(**kwargs) | |
return OpenCVCamera(config) | |
elif camera_type == "intelrealsense": | |
from lerobot.common.robot_devices.cameras.intelrealsense import IntelRealSenseCamera | |
config = IntelRealSenseCameraConfig(**kwargs) | |
return IntelRealSenseCamera(config) | |
else: | |
raise ValueError(f"The camera type '{camera_type}' is not valid.") | |