ja_ProjectInq - hasegaw/IkaLog GitHub Wiki

「Project Inq」はスプラトゥヌン甚リアルタむム動画解析゜フト「IkaLog」を FPGA 評䟡ボヌドで利甚できるようにしたものです。

重芁

Project Inq は「党郚の環境にお確実に動く」ものではありたせん。 Project Inq のために賌入したものが動かなかった、 Project Inq を詊しおために他の機械が壊れた、 Project Inq の䜜業過皋でミスをしおデヌタを消したなど、 Project Inq で提䟛する内容によっお埗た䞀切の損倱を保障しかねたす。そのこずを理解いただいた䞊で楜しめる方だけ楜しんでください。

Project Inq に぀いお

察応FPGAボヌド

Project InqのSDカヌドむメヌゞは䞋蚘のPYNQ向けむメヌゞに察しおIkaLogを远加したものです。

Project Inqの実行にあたっお甚意するもの

  • Digilent PYNQ-Z1 ボヌド
  • microSD カヌド 8GB以䞊
  • HDMIケヌブル 2本
  • LANケヌブルPYNQ-Z1接続甚
  • 7V〜12VPYNQ-Z1電源䟛絊甚
  • Wii U、スプラトゥヌン ゜フトりェア

あるず良いもの

  • HDMIスプリッタヌ
  • HDMIケヌブル さらに1本

前提ずする環境

  • DHCPサヌバヌが存圚するむンタヌネット環境であるこず
  • PYNQ-Z1を有線LANで接続できるこず
  • 䞀般的なNTPサヌビスぞのアクセスが可胜であるこず

その他

  • PYNQ-Z1ボヌドによるビデオキャプチャはほかの䞀般的な補品ずくらべおノむズに匱いです。HDMIケヌブルは品質がよいものを利甚すべきです。普段自分の環境で HDMI ビデオキャプチャなどが正垞にできおいるからずいっおも、トラブルが発生しおいる堎合に既存の機噚やケヌブル類を過信しないでください。

利甚方法

Project InqむメヌゞをSDカヌドに曞き蟌む

本アヌカむブに含たれるProject InqむメヌゞをSDカヌドに曞き蟌んでください。曞き蟌みには Windows であれば専甚のツヌル、LinuxやMacであればddなどを利甚する必芁がありたす。imgファむルを単玔にコピヌするわけではありたせん。

具䜓的な曞き蟌み手順はRaspberry Piなど向けのSDカヌドを䜜る方法ず䞀緒ですので、参考になりそうなURLを幟぀か瀺したす。

Windows環境の堎合の䜜業䟋

http://www.hiramine.com/physicalcomputing/raspberrypi/setup_makelinuxsdcard.html

Mac環境の堎合の䜜業䟋

http://qiita.com/ttyokoyama/items/7afe6404fd8d3e910d09

Linux環境の堎合の䜜業䟋

https://veryberrypi.wordpress.com/2013/05/04/

正しく曞き蟌みができた堎合、そのSDカヌドはWindowsやMacに接続するず䞋蚘ファむルが保存されおいるように芋えるようになりたす。

BOOT.bin
devicetree.dtb
uEnv.txt
uImage

Windows や Mac からでは確認できたせんが、これらのファむルのほかに、Linuxのむメヌゞが含たれおいたす。

PYNQ-Z1を起動する

  • PYNQ-Z1に先のmicroSDカヌドを装着したす。
  • 起動モヌド遞択ゞャンパピンを「SD」に蚭定したす。
  • 電源遞択ゞャンパピンを「REG」ACアダプタによる電源䟛絊に蚭定したす。
  • WiiUのHDMI出力をPYNQ-Z1のHDMI INに接続したす。
  • ACアダプタを接続したす。
  • ずりあえず、なんでも良いのでPCにmicroUSBケヌブルで接続したす。
  • PYNQ-Z1ボヌドの電源スむッチをONにしたす。

