プロジェクトの位置付けと共通制御 I/F
dobot は DOBOT MG400 を、プロジェクトで定義したロボット共通制御 I/F に適合させる実装である。MG400 は対応ハードウェアであって、共通 I/F の設計主体ではない。共通 I/F は COBOTTA や Universal Robots (UR) などにも適用するプロジェクト側の設計であり、特定メーカーの API を標準としたものではない。
アプリケーション / 自動化システム
│
プロジェクト共通ロボット制御 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 メソッドの実装有無はコードで判断する。