MyCobot 280をPythonで制御するためのチュートリアル　(3)

前回の続きです。

https://qiita.com/kotai2003/items/03756aa0f23f20b23ed7

https://qiita.com/kotai2003/items/af5ea5e1a88a6e952b2b

![mycobot.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/09dea577-66f6-63fc-33ed-5f86d21e5cd5.jpeg)


## 1 Overall Status - 

#### power_on

**プロトタイプ:** `power_on()`

**説明:** Atomの通信を開始します（デフォルトでは開いています）。

**詳細説明:** この関数は、MyCobotのAtomモジュールの通信をオンにし、ロボットアームが動作を開始できる状態にします。

#### power_off

**プロトタイプ:** `power_off()`

**説明:** Atomの通信をオフにします。

**詳細説明:** この関数は、MyCobotのAtomモジュールの通信をオフにし、ロボットアームの動作を停止させます。

#### is_power_on

**プロトタイプ:** `is_power_on()`

**説明:** ロボットアームの電源がオンかどうかを確認します。

**戻り値:**

- `1`: 電源がオン
- `0`: 電源がオフ
- `-1`: エラー

**詳細説明:** この関数は、ロボットアームの電源状態を確認し、オン、オフ、またはエラーの状態を返します。

#### read_next_error

**プロトタイプ:** `read_next_error()`

**説明:** ロボットのエラーを検出します。

**戻り値:** 長さ7のリスト

- `0`: 異常なし
- `1`: 通信が切断された
- `2`: 不安定な通信
- `3`: サーボ異常

**詳細説明:** この関数は、ロボットのエラー状態を検出し、特定のエラーコードを返します。リスト形式でエラーを提供します。

#### release_all_servos

**プロトタイプ:** `release_all_servos()`

**説明:** ロボットアームを自由移動モードに設定します。

**詳細説明:** この関数は、ロボットアームのサーボモーターを解除し、手動で自由に動かせる状態にします。

#### is_controller_connected

**プロトタイプ:** `is_controller_connected()`

**説明:** Atomと接続されているかどうかを確認します。

**戻り値:**

- `1`: 接続されている
- `0`: 接続されていない
- `-1`: エラー

**詳細説明:** この関数は、ロボットアームのコントローラが正しく接続されているかどうかを確認します。

#### get_error_information

**プロトタイプ:** `get_error_information()`

**説明:** ロボットのエラー情報を取得します。

**戻り値:**

- `0`: エラーメッセージなし
- `1 ~ 6`: 該当するジョイントが限界位置を超えた
- `32`: 運動学逆解が存在しない
- `33 ~ 34`: 直線運動に隣接解がない

**詳細説明:** この関数は、ロボットの詳細なエラー情報を取得し、エラーコードに応じた説明を提供します。

#### clear_error_information

**プロトタイプ:** `clear_error_information()`

**説明:** ロボットのエラーメッセージをクリアします。

**詳細説明:** この関数は、ロボットアームの現在のエラーメッセージをクリアし、エラー状態をリセットします。

### 表に整理

| 関数名                  | プロトタイプ                | 説明                           | 詳細説明                                                     |
| ----------------------- | --------------------------- | ------------------------------ | ------------------------------------------------------------ |
| power_on                | `power_on()`                | Atomの通信を開始します         | Atomモジュールの通信をオンにし、ロボットアームが動作を開始できる状態にします。 |
| power_off               | `power_off()`               | Atomの通信をオフにします       | Atomモジュールの通信をオフにし、ロボットアームの動作を停止させます。 |
| is_power_on             | `is_power_on()`             | 電源がオンか確認します         | ロボットアームの電源状態を確認し、オン、オフ、またはエラーの状態を返します。 |
| read_next_error         | `read_next_error()`         | ロボットのエラーを検出します   | ロボットのエラー状態を検出し、特定のエラーコードを返します。リスト形式でエラーを提供します。 |
| release_all_servos      | `release_all_servos()`      | 自由移動モードに設定します     | ロボットアームのサーボモーターを解除し、手動で自由に動かせる状態にします。 |
| is_controller_connected | `is_controller_connected()` | 接続状態を確認します           | ロボットアームのコントローラが正しく接続されているかどうかを確認します。 |
| get_error_information   | `get_error_information()`   | エラー情報を取得します         | ロボットの詳細なエラー情報を取得し、エラーコードに応じた説明を提供します。 |
| clear_error_information | `clear_error_information()` | エラーメッセージをクリアします | ロボットアームの現在のエラーメッセージをクリアし、エラー状態をリセットします。 |

