公開制御I/Fの実装境界と使用上の注意

このページは src/dobot/dobot_ctrl.py および src/dobot/dobot_tcp.py の実装を基準とする。プロジェクト共通制御I/Fは COBOTTA・UR・MG400 の各実装で共用する操作体系であり、DobotCtrl はその MG400向けアダプターである。MG400のメーカーAPI自体を共通I/Fと呼ぶものではない。

公開クラスと実装クラス

DobotCtrl.__init__(dobot_ip="192.168.1.6", instance_name="Ctrl", logger=None, log_level=None, auto_connect=True) は内部に DobotTcp を作成する。connect()、disconnect()、get_current_pose() などは DobotTcp に委譲する。ローカル・リモートのいずれも制御対象は同じMG400であり、リモート構成は ese774_frame が呼出しを転送するだけである。

移動APIの引数を読み違えない

move(target, *, motion_mode=None, coord_type=None, path_blend=None, offset=None, pose=None, speed=None, accel=None, decel=None, is_async=True) は共通I/Fの形を保つ。MG400側の実装は P+PTP→MovJ、P+LINE→MovL、J+PTP→JointMovJ を対象とする。path_blend、decel、pose、CIRCLE、SPLINE は意味を保持した実装が確認できていない。引数が受理されることを、対応する動作が実装済みである証拠として扱わない。

drive(target, *, relative=False, path_blend=None, speed=None, is_async=False) は軸指定・相対移動・速度指定を扱うが、path_blend は未確定である。dev(base, offset) はMG400で表現できる x/y/z/rz の単純加算に限られ、rx/ry および J5/J6 は4軸のMG400では実現できない。

rotate(plane, angle, center, *, path_blend=None, speed=None, is_async=True) は公開されていても軌道コマンドへの変換が未実装である。halt()、stop()、task_stop() は共通I/Fと同義の停止動作が保証されないため、非常停止の代用として使用してはならない。

同期・非同期の2つの意味

SyncDobotClient / AsyncDobotClient は HTTP呼出し側の同期方式を選ぶ。move(..., is_async=...) は MG400の動作完了待ちに関係する。HTTP要求の成功と、実機が安全に目標位置へ到達したことは同義ではない。wait_for_complete() の適用と、状態・アラームの確認を別途行う。

メーカー資料との関係

メーカーのDobotStudio Proユーザーマニュアル(MG400 & M1 Pro)は接続・座標系・安全設定を説明する資料であり、本PythonライブラリのAPI仕様書ではない。MG400メンテナンスマニュアルV1.2(2026-04-23)は点検・安全・アラームの根拠資料である。メーカー資料の操作説明からPython APIの実装済み範囲を推定しない。

導入時の確認

  1. メーカーの安全手順に従い、可動域・ツール・ペイロード・非常停止手段を確認する。

  2. MG400の接続先IPと、HTTPサーバーの待受IP/ポートを別々に確認する。

  3. まず読取系APIで接続と状態を検証し、移動命令は安全確認後に実行する。

  4. 対応未確認の共通I/F操作は使用せず、実機のアラーム・動作完了を監視する。