はじめに
第4回ではVisual C# 2008 Express Edition (VisualStudio 2008も同様)を用いて、コンソールへの文字出力や状態のログ表示など単純なサービスプログラムの作成と、自作したサービスのVPLでの利用方法、および作成したサービスのロボット制御への利用例を説明しました。今回はロボットが障害物にぶつかった時などに発生する割り込み(通知)の概要および、通知を使ったサービスを取り上げます。
対象読者
- Microsoft Robotics Developer Studio 2008 Express Edition(以下、RDS 2008 Express Edition)に興味のある方。
必要な環境と準備
- RDS 2008 R2 Express Edition
- VisualStudio 2008またはVisual C# 2008 Express Edition
第1回を参考にインストールしてください。
対応OSは、Windows Vista/XPです。本稿ではWindows Vistaで検証しています。また、シミュレーション環境を使用する場合はグラフィックスのシェーダバージョンが2.0以上でなければ正常に動作しないので注意してください。
通知とは
例えばロボットを動かしている時に障害物(壁)にぶつかったことを仮定しましょう。ぶつかるまでは走行していたロボットが、壁にぶつかることで走行を中断されてしまいます。
このような場合、割り込み信号によって、ロボットを停止させたりするなどといった処理が必要となります。RoboticsStudioではこの割り込み信号にあたるものを通知(notification)という名称で呼んでいます。
今回はこの通知についての概要および、ログに表示させるといった簡単なサンプルを元にRDS 2008 R2 Express Editionでの通知の使い方について取り上げます。
サブスクリプションマネージャ
RDS 2008 R2 Express Editionではサブスクリプションマネージャによって通知を管理します。
例えば、図1のようにAとBという2つのサービスがあったとします。サービスBがサービスAから通知を受け取るためにはまず、サブスクライブ(subscribe)を設定し、サービスAはサブスクリプションマネージャをたちあげます。次に、サブスクリプションマネージャにサービスAを登録すると、サブスクリプションマネージャによりサービスBに通知されるという仕組みです。