### 2. MDIモードと操作 
「MDI」は、関節の角度または座標の目標値を入力して、位置と姿勢を教える操作です。

#### get_angles

**プロトタイプ:** `get_angles()`

**説明:** すべてのジョイントの角度を取得します。

**戻り値:** リスト: すべての角度の浮動小数点リスト。

**詳細説明:** この関数は、ロボットアームの各ジョイントの現在の角度を取得し、リスト形式で返します。

#### set_fresh_mode(mode)

**説明:** コマンドリフレッシュモードを設定します。

**パラメータ:**

- `mode` – int: 
  - `1` - 最新のコマンドを最優先で実行します。
  - `0` - キュー形式で順次指示を実行します。

**詳細説明:** この関数は、コマンド実行の優先度を設定します。最新コマンドを優先するか、順次実行するかを選択できます。

#### get_fresh_mode()

**説明:** コマンドリフレッシュモードを取得します。

**戻り値:**

- `1` - 最新のコマンドを最優先で実行します。
- `0` - キュー形式で順次指示を実行します。

**詳細説明:** この関数は、現在のコマンド実行の優先度設定を取得します。

#### send_angle

**プロトタイプ:** `send_angles(id, degree, speed)`

**説明:** 特定のジョイントに角度を送信します。

**パラメータ:**

- `id`: ジョイントID（`genre.Angle`） / int: 1-7
- `degree`: 角度値（float）: -170 〜 170
- `speed`: (int) 0 ~ 100

**詳細説明:** この関数は、特定のジョイントに指定した角度を指定した速度で送信します。

#### send_angles

**プロトタイプ:** `send_angles(degrees, speed)`

**説明:** すべてのジョイントに角度を送信します。

**パラメータ:**

- `degrees`: 角度値のリスト（List[float]）、長さ7
- `speed`: (int) 0 ~ 100

**詳細説明:** この関数は、すべてのジョイントに指定した角度を指定した速度で送信します。

#### get_radians

**プロトタイプ:** `get_radians()`

**説明:** すべてのジョイントのラジアンを取得します。

**戻り値:** リスト: すべてのラジアンの浮動小数点リスト。

**詳細説明:** この関数は、ロボットアームの各ジョイントの現在のラジアン値を取得し、リスト形式で返します。

#### send_radians

**プロトタイプ:** `send_radians(radians, speed)`

**説明:** すべてのジョイントにラジアンを送信します。

**パラメータ:**

- `radians`: ラジアン値のリスト（List[float]）
- `speed`: (int) 0 ~ 100

**詳細説明:** この関数は、すべてのジョイントに指定したラジアン値を指定した速度で送信します。

#### get_coords

**プロトタイプ:** `get_coords()`

**説明:** ロボットアームの座標を取得します（ベース座標系に基づく）。

**戻り値:** リスト: 座標の浮動小数点リスト - [x, y, z, rx, ry, rz]

**詳細説明:** この関数は、ロボットアームのエンドエフェクタの現在の座標を取得し、リスト形式で返します。

#### send_coord

**プロトタイプ:** `send_coords(id, coord, speed)`

**説明:** 特定の座標をロボットアームに送信します。

**パラメータ:**

- `id`: 座標ID（`genre.Coord`） / int: 1-6
- `coord`: 座標値（float）
- `speed`: (int) 0 ~ 100

**詳細説明:** この関数は、特定の座標を指定した速度でロボットアームに送信します。

#### send_coords

**プロトタイプ:** `send_coords(coords, speed, mode)`

**説明:** すべての座標をロボットアームに送信します。

**パラメータ:**

- `coords`: 座標値のリスト（List[float]）
- `speed`: (int) 0 ~ 100
- `mode`: (int): 0 - 角度、1 - 直線

**詳細説明:** この関数は、すべての座標を指定した速度とモード（角度または直線）でロボットアームに送信します。

#### sync_send_angles

**プロトタイプ:** `sync_send_angles(degrees, speed, timeout=15)`

**説明:** 同期状態で角度を送信し、目標点に到達したときに戻ります。

**パラメータ:**

- `degrees`: 角度値のリスト（List[float]）
- `speed`: (int) 0 ~ 100
- `timeout`: デフォルトは7秒

**詳細説明:** この関数は、同期状態で角度を送信し、指定した角度に到達したときに制御を戻します。

#### sync_send_coords

**プロトタイプ:** `sync_send_coords(coords, speed, mode, timeout=15)`

