Old: Ver.1 - 3: PTAMをLinux(Ubuntu)上のUSBカメラで動かそう

English, Casper Cartridges, kameda-lab.org 2010/11/23a, (2012/10/10)

最新版について

Ver.3シリーズより新しいCasper Cartridgeがあります。
下記からアクセスしてください。
【Casper Cartridge Top】


Ver.1-3概観 カートリッジ一覧 解説 内部作業履歴 OpenCVサンプル群 ARToolKit PTAM OpenCV開発版

概要

Ubuntu 10.04 LTS 日本語 Remix Live CDから興したUSBメモリでの実行環境で、 OpenCV 2.1.0 だけでなく PTAM も動かしてみましょう、というものです。

PTAM(r114, 2010/01/29版)の指示どおりに やっても上記の環境では微妙にコンパイルが通りません。 しかもこちらの希望としてはノートPC(Panasonic CF-Y5とか)で動かしたかったりUSBカメラを 使いたかったりする(授業とか出前とか)ので、今回手順をアップデートして、ついでに 若干修正してみました。

以下の作業は 「Ubuntu 10.04 LTS + OpenCV 2.1.0 on USB memory stick」が前提です。 作業面倒くさそう、と思った人は メモリスティック実行環境を作る 方が断然簡単なのでそちらをどうぞ。

動いた、動かなかった、どちらの情報でも歓迎します。 (返事できるかどうか自信はありませんが)


準備

PTAM-linux-go_YYYYMMDD.tgzの中にPTAM(r114)を同梱してありますが、 そのライセンスは必ず守ってください。 また、作者のGeorg Kleinさんは頒布時にユーザ記帳を希望しているので、 PTAMのWebサイトに行って名前と所属とメールアドレスぐらいは 書いてきてください(ページの末尾)。 (そこにライセンス条項も記述されています)


Install

どこかにPTAM-linux-go_YYYYMMDD.tgzを展開してください。 下記のようになるはずです。

$ cd
$ tar xvfz PTAM-linux-go_YYYYMMDD.tgz

PTAM-linux-go/PTAM-r114-2010129.zip
PTAM-linux-go/PTAM-linux-go.bash
PTAM-linux-go/PTAM-linux-compileagain.bash
PTAM-linux-go/hack/libcvd/convolution.cc
PTAM-linux-go/hack/gvars3/serialize.h
PTAM-linux-go/hack/PTAM/PTAM-r114-linux.patch
PTAM-linux-go/hack/PTAM/README_PTAM-r114-linux-patch.txt
PTAM-linux-go/hack/PTAM/modified_files/Build/Linux/Makefile
PTAM-linux-go/hack/PTAM/modified_files/Build/Linux/VideoSource_Linux_OpenCV.cc
PTAM-linux-go/hack/PTAM/modified_files/CHANGELOG_kmd.txt
PTAM-linux-go/hack/PTAM/modified_files/CalibImage.cc
PTAM-linux-go/hack/PTAM/modified_files/CalibImage.h
PTAM-linux-go/hack/PTAM/modified_files/CameraCalibrator.cc
PTAM-linux-go/hack/PTAM/modified_files/EyeGame.cc
PTAM-linux-go/hack/PTAM/modified_files/System.cc
PTAM-linux-go/hack/PTAM/modified_files/Tracker.cc
PTAM-linux-go/hack/PTAM/modified_files/Tracker.h
PTAM-linux-go/hack/PTAM/modified_files/main.cc

この先は、Ubuntuにパッケージを入れる必要があるので、ルートのパスワードを知っている必要があります。
また、インターネット接続も必要です。
あと、インストール先はあなたのホーム直下の ./PTAM-work です。 (嫌なら自分でスクリプト書き換えてね)

大丈夫ですか? では、あとは、このPTAM-linux-go ディレクトリに移動して、 スクリプトを実行です。
(コメント以外を1行ずつ全部手打ちでも問題ありませんよ)
$ cd
$ cd PTAM-linux-go
$ bash ./PTAM-linux-go.bash

