運用手順:ローカル制御から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 利用形態に合わせて設定を反映してください。