▼Microsoft Robotics Studioメモ▼
Microsoft Robotics Studio
Mocrosoft Robotics Studio
「Microsoft Robotics Studio(MSRS)」は、ロボットアプリケーションを作成するための開発ツール。ロボットの共通言語となり、ロボット同士が助け合って目的を達成させるプログラムを記述できるのが特徴。Microsoft社のサイトから無償で入手できる(商用利用は有料)。高機能なシミュレータも付属しているので、ロボットを持っていない人でもプログラミング可能。
プログラミング言語
- Microsoft Visual Programing Language(VPL)
- C#
- VB.Net
- Iron Python
ニュース
情報源
リンク
書籍
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)
「コマンドの送信」と「サウンドの再生」と「音声合成」を行うことができます。メモ
- コマンドの送信
ネットタンサーを前進させるVPL。
![]()
- サウンドの再生
ネットタンサーにFイチ.wavを再生させるVPL。
![]()
- 音声合成
ネットタンサーにこんにちわと発音させるVPL。
![]()
- 単語の意味を検索する機能を付けるにはWikiPedia API。
- 漢字をひらがなに変換する(AquesTalkに発音させるため)にはMecab。
- 音声合成するにはAquesTalk。
- 認識率のよい音声認識エンジンはDulius。
- 人口無能については人口無能は考えるが参考になる。
- 電源つける時は頭、ボディの順。
- ACアダプタをつけるときは頭とボディの電源をOFFにしておいた方がよさそう。
- ACアダプタをつけると移動系コマンドを受け付けなくなる。
- 無線LANの調子が悪い時はネットワークユニットが断線してる可能性あり。
自作サービス-電光掲示板(NJE-106)
ロボット以外に対してのMSRS対応。ロボットからの文字出力場所として使ったり、ロボット対戦ゲームの結果表示に利用できる。
NJE-106
シリアルで操作できる電光掲示板。
NJE Service for MSRS 1.5 (CTP May 2007)
文字を引数にして電光掲示板にニュースを表示。
- ニュースの配信
![]()
メモ
主な対応ロボット
現在(2007年4月)、MSRSによるロボットアプリケーション作成に最適なロボットは「MindStorms NXT」。
メーカー ロボット 価格 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万円 ○ ○
日本で入手しやすく、MSRSのサービス対応も充実している。
- LEGO マインドストーム NXT
LEGOとMITが共同で開発したロボット組み立てキット。
![]()
- LEGO マインドストーム RCX
LEGOとMITが共同で開発したロボット組み立てキット。NXTの一世代前のバージョン。
![]()
- Surveyor SRV-1
Surveyorが開発したロボットキット。カメラとタッチセンサが制御できる。日本でも購入可能。
![]()
- Kondo KHR-1
近藤科学が開発した2足歩行のヒューマノイド型ロボットキット。![]()
- ルンバ・ディスカバリー/iRobot Create
iRobotが開発したお掃除ロボット。ただし、Bluetoothユニット(日本で購入困難)が必要。
![]()
- Pioneer 3 DX
MobileRobots社が開発した知能機動型ロボットシステム。
![]()
- Fischertechnik ROBO MOBILE SET
Fischertechnik社が販売しているロボットキット。
![]()
- Boe-Bot
Parallax社が販売しているロボットキット。
![]()
- Traxster
RoboticsConnection社が販売しているロボットキット。
開発環境の構築
開発ツール
- .NET Framework 2.0 SDK
.Netアプリケーションの開発キット。- Microsoft Robotics Studio 1.5
ロボットアプリケーションの開発キット。 以下のツールもオプションで入手できる。.Net 3.0が古いとVPLでDateアクティビティ配置した時に落ちたりする。その時は.Net 3.0をアンインストール後、サイトからダウンロードしてインストールすること。
- Robot Soccer Simulation - サッカーシミュレータ
- Robot Sumo Simulation - 相撲シミュレータ
- H2Viewer
ヘルプの閲覧で利用する。- Visual C# 2005 Express Editions
C#アプリケーションの開発キット。
シミュレータの実行
ロボットサッカーシミュレータ
ロボットサッカーシミュレータのデータをインストール後、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#によるロボット制御プログラミング ハードウェア