センサーAPI¤
このページでは、Robopyのセンサー制御に関連するAPIを説明します。
カメラ¤
RealsenseCamera¤
RealsenseCamera
¤
RealsenseCamera(config: RealsenseCameraConfig)
Bases: Camera
Implementation class for Intel RealSense cameras using pyrealsense2
This implementation uses threading to avoid blocking the main thread. The camera runs a background thread that continuously captures frames, allowing async_read() to return the latest frame without blocking.
Based on LeRobot's implementation adapted for robopy architecture.
METHOD | DESCRIPTION |
---|---|
connect |
Connect to the RealSense camera and start background capture thread. |
disconnect |
Disconnect from the camera and stop background thread. |
find_cameras |
Find available Intel RealSense cameras connected to the system. |
ATTRIBUTE | DESCRIPTION |
---|---|
is_connected |
TYPE:
|
WebCamera¤
WebCamera
¤
WebCamera(camera_index: int, name: str, config: WebCameraConfig | None, **kwargs: object)
Bases: Camera
Implementation class for cameras using OpenCV
Initialize a WebCamera instance.
PARAMETER | DESCRIPTION |
---|---|
camera_index
|
Index or device id used by OpenCV to open the camera.
TYPE:
|
name
|
Human readable name for the camera instance.
TYPE:
|
config
|
Optional camera configuration. If None, a default WebCameraConfig will be used.
TYPE:
|
**kwargs
|
Extra keyword arguments to override attributes of the
provided
TYPE:
|
The constructor does not open the device; call connect()
to open
the camera and apply configured settings.
METHOD | DESCRIPTION |
---|---|
connect |
Connect to the camera. |
disconnect |
Disconnect and release camera resources. |
ATTRIBUTE | DESCRIPTION |
---|---|
is_connected |
TYPE:
|
disconnect
¤
Disconnect and release camera resources.
This will release the underlying OpenCV VideoCapture if it is open and mark the camera as not connected. It is safe to call repeatedly.
カメラ設定¤
RealsenseCameraConfig
dataclass
¤
RealsenseCameraConfig(fps: int | float | None = 30, width: int | float | None = None, height: int | float | None = None, color_mode: Literal['rgb', 'bgr'] = 'rgb', auto_exposure: bool = False, exposure: float | None = 190.0, auto_white_balance: bool = False, white_balance: float | None = 3300.0, serial_no: str | None = None, name: str = 'main', index: int = 0, warmup_s: float = 1.0, is_depth_camera: bool = True, is_realsense: bool = True, min_depth: float = 100.0, max_depth: float = 2000.0)
Bases: CameraConfig
Configuration class for RealSense cameras.
WebCameraConfig
dataclass
¤
WebCameraConfig(fps: int | float | None = None, width: int | float | None = None, height: int | float | None = None, color_mode: Literal['rgb', 'bgr'] = 'rgb', auto_exposure: bool = False, exposure: float | None = 190.0, auto_white_balance: bool = False, white_balance: float | None = 3300.0, serial_no: str | None = None, is_depth_camera: bool = False, is_realsense: bool = False)
Bases: CameraConfig
Configuration class for web cameras using OpenCV.
触覚センサー¤
DigitSensor¤
DigitSensor
¤
DigitSensor(config: TactileParams)
タクタイル設定¤
センサー統合¤
RakudaSensorParams¤
RakudaSensorParams
dataclass
¤
RakudaSensorParams(cameras: List[CameraParams] = list(), tactile: List[TactileParams] = list())
CameraParams¤
使用例¤
RealSenseカメラの使用¤
from robopy.sensors.visual.realsense_camera import RealsenseCamera
from robopy.config.sensor_config.visual_config import RealsenseCameraConfig
# 設定の作成
config = RealsenseCameraConfig(
fps=30,
width=640,
height=480,
color_mode="rgb"
)
# カメラの作成と接続
camera = RealsenseCamera("main", config)
camera.connect()
try:
# 画像キャプチャ
image = camera.capture()
print(f"キャプチャした画像サイズ: {image.shape}")
finally:
camera.disconnect()
タクタイルセンサーの使用¤
from robopy.sensors.tactile.digit_sensor import DigitSensor
# センサーの作成(シリアル番号を指定)
sensor = DigitSensor("left", "D20542")
sensor.connect()
try:
# タクタイルデータの取得
tactile_data = sensor.capture()
print(f"タクタイルデータサイズ: {tactile_data.shape}")
finally:
sensor.disconnect()
複数センサーの統合¤
from robopy import RakudaConfig, RakudaSensorParams, TactileParams
from robopy.config.sensor_config import CameraParams
from robopy.config.sensor_config.visual_config import RealsenseCameraConfig
# 統合センサー設定
sensors = RakudaSensorParams(
cameras=[
CameraParams(
name="main",
config=RealsenseCameraConfig(
fps=30,
width=640,
height=480,
color_mode="rgb"
)
)
],
tactile=[
TactileParams(serial_num="D20542", name="left"),
TactileParams(serial_num="D20537", name="right"),
]
)
# ロボット設定に統合
config = RakudaConfig(
leader_port="/dev/ttyUSB0",
follower_port="/dev/ttyUSB1",
sensors=sensors
)
カメラデバイスの検出¤
from robopy.sensors.visual.realsense_camera import RealsenseCamera
# 利用可能なRealSenseカメラを検出
cameras = RealsenseCamera.find_cameras()
print(f"検出されたカメラ: {cameras}")
for camera_info in cameras:
print(f"カメラ名: {camera_info['name']}")
print(f"シリアル番号: {camera_info['serial']}")