2014年3月7日金曜日

仮面ライダー鎧武っぽいドロイド君を作った話

はじめに

これまでガンダムAGE1タイタス風に改造したドロイド君をSNSのアイコンにして来ましたが、テレビ放映も終わってしばらくたつし、そろそろ変更したいと考えていました。

見た目のインパクトから、今回の素材は仮面ライダー鎧武をチョイスしてみました。

個別写真


ドロイド鎧武

武装:AC01 仮面ライダー鎧武 オレンジアームズ
肩パーツ:BB戦士ガンダムAGE2
腕パーツ:BB戦士ガンダムAGE3

腕がちょっと手抜きですが…
ドロイド鎧武、変身途中

後述するように、もともとのオレンジアームズをいったんばらしているので、この程度までしか変形できません。
ドロイドバロン

武装:AC02 仮面ライダーバロン バナナアームズ
肩パーツ:BB戦士ガンダムAGE2
腕パーツ:BB戦士ガンダムAGE1

こいつをSNSのアイコンにしたくて作り始めました。

ドロイドバロン、変身途中。


本家と一緒に


AC04 パインアームズを装着した鎧武と。
AC06 マンゴーアームズを装着したバロンと。



作り方

アームズチェンジシリーズのアームズをニッパーで一旦バラバラにした後、下図のように真鍮線で結合します。


ドロイド君本体の方にこの真鍮線がはまる溝をつくってはめ込みます。

腕はガンダムAGE風ドロイド君と同じく本体にポリキャップを仕込んで取り付けます。


上記のような作り方をしているので、アームズチェンジできます。

これが…


こうじゃ。カッコイイ。


おわりに

新しいSNSのアイコンを作りたいという目的は達せられたので満足です。

ただ、わりとお高いアームズチェンジシリーズをニッパーでバラバラにしなければならないので、作る際ちょっと心理的に抵抗がありました。本当は斬月も欲しいのだけど次は作らないかも。

あと、この2体は2014年3月21日に秋葉原で行われるAndroid Bazaar and Conference 2014 Springで展示する際のブースのマスコットとして登場予定です。

ではでは。

こちらもどうぞ

PandaBoard ESにUbuntu12.04 Serverを載せてmjpg-streamerを動かした話

はじめに

「Raspberry Pi用赤外線カメラPi NoIRの映像をandroidで表示してみた」で、
Raspberry Piの赤外線カメラの映像をandroidにストリーミングしてみましたが、
Raspberru Piの性能では解像度320x240、フレームレート10fps程度が安定に動作する限界でした。
USBカメラを用いてもこれは大差ないと思います。

2014/3/21(金)に秋葉原で開催されるAndroid Bazaar and Conference 2014 Spring (ABC2014S)
でもこのような動画のストリーミングを用いた展示を行おうと考えているのですが、
320x240の10fpsでは動画のクオリティとしては少し物足りないです。

そのため、Raspberry Piよりも高性能なボードが必要になります。
気になるのはBeagleBoneBlackだったのですが、ABC2014Sではコンセントが使えるので、
より高性能なボードを使って確実な動作を目指すことにしました。
そこで用いたのが、職場で余っていたPandaBoard ESです。

以下、PandaBoard ESにUbuntuを導入し、mjpg-streamerを動かすまでの解説です。



OSのインストール

Omap4用のUbuntu 12.04 Serverをこちらの解説に従いインストールします。
SDカードへの書き込みは私の場合PC上のUbuntuで下記のように行いました。
/dev/sdeの部分は環境に応じて書き換えます。
$ sudo dd bs=4M if=ubuntu-12.04-preinstalled-server-armhf+omap4.img of=/dev/sde

書き込んだSDカードをPandaBoard ESに差します。
さらに、シリアルケーブルでPCとPandaBoard ESを接続し、
115200bpsでPCからPandaBoardにシリアル接続しておきます。

以上の準備の元、電源を投入すると、インストールが始まります。

デフォルトのネットワークインターフェイスはここでは有線のeth0を選択しましたが、
後でWifiドングルの設定を行うので、ここではネットワークの設定をスキップしました。

途中、インストールするパッケージを聞かれますので
  • Basic Ubuntu server 
  • OpenSSH server
を選択しました。

Wifiの設定

まず、ネットワークの接続にWifiを用いたかったのでその設定をします。
Ubuntuをインストールするとボード上のWifiデバイスがwlan0として使えるのですが、
技適の問題があることと、パフォーマンスがあまり良くないらしい(ただし試してない)ことの
2点より、市販のWifiドングルを用いることにしました。

用いたのはIO-DATAのWN-G150Uです。

まず、ボード上のWifiデバイスを無効にするために、 /etc/modprobe.d/blacklist.conf の末尾に
下記の内容を追記します。

blacklist wl12xx_sdio

記述したら再起動し、Wifiドングルをさします。

$ ifconfig -a

を実行し、wlan0が存在することを確認します。
wlan1となっていたら、 /etc/udev/rules.d/70-persistent-net.rules を編集して
wlan0として認識されるようにします。

