個人別ブログ

at_nakai さんのブログ

  • at_nakai

    Armadillo-IoTにはfluentdがプリインストールされているので、
    簡単にTreasureDataなどのデータベースに計測データやログなどを入れることができます。

    今回は、FluentdプロジェクトのスポンサーであるTreasureDataにデータを溜める方法を紹介します。

    ■ TreasureData
    http://www.treasuredata.com/jp/

    TreasureDataにアカウント作成

    まずは、TreasureDataを利用するのに必要なアカウントを作成します。
    14日間無償で利用できるので、評価や使い方を学ぶ程度であれば問題ないと思います。

    TreasureDataのWebサイトで「今すぐ試す」をクリックして、サインアップします。
    メールアドレスのみでアカウントを作成できます。

  • at_nakai

    インターネットイニシアティブ(IIJ)のSEILブログにArmadillo-IoTを
    SACMに対応させる方法について記載されているので、試してみました。
    SACMについては、リモートから色々とできそうなので興味があります。

    ■ ArmadilloとSACM - SEILブログ
    http://www.seil.jp/blog/armadillo_sacm

    ■ SEIL公式サイト
    http://www.seil.jp/

    まずはSEILブログに従って作業

    • SACMトライアルプランを申し込む

    libarms動作検証用SACM利用申請を行うと確認用メールが届きます。

    お客様のメールアドレスの確認が完了いたしました。

    ログイン用URLおよびログインIDは 3営業日以内に改めてご連絡させて
    いただきますので、今しばらくお待ちください。

    3日ですか。。
    待ってる間に次に進むことにしました。

  • at_nakai

    現時点(2015年2月12日時点)では発売前の「BLEアドオンモジュール BT00」(※1)を利用してみました。
    今回は、Braveridge社製のビーコン「BVMCN1101AA」 (※2)を利用し、アドバタイジング・パケットを
    受信した場合にそのビーコン情報を他のプログラムで処理することができるようにスクリプトを書いてみました。

    ※1. Armadillo-IoT BLEアドオンモジュール BT00 - Armadilloサイト
    ※2. Bluetooth Beacon (ビーコン) - Braveridge

  • at_nakai

    Armadillo-IoTで簡易的に任意のRubyライブラリを追加するには、
    /usr/lib/ruby/vendor_ruby/ディレクトリにライブラリファイルを配置する ことで利用できるようになります。

    ここでは、WebSocketのシンプル実装である「websocket-client-simple」を 追加する例を記載してみます。
    参照: https://rubygems.org/gems/websocket-client-simple

    尚、本項では簡易的な手順を示すため、ユーザーランドイメージを作成することはありません。

    ■ 「websocket-client-simple」をダウンロード

    Armadillo-IoTにログインして、下記のようにwgetコマンドなどでライブラリを配置します。

  • at_nakai

    Armadillo-810/840でHALCONを利用したアプリを実行するとエラーが出力される場合があります。
    2014年11月7日時点でHALCONエラーの要因が判明しているものについて記載します。

    HALCON error #2036: could not find license.dat in operator set_system

    ライセンスファイル(/opt/halcon/license/license.dat)が存在しない場合に出力されます。

    HALCON error #2076: Message checksum failure in operator set_system

    ライセンスファイル(/opt/halcon/license/license.dat)の内容がおかしい場合に出力されます。

    HALCON error #5101: Error while opening the window in operator open_window

    Xサーバーに接続できない場合や、ウィンドウを開けない場合に出力されます。

  • at_nakai

    久しぶりにArmadillo-420/440のブートローダー「hermit-at」をカスタマイズしたので記事にしてみました。

    【要件】

    ブートローダーがLinuxを起動する際に、USBデバイスが接続されていればフラッシュメモリに格納されているシステムイメージを利用して起動する

    上記が必要な場面は、電源ON/OFF(リセット)以外の制御が行えない状況下で、マイクロSDに格納されているシステムイメージを更新するといった場面です。
    システムリカバリにも利用可能です。

    【カスタマイズ内容】

  • at_nakai

    SDカードなどにDebianをインストールして利用していると、ネットワークインターフェース名(e.g. eth1)が変更されてしまう場合があります。
    これは、udevの機能の一つで、MACアドレスに対して固有のインターフェース名が付与されるようになっているためです。
    そのため、別のArmadilloにSDカードを挿し直して起動した場合などに現象が発生します。

    別のArmadilloに挿し直してもインターフェース名を常に「eth0」に保つには、
    /etc/udev/rules.d/70-persistent-net.rules
    を初期化しておきます。
    初期化するには、下記のようなコマンドでも構いません。

    echo > /etc/udev/rules.d/70-persistent-net.rules
    

    Debianを再起動すると、ネットワークインターフェースが「eth0」と認識されます。

  • at_nakai

    Armadillo-840などで地図を表示して何かできないか摸索してます。

    地図表示時のLCD画面キャプチャー画像

    簡単に地図を表示するには、debianで起動させて次のパッケージをインストールすることで表示することが出来ます。

    • xserver-xorg-core
    • xserver-xorg-input-all
    • xserver-xorg-video-fbdev
    • foxtrotgps
    • matchbox

    LCDに地図を表示させるために、Xorgを/dev/fb1上で起動させてあげます。
    これをするには、/etc/X11/xorg.confを作成(修正)します。

  • at_nakai

    標準状態のATDE5 (v20140131)では、x86用のOpenCVパッケージがインストールされていません。 アルゴリズムの検証など、ATDE5上で利用したいシーンは少なからずあると思います。

    ATDE5にOpenCVパッケージをインストールするには次のようにコマンドを実行します。

    atmark@atde5:~$ sudo apt-get update
    atmark@atde5:~$ sudo apt-get install libopencv-dev
    

  • at_nakai

    OpenCVで2つの直線の交点を検出するソースコードを作ったのでシェアします。

    このソースコードの動作確認は、ATDE5にUSBカメラを接続して行なっています。 アルゴリズムの検証用途だったため、Armadilloでは動作確認していませんのでご注意ください。

    下図は動作確認時のキャプチャです。

  • at_nakai

    OpenCVでテンプレートマッチングを行うソースコードを作ったのでシェアします。

    解析結果を合成した画像を/tmp/result.jpgに生成するようにしてあります。 mjpeg_streamerのinput_file.soなどと組み合わせることで、結果を簡単に確認することができます。

    Makefile

    CROSS_COMPILE ?= arm-linux-gnueabihf-

    CC = $(CROSS_COMPILE)gcc CFLAGS = -Wall -O2

    EXEC = template_match OBJS = template_match.o LDLIBS := -lopencv_core -lopencv_highgui -lopencv_imgproc -lm

    all: $(EXEC)

    $(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

    romfs: $(ROMFSINST) /usr/bin/$(EXEC)

    clean: rm -f $(OBJS) $(EXEC)

  • at_nakai

    romfs-a810-v1.04.img.gz の空きディスクスペースは約2.0MBです。

    atmark@atde5:~$ df -h
    Filesystem              Size  Used Avail Use% Mounted on
    /dev/loop0              39M   35M  2.0M   95% /home/atmark/romfs
    

    例えば、OpenCVを取り敢えずインストールしておきたい場合などに 直接インストールしようとしても、ディスクスペースが足りません。

    そのような時には、ディスクスペースを拡張することで解決できます。

  • at_nakai

    簡単にromfsイメージにファイルを追加したい場合などに使えるテクニックです。

    romfsイメージを直接ATDEでマウントしファイルを追加すると、 簡単にカスタマイズされたromfsイメージを作成することができます。

    次のようにすると、ATDE上にマウントすることができます。

    atmark@atde5:~$ mkdir romfs
    atmark@atde5:~$ gzip -dc romfs.img.gz > romfs.img
    atmark@atde5:~$ sudo mount -t ext2 -o loop romfs.img romfs
    

    マウントすると、通常と同様にファイルの読み書きが行えます。 例えば、binディレクトリにhelloを配置したい場合は、次のようにします。

    atmark@atde5:~$ sudo cp hello romfs/bin/hello
    

    カスタマイズ後、再度圧縮イメージに戻すには、アンマウント、圧縮を行います。