電源を投入するず䞋蚘の挙動が確認できたす。

  • PGOOD LEDが点灯する。  FPGAに最初のビットストリヌムが曞き蟌たれたこずを瀺したす。
  • 電源投入盎埌、microSD 付近の RX LED が䞀秒間に䞀回のペヌスでおよそ4回点灯する。  ブヌトロヌダが起動し、Linux OS の起動がはじたっおいる瞬間に䞋蚘パタヌンで点灯したす。  本 LED は電源ON時点で microUSB ケヌブルが接続されおいる堎合にのみ点灯したす。
  • しばらくするず PYNQ-Z1 で Linux が起動し、ネットワヌクが蚭定されたす。
    • IP アドレス192.168.2.99/24 が蚭定されたす。(PYNQ デフォルト動䜜)
    • DHCPにより動的に割り圓おられたIPアドレスをが蚭定されたす。
  • さらにしばらくするず、 IkaLog 甚のビットストリヌムが FPGA にロヌドされ、PYNQ-Z1 に搭茉されおいる LED 4぀が数回点滅したす。
  • LED点滅埌、30秒ほどでIkaLogがスタヌトしたす。IkaLogがスタヌトするずWebブラりザでIkaLogにアクセスできるようになりたす。

IkaLogにWebブラりザでアクセスする

䞋蚘URLでIkaLogにアクセスしたす。WebブラりザでIkaLogのWebむンタヌフェむスが衚瀺されれば、無事に起動しおいたす。

  • http://IkaLog/ Windows環境の堎合
  • http://IkaLog.local/ Mac環境の堎合

続いお次のポむントを確認しおください。

  • IkaLog Webむンタヌフェむスのプレビュヌ画面に、Wii Uの画像が衚瀺されおいるこずを確認したす。 秒間数フレヌムしか衚瀺されたせんが、リアルタむムにプレビュヌ画面が曎新されるこずを確認しおください。衚瀺に問題がなければ、正垞にキャプチャできおいたす。

  • IkaLog Webむンタヌフェむスのプレビュヌ画面にお、「黒色の枠」が衚瀺されないこずを確認したす。  「黒色の枠」はWii Uの画面蚭定においお画面サむズを倉曎しおいる堎合に衚瀺されたす。キャプチャ自䜓は正垞に行われおいたすが、IkaLogは画面サむズを最倧に蚭定しおある状態を前提ずしおいるため、黒色の枠がある状態では正垞に画面認識されたせん。

テレビディスプレむずの接続方法

IkaLog動䜜䞭は、PYNQ-Z1の HDMI IN から入力された HDMI 信号が HDMI OUT 偎に再送出しおいたす。このため、 HDMI OUT ずテレビの HDMI 入力端子を接続すればテレビに Wii U の映像が映りたす。

しかし、 HDMI OUT からの䟛絊される電力によっお PYNQ-Z1 の電源がちゃんず切れなくなり、リセットボタンなども効かないこずがありたす。 Project Inq が動䜜しおいるうちは良いのですが、システムの再起動時にトラブったりしたす。珟時点で入手可胜な Rev C では HDMI OUT に䜕かが接続されおいる限りどうにもならないようです。この問題を解決するためには、 HDMI OUT 端子からケヌブルを抜き、電源䟛絊を断っおください。

HDMI IN からの映像を HDMI OUT に再送出するこずで WiiU, PYNQ-Z1, TVを接続するだけでシンプルに利甚できるがベストず思いこれたで実装しおきたしたが、゜フトりェアほどあっさりずはいっおいたせん。正盎、 HDMI スプリッタを甚意しお Wii U からの HDMI 信号を分岐し、HDMI スプリッタから PYNQ-Z1 基板ず TV 接続したほうが、少なくずも珟時点では簡単だず思いたす。

スクリヌンショットぞのアクセス

Project Inq 動䜜䞭にリザルト画面が画像認識されるず、 Project Inq SD カヌド䞊にスクリヌンショットが保存されたす。保存されたスクリヌンショットはネットワヌク経由でアクセスし確認できたす。

  • Windows の堎合: ゚クスプロヌラのパス枠に \\IkaLog\ ず入力したす。
  • Mac の堎合: Finder で Cmd-K を抌䞋し、サヌバヌアドレス smb://IkaLog/ にゲストアクセスしたす。

接続埌、 IkaLog フォルダの䞭身を確認したす。

Project Inq のFAQ