次に、 /etc/network/interfaces の末尾にに下記の内容を追記します。
これは192.168.1.9という固定IPアドレスとするための設定なので、
環境に応じて書き換えます。

auto wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet static
address 192.168.1.9
netmask 255.255.255.0
gateway 192.168.1.1

次に、/etc/wpa_supplicant/wpa_supplicant.confを作成し例えば下記のように記述します。
接続先のSSID、暗号化プロトコル、パスフレーズなどは環境に応じて変更します。

network={
        ssid="YOUR SSID"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        psk="YOUR_PASSPHRASE"
}


最後に、/etc/resolv.confを作成してDNSサーバーを記述します。例えば下記の通り。
本当はresolvconfに自動生成させるらしいのですが
Server版のためかうまくいかなかったので手作業で記述しました。

nameserver 192.168.1.1

以上の設定がうまくいくと、再起動によりWifiでネットワークに接続されているはずです。

mjpg-streamerのインストール

まず、OSを最新にします。

$ sudo apt-get update
$ sudo apt-get upgrade

そして、mjpg-streamerのビルドに必要な下記をインストールします。

$ sudo apt-get install build-essential libjpeg8-dev libv4l-dev imagemagick subversion

それが済んだら、下記のようにmjpg-streamerのダウンロードからビルドまで行います。

$ cd ~/
$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
$ cd mjpg-streamer
$ make

mjpg-streamerの起動

起動の前に、/etc/modprobe.d/blacklist.conf の末尾に

blacklist snd_usb_audio

を記述して再起動しておきます。一部のUSBカメラとUSBオーディオのドライバとの相性が悪いためです。
このあたりに書いてあります。

起動は下記のような流れで行います。解像度640x480のフレームレート15fpsとしています。
30fpsでもPandaBoard側は問題なく動作しますが、受信側にそこまでの性能はないと考え
控えめに15fpsとしました。

$ cd ~/mjpg-streamer
$ export LD_LIBRARY_PATH="$(pwd)"
$ sudo ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 15" -o "./output_http.so -w ./www"

動作確認

