▼Microsoft Robotics Studioメモ▼
Microsoft Robotics Studio


Mocrosoft Robotics Studio
「Microsoft Robotics Studio(MSRS)」は、ロボットアプリケーションを作成するための開発ツール。ロボットの共通言語となり、ロボット同士が助け合って目的を達成させるプログラムを記述できるのが特徴。Microsoft社のサイトから無償で入手できる(商用利用は有料)。高機能なシミュレータも付属しているので、ロボットを持っていない人でもプログラミング可能。




プログラミング言語

ニュース


情報源


リンク
サイト ブログ ロボット各種
Microsoft Robotics Studio Mocrosoft Robotics Studio Blog ZMP
Microsoft Robotics Studio Wiki Mocrosoft Robotics Studio発表 テムザック
MSRSフォーラム OPC Diary 株式会社リバスト
解説! ロボット開発環境Robotics Studio 今後5年間でのプログラミング言語の進化 デバイスふらり旅
Jeffrey RichterのCCR解説記事 GetRobo Blog こうしろうのMindStorms日記
C#によるプログラミング入門 ROBOTS DREAM Cagylogic.com
Netにおけるマルチスレッドの実装方法 robot.net -


書籍
Microsoft Robotics Studio プログラミング
・著者:布留川英一 監修:マイクロソフト株式会社
・定価:3,780円(税込)
・B5変型判 376ページ
・ISBN978-4-8399-2383-9
・発売日:2007年06月上旬


MSRSのしくみ


MSRSのしくみ
従来のロボットプログラミングでは、各ロボットで実行可能なネイティブプログラムを作成して実行する。そのため、複数のロボットで動かすには、それごとに別のプログラムを作る必要がある。
MSRSでは、MSRSのプログラムをサービスによって、各ロボットで制御可能な形式(Bluetooth命令など)に変換して実行するという方法をとっている。

従来のプログラム


MSRSのプログラム



また、MSRSのプログラムを介することによって、異なるロボット間でのコミュニケーションも容易となる。これによって、複数のロボットが協力して1つの目的を達成させるプログラムを記述できるようになった。

従来のプログラム


MSRSのプログラム

MSRSの利点
内容 説明
ステップ1
※今ココ
ロボット開発環境の統一 MSRS以前はロボットメーカーはロボット毎に開発ツールの作成、ホビーユーザーは開発方法の学習が必要だった。MSRSを採用することにより、ロボットメーカーはロボット固有の部分のみサービスとして実装すればよくなり、ホビーユーザーはVPLさえ覚えれば全てのMSRSロボットのプログラミングが可能になる。
ステップ2 ロボットとパソコンの連携
※ロボットとパソコンで処理を行うサービスが必要
「メールの着信」、「ニュースの配信」といったパソコンで取得可能なイベントをトリガーにロボットにアクションさせたり、逆にロボットへの接触イベントをトリガーに、情報の検索やゲームを行うことが可能。
ステップ3 ロボットとデジタル家電の連携
※デジタル家電の普及が必要
「ご飯が炊けた」、「もうすぐ目覚ましの時間」といったデジタル家電で取得可能なイベントをトリガーにロボットにアクションさせたり、逆にロボットの接触イベントをトリガーに、デジタル家電の操作を行うことが可能。
ステップ4 ロボットとロボットの連携
※MSRS対応ロボットの普及が必要。
転んだロボットがいたら他のロボットが助け起こすなど、ロボットの接触イベントをトリガーに、他のロボットの操作を行うことが可能。



自作サービス-ネットタンサー


ネットタンサー
バンダイのウェブカムユニット搭載ホームロボット。
特設ページ「レイチェルチャレンジ」でネットタンサーのパワーアップの記録を公開中。



RW3 Service for MSRS 1.5 (CTP May 2007)
「コマンドの送信」と「サウンドの再生」と「音声合成」を行うことができます。 メモ


自作サービス-電光掲示板(NJE-106)


ロボット以外に対してのMSRS対応。ロボットからの文字出力場所として使ったり、ロボット対戦ゲームの結果表示に利用できる。

NJE-106
シリアルで操作できる電光掲示板。



