2010年10月28日木曜日

PythonでOpenCVを使ってみた。

SynapticからダウンロードするだけでPythonからOpenCVが使えるということなので
さっそく使ってみた。

1.インストール
Ubuntu10.10環境でPythonは最初からインストールされているので、
Opencvに関するファイルのみインストール。

<synaptic>
・python-opencv
(以下は必要かわからないけど)
・libcv-dev
・libcv2.1
・libcvaux-dev
・libcvaux2.1
・libhighgui-dev
・libhighgui2.1
・opencv-doc
・swig
・python-sip
・sip4

2.Opencvを使ってみる

import sys
sys.path.append("/usr/lib/pyshared/python2.6/opencv")
sys.path.append("/usr/share/pyshared/opencv")
from cv import *
from highgui import *

window_name = "hello opencv"
image_name = "lena.jpg"

image = cvLoadImage(image_name)

cvNamedWindow(window_name, CV_WINDOW_AUTOSIZE)
cvShowImage(window_name, image)
cvWaitKey(0);
cvDestroyWindow(window_name)


ビルドしないで使えるって幸せだね。

2010年10月26日火曜日

Ubuntu環境RubyでOpencvを使う。(環境構築編)

gemにあるopencvパッケージを使わずに、
最新のソースからRuby拡張ライブラリ用へビルドしてみた。


1.必要なものをダウンロード
<Synapticから>
・g++
・swig
・ruby
・ruby-dev

<WEBから>
・opencv最新版のソースをダウンロードして任意の作業フォルダに展開。
http://sourceforge.net/projects/opencvlibrary/files/
(例:~/Opencv-2.1.0)

2.ビルド
・パス設定が面倒なので、必要なファイルを一箇所にコピーする。
$ cp ~/Opencv-2.1.0/include/ ~/Opencv-2.1.0/interface/swig/general/
$ cd ~/Opencv-2.1.0/interface/swig/general/
$ swig -c++ -ruby cv.i
もし「cvarr..」ファイルでエラーが起きたらバージョンをあげると良いかも。
それでもだめならutilsフォルダに自動生成pythonファイルがあるから使ってみる事。

・cv_wrap.cxxが出来たら、Makefileを作ってcv_wrap.soを生成する。
$ vim extconf.rb
----------
require 'mkmf'
create_makefile('cv')
----------
$ ruby extconf.rb
$ make


[参考URL]
・拡張Rubyライブラリの作り方
http://members.jcom.home.ne.jp/mitakelp/makeext.html
・SWIG公式
http://www.swig.org/

2010年10月25日月曜日

Ruby on Rails環境を構築する。

ubuntu10.10にRubyを入れてみた。

1.インストール
<Synapticから>
・ruby
・rubygems1.8
・rails(2.0系)
・sqlite3
(ここからは欲しいものだけ入れる)
・mysql
・mysql-gui-tools-common
・mysql-server-5.1(rootパスワードの設定有り)
・sqlite-browser
・vim
・vim-rails

<端末から>
$ sudo gem install scaffold


2.環境動作チェック
何も考えずにrailsとscaffoldを使ってアドレス帳を作る。

適当なフォルダに移動して
$ rails new namelist
$ cd namelist
$ ruby script/server

