10 月
9
10 月 9th, 2009
テクスチャに対応.こんな感じ.

textured cube
(require :komainu)
(use-package :komainu)
(use-package :nurarihyon)
(use-package :nurikabe)
(defvar *viewer* (make-komainu-viewer :loggingp t))
(defvar *a* (make-cube 100.0 100.0 100.0 :color :red))
(defvar *im* (make-image :width 300 :height 300 :background :green))
(draw-string *im* "Hoge" 150 150
:font-size 0.03
:color :black)
(paste-texture (car (faces-of *a*)) *im*
(list (float-vector 0 1)
(float-vector 0 0)
(float-vector 1 0)
(float-vector 1 1)))
(objects *viewer* (list *a*))
このために, clxのGLX, OpenGLのバインディングを捨てて, すべてcffiでバインディングを1から作り直すことにした.
ちなみに, 2Dの描画はcl-vectorsをつかってベクター描画.
common lisp
10 月
4
10 月 4th, 2009
snow leopardでsbclのbuildにてこずったのでメモ
まずいまのstable版ではmakeが通らない.
以下のようなエラーが出る.
//entering make-target-1.sh
//building runtime system and symbol table file
rm -f *.[do] sbcl sbcl.nm sbcl.h core *.tmp
echo '#include "genesis/config.h"' >sbcl.h
echo '#include "genesis/constants.h"' >>sbcl.h
gcc -g -Wall -O2 -fdollars-in-identifiers -mmacosx-version-min=10.4 -I. -no-cpp-precomp -c -o alloc.o alloc.c
In file included from alloc.c:21:
runtime.h: In function 'CONS':
runtime.h:151: warning: cast to pointer from integer of different size
runtime.h: In function 'SYMBOL':
runtime.h:157: warning: cast to pointer from integer of different size
runtime.h: In function 'FDEFN':
runtime.h:163: warning: cast to pointer from integer of different size
/var/folders/3K/3K4LXRIJHoq8UNahYP7P4U+++TI/-Tmp-//cck88adh.s:81:Incorrect register `%rbx' used with `l' suffix
/var/folders/3K/3K4LXRIJHoq8UNahYP7P4U+++TI/-Tmp-//cck88adh.s:578:Incorrect register `%rdx' used with `l' suffix
make: *** [alloc.o] Error 1
x86, x86_64にするとか1.0.30のバイナリをつかうとかいろいろ試してみたけど, 最終的にcvsの先端だとバグがfixされている模様
$ cvs -d :pserver:anonymous@sbcl.cvs.sourceforge.net:/cvsroot/sbcl co sbcl
そしたら, multi threadつかいたいのでsbcl/customize-target-features.lispというファイルを作る
(lambda (features)
(flet ((enable (x)
(pushnew x features))
(disable (x)
(setf features (remove x features))))
;; Threading support, available only on x86/x86-64 Linux, x86 Solaris
;; and x86 Mac OS X (experimental).
(enable :sb-thread)))
次にsbcl/sbclcomprというのを作る
SBCL_HOME=/usr/local/lib/sbcl /usr/local/bin/sbcl $*
そんでもって
$ sh make.sh "sbclcompr"
$ sudo sh install.sh
なんかrun-tests.shが大量のエラーをはいてるけど, みなかったことにしよう…
追記:
sh run-tests.shの結果
Finished running tests.
Status:
Expected failure: float.pure.lisp / (SCALE-FLOAT-OVERFLOW BUG-372)
Expected failure: float.pure.lisp / (ADDITION-OVERFLOW BUG-372)
Expected failure: threads.pure.lisp / WITHOUT-INTERRUPTS+CONDITION-WAIT
Expected failure: callback.impure.lisp / UNDERFLOW-DETECTION
Invalid exit status: clos-add-remove-method.impure.lisp
Invalid exit status: clos-cache.impure.lisp
Invalid exit status: clos-interrupts.impure.lisp
Invalid exit status: compare-and-swap.impure.lisp
Invalid exit status: debug.impure.lisp
Expected failure: external-format.impure.lisp / (CHARACTER-DECODE-LARGE
FORCE-END-OF-FILE)
Invalid exit status: gc.impure.lisp
Invalid exit status: hash.impure.lisp
Expected failure: packages.impure.lisp / USE-PACKAGE-CONFLICT-SET
Expected failure: packages.impure.lisp / IMPORT-SINGLE-CONFLICT
Invalid exit status: profile.impure.lisp
Invalid exit status: threads.impure.lisp
Invalid exit status: timer.impure.lisp
Invalid exit status: core.test.sh
test failed, expected 104 return code, got 1
common lisp, os x
10 月
1
10 月 1st, 2009
最近というかこの一瞬間くらいで猛烈に実装しているのですが, 幾何ライブラリとそのビューワーをせっせと作ってます.
これくらいのコードで
(require :komainu)
(defvar *viewer* (komainu:make-komainu-viewer))
(komainu:objects *viewer* (komainu:make-cube 100 100 100))
こんなかんじの表示が出ます.

komainu viewer
ちなみにkomainuっていうパッケージが幾何ライブラリ.
依存するライブラリとしてはchimi(ユーティリティライブラリ), nurarihyon(数学ライブラリ), nurikabe(GUIライブラリ)があります.
もうちょっとできて, いろいろと落ち着いたら公開します.
描画系はclxを叩いてglxでGLの関数を呼んでいます. clxのバグがいくつか発見されたので, どうしようかなーと悩み中
描画系のモットーはインタプリタからの対話性を重視
common lisp
9 月
6
9 月 6th, 2009
common lisp
8 月
1
8 月 1st, 2009
たまにはロボット研究者らしい記事でも書こう.
というわけでros
これはWillow Garageっていうアメリカの会社が開発してる.
WGはOpenCVとかもメインでサポートしてる.
rosはopencvとかいろいろつかったロボット用のソフトウェア.OpenRTMを想像すれば大体OK.
# 開発者によれば色々違う!と言いたいところだろうが, 使う側としてはどっちも似たような感じ
OpenRTMと違っているのはすでにアプリケーションが充実. 2dnavっていう経路計画ソフトとかはだいぶ凄い.
というわけで本題のインストール 基本的にはここにしたがっていけばOK
確認環境はubuntu 8.04 on VMWare
sudo aptitude install libcppunit-dev #これが必要だったけど, すでにdebugされてるかも
wget http://ros.sf.net/rosconfig -O ~/rosconfig
chmod 755 ~/rosconfig
~/rosconfig bootstrap -s http://ros.sf.net/config/stable.rosconfig ~/ros move_base_stage
これでしばしまつ.
boostとかmakeしはじめるのでだいぶ時間かかる
で、環境変数とか設定するために以下をおこなう
~/rosconfig setup ~/ros > ~/.bashrc.ros
echo "source ~/.bashrc.ros" >> ~/.bashrc
要注目コマンドがいくつか定義されてることに注意.
roscdとかrosapt-getとかrosmakeとか
特にrosapt-getとrosmakeは超重要.
データ可視化ソフトであるrviz位まではmakeしておく良い.
rosapt-get rviz
rosmake rviz
こんな感じでパッケージをmakeするまえにrosapt-getして, それからrosmakeする.
rvizはOgreとかmakeしはじめるのでこれまた結構時間がかかる.
WGでは信じられないペースでcommitされてるので, 1日で結構変わってたりすることにも注意.
動かし方とかはまた次回
robot