# ロボット

LeRobotのすべてのロボットは`Robot`インターフェースを実装しています: 接続、観測の読み取り、アクションの送信、切断。このインターフェースに対してポリシーや録画スクリプトを作成すれば、変更なしでサポートされているすべてのアームで動作します。

このページは自動生成されたリファレンスです。配線、キャリブレーション、初回実行の手順については、ハードウェアガイドの [SO-101](../so101)、[LeKiwi](../lekiwi)、[Hope Jr](../hope_jr)、[Reachy 2](../reachy2)、[OpenArm](../openarm) から始めてください。エンドツーエンドのワークフローについては [Imitation Learning for Robots](../il_robots) を参照してください。コアセット以外のコミュニティでメンテナンスされているロボットについては、[Third-Party Robots & Teleoperators](../third_party_robots) を参照してください。独自のロボットを追加する場合は、[Bring Your Own Hardware](../integrate_hardware) を参照してください。

## ロボット[[lerobot.robots.Robot]]

抽象基底クラスです。サブクラスは以下のすべてのメソッドを実装します。ここで説明されている契約は、ポリシーやレコーディングループが依存できるものです。

#### lerobot.robots.Robot[[lerobot.robots.Robot]]

```python
lerobot.robots.Robot(config: RobotConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L33)

**パラメータ:**

config_class (RobotConfig) : このロボットに期待される設定クラス。

name (str) : このロボットタイプを識別するために使用される一意のロボット名。

LeRobot互換のすべてのロボット向けのベース抽象クラスです。

このクラスは、物理的なロボットとのインタラクションのための標準化されたインターフェースを提供します。使用可能にするには、サブクラスはすべての抽象メソッドとプロパティを実装する必要があります。

#### 接続[[lerobot.robots.Robot.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L136)

**パラメータ:**

calibrate (bool) : True の場合、接続後にロボットが未キャリブレーションまたはキャリブレーションが必要な場合に、自動的にキャリブレーションを実行します（これはハードウェアに依存します）。

ロボットとの通信を確立します。

#### 切断[[lerobot.robots.Robot.disconnect]]

```python
disconnect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L237)

ロボットから切断し、必要なクリーンアップを実行します。

#### 設定[[lerobot.robots.Robot.configure]]

```python
configure()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L202)

ロボットに一度きりの設定または実行時の設定を適用します。これには、モーターパラメータ、制御モード、または初期状態の設定が含まれる場合があります。

#### キャリブレーション[[lerobot.robots.Robot.calibrate]]

```python
calibrate()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L153)

適用可能な場合は、ロボットをキャリブレーションしてください。適用されない場合は、何もしない（no-op）で構いません。

このメソッドは、必要なデータ（モーターオフセットなど）を収集し、`calibration`辞書を適切に更新する必要があります。

#### get_observation[[lerobot.robots.Robot.get_observation]]

```python
get_observation()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L210)

**戻り値:** `RobotObservation`

ロボットの現在の感覚状態を表すフラットな辞書です。その構造は、`observation_features`と一致する必要があります。

ロボットから現在の観測値を取得します。

#### send_action[[lerobot.robots.Robot.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L222)

**パラメータ:**

action (RobotAction) : 望ましいアクションを表す辞書。その構造は、`action_features`と一致する必要があります。

**戻り値:** `RobotAction`

モーターに実際に送信されるアクションは、速度の安全制限などによってクリップまたは修正される可能性があります。

ロボットにアクションコマンドを送信します。

#### observation_features[[lerobot.robots.Robot.observation_features]]

```python
observation_features()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L100)

ロボットが生成する観測値の構造と型を記述する辞書です。その構造（キー）は、`get_observation`が返すものと一致する必要があります。辞書の値は、以下のいずれかである必要があります：
- 単純な値の場合の値の型。例えば、単一の固有受容値（関節の位置/速度）の場合は`float`
- 配列型の値の場合、その形状を表すタプル。画像の場合は`(height, width, channel)`など

注: このプロパティは、ロボットが接続されているかどうかに関係なく、呼び出すことができる必要があります。

#### action_features[[lerobot.robots.Robot.action_features]]