NJE Service for MSRS 1.5 (CTP May 2007)
文字を引数にして電光掲示板にニュースを表示。

メモ

主な対応ロボット


メーカー ロボット 価格 MSRSの対応 日本での入手
LEGO MindStorms NXT 約 4万円
LEGO MindStorms RCX ---
近藤科学 KHR 約13万円
iRobot Roomba Discovery 約 8万円 △※Bluetoothアダプタが入手困難
iRobot iRobot Create 約200ドル ×
fischertechnik Robo Mobile Set 約300ド
RoboticsConnection Traxster 約200ドル ×
Parallax Boe-Bot 約200ドル ×
MobileRobots Pioneer 3-DX 研究用 ×
Surveyor SRV-1 約 8万円
現在(2007年4月)、MSRSによるロボットアプリケーション作成に最適なロボットは「MindStorms NXT」。
日本で入手しやすく、MSRSのサービス対応も充実している。




開発環境の構築


開発ツール

シミュレータの実行


ロボットサッカーシミュレータ
ロボットサッカーシミュレータのデータをインストール後、MSRSコマンドプロンプトで以下のコマンドを実行。
dsshost -port:50000 -tcpport:50001 -manifest:"samples\config\SimulatedSoccer.LegoNxt.FourPlayers.Manifest.xml"




ロボット相撲シミュレータ
ロボット相撲シミュレータのデータをインストール後、MSRSコマンドプロンプトで以下のコマンドを実行。
ソースが公開されてないサービスもあるので、ビルドするとバージョンがあわず動かなくなる可能性があるので注意。

dsshost -port:50000 -tcpport:50001 -manifest:"samples\config\SimulatedSumoReferee.Manifest.xml"

2回プレイヤーを選択して、「Start the Match!」を押す。



AquesTalk


AquesTalk
組み込み用途向けのテキスト情報を音声波形に変換出力するライブラリ。超軽量で、フリーで、移植性も高い。
これを利用すればWAVE再生可能なロボットであれば自由に話をすることができそう。
以下はC#から利用する時のサンプルプログラム。

using System;
using System.Collections.Generic;
using System.IO ; 
using System.Text;
using System.Runtime.InteropServices;

//AquesTalkのサンプル
namespace HelloTalk {
    class Program {
        //DLL(exeファイルと同じフォルダに配置)
        [DllImport("AquesTalkDa.dll")]
        private static extern int AquesTalkDa_PlaySync(string koe, int iSpeed);

        [DllImport("AquesTalk.dll")]
        private static extern IntPtr  AquesTalk_Synthe(string koe, int iSpeed, out int size);

        //メイン
        static void Main(string[] args) {
            //音声の再生の利用例
            Play("おまえもなー",100);

            //WAVEファイルの生成の利用例
            CreateWave("きたーーーー",100,"test.wav");
        }

        //音声の再生
        //serif    セリフ
        //speed    スピード(50-300)
        //戻り値   0:正常,その他:エラー
        private static int Play(String serif,int speed) {
            try {
                return AquesTalkDa_PlaySync(serif,100);
            } catch (Exception e) {
                Console.WriteLine(e.ToString());
                return -1;
            }
        }

        //WAVEファイルの生成
        //serif    セリフ
        //speed    スピード(50-300)
        //filename ファイル名
        //戻り値   0:正常,その他:エラー
        private static int CreateWave(String serif,int speed,String filename) {
            int size;
            byte[] buf;

            try {
                //WAVE変換
                IntPtr ptr=AquesTalk_Synthe(serif,speed,out size);
                if (size<=0) return -1;
                buf=new byte[size];
                Marshal.Copy(ptr, buf,0,size);

                //WAVE出力
                FileStream writer = new FileStream(filename,FileMode.Create);
                writer.Write(buf,0,size);
                writer.Flush();
                writer.Close();
                return 0;
            } catch (Exception e) {
                Console.WriteLine(e.ToString());
                return -1;
            }
        }
    }
}



サンプルプログラム


VPLによるロボット制御プログラミング CCRプログラミング C#によるサービスプログラミング C#によるロボット制御プログラミング ハードウェア



−戻る−