Robotics Developer Studio 4.0 Beta + Kinect for Windows SDK 1.0 Beta 2

Microsoft Researchから、Robotics Developer Studioの最新バージョン4.0のベータ版が公開されています。しかしこのバージョン、2011/11/25現在ではKinect for Windows SDK 1.0 Beta 2に未対応です。

え?RDSってKinectに関係してたっけ・・・ですって?RDS4からセンサーの一種としてKinectセンサーが仲間入りして、Kinectセンサーのシミュレーションサービス、実Kinectセンサー向けサービスが追加されています。
Kinectを使ったシミュレーションもサンプルとして用意されています。

しかし、RDS(Robotics Developer Studio)4.0 Betaが公開されて直ぐに、K4W(Kinect for Windows) SDKが1.0 Beta 2にアップデートされてしまったので、そのままでは動きません。また、K4W SDK 1.0 Beta 2をインストールした状態で、RDS4.0 Betaをインストールすると、KinectセンサーをWindows PCが認識しなくなってしまうので、注意が必要です。

以下、RDS4.0 BetaとK4W SDK 1.0 Beta 2を共存させる方法を説明します。※多分、RDSも対応版がそのうちに出ると思うので、このポストの日から随分経った後にこのブログを呼んでいる方は、https://www.microsoft.com/robotics をチェックしてみてください。

  1. 既にRDSもK4W SDKもインストール済みの場合は、両方をアンインストール
  2. RDS4.0 Betaをインストール
  3. K4W SDK 1.0 Beta 2をインストール
    ※ここで一旦Kinectが動くかK4W SDKのサンプルアプリで動作を確認しておきましょう。
  4. https://mrdssamples.codeplex.com/releases/view/76620 からKinectFix.zipをダウンロード
  5. KinectFix.zipのブロックを外し、RDSがインストールされたフォルダーに中身(KinectFix.exe)をコピー
    ※RDSのインストール先は、デフォルトで、c:\Users\{UserName}\Microsoft Robotics Dev Studio 4 Beta
  6. KinectFix.exeを実行
  7. スタートメニュー→Microsoft Robotics Developer Studio 4 Beta→DSS Command Prompt( x64)を管理者権限で起動
  8. samplesフォルダーにチェンジディレクトリし、BuildAllSamples.cmdを実行

後は、DSS Command Promtのコンソールで、一個上のディレクトリに移動して、UserSimRefPlatform.cmdを実行すれば、先ほどの図のようなシミュレータ、コンソール、画像Viewと深度画像Viewが作成されシミュレーションできます。

 次に、UserKinectUI.cmdを実行すると、エラーになります。Step 8ではモジュールの依存関係が微妙で全て、再構築できないようで、RDSがインストールされたディレクトリのSamplesフォルダーをエクスプローラーで開き、”*.sln”で検索し、表示されたソリューションファイルをVisual Studio 2010で片っ端から開いてリビルドしていきます。
※SimulatedWebCam、SimlatedSonar、SimulatedPGS、SimulatedCompass、SimulatedColorSensor,MultipleSimulatedSensor、MultipleSimulatedRobots、entityui、CustomSimulatedEntities、ApartmentScene辺りがくさい。多分これらの全てもしくは一部をリビルドすれば十分っぽいです。

で、もう一度、UserKinectUI.cmdを実行してみてください。

こんな感じで表示されます。Kinectセンサーの深度データ、スケルトンデータを、RDSのDSS/CCRを介して受け取って表示してます。このパネルからKinectセンサーのチルトを動かすことも可能です。(出演は、@yukofuji さん。右側のくたった親父は @embedded_george )

最後に、RDS、K4W SDKを公開しているURLを紹介しておきます。

 RDSの便利なところは、Kinectセンサーやロボットのモータ制御が全てサービス化されていてネットワークで連携していて、その各サービスをシミュレーター、実機に個別に切り替え可能なこと。ソフトウェアの骨格はそのままで、個別に差し替えてテストもできます。また、全てのコンポーネントがネットワーク上のサービスなので、ソフトウェアコンポーネントを全く変更せずに、参照先のURLを変えれば別のノードにサービスを個別に配置することが可能です。つまり、複数のPCやサーバー(それぞれKinectセンサーやロボットがつながっている)に分散配置してシステムを動かすことも可能です。

全部がシミュレーションなら、Kinectセンサーが無くても動くので是非、お試しあれ。