PostHeaderIcon 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ってなんだ?
DirectShow Video Processing Libraryといって、Microsoftのメディアストリームに関するフレームワークを使うためのラッパーライブラリ。AR ToolKitではこのdsvideolib-0.0.8bが予め同梱されています。ちなみに最新版はdsvideolib-0.0.8c。最終更新日が2005年になっていますので、怪しいライブラリかもしれません。
ちなみに、自分でビルドすることもできるそうなんですが、コンパイルにWindows SDKが必要だったり、ヘッダファイルが足りなくて自作しなきゃいけなかったり、ググっても英語のサイトしか出なかったり大変なので私はあきらめました。
  • パターンはhiroだけなの?

そんなことはありません。C:\ARToolKit\patternsの中にいくつかあったように、認識パターンの形状を変えることができます。それどころか複数パターンの同時認識も、任意の形状のパターン適用も可能です。プログラムの中で記述できますので、次回やってみましょう。サンプルはpattHiroのみの認識となります。

  • glutって何?
OpenGLの描画のための簡易ライブラリです。主にGUI周り(ウィンドウ生成、キーボード処理、ダブルバッファリングなど)の処理を担当します。AR ToolKitのサンプルでは、ビデオ画像にオーバーレイす図形の描画にOpenGLを使っていますが、そのGUI生成にこのライブラリを利用します。ちなみにglutはとても古いライブラリですが、なぜかよくつかわれています。当然ですがGLFWのような新しいライブラリに入れ替えることも可能です。

次回:ARToolKit (2): Visual C++2010環境でビルド、実行

11 Responses to “ARToolKit (1): Windows7、Visual C++2010環境でインストール”

Leave a Reply