C#WPF「Dynamic Data Display」
Dynamic Data Display
DynamicDataDisplayは、動的なデータをインタラクティブに可視化するコントロールのです。線グラフ、バブルチャート、ヒートマップやその他の複雑な2Dプロットを作成することができます。Bing Mapsの緯度/経度の座標で、地理マップ上のデータを表示することもできます。
私が気になるサンプルコード
1.AnimationSample
固定した軸に対して、新しいデータが追加され、古いデータがクリアされる。そのため、固定された軸の範囲内で、時系列データが動的にプロットされます。
2.SimulationSample
追加されたデータが、どんどん増えていく動的なプロットです。追加されたデータに合わせて軸の範囲も自動で調整してくれる私的にオススメな機能です。
3.CoastlineSampleApp
簡単に位置情報の緯度経度に対してプロット可能な機能もあります。
4.IsolineSampleApp
標高なども表すことができます。マウス位置の標高を取得し、その標高の高さの箇所を色で知らせます。
最近の地図上への付加情報(ヒートマップやハザードマップなど)が流行っている現代では重宝されるかもしれませんね!!
合わせて、動的なプロットが可能でなめらかなグラフが簡単に実現できます。
ライセンスもMS-RLということで、開発者にやさしいですね♪
一般的にC#といえばWindowsフォームで作成する形が一般的かもしれませんが、私の最近はWPFにハマっていますね♪
WPFはXML形式でコントロールを配置やデザインができるので、デザイナーさんにも優しくプロトタイプが作りやすいと伺っています。
codeplex.comには、色々な機能が提供されていますので、面白そうな機能があれば、情報提供して頂けるとありがたいです。
みなさん、ぜひ使ってみてはいかがでしょうか!!
ROSの気になる話題
RoboEarth プロジェクト
RoboEarth は,クラウド技術の分散データベース共有により,迅速な学習を可能とし,ロボットをより複雑なタスクに適用すること,あらかじめ計画されていないタスク実行をも可能とすることを目指すプロジェクトです。推論エンジン“KowRob”,クラウドエンジンとしての“ラピュタ”,“RoboEarth データベース”等がある。
ロボット要素技術のオープンソース団体
- ロボットの環境やオブジェクトの知覚/視覚認識:OpenNI、OpenCV、 PCL
- ロボット移動のための空間地図作成:OctoMap
- アームとハンドの軌道計算エンジン:OpenRAVE
- 運動計画フレームワーク:MoveIt!
- 推論エンジン:KnowRob
- RoboEarth クラウドエンジン:ラピュタ
- ROSを利用したリモートロボットのパッケージ:rosbridge
- AndroidでROSを稼働(クラウドロボティクスへ):Android/ROS-java
- クラウドロボティクスの実現を目指したフレームワーク:DAvinCi
はじめの方が3つ基礎技術になりつつある現代、5以降は最近のトピックスのクラウドロボティクスを目指したものになりますね♪
情報ソース
C#とGoogleAPIで音声認識を簡単に
前回はUbuntuにROSを導入し、rospeexを試してみました。
今回は、C#とGoogleAPIを使って音声認識と音声合成を試してみたいと思います。
GoogleApiKitとは
GoogleApiKitは、以下の4つの機能が使えるDLL集です。
導入
導入は至って簡単です。DLLなので実行ファイルと同じディレクトリにそのまま置きます。今回は音声認識と音声合成をするので、音声認識[SpeechDialog.dll][flac.exe]と音声合成[GoogleTTS.dll][cmdmp3.exe]の4つを置きます。サンプルコードで、C# FormがありますのでC#コンソールやWPFにも導入し易いです。コンソールとWPFで試して見ましたが、導入は簡単でした。コンソールのサンプルを
サンプルソースコード
using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.IO; namespace ConsoleApplication2 { class Program { //dllのImport //SpeechAPI [DllImport("SpeechDialog.dll")] public extern static bool SpeechDlg(IntPtr Handle, [MarshalAs(UnmanagedType.LPArray)] byte[] res); //音声合成API [DllImport("GoogleTTS.dll")] public extern static void TTS(string in_str); static void Main(string[] args) { for (int i = 0; i < 2; i++) { string test = string.Empty; byte[] res_byte = new byte[4096]; bool res; res = SpeechDlg(IntPtr.Zero, res_byte); //変換(SJISだと"shift_jis") string str = System.Text.Encoding.GetEncoding("shift_jis").GetString(res_byte); if (res) { test = str; } if (test != "") { // 音声認識 if (test.Contains("今何時")) { string text = "今、" + DateTime.Now.Hour.ToString() + "時" + DateTime.Now.Minute.ToString() + "分です。"; TTS(text); } else { TTS(test); } } } } } }
実行手順
- 実行ファイル下に、[SpeechDialog.dll][flac.exe][GoogleTTS.dll][cmdmp3.exe]の4つを置く。
- ソースコードを実行する。
- For文で2回まわるようにしているので、マイクに「今何時」と話すと「今、○時□分です。」と答えてくれます。違う言葉の場合、その言葉を『言霊』します。所謂、オウム返しです♪
実行画面
最後に
サンプルソースコードは、あくまでも参考としてご利用下さい。また、GoogleApiKitのライセンスにも目を通して、ご利用下さい。