«

»

7月 03

【旧ブログ引っ越し】BeagleBoard+ubuntu+OpenCV[追記あり]

【旧ブログ引っ越し】BeagleBoard+ubuntu+OpenCV[追記あり]前回のOpenCVに引き続き旧ブログからの引っ越し
元記事はこちら⇒BeagleBoard+ubuntu+OpenCV[追記あり]

*******************以下転載*******************

[2011.5.25 追記あり]
記述に少し誤りがありましたので訂正・加筆があります。
後半のOpenCVのインストールのcmakeのところです。
読み進めていけばわかります。

ひーーーーーーーーーーーーーーーさしぶりの更新

もうダメぽ
ってなことで最近の研究成果をば
顔検出システムbeagleboardを使って実験することにした。
消費電力削減のためにね。

BeagleBoardっていうのはARMプロセッサの載ったボードです。
http://beagleboard.org/
今現在最新版はBeagleBoard-xmだけど自分の使ったのはRev.C4だった。
xmのほうが高性能です。
今から買うんだったらxmがいいかも。

自分のシステムはOpenCVのhaar-like検出を使ってるからOpenCVを入れる必要がる。
BeagleBoardに入れるOS最初は資料の多いAndroidがいいかなって思ってインストールしたけど、重いしこれにOpenCV入れてもまともにできそうに思えなかったからUbuntuを入れなおした。

数日したら忘れそうだから備忘録代わりに手順を書いておく。
今回はUbuntuのインストール時間短縮のためにDemoイメージ使ったけどそのうちカスタマイズして入れなおそうかなと思う。

まずは環境の準備
今回はメインPCもUbuntuを使って進めていった。
BeagleBoardは基本SDカードにOSを入れるから4G位のものを用意しておく。
でカードリーダでPCに接続
http://elinux.org/BeagleBoardUbuntu
のページからDemoイメージを落とす。
2011年1月現在Maverick(10.10)とLucid(10.04)があるけどたぶんどっちも大して変わんないと思う。
今回はLucid使ってみた。だけど説明ではMarverick前提で書いてみるw
基本上の英語サイトに書いてあることそのままだけど一応あんまり日本語資料ないからここに書いておく。

適当なところにディレクトリを作る(今回は~/ubuntu)

mkdir ~/ubuntu

次に~/ubuntuに必要なファイルをダウンロード

cd ~/ubuntu
wget http://rcn-ee.net/deb/rootfs/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z

もしダウンロードできなかったら下記のミラーからダウンロード

wget http://ynezz.ibawizard.net/beagleboard/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z
wget http://vivaphp.net/beagle/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z

ダウンロードファイルの検証?(verifyって書いてるけどぶっちゃけあんまり意味わかりません)
たぶん2行目の16進数列と同じのが出てきたらファイルが正常だと思う。

md5sum ubuntu-10.10-r3-minimal-armel.tar.7z
624f5565ef1772baef423f106f2aff15  ubuntu-10.10-r3-minimal-armel.tar.7z

ファイルの解凍

7za x ubuntu-10.10-r3-minimal-armel.tar.7z
tar xf ubuntu-10.10-r3-minimal-armel.tar
cd ubuntu-10.10-r3-minimal-armel

なんかnon-english?の修正をしなければいけないみたい
sdcard.shを置き換える

rm setup_sdcard.sh
wget http://rcn-ee.homeip.net:81/dl/updates/omap-image-builder/tools/setup_sdcard.sh
chmod a+x setup_sdcard.sh

SDカードにインストール

sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle --rootfs ext3 --swap_file 50

/dev/sdXは自分の環境でSDカードがある場所に書き換えて
オプションの意味は–mmcがSDの場所、–ubootは書いてないけどたぶんubootがあるパーティションの名前、rootfsはファイルを置いている場所のパーティションのフォーマット、swap_fileはスワップの領域の大きさ
元の情報じゃrootfsとswapのオプションはついてなかった。
デフォルトじゃrootfsはext4らしいんだけど、ほかの資料じゃext3が多かったのとBeagleBoardがデフォルトでbootするのがext3みたいだったから書き換えた。
swapは適当に大きさを決めた。50MBもあれば大丈夫と思う。

実行が完了するとパーティションの分割からファイルの移動まで出来上がってると思う。
あとはBeagleBoardにカードを移して起動すればUbuntuが起動するはず。
この時BeagleBoardはシリアル通信で動くはずだからPCとRS-232C端子でクロスケーブルでつないでね。
シリアル端子ない場合はUSBシリアル変換でも探して。
ボーレートは115200です。
一応HDMIも画面につないで、USBキーボード接続しておきましょう。

