SimplySIM NXT MSRDSのサンプルを動かしてみる(1)(VPL Explorer編)3−1

前回の「SimplySIM NXT MSRDSのサンプルを動かしてみる(1)(VPL Explorer編)」の続きです。

  • 今回やりたいこと

1.5つのサンプルの中の一つのVPL Explorerを実行してみる。
2.Sample2ServiceとVPL Explorerの違いを調べる。
3.VPL Explorerを修正し、自作したVPL図を動かしてみる。 →今回はここ。

SimplySIM NXT MSRDSは自分で作ったサービスを試してみることができるようなのですが、サービスの自作はまだ無理な気がするので、とりあえずVPL図のモータ制御と超音波センサのパラメータの設定箇所を書き換えて実行できるかを試してみようと思います。
尚、これは失敗した手順を説明しているので注意して下さい。

【実行手順】
(※SimplySIM NXT MSRDSを E:\Documents and Settings\username\Microsoft Robotics Dev Studio 2008 Expressにインストールした前提で説明します。)

1.E:\Documents and Settings\username\Microsoft Robotics Dev Studio 2008 Express\samples\Platforms\SimplySIM\NXT-MSRDS\Sources\VPLSamples\VPLExplorerの中にあるVPLExplorer.mvplをダブルクリックし、VPLを起動します。
VPL Explorerを参考に以下の値を書き換えたいので、上書きしてしまわないように先にメニューバーから「File→Save as」を選択し、「VPLExplorer_test.mvpl」という名前をつけて新規保存します。


2.「Sample2Service」で使われていた値と同じにすることで類似した動きが再現できるかを確かめたかったので、各パラメータ値をそれぞれ以下のように修正しました。

  • 修正前のVPL図(VPLExplorer.mvpl)

  • 修正後のVPL図(VPLExplorer_test.mvpl)

2-1.モータ出力のデフォルト値:0.5 → 0.3
2-2.超音波センサの検出範囲:40 → 60
2-3.40cm以内に障害物がある場合のSetDrivePower

  • LeftWheelPower -0.5 → -0.3
  • RightWheelPower -0.1 → -0.15


【参考】

            if (replace.Body.RawMeasurement <= SonarLimit)
            {
                // When an object is too close, avoid it
                _drivePort.SetDrivePower(-DrivePower, -DrivePower / 2);
            }


4.40cm以内に障害物がない場合のSetDrivePower

  • LeftWheelPower 0.5 → 0.3
  • RightWheelPower 0.5 → 0.3



3.SimplySIM NXT MSRDSインターフェイスに追加する。

・・・
あれ。。。?
VPL図を修正したのはいいのですが、この後、一体どうしたらいいんでしょう。。。σ(^-^;)



これで追加可能になったのかを確かめるためにSimplySIM - NXT-MSRDS.batをダブルクリックして起動後、「Add]ボタンを押します。(SimplySIM - NXT-MSRDS.batはSimplySIM NXT MSRDSをインストールしたフォルダの直下にあります。)



ここで、先ほど作成した「VPLExplorer_test.mvpl」を指定すればと思ったのですが、「VPLExplorer_test.mvpl」らしきものがが見当たりません。。。


どうやらサービスの状態になっているものしか選択できないようです。(;_;)
(【参考】VPLのServices欄に表示されているもの)


試しに、以前練習で作った空の「AAAAA」を選択してみると追加されました。


すると、サンプルの「VPLExplorer」はどうやってここに追加したのでしょう(?_?)
何か方法があるはず!と今までVPL図を作ったあとはメニューバーの「Run」→「start」を押して実行していたので、VPLExplorer.mvplを起動して、同様の操作をしてみました。
すると・・・

  • エラー1

  • エラー2



( ̄○ ̄;)
エラーです。。。

  • エラー1の詳細
Error: Partner enumeration during service startup failed. Partner Name:http://schemas.microsoft.com/robotics/2006/05/drive.html:LeftMotor
Partner Contract:
    Partners specified statically in service implementation class:
        PartnerAttribute Name:SubMgr,Contract:http://schemas.microsoft.com/xw/2005/01/subscriptionmanager.html,CreationPolicy:CreateAlways
        PartnerAttribute Name:LeftMotor,Contract:http://schemas.microsoft.com/robotics/2006/05/motor.html,CreationPolicy:UsePartnerListEntry
        PartnerAttribute Name:RightMotor,Contract:http://schemas.microsoft.com/robotics/2006/05/motor.html,CreationPolicy:UsePartnerListEntry
        PartnerAttribute Name:LeftEncoder,Contract:http://schemas.microsoft.com/robotics/2006/05/encoder.html,CreationPolicy:UsePartnerListEntry
        PartnerAttribute Name:RightEncoder,Contract:http://schemas.microsoft.com/robotics/2006/05/encoder.html,CreationPolicy:UsePartnerListEntry
    Partners specified at runtime, in CreateRequest:
        Name: http://schemas.microsoft.com/xw/2004/10/dssp.html:ConstructorService, Contract: http://schemas.microsoft.com/xw/2004/10/constructor.html, Service: dssp.tcp://asa-xp:50001/constructor
        Name: http://schemas.microsoft.com/xw/2004/10/dssp.html:PartnerListService, Contract: http://schemas.microsoft.com/xw/2004/10/partnerlist.html, Service: dssp.tcp://asa-xp:50001/drivedifferentialtwowheel/101b811a-eb13-488f-8dbb-f0ebca22670d/dss/partnermanager