```python
action_features()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L114)

ロボットが期待するアクションの構造と型を記述する辞書です。構造（キー）は、`send_action`に渡されるものと一致する必要があります。辞書の値は、単純な値の場合はその値の型を指定します。例えば、単一の固有受容値（関節の目標位置/速度）の場合は`float`です。

注: このプロパティは、ロボットが接続されているかどうかに関係なく、呼び出すことができる必要があります。

#### is_connected[[lerobot.robots.Robot.is_connected]]

```python
is_connected()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L127)

ロボットが現在接続されているかどうか。`False`の場合、:pymeth:`get_observation`または:pymeth:`send_action`を呼び出すとエラーが発生するはずです。

#### is_calibrated[[lerobot.robots.Robot.is_calibrated]]

```python
is_calibrated()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/robot.py#L147)

ロボットが現在キャリブレーション済みかどうか。該当しない場合は常に`True`である必要があります

## RobotConfig[[lerobot.robots.RobotConfig]]

#### lerobot.robots.RobotConfig[[lerobot.robots.RobotConfig]]

```python
lerobot.robots.RobotConfig(id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/config.py#L23)

## make_robot_from_config[[lerobot.robots.make_robot_from_config]]

#### lerobot.robots.make_robot_from_config[[lerobot.robots.make_robot_from_config]]

```python
lerobot.robots.make_robot_from_config(config: RobotConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/utils.py#L28)

## SO-100とSO-101のフォロワー[[lerobot.robots.so_follower.SOFollower]]

`SO100Follower` と `SO101Follower` は、同じ `SOFollower` クラスのエイリアスです。2つのアームは制御コードではなく、設定が異なります。同様に、`SO100FollowerConfig` と `SO101FollowerConfig` は `SOFollowerRobotConfig` のエイリアスです。

#### lerobot.robots.so_follower.SOFollower[[lerobot.robots.so_follower.SOFollower]]

```python
lerobot.robots.so_follower.SOFollower(config: SOFollowerRobotConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/so_follower/so_follower.py#L54)

SO-100/101/10X の共通機能を実装する汎用の SO フォロワーベースクラスです。各ハードウェアモデル固有の `config_class` と `name` を指定してサブクラス化することを想定しています。

#### 接続[[lerobot.robots.so_follower.SOFollower.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/so_follower/so_follower.py#L110)

接続時にアームが静止位置にあることを前提とし、キャリブレーションを実行するためにトルクを安全に無効化できると仮定します。

#### send_action[[lerobot.robots.so_follower.SOFollower.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/so_follower/so_follower.py#L187)

**戻り値:** `RobotAction`

モーターに送信されるアクション（クリップが適用されている可能性があります）。

**例外:** ``RobotDeviceNotConnectedError``

- ``RobotDeviceNotConnectedError`` -- ロボットが接続されていない場合。

アームをターゲットの関節構成へ移動させるようコマンドを発行します。

設定パラメータ`max_relative_target`に応じて、相対的なアクションの大きさがクリップされる場合があります。この場合、送信されるアクションは元のアクションと異なります。そのため、この関数は常に実際に送信されたアクションを返します。

#### lerobot.robots.so_follower.SOFollowerRobotConfig[[lerobot.robots.so_follower.SOFollowerRobotConfig]]

```python
lerobot.robots.so_follower.SOFollowerRobotConfig(port: str, disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, use_degrees: bool = True, position_p_coefficient: int = 16, position_i_coefficient: int = 0, position_d_coefficient: int = 32, num_read_retries: int = 2, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/so_follower/config_so_follower.py#L59)

## BiSOFollower[[lerobot.robots.bi_so_follower.BiSOFollower]]

2つのSOフォロワーを1つの両手ロボットとして駆動します。

#### lerobot.robots.bi_so_follower.BiSOFollower[[lerobot.robots.bi_so_follower.BiSOFollower]]

```python
lerobot.robots.bi_so_follower.BiSOFollower(config: BiSOFollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_so_follower/bi_so_follower.py#L31)

TheRobotStudio による [両手 SO フォローアーム](https://github.com/TheRobotStudio/SO-ARM100)

#### lerobot.robots.bi_so_follower.BiSOFollowerConfig[[lerobot.robots.bi_so_follower.BiSOFollowerConfig]]

```python
lerobot.robots.bi_so_follower.BiSOFollowerConfig(left_arm_config: SOFollowerConfig, right_arm_config: SOFollowerConfig, cameras: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_so_follower/config_bi_so_follower.py#L27)

Bi SO Follower ロボットの設定クラスです。

## KochFollower[[lerobot.robots.koch_follower.KochFollower]]

#### lerobot.robots.koch_follower.KochFollower[[lerobot.robots.koch_follower.KochFollower]]

```python
lerobot.robots.koch_follower.KochFollower(config: KochFollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/koch_follower/koch_follower.py#L33)

- [Tau Robotics](https://tau-robotics.com)のAlexander Kochが開発した、手首から肘への拡張あり・なしの両方の[Koch v1.0](https://github.com/AlexanderKoch-Koch/low_cost_robot)
- Jess Moss によって開発された [Koch v1.1](https://github.com/jess-moss/koch-v1-1)

#### 接続[[lerobot.robots.koch_follower.KochFollower.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/koch_follower/koch_follower.py#L89)

接続時にアームが静止位置にあることを前提とし、キャリブレーションを実行するためにトルクを安全に無効化できると仮定します。

#### send_action[[lerobot.robots.koch_follower.KochFollower.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/koch_follower/koch_follower.py#L176)

**パラメータ:**

action (RobotAction) : モーターの目標位置。

**戻り値:** `RobotAction`

モーターに送信されるアクション（クリップが適用されている場合があります）。

アームをターゲットの関節構成へ移動させるようコマンドを発行します。

設定パラメータ`max_relative_target`に応じて、相対的なアクションの大きさがクリップされる場合があります。この場合、送信されるアクションは元のアクションと異なります。そのため、この関数は常に実際に送信されたアクションを返します。

#### lerobot.robots.koch_follower.KochFollowerConfig[[lerobot.robots.koch_follower.KochFollowerConfig]]

```python
lerobot.robots.koch_follower.KochFollowerConfig(port: str, disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, use_degrees: bool = False, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/koch_follower/config_koch_follower.py#L24)

## LeKiwi[[lerobot.robots.lekiwi.LeKiwi]]

`LeKiwi`はロボット本体で動作します。`LeKiwiClient`はホスト側のプロキシであり、ネットワーク経由で`LeKiwi`と通信し、同じ`Robot`インターフェースを提供します。

#### lerobot.robots.lekiwi.LeKiwi[[lerobot.robots.lekiwi.LeKiwi]]

```python
lerobot.robots.lekiwi.LeKiwi(config: LeKiwiConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi.py#L36)

ロボットには、3つのオムニホイールを備えたモバイルベースと、リモート側のフォロワーアームが含まれています。リーダーアームはローカル（ラップトップ上）で接続されており、その関節位置が記録された後、リモート側のフォロワーアームに転送されます（この際、セーフティクランプが適用されます）。並行して、キーボードによるテレオペレーションが使用され、ホイール用の生速度コマンドが生成されます。

#### send_action[[lerobot.robots.lekiwi.LeKiwi.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi.py#L339)

**戻り値:** `RobotAction`

モーターに送信されるアクション（クリップが適用されている可能性があります）。

**例外:** ``RobotDeviceNotConnectedError``

- ``RobotDeviceNotConnectedError`` -- ロボットが接続されていない場合。

lekiwiにコマンドを発行して、目標の関節構成へ移動させます。

設定パラメータ`max_relative_target`に応じて、相対的なアクションの大きさがクリップされる場合があります。この場合、送信されるアクションは元のアクションと異なります。そのため、この関数は常に実際に送信されたアクションを返します。

#### lerobot.robots.lekiwi.LeKiwiConfig[[lerobot.robots.lekiwi.LeKiwiConfig]]

```python
lerobot.robots.lekiwi.LeKiwiConfig(port: str = '/dev/ttyACM0', disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, use_degrees: bool = True, num_read_retries: int = 2, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/config_lekiwi.py#L47)

#### lerobot.robots.lekiwi.LeKiwiClient[[lerobot.robots.lekiwi.LeKiwiClient]]

```python
lerobot.robots.lekiwi.LeKiwiClient(config: LeKiwiClientConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi_client.py#L40)

#### 接続[[lerobot.robots.lekiwi.LeKiwiClient.connect]]

```python
connect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi_client.py#L129)

リモートモバイルロボットとの間でZMQソケットを確立します

#### 切断[[lerobot.robots.lekiwi.LeKiwiClient.disconnect]]

```python
disconnect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi_client.py#L351)

ZMQ通信をクリーンアップします

#### get_observation[[lerobot.robots.lekiwi.LeKiwiClient.get_observation]]

```python
get_observation()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi_client.py#L269)

リモートロボットから観測値を取得します。現在のフォロワーアームの位置、現在の車輪速度（本体座標系の速度 x、y、theta に変換済み）、カメラフレームです。ZMQ 経由で受信し、本体座標系の速度に変換します

#### send_action[[lerobot.robots.lekiwi.LeKiwiClient.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/lekiwi_client.py#L323)

**パラメータ:**

action (RobotAction) : モーターの目標位置を含む配列。

**戻り値:** `np.ndarray`

モーターに送信されるアクション（クリップが適用されている可能性があります）。

**例外:** ``RobotDeviceNotConnectedError``

- ``RobotDeviceNotConnectedError`` -- ロボットが接続されていない場合。

lekiwiにコマンドを送信して、目標の関節構成へ移動させます。モーター空間に変換し、ZMQ経由で送信します。

#### lerobot.robots.lekiwi.LeKiwiClientConfig[[lerobot.robots.lekiwi.LeKiwiClientConfig]]

```python
lerobot.robots.lekiwi.LeKiwiClientConfig(remote_ip: str, port_zmq_cmd: int = 5555, port_zmq_observations: int = 5556, teleop_keys: dict = <factory>, cameras: dict = <factory>, polling_timeout_ms: int = 15, connect_timeout_s: int = 5, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/config_lekiwi.py#L87)

## OpenArmFollower[[lerobot.robots.openarm_follower.OpenArmFollower]]

#### lerobot.robots.openarm_follower.OpenArmFollower[[lerobot.robots.openarm_follower.OpenArmFollower]]

```python
lerobot.robots.openarm_follower.OpenArmFollower(config: OpenArmFollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L40)

OpenArms Follower Robot which uses CAN bus communication to control 7 DOF arm with a gripper. The arm uses Damiao motors in MIT control mode.

#### キャリブレーション[[lerobot.robots.openarm_follower.OpenArmFollower.calibrate]]

```python
calibrate()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L164)

OpenArms ロボットのキャリブレーション手順を実行します。

キャリブレーション手順:
1. トルクを無効にする
2. ユーザーに、グリップを閉じた状態で腕を吊り下げ位置に配置するよう指示します
3. これをゼロポジションとして設定します
4. 各関節の可動域を記録
5. キャリブレーションの保存

#### 設定[[lerobot.robots.openarm_follower.OpenArmFollower.configure]]

```python
configure()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L215)

適切な設定でモーターを設定します。

#### 接続[[lerobot.robots.openarm_follower.OpenArmFollower.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L130)

ロボットに接続し、必要に応じてキャリブレーションを実行します。

接続時にアームが安全な待機位置にあることを前提とし、必要に応じてトルクを安全に無効化してキャリブレーションを実行できるとします。

#### 切断[[lerobot.robots.openarm_follower.OpenArmFollower.disconnect]]

```python
disconnect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L345)

ロボットから切断します。

#### get_observation[[lerobot.robots.openarm_follower.OpenArmFollower.get_observation]]

```python
get_observation()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L226)

ロボットの現在の観測値（位置、速度、トルク）を取得します。

3回の個別読み取りではなく、1回のCANリフレッシュサイクルですべてのモーター状態（pos/vel/torque）を読み取ります。

#### send_action[[lerobot.robots.openarm_follower.OpenArmFollower.send_action]]

```python
send_action(action: dict, custom_kp: dict[str, float] | None = None, custom_kd: dict[str, float] | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/openarm_follower.py#L266)

**パラメータ:**

action : モーター位置の辞書（例: "joint_1.pos", "joint_2.pos"）

custom_kp : モーターごとの任意のカスタム kp ゲイン（例: {"joint_1": 120.0, "joint_2": 150.0}）

custom_kd : 各モーターごとの任意のカスタム kd ゲイン（例: {"joint_1": 1.5, "joint_2": 2.0}）

**戻り値:**

実際に送信されたアクション（クリップされている可能性があります）

ロボットにアクションコマンドを送信します。

アクションの大きさは、安全上の制限に基づいてクリップされる場合があります。

#### lerobot.robots.openarm_follower.OpenArmFollowerConfig[[lerobot.robots.openarm_follower.OpenArmFollowerConfig]]

```python
lerobot.robots.openarm_follower.OpenArmFollowerConfig(port: str, side: str | None = None, can_interface: str = 'socketcan', use_can_fd: bool = True, can_bitrate: int = 1000000, can_data_bitrate: int = 5000000, disable_torque_on_disconnect: bool = True, use_velocity_and_torque: bool = False, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, motor_config: dict = <factory>, position_kp: list = <factory>, position_kd: list = <factory>, joint_limits: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/openarm_follower/config_openarm_follower.py#L125)

## BiOpenArmFollower[[lerobot.robots.bi_openarm_follower.BiOpenArmFollower]]

#### lerobot.robots.bi_openarm_follower.BiOpenArmFollower[[lerobot.robots.bi_openarm_follower.BiOpenArmFollower]]

```python
lerobot.robots.bi_openarm_follower.BiOpenArmFollower(config: BiOpenArmFollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_openarm_follower/bi_openarm_follower.py#L31)

両手OpenArmフォロワーアーム

#### lerobot.robots.bi_openarm_follower.BiOpenArmFollowerConfig[[lerobot.robots.bi_openarm_follower.BiOpenArmFollowerConfig]]

```python
lerobot.robots.bi_openarm_follower.BiOpenArmFollowerConfig(id: str | None = 'bi_openarm_follower', calibration_dir: pathlib.Path | None = None, left_arm_config: OpenArmFollowerConfigBase, right_arm_config: OpenArmFollowerConfigBase, cameras: dict = <factory>)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_openarm_follower/config_bi_openarm_follower.py#L27)

Bi OpenArm Follower ロボットの設定クラスです。

## OmxFollower[[lerobot.robots.omx_follower.OmxFollower]]

#### lerobot.robots.omx_follower.OmxFollower[[lerobot.robots.omx_follower.OmxFollower]]

```python
lerobot.robots.omx_follower.OmxFollower(config: OmxFollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/omx_follower/omx_follower.py#L33)

- [OMX](https://github.com/ROBOTIS-GIT/open_manipulator)は、[ROBOTIS](https://ai.robotis.com/)のWoojin Wie氏とJunha Cha氏が開発した拡張機能です。

#### 接続[[lerobot.robots.omx_follower.OmxFollower.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/omx_follower/omx_follower.py#L89)

プリキャリブレーション済みのOMXロボットの場合:
- defaultのパッケージからのキャリブレーションがモーターと一致しない場合、モーターから読み取って保存します
- これにより、手動でのキャリブレーションなしで、事前にキャリブレーション済みのロボットを使用できます。
- キャリブレーションファイルが存在しない場合、工場出荷時のデフォルト値（homing_offset=0、range_min=0、range_max=4095）を使用します。

#### send_action[[lerobot.robots.omx_follower.OmxFollower.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/omx_follower/omx_follower.py#L190)

**パラメータ:**

action (RobotAction) : モーターの目標位置。

**戻り値:** `RobotAction`

モーターに送信されるアクション（クリップが適用されている場合があります）。

アームをターゲットの関節構成へ移動させるようコマンドを発行します。

設定パラメータ`max_relative_target`に応じて、相対的なアクションの大きさがクリップされる場合があります。この場合、送信されるアクションは元のアクションと異なります。そのため、この関数は常に実際に送信されたアクションを返します。

#### lerobot.robots.omx_follower.OmxFollowerConfig[[lerobot.robots.omx_follower.OmxFollowerConfig]]

```python
lerobot.robots.omx_follower.OmxFollowerConfig(port: str, disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, use_degrees: bool = False, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/omx_follower/config_omx_follower.py#L24)

## Reachy2Robot[[lerobot.robots.reachy2.Reachy2Robot]]

#### lerobot.robots.reachy2.Reachy2Robot[[lerobot.robots.reachy2.Reachy2Robot]]

```python
lerobot.robots.reachy2.Reachy2Robot(config: Reachy2RobotConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/reachy2/robot_reachy2.py#L75)

Pollen Robotics による [Reachy 2](https://www.pollen-robotics.com/reachy/)。

#### lerobot.robots.reachy2.Reachy2RobotConfig[[lerobot.robots.reachy2.Reachy2RobotConfig]]

```python
lerobot.robots.reachy2.Reachy2RobotConfig(max_relative_target: float | None = None, ip_address: str | None = 'localhost', port: int = 50065, disable_torque_on_disconnect: bool = False, use_external_commands: bool = False, with_mobile_base: bool = True, with_l_arm: bool = True, with_r_arm: bool = True, with_neck: bool = True, with_antennas: bool = True, with_left_teleop_camera: bool = False, with_right_teleop_camera: bool = False, with_torso_camera: bool = False, camera_width: int = 640, camera_height: int = 480, cameras: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/reachy2/configuration_reachy2.py#L25)

## UnitreeG1[[lerobot.robots.unitree_g1.UnitreeG1]]

#### lerobot.robots.unitree_g1.UnitreeG1[[lerobot.robots.unitree_g1.UnitreeG1]]

```python
lerobot.robots.unitree_g1.UnitreeG1(config: UnitreeG1Config)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/unitree_g1/unitree_g1.py#L155)

#### lerobot.robots.unitree_g1.UnitreeG1Config[[lerobot.robots.unitree_g1.UnitreeG1Config]]

```python
lerobot.robots.unitree_g1.UnitreeG1Config(kp: list[float] | None = None, kd: list[float] | None = None, default_positions: list = <factory>, control_dt: float = 0.004, is_simulation: bool = True, end_effector: G1EndEffector = <G1EndEffector.DEX1: 'dex1'>, sim_publish_images: bool = True, sim_camera_port: int = 5555, sim_onscreen: bool | None = None, robot_ip: str = '192.168.123.164', cameras: dict = <factory>, gravity_compensation: bool = False, controller: str | None = None, embodiment: str = 'g1_29', id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/unitree_g1/config_unitree_g1.py#L30)

## Hope Jr[[lerobot.robots.hope_jr.HopeJrArm]]

Hope Jr.ヒューマノイドは、アームとハンドという2つの独立したロボットとして公開されています。

#### lerobot.robots.hope_jr.HopeJrArm[[lerobot.robots.hope_jr.HopeJrArm]]

```python
lerobot.robots.hope_jr.HopeJrArm(config: HopeJrArmConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/hope_jr/hope_jr_arm.py#L34)

#### 接続[[lerobot.robots.hope_jr.HopeJrArm.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/hope_jr/hope_jr_arm.py#L88)

接続時にアームが静止位置にあることを前提とし、キャリブレーションを実行するためにトルクを安全に無効化できると仮定します。

#### lerobot.robots.hope_jr.HopeJrArmConfig[[lerobot.robots.hope_jr.HopeJrArmConfig]]

```python
lerobot.robots.hope_jr.HopeJrArmConfig(port: str, disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/hope_jr/config_hope_jr.py#L42)

#### lerobot.robots.hope_jr.HopeJrHand[[lerobot.robots.hope_jr.HopeJrHand]]

```python
lerobot.robots.hope_jr.HopeJrHand(config: HopeJrHandConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/hope_jr/hope_jr_hand.py#L58)

#### lerobot.robots.hope_jr.HopeJrHandConfig[[lerobot.robots.hope_jr.HopeJrHandConfig]]

```python
lerobot.robots.hope_jr.HopeJrHandConfig(port: str, side: str, disable_torque_on_disconnect: bool = True, cameras: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/hope_jr/config_hope_jr.py#L26)

## RebotB601Follower[[lerobot.robots.rebot_b601_follower.RebotB601Follower]]

#### lerobot.robots.rebot_b601_follower.RebotB601Follower[[lerobot.robots.rebot_b601_follower.RebotB601Follower]]

```python
lerobot.robots.rebot_b601_follower.RebotB601Follower(config: RebotB601FollowerRobotConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/rebot_b601_follower.py#L62)

Seeed Studio reBot B601 フォローアーム（6-DOF + グリッパー、CANモーター）。

モーターとの通信は、DamiaoシリアルブリッジまたはMotorBridgeのネイティブCANトランスポートを介してCANバスに接続し、`motorbridge`パッケージによって処理されます。

#### 設定[[lerobot.robots.rebot_b601_follower.RebotB601Follower.configure]]

```python
configure()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/rebot_b601_follower.py#L224)

トルクを有効にする前に、各モーターの制御モードを設定します。

#### disable_torque[[lerobot.robots.rebot_b601_follower.RebotB601Follower.disable_torque]]

```python
disable_torque()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/rebot_b601_follower.py#L245)

アームを手動で動かせるようにモータートルクを無効にします（読み取り専用のデバッグ用）。

#### 切断[[lerobot.robots.rebot_b601_follower.RebotB601Follower.disconnect]]

```python
disconnect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/rebot_b601_follower.py#L444)

ロボットからモーターとカメラを切り離してください。

#### send_action[[lerobot.robots.rebot_b601_follower.RebotB601Follower.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/rebot_b601_follower.py#L313)

アームを目標の関節構成に移動させます。

ポジションは度で表されます。`max_relative_target` によって相対的なアクションの大きさがクリップされる可能性があるため、実際に送信されたアクションが常に返されます。

#### lerobot.robots.rebot_b601_follower.RebotB601FollowerRobotConfig[[lerobot.robots.rebot_b601_follower.RebotB601FollowerRobotConfig]]

```python
lerobot.robots.rebot_b601_follower.RebotB601FollowerRobotConfig(port: str, motor_family: MotorFamily = <MotorFamily.DM: 'dm'>, can_adapter: str | None = None, dm_serial_baud: int = 921600, disable_torque_on_disconnect: bool = True, max_relative_target: float | dict[str, float] | None = None, cameras: dict = <factory>, motor_can_ids: dict[str, tuple[int, int]] | None = None, control_mode: ArmControlMode = <ArmControlMode.MIT: 'mit'>, gripper_control_mode: lerobot.robots.rebot_b601_follower.motor_family.GripperControlMode | None = None, mit_kp: float | dict[str, float] | None = None, mit_kd: float | dict[str, float] | None = None, pos_vel_velocity: float | dict[str, float] | None = None, gripper_torque_ratio: float | None = None, gripper_torque_limit: float | None = None, gripper_hold_torque_limit: float | None = None, joint_limits: dict[str, tuple[float, float]] | None = None, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/rebot_b601_follower/config_rebot_b601_follower.py#L119)

reBot B601 フォロワーロボットの登録済み設定。

## BiRebotB601Follower[[lerobot.robots.bi_rebot_b601_follower.BiRebotB601Follower]]

#### lerobot.robots.bi_rebot_b601_follower.BiRebotB601Follower[[lerobot.robots.bi_rebot_b601_follower.BiRebotB601Follower]]

```python
lerobot.robots.bi_rebot_b601_follower.BiRebotB601Follower(config: BiRebotB601FollowerConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_rebot_b601_follower/bi_rebot_b601_follower.py#L28)

Bimanual Seeed Studio reBot B601 フォロワー。

2つの単一アームの`RebotB601Follower`インスタンスを構成します。各アームの観測キーとアクションキーには、`left_` / `right_`プレフィックスが付けられます。

#### lerobot.robots.bi_rebot_b601_follower.BiRebotB601FollowerConfig[[lerobot.robots.bi_rebot_b601_follower.BiRebotB601FollowerConfig]]

```python
lerobot.robots.bi_rebot_b601_follower.BiRebotB601FollowerConfig(left_arm_config: RebotB601FollowerConfig, right_arm_config: RebotB601FollowerConfig, cameras: dict = <factory>, id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/bi_rebot_b601_follower/config_bi_rebot_b601_follower.py#L27)

両手型reBot B601フォロワーロボットの設定クラスです。

## EarthRoverMiniPlus[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus]]

#### lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus]]

```python
lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus(config: EarthRoverMiniPlusConfig)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L73)

**パラメータ:**

config : ロボット設定

sdk_base_url : Frodobots SDK サーバーのベース URL。`config.sdk_url` から取得されます（デフォルト: http://localhost:8000）

Frodobots SDKのHTTP APIを介して制御されるEarthRover Mini Plusロボット。

このロボットは、ハードウェアへの直接接続ではなく、Frodobots SDK を通じたクラウドベースの制御を使用しています。カメラは Agora クラウド経由で WebRTC によりストリーミングされ、制御コマンドは HTTP POST リクエストによって送信されます。

ロボットは以下をサポートしています:
- SDKのHTTPエンドポイント経由でアクセスできるデュアルカメラ（前面および背面）
- 線形速度と角速度の制御
- バッテリーおよび方位のテレメトリ

#### キャリブレーション[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.calibrate]]

```python
calibrate()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L153)

SDKベースのロボットではキャリブレーションは不要です。

#### 設定[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.configure]]

```python
configure()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L166)

ロボットを設定します（SDKベースのロボットの場合は何もしません）。

#### 接続[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.connect]]

```python
connect(calibrate: bool = True)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L124)

**パラメータ:**

calibrate : SDKベースのロボットでは使用されません（APIの互換性のために保持されています）

**例外:** ``DeviceAlreadyConnectedError`` または ``DeviceNotConnectedError``

- ``DeviceAlreadyConnectedError`` -- ロボットがすでに接続されている場合
- ``DeviceNotConnectedError`` -- SDKサーバーに接続できない場合

Frodobots SDKを使用してロボットに接続します。

#### 切断[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.disconnect]]

```python
disconnect()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L366)

**例外:** ``DeviceNotConnectedError``

- ``DeviceNotConnectedError`` -- ロボットが接続されていない場合

ロボットから切断します。

ロボットを停止し、SDKへの接続を閉じます。

#### get_observation[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.get_observation]]

```python
get_observation()
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L248)

**戻り値:** `RobotObservation`

含まれる観察:
- front: 前面カメラの画像 (480, 640, 3)、RGB形式
- rear: 後方カメラの画像 (480, 640, 3)、RGB形式
- speed: float - 現在の速度（生のSDK値）
- battery_level: float - バッテリーレベル（0-100）
- orientation: float - 度単位でのロボットの向き
- gps_latitude: float - GPS緯度座標
- gps_longitude: float - GPSの経度座標
- gps_signal: float - GPS信号強度（パーセント）
- signal_level: float - ネットワークの信号レベル (0-5)
- vibration: float - 振動センサーの読み取り値
- lamp: float - ランプの状態（0=オフ、1=オン）
- accelerometer_x/y/z: float - 加速度センサーの軸（生のSDK値）
- gyroscope_x/y/z: float - ジャイロセンサーの軸（生のSDK値）
- magnetometer_filtered_x/y/z: float - 磁力計の軸（生のSDK値）
- wheel_rpm_0/1/2/3: float - ホイールのRPM

**例外:** ``DeviceNotConnectedError``

- ``DeviceNotConnectedError`` -- ロボットが接続されていない場合

SDKから現在のロボットの観測値を取得します。

カメラフレームはSDKのエンドポイント/v2/frontおよび/v2/rearから取得されます。フレームはbase64からデコードされ、BGR形式からRGB形式に変換されます。ロボットのテレメトリは/dataエンドポイントから取得されます。センサー配列（accels、gyros、mags、rpms）はそれぞれ[values..., timestamp]のエントリを含み、各配列の最新の読み取り値が使用されます。

Note: カメラフレームはSDKのエンドポイント/v2/frontおよび/v2/rearから取得されます。フレームはbase64からデコードされ、BGR形式からRGB形式に変換されます。ロボットのテレメトリは/dataエンドポイントから取得されます。すべてのSDKの値は、データセットの記録に適した範囲に正規化されます。

#### send_action[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlus.send_action]]

```python
send_action(action: dict)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/robot_earthrover_mini_plus.py#L334)

**パラメータ:**

action : キーが以下の通りであるアクション辞書: - linear_velocity: 目標線速度 (-1 から 1) - angular_velocity: 目標角速度 (-1 から 1)

**戻り値:** `RobotAction`

送信されたアクション（action_featuresのキーに一致）

**例外:** ``DeviceNotConnectedError``

- ``DeviceNotConnectedError`` -- ロボットが接続されていない場合

SDKを介してロボットにアクションを送信します。

Note: Actions are sent to SDK via POST /control endpoint. SDK expects commands in range [-1, 1].

#### lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlusConfig[[lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlusConfig]]

```python
lerobot.robots.earthrover_mini_plus.EarthRoverMiniPlusConfig(sdk_url: str = 'http://localhost:8000', id: str | None = None, calibration_dir: pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/earthrover_mini_plus/config_earthrover_mini_plus.py#L25)

**パラメータ:**

sdk_url : Frodobots SDK サーバーの URL（デフォルト: http://localhost:8000）

Frodobots SDK を使用した EarthRover Mini Plus ロボットの設定。

このロボットは、Frodobots SDK の HTTP API を介したクラウドベースの制御を使用しています。カメラフレームは、SDK の HTTP エンドポイントを通じて直接アクセスされます。

