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)[ソース]
ベースクラス:
objectJoyPad 入力を用いて 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