PCのブラウザで、PandaBoardが動いているIPアドレスの8080ポートを見ると(http://xx.xx.xx.xx:8080/)、
映像が配信されていることがわかります。

この映像をandroidで受け取るには、いつも通り簡単MJPEGビューアを使います。
このアプリのソースはこちらにあります。

アプリを起動したら、メニューから「設定」を選択し、解像度を640x480に、ポート番号を8080に設定します。

ABC2014Sでは望遠カメラをストリーミングし、観光地にある望遠鏡のように
上下左右に動かすデモを行う予定です。
Wifiを使うので、うまくいくかは当日にならないとわからないのがつらいところ。

mjpg-streamerの自動起動

mjpg-streamerを自動で起動するためには、例えば下記のようにします。

mjpg-streamerをビルドしたディレクトリが/home/username/mjpg-streamer
であると仮定します。このディレクトリにstart-mjpg-streamer.shというファイルを作成し、
下記の内容を記述します。

#!/bin/sh

cd /home/username/mjpg-streamer
export LD_LIBRARY_PATH="$(pwd)"
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 15" -o "./output_http.so -w ./www"


次に、このスクリプトを/etc/rc.localに記述することで、自動起動します。

(中略)

sudo sh /home/username/mjpg-streamer/start-mjpg-streamer.sh &

exit 0 ←この行はもともとある行

おしまい。

んー、やっぱり後でBeagleBoneBlackでも試そう。

2014年2月6日木曜日

Nexus 4 用に日本語対応の Firefox OS をビルドした話

今までGalaxy S3やXperia arc/rayに android 4.0 (Ice Cream Sandwich) ベースの
Firefox OS1.1をビルドしてきましたが、android 4.3 (Jelly Bean) ベースのものは
試したことがなかったので、練習として Nexus 4 に最新の Firefox OS をビルドしてみました。

使ってみたところ、日本語IMEが実用レベルに近づいており、
twitter/Facebook/Google+などのSNSの読み書きができたのでメモします。



ビルド済みファイル

下記のファイルをダウンロードします。

(md5sum: bd173d4d1b6cedd080256c1e14a4e2fc)
このファイルの利用は自己責任でお願いします。

書き込み

ダウンロードしたファイルを解凍して、boot.img、system.img、userdata.imgを
あらかじめ取り出しておきます。

これらを書き込む前に、radioがandroid 4.3のときのものでないとWifiが使えませんので、
あらかじめfastbootで書き込んでおきます。
Factory Images for Nexus Devicesよりoccam-jwr66y-factory-74b1deab.tgzをダウンロードしておき、
中に含まれる radio-mako-m9615a-cefwmazm-2.0.1700.84.img を下記のように書き込みます。

$ fastboot flash radio radio-mako-m9615a-cefwmazm-2.0.1700.84.img

あとは、 boot.img、system.img、userdata.img を以下のようにfastbootで書き込み、再起動します。
SDカード領域は初期化されますので、バックアップはPCなどに退避しておきます。
なお、初回の起動は黒い画面のまま15秒くらい待たされます。

$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img
$ fastboot reboot

日本語キーボードの有効化など

設定アプリから
キーボード→使用中のキーボード→他のキーボードを追加
と辿り、Japanese - Kanjiにチェックを入れると、日本語キーボードが使えます。
テキストエリアをタップすると自動でキーボードが現れます。

初回の変換時にIMEが固まるので、一度ホームボタンでホームに回避してから、
もう一度変換を試みると、以後普通に使えるようになります。

その他

なお、docomoのXi SIMを差してmopera.netを指定したのですが、
アンテナは立つものの、回線をつかんでくれません。
ただし、Wifiが使えるのでそれなりに使えます。

また、adb が使えるので、adb push hoge.mp3 /sdcard/
などとしてファイルを送り込めば音楽や動画を再生できます。

「ブラウザ」というのがFirefoxかなーと思うのですが、
これ、ブックマークとかないのかな?Firefox OSはご無沙汰なのでよくわかりません。

ソースは2014年2月3日の時点のものを利用しました。
gaia は 1.4.0.0prerelease
gecko は 29.0a1です。

ビルドに関して

以下のサイトを参考に、ビルド法を以下に記します。
なお、上での述べたように、ビルド済みファイルは2014年2月3日のソースを用いましたが、
2014年2月5日頃のソースでは、gecko が 30.0a1になったことが影響しているのか、
下記のように色々おかしなところが出てきています。
  • ホームボタンのサイズが合っておらず、Firefoxアイコンが欠けている
  • セットアップ時の地域の変更が画面に反映されない(内部的には処理されている)
  • テキストエリアをタップしてもキーボードが現れない(Wifiのパスフレーズが入力できず困る)
このように、Firefox OSのmasterは頻繁に更新されており、
常に期待の動作をするとは限りませんので、うまくいかない場合は
何日かおいてからまた試してみるのがよいかもしれません。

以下、ビルド法です。

ソースの準備

ソースを下記のようにダウンロードします(環境によりますが30分~1時間くらいかかります)。

$ mkdir ~/b2g_work
$ cd ~/b2g_work
$ export B2G_WORK=`pwd`
$ git clone git://github.com/mozilla-b2g/B2G.git
$ cd B2G
$ ./config.sh nexus-4

日本語対応など

日本語ロケールの追加、日本語辞書の追加などを行います。

まずはgaiaのロケールの追加。

$ mkdir $B2G_WORK/B2G/locales
$ cd $B2G_WORK/B2G/locales
$ hg clone http://hg.mozilla.org/gaia-l10n/ja
$ wget http://sola-dolphin-1.net/data/B2G/source/languages-japan.json

次にgeckoのロケールの追加。

$ mkdir $B2G_WORK/B2G/gecko-l10n
$ cd $B2G_WORK/B2G/gecko-l10n
$ hg clone http://hg.mozilla.org/l10n-central/ja
$ hg clone http://hg.mozilla.org/build/compare-locales

次に日本語辞書の追加

$ cd $B2G_WORK
(naist-jdic-0.4.3.tar.gzを http://sourceforge.jp/projects/naist-jdic/releases/ からダウンロードして配置)
$ tar zxvf naist-jdic-0.4.3.tar.gz
$ cd $B2G_WORK/B2G/gaia/apps/keyboard/js/imes/jskanji/dict
$ mkdir ipadic
$ cp $B2G_WORK/naist-jdic-0.4.3/naist-jdic.dic ipadic/
$ make json (この命令は環境変数LANGの値によっては失敗します。ja_JP.utf8 にセットすればよいです)

環境変数設定

次に、環境変数設定を行います。

$ export MOZILLA_OFFICIAL=1
$ export GAIA_DEV_PIXELS_PER_PX=2
$ export LOCALE_BASEDIR=$B2G_WORK/B2G/locales
$ export LOCALES_FILE=$B2G_WORK/B2G/locales/languages-japan.json
$ export L10NBASEDIR=$B2G_WORK/B2G/gecko-l10n
$ export MOZ_CHROME_MULTILOCALE="ja"
$ export PATH="$PATH:$B2G_WORK/B2G/gecko-l10n/compare-locales/scripts"
$ export PYTHONPATH="$B2G_WORK/B2G/gecko-l10n/compare-locales/lib"
$ export GAIA_KEYBOARD_LAYOUTS=en,jp-kanji

ビルド

以下のようにビルドを行います。

$ cd $B2G_WORK/B2G
$ ./build.sh

ビルドが終わると、
  out/target/product/mako/
に boot.img、system.img、userdata.img ができていますので、これをfastbootで書き込みます。



備考

私が2014年2月3日にビルドした時のコミット情報は

  • gaiaのコミット e9222d3b3e6047f05b929948b631e4bd6b5b0180
  • geckoのコミット 1fded49c645d068599f4f6f17ae17505cf05d2b3
で、この時のソースで日本語辞書を追加するときは


の方法で行う必要がありました。参考までに。