ETロボコン向け計測システム紹介

ETロボコン2011のチャンピオンシップも昨日無事終わり、競技に参加された皆さんが開発されたロボットの走行性能にただ驚くばかりでした。参加された皆さん、お疲れ様!! ETロボコン競技中に図のような絵が、スクリーンに表示されて、競技の状況表示や、走行時間の計測を行っているのを、会場に来た方でしたら見ていることと思います。 このシステムは、このブログの筆者である太田がシステム全般、表示部分は、クラスメソッドの杉浦さん、チーム紹介のアニメーションは東海大学の学生さん(昨年作成)、タイム計測用のスイッチボックスはシステムクリエイトの高橋さんが担当して、開発し、各大会で使っていただいているシステムです。2011年の大会では、北海道、東北、北関東、東京AB、北陸、東海、関西、中四国、九州、沖縄、チャンピオンシップの全12大会、全てで使ってもらうことが出来ました。 折角なので、このシステムの中身を本ブログで紹介します。このシステムは、ETロボコン競技会に関わる様々な作業を自動化しています。機能は以下の通りです。 大会参加チーム情報登録 大会の走行順登録 二つのラウンド、ターン進行の管理 スタートからの経過時間、ゴール時のタイム、走行状況、難所クリア状況の表示 大会ルールに則ったリザルトタイムの計算 走行結果、走行時間、難所クリア状況の蓄積 走行順位計算 モデル審査結果登録 総合順位結果計算 モデル評価・走行結果傾向分析 中間順位表示(昨年版:酒田エス・エー・エスさん協力) 記録間違いを修正する為の裏仕掛け オリンピックのタイム計測と同様、万が一計測アプリが、何らかの原因でハングし、計測データがぶっ飛んでしまったら大変なので、競技結果はRDBに蓄積、競技状況表示と平行して、裏で色々と操作をする為に、コアのサービスはIIS上で動作するWebサービス、表示ソフトその他は、WebサービスをHTTP/SOAPでアクセスするという祖結合にし、それ+幾つかの工夫で拡張性・保守性を挙げています。また多彩でカッコいい表示を短期間で開発する為に、WPFでUIを作っています。使っている技術を列記します。 WPF(Windows Presentation Foundation) WCF(Windows Communication Foundation) SQL Server 2008 R2 EF(Entity Framework) IIS(Internet Information Server) MEF(Managed Extension Framework) Office ToolkitによるExcel拡張 .NET Frameworkを使ってC#によるプログラミング 動作推奨環境は Windows 7 Excel 2010 Visual Studio 2010 上位エディション(無償のExpress Editionでも可) システム構成は図のようになっています。 スイッチボックスハードウェアは、USBでPCに接続され、仮想COMポートでアプリと通信しています。ETロボコンの時間計測精度は0.1秒で、PCでは実時間保障が出来ないので、スイッチボックス内のカウンターで時間を計測し、PC側でその値を元に各種処理を行っています。 計測システム一式、使い方は、http://etrcrts.codeplex.com/ で公開しています。また、このサイトは、オープンソース開発用サイトで、このサイトを使って並行開発、障害管理、構成管理などのプロジェクト管理を行っている状況です。システム開発のボランティア募集中なので、やりたい方、ご連絡ください。IISで動いているWebサービスとRDBの部分のクラウド化なども進めているので、単にWin7アプリの開発だけでなく、Windows Phoneをはじめとするスマートフォン向けのビューワー、計測方法、競技状況記録方法改善などもあるので、是非。 より細かい部分の解説は以降のポストで。チャンピオンシップで行ったクラウド化(Azure)実験もね。


ENEX2011出展

