アーカイブ
BeagleBoard上でmoxaを開発する
Ubuntu 9.04をインストールしたBeagle Boardの上でtalkticのコンパイルとmoxaへ書き込みを行う。刺しっぱなしで開発できるようになるのでとても便利。
xtel technical information > download> ダウンロードから「開発用エクリプスパッケージ for Mac」をダウンロードしてくる。
xtel-eclipseの中の
- jsc/jsc.jar
talkticコンパイラ - avrdude/bin/avrdude
avrdude実行ファイル。mac portsでインストールできるavrdudeだと書き込みが怪しい。
Ubuntu9.04のaptでインストールできるavrdudeは普通に動くのでこれは必要ない。 - avrdude/etc/avrdude.conf
avrdudeの設定ファイル
■talkticのコンパイル
javaをインストールする
sudo apt-get install default-jre
which java
コンパイル。source.jsからsource.binを作る
java -jar path/to/jsc.jar -Bsource.bin source.jsmacでも同じようにバイナリを作れる。
■moxaへの書き込み
avrdudeをインストールしておく。Macはeclipseについてるavrdudeを使う。
sudo apt-get install avrdude
which avrdude
BeagleBoardではUSBデバイス名を書き込んであっても /dev/ttyUSB0 になってしまい、しかもrootしかアクセスできないのでsudoを使って書き込む。
sudo avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/ttyUSB0 -F -U eeprom:w:source.bin:r
Macだとsudoが必要なくて、デバイス名が認識されてるのでこうなる。
avrdude -C path/to/avrdude.conf -p m128 -c stk500v1 -b 9600 -P /dev/tty.usbserial-gemsbok -F -U eeprom:w:source.bin:r
こんな風に書き込んだりプログラム書いたりしてる


bootcampで入れたWindowsのパーティションサイズを小さくして、そのぶんMac側を大きくしたらWindows起動しなくなった
追記:これやったらwindows起動しなくなったのでやらないほうがいい・・
Macbook ProにbootcampでWindows XPをインストールしてあるんだけど、最初にインストールした時にWindowsに容量を与えすぎていてMac側が足りなくなってきたのでパーティションサイズを変更した。
Windowsを20GB減らして、その分Mac OSXを20GB増やした。
■準備
- TimeMachineでMac OSXの入ってるパーティションを丸ごとバックアップを取る
- x86用 Ubuntu 9.04デスクトップ版のイメージをCD-Rに焼く。MacならDisk Utilityで焼ける。
■Windowsのパーティションを小さくする
Mac付属のDisk Utilityではfat32パーティションのサイズ変更はできないみたいだけど、
Ubuntuのディスクを入れてCDからブートして(インストールしないで)パーティションエディタというのが上のメニューにあるから起動する。
Macのbootcampアシスタントでwindowsを入れたとすると、画面上で左側にはMacのパーティションがあり、右側にWindowsが入っている。
パーティション・エディタ(gparted)でWindowsのパーティションを小さくして、右に詰める。かなり時間がかかる。
ディスクに変更を書き込む。これで20GB空いた。
■Macのパーティションを大きくする
本来、HFS+でフォーマットしてあるMacのパーティションはMacに入っているDisk Utilityでサイズ変更できるはずなんだけどパーティションマップがエラーを報告しているとかでできなかった。
また、gpartedでもリサイズできなかったので、小一時間悩んだ。
思い切ってバックアップは取ってあるのでMacのパーティションを消す。
gpartedではMacのHFS+でフォーマットできないので、空いた所にフォーマット無しのパーティションを作る。
変更を書き込んでUbuntuは終了させる。
■Macをバックアップから復活させる
Macのインストールディスク(LeopardかSnowLeopard)を入れてalt押しながらMacbookPro起動。
Macのパーティションを消したからかボリューム名がズレて、見た目CDなのにWindowsと書かれたアイコンができるので、それを起動。
Leopardのインストール画面になる。
インストールはせずに、画面の上のメニューからDisk Utilityを起動して、さっき作った未フォーマットのパーティションをHFS+にする。
さらにTimeCapsuleとLANケーブルで直接接続し、「バックアップからシステムを復元」でMac OSXを復活させる
→ Snow LeopardからLeopardに戻した – 橋本詳解
8時間ぐらい待つ。ばっちり20GB増えてた。
そういえば検索するとWinCloneというソフトを使えと書いてあるページがいくつか出てくるが、WinCloneは最新版の公開が停止されていて、ひとつ古いバージョンを使ったら完全にパーティションサイズが同じでないと書き戻しができなかった。
cvCalcOpticalFlowBM
オプティカルフローのサンプルコードをちょっといじって、カメラからの入力を表示してみた。
ブロックマッチングによるオプティカルフローを使った。
できたソースコード、Makefile