Source: http://XXXXXXXX:50000/drivedifferentialtwowheel/101b811a-eb13-488f-8dbb-f0ebca22670d
Code site: Boolean HandlePartnerFailure(Microsoft.Ccr.Core.Port`1[System.Boolean], Microsoft.Dss.ServiceModel.Dssp.ServicePartnerMetadata, Microsoft.Dss.ServiceModel.Dssp.PartnerType, System.Exception)() at line:0, file
Time: 2009/01/08 5:11:36
  • エラー2の詳細
Error: Unable to instantiate activities.: 値を Null にすることはできません。
パラメータ名: uriString    System.ArgumentNullException: 値を Null にすることはできません。
    パラメータ名: uriString
       場所 System.Uri..ctor(String uriString)
       場所 Microsoft.Dss.Services.ModelInterpreter.RunningInstance.StartSubscription(Subscription subscription)
       場所 Microsoft.Dss.Services.ModelInterpreter.RunningInstance.Start(ServiceEnvironment environment, PartnerType[] partners, ModelInterpreterService service)
       場所 Microsoft.Dss.Services.ModelInterpreter.ModelInterpreterService.<LoadUri>d__26.MoveNext()
: http://www.w3.org/2003/05/soap-envelope:Receiver -> Fault
Source: http://XXXXXXXX:50000/model/vplexplorer
Code site: Boolean MoveNext()() at line:0, file
Time: 2009/01/08 5:12:07


あ、そうか。GenericDifferentialDriveブロック使ってるのに接続先のモータを指定していないのからこんなエラーが出てしまったのでしょうか。。。そういえば、今まではここでシミュレーション用のマニフェストファイルを指定していたことを思い出しました。
が、今回のSimplySIM NXT MSRDSの場合はなんのマニフェストファイルを指定すればいいのでしょう。。(?_?)

とりあえず、Configuration欄で「Use a manifest」を指定すると、Mnifestのドロップダウンリスト(?)に「Drive in Simulation.Manifest.xml」というファイル名が出てきたのでこれを指定して、再度メニューバーの「Run」→「start」を押して実行しました。
【変更前のGenericDifferentialDriveプロパティ】

【変更後のGenericDifferentialDriveプロパティ】


すると、今度はこんなエラーが。。。(/_;)/~~



困りました。。。(Θ_Θ)


  • 今後の課題
    1. SimplySIM NXT MSRDSに自作のVPL図は追加できないのかを確認する。
    2. Sample2Service.csとSample2ServiceTypes.csのモータと超音波センサの設定値部分を修正したサービスを新規作成し、SimplySIM NXT MSRDSに追加してみる。

SimplySIM NXT MSRDSのサンプルを動かしてみる(1)(VPL Explorer編)2

前回の「SimplySIM NXT MSRDSのサンプルを動かしてみる(1)(VPL Explorer編)」の続きです。

  • 今回やりたいこと

1.5つのサンプルの中の一つのVPL Explorerを実行してみる。
2.Sample2ServiceとVPL Explorerの違いを調べる。 →今回はここ。
3.VPL Explorerを修正し、自作したVPL図を動かしてみる。

今回、この違いを調べてみようと思ったのは、SimplySIM NXT MSRDSをインストール時のヘルプに

Samples Overview
The Package is composed of 5 samples:

  • Sample1Service
  • Sample2Service
  • Sample3Service
  • VPL XBox control
  • VPL Explorer

・・・一部省略
The fifth sample is a VPL sample too which is closed to the second sample.

という表記があったので、両者を対応づけてみることでプログラムの理解が深まるのではないかと思ったからです。


【実行手順】

1.SimplySIM - NXT-MSRDS.batをダブルクリック。(SimplySIM - NXT-MSRDS.batはSimplySIM NXT MSRDSをインストールしたフォルダの直下にあります。私の場合は E:\Documents and Settings\asa\Microsoft Robotics Dev Studio 2008 Expressです。以下ではこのフォルダにインストールされたことを前提に説明をしています。

2.起動したSimplySIM NXT MSRDSインターフェイスのServicesから「Sample2Service」を選択し、「Run in simulation」ボタンを押す。


前回と同様に実行結果をわかりやすくするために、LEGOのスタート位置をSimplySIM NXT MSRDSインターフェイスのDriveを使って移動させて変更しています。
移動前の図(デフォルト位置)

スタート位置変更後

  • Sample2Serviceの実行結果

サンプル2をVPLサンプルと同条件で動かしてみる
(同条件といいつつも、スタート位置は手動で設定しているのでサンプル「VPL Explorer」を実行させた時とはかなり誤差があるんですけど。。。)

マシンのスペックの問題なのか、(Windows Media エンコーダを起動しているせいかもしれないです。)「Run in simulation」ボタンを押してからLEGOが走り出すまで若干、時間がかかりました。

こちらがサンプル「VPL Explorer」を実行させた時の結果です。

サンプル「Sample2Service」の動きの方がサンプル「VPL Explorer」の時よりもなんだか早く曲がったような気がします。


先ほどのヘルプに

Sample2Service Exploration of Open Space
For this sample, the robot will explore the environment and avoid obstacles using the sonar sensor. Each time an obstacle is detected (distance inferior to 40cm) the robot move in rear direction while the object is detected. There is an interaction with the environment.

とあったので、

(distance inferior to 40cm)

これが40cm以内の障害物を検知するという意味だと思っていたのですが、ソースを見たら、60cmなんじゃないかな〜と思いました。(でも、自信はありません。。。)

  • Sample2Service.csのpublic class Sample2Service : DsspServiceBase{}の一部1
        #region Constants

        /// <summary>
        /// Power used for drive
        /// </summary>
        public const double DrivePower = 0.3;
        
        /// <summary>
        /// Limit distance for avoidance
        /// </summary>
        public const double SonarLimit = 60;

        #endregion

たぶん、この

SonarLimit = 60;

で60cm以内の障害物を検知して、サンプル「VPL Explorer」の時の40cmよりも反応がよくなってしまったのではないかと思われます。(ソースの詳細を調べたわけではないので憶測です。)

あと、もう一箇所。

  • Sample2Service.csのpublic class Sample2Service : DsspServiceBase{}の一部(2)
        /// <summary>
        /// Handler called on ultrasonic notification
        /// </summary>
        private IEnumerator<ITask> AnalogSonarReplaceHandler(analog.Replace replace)
        {
            if (replace.Body.RawMeasurement <= SonarLimit)
            {
                // When an object is too close, avoid it
                _drivePort.SetDrivePower(-DrivePower, -DrivePower / 2);
            }
            else
            {
                // Otherwise, move forward
                _drivePort.SetDrivePower(DrivePower, DrivePower);
            }

            yield break;
        }

上で、

public const double DrivePower = 0.3;

とセットしているので、replace.Body.RawMeasurement <= SonarLimitの場合(障害物までの距離が60cm以内になったら)は

_drivePort.SetDrivePower(-DrivePower, -DrivePower / 2);
より

_drivePort.SetDrivePower(-0.3, -0.15)

60cm以内に障害物がない場合は

_drivePort.SetDrivePower(DrivePower, DrivePower);
より

_drivePort.SetDrivePower(0.3, 0.3)

という動作をしているのではないかと思います。
(_drivePort.SetDrivePowerの引数がそれぞれLeftWheelPowerとRightWheelPowerに対応しているような気がします。)

これが、サンプル「VPL Explorer」では、

  • 40cm以内に障害物がある場合

LeftWheelPower -0.5
RightWheelPower -0.1


(ifブロックとGenericDifferentialDriveをつないだ線上のプロパティ表示)

  • 40cm以内に障害物がない場合

LeftWheelPower 0.5
RightWheelPower 0.5


(ifブロックとGenericDifferentialDriveをつないだ線上のプロパティ表示)
という設定がされていました。

  • まとめ


項目サンプル「VPL Explorerサンプル「Sample2Service」
モータの出力値を設定する
Sample2Service.csのpublic class Sample2Service : DsspServiceBase{}の一部

public const double DrivePower = XXX;



_drivePort.SetDrivePower(DrivePower, DrivePower)

引数1:LeftWheelPowerに対応
引数2:RightWheelPowerに対応

超音波センサのリミット値を設定する

Sample2Service.csのpublic class Sample2Service : DsspServiceBase{}の一部

public const double SonarLimit = XX;



例えば、
if (replace.Body.RawMeasurement <= SonarLimit){
_drivePort.SetDrivePower(-DrivePower, -DrivePower / 2);
}
else{
_drivePort.SetDrivePower(DrivePower, DrivePower);
}

次回は、3番目の
-VPL Explorerを修正し、自作したVPL図を動かしてみる。
についてまとめたいと思います。(結果は失敗だったんですけど。。。σ(^-^;))

SimplySIM NXT MSRDSのサンプルを動かしてみる(1)(VPL Explorer編)

前回の「SimplySim releases new LEGO NXT Simulation Environment」を書いてから、ここ数日、フランスからのアクセスが増えていてブログの内容に何か問題でもあったのかと心配していたら、このLEGO NXT Simulation Environment を提供している会社のSimplySimの方に見ていただいていたことが判明し、ほっとしました。。。(*´Д`)=з

