操縦画面 - team-continue/CoRE2025_Wiki GitHub Wiki

Home > ソフトウェア > 操作画面

画面

メイン画面

camera_on

経緯

チーム内で、ロボットの操縦画面は某TPSゲームのような画面がいいというお話になったので、画面のベースデザインが決まった。 機体作成過程を通して、○○があったらいいよねという機能を追加した。

機能一覧

画面と各機能は次のように対応している。

メイン画面_説明

  • メイン画面表示機能
    • カメラ画面表示
    • カメラ画面切り替え
    • キーボード/マウスのハンドリング
    • ROS Shutdownのハンドリング
  • レティクル表示機能
    • ターゲットアシスト表示
    • 残弾表示
    • 残弾赤表示
  • HP表示機能
    • N%以下赤表示
    • 減少量表示
  • 速度表示機能
  • 残弾表示機能
    • RELOAD赤表示
  • Q.E.表示機能
  • コンパス表示機能
    • 敵ラベル方向表示
  • 試合・機体パラメータ設定機能
    • 設定画面表示
    • パラメータ設定操作
    • パラメータファイル保存
    • パラメータ通知
  • でかいメッセージ表示機能
    • DESTORYED表示
    • ENGAGE表示
  • 敵ラベル表示機能
    • マーカー表示
    • 選択マーカーハイライト表示
  • ハザード表示機能
    • 緊急停止詳細表示
  • ログ表示機能
    • メッセージ表示とかできたらいいかなと思っていたが、重要度が低かったので未実装
  • 状態表示機能
    • 無線状態
    • CPU使用率
    • ハード接続状態
    • バッテリー残量表示
    • 今回はリソースがなかったので未実装

機能一覧

メイン画面表示機能

メインのWidgetを表示する。ROS 2とQtを使う必要があり、似たシステムとしてrviz2があったので参考にした。

  • カメラ画面表示

    • 画面にカメラ画面を表示する。タイムアウト表示は正常に動く想定で実装しなかった。
  • カメラ画面切り替え

    • 機体の上部、下部にあるカメラ映像をトピックで切り替える。
  • キーボード/マウスのハンドリング

    • デバッグも兼ねて、一応キーボード周りから操作できるようにしておく。
  • ROS Shutdownのハンドリング

    • ノードを落とした時に画面が終了するようする。

レティクル表示機能

画面上に、ディスクが飛んでいく方向にレティクルを表示する。

  • ターゲットアシスト表示

    • よくわからん
  • 残弾表示

    • レティクル周辺に、現在の残弾バーを表示する。
  • 残弾赤表示

    • 現在の残弾数が0になると、残弾バーを赤色で表示する。

HP表示機能

HP動作

画面左下に、オートレフェリーから取得できるデータを使用し、HPバーとHP数値を表示する。表示する数値の上限値はトピックを受け取ることで設定する。

  • N%以下赤表示

    • 現在のHP情報が設定されている上限の30%以下になると、HPバーが赤色で表示される。
  • 減少量表示

    • 現在のHP情報から減少した分をHP数値上部に表示する。減少した分は赤色で表示し、ゆっくり減少する。

速度表示機能

速度動作

現在の機体速度を表示する。とりあえずcmd_velの値を変換して表示してた。(多分)

残弾表示機能

残弾動作

画面右下に、残弾管理を行うノードから取得できるデータを使用し、残弾数値を表示する。表示する数値の上限値はトピックを受け取ることで設定する。

  • RELOAD赤表示
    • 現在の残弾数が0になると残弾数値は、赤色で「RELOAD」へ表示を変更する。

Q.E.表示機能

QE動作

発射角度を表示する。ここのモータが動いているときに画面をつけていなかったので、どんな感じで動くかよくわからない。

コンパス表示機能

コンパス動作

画面下側に、IMUから取得できる姿勢データを使用し、コンパスバーを表示する。

  • 敵ラベル方向表示
    • 実装できたらいいな

試合・機体パラメータ設定機能

setting

各ノードのパラメータを動的に変更するための設定画面を表示する。

  • 設定画面表示
    • 操作入力によって、設定画面を表示、非表示にする。
  • パラメータ設定操作
    • 操作入力によって、パラメータの項目選択、パラメータの数値変更を行う。
  • パラメータファイル保存
    • 現在の設定情報を特定のyamlファイルに保存する。
    • パラメータをファイルに保存する。
  • パラメータ通知
    • パラメータを保存後、設定ファイルから指定されたノードにパラメータを通知する。

でかいメッセージ表示機能

画面中央に、大きくメッセージを表示する。表示されるメッセージはフェードイン・アウトし、程よく点滅する。

  • DESTROYED表示

    • 機体が撃破状態になるときに赤色で「DESTROYED」を表示する。

    msg_destroy

  • ENGAGE表示

    • 機体が撃破状態から復帰するときに緑色で「ENGAGE」を表示する。

    msg_engage

敵ラベル表示機能

現在選択可能な標的にマーカーを白色で表示する。

  • 選択マーカーハイライト表示
    • 現在選択されている標的のマーカーを赤色で表示する。

ハザード表示機能

emergency

画面上部に、機体状態管理ノードから取得できるデータを使用し、警告を表示する。

  • 緊急停止詳細表示

    • 機体の状態に合わせて画面下部に詳細を赤色文字で表示する。

    機体の状態は物理緊停、ソフト緊停、通信系異常緊停、撃破状態の4つがあり、状態に合わせてメッセージが表示される。

ソフト

ソフトウェアのアーキテクチャは以下のような形になった。特徴として、NodeとWidgetの間にCoreを挟むことで切り離して動かせるようになっており、機能の追加が楽だった。WidgetからNodeへの通知は、Manager経由で行い、データの流れが一方通行になってよかった。

image

動作確認について

画面の動作確認は、カメラがなかったので、Unity Editorで通信部分はROS-TCP-ConnectorとROS-TCP-Endpointを利用し、カメラはUnitySensorsを利用した。

動作確認用の操作を行う画面をUniyで作ることができた。

動作確認用操作パネル原案

⚠️工事中⚠️