Ubuntu10.04 に kinect の設定をする[未解決]
未解決の問題です
kinect が届いたので,
さっそく Ubuntu10.04(32bit) に OpenNI をいれて使ってみようと思います.
http://tclip.blog38.fc2.com/blog-entry-103.html
を参考にインストールをしてみました.
依存ライブラリ(libglut関係,libx関係,libusb関係)のインストール
OpenNI のインストール
mkdir ~/kinect && cd ~/kinect
git clone https://github.com/OpenNI/OpenNI.git
cd OpenNI/Platform/Linux-x86/CreateRedist
./RedistMaker
cd ../Redist
sudo ./install.sh
(libusb-0.0.8 が必要だと言われたら,
libusb-0.0.8 のソースをとってきてインストールする.)
kinect ドライバのインストール
cd ~/kinect/
git clone https://github.com/ros-pkg-git/Sensor.git
cd Sensor/Platform/Linux-x86/CreateRedist
./RedistMaker
激しくエラーが出てきた
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp: In member function ‘XnStatus XnSensorIO::OpenDevice(const XnChar*)’:
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp:99: error: ‘xnUSBOpenDeviceByPath’ was not declared in this scope
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp: In function ‘XnStatus Enumerate(XnUInt16, XnUInt16, XnStringsHash&)’:
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp:369: error: expected initializer before ‘*’ token
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp:372: error: ‘astrDevicePaths’ was not declared in this scope
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp:372: error: ‘xnUSBEnumerateDevices’ was not declared in this scope
../../../../Source/XnDeviceSensorV2/XnDeviceSensorIO.cpp:381: error: ‘xnUSBFreeDevicesList’ was not declared in this scope
make[1]: *** [Release/XnDeviceSensorIO.o] エラー 1
http://d.hatena.ne.jp/unpush/20110117/1295282016
によると
コミットid:b006b6642eb720c93cbba0d03b94fcb98cb9ba75
のコミットがいけないみたい。
なので,直前のコミットまでチェックアウト。
cd ~/Sensor
git checkout b006b6642eb720c93cbba0d03b94fcb98cb9ba75
git checkout HEAD~
cd Platform/Linux-x86/CreateRedist
git clean -dxf
./RedistMaker
cd ../Redist
sudo ./install.sh
NITE のインストール
http://www.primesense.com/?p=515
からダウンロードしてきて ~/kinect で展開
cd ~/kinect
tar -xf NITE-Bin-Ubuntu-x86-1.3.0.17.tar.bz2
Data 以下のファイルの実行権を 644に変更して,
ファイル内の key を編集。
key = 「0KOIk2JeIBYClPWVnMoRKn5cdY4=」
cd ~/kinect/Nite-.*/Data
chmod 644 *
emacs *
インストール開始!
key を聞かれたら,
公式サイトにのっている。
「0KOIk2JeIBYClPWVnMoRKn5cdY4=」
を入れる。
sudo ./install.bash
cp でエラーをはいていた。こんな感じのエラーだった。
http://groups.google.com/group/openni-dev/browse_thread/thread/848487b8857bb668
参照ページを
http://ja.nishimotz.com/openni
にしてトライ。
・「CommonMakefile を chmod 644 して emacs で開き、SSE を 2 にする。」
・niLicense の設定
を試してみる。
sudo niLicense PrimeSense 0KOIk2JeIBYClPWVnMoRKn5cdY4=
sudo ./install.bash
./Sample-Boxes
InitFromXml failed: Can't create any node of the requested type!
とエラーが出てきてしまう・・・
結局どうすればいいかわからなかった。
railsにあったカッコイイ関数について
この前,railsで遊んでたときに
validates :name, :presence => true, :length => {:maximum => 30}
とか書く場面があった.これを書いて
「カッコイイ!!だけどどう実装しているのか分からない(>_<)」
と思った.
だけど,
http://www.oiax.jp/rails/study/active_record_validations_add.html
このサイトをみて何となく分かった.
数の総和を出す関数(数は3つ以下,未定義の数は0にする)を
def tasizan3( kazu = {})
kazu = {
:v1 => 0,
:v2 => 0,
:v3 => 0
}.merge kazu
kazu[:v1]+kazu[:v2]+kazu[:v3]
end
みたいに定義してつかえるみたい.
出力は
tasizan3 #=> 0
tasizan3 :v1=>1 #=> 1
tasizan3 :v1=>1 :v2=>2 #=> 3
tasizan3 :v1=>1 :v2=>2 :v3=>4 #=> 7
tasizan3 :v1=>1 :v2=>2 :v3=>4 :v4=>8 #=> 7
みたいになります.
ちなみに
validates :name, :presence => true, :length => {:maximum => 30}
の第一引数の :name はアクセッサの名前を指定しているみたいです.
だから
validates :name, :presence => true, :length => {:maximum => 30}
は
:name と同じ名前のアクセサに
:presence (表示)を有効にする ことと
- length (長さ)の
- maximum (上限)を30にする こと
を有効にします.
という意味みたいです.
そう言えば,twitterAPIのときも同じようなことがありました.
http://github.com/jnunemaker/twitter/blob/master/lib/twitter/trends.rb
どうやら,最後の引数をoptionという名前のハッシュして使うのは常套手段らしいです.
でも,この実装だと,Rdocを作ったときに
http://rdoc.info/github/jnunemaker/twitter/master/Twitter/Trends
どんなオプションがあるのか書いたりするのは大変そうです.
オプション名の補完をするのも難しそう.
どうしているんだろう・・・
でも,引数のデフォルト値を持った関数を定義するのに
便利なので使おうと思いました.■
ruby 私的メモ
文字列の出力中に少しだけ変数を混ぜたいとき
変数をs_valとすると
"hoge#{s_val}hoge"
みたいにかける.
ハッシュのキーはシンボルを使うといい
hashdayo[:key1]
:key1みたいなやつ.
関数の引数のデフォルト値を定められる
可変長の引数は
def func(*vals)
end
みたいに書く
例外処理
rescue Exception => e
warn "Exception: #{e.message}"
みたいに書くとメッセージが出てくる
ensureは異常でも正常でも実行してほしいもの
アクセサ
読みだけ attr_reader :val
書きだけ attr_writer :val
読書両方 attr_accessor :val
クラスにメソッドを直接追加
class << instancename
def func
end
end
検索コマンドのメモ
- grep ファイル内文字列の検索
形式
grep (option) [keyword] filename
使いそうなオプション
-i:大文字と小文字を両方検索
-l:ファイル名のリストのみ出力
-r:ディレクトリ以下も再帰的に検索
(例)
$grep hoge hoge.txt
hoge.txtに"hoge"があるか探す
$grep -l -r -i vector *
"vector"を含むファイルがあるか探す.
検索対象は実行した階層以下のすべてのファイル.
"vector"の文字は大文字小文字を区別しない.
(参考)
http://www.k-tanaka.net/unix/grep.html
- find ファイルの検索
形式
find [directory] (option)
使いそうなオプション
-name [name] ファイル・フォルダ名指定
-print 標準出力
-type d ディレクトリ検索
-type f ファイル検索
-type l シンボリックリンク検索
-exec [command] {} \; コマンド実行
正規表現の注意
-nameでつかう任意の文字列は"\*"("*"ではない).
$find * -name \*.c
.cファイルの検索
$find * | wc -l
階層以下のファイル数表示.
$find * -exec wc {} \;
階層以下のファイルそれぞれの文字数情報をすべて表示.
$find . -name \*.\* -print | xargs grep -l ab
abを含む拡張子付きファイルの表示.
pdfファイルに文字コードを埋め込む
ちゃんとしたやり方かは分からないけれど
自分がやってできた方法はこちら
(環境)
ubuntu9.10
platex
dvipdfmx
フォントディレクトリを作成
$ sudo mkdir -p /usr/share/texmf/fonts/truetype/
移動
$ cd /usr/share/texmf/fonts/truetype/
シンボリックリンクの作成
$ sudo ln -s /usr/share/fonts/truetype/ttf-ipamonafont
登録
$ sudo mktexlsr
- .mapファイルの作成
tex文章と同じ階層に適当な.mapファイルを作ります
$emacs (てきとう).map
設定値を以下のようにします.
%フォントタイプ 縦組みか横組みか フォント名(ここでは/usr/share/fonts/truetype/ttf-ipamonafont以下のファイル名)
rml-jis H ipam-mona
gbm-jis H ipag-mona
- dvipdfmxで変換
(nantoka).mapファイルを作って
dvipdfmx に -f (nantoka).map オプションを追加すればできた。
例
$dvipdfmx -f (nantoka).map -o (outputname).pdf (inputname).dvi
- メモ
システム全体のフォントマップを変えたい場合は
''/etc/texmf/dvipdfm/''
以下の
jis-cjk.map (日本語)
cid-x.map
を変更してください.
apacheでcgiを許可
ubuntu9.10で,
パーミッションの問題
・ファイル自身
・フォルダ
・ExecCGI
・suじゃないと編集できないところ
(等を書く予定)
gauche+emacs
gaucheをemacsで使う時の設定
「プログラミング言語Gauche」より
;;gauche (modify-coding-system-alist 'process "gosh" '(utf-8 . utf-8)) (setq scheme-program-name "gosh -i") (autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t) (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t) (defun scheme-other-window () "Run scheme on other window" (interactive) (switch-to-buffer-other-window (get-buffer-create "*scheme*")) (run-scheme scheme-program-name)) (define-key global-map "\C-cs" 'scheme-other-window) ;; ~/elisp をライブラリパスに追加 (setq load-path (append (list (expand-file-name "~/elisp/") ) load-path) )