動画付きの紹介を喜んでもらえたようで、嬉しかったです。(≧▽≦)
Merci!!
(これで精一杯でした。。。σ(^-^;)「閲覧ありがとうございます。」でテキスト翻訳かけたら「Merci pour la navigation」と出てきたのですが、あってるかわからない。。。英語だと「Thank you for browsing」でいいのかな???)

さて、今回はLEGO NXT Simulation Environmentをインストール時に付属されている5つあったサンプルの中から、VPLを使ったものをとりあげてみます。本当は自作サービス作って動作確認してみたかったのですが、まだまだ力が足りません。。。(ρ_-)o

  • 今回やりたいこと
  1. 5つのサンプルの中の一つのVPL Explorerを実行してみる。
  2. Sample2ServiceとVPL Explorerの違いを調べる。
  3. VPL Explorerを修正し、自作したVPL図を動かしてみる。
  • 結果
  1. 成功。
  2. やや成功
  3. 失敗(SimplySIM NXT MSRDSインターフェイスにadd可能なのはサービスの状態のみらしい。)
  • 詳細結果

その1.5つのサンプルの中の一つのVPL Explorerを実行してみる。

【実行手順】
1.SimplySIM - NXT-MSRDS.batをダブルクリック。(SimplySIM - NXT-MSRDS.batはSimplySIM NXT MSRDSをインストールしたフォルダの直下にあります。私の場合は E:\Documents and Settings\asa\Microsoft Robotics Dev Studio 2008 Expressです。以下ではこのフォルダにインストールされたことを前提に説明をしています。

2.起動したSimplySIM NXT MSRDSインターフェイスのServicesから「VPL Explorer」を選択し、「Run in simulation」ボタンを押す。


サンプル「VPL Explorer」は超音波センサを使って、障害物を検知すると迂回(?)する動きをします。実行結果をわかりやすくするために、LEGOのスタート位置をSimplySIM NXT MSRDSインターフェイスのDriveを使って移動させて変更しています。

移動前の図(デフォルト位置)

スタート位置変更後

実行結果

直進後、箱に近づくと(たぶん箱との距離が40cm以下になったら)左回転し、避けようとする様子が確認できました。

【VPL図の補足】
E:\Documents and Settings\asa\Microsoft Robotics Dev Studio 2008 Express\samples\Platforms\SimplySIM\NXT-MSRDS\Sources\VPLSamples\VPLExplorerの中のVPLExplorer.mvplをダブルクリックして、内容を確認してみます。

どんな設定がされているか、どんな動きをするかをプロパティなどを見て、推測で書いてみます。
1:モータ出力のデフォルト値を0.5に設定。
2:超音波センサのブロック(Sonar)を使用。
3:Ifブロックの条件欄に超音波センサの障害物検知距離を40cm以内に指定する。(RawMeasuremnet<=40でたぶん40cm以内の障害物を検知するという意味になるのだと思われます。)
4:40cm以内に障害物がある場合は左右モータの出力値を

LeftWheelPower -0.5
RightWheelPower -0.1

に指定。(左に曲がって障害物を避ける動作をします。)

この位置をクリックをするとVPLの右側で以下のようなプロパティを見ることができます。

5:左右モータの出力のデフォルト値を(40cm以内に障害物がない場合)

LeftWheelPower 0.5
RightWheelPower 0.5

に指定。


時間ぎれのため、残りの部分の説明は次回に回したいと思います。。。σ(^-^;)

SimplySim releases new LEGO NXT Simulation Environment

Microsoft Robotics Studio Blog より

2008年12月29日に、SimplySimという2008年4月にフランスに設立されたreal time 3D simulationの専門会社からLEGOR NXT Tribot のシミュレーション環境がリリースされたようで、以下のページからダウンロードできます。

またギャラリーではサンプル画像が紹介されていました。


Presentation videoを見ていて、どこかで見たことがある絵が出てくると思っていたら、以前ご紹介したことのある「RoboChamps」というRoboticsStudioを使って迷路や火星探索など様々なシミュレーション環境でロボット同士を競わせる大会があるのですが、そのシミュレーション環境を担当している会社のようです。(もう一度動画を見てみたら、最初に大きく「RoboChamps」というロゴがでてました。。。σ(^-^;))



そこで早速、上記サイトからダウンロードしてみました。ダウンロードした「NXT-MSRDS.exe」をダブルクリックすると、インストール画面が立ち上がるので、インストール場所など指定し、順次画面をすすめていきます。







すると、上記で指定したフォルダに「SimplySIM - NXT-MSRDS.bat」というファイルができるので、これをダブルクリックするとインターフェースとシミュレーション画面が起動します。



うゎっ。\(゜□゜)/


これはなんだかすごそう。
なにやらオフィスにある設定のようです。
ちょっと画面を動かして見ました。かくかくして見づらいかと思いますが、雰囲気だけでもσ(^-^;)


全体図はこんな感じです。どこでもいっしょとかポストペット(ちょっと違うかな。。。)を思い出しました。あ、セカンドライフっぽいのか。



次にインターフェースを触ってみました。




動いた〜:*:・( ̄∀ ̄)・:*:



箱を掴んで前進させたかったのですが、最後失敗。。。


でも、これはおもしろい〜:*:・( ̄∀ ̄)・:*:



箱をつかんだりってちょっと、知能ロボコンっぽいな〜
動かし方を簡単に説明しますと、(というか説明するまでもなく、なんとなくで動かせるかと思いますが。。。)

赤い四角で囲んだ「Drive」欄で前進だったり、回転、後進などモータドライブの制御を行い、青い四角で囲んだ「Claw」欄で前方についているClaw(うまい訳し方がわかりませんでした。。。σ(^-^;))の開閉を制御できます。


そうでした、そうでした。下記5種類のサンプルもついてます。
インターフェース(SimplySIM NXT MSRDS)の下Services欄から選択して、「Run in simulation」を押すだけです。

1.Sample1Service:3秒間前進→3秒間右へ曲がる→3秒間左へ曲がる→3秒間後進→3秒間停止→1秒間Claw(前方についているやつ)を開く→1秒間Clawを閉じる
2.Sample2Service:超音波センサを使って40cm以内の障害物を検知する。
3.Sample3Service:clawを開いてライントレースを開始し、障害物にぶつかったらclawを閉じて加速後、clawを開いて停止する。
4.VPL Xbox control:Xboxを使って制御するVPL図
5.VPL ExplorerSample2ServiceをVPL図で表した場合の例



また、出てきました。Xboxコントローラ。。。(;_;)
そろそろ買っちゃおうかな。。。




【Sample3Service動かしてみた様子】
途中、フレームアウトしてしまったので、加速した後のclawを閉じて停止部分まで撮れませんでした。。。それと画面キャプチャをしていない時はもっとスムーズに動いてます。


本当は他のサンプルとかもう少しよいアングルからのショットをとりたかったのですが、アングル指定が難しく何回もやっていたら画面酔いをしてかなり気持ち悪くなってしまったので今回は断念です。(Θ_Θ)
また、なにか面白い絵がとれそうだったらご紹介したいと思います。


あとは、画面キャプチャをとりながらやっていたというのもあると思いますけど、かなりマシンパワーが必要。。。途中、動きがものすごく遅くなって、何度か再起動をしました。


今までは実際のマシンを動かした方が面白いかな〜と、あまりシミュレーションに興味がなかったのですが、これは面白いかも!それから、書き忘れていましたがシミュレーションした結果は実際のLEGOでも動かしてみることが可能です。なので、またNXTが欲しくなってきてしまいました。。。



自分で書いたプログラムをこの環境で試せるとあったので、たぶんインターフェース(SimplySIM NXT MSRDS)の下Services欄の下にある「add」ボタンで追加できたりするんだと思います。次回はこの辺を触ってみたいですが、その前にこのサンプルのソース解析から始めたいと思います〜:*:・( ̄∀ ̄)・:*:
あ、もしもRoboticsStudio、やってみたくなったらこちらからダウンロードできますよ〜:*:・( ̄∀ ̄)・:*:


2008年の検索キーワード一覧

id:naoki0311さんの日記を見ていたら、少し前にid:karuakunさんとたまに面白い検索キーワードってありますよね〜という話をしていたのを思い出したので、私もまねっこしてみます。

とりあえず、Top50をだしてみたのですが、Top30を過ぎたあたりからそのキーワードでの検索回数が1回とか2回ばっかりだし、似たような単語がちらほら。。。ここでふと、RoboticsStudioだけ抜き出したらどれくらいになるかな〜と一瞬でも思ったのが間違いでした。。。
ここから全472件のキーワードの分類作業にはいることに。。。σ(^-^;)
でも、一度やってみたかったんです。(来年はもうこんなことしません。。。)

【結果】
こんな感じで約3割がRoboticsStudioに関係あると思われるキーワードで占められていました。

ここでやめておけばいいものを、これじゃあまりにも大雑把すぎる!!!と次は中身をもう少し分析してみたくなりました。ここで2回目の後悔です。。。


やっぱり皆さん、インストールにてこづるんですね(>_<)
あとは私も未だに悩みのタネのグラフィックボードのシェーダバージョン。
仕様の見方とか難しいです。(;_;)
RoboticsStudio関係のみでのTop30はこんな感じでした。

検索キーワードTOP30(RoboticsStudio関係のみで)

  1. 2008 rds 8
  2. developer microsoft robotics studio
  3. create irobot
  4. developer robotics studio入門
  5. mindstorms nxt xbox360 コントローラ
  6. 2008 developer edition express microsoft robotics studio
  7. microsoft robotics studio
  8. robotics studio
  9. 2008 developer microsoft robotics studio
  10. 2008 express microsoft robotics studio
  11. c# developer microsoft robotics studio
  12. robotics studio 使い方
  13. シェーダバージョン 3
  14. バージョン ピクセルシェーダ 確認
  15. 2008 developer edition express lego microsoft robotics studio プログラム
  16. vse 動かない
  17. and ccr dss microsoft runtime
  18. and concurrency coordination runtime
  19. developer microsoft studio
  20. 10 directx robotics studio
  21. 2008 robotics studio
  22. rds
  23. microsoft rds
  24. microsoft robotics studio
  25. framework3.5がインストールできない net
  26. c# compact framework3.5 サポート
  27. .net 3.5 framework インストール後
  28. edition express vc スペック
  29. robotics studio インストール
  30. developer microsoft robotics studio ダウンロード

おまけ(?)おもしろ編
全くそのキーワードについての日記を書いていないのにこんなのもちらほら。。。

パーフェクトc#
コンタクト 左右
asa コンタクト 左右 逆
アルフ カーソル
幸福な朝食 退屈な夕食
おいしい しめさば
おうち鍋
手のひらが痛い
毎日 続ける 難しい
和風モンブラン
初めて 狂言
かっこいい テンプレート 表紙

たぶん、一日ごとに書けるタイトル欄がひっかかってるんだと思います。
どれもこれも身に覚えが。。。(ρ_-)o
書く内容もうちょっと気をつけよう。。。

トータルしてみた時の結果(長くなるので一番後ろにTop50を載せました。)を見ていて思ったのが、メディアの影響って大きいんだな〜と。
一つ目の図でRoboticStudioの次に多いテレビという分類は、私が見たいと思った番組の紹介をしたものが連想されるキーワードをまとめたものです。書いた日記はこんな感じです。


アトム人気はすごいです(>_<)
人気といえば、まだ公開中(かな?)の「ウォーリー」もこの時、1回しか書いてないのに内訳では9%ありました。

たしかにかわいいんですけど〜(>_<)///
12月に映画を見てきたのですが、DVDでたら絶対に欲しい(>_<)////
ディズニーランドには期間限定でウォーリーの撮影コーナーがあるそうです。
年末、とった写真を送ってもらいました。いいな〜(/_;)/~~


あと、意外だったのは「ガジェットが追加できない」というワードが結構多かったこと。

  • 2008-05-12 第1の壁:既存のサイドバーガジェットが追加できない。


それと「Windows7の由来」というキーワードも結構出てきました。


ノーベル賞の話題も一時期、新聞紙面を飾ってすごかったですよね〜


連載(?)来年、じゃなかった今年も楽しみにしてますね〜

  • 2008-12-11 ASP.NETにおけるイベントドリブンモデルとページライフサイクル(後編)
  • 2008-11-28 ASP.NETにおけるイベントドリブンモデルとページライフサイクル(前編)
  • 2008-10-23 LINQ to XMLの基礎(後編)
  • 2008-10-09 LINQ to XMLの基礎(前編)

そうだ。今年こそRubyをやるんだい(>_<)

あと、MCPも。。。これをみてまた、思い出しました。。。(ρ_-)o

  • 2008-10-21 .NETエンジニアが答えられなければいけない質問集

イベントにもたくさん参加しました〜:*:・( ̄∀ ̄)・:*:
(中には行けなかったのも混ざってますけど。。。)

  • 2008-12-22 わんくま同盟 東京勉強会 #27でライトニングトーク発表してきました。
  • 2008-12-13 Tech Fielders セミナー 東京でライトニングトーク発表してきました。
  • 2008-09-03 Tech Ed 2008LT補足(RoboticsStudio)
  • 2008-10-18 JUDEで学ぶシステムデザイン 11/5発売予定
  • 2008-10-17 ROBO_JAPAN 2008 【セミナー】「人に役立つロボットとは」/広瀬茂男氏
  • 2008-10-15 ROBO_JAPAN 2008 行ってきました〜
  • 2008-10-10 ROBO_JAPAN 2008
  • 2008-10-01 CEATEC JAPAN 2008
  • 2008-09-14 中秋の名月 未来館でお月見!2008


もたくさん買いました〜:*:・( ̄∀ ̄)・:*:

  • 2008-12-25 The Root of .NET Framework/荒井 省三 Windowsダンプの極意/上原 祥市
  • 2008-10-19 ロボット工学
  • 2008-10-09 LINQ to XMLの基礎(前編)(LINQテクノロジ入門)
  • 2008-09-12 XNA Game Studio2.0ではじめるゲームプログラミング
  • 2008-09-13 ロボコンマガジン
  • 2008-09-10 silverlight2テクノロジ入門
  • 2008-09-08 PLUS ROBOT vol.1
  • 2008-09-05 Robotics Developer Studio入門 その1

モダンタイムス、おもしろかったな〜(>_<)////
今は読売新聞で月から土に連載されている「SOSの猿」を週間隔くらいで切り抜いて読書(?)中です。
年末、70回を超えたのですが、なぜか2回めと7回目がどこかにいってしまって見当たりません(;_;)

そしてチャップリンから派生して、チャペックにも手が伸びかかっているところです。。。


iknowは年末ちょっと吹き返しましたけど、英語は最近、やや停滞気味。。。
多読用に準備していた絵本類には手が伸びなくなっているのですが、RoboticsStudioのヘルプは日本語がないので、調べものが発生するたび格闘中で触れる時間は長くなっているのかも。(ρ_-)o
あと、最近は今頃になってようやくPDCのセッション動画をダウンロードしまくって、携帯用動画変換をかけて持ち運びできるようにしてみました。(なんとかプレゼン資料くらいなら見える解像度ですけど。。。)
そうだ。\(゜□゜)/Lang-8登録後のプロフィール記入もなんとかしなきゃ。。。

  • 2008-10-22 eChat Vancouver
  • 2008-10-18 SPaMCAST
  • 2008-10-18 Kanban Systems
  • 2008-10-06 The Frog and Toad Collection (I Can Read Books) (3 Volume Set)
  • 2008-10-05 久しぶりにi-Knowにログイン
  • 2008-05-13 今日読んだ本
  • 2008-05-12 多読開始〜
  • 2008-05-11 「絵本からの多読と多聴」感想


さすがは日本。(最後のはちょっと違うかも。。。)こんなに様々なロボットがあるわけですが、

  • 2008-10-11 ロボット教室
  • 2008-10-10 ネットタンサー新型お披露目
  • 2008-10-08 狂言ロボット
  • 2008-09-06 ネットタンサー
  • 2008-08-14 MSDNマガジン8月号 いろいろな場所へ ロボットが教えてくれること

そんな中でもまるいちはやっぱり一番かわいい(≧▽≦)(≧▽≦)(≧▽≦)(≧▽≦)

  • 2008-10-03 まるいち的風景

こうしてみると2008年後半はほとんどRoboticsStudioネタばっかりでした。。。

  • 2008-12-31 VPLブロックを使ってみよう(Timer)失敗編(1)
  • 2008-12-19 Visual Studio 2008からRDSサービスを作成(4)(成功編)
  • 2008-12-18 Visual Studio 2008からRDSサービスを作成(4)(失敗編3)
  • 2008-12-17 Visual Studio 2008からRDSサービスを作成(4)(失敗編2)
  • 2008-12-16 Visual Studio 2008からRDSサービスを作成(4)(失敗編)
  • 2008-12-15 Visual Studio 2008からRDSサービスを作成(3)
  • 2008-12-14 Visual Studio 2008からRDSサービスを作成(2)
  • 2008-12-10 RDS 2008 Express Editionのインストールの注意点17
  • 2008-12-10 VSEを実行スペックを満たしていないPCで起動した場合の検証
  • 2008-12-09 VSEでシェーダバージョンを確認する方法
  • 2008-12-08 RDS 2008 Express EditionのData Published
  • 2008-12-07 VPLからRDS 2008のシミュレータ機能を使ってみる(2)
  • 2008-12-05 RDS 2008 Express EditionでKHR-1 Controlを試してみる
  • 2008-12-05 RSDのシミュレータ機能を使ってiRobot Createを動かしてみる
  • 2008-12-05 Roomba乗り猫
  • 2008-12-05 ロボット未来デパートメント オープン!
  • 2008-12-05 VPLからRDS 2008のシミュレータ機能を使ってみる(1)(解決編)
  • 2008-12-04 VPLからRDS 2008のシミュレータ機能を使ってみる(1)(成功一歩手前編)
  • 2008-12-03 VPLからRDS 2008のシミュレータ機能を使ってみる(1)(失敗編)
  • 2008-12-02 Visual Studio 2008からRDSサービスを作成(1)
  • 2008-12-01 VPLで方向ダイアログを使ってみる(成功編)
  • 2008-11-30 VPLで方向ダイアログを使ってみる(失敗編)
  • 2008-11-21 VPLでHello,Robotics Studio(≧▽≦)
  • 2008-11-20 Robotics Studioバージョン比較(2) VPLの違い
  • 2008-11-20 Robotics Studioバージョン比較(1) インストールされたもの
  • 2008-11-20 Microsoft Robotics Developer Studio(RDS)2008 Express Edition のインストール
  • 2008-11-19 Microsoft Robotics Developer Studio(RDS)2008 Express Edition 公開
  • 2008-10-27 Microsoft Robotics Studioのタンディ・トローワー氏インタビュー
  • 2008-10-30 CCR and DSS Toolkit 2008(pdc2008) セッション公開
  • 2008-10-04 CCR(concurrency and coordination runtime)
  • 2008-09-15 RoboChamps
  • 2008-09-05 Robotics Developer Studio入門 その1

そして、ロボット関係とウォーリーとRoboticsStudioをひとつにまとめると。。。
検索キーワード分類:ロボットで4割に( ̄○ ̄;)
何書こうか考える時、多少は意識していましたがここまでになるとは。。。



ふぅ。(*´Д`)=зとりあえず、一通り目を通しました。(あげきれなかったのもいくつか残っているのがちょっと悔しい。。。)
キーワードを見るとだいたい何を書いた時のものかがわかって、そういえばこんなのも書いてたな〜と思い出したりしておもしろかったです〜(途中から、キーワードよりも過去日記の回想になってしまいました。。。)
もしかして、こういう1年の振り返りって年末にやるものなのでしょうか。。。σ(^-^;)
今年の抱負を書く前にかなりの長さになってしまったので、今回はやめておきます。。。


最後にトータルした場合の検索キーワードTop50です。本当は100までやりたかったのですが、他にもいろいろ書いて長くなってしまったので。。。

検索キーワードTOP50(トータル)
1.アトムの世紀
2.linq to xml
3..net framework of root the
4.パーフェクトc#
5.2008 rds
6.[weekend] fielders tech セミナー 東京
7.developer microsoft robotics studio
8.game studio2.0 xna
9.windows7 由来
10.create irobot
11.developer robotics studio入門
12.mindstorms nxt xbox360 コントローラ
13.イベントドリブン
14.ロボット未来デパートメント
15.2008 developer edition express microsoft robotics studio
16.asp.net ライフサイクル
17.game studio2.0
18.microsoft windows7の由来
19.アトムの世紀〜夢のロボット開発に挑む科学者たち
20..net c# podcast
21.2008 developer edition express lego microsoft robotics studio プログラム
22.2008 developer microsoft robotics studio
23.2008 express microsoft robotics studio
24.2009 days tech 3
25.945g intel xna 動かない
26.and ccr dss microsoft runtime
27.and concurrency coordination runtime
28.api c# iknow
29.astroboy in roboland
30.c# developer microsoft robotics studio
31.days microsoft tech ‘09
32.itアーキテクトへの道
33.judeで学ぶシステムデザイン
34.linq xml
35.mca アーキテクトへの道
36.microsoft robotics studio
37.robotics studio
38.robotics studio 使い方
39.roomba乗り猫
40.vse 動かない
41.windows7 互換性
42.アトムの世紀 フロンティア
43.シェーダバージョン
44.バージョン ピクセルシェーダ 確認
45.マイクロソフト認定アーキテクト
46.asa0808
47.asaにっき
48.asa日記 rds
49.asp.net イベント ページ
50.authenticaterequest イベントモデル

VPLブロックを使ってみよう(Text To Speech)

昨日のTimerブロックを使ってカウントダウンタイマーらしきものを作れなかった問題はまだ解決していないのですが、これまた昨日発見して、時期的にどうしても今日使ってみたかったので、先に「Text To Speech」ブロックのご紹介。

【やりたかったこと】

「Text To Speech」を使って新年のご挨拶!

【実行結果】
またもや、だいぶ見づらい動画になってしまいましたが、なんとか音は聞いていただけるかと。。。
方向ダイアログの上矢印キーを押すと、「A Happy New Year」という音声が再生されます。




【図1.今回作成したVPL図】


【今回使用したブロック】


はじめ、

を参考に

Choose the Start > then All Programs > then Microsoft Robotics Developer Studio > Run DSS node menu command.

とあったので、書いてある通りに

スタート→すべてのプログラム→Microsoft Robotics Dev Studio 2008 Express→Run DSS Node

を実行させてみたのですが、localhostへの接続がうまくできなくて、この先にすすめませんでした。原因はのちほど調査します。


いろいろヘルプをたどって、それらしき方法を試してみたのですが、結局は接続のところでひっかかってしまい、同じ結果になりました。


ここで、そういえばVPLのService欄でもこの「Text To Speech」 ブロックを見たことがあることを思い出し、Diagram領域に「TexttoSpeechTTS」をドラックアンドドロップさせてみました。



ブロックをどう繋いでやればよいかがわからなかったので、とりあえずこのまま実行させてみると警告がでているのが気になりますが、「Service started」と表示はされるのですが、何も音声は聞こえてきませんでした。



そこで、「TexttoSpeechTTS」を選択して、プロパティのConfigurationで「Set initial configuration」を指定し、以下の2つのパラメータを設定してみると、警告は消えましたが結果は変わらず。。。

  • Voice which will say text:A Happy New Year
  • Voice volume:100

【変更前】

【変更後】


また、

  • Text to be spoken:A Happy New Year

を追加してみても結果は同様でした。



うーん。困りました。。。(ρ_-)o




そんな時、

にText-To-Speechを使用したサンプルを見つけました。再生させたいテキストをセットする必要があるように見えたので、見よう見まねで図1のようなVPL図を作成してみたところ、成功しました。(≧▽≦)


この場合、「TexttoSpeechTTS」プロパティのConfigurationで「Set initial configuration」を指定しなくても音声は再生されましたが、やはり

Get or query operation fault.File not found:E\Documentnts・・・・・

と警告がでてしまいます。

指定した場合はVoice volumeが0だと聞こえませんので注意して下さい。
(って、当たり前。。。?σ(^-^;))

試しに、文字列を変更して日本語で「新年明けましておめでとうございます!」バージョンも作ってみましたが、やはり失敗。。。



以下、プロパティをいろいろ触ってみた結果です。

【その1】

  • Voice volume:100
  • Speech rate:10

例えばrateを10にして、早口言葉をしゃべらせるのも面白そうです。


【その2】

  • Voice volume:50
  • Speech rate:-10

Voice volumeを変更すると、ローカルでは音量の変化を感じることができたのですが、動画にしてしまうと違いがわかりづらいですね。。。
rateにはマイナス指定もできるようで、いかにもデジタル音声っぽくて面白かったです。


  • わかったこと
    • Voice volumeは0から100まで指定できる。
    • Speech rateは-10から10まで指定できる。

をみると、

Voice
Changes the speaker's voice.
Possible voices may include:

LH Michael
LH Michelle
Microsoft Anna
Microsoft Mary
Microsoft Mike
Microsoft Sam
・Sample TTS Voice

Short names may be used. For example, Mike may be used to select Microsoft Mike.

とあり、声の種類をいろいろ変更できるようだったので、どこかの設定でできないかとその他のパラメータも入力してみたり、VPLを変えてみたりしたりといろいろ試してみたのですが、分かりませんでした。


  • 「TexttoSpeechTTS」プロパティの「Set initial configuration」にあるパラメータ一覧
    • TextToSpeechState
      • List of available voices
      • Voice which will say text
      • Voice volume
      • Speech rate
      • Text to be spoken
      • Disable audio output

新年のご挨拶なので、なんとなく午前中に間に合わせたかったのですが、Windows Media エンコーダ 9の設定がわからずに音声付きキャプチャがうまくできなくて、他のソフトをさがしていくつか試してみてもちょうどいいのが見当たらず、結局Windows Media エンコーダ 9の設定がわかってようやくYoutubeにアップロードすると、今度は変換に失敗し、はてなフォトライフに動画のアップロードができることに気がつくもコンバートに時間がかかりすぎてしびれをきらし、再度YouTubeアップロードに挑戦したらあっさり成功。。。
よし今度こそ!!(>_<)と思えば、下書き保存したはずの日記は保存ボタンを押し忘れていて、最初から書き直したり(;_;)と、なんだかんだでもうすっかり夕方に。。。(Θ_Θ)


遅くなりましたが、今年も宜しくお願い致します〜

VPLブロックを使ってみよう(Timer)失敗編(1)

今年最後の失敗です。。。σ(^-^;)

さて、今日は大晦日です。
2008年も残りわずかですね。(これを書き始めたのが22:55なのであと1時間ちょっとです。)
31日ってふと、年明けまであと残り何秒あるのか知りたくなりませんか?
そんな時のためにこんなものを作ってみました。

方向ダイアログの上矢印キーを押すと・・・


2008年の残り時間が表示されます。



なんともまぁ、RoboticsStudioを使う意味がどこにあるのかっていう。。。σ(^-^;)
(でも、18時半頃からスタートして、ここまで持っていくのにもああでもない、こうでもないとVPL図を書き換え、それなりに時間がかかりました。。。(ρ_-)o)


もともとはRDSのヘルプを見ていたらTimerブロックを使った事がないことを思い出したので、ちょっと触ってみようと思ったのと「大晦日」というキーワードからの連想で、


【やりたかったこと】

ダイアログのボタンを押した時刻から、2008年12月31日23時59分59秒までの残り時間を表示させ、Timerブロックを用い一定間隔で残り時間を更新する。

というようなカウントダウンみたいなことをやってみたかったのですが、まだサービスの仕組みを理解できておらず、うまく動きませんでした。

【結果】

秒単位の誤差を許容すればボタンを押した時刻からの残り時間を取得することはできたが、残り時間が更新されずにループした回数だけ同じ時刻が表示された。





思った通りに動かすことはできませんでしたが、今までの総復習と新しいブロック(TimerとMergeとVariable)を使ってみたという点ではよかったと思います。
そもそもこういうことが実現可能かすら不明なのですが、もう少しなんとかできないものか考えてみたいです。

それでは、皆様よいお年を〜


【今回使用したブロック】

【今回作成したサービス】
プロジェクト名を「GetRemainingTime」で新規作成。

  • プログラム追加箇所
    • GetRemainingTimeTypes.cs
    /// <summary>
    /// GetRemainingTime state
    /// </summary>
    [DataContract]
    public class GetRemainingTimeState
    {
        [DataMember]
        public string RemainingTime
        { get; set; }
    }
    • GetRemainingTime.cs
  • 1つ目
        /// <summary>
        /// Service state
        /// </summary>
        [ServiceState]
        GetRemainingTimeState _state = new GetRemainingTimeState();

の前に

        TimeSpan remainingTime;
        System.DateTime limitTime = new DateTime(2009,1,1,0,0,0);

を追加。

  • 2つ目
        /// <summary>
        /// Service constructor
        /// </summary>
        public GetRemainingTimeService(DsspServiceCreationPort creationPort)
            : base(creationPort)
        {
            remainingTime = limitTime - System.DateTime.Now;
            _state.Time = "2008年も残り " + remainingTime.Hours + "時間" + remainingTime.Minutes + "分" + remainingTime.Minutes +"秒です!";
        }

【今回作成したVPL図(最初にダイアログボックスに表示させた方)】

この、ダイアログボックスに表示させるバージョンで、Timerを使ったVPL図も作成してみたのですが、実行してみると、方向ダイアログの上矢印キーを押すたびに、ダイアログボックスが増えて、増えて、増えて・・・(ρ_-)o

こんな結果になり、手がつけられなくなったのでLog表示に変えてみたのですが、時間が更新されないという問題点は何も改善されておりません。。。


【追記】
初めは下準備として、"GetCurrentTime"というプロジェクト名で現在時刻を取得するサービスを作成していたのですが、そのプログラムに残り時間表示処理を追加して実行し、画像ショットをとってしまいました。お手数ですが図中で"GetCurrentTime"となっている部分は全て"GetRemainingTime"に読み替えて下さい。