app.cobotta_bcap_arm module

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

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

ベースクラス: object

b-CAP 制御された COBOTTA のアーム占有状態(Take / Give)のみを管理するクラス。

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

  • JoyPadClient を通じてアームの取得 / 解放要求を送信する

  • 「このクライアントがアームを保持しているか」という状態を内部に保持する

  • アーム状態に応じて UI ボタンの有効 / 無効を切り替える

実際のロボット運動制御や座標制御は一切行わない。 本クラスは「状態管理 + UI 反映」に限定された薄い制御層である。

パラメータ:
  • parent (Any)

  • client (cobotta2.server_grpc.JoyPadClient)

  • logger (x_logger.XLogger)

_on_give_arm()[ソース]

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

Behavior:
  • give_arm() を呼び出してアーム解放を試みる

  • 失敗した場合はログを出力して終了する

  • 成功した場合は UI ボタンの有効 / 無効状態を更新する

メモ

  • Take Arm と対称な状態遷移を UI に反映する

  • UI 非存在環境でも例外を出さない設計になっている

戻り値の型:

None

_on_take_arm()[ソース]

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

Behavior:
  • take_arm() を呼び出してアーム取得を試みる

  • 失敗した場合はログを出力して終了する

  • 成功した場合は UI ボタンの有効 / 無効状態を更新する

メモ

  • UI の存在を前提としないため、AttributeError は無視される

  • JoyPad 側 / CobottaCtrl 側の両方のボタン状態を同時に制御する

戻り値の型:

None

property arm_taken: bool

現在このクライアントがアームを保持しているかを返す。

戻り値:

True : アームを保持している False : アームを保持していない

戻り値の型:

bool

メモ

  • 実機の状態を直接問い合わせるものではない

  • 本クラス内で管理している状態フラグの参照のみを行う

give_arm()[ソース]

アームの解放(Give Arm)を要求する。

戻り値:

True : アーム解放に成功、または元々保持していない False : 解放要求が失敗した場合

戻り値の型:

bool

Behavior:
  • アームを保持していない場合は RPC を呼ばず True を返す

  • JoyPadClient.give_arm() を呼び出し、成功時のみ内部状態を更新する

take_arm()[ソース]

アームの取得(Take Arm)を要求する。

戻り値:

True : アーム取得に成功、または既に取得済み False : 取得要求が失敗した場合

戻り値の型:

bool

Behavior:
  • すでにアームを保持している場合は RPC を呼ばず True を返す

  • JoyPadClient.take_arm() を呼び出し、成功時のみ内部状態を更新する

  • 内部状態 _arm_taken は UI 状態制御の判断材料としてのみ使用される