MRPT(Mobile Robot Platform Toolkit)という移動ロボット用のツールキットがあり、地図作成をするソフトウェアが使えそうなのでインストールしてみました。今回はWindows7に導入するまでに色々と設定が必要でしたのでメモを残します。
インストールはMRPTのページにあるダウンロードページでバイナリのインストールファイルをダウンロードして実行するだけです。
今回はVisualStudio2010(32bit)がインストールされているパソコンでの利用を考えていたので該当するインストールファイルをダウンロードします。後々Kinectも使うことも考えてwith Kinect supportをインストールします。
2013年6月27日現在、上記のインストーラはmrpt-1.0.1-msvc10-x32-kinect.exeとなります。
インストーラを実行すると下記のセットアップ画面が現れる。
「次へ」を押す。
ライセンス契約に関する記述。問題なければ「同意する」を押す。
MRPTをインストールした場所にPATHの設定をするか聞いてくるので一応入れてもらいたいので「Add MRPT to the system PATH for all users」もしくは「Add MRPT to the system PATH for current user」を選ぶ。これで自動でPATHの設定がされれば問題ないのですが、私が現在数回試した限り自動では設定してくれません。
「次へ」を押して進む。
インストール先のフォルダを指定。デフォルトでは32bit版のインストーラを選んだので上記の通り32bit用のプログラムファイルのフォルダが指定されている。
問題なければ「次へ」を押す。
スタートメニューのフォルダ名の指定。このままでいいので「次へ」を押す。
インストールしたいコンポーネントのチェック画面。全部入れておいたほうがいいので全部指定。
「インストール」ボタンを押してインストール。
下記のプログレスバーが現れる。
上記プログレスバーでの後に直ぐに終了すればよいのですが。。。
Windows7+VisualStudio2010の組み合わせだと下記のエラーが発生。
何度も試してみたのですが、このエラーが出てもMRPTは正常にインストールされているようなので「閉じる」ボタンを押して終了すればOK。
最後に下記の警告のポップアップウィンドウが。。。
上記の画面が出た場合はPATHを設定してくれません。
手動でPATHを設定しましょう。
Windwos7であれば、下図のようにウィンドウズメニューから「コンピュータ」の上にマウスカーソルを置き、右クリックでメニューを表示して、そのなかにある「プロパティ」をクリックすると「コントロールパネル→システムとセキュリティ→システム」のウィンドウを表示させることができます。
下記のシステムのウィンドウから左欄にある「システムの詳細設定」をクリック。
次に「環境変数」をクリック。
下段のシステム環境変数の「Path」という項目を選び編集をクリックし、下記のフォルダのパスを一番最後に追加する。
C:\Program Files (x86)\mrpt-1.0.1\bin
以上でインストールは終了。
インストールしたMRPTのサンプルプログラムをコンパイルしたいときはCMakeが必要になりますのでインストールしておくこと。
下記のページに行き最新版をダウンロード。(6月28日現在最新バージョン2.8.11.1)
http://www.cmake.org/cmake/resources/software.html
Windows (Win32 Installer) cmake-2.8.11.1-win32-x86.exe
をダウンロードする。
ダウンロードしたファイルを実行すると下記の画面が現れる。
「次へ」を押す。
(契約内容が問題なければ)「同意する」を押す。
インストールしたときにPATHが通るように一応設定。
結論から言うと、今回もやってみましたが、結局PATHは自動では設定してくれませんでした。
最後に手動でPATHを設定しても良いのですが、アプリケーション的にPATH設定は必要無さそうなので私はPATH設定をしていません。
「次へ」を押す。
インストール先を設定。
デフォルトではC:\Program Files(x86)\CMake 2.8
問題なければ「次へ」を押す。
スタートメニューフォルダの設定。
デフォルトで問題ないので「インストール」を押す。
インストール終了後に
Warning! PATH too long installer unable to modify PATH!
とポップアップ表示されPATHが自動で設定されていないかもしれませんが、GUI画面上で簡単なCMAKEのりようだけなら現在のところ困っていませんので無視して良いと思います。
以上でインストール終了。
kinect-slamというサンプルプログラムで3次元のSLAMを行いたいときは下記のドライバのインストールをして下さい。
ちなみに、マイクロソフト公式の開発キットをインストールしているときは全部削除してから下記のドライバをインストールして下さい。
Kinect for Windowsでは動かないのでKincet(XBOX360)の方を用意して下さい。
マイクロソフトのドライバでもなく今から入れる下記のfreenectのドライバでもないものをインストール済みの場合はここのページを参考にドライバのアンインストールをして下さい。
1.dllファイルのインストール
libusb0.dllを利用するのでここのサイトから最新版をダウンロード。
2013年6月28日現在 ファイル名:libusb-win32-bin-1.2.6.0.zip
ファイルを展開し、下記のディレクトリから32bit用のdllファイルを選択
\libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll
このファイルをまず名前を変える。
変更前:libusb0_x86.dll
変更後:libusb0.dll
変更後のdllファイルをPATHの通っているフォルダの何処かに置けばOK.
MRPTに左記ほどパスを通したので下記のフォルダにコピーしてみる。
C:\Program Files (x86)\mrpt-1.0.1\bin
2.libfreenectのダウンロード
ここ(github)からlibfreenectのファイルをダウンロード。
2013年6月28日現在のファイル名はOpenKinect-libfreenect-v0.1.2-24-g89ccc40.zip
zipファイルを展開しておく。
3.ドライバのインストール
KInect(XBOX360)をパソコンに接続。ドライバが見つかりませんでしたと表示されていると思います。
デバイスが正常に認識されている場合は、ドライバソフトウェアの削除を行なって下さい。
次に、デバイスマネージャを開いて、認識されていない機器として「Xbox NUI Motor」があると思うのでそれを右クリックしてプロパティを選びプロパティウインドウを開く。
プロパティウィンドウのドライバータブを選択しドライバーの更新を押す。
「ドライバー ソフトウェアを手動で検索してインストールします。」を選択して2で展開したzipファイルのフォルダの中にあるドライバが有るフォルダを指定。
Ex: 展開先\OpenKinect-libfreenect-89ccc40\platform\windows\inf
同様に、残りのドライバがインストールされていないデバイス "Xbox NUI Camera" と "Xbox NUI Audio"についても同様の操作でドライバを更新する。
以上でfreenectを使ったドライバのインストールが終了。
他の環境へのドライバ導入方法はkinect-slamが紹介されている本家のHPを参考にして下さい。
動作確認としてkinect-slamを試してみたいと思います。実行ファイルは下記のフォルダに入っています。
C:\Program Files (x86)\mrpt-1.0.1\bin
kinectで3次元環境地図を作るには「kinect-3d-slam.exe」を実行します。
ウィンドウズメニューのプログラムに登録されているmprt-1.01のサンプルプログラムからもkinect-3d-slam.exeを実行出来ます。
下図のように「very simple live 3D-SLAM with Kinect」を選んで下さい。
kinect-3d-slam.exeを実行した時にlibusb0.dlが無いとエラーが出て止まってしまう場合は、dllファイルがパスの通っている場所に置かれていませんので、もう一度ファイルを置いた場所や環境変数のPATHが正しく設定されているか確認して下さい。
実行すると下記のような画面が現れます。
画面上をドラッグすると3次元表示の視点が変えられます。
Kinectをゆっくり動かさないと3次元地図の生成が途中で止まってしまい、現在の視点のみの情報が出るようになってしまいます。
やり直すときはキーボードの「r」を押せば最初から地図生成を始めてくれます。
「s」キーでpoint cloud形式のデータを保存してくれるようなのですが、Program Files(x86)上の実行ファイルなのそのフォルダにはデータ保存がされていないようです。
C:\Program Files (x86)\mrpt-1.0.1\binの中のkinect-3d-slam.exeを直接実行する場合は、実行ファイル上にマウスポインタを持っていき右クリックしてウィンドウを出し、「管理者として実行」を選択してプログラムを立ち上げると「s」キーを押すことでデータを保存出来ます。
保存されるデータは「point_cloud.txt」で点の位置情報しかないようなので、mrptをインストールした時に3Dシーンを見るためのソフト
「Scene viewer 3D」では開くことができません。
kinect-3d-slamのプログラムソースは「C:\Program Files (x86)\mrpt-1.0.1\apps\kinect-3d-slam」にあるので内容を確認して自分でプログラムしないとScene viewer 3D」で利用できる出力形式にできないようです。。。
以上で動作確認を終わります。
参考までにUbuntuで動作確認している人のページをリンクしておきます。
本家の最初のチュートリアルにあるようにインストール先のフォルダにあるサンプルプログラムをコンパイルしてみます。
サンプルプログラムは下記のフォルダにあります。
C:\Program Files (x86)\mrpt-1.0.1\doc\mrpt_example1
(../mrpt-1.0.1/test や ./mrpt-1.0.0/appsの中にあるサンプルのCMakeFiles.txtは書き方が古くて使えないのでチュートリアルを参考にすること!)
プログラムをコンパイルできる状態にするためにCMakeを使います。
インストールしたCMakeを起動して下さい。
立ち上がったウィンドウの中の一番上の項目「Where is the source code:」のところに、先ほどのサンプルプログラムがあった場所のディレクトリパスを記載します。
次に2行目にある「Where to build the binaries:」の項目に、Visual Studioのプロジェクトを作成するフォルダを指定します。この場所は自由ですが、一応VisualStudio2010のプロジェクトが基本的にある下記のディレクトリを指定することとします。
C:\Users\takubo\Documents\Visual Studio 2010\Projects\mrpt_example1
最後のmrpt_example1の記載はフォルダがない場合は作成するか聞かれますので、フォルダが存在していなくても問題ありません。
次にウィンドウ中段の左にある「Configure」ボタンを押して設定が問題ないか確認。
「Where to build the binaries」で指定したフォルダがない場合は下記の確認ウィンドウが現れるので「Yes」を選択してフォルダを作成してもらう。
次にどの環境でコンパイルするか選択する画面が下記のように現れるので「Visual Studio 10」を選択。
(Visual Studio 2010 32bit」をインストールしているので。違いバージョンを使っている場合は
バージョンを合わせて選択して下さい。)
上記画面で「Finish」を押すと下記のように設定を自動的に行なってくれる。
「Configuring done」と最後の行にでていれば問題なくできています。
ここでエラーが出るときは設定をもう一度確かめてみて下さい。
クリックで拡大
次に「Configure」ボタンの右隣にある「Generate」ボタンを押して「Where to build the binaries」で指定したフォルダに
ソリューションファイルを生成します。
問題なければ下図のように「Generating done」とコメントが現れます。
クリックで拡大
上記ソリューションの生成が成功すれば指定したフォルダに下記のようなファイルが生成されていることが確認できる。
クリックで拡大
「mrpt_example1.sln」というソリューションファイルが見つかりますのでダブルクリックするとプロジェクトが立ち上がります。
クリックで拡大
メニューから「ビルド」→「ソリューションのビルド」を選択してコンパイルして下さい。
問題がなければ「ビルド: 2 正常終了、」のコメントが現れます。
エラーが出るまではここまで説明してきた設定を見なおして下さい。
コンパイルが成功すると先ほどのフォルダに「Debug」フォルダが生成されるので中身を確認する。
ダブルクリックでプログラムを実行出来ますが直ぐにウィンドウが閉じてしまうのでコマンドプロンプトから実行ファイルを指定してプログラム実行して下さい。
下記のようにコマンドプロンプトをたちあげてからDebugフォルダへ移動。
クリックで拡大
Debugフォルダ内で実行ファイルを指定してプログラム実行。
クリックで拡大
下記が実行結果
下記のような3次元位置(x,y,z)で指定したランドマークとロボットの姿勢(x,y,phi)とロボット上のカメラ位置(x,y,z,yaw,pitch,roll)
に関して位置関係の演算が行えていることを示す実行結果となっています。
// The landmark (global) position: 3D (x,y,z)
CPoint3D L(0,4,2);
// Robot pose: 2D (x,y,phi)
CPose2D R(2,1, DEG2RAD(45.0f) );
// Camera pose relative to the robot: 6D (x,y,z,yaw,pitch,roll).
CPose3D C(0.5f,0.5f,1.5f ,DEG2RAD(-90.0f),DEG2RAD(0),DEG2RAD(-90.0f) );
一応コンパイルまでの方法を示しましたので、導入編のインストール確認からサンプルプログラム実行までの説明を終了します。
次回は、ICP-Slamを使いたいのでそのサンプルプログラムのコンパイル方法を説明したいと思います。