操縦画面 - team-continue/CoRE2025_Wiki GitHub Wiki
画面
メイン画面
経緯
チーム内で、ロボットの操縦画面は某TPSゲームのような画面がいいというお話になったので、画面のベースデザインが決まった。 機体作成過程を通して、○○があったらいいよねという機能を追加した。
機能一覧
画面と各機能は次のように対応している。
- メイン画面表示機能
- カメラ画面表示
- カメラ画面切り替え
- キーボード/マウスのハンドリング
- ROS Shutdownのハンドリング
- レティクル表示機能
- ターゲットアシスト表示
- 残弾表示
- 残弾赤表示
- HP表示機能
- N%以下赤表示
- 減少量表示
- 速度表示機能
- 残弾表示機能
- RELOAD赤表示
- Q.E.表示機能
- コンパス表示機能
- 敵ラベル方向表示
- 試合・機体パラメータ設定機能
- 設定画面表示
- パラメータ設定操作
- パラメータファイル保存
- パラメータ通知
- でかいメッセージ表示機能
- DESTORYED表示
- ENGAGE表示
- 敵ラベル表示機能
- マーカー表示
- 選択マーカーハイライト表示
- ハザード表示機能
- 緊急停止詳細表示
ログ表示機能- メッセージ表示とかできたらいいかなと思っていたが、重要度が低かったので未実装
状態表示機能無線状態CPU使用率ハード接続状態バッテリー残量表示- 今回はリソースがなかったので未実装
機能一覧
メイン画面表示機能
メインのWidgetを表示する。ROS 2とQtを使う必要があり、似たシステムとしてrviz2があったので参考にした。
-
カメラ画面表示
- 画面にカメラ画面を表示する。タイムアウト表示は正常に動く想定で実装しなかった。
-
カメラ画面切り替え
- 機体の上部、下部にあるカメラ映像をトピックで切り替える。
-
キーボード/マウスのハンドリング
- デバッグも兼ねて、一応キーボード周りから操作できるようにしておく。
-
ROS Shutdownのハンドリング
ノードを落とした時に画面が終了するようする。
レティクル表示機能
画面上に、ディスクが飛んでいく方向にレティクルを表示する。
-
ターゲットアシスト表示
よくわからん
-
残弾表示
- レティクル周辺に、現在の残弾バーを表示する。
-
残弾赤表示
- 現在の残弾数が0になると、残弾バーを赤色で表示する。
HP表示機能
画面左下に、オートレフェリーから取得できるデータを使用し、HPバーとHP数値を表示する。表示する数値の上限値はトピックを受け取ることで設定する。
-
N%以下赤表示
- 現在のHP情報が設定されている上限の30%以下になると、HPバーが赤色で表示される。
-
減少量表示
- 現在のHP情報から減少した分をHP数値上部に表示する。減少した分は赤色で表示し、ゆっくり減少する。
速度表示機能
現在の機体速度を表示する。とりあえずcmd_velの値を変換して表示してた。(多分)
残弾表示機能
画面右下に、残弾管理を行うノードから取得できるデータを使用し、残弾数値を表示する。表示する数値の上限値はトピックを受け取ることで設定する。
- RELOAD赤表示
- 現在の残弾数が0になると残弾数値は、赤色で「RELOAD」へ表示を変更する。
Q.E.表示機能
発射角度を表示する。ここのモータが動いているときに画面をつけていなかったので、どんな感じで動くかよくわからない。
コンパス表示機能
画面下側に、IMUから取得できる姿勢データを使用し、コンパスバーを表示する。
- 敵ラベル方向表示
- 実装できたらいいな
試合・機体パラメータ設定機能
各ノードのパラメータを動的に変更するための設定画面を表示する。
- 設定画面表示
- 操作入力によって、設定画面を表示、非表示にする。
- パラメータ設定操作
- 操作入力によって、パラメータの項目選択、パラメータの数値変更を行う。
- パラメータファイル保存
- 現在の設定情報を特定のyamlファイルに保存する。
- パラメータをファイルに保存する。
- パラメータ通知
- パラメータを保存後、設定ファイルから指定されたノードにパラメータを通知する。
でかいメッセージ表示機能
画面中央に、大きくメッセージを表示する。表示されるメッセージはフェードイン・アウトし、程よく点滅する。
-
DESTROYED表示
- 機体が撃破状態になるときに赤色で「DESTROYED」を表示する。
-
ENGAGE表示
- 機体が撃破状態から復帰するときに緑色で「ENGAGE」を表示する。
敵ラベル表示機能
現在選択可能な標的にマーカーを白色で表示する。
- 選択マーカーハイライト表示
- 現在選択されている標的のマーカーを赤色で表示する。
ハザード表示機能
画面上部に、機体状態管理ノードから取得できるデータを使用し、警告を表示する。
-
緊急停止詳細表示
- 機体の状態に合わせて画面下部に詳細を赤色文字で表示する。
機体の状態は物理緊停、ソフト緊停、通信系異常緊停、撃破状態の4つがあり、状態に合わせてメッセージが表示される。
ソフト
ソフトウェアのアーキテクチャは以下のような形になった。特徴として、NodeとWidgetの間にCoreを挟むことで切り離して動かせるようになっており、機能の追加が楽だった。WidgetからNodeへの通知は、Manager経由で行い、データの流れが一方通行になってよかった。
動作確認について
画面の動作確認は、カメラがなかったので、Unity Editorで通信部分はROS-TCP-ConnectorとROS-TCP-Endpointを利用し、カメラはUnitySensorsを利用した。
動作確認用の操作を行う画面をUniyで作ることができた。
動作確認用操作パネル原案
⚠️工事中⚠️