image.cpp
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <ctype.h>
#include <stdio.h>
#include <iostream>
#include <boost/format.hpp>
using namespace std;
using namespace boost;
void detect_flow(IplImage *img, IplImage *img_p, IplImage *dst);
int main(int argc, char* argv[]) {
IplImage *img = NULL;
CvCapture *capture = NULL;
capture = cvCreateCameraCapture(0);
//capture = cvCaptureFromAVI(&qute;test.avi&qute;);
if(capture == NULL){
cerr << &qute;capture device not found!!&qute; << endl;
return -1;
}
CvSize size = cvSize(240, 180);
IplImage *img_resized = cvCreateImage(size, IPL_DEPTH_8U, 3);
IplImage *img_gray = cvCreateImage(size, IPL_DEPTH_8U, 1);
IplImage *img_gray_p = cvCreateImage(size, IPL_DEPTH_8U, 1);
IplImage *img_dst = cvCreateImage(size, IPL_DEPTH_8U, 3);
char winNameCapture[] = &qute;Capture&qute;;
cvNamedWindow(winNameCapture, CV_WINDOW_AUTOSIZE);
while (1) {
img = cvQueryFrame(capture);
cvResize(img, img_resized);
cvCvtColor(img_resized, img_gray, CV_BGR2GRAY);
cvCopy(img_resized, img_dst);
detect_flow(img_gray, img_gray_p, img_dst);
cvShowImage(winNameCapture, img_dst);
cvCopy(img_gray, img_gray_p);
if (cvWaitKey(10) == 'q') break;
}
cvReleaseCapture(&capture);
cvDestroyWindow(winNameCapture);
return 0;
}
void detect_flow(IplImage *src_img1, IplImage *src_img2, IplImage *dst_img){
int i, j, dx, dy, rows, cols;
int block_size = 10;
int shift_size = 1;
CvMat *velx, *vely;
CvSize block = cvSize(block_size, block_size);
CvSize shift = cvSize(shift_size, shift_size);
CvSize max_range = cvSize(50, 50);
rows = int(ceil (double (src_img1->height) / block_size));
cols = int(ceil (double (src_img1->width) / block_size));
velx = cvCreateMat(rows, cols, CV_32FC1);
vely = cvCreateMat(rows, cols, CV_32FC1);
cvSetZero(velx);
cvSetZero(vely);
cvCalcOpticalFlowBM(src_img1, src_img2, block, shift, max_range, 0, velx, vely);
for (i = 0; i < velx->width; i++) {
for (j = 0; j < vely->height; j++) {
dx = (int)cvGetReal2D(velx, j, i);
dy = (int)cvGetReal2D(vely, j, i);
cvLine(dst_img, cvPoint(i * block_size, j * block_size),
cvPoint(i * block_size + dx, j * block_size + dy), CV_RGB(255, 0, 0), 1, CV_AA, 0);
}
}
}
Makefile
SRC = image.cpp
DST = image
prefix=/opt/local
INCPATH=$(prefix)/include
LIBPATH=$(prefix)/lib
OPT= -lcv -lcvaux -lcxcore -lhighgui
CC=g++ -O
CFLAGS= -I$(INCPATH)/opencv
LDFLAGS=-L. -L$(LIBPATH)
all:
$(CC) $(SRC) -o $(DST) $(CFLAGS) $(LDFLAGS) $(OPT)
cocoa emacsをインストールした
carbon emacsを使ってたけど、cocoa emacsに乗り換えた。
動作中にメニューの[Windows]→[Font Panel]でフォントサイズをかんたんに切り替えられるのがうれしい。
macportsでインストールした
sudo port install emacs-app-devel
先に持ってたホームディレクトリの.emacs.elや.emacs.d/以下は削除した。
/Applications/MacPorts/Emacs.app から起動。
Command + , で設定画面がでて、フォントなどの設定ができる。
バックスラッシュを打てるようにAlt/Optionキーの割り当てを無くして、かわりにFnキーにMetaを割り当てる
これでalt+¥で\が打てるようになった。

背景黒で文字を白にしたいので
esc-xして
set-background-color blackを指定。
set-forground-color white
Save Optionsで保存し、一旦終了する。次回起動時に背景黒文字白になってればok

Firefox拡張のIt’s All Textから指定するエディタへのパスは
/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacsになる。これでtextareaをcocoa emacsで編集できる。

Mac版Arduino IDEがlibrxtxSerial.jnilibが見つからないエラーで起動しないのを対処
起動時にこんなエラーが出た。環境はMacbook pro 17インチ OSX LeopardでXCodeなどもたぶん全部入れてあるメイン開発環境。
java.lang.UnsatisfiedLinkError: /Applications/arduino/Arduino.app/Contents/Resources/Java/librxtxSerial.jnilib: no suitable image found.

原因は64bit環境で実行されようとしているかららしい。
対処法は2つ。
■Arduinoを32bit版で起動させる
Arduino実行ファイルを右クリックして「情報を見る」
「32ビットモードで開く」にチェック入れる
(hitoriblogさんより)
■64bit版rxtxSerial.jnilibをインストールする
http://iharder.sourceforge.net/current/java/librxtxSerial.jnilib を
/Arduino 16.app/Contents/Resources/Java/
の中にある librxtxSerial.jnilib と入れ替える。
これはTechnobabble: Arduino: Problems With librxtxSerial.jnilibに書いてあった方法。
両方ともIDEの起動までは試した。
Arduinoの実機が今ないので動作は試していない。まあどっちかで動くだろう。
他にもフォーラムでも同様の質問が出ていて、こちらでは
アプリケーション/ユーティリティ/Java Preferences
でJavaアプリケーションの方でJ2SE5.0の32bit版が優先されるように上の方にもってこいという指示が出ていた。質問者はこれで解決したらしいけど俺の環境では駄目だった。
これはArduinoがJ2SE6向けに作られていないため。

最近のコメント