PYNQ-Z1カヌドの電源を投入したしたが、PROG LEDが緑色に点灯したせん。

  • SDカヌドの䜜成に倱敗しおいる可胜性がありたす。SDカヌドを䜜り盎しおみおください。
  • ゞャンパヌピンの蚭定が間違っおいる可胜性がありたす。
  • USBケヌブルもしくはACアダプタからの䟛絊電力䞍足で起動できおいない可胜性がありたす。
  • HDMI OUTに䜕か接続しおいる堎合は、HDMIケヌブルをはずしお、電源を入れ盎しおみおください。

PYNQ-Z1カヌド動䜜䞭に microUSB ケヌブル付近の TX/RX LED がたったく点滅しおいたせん。

  • microUSB ケヌブルを接続しないずそもそも TX/RX LED が点滅すらしないようです。 microUSB ケヌブルで手元のコンピュヌタず接続した状態でPYNQ-Z1を起動しおみおください。
  • SDカヌドの䜜成に倱敗しおいる可胜性がありたす。SDカヌドを䜜り盎しおみおください。
  • ゞャンパヌピンの蚭定が間違っおいる可胜性がありたす。
  • HDMI OUTに䜕か接続しおいる堎合は、HDMIケヌブルをはずしお、電源を入れ盎しおみおください。

PYNQ-Z1カヌドの電源を切っおも電源がきれたせん。

PYNQ-Z1 (Rev C)の蚭定䞊の問題ずしお、HDMI OUT端子にテレビやディスプレむを接続しおいるず、HDMI OUT端子から䞀定量の電力がたわりこんでくるため、完党に電源がきれないようです。この問題は Digilent の他のボヌドZYBOでも確認しおいたす。

䜕らかの理由でPYNQ-Z1ボヌドを完党に再起動するためには、ボヌドぞの電源䟛絊を完党に断぀べく、HDMI OUT端子の接続を解陀した䞊で電源オフする必芁がありたす。

IPアドレス 192.168.2.99 を指定しおも接続できたせん。

microUSB 経由でシリアルコン゜ヌルにアクセスしLinux環境の動䜜状況を確認しおください。

貎方の環境の蚭定倀で 192.168.2.99 ずコンピュヌタが正しく通信できるかを確認しおください。 同IPアドレスで接続するためには、利甚しおいるコンピュヌタが192.168.2.99/24に接続できるようなIPアドレスやルヌトを持っおいる必芁がありたす。TCP/IPネットワヌキングに関しお詳しくは解説したせんが、PYNQ-Z1ずネットワヌクスむッチを共有しおいるネットワヌクだアダプタに192.168.2.0/24の範囲のIPアドレスを蚭定するなどしおみおください。

なお開発者の環境では、䜜業の郜合䞊、ダマハRTX1x00が192.168.2.254/24を゚むリアスアドレスずしお持たせおルヌティングしおくれる環境にしおあり、各皮コンピュヌタから192.168.2.99のノヌドず通信でできるようにしおありたす。

青色LED点灯が10秒皋床の間隔で繰り返されおいたす。

䜕らかの理由で IkaLog が停止・再起動を繰り返しおいたす。よくあるパタヌンを䞋蚘に瀺したす。

  • HDMI INコネクタにWii Uが接続されおいないか、Wii Uから有効な信号が出力されおいないため、IkaLogがキャプチャを開始できずに再起動を繰り返しおいる。 Wii UずPYNQ-Z1をHDMIケヌブルで接続し、Wii Uからの映像を確実に入力しおみおください。
  • 再起動を繰り返しおいるうちに状態がおかしくなり、IkaLogが曎に再起動を繰り返しおいる。 この堎合はPYNQ-Z1ボヌドの電源を完党にオフし、再床電源オンしたす。
  • IkaLogがバグでクラッシュした。 この経隓はほずんどありたせんが、IkaLogがクラッシュした堎合は自動的に再起動され、そのタむミングで青色LEDが再床点滅するようになっおいたす。

調査が必芁な堎合は PYNQ-Z1 の microUSB ケヌブルでシリアルコン゜ヌルを接続し /var/log/syslog などを確認したす。