**説明:** 同期状態で座標を送信し、目標点に到達したときに戻ります。

**パラメータ:**

- `coords`: 座標値のリスト（List[float]）
- `speed`: (int) 0 ~ 100
- `mode`: (int): 0 - 角度、1 - 直線
- `timeout`: デフォルトは7秒

**詳細説明:** この関数は、同期状態で座標を送信し、指定した座標に到達したときに制御を戻します。

#### is_in_position

**プロトタイプ:** `is_in_position(data, flag)`

**説明:** 指定した位置にあるかどうかを判定します。

**パラメータ:**

- `data`: データリスト、角度または座標
- `flag`: データタイプをタグ付け、0 - 角度、1 - 座標

**戻り値:**

- `1` - true
- `0` - false
- `-1` - エラー

**詳細説明:** この関数は、ロボットアームが指定した位置にあるかどうかを判定します。

#### is_moving

**プロトタイプ:** `is_moving()`

**説明:** ロボットが動いているかどうかを検出します。

**戻り値:**

- `1` - 動いている
- `0` - 動いていない
- `-1` - エラーデータ

**詳細説明:** この関数は、ロボットアームが現在動いているかどうかを検出します。

### 表に整理

| 関数名         | プロトタイプ                    | 説明                                     | 詳細説明                                                     |
| -------------- | ------------------------------- | ---------------------------------------- | ------------------------------------------------------------ |
| get_angles     | `get_angles()`                  | すべてのジョイントの角度を取得します     | ロボットアームの各ジョイントの現在の角度を取得し、リスト形式で返します。 |
| set_fresh_mode | `set_fresh_mode(mode)`          | コマンドリフレッシュモードを設定します   | コマンド実行の優先度を設定します。最新コマンドを優先するか、順次実行するかを選択できます。 |
| get_fresh_mode | `get_fresh_mode()`              | コマンドリフレッシュモードを取得します   | 現在のコマンド実行の優先度設定を取得します。                 |
| send_angle     | `send_angle(id, degree, speed)` | 特定のジョイントに角度を送信します       | 特定のジョイントに指定した角度を指定した速度で送信します。   |
| send_angles    | `send_angles(degrees, speed)`   | すべてのジョイントに角度を送信します     | すべてのジョイントに指定した角度を指定した速度で送信します。 |
| get_radians    | `get_radians()`                 | すべてのジョイントのラジアンを取得します | ロボットアームの各ジョイントの現在のラジアン値を取得し、リスト形式で返します。 |
| send_radians   | `send_radians(radians, speed)`  | すべてのジョイントにラジアンを送信します   | すべてのジョイントに指定したラジアン値を指定した速度で送信します。                                                                                             |
| get_coords        | `get_coords()`                  | ロボットアームの座標を取得します          | ロボットアームのエンドエフェクタの現在の座標を取得し、リスト形式で返します。                                                                                   |
| send_coord        | `send_coord(id, coord, speed)`  | 特定の座標をロボットアームに送信します    | 特定の座標を指定した速度でロボットアームに送信します。                                                                                                         |
| send_coords       | `send_coords(coords, speed, mode)` | すべての座標をロボットアームに送信します  | すべての座標を指定した速度とモード（角度または直線）でロボットアームに送信します。                                                                             |
| sync_send_angles  | `sync_send_angles(degrees, speed, timeout=15)` | 同期状態で角度を送信し、目標点に到達したときに戻ります | 同期状態で角度を送信し、指定した角度に到達したときに制御を戻します。                                                                                          |
| sync_send_coords  | `sync_send_coords(coords, speed, mode, timeout=15)` | 同期状態で座標を送信し、目標点に到達したときに戻ります | 同期状態で座標を送信し、指定した座標に到達したときに制御を戻します。                                                                                          |
| is_in_position    | `is_in_position(data, flag)`    | 指定した位置にあるかどうかを判定します    | ロボットアームが指定した位置にあるかどうかを判定します。                                                                                                       |
| is_moving         | `is_moving()`                   | ロボットが動いているかどうかを検出します   | ロボットアームが現在動いているかどうかを検出します。                                                                                                           |


## 3. JOGモードと操作 
「JOG」は、関節の角度または座標を少しずつ動かして、目標の位置と姿勢を教える操作です。
#### jog_angle

**プロトタイプ:** `jog_angle(joint_id, direction, speed)`

**説明:** ジョグ制御角度

**パラメータ:**