正常に起動できればログイン画面が出てくるはず(うろ覚え)
多分ID:ubuntu pass:temppassで通るはず
もしかしたら自分でID登録するほうが最初だったかも。
とりあえず起動したらシリアル経由で使えるはず。
そのあとモニタのほうに設定画面でるかもしれない。
もし出た場合は地域とか自分のモニタとか選択できる画面になるから適当なものを選んでいって。

これでOSのインストールは一通り完了したと思うから次はアップデート
だけその前にネットワーク設定
USBイーサネットアダプタが必要だから準備して。
それをBeagleBoardにつないでルータに接続したら以下のコマンドを打つ。

sudo ifconfig -a
sudo dhclient usb1(もしくはeth0、どっちかは忘れた)

適当にpingでも打ってネットワークに接続できたことを確認したら

sudo apt-get update

でアップデート

終わったらGUIのインストール

sudo apt-get install xfce4 gdm xubuntu-gdm-theme xubuntu-artwork xserver-xorg-video-omap3

全部インストールできたらとりあえず再起動してみる。
もし画面のほうにGUIが出たら成功
もしコンソールのほうにでたら

sudo startxfce4

ってすればGUI起動するはず。
因みに自分の環境じゃなぜかGUIで文字化けが発生した。理由は不明

ここまで完成したら基本PCと同じようには使えるはず。
あとはOpenCVのインストールをする。

OpenCVはapt-getでlib-cv.devをインストールすれば使えるけどバージョンが1.0だから古い。
今回2.1を使いたかったから自分でビルドした。

インストール法は以下の通り
まず必要なパッケージを導入
今回必要なのはcmake,libgtk2.0-dev,libpng-dev,libjpeg-dev,libavformat-dev,libswscale-dev
まず初期のリポジトリだけじゃ全部導入できないかもしれないからリポジトリの追加
viあたりでリポジトリ書いてるファイルを開く

sudo vi /etc/apt/source.list

sudoしないと書き換えできないと思う。
以下のテキストを追加

deb http://jp.archive.ubuntu.com/ports/ jaunty main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ports/ jaunty-security main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ports/ jaunty-updates restricted main multiverse universe
deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty-updates restricted main multiverse universe

保存したら以下のものをインストール

sudo apt-get install cmake
sudo apt-get install libgtk2.0-dev
sudo apt-get install libpng-dev libjpeg-dev
sudo apt-get install libavformat-dev libswscale-dev 

適当なフォルダを作ってOpenCV2.1のソースをダウンロード

mkdir ~/opencv
cd opencv
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.1/OpenCV-2.1.0.tar.bz2

ファイルを解凍

tar xvfj OpenCV-2.1.0.tar.bz2

cmake実行
因みにここら辺から一つの処理に結構な時間がかかります。

cd OpenCV-2.1.0
cmake

最後になにもエラーが出なかったら成功です。
ビルドします。
【追記】makeのところにオプションで-j 2を追加
並列処理してくれます。別になくてもいいけど、あったほうが速くなります。
数字は並列数です。自分の環境のプロセッサの数を書きましょう。
数字を忘れると延々とプロセスが増え続けるので気をつけてください。

make -j 2
make install

【追記2】ここでエラーが出る可能性があります。
私の場合、ffmpeg関連のエラーで‘UINT64_C’ was not declared in this scopeと出ました。
最近デスクトップのUbuntuにインストールしようとすると出たため、もしかしたらBeagleBoardインストールでも出るかもしれません。
現在原因究明中ですのでコンパイルが通ったらまた追記します。
↑追記結果判明、OpenCVのバグでした、上記バージョンで行う限りは問題ないと思います
【追記終わり】
この二つはたぶん2時間以上かかるでしょう。
気長に待ちましょう。
全部終わったら完成です。

これでOpenCVをBeagleBoardで使うことが出います。
OpenCVを使ったプログラムをコンパイルするときは

gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` sample.c -o sample

みたいな感じにしましょう。
多分pkg-configされてると思います。
もしできない場合は下のようにしてください。

gcc -I/usr/loca/include/opencv -L/usr/local/lib -lcxcore -lcv -lhighgui -lcvaux -lml sample.c -o sample

以上で説明終わり!
長文駄文でごめんなさい。
一気に書いたらこんなになっちゃった。
そのうち一つ一つ分割して丁寧に記事書きなおそう。
とりあえずはこんなもんで・・・

[`evernote` not found]

«

»

コメントを残す

メールアドレスが公開されることはありません。

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">