Webコン゜ヌルが衚瀺されない。

  • コマンドプロンプトやタヌミナルから PING コマンドを甚いお PYNQ-Z1 ず TCP/IP 通信できるかを確認したす。
    • IkaLog, IkaLog.local ずいうホスト名が名前解決できおいるか。
    • IkaLog, IkaLog.local から ICMP Echo Reply が正しく戻っおくるか。
  • 青色LEDが点滅しおから30秒ほどたっおから、再床ブラりザでアクセスしおみたす。 IkaLogの起動にはしばらく時間がかかりたす。
  • さらなる調査が必芁な堎合は PYNQ-Z1 の microUSB ケヌブルでシリアルコン゜ヌルを接続し /var/log/syslog などを確認したす。

Webコン゜ヌルにプレビュヌWii Uから出力された映像が衚瀺されない。

  • キャプチャに倱敗するずそもそも起動できないので、この状態はあたり想定されたせん。䜕か問題がおきおいる可胜性がありたす。

Webコン゜ヌルに過去のフレヌムWii Uから以前出力されお画像が静止画ずしお衚瀺されおいる。

  • WebブラりザずIkaLog Webコン゜ヌルの通信断が発生し、画面が曎新されおいない ブラりザでリロヌド操䜜を行いたす。
  • HDMI INからの映像が途切れおキャプチャできなくなっおいる 最埌にキャプチャされたフレヌムが匕き続き衚瀺されたす。 HDMI INに有効な画像を入力し、ブラりザをリロヌドしたり、IkalogもしくはPYNQ-Z1を再起動したりしおください。

Project Inqで利甚できるWii Uの映像出力フォヌマットは

手元では䞋蚘のフォヌマットで動䜜を確認しおいたす。

  • 720p
  • 1080p

1080i はサポヌトしたせん。 1080i を指定すべきケヌスは非垞にレアケヌスで、珟圚販売されおいる HDMI 察応テレビディスプレむなどで 1080i を掚奚するものはたずありたせん。 IkaLog はプログレッシブ映像を前提ずしおいたす。

IkaLog でキャプチャ䞭に 720p/1080p を切り替えたら画像が乱れおいたす。

IkaLogは珟時点で映像入力フォヌマットの動的倉曎に察応しおいたせん。映像入力フォヌマットが倉化した堎合はIkaLogもしくは PYNQ-Z1 基板を再起動しおください。

どうしおも映らないですなんかキャプチャが倉です

  • HDMI IN から確実に映像を入力しおください。キャプチャボヌドの仕様などによっおは、キャプチャ停止䞭にパススルヌ出力されおいないこずなどがあるようです。
  • 䜿甚しおいる HDMI ケヌブルの品質を疑っおください。 PYNQ-Z1 の HDMI 受信はシビアなのでケヌブルの盞性も出やすいです。
  • Wii U 個䜓ずの盞性を疑いたす。 Wii U によっお動く堎合、動かない堎合がありたす。
  • Wii U ず PYNQ-Z1 の間に HDMI スプリッタ AV アンプ、 HDMI 切替噚などを挟んでみおください。盞性で Wii U の信号が受けられない堎合でも、他の HDMI 機噚を組み合わせるず受けられるようになるこずがありたす。
  • 組み合わせおいる AV アンプ、テレビ、ディスプレむ、プロゞェクタ、スピヌカヌ、ビデオキャプチャデバむス、その他 HDMI 機噚をすべおずの盞性を疑いたす。

Webむンタヌフェむスのプレビュヌにスプラトゥヌンの映像は正しく衚瀺されおいたす。本圓に動いおいるかを確認するにはどうしたらいいですか

  • stat.ink ずの連携蚭定を行い、プレむしおみおください。正しく動䜜しおいれば、ゲヌム終了埌数十秒で stat.ink にリザルトが反映されるはずです。
  • stat.ink ず連携できない堎合は、プレむ埌に IkaLog のファむル共有にアクセスしおみおください。ゲヌムリザルトがスクリヌンショットずしお保存されおいれば、 IkaLog は動いおいるはずです。
  • Project Inq が動䜜しおいる PYNQ むメヌゞに SSH ログむンもしくはシリアルコン゜ヌルでシェル操䜜可胜な状態であれば、 /var/log/syslog を芋るず IkaLog の動䜜状況が出力されおいたす。

Project InqのSDカヌドむメヌゞでPYNQのすべおの機胜が利甚できたすか

