forked from tangger/lerobot
WIP
This commit is contained in:
110
tests/mock_intelrealsense.py
Normal file
110
tests/mock_intelrealsense.py
Normal file
@@ -0,0 +1,110 @@
|
||||
import enum
|
||||
|
||||
import numpy as np
|
||||
|
||||
|
||||
class MockStream(enum.Enum):
|
||||
color = 0
|
||||
depth = 1
|
||||
|
||||
|
||||
class MockFormat(enum.Enum):
|
||||
rgb8 = 0
|
||||
z16 = 1
|
||||
|
||||
|
||||
class MockConfig:
|
||||
def enable_device(self, device_id: str):
|
||||
self.device_enabled = device_id
|
||||
|
||||
def enable_stream(
|
||||
self, stream_type: MockStream, width=None, height=None, color_format: MockFormat = None, fps=None
|
||||
):
|
||||
self.stream_type = stream_type
|
||||
# Overwrite default values when possible
|
||||
self.width = 848 if width is None else width
|
||||
self.height = 480 if height is None else height
|
||||
self.color_format = MockFormat.rgb8 if color_format is None else color_format
|
||||
self.fps = 30 if fps is None else fps
|
||||
|
||||
|
||||
class MockColorProfile:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def fps(self):
|
||||
return self.config.fps
|
||||
|
||||
def width(self):
|
||||
return self.config.width
|
||||
|
||||
def height(self):
|
||||
return self.config.height
|
||||
|
||||
|
||||
class MockColorStream:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def as_video_stream_profile(self):
|
||||
return MockColorProfile(self.config)
|
||||
|
||||
|
||||
class MockProfile:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def get_stream(self, color_format: MockFormat):
|
||||
del color_format # unused
|
||||
return MockColorStream(self.config)
|
||||
|
||||
|
||||
class MockPipeline:
|
||||
def __init__(self):
|
||||
self.started = False
|
||||
self.config = None
|
||||
|
||||
def start(self, config: MockConfig):
|
||||
self.started = True
|
||||
self.config = config
|
||||
return MockProfile(self.config)
|
||||
|
||||
def stop(self):
|
||||
if not self.started:
|
||||
raise RuntimeError("You need to start the camera before stop.")
|
||||
self.started = False
|
||||
self.config = None
|
||||
|
||||
def wait_for_frames(self, timeout_ms=50000):
|
||||
del timeout_ms # unused
|
||||
return MockFrames(self.config)
|
||||
|
||||
|
||||
class MockFrames:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def get_color_frame(self):
|
||||
return MockColorFrame(self.config)
|
||||
|
||||
def get_depth_frame(self):
|
||||
return MockDepthFrame(self.config)
|
||||
|
||||
|
||||
class MockColorFrame:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def get_data(self):
|
||||
data = np.ones((self.config.height, self.config.width, 3), dtype=np.uint8)
|
||||
# Create a difference between rgb and bgr
|
||||
data[:, :, 0] = 2
|
||||
return data
|
||||
|
||||
|
||||
class MockDepthFrame:
|
||||
def __init__(self, config: MockConfig):
|
||||
self.config = config
|
||||
|
||||
def get_data(self):
|
||||
return np.ones((self.config.height, self.config.width), dtype=np.uint16)
|
||||
Reference in New Issue
Block a user