2013年4月30日火曜日

簡単MJPEGビューア(SimpleMjpegView)をGoogle Playに公開してみた

Trek Ai-BallIP Webcam (Google Play)のようにMJPEGストリーミングを行うネットワークカメラをandroidで表示するためのサンプルアプリのソースを以前から公開していました(詳細)。

何人かの方が使ってくださっているようなのですが、カメラのIPアドレスがソースに直書きされているので使いにくいという意見がありました。

サンプルだからシンプルな方が良いだろう、と思ってIPアドレス変更用のインターフェイスをつけていなかったのですが、せっかくなので必要な機能を追加した上でGoogle Playに公開してみました。ソースもこれまで通り公開しています。

以下、リンクなど

<実行ファイル>
簡単MJPEGビューア(Google Play)

<ソース>
SimpleMjpegView (bitbucket)

<解説>
AndroidでWifiカメラからのMJPEGストリームを表示する

<画像処理の方法>
AndroidでWifiカメラから受け取った動画を画像処理する(1)ピクセルを直接操作する方法
AndroidでWifiカメラから受け取った動画を画像処理する(2)OpenCVを用いる方法

以前との違いは下記の通りです。

  • カメラのIPアドレスを設定するインターフェイスをつけた(デフォルトは http://192.168.2.1:80/?action=stream になっており、Trek Ai-Ballにつながる)
  • 解像度を可変にした(デフォルトは640x480だが、任意の解像度を指定可能)
ロボットなどに搭載して遊ぶのに良いと思います。

注意点としては、映像を受信する端末によって映像の滑らかさに差が出ることが挙げられます。これは以前の解説ページに書いた通りですが、Nexus 4 は特に遅い印象がありました。快適なのは以前も書いた通りXperia Arcなどです。




2013年4月22日月曜日

スマートウォッチi'm WatchでタミヤのRCモデルを操作してみた

スマートウォッチI'm WatchでタミヤのRCモデルを操作してみました。
動画はこちら


経緯


卒業生がTAMIYAのRCモデル「初音ミク Studie GLAD BMW Z4」を遺産として残してくれました。塗装もデカール貼りも気合いが入っています。


androidからbluetooth経由で操作できるよう改造されているのですが、スマートフォンでのラジコン操作は2010年の時点で既にいわたんさんによるすごい動画があるのでどう使おうか迷いどころでした。

しかしこのまま眠らせるのも惜しいと思い、手持ちのスマートウォッチi'm Watchで操作してみることにしました。ものを動かすためにi'm watchを利用するのは下記のプラレール操作に引き続き2つ目ということになります。
i'm Watchは血迷って2つ購入してしまったので、無理にでも積極的に活用しないと損をした気になってしまうのです。



i'm Watchと回路を連携するためには、母艦となるスマートフォンに中継してもらう方法を用いており、これは上記のプラレールと本質的には変わりません。

ただし、そのままではつまづくポイントがあったので、以下ではそれらをメモします。

技術的なこと


実現したいことは以下の通りです。

  • i'm WatchでRCモデルを操作できること
  • RCモデルにカメラを搭載し、i'm Watchから閲覧できること
プラレールの時に用いた方法を用いるなら、こんな感じになるでしょう。



なお、Xperia RayでBluetoothテザリングを行うには、カスタムロムをインストールする必要があります(ここではCM10-basedなJCROM)。が、実際に試してみると、i'm Watchのbluetoothは2、3m程度しか飛ばないことがわかり、RCモデルの操作には適していないことがわかります(プラレールの場合はi'm Watchを常にプラレールの近くに置いて操作していたので問題なかったのですが)。

そこで、実際に採用したのは以下の第2案です。


…なんというか、必要以上に複雑なシステムになってしまいました。実用性よりも「i'm Watchを無理にでも使うこと」が目的になってしまっている感がありますが、とにかくこうなっています(という自分用のメモ)。なお、Xperia ArcでBluetoothテザリングを行ってi'm watchの母艦とするために、カスタムロムをインストールして用いています(ここではCM10-basedなJCROM)。このXperia Arcは動画ではシャツの胸ポケットに入っています。

なお、RCモデル上のカメラを省略すれば、Xperia Rayは不要になって若干シンプルになります。

図では省略していますが、RCモデルの操作はオリジナルの操作系をそのまま活用するため、プロポの基板+ESCをそのまま車体内に搭載し、プロポ基板に対してPIC24F+DA変換チップ(MAX525)からアナログ電圧を与えることで操作しています。

Xperia ArcとPIC24FとのBluetooth通信には、いつも通りhrdakinoriさんのBT_DROIDを活用させて頂いております。

おしまい


i'm WatchでRCモデルを操作してみましたが、スマートウォッチとしての本来の目的(メール、スケジュール管理、SNS連携など)はどうかというと、何をやるにしてもスマホの使い勝手には敵わないというのが現実です。そのあたりの事情はWiredの「Smartwatchは本当に革新的なのだろうか?」という記事が参考になります。

そうはいっても、腕時計で通信をしたりものを動かしたりというのは「古き良き未来」を感じさせてワクワクさせるものがあります。個人的にはウルトラセブンのモロボシダンがキリシマ隊長とビデオシーバーを使ってテレビ電話をしていたのを良く覚えています。また、この作業をしているときにたまたま読んでいた「ファイブスター物語リブート1」でザ・ナイト・オブ・ゴールドの外部からの操作にやはりこの手のスマートウォッチ風のデバイスを用いていたのもイイ感じでした(1986年頃の作品です)。

今後数年でスマートウォッチがより進化して、我々の生活に浸透してくると面白いですね。