久しぶりのポストです。 昨日(2月8日)から、国際展示場で開催中のENEX2011に出展しています。出展内容は、昨年のTechDays2010のキーノートで披露した、ドライヤーの・・・もとい、使用電力量の見える化と、小型組込み機器(家電や制御機器のパネル、ネットワークセンサーなど)のクラウド連携です。 富士ソフト(株)、Digiインターナショナル(株)、(株)デバイスドライバーズ、日本マイクロソフト(株)の4社共同出展です。マイクロソフトの、Windows 7 Sensor & Location Platform、Windows Azure、Silverlight、Windows Comunication Foundation、.NET Micro Frameworkをプラットフォームとして、Digi インターナショナル(株)の、ZigBee無線でPCとつながる電源タップ、富士ソフト(株)のSensor & Location Platform対応デバイスドライバー、Windows Azure上のホスティングサービス&SilverlightのRIAによるテーブルタップで計測した電力を可視化するアプリケーションの展示です。基本構成は、昨年のTechDays2010と同じですが、5個のテーブルタップが同時計測可能になり、かつ、複数の地点で計測した値が表示されるようになるなど、格段にパワーアップしています。 また、(株)デバイスドライバーズが代理店の.NET Micro Framework対応小型デバイス、FezCobraによる、Azure連携の展示や、電池がないのにスイッチを押すと、FezCobraにスイッチのOnOff状況が表示されるという、ルフィーなら「あぁ不思議スイッチだな」って言いそうな展示も行っています。※このデバイスは普段は若松通商のアキバNET館に展示されています。 展示場には、このデバイスがネットにつながってRESTやSOAPで通信できたら、いろんな応用が即できそうだという凄い省エネ関連機器があふれています。IT系企業の皆さんも是非、会場に来て夢を膨らませてもらえればと思います。省エネやスマートエネルギー、スマートグリッドのテクノロジーは、まだまだ独自の閉じた製品が多いですね。昨日の講演でもお話しましたが、今後、ITシステムで標準に使われているRESTやSOAP、WebサービスといったテクノロジーでITシステムとの連携が図れる形にして様々な産業と連携が進むことを切に望みます。 展示は明日(2011/2/10)までです。興味のある方は是非会場までお越しください。


.NET Micro FrameworkでWeb ServiceのREST APIにアクセスする方法

はい、表題のやり方を説明します。 .NET Micro Frameworkには、WPFやSilverlightアプリケーション向けの様なWCFサービス参照追加機能はありません。けど大丈夫。RESTのAPIの場合、URIを指定してHTTPでアクセスして、ATOMならXML、JSONならJSON形式でリゾルブすれば、いいですよね。.それらは、通常のPCクライアントアプリでも、HttpWebRequestとHttpWebResponseとか使えば簡単にアクセスできちゃうわけです。で、.NET Micro Frameworkには、これらのクラスがちゃんと用意されているので、それを使えば簡単にREST形式のWeb Serviceにアクセスできちゃいます。更に、今は、Azure使えばすぐREST Webサービス稼働できるし、FezMini+ネットワークボード買っちゃえばすぐ試せるので、ほんと皆さん試してみてね。※ちなみに、SOAPの場合は、こちらも基本必要なライブラリ揃っているので、SOAPプロトコルの概要知ってればそれほど難しくない さて、ではやり方を簡単に説明しておきましょう。 まず、.NET Micro Frameworkのアプリケーションプロジェクトを一つ作ります。アッセンブリー参照を追加します。アッセンブリーは、c:\Program Files\Microsoft .NET Micro Framework\v4.1\Assembly\le に入っています。 System.IO System.Http System.Xml の3つのアッセンブリーです。 後は、以下のようなコードを書けば、出来上がり  using System.IO;using System.Net;using System.Xml;…    Uri serviceUri = new Uri(“http://…/SensedDataSet.svc”);    HttpWebRequest req = HttpWebRequest.Create(serviceUri) as HttpWebRequest;    try {        HttpWebResponse response = req.GetResponse();        using (var stream = response.GetStream()) {           XmlReader xmlReader = XmlReader.Create(stream);           while (xmlReader.Read()){               switch (xmlReader.NodeType)…