cuda3.0 beta for Mac OS X (bookpro and snow leopard)
1.cudatoolkit_3.0-beta1_macos_32.pkgからtoolkitをインストール
2.cudadriver_3.0.1-beta1_macos.pkgでドライバインストール
/usr/local/cuda/lib/libcuda.dylibが生成されるが、パーミッションがおかしいので、ほかのライブラリと同じにそろえる
注1:cudadriver_3.0.0-beta1_macos.pkgだとサンプルはコンパイルできますが実行時に、cudaSafeCall errorがでます。Non-GT200だと3.0.0を選べと書いてあるが。。。
中2:libcuda.dylibのパーミッションをそろえないと、サンプルのコンパイル時に-lcudaで「libcudaが見つからない」と怒られる
3.gpucomputingsdk_3.0-beta1_macos_32.pkgでサンプルをインストール
4./Developer/GPU Computing/Cでmake
5./Developer/GPU Computing/OpenCLでmake
CUDA2.3と異なりgcc4.2でコンパイルok
6.[システム環境設定]->[省エネルギー]->[グラフィックス]->[パフォーマンス優先]にすると"GeForce 9600M GT"も認識する
7./Developer/GPU Computing/C/bin/darwin/release/deviceQueryを実行すると、"GeForce 9600M GT"と"GeForce 9400M"を認識
EHHL!
ARToolkit for 64bit Linux and YUV422 patch
64bit Linux + YUV422 CameraでARToolkitを動かす。
最新版ARToolKit対応のV4L2用のパッチ作った
を拡張したパッチを作成。
http://staff.aist.go.jp/k.kojima/artoolkit/artk-yuv422-v4l2-2.72.1.20090801.patch
動作環境
Debian:linux-image-2.6.26-2-amd64
camera:Princeton PWC-130UAFS
手順:
v4l-info | grep YUVで、
description : "YUV 4:2:2 (YUYV)"
となることを確認。
これでない場合は、動作しないと思います。
patchをARToolkitと同じディレクトリにコピー。
パッチの47行のinclude pathは環境に合わせて変更して下さい。
$ patch -p0 -d . < artk-yuv422-v4l2-2.72.1.20090801.patch
- ./Configureの実行。
- Select a video capture driver. 3.
- Color conversion should use x86 assembly (not working for 64bit)? n。
- 以下、環境に合わせて選択。
- makeの実行。
- cd bin
- ./simpleTest
以上。
patch作成前の症状。
- V4L2のパッチを当てた場合。Color conversion should use x86 assembly (not working for 64bit)?でyを選択したとき
ccvt_i386.S: Assembler messages: ccvt_i386.S:249: Error: suffix or operands invalid for `push'
とアセンブルのエラー。
- Color conversion should use x86 assembly (not working for 64bit)?でnを選択したとき
../../lib/libARvideo.a(video.o): In function `ar2VideoGetImage': /home/kojima/sdk/ARToolKit/lib/SRC/VideoLinuxV4L2/video.c:723: undefined reference to `ccvt_yuyv_rgb24' collect2: ld returned 1 exit status
lib/SRC/VideoLinuxV4L2/video.cで呼び出されているccvt_yuyv_rgb24が無いと言われる。
このような症状の方は、パッチを試して下さい。
新たに作成したパッチでは、このccvt_yuyv_rgb24を作成しました。
原因について
usbカメラ画像データフォーマットは、YUV444, YUV422, YUV420など様々あります。
詳しくは、http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/yuv.htmlを参照。
V4L2用パッチでは、このうちYUV420のみに対応している。ただし、ccvt_i386.Sではアセンブルコードで各種対応していますが、64bit Linuxではコンパイルできないようです。
所有のカメラが、YUV422対応であったため(v4l-info | grep YUVで確認)、ccvt_yuyv_rgb24が呼び出されるが、V4L2パッチでは実体が無いのがエラーの原因。そこで、YUV422のデータフォーマットを、http://son-son.sakura.ne.jp/programming/macosx_seesaw.htmlを参考に、ccvt_yuyv_rgb24を作成。
ただし、データフォーマットは参考ページの
U01,Y0,V01,Y1
ではなく
Y0,U01,Y1,V01
であった。
v4l-info | grep palette
でデータ配列内の順序が分かるみたい。
その他のデータフォーマットの場合
コンパイルエラーや、写ったけど画像が変、Segmentation Faultを起こす場合は、データフォーマットを調べ、RGB変換関数を作成してみるといいかも。
boost matrix serialization
boost::numeric::ublas::matrixをserializeする方法。
serializationには、boostを事前にコンパイルしておく必要あり。
1 cd boost_install_dir
2 ./bootstrap.sh
3 ./bjam
boost_install_dir/stage/libにライブラリが作成される。
ld.so.conf.dにboost.confを作成。
#boost.conf
boost_install_dir/stage/lib
ldconfigの実行。
main.cpp
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> #include <boost/serialization/serialization.hpp> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> using namespace boost; using namespace boost::numeric::ublas; using namespace boost::archive; #include <iostream> #include <fstream> using namespace std; int main( void) { { int N =5; int M =2; matrix<int> mat_write( N, M); for( size_t i =0; i <mat_write.size1(); ++i){ for( size_t j =0; j <mat_write.size2(); ++j){ mat_write( i, j) =i+(j+1); } } cout <<mat_write <<endl; ofstream file( "save.dat"); text_oarchive oa( file); oa <<(const matrix<int>)mat_write; file.close(); } { matrix<int> mat_read; ifstream file( "save.dat"); text_iarchive ia( file); ia >>mat_read; file.close(); cout <<mat_read <<endl; } return 0; }
g++ main.cpp -I{boost_install_dir} -L{boost_install_dir/stage/lib} -lboost_serialization-xx-mt
xxにはgcc43などコンパイル環境に依存する。boost_install_dir/stage/libを見れば分かる。
Mac OS Xの場合は、export DYLD_LIBRARY_PATHを通しておくこと。
ホストOS:Debain lenny ゲストOS:windows xpでサウンド設定
ホストOS:Debain lenny、ゲストOS:windows xpで音をならす
/usr/share/alsa-base/snddevices
を実行。
snddevicesがない場合は、alsa-baseをインストール。
/dev/dspが作成される。
.vmxファイルのsound設定を
# ----- Sound -----
sound.present = "TRUE"
sound.autoDetect ="TRUE"
sound.virtualDev = "es1371"
sound.device ="/dev/dsp"
sound.fileName = "-1"
と変更。
vmware playerでwindows xpを起動。
ホストOSの再起動に伴い、/dev/dspは毎回無くなってしまうので
/etc/init.d/alsaを作成
/usr/share/alsa-base/snddevices
を記述。
update-rc.d alsa defaults 99 1
を実行。
livedoorクリップとSQLite3
livedoorクリップをSQLite3に読み込む
cat clip.org.csv | sed -e 's/^\"//g' | sed -e 's/\"$//g' > clip.csv
create_cliptable.sql
-
- -
create table clip (
user_id int not null,
url varchar(255) not null,
timestamp timesatmp,
tags text
);
-
- -
sqlite3 clip.db < create_cliptable.sql
sqlite3 -separator \",\" clip.db ".import clip.csv clip"
MacとS21HTの同期
SysncMate http://mac.eltima.com/sync-mac.html
Mac BookAir(OS 10.5.6)+S21HT(Windows Mobile 6.0 professional)
USBではS21HTと接続できずWiFiにて同期が成功
1.SyscMateをMacにインストール(再起動します)
2.Macの[アプリケーション]->[SyncMate.app]で"パッケージの内容を表示"を選択し,[Contents]->[Resources]->SyncMate.arm.CABをS21HTにコピーしてインストール.これでSyncMateDriverのインストール完了
3.S21HTのプログラムでSyncMateDriverを立ち上げ,アクセス許可WiFiの設定
4.MacでSyncMateを起動し,メニューで同期設定
5.Sync Nowで同期完了