Microsoft Robotics Studioはロボットアプリケーションを作成するための開発ツールである.
従来のロボットプログラミングでは,各ロボットで実行可能なネイティブプログラムを作成して実行していたため,
複数のロボットで動かすためにはそれごとに別のプログラムを作成する必要があった.
Microsoft Robotics Studioはロボットで制御可能な形式(Bluetooth命令など)に変換して実行するという方法をとっているため,
ロボットの共通言語とすることが可能となっている(図1).
これによってロボット同士が助け合って目的を達成させるプログラムなどを記述できることが特徴となっている.
特徴について,もう少し詳しく説明する.
(1)SOA(Service Oriented Architecture)に基づいた構築
SOAとは,大規模なシステムを「サービス」の集まりとして構築する設計手法のことであり,
サービスとは,外部から標準化された手順によって呼び出すことができる一まとまりのソフトウェアの集合のことである.
Robotics Studioでは「ノード」と呼ばれる基本単位を設置する必要があり,1つのノードに複数の「サービス」を組み込む.
これらのサービス間でメッセージを交換して目的の処理を行う.
また,Robotics Studioは「疎結合」という手法でプログラムを構築している.
疎結合のプログラム開発では,それぞれのサービスの独立性が強い分,考慮しなければならない点が存在する.
例として,サービスAが別のサービスBに対して「メッセージ」を送ったが,
何らかの事情でサービスBがそのメッセージに対する処理を遂行できなかった場合が挙げられる.
その際、サービスBはサービスAに対してエラーが発生したことを「通知」する必要がある.
SOAでは「メッセージ(データ)」と「通知」という2種類の信号が飛び交うので,
これらの信号を統合的に処理する機構として「CCR(Concurrency and Coordination Runtime)」が存在する。
CCRはノードの最下部に設置されている。
(2)音声機能
音声を出力するためのソフトウェア「Speech SDK」が搭載されている.
(3)サービスの開発
Robotics Studioには「Visual Programming Language」が標準で搭載されており,視覚的にサービスの開発が可能となっている(図2).
VPLは、図3左のツールボックスに用意されているBasic ActivitiesとServicesを画面中央のDiagramに配置し、それらを線で結んで処理を表現する.
(4)ロボットとの接続
ロボットの制御装置が.NET Framework 3.0に対応している場合には,
ロボットの制御装置内にノードを設け,このノードにユーザーのサービスを配置して,ロボットの制御を行う.
ロボットの制御装置が.NET Framework 3.0に対応しない場合には,
PCにノードを設け,Bluetoothなどを介してノードとロボットは通信を行う.この際、ロボットに埋め込む制御系を「ファームウェア」と呼ぶ.
(5)シミュレータ
Robotics Studioでは,実機テストの前に「Visual Simulation Environment」というシミュレータを使ったテストが可能である.
シミュレータでは,シミュレーションを現実に近づけるために,物体の運動計算には物理学の法則を適用している.
また,Microsoft社のサイトにてロボット相撲とロボットサッカーのシミュレータが配布されている.その実行例を図4と図5に示す.
<参考URL>
@IT 連載記事「解説!ロボット開発環境Robotics Studio」
http://www.atmarkit.co.jp/fembedded/index/robotics.html
Microsoft Robotics Studioメモ
http://www.saturn.dti.ne.jp/~npaka/robotics/index.html