- `joint_id`: (int) 1 ~ 6
- `direction`: 0 - 減少, 1 - 増加
- `speed`: 0 ~ 100

**詳細説明:** この関数は、指定されたジョイントの角度を指定された方向と速度でジョグ制御します。

#### jog_coord

**プロトタイプ:** `jog_coord(coord_id, direction, speed)`

**説明:** ジョグ制御座標

**パラメータ:**

- `coord_id`: (int) 1 ~ 6
- `direction`: 0 - 減少, 1 - 増加
- `speed`: 0 ~ 100

**詳細説明:** この関数は、指定された座標の位置を指定された方向と速度でジョグ制御します。

#### jog_absolute

**プロトタイプ:** `jog_absolute(joint_id, angle, speed)`

**説明:** 絶対角度ジョグ制御

**パラメータ:**

- `joint_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `angle`: 角度値
- `speed`: 0 ~ 100

**詳細説明:** この関数は、指定されたジョイントを指定された角度と速度で絶対的にジョグ制御します。

#### jog_increment

**プロトタイプ:** `jog_increment(coord_id, direction, speed)`

**説明:** ステップモード

**パラメータ:**

- `coord_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `direction`: 方向
- `speed`: 0 ~ 100

**詳細説明:** この関数は、指定された座標の位置をステップモードでジョグ制御します。

#### jog_stop

**プロトタイプ:** `jog_stop()`

**説明:** ジョグ動作を停止します

**詳細説明:** この関数は、現在行われているジョグ動作を停止します。

#### pause

**プロトタイプ:** `pause()`

**説明:** 動作を一時停止します

**詳細説明:** この関数は、ロボットアームの動作を一時停止します。

#### resume

**プロトタイプ:** `resume()`

**説明:** 動作を再開します

**詳細説明:** この関数は、一時停止したロボットアームの動作を再開します。

#### stop

**プロトタイプ:** `stop()`

**説明:** 動作を停止します

**詳細説明:** この関数は、ロボットアームの動作を完全に停止します。

#### is_paused

**プロトタイプ:** `is_paused()`

**説明:** マニピュレータが一時停止しているかどうかを判定します

**戻り値:**

- `1` - 一時停止中
- `0` - 一時停止していない
- `-1` - エラー

**詳細説明:** この関数は、ロボットアームが現在一時停止中かどうかを判定します。

#### set_encoder

**プロトタイプ:** `set_encoder(joint_id, encoder)`

**説明:** 単一のジョイントを指定されたポテンシャル値に設定します

**パラメータ:**

- `joint_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `encoder`: 0 ~ 4096

**詳細説明:** この関数は、指定されたジョイントのエンコーダ値を設定します。

#### get_encoder

**プロトタイプ:** `get_encoder(joint_id)`

**説明:** 指定されたジョイントのポテンシャル値を取得します

**パラメータ:**

- `joint_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**戻り値:** `encoder`: 0 ~ 4096

**詳細説明:** この関数は、指定されたジョイントのエンコーダ値を取得します。

#### set_encoders

**プロトタイプ:** `set_encoders(encoders, sp)`

**説明:** マニピュレータの6つのジョイントを指定された位置に同期して実行するように設定します

**パラメータ:**

- `encoders`: エンコーダのリスト
- `sp`: 速度 0 ~ 100

**詳細説明:** この関数は、マニピュレータの6つのジョイントを指定された位置に同期して動かすように設定します。

#### get_encoders

**プロトタイプ:** `get_encoders()`

**説明:** マニピュレータの6つのジョイントのエンコーダ値を取得します

**戻り値:** エンコーダのリスト（list）

**詳細説明:** この関数は、マニピュレータの6つのジョイントのエンコーダ値をリスト形式で取得します。

### 動作状態と設定

#### get_speed

**プロトタイプ:** `get_speed()`

**説明:** 速度を取得します

**戻り値:** `speed`: (int)

**詳細説明:** この関数は、現在の速度設定を取得します。

#### set_speed

**プロトタイプ:** `set_speed(speed)`

**説明:** 速度を設定します

**パラメータ:** `speed`: (int) 0 ~ 100

**詳細説明:** この関数は、ロボットアームの動作速度を設定します。

#### set_joint_min

**プロトタイプ:** `set_joint_min(id, angle)`

**説明:** 指定されたジョイントの最小角度を設定します

**パラメータ:**

