app.cobotta_orin2_ctrl module

K.NAKADA, kengo.nakada@gmail.com, kengo.nakada@mat.shimane-u.ac.jp

class CobottaOrin2Ctrl(parent, logger=None)[ソース]

ベースクラス: object

ORiN2 / FastAPI ベースの COBOTTA 制御を行うコントローラクラス。

本クラスは以下の責務を持つ。

  • SyncCobottaClient を用いた同期型 COBOTTA 制御の初期化

  • モータ ON / OFF 操作の仲介

  • アーム Take / Give 操作の実行

  • GUI(CobottaCtrl / JoyPad)のボタン状態制御

JoyPad 経由の gRPC 制御とは異なり、本クラスは ORiN2 / FastAPI サーバを I/F とする制御系を担当する。

パラメータ:

logger (x_logger.XLogger | None)

_on_give_arm()[ソース]

UI の「Give Arm」ボタンが押されたときのスロット。

Behavior:
  • CobottaCtrl 側の Take / Give ボタン状態を更新する

  • JoyPad 側の Take / Give ボタン状態を更新する

メモ

  • 実際のアーム解放処理は本メソッドでは行わない

  • UI 表示状態の同期のみを担当する

戻り値の型:

None

_on_take_arm()[ソース]

UI の「Take Arm」ボタンが押されたときのスロット。

Behavior:
  • CobottaCtrl 側の Take / Give ボタン状態を更新する

  • JoyPad 側の Take / Give ボタン状態を更新する

メモ

  • 実際のアーム取得処理は本メソッドでは行わない

  • UI 操作と制御処理は意図的に分離されている

戻り値の型:

None

give_arm()[ソース]

COBOTTA のアーム制御権を解放する。

戻り値:

正常にアーム解放できた場合は True、 失敗または例外発生時は False を返す。

戻り値の型:

bool

Behavior:
  • SyncCobottaClient.release_arm() を呼び出す

  • 成功時は内部フラグ _arm_taken を False に更新する

メモ

  • クライアント未初期化時は即座に False を返す

init()[ソース]

SyncCobottaClient を生成・初期化する。

Behavior:
  • Config に定義された SERVER_IP / SERVER_PORT を用いて SyncCobottaClient を生成する

  • 生成したクライアントを内部に保持する

例外:

RuntimeError -- Config が未初期化の場合に送出される。

戻り値の型:

None

メモ

  • 本メソッドは __init__ から自動的に呼び出される

  • ネットワーク接続自体の成否はここでは判定しない

take_arm()[ソース]

COBOTTA のアーム制御権を取得する。

戻り値:

正常にアーム取得できた場合は True、 失敗または例外発生時は False を返す。

戻り値の型:

bool

Behavior:
  • 一定時間スリープ後に SyncCobottaClient.take_arm() を呼び出す

  • 成功時は内部フラグ _arm_taken を True に更新する

メモ

  • ORiN2 側の状態安定を考慮し、呼び出し前に待機時間を挿入している

trun_off_motor()[ソース]

COBOTTA のモータを停止(OFF)する。

戻り値:

モータ停止に成功した場合は True、 クライアント未初期化または失敗時は False を返す。

戻り値の型:

bool

Behavior:
  • SyncCobottaClient.turn_off_motor() を呼び出す

  • 失敗時にはエラーログを出力する

trun_on_motor()[ソース]

COBOTTA のモータを起動(ON)する。

戻り値:

モータ起動に成功した場合は True、 クライアント未初期化または失敗時は False を返す。

戻り値の型:

bool

Behavior:
  • SyncCobottaClient.turn_on_motor() を呼び出す

  • 失敗時にはエラーログを出力する