2022 年 2 月 8 日
令和 3 年度

情報・ネットワーク工学専攻

コンピュータ・サイエンスプログラム

修士論文発表会

FPGA を用いたコンシューマーゲーム機拡張システムの開発〜リングフィットアドベンチャーを例として〜
コンピュータ・サイエンスプログラム

1.

学籍番号:2031096

滝川潤

はじめにコロナウイルス感染症の影響から手軽に行えるフィットネスの需要が高まっている [1]．本研究で着目した任天堂リングフィットアドベンチャーは任天堂
Switch 向けのフィットネスゲームである．リングフィットアドベンチャーでは任天堂 Switch の 3D センサコントローラと専用のリングを組み合わせることで，腕，お腹，足など体全体のトレーニングを可能にしている．しかし，他のフィットネスゲームと比較すると．さらに運動効果を高められる可能性がある．しかし，任天堂 Switch はコンシューマーゲーム機であることもあり，機能の拡張が難しい．
そこで本研究では映像信号を介したコンシューマーゲーム機向けの機能拡張システムを提案する．作成するシステムでは，リングフィットアドベンチャーの運動効果を向上させるための機能 (コンボ数表示機能，文字認識機
能，ピンチ時応援機能) を拡張する．既存の映像コンテンツ (ゲーム機やテレビなど) をリアルタイムに修正するためには，高速に映像をキャプチャして映像信号を変化させなければならない．そのため，本研究では FPGA(FieldProgrammable Gate Array) を用いたシステムを作成する．また同様のシステムを実現する他の技術との比較評価を行い，本システムの利点について調査する．

2.

成見研究室

図 1: 運動結果画像

既存研究・技術

RingFit Ranker[2] はリングフィットアドベンチャーで表示される運動消費カロリーを使って他人と競い合える Twitter の Bot システムである．しかし，RingFit Ranker を使用するにはユーザーがゲーム内画像をツイートするという手間を間に挟む必要がある．また，RingFit Ranker はゲーム内で表示される種目ごとの運動結果データ (図 1) を活用できていなかった．
Ikalog[3] は任天堂 Splatoon 向けのリアルタイム映像読み取りシステムである．Ikalog はゲーム内データを抽出する点が本研究と共通しているが，本研究では FPGA を使用することでゲーム映像に対しリアルタイムにコンボ数などの映像効果付与を行う点で異なっている．
Auangkun らはテレビのニュースなどで手話映像の表示されているワイプのサイズをリアルタイムに拡大する専用システムを FPGA を使って開発した [4]．本研究とは FPGA を用いて映像信号を変化させることは共通しているが，本研究では映像信号内からデータを抽出したり，取得したデータに応じた映像処理を行う点が異なる．

3.

システム概要3.1

システム設計の方針

図 2: 運動中の姿勢とゲームエフェクト
運動毎には区別していない．本システムでは自動的に運動種目ごとのデータを使ってランキングを行えるものを目指している．ただし本研究では文字をFPGA で認識するところまでを研究の範囲としておりその後の処理までは開発しない．
また，(3) のために，ゲーム内で相手からの攻撃を受け体力ゲージが減ったときに表示される図 3 のような画面の外側に赤みがかかるエフェクトを検知してユーザーを応援する音声を出力する．例えば好きなアイドルや声優などの音声をあらかじめ応援音声として登録してゲームのピンチ時に出力することによってゲーム自体にさらなる楽しさを追加できる．
このような機能を追加するには任天堂 Switch には何も手を加えず，描画の遅れを 1 フレームの時間よりも十分短くすることを前提としている．そこで，任天堂 Switch の映像出力を受け取り，映像信号を途中で改変するための FPGA を使った専用システムを開発する．

運動では単に運動量を増やすよりも正しい姿勢で運動を行い，継続して運動をこなすことで運動効果が向上する．そこで，本システムではリングフィッ
トアドベンチャーに以下の機能を追加する．

(1). 適切な運動が出来た場合に画面に映像効果を出す(2). 運動の種類毎の成果を記録したり競い合うために文字を認識する(3). ゲーム内でピンチのときに応援音声を出力する(1) では，運動が正しく行えたかどうかによって違う Best, Good, 白文
字というエフェクト表示 (図 2) を認識する．そして連続して正しい運動が出来た際にコンボ数を画面上に表示することで，ユーザーに正しい姿勢で運動を行うことを促進する．
(2) のために，図 1 のような運動の種類ごとの回数を文字認識する．
複数人での運動は運動モチベーションを高めることも分かっている [5]．そこで，文字認識を行うことができれば，結果を記録したり他のユーザーと競い合うことが可能になる．元々のゲームでも累計データで競い合う機能や，簡単にスクリーンショットを Twitter に投稿出来る機能があるが，細かい図 3: ゲーム内のピンチ時の様子

1図 6: 文字認識エンジンの出力結果
表 1: 回路資源の使用状況
機能名

HDMI 入出力
文字認識機能コンボ数表示機能
ピンチ時応援機能
使用可能な回路資源

図 4: ハードウェアブロック図

4.2

LUT (%)
724 ( 1.4)
3,711 ( 7.0)
1,643 ( 3.1)
155 ( 0.3)
53,200 (100.0)

FF (%)
576 ( 0.5)
5,281 ( 5.0)
152 ( 0.1)
106 ( 0.1)
106,400 (100.0)

BRAM (%)
1.0 ( 0.7)
130.5 ( 93.2)
0.0 ( 0.0)
4.0 ( 2.9)140.0 (100.0)

遅延評価