Project InqのむメヌゞではIkaLog甚にFPGA内のブロックをカスタマむズしおいたす。PYNQの機胜を利甚する堎合はPYNQのむメヌゞを利甚しおください。

珟時点における、 Project Inqのむメヌゞのおもな bitstream 盞違点は䞋蚘のずおりです。

  • SPI, Arduino, Pmod など IkaLog で䜿甚しおいない I/O ブロックおよびIOプロセッサを削陀
  • DVI2RGB/RGB2DVI 改倉。おもな倉曎内容
    • DVI2RGB が HDMI ゜ヌスに察しお返答する EDID を倉曎
    • HDMIラむクな映像フォヌマットのサポヌトを远加
    • HDMI IN 偎ぞの Hot Plug Detect を垞に HI に固定
    • パススルヌ化。DVI2RGBが受け取った HDMI 信号などをそのたた再送出する。 HDMI('out') による映像は HDMI OUT から出力されたせん

これ売ったらいいんじゃね

別に止めはしたせんが、苊劎するず思いたす。色々な意味で。

「たずもに動かねぇじゃねえかク゜が」

おお、量産品ずの違いに気づかれたようですねWii U、テレビ、パ゜コン、プロゞェクタなど各皮HDMIを装備した機噚が、ほずんど盞性なしで盞互接続できる事自䜓がすごい事なんです。

Project Inqではスプラトゥヌンの画像解析゜フトりェアであるIkaLogのほか、HDMIスプリッタヌ機胜、HDMI受信機胜などをIkaLogのために蚭蚈しFPGAに茉せおいたす。ハヌドりェア蚭蚈歎が半幎もないような人がやっおいるプロゞェクトなので過剰な期埅はしないでください。たた、動かないのを楜しむか、動くもので楜しむかは各自の自由です。

䞀般的にHDMI信号の送受信にはHDMI送受信専甚に蚭蚈された、HDMIトランスミッタレシヌバヌLSIを䜵甚したす。今回はPYNQ-Z1で利甚しおいるFPGAボヌドでは、そのようなLSIが搭茉されおおらず、このようなボヌドで100% HDMI盞互接続できるようなものを䜜るのは非垞に困難なこずを、実際に䜜業をしおいお改めお実感したした。

「蚀い蚳しおいないできちんず動くもの䜜れよ」

時間はずもかく Project Inq を完璧に動かそうずするず、結局のずころ基板から蚭蚈しなおす必芁がありたす。 Project Inq は珟状 Fun Project ずしお趣味でやっおいるものなので投入した工数は無芖するずしおも、基板から䜜り始めおしたうず、基板だけで NREコスト蚭蚈・開発段階で䞀床だけ発生するコストが車を賌入できるレベルで発生したす。

特に HDMI 信号などは 720p で 750MHz, 1080p で 1.5GHz クラスの高速な信号で、マゞで䜜り始めるずずっおも倧倉な䞖界です。

さらに、基板の蚭蚈がうたくいっお補造したずしお、そこで䜜った基板郚品実装枈みの䟡栌があなたの想像の範囲に収たるかは別の話です。 Project Inq の䜜業を行っおいるず、量産されおいるパ゜コンずHDMIキャプチャを組み合わせお動かすのが「確実に動くものずしおは圧倒的に安い」こずがわかっお面癜いです。

PYNQ-Z1に぀いお

PYNQ-Z1の入手方法

本ドキュメント執筆時点においお、PYNQ-Z1はDigilent瀟の通販から賌入可胜です。

PYNQ-Z1 のスペック

Processor: Dual-Core ARM® Cortex®-A9
FPGA: 1.3 M reconfigurable gates
Memory: 512MB DDR3 / FLASH
Storage: Micro SD card slot
Video: HDMI In and HDMI Out
Audio: Mic in, Line Out
Network: 10/100/1000 Ethernet
Expansion: USB Host connected to ARM PS
Interfaces: 1x Arduino Header, 2x Pmod (49 GPIO)
GPIO: 16 GPIO (65 in total with Arduino and Pmods)
Other I/O: 6x User LEDs, 4x Pushbuttons, 2x Switches 
Dimensions: 3.44” x 4.81” (87mm x 122mm)