ARToolKit (1): Windows7、Visual C++2010環境でインストール
こういう動画 http://www.nicovideo.jp/watch/sm7269857 とか、
こういうの http://www.ideaxidea.com/archives/2010/06/ikea_ar_catalog.html とか
に触発されて、AR ToolKitをインストールしてみました。(未来っぽくてカッコイイですよね!)
自分でガチャガチャプログラミングしたいのと、今後Kinectなどと連動させて動かしたいので、Windows7、Visual C++ express 2010で実行できる環境構築を目指します。
AR Toolkitのインストール方法は http://3335.blog106.fc2.com/blog-entry-103.html
など至る所に書いてあるので問題ないと思われますが、
いくつか詰まるところがあり、しかもちゃんと書いてるところは少なかったりします。ここでは、詰まったところを中心に失敗例を見せながら説明したいと思います。(右往左往してサンプルプログラム実行まで約一日かかりました。)
このページでは以下の環境を前提としますので、環境が違う場合は自分のものと見比べて適宜置き換えて考えてください。
Windows 7 (32bit版)
Visual C++ Express Edition 2010
AR ToolKit 最新版のダウンロード
これは簡単です。
AR ToolKit 公式サイトのDownloadからlatest versionのバイナリをダウンロードします。Source Forgeのサイトへ飛ばされるので、適宜最新版を探してください。私はバージョン 2.72.1 のARToolKit-2.72.1-bin-win32.zip をダウンロードしました。
これを展開して、Cドライブの直下にでも置いておきましょう。私はc:\ARToolKitのようにおきました。
環境変数の設定
C:\ARToolKit\bin の中に、いくつか後に使うDLL (DSVL.dll, libARvideo.dll) が入っていますので、実行時に呼び出せるよう、システムの環境変数にこのパスを追加しておきましょう。
サンプルを動かそうとしてみる
C:\ARToolKit\binの中にたくさんの実行ファイルが入っていますが、これらはすべてAR Toolkitのサンプルプログラムです。あとで、まったく同じものをVC++上で動かしますので、ベンチマークとしてsimpleLite.exe を動かしてみましょう。(ウイルス対策ソフトの影響で実行が止められてしまう場合がありますが、その場合は適宜解除してみてください。)
すると下記のようなエラーメッセージが現れるはずです。
コンピューターに MSVCP71.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。
これはそのまま解釈すると、MSVCP71.dll というDLLが見つからないからもってこいや、ということですが、どうやらこのDLLはVC++ Toolkit 2003という古いツールの中に同梱されていたものだそうで。なんと、最近のVC++には入ってないそうなんです!ビデオインプット系統でこれを呼び出してるそうなんですが、なんでこんな古いの使ってやがる!しかもライセンス等の関係でDLLのみの再配布は禁止とのこと。
どうする・・・というわけで、みなさんはこれから私のいう呪文を聞いて考えてください。
「vector msvcp71.dll」でググる
ほら、不思議とどうにかなる気がしてきましたね(笑)
どうにかしてmsvcp71.dllとmsvcr71.dllを手に入れたら、C:\ARToolKit\bin に入れて他のパスから実行時に呼び出せるようにしてください。
これで動かしてみましょう。するとまた下記のエラーが出るはずです。
コンピューターに glut32.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。
こっちのエラーは簡単です。
C:\ARToolKit\DSVL\bin 以下に glut32.dll が入っていますので、C:\ARToolKit\binにコピーするか、C:\ARToolKit\DSVL\bin をシステム環境変数に追加してください。
むしろ、下記のエラーが出た方は要注意。
プロシージャ エントリ ポイント __glutInitWithExit がダイナミック リンク ライブラリ glut32.dll から見つかりませんでした。
これは、以前にglutのライブラリを別にインストールしていて、glut32.dll のパスが通ってしまっている人が起きる現象です。同じ名前なんだから問題ないじゃん、と思うかもしれませんが、バージョンが違います。アプリケーションで使っているglutライブラリとDLLのバージョンを揃えないと動きません。解決するためには、別でインストールしたglutのパスを外すか、C:\ARToolKit\bin 以下にC:\ARToolKit\DSVL\bin の方の glut32.dll を入れるといいでしょう。競合の場合は、同じディレクトリのDLLが優先的に呼び出されます。いずれにしても競合の問題は解決していませんのでどうにかした方がいいかと思います。
今度こそ・・・
さて、sampleLite.exe を実行してみます。
No video capture device was detected.You need at least one WDM video capture device, such as a USB WebCam.
こんなエラーが出た方、カメラが付いていませんよ(笑)。でも正常に実行されています。
カメラを付けてもう一度実行してみると、カメラの設定みたいなダイアログが出てきて、OKを押すとカメラの映像が表示されます。
マーカーの印刷
あとは、C:\ARToolKit\patterns の中に、pattHiro.pdf というファイルがあると思いますので、プリントアウトしてください。
これをカメラにかざすと、マーカーの上に色のついたカラフルなキューブがオーバーレイされるはずです。(写真のマーカーは”B”になっていますが、simpleLite.exeが認識するのは”hiro”のマーカーだけです。紛らわしくて済みません。)
これで完了です。ひとまずおめでとうございます!
次回は、Visual C++からこのプログラムを実行してみましょう。
中身もちょっと書き換えて、そうだなあ、ティーポットでも載せてみますか。
ではまた。
補足:いくつかの疑問
- DSVLってなんだ?
- パターンはhiroだけなの?
そんなことはありません。C:\ARToolKit\patternsの中にいくつかあったように、認識パターンの形状を変えることができます。それどころか複数パターンの同時認識も、任意の形状のパターン適用も可能です。プログラムの中で記述できますので、次回やってみましょう。サンプルはpattHiroのみの認識となります。
- glutって何?
There is a critical shoratge of informative articles like this.
Why do I bother callnig up people when I can just read this!
Many many quality potnis there.
I’ve been absent for some time, but now I remember why I used to love this website. Thanks, I’ll try and check back more frequently. How frequently you update your site?
Thanks for your thoughts. It’s hleepd me a lot.
Deadly accrtuae answer. You’ve hit the bullseye!
Thanks for all your efforts that you have put in this. very interesting info .
Hey there! I’m at work browsing your blog from my new iphone 4! Just wanted to say I love reading through your blog and look forward to all your posts! Keep up the superb work!