ピクセル単位の遅延評価を行ったところ，本システムでは元のゲーム機の映像出力から 13 ピクセル分しか遅延していないことが分かった．同様のシステムは USB カメラやキャプチャユニットなどを PC に接続しても実現出来るが，数フレーム分 (少なくとも数百万ピクセル分) の遅延が発生していた．遅延が大きいとゲーム自体が成り立たないため低遅延であることは重要である．

図 5: ゲーム内エフェクトに応じた映像処理の様子

3.2

4.3

コンボ数表示機能システムの構成図を図 4 に示す．任天堂 Switch の HDMI 出力からの映像信号が HDMI デコーダへと入力される．Best Good 検出モジュールではBest Good のカラーフィルタリング後に大きさを計算して Best Good を検知する．Best や Good の検出回数が一定回数を超えると映像効果付与モジュールでコンボ数を画面に表示する．

3.3

文字認識機能個別の運動記録の成果を他人と共有するために，運動結果画面からの文字認識を行う．ゲーム内でこの画面 (図 1) はしばらく表示しておくことが出来るため，リアルタイムに文字認識する必要はない．しかし認識しなければならない文字数が多いため，エフェクト検知モジュールのような色や大きさだけで検知するのは難しい．そのため，運動結果の文字認識には FPGA ボード上の CPU を使った処理を行う．CPU は FPGA よりも速度が遅いため，HDMI 信号の生のタイミングでピクセル情報を処理することは出来ない．このため VRAM に保存された情報にアクセスして文字認識を行う．また，本システムでは独自の文字認識エンジンを K 近傍法を用いて実装した．

3.4

回路資源評価表 1 は本システムで使用している FPGA 内の回路資源の使用率を示している．コンボ数表示機能での Best Good 検出では，色範囲のピクセルの検出後に水平・垂直方向の最大長を計算している．垂直方向のピクセル最大長を計算するために，水平ピクセル毎の垂直方向連続ピクセル数を記憶する必要があった．検出したいオブジェクトごとに水平ピクセル数のカウンタ 1 つと垂直ピクセル数のカウンタ ×(水平ピクセル数) を分散 RAM を使用して作成しているが，LUT は全体の 3.1%しか使用されていない．そのため回路資源の観点から本システムはさらに多くのオブジェクトを検知することが可能であることが分かった．

5.

おわりに

本研究では任天堂リングフィットアドベンチャー向けの運動モチベーション向上システムを提案した．機能の拡張が本来難しかったコンシューマーゲー
ムに対し，FPGA を用いてゲーム機からの HDMI 映像出力を解析しコンボ
数表示機能，文字認識機能，ピンチ応援機能を実装した．遅延評価では，本システムでは元のゲーム機の映像出力から 13 ピクセル分しか遅延していないことが分かった．同様のシステムは USB カメラやキャプチャユニットなどを PC に接続しても実現出来るが，数フレームの遅延が発生していた．今後の課題として，複数人での協力プレイに対応させることでさらにさらにリングフィットアドベンチャーにとって効果的な機能拡張を行える可能性がある．
このように映像を出力する機器に対する機能拡張は，コンシューマーゲー
ム以外でも有用であると考えられる．仮に FPGA 付モニタが将来普及した
際には，既存の映像コンテンツを後からプラグインのような形で修正することで新たな楽しみを提供出来る可能性がある．

ピンチ時応援機能

ピンチ検出モジュールでは，ゲーム内でピンチ時に表示される赤っぽさを検知して，あらかじめ録音しておいた「頑張って！」という応援音声ファイル (8bit，8kHz) をパルス幅変調 (PWM) し再生する．赤っぽさの検出には
色空間 YCbCr444 の Cr 値を使用した．

4.

動作と評価

参考文献

4.1

動作

[1] Hasan Erdem Mumcu. Fitness-Related on Health Mobile Applications during COVID-19: Case of Turkey. Vol. 23 No. S1 (2021):
Supplement 1/2021: Physical Activity, Health and Sports. 2021.
[2] RingFit Ranker(@RingFitRanker) - Twitter.
https://twitter.com/ringﬁtranker. (最終アクセス日 2022/02/04)[3] IkaLog. hasegaw/IkaLog - GitHub.
https://github.com/hasegaw/IkaLog. (最終アクセス日 2022/02/04)[4] Auangkun Rangsikunpum, Ekachai Leelarasmee, Suree Pumrin.
A Design of Sign Video Image Expander for HDMI Source using Bicubic Interpolation. 2017 14th International Conference
on Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology (ECTI-CON). (pp.171-174).
2017.
[5] Yu Chen, Pearl Pu. HealthyTogether: exploring social incentives
for mobile ﬁtness applications. Proceedings of the Second International Symposium of Chinese CHI (Chinese CHI). (pp.25-34).
2014.

リングフィットアドベンチャーの運動時の映像を本システムに入力すると，コンボ数表示が組み込まれていることを確認できた (図 5)．左上の緑丸で囲んだ部分では赤い四角で Best の検出回数を 2 進数で表示している．また，右下の緑丸で囲んだ部分ではコンボ数を示す文字列「Best x5」が画面の右端から左端まで文字が移動しながら表示されることを確認した．
文字認識機能については，まずキャプチャハードウェアによってゲーム映像を CPU からアクセスできることを確認した．また，図 6 は PC 上のPython で実装した文字認識エンジンへ図 1 を入力として与えた際の，出力結果のテキストデータを示している．正しいテキストデータが読み取れていることから今回作成した K 近傍法による判定がうまく行っていることが分かる．ただし FPGA ボード上での実行はまだ出来ていない．
ピンチ時応援機能については，ピンチ時の映像をシステムに入力すると，「頑張って！」という音声が流れることを確認した．

2