運用手順:ローカル制御からHTTPクライアントまで

このページは提供された DobotCtrl、DobotTcp、server_fastapi、Config、ese774_frame の実装に基づきます。実機の移動を含む操作は、安全対策を確認した環境でのみ実行してください。

1. 接続前に確認すること

  • MG400のIPアドレスを確認する(初期値 192.168.1.6 は設定例)。

  • 制御PCからDashboard(29999)、Motion(30003)、Feedback(30004)への通信経路を確認する。

  • サーボ状態、動作領域、非常停止手順を確認する。

  • まず状態読み取りのみで接続を検証する。

2. ローカル制御

from dobot.dobot_ctrl import DobotCtrl

robot = DobotCtrl(dobot_ip="192.168.1.6", auto_connect=False)
try:
    if not robot.connect():
        raise RuntimeError("MG400 connection failed")
    print(robot.get_current_pose())
    print(robot.get_current_angle())
finally:
    robot.disconnect()

auto_connect=False では明示的に connect() します。DobotCtrl は DobotTcp に処理を委譲します。

3. FastAPIサーバー

提供された src/dobot/server_fastapi/server.py がサーバー本体です。プロジェクトルートから以下で起動します。

python -m dobot.server_fastapi.server

このモジュールは FastApiServer(device_cls=DobotCtrl, router_cls=None, api_spec=None, object_name="dobot", ...) を使用します。専用RouterとPydanticリクエストモデルを必須としない、ese774_frame の完全自動ディスパッチです。

サーバーの初期設定は Config.SERVER_IP="127.0.0.1"、SERVER_PORT=8000、DOBOT_IP="192.168.1.6" です。別ホストから接続するにはサーバーのbindアドレスとネットワーク設定の変更が必要です。

注意: src/dobot/server.py は公開クライアントのエクスポート用であり、サーバー起動モジュールではありません。

4. 同期クライアント

from dobot.server_fastapi import SyncDobotClient

client = SyncDobotClient(server_ip="127.0.0.1", server_port=8000)
print(client.get_current_pose())
print(client.get_current_angle())

同期クライアントはHTTP要求の完了を待ちます。ロボット移動完了まで待つかどうかは別の契約であり、move(..., is_async=...) が制御します。

5. 非同期クライアント

AsyncDobotClient は ese774_frame.clients.async_device_client.AsyncDeviceClient を継承します。実際の呼び出し・後処理はクライアント実装に従ってください。ここでは動作未検証のイベントループ例を追加しません。

6. 移動コマンドの同期契約

DobotTcp.move() の引数には target、motion_mode、coord_type、path_blend、offset、pose、speed、accel、decel、is_async があります。is_async=True は受付応答後に戻り、is_async=False は Sync() によって完了を待ちます。pose 指定は現実装では未対応として False を返します。

7. 設定の読み込み

Config.load_yaml(path) はクラス属性を書き換えます。Config(yaml_path=path) はインスタンス属性だけを更新します。サーバーの Config 利用形態に合わせて設定を反映してください。

8. 参照先