カテゴリー別アーカイブ: Raspberry Pi

全方位カメラ(その2)

前回はUSBカメラにロジクールC905を使用しました。このカメラにはオートフォーカス機能が付いているのですが、Windowsではオートフォーカスが効きますが、Raspberry Pi(raspbian)ではオートフォーカス機能が効かずピントが合いませんでした。どうも、カメラからステンレス半球までの距離(約5cm)でピントが合わないといけないようです。反射率の高い鏡ならカメラから鏡までの距離と鏡から対象までの距離でピントが合えばよいようなのですが、ステンレス半球の反射率が低いせいかもしれないと想像しています。実はRaspberry Piの専用カメラでも試してみたのですが、固定フォーカス(焦点距離:1 m から無限遠)のため、やはりピントが合いませんでした。

今回、フォーカスを手動で調整できるELECOM UCAM-DLA200HBK (現時点:¥1,445)を購入して試してみました。

全方位カメラ

結果、WindowsだけでなくRaspberry Pi(raspbian)でもうまくピントが合いました!
画質などカメラとしての性能はロジクールC905の方が上ですが、Raspberry Piで動かしたいので、このカメラを使って画像認識などしてみたいと思います。





[Raspberry Pi] OpenCVの導入とインターバル撮影

Raspberry PiにOpenCV-2.4.4aを導入しました。
OpenCVはapt-getで導入できるパッケージ版もあるようですが、現在のところバージョンが少し古いようです。
BeagleBoard+Ubuntu+ロジクール C905での経験ですが、古いバージョン(2.3ぐらい)のOpenCVでは数秒の遅延が発生する事象がありましたので、今回は最新のバージョンをソースから導入しました。
以下、導入手順です。

900MHzにクロックアップした状態で、6.5時間かかりました。(私の外出中にPi君が頑張ってビルドしてくれました)
OpenCVを使ったカメラのテストとして、インターバルカメラのプログラムを作成してみました。
カメラの画像を15秒ごとにJPEGで保存するものです。
また、一連のJPEGファイルをFFMPEGで動画に変換するシェルスクリプトも紹介します。
以下はプログラムです。(camera_test.c)

プログラムのコンパイル手順です。

以下のように実行すると、15秒毎にカメラ画像がJPEGに保存されます。

撮影間隔を変える場合はプログラムを修正するなり、引数で渡すように改造するなりしてください。
以下のスクリプトで、連続したJPEGファイルをFFMPEGでMJPEG動画に変換後、MP4動画に変換できます。(make_mov.sh)

以下のように実行します。

家から見える風景を朝から夜まで撮影してみました。

Raspberry Pi とWEBカメラでインターバル撮影

このプログラムではJPEGファイルや動画ファイルをSDカード上に作成するので、常用するとSDカードの寿命が短くなる恐れがあります。常用する場合にはRAMディスクやNASに記録したりする工夫が必要だと思います。
画像に大きな変化があったら、しばらく短い周期で撮影したり、画像をメールで携帯に送信したりするなどの機能を盛り込めばセキュリティカメラになりますね。





[Raspberry Pi] USBカメラのテスト

今回はUSBカメラを接続して、動作の確認を行います。
USBカメラにはBeagleBoard-xMでも使用していた、ロジクール C905を使用します。なお、USBカメラは電力消費が激しいので、セルフパワーのUSB HUBが必須です。
カメラ接続

まずは以下のコマンドでカメラが認識されていることを確認します。最終行に接続したカメラが認識されています。

カメラの表示テストに使用する、luvcviewをインストールします。

早速カメラの表示に移りたいところですが、私の環境ではモニタを接続していないため、PCからVNCで接続するために、tightvncserverをインストールします。

PCから、vncviewerで接続します。
端末エミュレーターを開き、以下のように起動します。

以下のように問題なく表示されました。VNC経由のせいもあると思いますが、3fps程度と少し遅いため、表示はカクカクしています。
カメラテスト

表示速度を上げるために、キャプチャサイズを小さくしてみます。以下のオプションで、8fps程度に上がりました。

Raspberry Piにはカメラ用のインタフェースが搭載されており、先日、Raspberry Pi専用のカメラモジュールがリリースされました。
http://www.raspberrypi.org/archives/3432
値段がどのぐらいになるか不明ですが、USBカメラのような遅延がなく、FPSも高く動かせれば、ロボットなどの画像認識用途には嬉しいですね。
次回はOpenCVのインストールを行ってみます。





[Raspberry Pi] Raspberry Piを購入しました

遅ればせながら話題のRaspberryPiを購入してみました。
BeagleBoard-xMと被るので、これまで手を出していませんでしたが、情報が豊富になってきたのと、何といってもBeagleBoard-xMよりもだいぶ安いので、単機能な組み込み機器にも贅沢に使用できそうということで、こちらに浮気しちゃおうかと。
というわけで、BeagleBoard-xMと比較しながら使ってみたいと思います。
Raspberry Pi

購入

RSオンラインにて購入しました。
RSオンラインは届くのが遅いという噂でしたが、3/4に発注して3/15に届いたので、思ったよりも早かったです。
値段は本体が¥2,950、送料が¥460、消費税が¥171で、合計¥3,581でした。
BeagleBoard-xMは¥14,305(2013/3/20現在)(消費税は別途必要かも)なので、約1/4でだいぶ安いです。

BeagleBoard-xMとの比較

簡単にスペックを比較してみます。

Raspberry Pi Model B BeagleBoard-xM
CPU Broadcom BCM2835
(700MHz ARMv6)
TI DM3730 1.0GHz
(ARM Cortex-A8)
(Ubuntuでは800MHzまでに制限されているようです)
メモリ 512MB (2012/10/15以降) 512MB
ネットワーク 100M Ethernet 100M Ethernet
USB 2ポート 4ポート
電源 5V 5V
基盤サイズ 85.60×53.98[mm] 85.6×85.1[mm]

CPUのクロックはそれ程変わりませんが、ARMv6とCortex-A8でどのぐらい差があるのか気になります。また、Raspberry Piはクロックアップもできるということです。CPU性能については今後ベンチマークなどで比較してみたいと思います。
組み込み用途を考えると、Raspberry Piの方が若干サイズが小さいのはメリットですが、Raspberry PiはUSBの電流制限が厳しいようで、USBカメラやWifiをつける場合はセルフパワーのUSB HUBが必須になるところは弱点ですね。
なお、BeagleBoardの下位機種でBeagleBoneというものもありますが、メモリが256MBで、値段が約¥8,000なので、Raspberry Piに比べるとあまり興味が持てません。

OS(Raspbian)の書き込みと起動

まずはSDカードにOSのイメージを書き込みます。ネット上に情報がたくさんあるので助かります。
手元にキーボードがないので、以下を参考に秋月電子のAE-UM232Rを使用してシリアルコンソール接続で起動してみました。
秋月電子のAE-UM232Rを使用する場合、J1のジャンパの1-2間をショートして、で3.3Vに設定するのを忘れないように。

参考サイト:
http://raspberrylife.wordpress.com/2013/02/27/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB/
http://elinux.org/RPi_Low-level_peripherals

あ、OSはRaspbian wheezy(2013-02-09)を使用しています。
GPIOポートの電圧が3.3Vなのが良いですね。BeagleBoard-xMは1.8VだったのでGPIOを使う気がしませんでしたが。
また、BeagleBoard-xMは壊すのが怖いというのもありましたが、RaspberryPiは比較的安いので少し安心です。
起動までは特に問題もなくさっくり来ました。

次回は無線LANに挑戦してみます。