パッケージ導入のためにrootのパスワードを時々聞かれたりするかもしれませんし、[Y/n]で質問されたら全て"y"と答えてください。
あとは全部自動で最後まで行くはずです。
(Ubuntu 10.04LTSインストール初期状態ではrootにパスワードがついてないので途中では止まらないはず)
(もし万一途中でこけた時は、時間とリソースさえ気にならないのなら ./PTAM-work を一旦消して最初からどうぞ)

さて、あとは実行するのみです。
USBカメラは差し込みましたか?
用意できましたか?
まず最初に内部カメラパラメータの推定を行います。
$ cd
$ cd PTAM-work/PTAM/
$ ./CameraCalibrator [-coloron] {number|file|url}
- もし画面が見えずに真っ暗だったら、"-coloron" オプションを試してみてください。
- もしカメラが複数台接続されている場合は、数字を指定してください(0でデフォルト、1で2台目のカメラ、以下同様)
- ムービーファイルを指定すると、それを入力にします。
- ムービーを与えてくれる有効なURLを指定すると、それを入力にします。

同じディレクトリにあるcalib_pattern.pdfを(できれば固い紙に)印刷して、平たいところに置きましょう。
カメラで、格子模様がだいたい全体に入るように構えます。
(欠けてても可、】紙が画面の一部に小さくしか写ってない方が経験的にはまずいです)
(紙がインクとかでしわしわだと精度が出ませんよ!)
構えたら、GrabFrameをクリックします。
これを4枚以上行います。ちょっとずつ、僅かに向きを変えるのがポイントです。
溜まったら、Optimizeをクリックします。
計算が収束したら、Show Nextで全部画像を確認しましょう。
青い格子が上手に重なってなければやり直しです。
数値的には、黄色い字のメッセージの2行目のRMS pixel errorが0.5以下を狙ってください。
結果が良ければ、Saveをクリックして終了です。

いよいよ次はお待ちかねの本題。
$ ./PTAM [-coloron] [-lightoff] {number|file|url}
- もし画面が見えずに真っ暗だったら、"-coloron" オプションを試してみてください。
- もし4つ目玉が真っ黒だったら、"-lightoff" オプションを試してみてください。
- もしカメラが複数台接続されている場合は、数字を指定してください(0でデフォルト、1で2台目のカメラ、以下同様)
- ムービーファイルを指定すると、それを入力にします。
- ムービーを与えてくれる有効なURLを指定すると、それを入力にします。
スペースバーを1回叩くとオレンジの線が伸びるので、 「カメラをスライドさせて」オレンジの線を伸ばしてください。
いい具合になったら、もう一度スペースバーを叩きます。
グリッドが落ち着いていれば成功です。
Draw AR OffをクリックしてDraw AR Onにして、目玉を表示してみましょう。
もしグリッドが落ち着かなければ、Resetをクリックしてやり直し。

成功したら、もう一度Draw AR Offにして、点群を周囲に増やすように ゆっくりカメラをまわして見ましょう。
感覚的には、カメラの向きをやさしく1/3ほど変えては数秒待ってる、ぐらいです。
上手に行けば、そのあたりで各色の点群がパッと増えます。
これを繰り返せばドンドン頑健になります(モデリングを狙った操作)。
ちなみに点を十分に増やして、もういいやと思ったら、容赦なくカメラを振り回してもOK(トラッキングのみを狙った操作)。


Some Tips

You still need to choose a "right" camera and "right" graphic card.
It should work with ordinally cameras (including many of Logicool cameras) and popular (perhaps cheap) graphic environment (such as Intel integrated chip).

Even in successful cases, you might need to try a couple of times before you can invoke PTAM window, probably because the program sometimes fails in getting image buffer from USB camera.

PC
[Good]
(So far as I tested, most of Desktop PC should be OK if you can boot it by USB)
o Panasonic CF-Y5
o Dell Dimension 9150
o Dell Inspiron 9400
o Dell Latitude 2100
o Fujitsu FMV ESPRIMO D5370
o Asus EeePC901
o SONY VAIO type-F VPCF128FJ
[Option needed]
o Panasonic CF-Y8 (-lightoff)
o Toshiba Dynabook SS RX2 (-lightoff)
o Dell Latitude E4300 (-lightoff)
[NG]
x Any of Mac Books
x Dell Inspiron 6000

