Skip to content

設定API¤

このページでは、Robopyの設定に関連するAPIを説明します。

ロボット設定¤

RakudaConfig¤

RakudaConfig dataclass ¤

RakudaConfig(leader_port: str, follower_port: str, sensors: RakudaSensorParams | None = None, slow_mode: bool = False)

Configuration class for Rakuda robot.

KochConfig¤

KochConfig dataclass ¤

KochConfig(leader_port: str, follower_port: str, calibration_path: str, sensors: KochSensorConfig = KochSensorConfig())

Configuration class for Koch robot.

ATTRIBUTE DESCRIPTION
camera

Backward compatibility property for camera access.

TYPE: Dict[str, RealsenseCameraConfig | WebCameraConfig]

camera property writable ¤

Backward compatibility property for camera access.

RakudaSensorParams¤

RakudaSensorParams dataclass ¤

RakudaSensorParams(cameras: List[CameraParams] = list(), tactile: List[TactileParams] = list())

センサー設定¤

CameraParams¤

CameraParams dataclass ¤

CameraParams(name: str, width: int, height: int, fps: int)

TactileParams¤

TactileParams dataclass ¤

TactileParams(serial_num: str, name: str = 'main', fps: int | None = 30)

ビジュアル設定¤

RealsenseCameraConfig¤

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¤

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.

データ型¤

RakudaObs¤

RakudaObs dataclass ¤

RakudaObs(arms: RakudaArmObs, sensors: RakudaSensorObs | None)

Overall observation structure for Rakuda robot. arms: Observations from the robot arms (leader and follower). sensors: Observations from the sensors (cameras and tactile).

KochObservation¤

KochObservation dataclass ¤

KochObservation(leader: ArrayLike, follower: ArrayLike, sensors: KochSensorRetuns)

Observation class for Koch robot.

使用例¤

基本的なRakuda設定¤

from robopy import RakudaConfig

# 最小限の設定
config = RakudaConfig(
    leader_port="/dev/ttyUSB0",
    follower_port="/dev/ttyUSB1"
)

print(f"Leader ポート: {config.leader_port}")
print(f"Follower ポート: {config.follower_port}")
print(f"スローモード: {config.slow_mode}")

センサー付きの設定¤

from robopy import RakudaConfig, RakudaSensorParams, TactileParams
from robopy.config.sensor_config import CameraParams
from robopy.config.sensor_config.visual_config import RealsenseCameraConfig

# 完全なセンサー設定
config = RakudaConfig(
    leader_port="/dev/ttyUSB0",
    follower_port="/dev/ttyUSB1",
    sensors=RakudaSensorParams(
        cameras=[
            CameraParams(
                name="main",
                config=RealsenseCameraConfig(
                    fps=30,
                    width=640,
                    height=480,
                    color_mode="rgb",
                    depth_mode="z16"
                )
            ),
            CameraParams(
                name="side",
                config=RealsenseCameraConfig(
                    fps=15,
                    width=424,
                    height=240,
                    color_mode="rgb"
                )
            )
        ],
        tactile=[
            TactileParams(serial_num="D20542", name="left"),
            TactileParams(serial_num="D20537", name="right"),
        ]
    ),
    slow_mode=False
)

Koch設定¤

from robopy.config.robot_config.koch_config import KochConfig

# Koch ロボットの設定
config = KochConfig(
    leader_port="/dev/ttyUSB0",
    follower_port="/dev/ttyUSB1",
    camera_config=None  # カメラなし
)

カメラ設定の詳細¤

from robopy.config.sensor_config.visual_config import RealsenseCameraConfig

# 高解像度設定
high_res_config = RealsenseCameraConfig(
    fps=15,
    width=1280,
    height=720,
    color_mode="rgb",
    depth_mode="z16",
    enable_depth=True
)

# 高速設定
fast_config = RealsenseCameraConfig(
    fps=60,
    width=424,
    height=240,
    color_mode="rgb",
    enable_depth=False
)

# Webカメラ設定
from robopy.config.sensor_config.visual_config import WebCameraConfig

webcam_config = WebCameraConfig(
    device_id=0,
    fps=30,
    width=640,
    height=480
)

設定の検証¤

# 設定値の確認
if config.sensors:
    if config.sensors.cameras:
        print(f"カメラ数: {len(config.sensors.cameras)}")
        for cam in config.sensors.cameras:
            print(f"  {cam.name}: {cam.config}")

    if config.sensors.tactile:
        print(f"タクタイルセンサー数: {len(config.sensors.tactile)}")
        for tactile in config.sensors.tactile:
            print(f"  {tactile.name}: {tactile.serial_num}")

設定の保存と読み込み¤

import json
from pathlib import Path

# 設定の保存(JSON形式)
config_dict = {
    "leader_port": config.leader_port,
    "follower_port": config.follower_port,
    "slow_mode": config.slow_mode,
}

if config.sensors:
    if config.sensors.cameras:
        config_dict["cameras"] = [
            {
                "name": cam.name,
                "fps": cam.config.fps,
                "width": cam.config.width,
                "height": cam.config.height,
            }
            for cam in config.sensors.cameras
        ]

    if config.sensors.tactile:
        config_dict["tactile"] = [
            {
                "name": tactile.name,
                "serial_num": tactile.serial_num,
            }
            for tactile in config.sensors.tactile
        ]

# ファイルに保存
config_path = Path("robot_config.json")
with open(config_path, "w") as f:
    json.dump(config_dict, f, indent=2)

print(f"設定を {config_path} に保存しました")

環境変数による設定¤

import os
from robopy import RakudaConfig

# 環境変数から設定値を取得
config = RakudaConfig(
    leader_port=os.getenv("RAKUDA_LEADER_PORT", "/dev/ttyUSB0"),
    follower_port=os.getenv("RAKUDA_FOLLOWER_PORT", "/dev/ttyUSB1"),
    slow_mode=os.getenv("RAKUDA_SLOW_MODE", "false").lower() == "true"
)