ブラウザで[http://localhost:3000]を開いて動作チェック。

3.DB作成
$ ruby script/generate scaffold person name:string age:integer
$ rake db:migrate
$ ruby script/server

ブラウザで[http://localhost:3000/persons]を開いて動作チェック。


(補足)
・personに複数形のsが付くので手打ちする時は注意。
・もしうまく動かない場合は、app/controllers/の中身を見て
アドレス後の部分(/persons)に何入れればいいかチェックする。
・railsのバージョンが3.0なら[script/]はいらない。バージョンチェックする方法は下のコマンド。
$ rails -v

2010年10月19日火曜日

ショートカットでTerminal起動出来るようにする。

[System]->[Keyboard Shortcuts]->[Run a terminal]を選んで、任意のキーを押す。
(例:Ctrl+Space)

2010年10月18日月曜日

Mini2440用 エミュ(Qemu)環境構築

すでにQEmuがインストールされている事。
仮想ディスクの設定~インストール~起動まで手順が長いので、
大まかな説明で進めていきます。

参考にしたサイトに詳しい説明(英文)があるので、
調べたい方は見てみてください。
http://code.google.com/p/mini2440/wiki/QEmuSDCardImage
http://code.google.com/p/mini2440/wiki/Emdebian

1.SDカードイメージ作成
$ qemu-img create mini2440/mini2440_sd.img 256M
$ qemu-nbd mini2440/mini2440_sd.img &
$ qemu-nbd -c=/dev/nbd0 mini2440/mini2440_sd.img


2.仮想ディスク構築
$ sudo aptitude install nbd-client
$ sudo modprobe nbd
$ sudo modprobe dm-mod
$ sudo nbd-client localhost 1024 /dev/nbd0


3.パーティション設定
$ sudo fdisk /dev/nbd0

パーティション1作成(FAT32,50MB)
 [0]->[n]->[p]->[1]->[Enter]->[+50MB]->[t]->[B]
パーティション2作成(Linux,残り)
 [n]->[p]->[2]->[Enter]->[Enter]
パーティション情報チェック
 [p]
保存
 [w]

デバイス ブート 始点 終点 ブロック Id システム
/dev/nbd0p1 1 7 56196 b W95 FAT32
/dev/nbd0p2 8 32 200812+ 83 Linux

手順どおりであれば、上記のようになる。

$ sudo aptitude install kpartx
$ sudo kpartx -a /dev/nbd0

・ファイルシステム作成
$ sudo mkfs.vfat /dev/mapper/nbd0p1
$ sudo mkfs.ext3 /dev/mapper/nbd0p2

・仮想ディスクと実体ファイルの設定
$ mkdir ./disk
$ sudo mount /dev/mapper/nbd0p2 ./disk
$ sudo mkdir -p disk/boot
$ sudo mount /dev/mapper/nbd0p1 ./disk/boot


4.システムインストール(ARM版、組込みlinux,debian(lenny))
$ wget http://mini2440.googlecode.com/files/emdebian-grip-090306-armel-lenny-installed.tar.bz2
$ cd disk
$ sudo tar jxf ../emdebian-grip-090306-armel-lenny-installed.tar.bz2
$ cd ..
$ sudo umount disk/boot disk

5.起動
$ sudo nbd-client -d /dev/nbd0

6.終了
$ sudo qemu-nbd -d /dev/nbd0



[参照サイト]
http://sson-blue.blogspot.com/2010/01/qemumini2440.html
http://wiki.linuxmce.org/index.php/Mini2440
QEMUについて調べたサイト
http://d.hatena.ne.jp/kvm/20080619/1213888527

Android開発環境の構築

今回はWindows上でAndroid開発環境の構築です。
(Linuxでも同じ手順で行えると思う)

1.AndroidSDKをダウンロードする。
http://developer.android.com/sdk/index.html

上記URLから、ダウンロードファイルを解凍して、「SDK Manager.exe」を実行。
必要なファイルをダウンロードする。


2.開発環境をダウンロードする。
http://mergedoc.sourceforge.jp/

上記URLから、「Eclipse 3.5 Galileo」リンク先に飛んで、JAVA対応のをダウンロードする。

※3.6 Heliosを使いたい人は、下記URLを参照。
http://blog.livedoor.jp/areandroid/archives/1149504.html

eclipseをインストールして起動したら、
メインメニューの
「ヘルプ」→「新規ソフトウェアのインストール」を開き、
作業対象に「https://dl-ssl.google.com/android/eclipse/」を入力

「次へ」ボタンを押して使用承諾画面でAcceptして再起動する。


3.設定する。
・「ウィンドウ」→「設定」→「一般」タブ→「ネットワーク接続」タブを選択して、
 「アクティブ・プロバイダー」を手操作に変更する。
・「ウィンドウ」→「設定」→「Android」タブを選択して、
 SDKロケーションに1の保存フォルダを指定した後、次の画面で
 「ターゲット名」で開発バージョンを選択、「適用」ボタンを押す。

「ウィンドウ」→「Android SDK and AVD Manager」を選択して正常に開く事を確認する。
(1.でSDK Manager.exeを起動したものが、ここでも実行できる)

4.Hello world
4.1新規プロジェクト作成
「ファイル」→「新規」→「プロジェクト」選択
・「Android」フォルダ→「Androidプロジェクト」項目を選択して、「次へ」選択
・プロジェクト名[Hello_World]
 「ビルド・ターゲット」グループ内からターゲットバージョン(項目)を選択
 「内容」グループ内にあるラジオボタン「Create project from existing sample」を選択、
 「HelloActivity」選択して、「完了」ボタンを押す。

4.2Helloworldの実行
パッケージ・エクスプレス内のプロジェクト「Hello_World」フォルダを右クリック→「プロパティ」を選択。
・「Javaのビルド・パス」を選択して、選択したターゲット名(Android2.0)にチェックを入れて「OK」を押す。

これで実行すればエミュレータが起動すれば成功。

備考:
実際に開発する時は、
サンプルプロジェクト「ApiDemos」を参考にするといいかも。

描画処理は
OpenGLを使うならGLSurface
Canvasを使うならSurfaceView
何でもいいならView

2010年10月15日金曜日

Ubuntu環境でMini2440(CPU:ARM)の開発環境構築とビルド

Mini2440というハードをAliExpressで購入するので、とりあえず
開発環境の構築と、基本ソフトのビルド~Kernelイメージ作成までやってみた。

【概要】
大まかな流れは、まずLinux環境でクロスコンパイル環境を整えてから
u-boot作成、Kernel作成、インストールの順番に行っていく。

そしてMini2440用のパッケージは3つあるらしい。
・u-boot ・・・ ブート用
・Kernel ・・・ OS
・qemu  ・・・ PC上Mini2440エミュレータ環境(Ubuntu標準のものを使うので、Synapticでqemu, qemu-kvm-extras, nbd-clientをインストール)

ブートに使う領域はNAND領域とSDカードの2つ選べるらしく、
U-BootはWindows32bit環境を使ってNAND領域のアップデートを行い、
Kernelイメージは、NAND領域かSDカードのどちらかで選べるらしい。

ここから説明は長いが、先人の知恵を借りて作業を進めていってみる。

[参考用フォルダ構成]
~/mini2440/gcc/
~/mini2440/uboot/
~/mini2440/kernel/
各パッケージは上記フォルダ内で作業を行った。


・開発環境構築編
1.synapticからlibncurses5-devをインストールした後、WEBアクセスして
http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.3.2.tgz
からファイルをダウンロード。
端末を開いて、ルート直下に展開。

$ tar tvzof arm-linux-gcc-4.3.2.tgz
$ cd /
$ sudo tar xvzopf [置き場所パス]/arm-linux-gcc-4.3.2.tgz


2.パスを通す。
$ vim ~/.bashrc
最後の行に
export PATH=$PATH:/usr/loca/arm/4.3.2/bin
を追加。
vimが使いづらかったらgeditで編集する。


3.パスが通っているか確認。
端末を開きなおして
$ which arm-linux-gcc


・ビルド編
1.u-boot作成
端末を開いて、任意のフォルダに移動して
$ mkdir uboot ; cd uboot
$ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git
$ cd mini2440
$ export CROSS_COMPILE=arm-linux- make mini2440_config
$ export CROSS_COMPILE=arm-linux- make all

u-boot.binが生成されたのを確認しておく。


2.Kernel作成
$ mkdir kernel-bin
$ mkdir kernel-modules
$ mkdir kernel
$ cd kernel
$ git clone git://repo.or.cz/linux-2.6/mini2440.git
$ cd mini2440
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ mini2440_defconfig
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ menuconfig (設定を変える場合)
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-modules modules_install
$ ~/emv/uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage ./uImage
ひとまず終了。


クロスコンパイラ一式
http://www.friendlyarm.net/downloads

参考URL
http://code.google.com/p/mini2440/
http://wiki.linuxmce.org/index.php/Mini2440
http://www.emdebian.org/debian/
http://www.mech.tohoku-gakuin.ac.jp/rde/contents/tech/mini2440/install.html

ARM系列のCPU事情

ARMのCPUってどうなの?って疑問に思い調べてみた。

x86とARMを比較して大きく違うのは3つ。

1つ目は、ARM純正CPUがない。
現在市場に出回っているARMのCPUは、各社メーカがライセンスを受けてCPUを作っているので、
色んなモデル名や型番が出回っている。

2つ目はCPUの拡張命令の部分。
x86系ならMMX、SSE、SSE2、、、などなど命令セットにSIMD命令が追加されているが、
ARMはこれらをARM:armV4,armV5,,armV7,,,というようなバージョンで管理してる。

3つ目はARMのCPUに使うトランジスタ数が少ない点。
小さいから1つのCPUの中にマザーボードについてるチップセット機能を盛り込んで1CPU構成になってる。

自作PCでほしい機能を揃えるのにマザーボードのチップセットとCPUの組み合わせを考えてたのが
ARMの場合はシンプルでどんなCPUが搭載されているボードかを選ぶ感じになる。
これら全部見てみると分かるとおり、基本的なものは同じでも細かい部分に共通するものが無いから
x86より敷居は高い気がする。


おまけ。
最近スマートフォンに使われているCPUを並べてみた。

・VIA WM8505(ARM系,600MHz)処理性能は低いので注意。
・Rockchip RK2808(ARM9系,600MHz、動画支援○)
・Rockchip RK2818(ARM9系,1GHz) RK2808の高クロックモデル。
・ARM 11(800MHz) 動画再生も大丈夫らしい。
・ARM Cortex-A8 互換(TIやサムソン、NVidia等、1GHz)
・ARM Cortex-A9 互換(TIやサムソン、NVidia等、1GHz、1Core+)

参入しているCPUメーカー一覧
x86:Intel、AMD、VIA、、etc
arm:サムソン、TI、VIA、NVidia、Rockchip、、etc


メーカもばらばらだけど全部ARM互換CPUでARMのバージョンも様々あるのが見て分かる。

ちなみにiPhoneはサムソン製Cortex-A9互換のarmV7命令セット(現在最新)を使ってる。

2010年10月14日木曜日

Ubuntu gitを入れる。

1.Synapticからインストールする。
git-core

これ1つチェック入れるだけ。

Ubuntu起動時のスプラッシュ画面を変更する。

注意事項!
グラフィックドライバによって動作不安定になるものがあるそうです。


1.必要なパッケージを
Synapticから、
・plymouth-theme-***

Ubuntuソフトウェアセンターから、
・Alternatives Configurator

をインストールする。


2.ダウンロードしてきたテーマを選択する。
アプリケーション-システムツール-Altematives Configuratorを起動して、
default.plymouthラグからダウンロードしてきたテーマを選択する。


参照URL:http://ubuntu.xsrv.jp/modules/bulletin/index.php?page=article&storyid=200

Ubuntu 8.04LTS から 10.04LTSへアップグレードする方法

1.Ubuntu起動

2.アップデートマネージャを開く。
 システム→システム管理→アップデートマネージャを選ぶか、
 ALT+2押して、「update-manager」を入力する。

3.アップグレードボタンを押す。

2010年10月13日水曜日

VMware上UbuntuでクロスコンパイラH8開発環境を構築する。

インストールする手順をまとめてみた。

1.VMwareのUbuntuイメージとSH/H8ライターツールをダウンロードする。

○Ubuntu 8.04LTS
http://www.ubuntulinux.jp/products/JA-Localized/vmware
○Open SH/H8 Writer
http://mes.sourceforge.jp/h8/index-j.html


2.Ubuntuを起動し、Synapticパッケージマネージャからインストールする。
ckermit
gcc-h8300-hms

(他のクロスコンパイラでavr、m68hc1はあったが、SHは無かった。)

実行ファイル類は、
/usr/bin/h8300-*
/usr/bin/kermit

にあるのでこれを使う。

実行する場合は、いずれも端末(コンソール画面)から実行すること。

---おまけ---
ckermitを使ってファイル転送する時、
transmit hoge.mot

終了する時、
exit


・最初からコンパイルする場合はこっち。
ソースもSynapticからダウンロードできる。
足りない場合は下記URLからダウンロードする。
○ソースファイル一式(並びはインストール順)
ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz
ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.0.0.tar.gz
ftp://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.gz
ftp://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.gz
ftp://sources.redhat.com/pub/newlib/newlib-1.18.0.tar.gz

参照URL:
http://www.kikaiken.org/lib/junk/h8dev-doc-linux/
http://www.embedded.jp/article/cross-5.html

2010年10月8日金曜日

USBデバッグ

PC上でUSBデータをキャプチャーするソフトの使い方。

用意するソフトウェア
・Usb Sniffer for Windows
http://sourceforge.net/projects/usbsnoop/
(↑ス○ーピーの絵がとてもかわいらしいです。)

使い方
Step.1
ソフト起動して、[ファイル]メニューにある、
[Unpack driver]、[Install Services]の順番にクリックする。

Step.2
F2キーを押して、通信ログをキャプチャーしたいデバイスを選択して、
右クリック[Install and Restart]する。

メインウィンドウにUSBLogウィンドウが開いたら成功。

Androider