Camera
[Good]
o Logicool V-U0010
o Logicool UBK45
o Logicool V-UAR38
o Logicool V-UBM46
o NetCowboy DC-NCP130
o V-Gear TalkCam 1.1
o Buffalo BWC-130H01
o Elecom UCAM-DLX3000B
[NG]
x V-Gear TalkCam Pro


コメント

独り言というか愚痴とかいろいろ。
PTAM-linux-go/PTAM-linux-go.bash
下記で太字部分がroot権限の必要なところです。
#!/bin/bash
#
# A quick hack to compile PTAM (r114, 2010/01/29) on Ubuntu10.04LTS
# 
#    Many many thanks to Georg Klein
#                 and to Arnaud GROSJEAN
#
# 2010/10/12 Minor Bug Fixed, Patch of PTAM changed
# 2010/10/07 Released 
# 2010/10/02 start writing by Yoshinari Kameda, kameda[at]iit.tsukuba.ac.jp
#

targettopdir=$HOME/PTAM-work
pwdinfo=`pwd`

# OpenCV?
echo "--------------------------------------------------------------"
echo "Do you have OpenCV 2.1.0 ? If not, stop here and prepare that."
echo "(Pausing 10 seconds here)"
echo "--------------------------------------------------------------"
sleep 10

# You may need more?
# Consult "Ubuntu10.04LTS + OpenCV2.1.0 on USB" project by kameda 
echo "----------------------------------------------------------"
echo "You need liblapack-dev freeglut3-dev, and libdc1394-22-dev"
echo "Are you OK? (Pausing 10 seconds here)"
echo "-----------------------------------------------------------"
sleep 10
sudo apt-get install liblapack-dev freeglut3-dev libdc1394-22-dev

export CVS_RSH=ssh

mkdir -p $targettopdir

# TooN
echo "------------------------------------"
echo "Start compiling Toon in 3 seconds..."
echo "------------------------------------"
sleep 3
pushd $targettopdir
cvs -z3 -d:pserver:[email protected]:/sources/toon co -D "Mon May 11 16:29:26 BST 2009" TooN
cd TooN
./configure
sudo make install
popd

# libcvd
echo "--------------------------------------"
echo "Start compiling libcvd in 3 seconds..."
echo "--------------------------------------"
sleep 3
pushd $targettopdir
cvs -z3 -d:pserver:[email protected]:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" libcvd
cd libcvd
mv cvd_src/convolution.cc cvd_src/convolution.cc-original
cp $pwdinfo/hack/libcvd/convolution.cc cvd_src/convolution.cc
export CXXFLAGS=-D_REENTRANT
./configure --without-ffmpeg
make
sudo make install
popd

# gvars3
echo "---------------------------------------"
echo "Start compiling gvars3 in 3 seconds ..."
echo "---------------------------------------"
sleep 3
pushd $targettopdir
cvs -z3 -d:pserver:[email protected]:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" gvars3
cd gvars3
mv gvars3/serialize.h gvars3/serialize.h-original
cp $pwdinfo/hack/gvars3/serialize.h gvars3/serialize.h
./configure --disable-widgets
make
sudo make install
popd

# before you go further, re-arrange the dynamic libraries
sudo ldconfig

# PTAM main
echo "--------------------------------------"
echo "Start compiling PTAM in 10 seconds ..."
echo "YOU NEED TO AGREE WITH THEIR LICENSE !"
echo "--------------------------------------"
sleep 10
pushd $targettopdir
unzip $pwdinfo/PTAM-r114-2010129.zip
patch -p0 -d . < $pwdinfo/hack/PTAM/PTAM-r114-linux.patch
cd PTAM
cp Build/Linux/* .
make

# Tips at end
echo "----------------"
echo "Is the camera ready?"
echo "Let's go to $HOME/PTAM-work/PTAM "
echo "You need to first run ./CameraCalibrator"
echo "and save a camera config file."
echo "Then, you can enjoy ./PTAM !"
echo "----------------"

exit 0

亀田能成 (KAMEDA, Yoshinari) kameda[at]iit.tsukuba.ac.jp, kameda[at]ieee.org