プロジェクトの位置付けと共通制御 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 メソッドの実装有無はコードで判断する。