# プロジェクトの位置付けと共通制御 I/F `dobot` は **DOBOT MG400 を、プロジェクトで定義したロボット共通制御 I/F に適合させる実装**である。MG400 は対応ハードウェアであって、共通 I/F の設計主体ではない。共通 I/F は COBOTTA や Universal Robots (UR) などにも適用するプロジェクト側の設計であり、特定メーカーの API を標準としたものではない。 ```text アプリケーション / 自動化システム │ プロジェクト共通ロボット制御 I/F │ ┌─────────┼─────────┐ │ │ │ DobotCtrl COBOTTA系 UR系 │ 各実装 各実装 DobotTcp │ DOBOT MG400 TCP/IP API │ MG400 実機 ``` 上図は **共通 I/F の設計関係**を示す。COBOTTA/UR 側の実際のクラス名や対応範囲は、このリポジトリのソースからは検証できないため記載していない。 ## 各層の責務 - **共通 I/F**:`move`、`drive`、`take_arm`、`give_arm`、`turn_on_motor`、`reset_error`、状態取得などの呼び出し形を揃える。 - **`DobotCtrl`**:共通 I/F の MG400 向け公開窓口。処理を `DobotTcp` に委譲する。 - **`DobotTcp`**:MG400 の座標変換、コマンド変換、TCP 接続、リアルタイム状態の管理を担う。 - **`dobot_api.py` / 拡張層**:メーカーの TCP/IP API にアクセスする。メーカー提供コードと独自の拡張を分離する。 - **`ese774_frame`**:`DobotCtrl` の公開メソッドと property を透過的に HTTP/JSON へ橋渡しする。**ロボット共通 I/F を定義するものではない**。 機種間で呼び出し形が共通でも、動作能力や意味が自動的に同一になるわけではない。未対応操作は実装で明示的に区別し、MG400 に存在しない自由度や停止機能を暗黙に補完しない。 ## ローカル制御とリモート制御 ローカルでは `DobotCtrl` を直接使用する。リモートではサーバー内で同じ `DobotCtrl` を生成し、`ese774_frame` が公開 API を透過的に転送する。**リモート用の別のロボット制御仕様を定義しない**。通信完了とロボットの動作完了は区別する。 ## 公式資料との役割分担 メーカーの DobotStudio Pro ユーザーマニュアルは MG400 の設定・座標系・操作・安全機能の資料であり、本プロジェクトの Python 共通 I/F の仕様書ではない。MG400 メンテナンスマニュアルは安全・点検・アラームの一次資料であり、Python メソッドの実装有無はコードで判断する。