- `id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `angle`: 0 - 180

**詳細説明:** この関数は、指定されたジョイントの最小角度を設定します。

#### set_joint_max

**プロトタイプ:** `set_joint_max(id, angle)`

**説明:** 指定されたジョイントの最大角度を設定します

**パラメータ:**

- `id`: (int) ジョイントID
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `angle`: 0 - 180

**詳細説明:** この関数は、指定されたジョイントの最大角度を設定します。

#### get_joint_min_angle

**プロトタイプ:** `get_joint_min_angle(joint_id)`

**説明:** 指定されたジョイントの最小運動角度を取得します

**パラメータ:**

- `joint_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**戻り値:** 角度値（float）

**詳細説明:** この関数は、指定されたジョイントの最小運動角度を取得します。

#### get_joint_max_angle

**プロトタイプ:** `get_joint_max_angle(joint_id)`

**説明:** 指定されたジョイントの最大運動角度を取得します

**パラメータ:**

- `joint_id`: (int)
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**戻り値:** 角度値（float）

**詳細説明:** この関数は、指定されたジョイントの最大運動角度を取得します。

### 表に整理

| 関数名              | プロトタイプ                                | 説明                                                         | 詳細説明                                                     |
| ------------------- | ------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| jog_angle           | `jog_angle(joint_id, direction, speed)`     | ジョグ制御角度                                               | 指定されたジョイントの角度を指定された方向と速度でジョグ制御します。 |
| jog_coord           | `jog_coord(coord_id, direction, speed)`     | ジョグ制御座標                                               | 指定された座標の位置を指定された方向と速度でジョグ制御します。 |
| jog_absolute        | `jog_absolute(joint_id, angle, speed)`      | 絶対角度ジョグ制御                                           | 指定されたジョイントを指定された角度と速度で絶対的にジョグ制御します。 |
| jog_increment       | `jog_increment(coord_id, direction, speed)` | ステップモード                                               | 指定された座標の位置をステップモードでジョグ制御します。     |
| jog_stop            | `jog_stop()`                                | ジョグ動作を停止します                                       | 現在行われているジョグ動作を停止します。                     |
| pause               | `pause()`                                   | 動作を一時停止します                                         | ロボットアームの動作を一時停止します。                       |
| resume              | `resume()`                                  | 動作を再開します                                             | 一時停止したロボットアームの動作を再開します。               |
| stop                | `stop()`                                    | 動作を停止します                                             | ロボットアームの動作を完全に停止します。                     |
| is_paused           | `is_paused()`                               | マニピュレータが一時停止しているかどうかを判定します         | ロボットアームが現在一時停止中かどうかを判定します。         |
| set_encoder         | `set_encoder(joint_id, encoder)`            | 単一のジョイントを指定されたポテンシャル値に設定します       | 指定されたジョイントのエンコーダ値を設定します。             |
| get_encoder         | `get_encoder(joint_id)`                     | 指定されたジョイントのポテンシャル値を取得します             | 指定されたジョイントのエンコーダ値を取得します。             |
| set_encoders        | `set_encoders(encoders, sp)`                | マニピュレータの6つのジョイントを指定された位置に同期して実行するように設定します | マニピュレータの6つのジョイントを指定された位置に同期して動かすように設定します。 |
| get_encoders        | `get_encoders()`                            | マニピュレータの6つのジョイントのエンコーダ値を取得します    | マニピュレータの6つのジョイントのエンコーダ値をリスト形式で取得します。 |
| get_speed           | `get_speed()`                               | 速度を取得します                                             | 現在の速度設定を取得します。                                 |
| set_speed           | `set_speed(speed)`                          | 速度を設定します                                             | ロボットアームの動作速度を設定します。                       |
| set_joint_min       | `set_joint_min(id, angle)`                  | 指定されたジョイントの最小角度を設定します                   | 指定されたジョイントの最小角度を設定します。                 |
| set_joint_max       | `set_joint_max(id, angle)`                  | 指定されたジョイントの最大角度を設定します                   | 指定されたジョイントの最大角度を設定します。                 |
| get_joint_min_angle | `get_joint_min_angle(joint_id)`             | 指定されたジョイントの最小運動角度を取得します               | 指定されたジョイントの最小運動角度を取得します。             |
| get_joint_max_angle | `get_joint_max_angle(joint_id)`             | 指定されたジョイントの最大運動角度を取得します               | 指定されたジョイントの最大運動角度を取得します。             |

## 4. サーボ制御 

#### is_servo_enable

**プロトタイプ:** `is_servo_enable(servo_id)`

**説明:** すべてのステアリングギアが接続されているかどうかを判定します。

**パラメータ:**

- `servo_id` (int):
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**戻り値:**

