共通制御 I/F と MG400 実装の契約
この共通 I/F は本プロジェクト群で定義されたもので、COBOTTA、UR、DOBOT に共通する操作名と呼出し形式を目指す。COBOTTA の I/F を DOBOT に流用したという意味ではない。 各機種の実現可能な操作は異なり、共通メソッドの存在は同一の物理動作を保証しない。
DobotCtrl は公開 I/F 層で、各メソッドを DobotTcp に委譲する。DobotTcp が MG400 固有のコマンド、状態取得、座標変換を実装する。dobot_api.py はメーカー提供APIであり、dobot_api_ext.py は追加処理を担う。ese774_frame はこの公開 I/F をネットワーク越しに透過公開する通信基盤であり、共通 I/F の定義元ではない。
操作の意味と例外
共通操作 |
MG400 実装の扱い |
|---|---|
|
制御権取得・解放に対応する独立コマンドがないため、コマンドを送信せず |
|
|
|
フィードバックの |
|
共通 I/F と同義の停止動作が確認できず、 |
|
接続ハンドの仕様が定まらず未実装。 |
|
独立減速度コマンドがなく |
|
MG400 の |
|
最後に本ライブラリから設定した値を返す。実速度の読み取りではない。 |
座標と関節の公開表現
共通 Cartesian 座標は [x, y, z, rx, ry, rz]、MG400 は [x, y, z, r]。DobotTcp._p_to_mg400() は rx と ry が非ゼロの場合 ValueError を送出し、rz を r に対応させる。MG400 から読み取る際は rx=ry=0 を補う。
共通関節座標は [j1, j2, j3, j4, j5, j6]、MG400 は [j1, j2, j3, j4]。MG400 に存在しない j5、j6 はゼロが必須で、読取時にはゼロを補う。6成分の公開表現は6自由度のハードウェアを意味しない。
リモート公開時の意味
サーバーは FastApiServer(device_cls=DobotCtrl, router_cls=None, api_spec=None, object_name="dobot", ...) を用いる。同期・非同期クライアントの通信方式が変わっても、サーバー側で実行する制御は DobotCtrl を通る。HTTP要求の完了と、ロボットの運動完了は区別する。
出典: 提供された dobot_ctrl.py、dobot_tcp.py、server_fastapi/server.py、ese774_frame 関連ソース。