LoginSignup
5
1

More than 5 years have passed since last update.

(だいたい)Node-REDでWatsonとジャンケンする

Posted at

組込み屋さんは組込みだけでは食っていけない、という風潮があるので、別ジャンルに挑戦します。
Node-REDを使って、リアルタイムでWatsonとジャンケンします。
後述の技術不足により、Node-REDだけで完結しませんでした!
リアルタイムと言いながら、かなりの遅延があります。2秒くらい(もっと?)後出しされます。

完成品

環境は、ラズパイ+USBカメラです。

1秒に1回の頻度で、カメラから取り込んだ写真をWatsonで解析にかけ、勝てる手を写真の下に表示しています(いらすとやさんから素材を拝借しました)。

Rock.PNG

画像だけだとわかりにくいですが、ギリギリリアルタイム感が出ています。
上の写真更新後、2~3秒程度で、下の勝てる手が更新されます。

学習データがグー、チョキ、パー各20枚ずつしかないため、背景を白くしないと全然精度が出ません。背景が白くても精度はイマイチです…。

Node-REDのフロー

node-red.PNG

ダサいポイントが2つあります!

1. カメラ制御がpython scriptだ!

start cameraノードからpython scriptを起動しています。
中身は、opencvでカメラから画像を取り込み、1秒に1枚Node-REDのhttp inノード(camera)にpostします。
(1秒に1枚としているのは、Watson Visual Recognitionの無料枠をすぐ使い果たしてしまうから、というトホホな理由です)
この部分をなんとかNode-REDだけでやりたいところです(ヘルプミー!)。
C言語に直せ、というなら簡単なのだが…。

2. ページの静的コンテンツを無理矢理更新している

お気づきでしょうか。下の方に並んだexecノードに。
ここで、解析結果に基づき、ページの静的コンテンツをcpコマンドで置き換えています。
このダサさは↑の比ではありません!
うまくTemplateノードで結果を返せるようにしたいところです。
Websocketで結果を通知してあげれば、何とかなる、という感じのことはわかっているのですが、勉強不足です…。

感想

動かすところまで楽しみながらできました。
が、やはりWebフロントエンドの技術不足に悩まされました。
最終的な見た目も最低限、という感じです。
これでは、ユーザーさんも買ってくれなさそうです。

クラウドで解析していることもあり、遅延時間がかなり気になりました。
組込み屋さんとしては、このあたりが食いっぱぐれないための道の1つなんだろうなぁ。

ブラウザで、解析開始も、結果閲覧もできるので、ラズパイ+テザリング用Androidがあれば、気軽に試せるのは良いです。
普段は、シリアル繋いだり、sshで繋いだりなので。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1