Robotics Developer StudioのCCR/DSS紹介


そういえば、このブログで説明していなかったなと気づき、解説しようかなと。Robotics Developer StudioのCCRとDSSを紹介します。

先ず、Robotics Developer Studio自体知らないという方にちょっとだけ解説。

Robotics Developer Studioは、マイクロソフトが提供する、ロボット制御向けミドルウェアと開発環境一式です。ロボット制御向けというか、沢山のコンピュータノードがネットワークで繋がって連携して分散動作する為の基盤として位置づけられています。最初のバージョンがリリースされてから既に4年以上たっていて、今一番新しいのはRDS 4.0のBeta版です。最新版はKinectやSilverlightにも対応しています。

以下長いのでRDSと約します。

RDSは、主に3つの要素から成り立っています。

  • ネットワークで繋がっている分散並行処理を行う為の基盤ミドルウェア - CCR/DSS
  • 各ノードに配置されて動作する単位(サービス)を組合わせ&ノードの配置を記述するオーサリングツール - Visual Modeling ToolとDSS Editor
  • ロボットの動作をしミューレートする為の物理シミュレーター

RDSを試すには、 http://www.microsoft.com/robotics (※全て英語でごめんなさい)からSDKをダウンロード&インストールすればOKです。SDKには、上の3つと、各種ドキュメント、サンプルコード、チュートリアルなどが入っています。

さて、CCR/DSSの説明に移ります。この二つの用語はそれぞれ、

Concurrency and Coordination Runtime

Decentralized Software Services

の略です。実はETロボコンの計測システムのミドルウェアとして2年前まで実際に使っていたりします。

Robotics Studioは、ネットワーク上に分散して配置された状態を持ったサービス(コンポーネントと考えてよい)群が、必要な他のサービスとメッセージを非同期に送受信しあってシステムの動作を実現することを想定しています。メッセージを受信したサービスは、そのメッセージと自分の状態に応じて処理を行い、必要に応じて他のサービスにメッセージを送ります。全てが非同期かつ並行に動作し、各サービスが協調してシステムの責務を達成していきます。

CCRは、その基盤となる非同期メッセージの送受信を.NET上で実現する為のManaged Code ライブラリです。http://msdn.microsoft.com/en-us/library/bb905457.aspx
このランタイムを使えば、それぞれのサービスは、送信したメッセージの状態や、送られてきたメッセージの順序や複数サービスから送信されてくるメッセージを受信する為のスレッド制御などを一切関知することなく、状態モデルとして、そのサービスが行うべきことに注力して開発することが可能です。CCRライブラリを使ってRDSで動作可能なサービス(コンポーネント)部品を、C#やVBでVisual Studioを使って開発することができます。

※RDSが昔初めてリリースされた直後は、まだマルチコアは珍しく、並行処理に関するプログラミング言語の進歩も未熟だった為、かなり面白いテクノロジーではあったのですが、現在はC#やVC++でもParallel & Concurrentに関する技術が追加されたため、ちょっと特殊かなと思われますが、RDS全体としては完成度が上がってきたので、RDSの機能を使いたい場合にはそれなりに便利なライブラリセットではあります。 - う~ん微妙な説明

DSSは、CCRのライブラリ群の上に構築された、複数のサービス間でメッセージを非同期に送受信する状態を持ったサービスを、ネットワーク上で連動させるシステム基盤です。http://msdn.microsoft.com/en-us/library/bb905470.aspx
サービスのインスタンスを所望のノードに配置したり、サービスインスタンスの状態を監視したり、ノードに配置されたサービスインスタンスを連携させたりするシステムです。サービスの配置や状態監視もまたCCRで記述されたサービスとして用意されています。サービス間の通信には、DSS Protocolと呼ばれる、SOAPの上に今クラウド系で流行のRESTスタイルのAPIを定義したプロトコルを使います。

※既にここ2、3年でクラウド技術の進展により、HTTP上でのRESTスタイルのAPIが主流になったのと、加えてWorkflow Foundationも成熟してきたので、こちらも現時点ではちょっと特殊かなと。
※DSSPの仕様書は、http://download.microsoft.com/download/5/6/B/56B49917-65E8-494A-BB8C-3D49850DAAC1/DSSP.pdf からダウンロード可能です。RESTとは何かの理解にもつながるので、ご一読を。ちなみにこのドキュメントの作者のHenrik Frystyk Nielsen は、Wikipediaにも載っていて、1pp6年に出版されたHTTP仕様書の著者の一人らしい

説明は以上にしておきますが、多分「何のことやらさっぱりわからん」という方のほうが多いかなと思います。論より証拠、Robotics StudioのサイトからSDKをダウンロードしてインストールし、実際に使ってみて見てください。サンプルも豊富にあるので、RDSのインストールディレクトリ(ユーザーディレクトリ直下)のDocumentation Folderに用意されている、RDSUserGuideのTutorialを参考に色々試してみてください。とても綺麗な物理シミュレーターや、DFDに近いモデルエディター上でメッセージの流れとサービスの実行状況をステップ実行できるVisual Programming Tool、Kinectセンサーのシミュレータなど、面白いものが沢山用意されています。まぁ、自分独自のサービスを作成するのは結構難しいですが。

 

Comments (0)

Skip to main content