2013年11月04日

今更ラズベリーパイ

一昔前に話題になった $35 Linux コンピュータサーバ、Raspberry Pi を入手した。
ケース、電源、無線LANを一緒に買ったので、結局 $70 くらいの買い物になったが。

この上でコンパイルするととてつもなく遅いので、CentOS 6.4 上でクロス開発環境を
構築してみた。(ぐぐっても CentOS 上でクロス環境を作った記事は少ないようだ)
例によって、

https://github.com/raspberry/tools

からクロスコンパイラを落としてくる。
CentOS の gcc は 4.4.7 と古く、上記のクロスコンパイラを動かすと
libstdc++.so.6 がないと怒られるので、Fedora の libstdc++ を入れてみた。
ネイティブは 64 ビット環境しか使わない予定なので、これでも特に困らないので
よしとした。

次に、眠っていた PS2(!) のアイトーイカメラを接続することを思い立ち、OpenCV を
インストールする。libX11-dev, libX11-doc のインストールに失敗して先に進めない
ので、Debian のホームページから gnulibaebhf 用のバイナリを落としてインストール
を完了。

この時点で Raspberry Pi 上にある /lib, /usr/lib を吸い出してクロス環境の
$(CROSS_HOME)/lib 以下にぶち込む。
試しにカメラからフレームを読みだして GTK+ のウィンドウに表示させるプログラムを
コンパイルしてみる。オブジェクトファイルを作成するところは成功するが、ライブラリを
リンクするところで失敗する。これは全てのライブラリをリンクできていないため
なので、付属の ldd を使って必要なファイルをすべて抽出する perl プログラムを作った。
巨大な LIBS 行が出来上がるのでこれを Makefile に追加してコンパイルを実行すると
うまくリンクできた。

あとは scp で Raspberry Pi に転送し、プログラムを起動すると、カメラ画像が
ウィンドウに表示される。320x240 ドットカラーで 5fps が限界のようだ。

motion のようにカメラの前を何かが横切ったら画像を保存するプログラムも書いてみた。
フレーム差分法と(「詳解 OpenCV」に記述されている)コードブック法を比較してみたが、
erode 処理をかませるとフレーム差分法で十分な精度が得られそうだったので、こちらを
採用(処理が幾分軽い)。

次の休みにはjpegファイルをネットワークでサーバに送り付けるプログラムを書こうかな。

続きを読む
タグ:電子工作
posted by みのしす at 18:59| Comment(1) | TrackBack(0) | ラズベリーパイ