連載
» 2007年02月09日 00時00分 公開

ロボット業界は、フォードの出現を待っている解説! ロボット開発環境Robotics Studio(1)(2/3 ページ)

[大川 善邦 工学博士 日本大学工学部非常勤講師/大阪大学名誉教授,@IT MONOist]

SOAのメカニズム

 ここから、Robotics Studio 1.0の考え方や機能などについて簡単に紹介していきます。

 Robotics Studio 1.0は、「SOA(Service Oriented Architecture)」に基づいて構築されています。

 「複数のPCがネットワークに接続されていて、メッセージを交換することによって仕事を遂行する

  これがSOAの基本的なメカニズムです。

 Robotics Studio 1.0では「ノード(Node)」と呼ばれる基本単位を設置する必要があります。そして、1つのノードに複数の「サービス(Service)」を組み込みます(注)。これらのサービス間でメッセージを交換して目的の処理を行うのです。具体的には「ロボットが障害物にぶつかったという信号を受け取ったらモーターを停止するサービス」や「赤外線センサーが物体を検知したらブザーを鳴らすサービス」などです。

※注:
サービス(Service)を別の言葉で表すと「サブルーチン」や「API」などに該当します。


 また、企業などにおいて基幹系のプログラムを構築する手法を「密結合(Tightly Coupled)」というのに対して、Robotics Studio 1.0は「疎結合(Loosely Coupled)」という手法でプログラムを構築します。

 疎結合のプログラム開発では、それぞれのサービスの独立性が強い分、考慮しなければならない点があります。例えば、サービスAが別のサービスBに対して「メッセージ」を送ったが、何らかの事情でサービスBがそのメッセージに対する処理を遂行できなかった場合です。その際、サービスBはサービスAに対してエラーが発生したことを「通知(Notification)」(注)する必要があります。

※注:
通知を「割り込み(Interrupt)」と呼ぶことがあります。


 SOAでは「メッセージ(データ)」と「通知」という2種類の信号が飛び交います。これらの信号を統合的に処理する機構が「CCR(Concurrency and Coordination Runtime)」です。図1に示すように、ノードの最下部にCCRが配置されています。

ノードの構造 図1 ノードの構造

 ノードとは、HTTPやTCP/IPのサーバを指します。このサーバの機能は、「DSS(Decentralized Software Service)」が提供しています。DSSの上に、Webサーバとして必要最小限のサービス(HTTPのGETメソッドなど)を用意します。また、ユーザーは自分に必要なサービスをプログラムして、ノードに配置できます。

 各ノードは、図1に示した構造になります。ランタイムとしてCCRとDSSがあり、その上にデフォルトのサービスとユーザーが定義したサービスが配置されます(注)。

※注:
ユーザー定義のサービスがない状態でも、ノードを生成できます。


 Robotics Studio 1.0では、ノードの状態(State)をWebブラウザで監視します。

ノードのコントロールパネル画面(IEで表示) 画面1 ノードのコントロールパネル画面(IEで表示)

 疎結合(Robotics Studio 1.0)の場合、複数のプログラムが並行して走るためプログラムのデバッグは困難です。密結合のようにブレークポイントを設置して、プログラムを停止させて状況をチェックすることはほとんど不可能です。なぜなら、プログラムを停止してしまうと時間依存関係が壊れてしまうからです。そのため、通常ではノード内でイベントのログを取り、それを解析してプログラムのデバッグを行います。

 また、サービスがネットワークによって接続されており、そのネットワークがインターネットの場合はセキュリティが重要な課題となります。Robotics Studio 1.0では、メッセージを送受するサービス同士をパートナー(Partner)として登録できます。そのため、サービスは登録したパートナー以外からのメッセージを受け付けません(注)。

※注:
「パートナー登録をしたから安全」というわけではありません。パートナー登録は、セキュリティ対策の1つの手段でしかありません。


ロボットとの会話

 デパートや観光地などでロボットが案内をしてくれる。ロボットが、介護や育児など私たちの生活を手助けしてくれる。このようなロボットの活用を考えると、「人間の言葉を理解して答える能力」が一番に要求されるでしょう。

案内ロボットのイメージ 図2 案内ロボットのイメージ

 残念ながらRobotics Studio 1.0には、音声認識機能がありません(つまり、ロボットと人間の会話はできません)。しかし、「Speech SDK」を使えばロボットに言葉をしゃべらせることは可能です(注)。

※注:
英語のみ対応(原稿執筆時点)。ちなみに、男女3名ずつの音声が登録されています。また、Speech SDKを使って自分の音声をあらかじめ登録すれば、自分の声を利用することも可能です。


 現在、人間の言葉を完ぺきに認識する技術はまだないようです。また、技術者の中には「完全な形で音声認識を行うことは不可能だ」と主張する人さえいるそうです。しかし、筆者は「補助的な手段」を併用すれば、ロボットでも人間の言葉を認識できると考えます。なぜなら、私たち人間の日常会話において「聞き返す」などの確認作業によって「理解を補完する」ことが多々あるからです。今後の研究などにより、人間の言葉を認識する技術が生まれることを心から期待しています。

Copyright © ITmedia, Inc. All Rights Reserved.