- `0`: 無効
- `1`: 有効
- `-1`: エラー

**詳細説明:** この関数は、指定されたサーボモーターが有効か無効かを判定し、結果を返します。

#### is_all_servo_enable

**プロトタイプ:** `is_all_servo_enable()`

**説明:** 指定されたステアリングギアが接続されているかどうかを判定します。

**戻り値:**

- `0`: 無効
- `1`: 有効
- `-1`: エラー

**詳細説明:** この関数は、すべての指定されたサーボモーターが有効か無効かを判定し、結果を返します。

#### set_servo_data

**プロトタイプ:** `set_servo_data(servo_no, data_id, value, mode=None)`

**説明:** 指定されたステアリングギアのアドレスにデータパラメータを設定します。

**パラメータ:**

- `servo_no` (int): 関節サーボモーターのシリアル番号
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `data_id`: データアドレス
- `value`: 0 - 4096
- `mode`: 0 - 1バイト値を示す（デフォルト）、1 - 2バイト値を示す

**詳細説明:** この関数は、指定されたサーボモーターの特定アドレスにデータパラメータを設定します。

#### get_servo_data

**プロトタイプ:** `get_servo_data(servo_no, data_id)`

**説明:** 指定されたステアリングギアのアドレスからデータパラメータを読み取ります。

**パラメータ:**

- `servo_no`: 関節サーボモーターのシリアル番号
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7
- `data_id`: データアドレス

**戻り値:**

- `value`: 0 - 4096

**詳細説明:** この関数は、指定されたサーボモーターの特定アドレスからデータパラメータを読み取ります。

#### set_servo_calibration

**プロトタイプ:** `set_servo_calibration(servo_no)`

**説明:** キャリブレーションジョイントアクチュエータの現在の位置を角度のゼロ点として、対応するポテンシャル値を2048に設定します。

**パラメータ:**

- `servo_no`: 関節サーボモーターのシリアル番号
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**詳細説明:** この関数は、指定されたサーボモーターの現在の位置を基準としてキャリブレーションを行い、角度のゼロ点として設定します。

#### release_servo

**プロトタイプ:** `release_servo(servo_id)`

**説明:** 指定されたサーボの電源を切ります。

**パラメータ:**

- `servo_id`:
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**詳細説明:** この関数は、指定されたサーボモーターの電源をオフにします。

#### focus_servo

**プロトタイプ:** `focus_servo(servo_id)`

**説明:** 指定されたサーボの電源を入れます。

**パラメータ:**

- `servo_id`:
  - mycobot / mecharm: int 1-6
  - mypalletizer: int 1-4
  - myArm: int 1-7

**詳細説明:** この関数は、指定されたサーボモーターの電源をオンにします。

### 表に整理

| 関数名                | プロトタイプ                                          | 説明                                                         | 詳細説明                                                     |
| --------------------- | ----------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| is_servo_enable       | `is_servo_enable(servo_id)`                           | すべてのステアリングギアが接続されているかどうかを判定します | 指定されたサーボモーターが有効か無効かを判定し、結果を返します。 |
| is_all_servo_enable   | `is_all_servo_enable()`                               | 指定されたステアリングギアが接続されているかどうかを判定します | すべての指定されたサーボモーターが有効か無効かを判定し、結果を返します。 |
| set_servo_data        | `set_servo_data(servo_no, data_id, value, mode=None)` | 指定されたステアリングギアのアドレスにデータパラメータを設定します | 指定されたサーボモーターの特定アドレスにデータパラメータを設定します。 |
| get_servo_data        | `get_servo_data(servo_no, data_id)`                   | 指定されたステアリングギアのアドレスからデータパラメータを読み取ります | 指定されたサーボモーターの特定アドレスからデータパラメータを読み取ります。 |
| set_servo_calibration | `set_servo_calibration(servo_no)`                     | キャリブレーションジョイントアクチュエータの現在の位置を角度のゼロ点として設定します | 指定されたサーボモーターの現在の位置を基準としてキャリブレーションを行い、角度のゼロ点として設定します。 |
| release_servo         | `release_servo(servo_id)`                             | 指定されたサーボの電源を切ります                             | 指定されたサーボモーターの電源をオフにします。               |
| focus_servo           | `focus_servo(servo_id)`                               | 指定されたサーボの電源を入れます                             | 指定されたサーボモーターの電源をオンにします。               |

## 参考資料

https://note.com/npaka/n/n7f2dd658af7f#yTKaZ

https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/