app.joypad_ctrl module

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

class JoyPadCtrl(parent, client, input_device, arm_ctrl, logger=None)[ソース]

ベースクラス: object

JoyPad 入力を用いて COBOTTA をリアルタイム制御するためのコントローラクラス。

本クラスは以下の役割を担う。

  • JoyPad 入力デバイス(InputGrpcClient)からの入力取得

  • gRPC 経由で JoyPadClient(ctrl)へ制御指令を送信

  • Arm 制御(Take / Give)の仲介

  • JoyPad の開始 / 停止、HALT 処理の管理

  • 現在位置 / 関節角度の定期ポーリングと GUI 反映

本クラスは GUI(Qt)イベント駆動で動作し、 内部では QTimer による周期処理を用いる。

パラメータ:
  • parent (Any)

  • client (cobotta2.server_grpc.JoyPadClient)

  • input_device (cobotta2.pad.input_grpc_client.InputGrpcClient)

  • arm_ctrl (CobottaBcapArm)

  • logger (x_logger.XLogger)

_on_curpos_timer()[ソース]

現在位置 / 関節角度を周期的に取得し GUI に反映する。

Behavior:
  • 表示モードに応じて以下を取得する
    • "pos" : 現在位置(XYZ + RPY)

    • "angle" : 関節角度(J1〜J6)

  • 取得した値を対応する LineEdit に表示する

メモ

  • JoyPad 実行中のみ動作する

  • 接続状態が無効な場合は処理しない

戻り値の型:

None

_on_joypad_start()[ソース]

JoyPad の開始ボタンが押されたときのスロット。

Behavior:
  • Arm が未取得の場合は Take Arm を実行

  • サーバ側の joypad_start() を呼び出す

  • 入力ポーリング用 QTimer を開始

  • 現在座標表示用 QTimer を開始

  • UI ボタン状態を JoyPad 実行中に切り替える

メモ

  • 既に実行中の場合は何も行わない

戻り値の型:

None

_on_joypad_stop()[ソース]

JoyPad の停止ボタンが押されたときのスロット。

Behavior:
  • 入力ポーリング用 QTimer を停止

  • 現在座標表示用 QTimer を停止

  • サーバ側の joypad_stop() を呼び出す

  • UI ボタン状態を停止状態に戻す

メモ

  • JoyPad 未実行時に呼ばれた場合は何も行わない

戻り値の型:

None

_on_mode_changed(text)[ソース]

座標表示モード切り替え時のスロット。

パラメータ:

text (str) -- コンボボックスで選択された表示モード文字列。 "pos" / "angle" / その他。

戻り値の型:

None

Behavior:
  • 表示モードを内部変数 _display_mode に反映する

  • ログに現在の表示モードを出力する

_update()[ソース]

JoyPad 入力を周期的に処理するステップ関数。

本メソッドは QTimer から周期的に呼び出され、 JoyPad の入力状態を取得し、必要に応じて gRPC 経由で COBOTTA へ制御指令を送信する。

Behavior:
  • 入力デバイスの step() を実行

  • dpose(7要素)の取得

  • active → neutral 遷移時に HALT を送信

  • active 状態では Arm が取得済みであることを保証

メモ

  • JoyPad が停止中の場合は即 return

  • 接続状態・クライアント初期化状態を常に確認する

戻り値の型:

None

close()[ソース]

アプリケーション終了時の JoyPad 後始末処理。

Behavior:
  • JoyPad 実行中であれば停止処理を行う

  • Arm を解放する(gRPC 経由)

  • 入力デバイスのクローズ処理(将来拡張用コードあり)

メモ

  • 例外は捕捉され、ログに記録される

戻り値の型:

None

get_arm_ctrl()[ソース]

内部で保持している Arm 制御オブジェクトを取得する。

戻り値:

Arm の Take / Give 状態を管理する制御クラス。

戻り値の型:

CobottaBcapArm

get_client()[ソース]

内部で保持している JoyPadClient を取得する。

戻り値:

gRPC 経由の制御クライアント。

戻り値の型:

JoyPadClient

give_arm()[ソース]

JoyPad 経由で Arm の制御権を解放する。

戻り値:

正常に Arm を解放できた場合は True、 失敗時は False を返す。

戻り値の型:

bool

メモ

  • 実処理は CobottaBcapArm に委譲される

take_arm()[ソース]

JoyPad 経由で Arm の制御権を取得する。

戻り値:

正常に Arm を取得できた場合は True、 失敗時は False を返す。

戻り値の型:

bool

メモ

  • 実処理は CobottaBcapArm に委譲される