以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
<ネットワークシステム1の全体構成>
まず、図1を参照して本実施の形態にかかるネットワークシステム1の全体構成について説明する。本実施の形態にかかるネットワークシステム1は、主に、リモコン補助サーバ100と、各種サービスをユーザに提供するロボット200などの通信端末と、照明300Aやエアコン300Bや扇風機300Cなどの各種の電気機器と、電気機器を遠隔から制御するための家電制御サーバ400と、各種の電気機器の消費電力や動作状態を管理するためのホームコントローラ500などの第1の端末と、ユーザ操作を受け付けるスマートフォン600などの第2の端末と、を含む。
なお、電気機器は、照明300Aやエアコン300Bや扇風機300Cに限らず、冷蔵庫、電子レンジ、洗濯機、掃除機、空気清浄器、加湿器、除湿器、炊飯器、照明などの家電、テレビ、ハードディスクレコーダ、プロジェクタ、音楽プレーヤ、ゲーム機、パーソナルコンピュータ、携帯電話、スマートフォンなどのAV(オーディオ・ビジュアル)機器、太陽光発電機、インターホン、給湯器、温水洗浄便座コントローラなどの住宅設備、などであってもよい。なお、以下では、これらの装置を総称して、電気機器300ともいう。
<ネットワークシステム1の動作概要>
以下では、図1と図2に基づいて、本実施の形態にかかるネットワークシステム1の動作概要について説明する。より詳細には、図1は、双方向通信が可能な照明300Aを制御する場合の動作概要を示し、図2は、赤外線通信などの片方向のリモコンコードの受信のみが可能なエアコン300Bや扇風機300Cを制御する場合の動作概要を示す。
図1を参照して、たとえば、ユーザが、ECHONET(登録商標)の規格に対応する照明300Aに関する命令を、スマートフォン600に入力する。するとスマートフォン600は、当該命令を家電制御サーバ400に送信する。家電制御サーバ400は、ルータ800などを介して、当該命令をホームコントローラ500に送信する。ホームコントローラ500は、たとえば、WiFi(登録商標)通信などによって、ECHONET(登録商標)の規格に沿って、当該命令を照明300Aに送信する。
照明300Aはホームコントローラ500とWiFi(登録商標)などの双方向通信を行うため、照明300Aが当該命令を受け付けたことをホームコントローラ500は認識することができる。より詳細には、照明300Aは、当該命令を受け付けた旨をルータ800やホームコントローラ500に返したり、要求された情報をルータ800・ホームコントローラ500・家電制御サーバ400を介してスマートフォン600に提供したりする。なお、家電制御サーバ400は、ホームコントローラ500を介さずに照明300Aと情報をやり取りしてもよい。
次に、図2を参照して、たとえば、ユーザが、双方向通信不能な扇風機300Cに対する命令を、スマートフォン600に入力する。するとスマートフォン600は、当該命令を家電制御サーバ400に送信する。家電制御サーバ400は、ルータ800などを介して、当該命令をホームコントローラ500に送信する。ホームコントローラ500は、WiFi(登録商標)などの双方向通信によって扇風機300Cに命令を送信できないため、ロボット200に制御命令の伝達の仲介を要求する。
本実施の形態においては、ロボット200は、ホームコントローラ500からの指示に基づいて扇風機300Cに対する赤外線のリモコンコードを発信する。ロボット200は、ロボット200や扇風機300Cの周囲の状況を検知して、検知結果をルータ800やインターネットを介してリモコン補助サーバ100に送信する。リモコン補助サーバ100は、ロボット200や扇風機300Cの周囲の状況を示すデータに基づいて、扇風機300Cがリモコンコードを正常に受け付けたか否かを判断する。
より詳細には、リモコン補助サーバ100は、インターネットやルータ800を介して判断結果をロボット200に送信し、ロボット200は当該判断結果をホームコントローラ500・家電制御サーバ400を介してスマートフォン600に提供する。
このように、本実施の形態においては、双方向通信ができないエアコン300Bや扇風機300Cに関しても、スマートフォン600やホームコントローラ500が、ロボット200を介して命令を送信したり、そのフィードバックを取得したりすることが可能になる。以下、このような機能を実現するためのネットワークシステム1の具体的な構成について詳述する。
<リモコン補助サーバ100の構成>
まず、本実施の形態にかかるネットワークシステム1を構成するリモコン補助サーバ100の構成の一態様について説明する。図3を参照して、リモコン補助サーバ100は、主たる構成要素として、CPU(Central Processing Unit)110と、メモリ120と、操作部140と、通信インターフェイス160とを含む。
CPU110は、メモリ120に記憶されているプログラムを実行することによって、リモコン補助サーバ100の各部を制御する。たとえば、CPU110は、各種のデータを参照することによって後述する各種の処理を実行する。
メモリ120は、各種のRAM(Random Access Memory)、各種のROM(Read-Only Memory)などによって実現される。メモリ120は、CPU110によって実行されるプログラムや、CPU110によるプログラムの実行により生成されたデータ、入力されたデータなどを記憶する。
本実施の形態にかかるメモリ120は、図4に示すような機器情報テーブル121を記憶する。機器情報テーブル121は、たとえば機器毎に、機器IDと、機器の種類と、ユーザのIDと、ユーザ名と、住所と、アドレスと、リモコンによって制御される際のリモコンコード一式を特定するためのパターンIDなどを含む。機器情報テーブル121の機器には、操作される側の電気機器300も、操作する側のロボット200やホームコントローラ500なども含まれる。
メモリ120は、メーカ毎および電気機器300の種類毎のリモコンコード一式のデータを記憶する。なお、リモコンコードの各々は、たとえば図5に示すように、メーカを特定するためのコードやエラーをチェックするためのコードやリモコンコードを示すコードなどを含むものである。
メモリ120は、図6に示すような、標準命令テーブル122を記憶する。標準命令テーブル122は、典型的な電気機器300の種類毎に、典型的な制御命令を含む。なお、本実施の形態においては、典型的な電気機器300の種類毎に2ケタの識別情報である種類IDが対応付けられ、典型的な制御命令毎に3ケタ以上の識別情報である制御命令IDが対応付けられる。
メモリ120は、図7に示すような、リモコンコードパターンテーブル123を記憶する。リモコンコードパターンテーブル123は、メーカや電気機器300の種類毎に、リモコンコードパターンIDと、メーカIDと、メーカ名と、対象となる電気機器300の種類IDと、対象となる電気機器300の種類名と、複数の制御命令ID(図6の3ケタ以上の識別情報)と、当該複数の制御命令のそれぞれに対応する複数のリモコンコードとを含む。なお、制御命令とは、たとえば、リモコンのボタンの名前に相当する情報である。
メモリ120は、さらに、図8に示すような、確認テーブル124を記憶する。確認テーブル124は、制御項目と制御状態とに応じて、音声制御コマンドを示すテキストデータと、確認音声のテキストデータと、リモコンコードと、音声の種類などの動作状態の検知方法と、の対応関係を含む。
メモリ120は、さらに、図9に示すような、状態テーブル125を記憶する。状態テーブル125は、制御対象の電気機器300毎に、電気機器300の種類と、リモコンコードの発信手段と、電気機器300の動作状態の確認手段と、現在の電気機器300の動作状態との対応関係を含む。リモコン補助サーバ100は、仲介役のロボット200毎に、当該ロボット200の制御対象に関する状態テーブル125を記憶する。
なお、リモコン補助サーバ100は、ECHONET(登録商標)に対応していない電気機器300の動作状態のみ、すなわちロボット200が赤外線のリモコンコードを送信する役割を負っている電気機器300の動作状態のみを管理してもよいし、ロボット200のユーザが所有するWiFi(登録商標)通信などが可能な電気機器300の動作状態も管理するものであってもよい。
図3に戻って、操作部140は、サービスの管理者などの命令を受け付けて、当該命令をCPU110に入力する。
通信インターフェイス160は、CPU110からのデータを、インターネット、キャリア網、ルータなどを介してロボット200などの他の装置に送信する。逆に、通信インターフェイス160は、インターネット、キャリア網、ルータなどを介してロボット200などの他の装置からのデータを受信して、CPU110に受け渡す。
<リモコン補助サーバ100の情報処理>
次に、図10を参照して、本実施の形態にかかるリモコン補助サーバ100の情報処理について説明する。リモコン補助サーバ100のCPU110は、通信インターフェイス160を介して、ロボット200などの通信端末からデータを受信すると、以下の処理を実行する。
CPU110は、受信データから、ロボット200などの通信端末を特定するための機器IDを読み出す(ステップS101)。CPU110は、受信データから、通信端末が発信した制御命令と対象の電気機器300の種類などを特定する(ステップS102)。CPU110は、確認テーブル124を参照して当該制御命令が電気機器300に受け付けられたか否かを判断するための確認音声や検知方法を読み出して、通信インターフェイス160を介して通信端末に送信する(ステップS104)。
CPU110は、通信インターフェイス160を介して、通信端末からの回答データを待ち受ける(ステップS105)。より詳細には、CPU110は、通信端末からの回答データを受信していない場合(ステップS105にてNOである場合)、確認音声や検知方法を送信してから所定時間が経過したか否かを判断する(ステップS106)。CPU110は、所定時間が経過するまで(ステップS106にてNOである場合)、ステップS105からの処理を繰り返す。所定時間が経過すると(ステップS106にてYESである場合)、CPU110は、ステップS104からの処理を繰り返す。
通信端末からの回答データを受信すると(ステップS105にてYESである場合)、CPU110は、回答データに基づいて通信端末からの制御命令が電気機器300に受け付けられたか否かを判断する(ステップS107)。なお、CPU110は、制御命令が電気機器300に受け付けられた場合は、通信端末に対応する状態テーブル125の対象となっている電気機器300の動作状態を更新する。
CPU110は、通信インターフェイス160を介して、判断結果を通信端末に提供する(ステップS108)。CPU110は、通信インターフェイス160を介して、次の通信端末からのデータを待ち受ける。
なお、CPU110は、ステップS107において、制御命令が電気機器300に受け付けられなかったと判断した場合は、通信インターフェイス160を介して、再度おなじ制御命令を発信するようにロボット200に指示してもよい。そして、所定回数失敗した場合に、制御命令の送信を失敗した旨をホームコントローラ500や家電制御サーバ400に送信してもよい。より詳細には、リモコン補助サーバ100が、リモコンコードの再発信をロボット200に指示する形態であってもよいし、ロボット200側の判断でリモコンコードの再発信を実行するものであってもよい。
<ロボット200の構成>
次に、図11を参照して、ネットワークシステム1を構成するロボット200の構成の一態様について説明する。ロボット200は、主たる構成要素として、CPU210と、メモリ220と、ディスプレイ230と、操作部240と、カメラ250、通信インターフェイス260と、スピーカ270と、マイク280と、胴体の周囲の複数の赤外線発信部265A,265B・・・と、赤外線受光部290と、照度センサ281や温度センサ282や風量センサ283などの各種センサを含む。
CPU210は、メモリ220あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、ロボット200の各部を制御する。
メモリ220は、各種のRAMや、各種のROMなどによって実現される。メモリ220は、CPU210によって実行されるプログラムや、CPU210によるプログラムの実行により生成されたデータ、リモコン補助サーバ100や他のサーバから受信したデータ、操作部240を介して入力されたデータ、電気機器300のリモコンコードなどを記憶する。なお、メモリ220が複数種類の電気機器300のリモコンコード一式を長期間格納するものであってもよいし、ユーザからの制御命令が入力される度にCPU210がリモコン補助サーバ100から対応するリモコンコードを一時的に取得して赤外線発信部265A,265B・・・から発信するものであってもよい。
ディスプレイ230は、CPU210からの信号に基づいて、文字や画像などを出力する。ディスプレイ230は、単にライトであってもよい。
操作部240は、ボタン、タッチパネルなどによって実現され、ユーザからの命令を受け付けて、当該命令をCPU210に入力する。なお、ディスプレイ230と操作部240とは、タッチパネルを構成してもよい。
また、操作部240は、近接センサや温度センサなどであってもよい。この場合は、CPU210は、操作部240としての近接センサや温度センサを介して、ユーザがロボット200に手をかざしたことを検知して、各種の動作を開始する。たとえば、近接センサが額の近辺に配置されることによって、ユーザがロボット200をなでたり・たたいたりすることをロボット200が検知して、ユーザ操作として受け付けてもよい。
カメラ250は、画像を撮影して、画像データをCPU210に受け渡す。CPU210は、カメラ250からの画像データに基づいてユーザの動きを操作命令として特定してもよいし、画像データをリモコン補助サーバ100に提供してリモコン補助サーバ100がユーザの動きを操作命令として特定してもよい。
通信インターフェイス260は、無線LAN通信あるいは有線LANなどの通信モジュールによって実現される。通信インターフェイス260は、有線通信あるいは無線通信によってリモコン補助サーバ100などの他の装置との間でデータを送受信する。
スピーカ270は、CPU210からの信号に基づいて、音声を出力する。より詳細には、本実施の形態においては、CPU210は、通信インターフェイス260を介してリモコン補助サーバ100などの他の装置から受信した音声データに基づいてスピーカ270に音声メッセージを出力させる。なお、テキストから音声データに変換する処理は、ロボット200で行われてもよいし、リモコン補助サーバ100などの他の装置で行われてもよい。
マイク280は、外部からの音声に基づいて音声信号を作成し、CPU210に入力する。より詳細には、本実施の形態においては、CPU210は、マイク280から取得した音声データを、通信インターフェイス260を介してリモコン補助サーバ100に送信する。なお、音声データの解析処理は、ロボット200で行われてもよいし、リモコン補助サーバ100などの他の装置で行われてもよい。
赤外線発信部265A,265B・・・は、ロボット200の外周に配置されており、CPU210からの信号に応じて、ロボット200の周囲の各方向に赤外線信号を発信する。
赤外線受光部290は、リモコン200Xなどからの赤外線信号を受信して、当該信号をCPU210に入力する。なお、赤外線受光部290も赤外線発信部265A,265B・・・と同様に複数あることが好ましい。
照度センサ281や温度センサ282や風量センサ283などの各種センサは、ロボット200の周囲の環境に関する検知結果や測定結果をCPU210に受け渡す。
<電気機器300の構成>
次に、電気機器300の構成について説明する。まず、図12を参照して、双方向通信が可能な電気機器300の構成の一態様について説明する。電気機器300は、主たる構成要素として、CPU310と、メモリ320と、ディスプレイ330と、操作部340と、通信インターフェイス360と、スピーカ370と、赤外線受光部380と、機器駆動部390とを含む。
CPU310は、メモリ320あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、電気機器300の各部を制御する。
メモリ320は、各種のRAMや、各種のROMなどによって実現される。メモリ320は、CPU310によって実行されるプログラムや、CPU310によるプログラムの実行により生成されたデータ、リモコン補助サーバ100や他のサーバから受信したデータ、操作部340を介して入力されたデータなどを記憶する。
ディスプレイ330は、CPU310からの信号に基づいて、文字や画像などを出力する。ディスプレイ330は、単にライトであってもよい。
操作部340は、ボタン、タッチパネルなどによって実現され、ユーザからの命令を受け付けて、当該命令をCPU310に入力する。なお、ディスプレイ330と操作部340とは、タッチパネルを構成してもよい。
通信インターフェイス360は、無線LAN通信あるいは有線LANなどの通信モジュールによって実現される。通信インターフェイス360は、有線通信あるいは無線通信によってリモコン補助サーバ100などの他の装置との間でデータを送受信する。
スピーカ370は、CPU310からの信号に基づいて、BEEP音やメッセージなどの音声を出力する。
赤外線受光部380は、リモコンやロボット200などからの赤外線信号を受信して、当該信号をCPU310に入力する。
機器駆動部390は、CPU310からの信号に基づいて、電気機器300の各部(モータやヒータなど)を制御する。
なお、赤外線などのリモコンコードの受信のみが可能な電気機器300に関しては、図13に示すように、通信インターフェイスが搭載されていない点において図12の電気機器300と異なる。他の構成は図12の電気機器300と同様であるため、ここでは詳細な説明を繰り返さない。
<家電制御サーバ400の構成>
家電制御サーバ400に関しては、図14に示すように、図10に示したリモコン補助サーバ100と同様の構成を有するため、ここでは説明を繰り返さない。
<ホームコントローラ500の構成>
次に、図15を参照して、ネットワークシステム1を構成するホームコントローラ500の構成の一態様について説明する。ホームコントローラ500は、主たる構成要素として、CPU510と、メモリ520と、ディスプレイ530と、操作部540と、通信インターフェイス560と、スピーカ570と、マイク580とを含む。
CPU510は、メモリ520あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、ホームコントローラ500の各部を制御する。
メモリ520は、各種のRAMや、各種のROMなどによって実現される。メモリ520は、CPU510によって実行されるプログラムや、CPU510によるプログラムの実行により生成されたデータ、家電制御サーバ400や他のサーバから受信したデータ、操作部540を介して入力されたデータなどを記憶する。
ディスプレイ530は、CPU510からの信号に基づいて、文字や画像などを出力する。ディスプレイ530は、単にライトであってもよい。操作部540は、ボタン、タッチパネルなどによって実現され、ユーザからの命令を受け付けて、当該命令をCPU510に入力する。なお、ディスプレイ530と操作部540とは、タッチパネル550を構成してもよい。
通信インターフェイス560は、無線LAN通信あるいは有線LANなどの通信モジュールによって実現される。通信インターフェイス560は、有線通信あるいは無線通信によって家電制御サーバ400などの他の装置との間でデータを送受信する。
スピーカ570は、CPU510からの信号に基づいて、音声を出力する。マイク580は、外部からの音声に基づいて音声信号を作成し、CPU510に入力する。
<スマートフォン600の構成>
次に、図16を参照して、ネットワークシステム1を構成するスマートフォン600の構成の一態様について説明する。スマートフォン600は、主たる構成要素として、CPU610と、メモリ620と、ディスプレイ630と、操作部640と、通信インターフェイス660と、スピーカ670と、マイク680とを含む。
CPU610は、メモリ620あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、スマートフォン600の各部を制御する。
メモリ620は、各種のRAMや、各種のROMなどによって実現される。メモリ620は、CPU610によって実行されるプログラムや、CPU610によるプログラムの実行により生成されたデータ、家電制御サーバ400や他のサーバから受信したデータ、操作部640を介して入力されたデータなどを記憶する。
ディスプレイ630は、CPU610からの信号に基づいて、文字や画像などを出力する。ディスプレイ630は、単にライトであってもよい。操作部640は、ボタン、タッチパネルなどによって実現され、ユーザからの命令を受け付けて、当該命令をCPU610に入力する。なお、ディスプレイ630と操作部640とは、タッチパネル650を構成してもよい。
通信インターフェイス660は、無線LAN通信あるいは有線LANなどの通信モジュールによって実現される。通信インターフェイス660は、有線通信あるいは無線通信によって家電制御サーバ400などの他の装置との間でデータを送受信する。
スピーカ670は、CPU610からの信号に基づいて、音声を出力する。マイク680は、外部からの音声に基づいて音声信号を作成し、CPU610に入力する。
<ネットワークシステム1における情報処理>
以下では、図17から図24を参照しながら、本実施の形態にかかるネットワークシステム1における全体的な処理について説明する。まず、図17を参照して、ロボット200に電気機器300のリモコンコードを覚えさせるための処理について説明する。ロボット200は、ユーザからの「リモコン学習して」というリモコン学習開始の音声指示などに基づいて、電気機器300のリモコンコードの学習を開始する。
(1)ロボット200のCPU210は、赤外線受光部290を介してリモコン200Xのいずれかのボタンに対応するリモコンコードを取得する。
(2)CPU210は、通信インターフェイス260を介して、リモコンコードをリモコン補助サーバ100に送信して、電気機器300に対応するリモコンコード一式を要求する。
(3)リモコン補助サーバ100のCPU110は、通信インターフェイス160を介して、ロボット200から受信したリモコンコードに基づいて、当該リモコンコードを含むリモコンコード一式を検索して、リモコンコード一式をロボット200に提供する。本実施の形態においては、このとき、リモコン補助サーバ100は、ユーザとの対話シナリオ情報や、ECHONET機器オブジェクト情報や、電気機器300の動作状態の検知方法などもロボット200に提供する。動作状態の検知方法は、たとえば、電気機器300がリモコンコードを受け付けた際に出力するBEEP音の音声信号やユーザ音声などを含む。
(4)ロボット200のCPU210は、通信インターフェイス260を介してリモコン補助サーバ100から受信した各種の情報をメモリ220に格納する。
(5)CPU210は、スピーカ270に、「扇風機のリモコン信号を覚えたよ。」などの音声を出力させる。
ここで、より詳細に、リモコン補助サーバ100がロボット200にリモコンコード一式を提供するための処理の具体例について説明する。図18は、ロボット200がリモコンコード一式を取得するための処理を示すフローチャートである。
図18を参照して、リモコン補助サーバ100のCPU110は、ロボット200に制御対象の電気機器300の名前をユーザに聞くように指示する(ステップS111)。ロボット200のCPU210は、リモコン補助サーバ100からの指示に基づいてスピーカ270から、「リモコン学習ですね。学習したい家電はエアコン、テレビ、照明、その他の家電、のどれですか?」というメッセージを出力させる(ステップS112)。
リモコン補助サーバ100のCPU110は、エアコン、テレビ、照明以外の電気機器300のリモコン学習の場合(ステップS112にてNOである場合)、後述する「こだわり個別学習」モードを実行する(ステップS130)。なお、以下では、テレビのリモコンコード一式を取得したい場合について説明する。
リモコン補助サーバ100のCPU110は、エアコン、テレビ、照明のいずれかの電気機器300のリモコン学習の場合(ステップS112にてYESである場合)、通信インターフェイス160を介して、ロボット200にメーカ名を要求する。ロボット200のCPU210は、たとえば、スピーカ270から「テレビですね。メーカ名を教えて下さい。」というメッセージを出力させる。CPU210は、マイク280を介して受け付けた音声を、通信インターフェイス260を介してリモコン補助サーバ100に送信する(ステップS113)。
リモコン補助サーバ100のCPU110は、音声データから対象となっている電気機器300がA社製であることを認識する。CPU110は、通信インターフェイス160を介して、ロボット200にリモコンコードを要求する。ロボット200のCPU210は、スピーカ270から「A社のテレビですね。リモコンをこちらに向けて電源ボタンを押してください。」という音声メッセージを出力させる。CPU210は、リモコン200Xからのリモコンコードを赤外線受光部290で検知する(ステップS113)。
CPU110は、検知したリモコンコードを、通信インターフェイス260を介してリモコン補助サーバ100に送信する。リモコン補助サーバ100のCPU110は、受信したリモコンコードを含むリモコンコード一式を検索する(ステップS114)。
受信したリモコンコードを含むリモコンコード一式が見つかった場合(ステップS114にてYESである場合)、CPU110は、通信インターフェイス160を介してロボット200に「A社のテレビですね。テレビの前に私を置いて下さい。」という音声メッセージを出力させる。CPU110は、通信インターフェイス160を介してロボット200に、マッチしたリモコンコード一式をダウンロードする(ステップS115)。
CPU210は、赤外線発信部265A,265Bからリモコンコード一式のうちの電源ON/OFFのリモコンコードを発信する(ステップS116)。CPU210は、スピーカ270に「テレビはつきましたか、あるいはテレビは消えましたか。」という音声メッセージを出力させる(ステップS117)。
ユーザが「ついたよ。」とか「反応したよ。」というメッセージを発した場合(ステップS117にてYESである場合)、すなわちマイク280を介して肯定的なメッセージを受け付けた場合、CPU210は、その旨をリモコン補助サーバ100に送信する。リモコン補助サーバ100のCPU110は、今回選択されたリモコンコード一式のパターンIDをロボット200の機器IDや対象の電気機器300の種類とともに機器情報テーブル121に追加する。そして、CPU110は、今回の「簡単リモコン学習」モードを終了する(ステップS150)。なお、ロボット200のCPU210は、当該信号を含むリモコンコード一式の制御命令を覚えた旨をスピーカ270に出力させて、今回の「簡単リモコン学習」モードを終了する。
なお、ユーザが「反応しないよ」とか「つかない。」というメッセージを発した場合(ステップS117にてNOである場合)、すなわちマイク280を介して否定的なメッセージを受け付けた場合、CPU210は、その旨をリモコン補助サーバ100に送信する。リモコン補助サーバ100のCPU110は、別のリモコンコード一式に関して、ステップS115からの処理を繰り返す。
ステップS114において、CPU110は、受信したリモコンコードを含むリモコンコード一式が見つからなかった場合(ステップS114にてNOである場合)、CPU110は、「音声ガイダンス学習」モードを実行してもよい(ステップS120)。なお、ステップS117において、否定的なメッセージを所定回数以上受け付けた場合も、CPU110は、「音声ガイダンス学習」モードを実行してもよい。
なお、「音声ガイダンス学習」モード(ステップS120)は、標準的なリモコンのボタンに対応するリモコンコードをロボット200に向けて発信してもらうものである。より詳細には、リモコン補助サーバ100のメモリ120またはロボット200のメモリ220が、図19に示すようなガイダンス学習テーブル126を記憶する。そして、ロボット200に入力されたリモコンコードを制御命令に対応付けてガイダンス学習テーブル126に登録するものである。
より詳細には、ガイダンス学習テーブル126は、ガイダンス学習毎に、ガイダンス学習IDと、電気機器300を操作するロボット200やリモコンの機器IDと、操作される側の電気機器300の種類と、1または複数の予め準備された制御命令ID(図5の3ケタの識別情報)と、当該1または複数の制御命令に対応する複数のリモコンコードを含む。
また、「こだわり個別学習」モード(ステップS130)は、ユーザオリジナルの命令を音声入力してもらい、当該命令に対応するリモコンコードをロボット200に向けて発信してもらうものである。より詳細には、リモコン補助サーバ100のメモリ120またはロボット200のメモリ220が、図20に示すようなこだわり個別テーブル127を記憶する。そして、CPU110は、ロボット200に入力された制御命令と、ロボット200に入力されたリモコンコードとを対応付けてこだわり個別テーブル127に登録するものである。
より詳細には、こだわり個別テーブル127は、こだわり個別学習毎に、個別学習IDと、電気機器300を操作するロボット200やリモコンの機器IDと、操作される側の電気機器300の種類と、1または複数のユーザ指定のテキストの制御命令と、当該1または複数の制御命令毎のリモコンコードを含む。
次に、図21を参照して、ロボット200に電気機器300を制御させるための処理について説明する。(1)ロボット200のCPU210は、マイク280を介して、ユーザからの「扇風機の風を強くして」という音声指示などを受け付ける。
(2)ロボット200のCPU210は、スピーカ270から「わかった」という音声メッセージを出力する。なお、CPU210は、通信インターフェイス260を介して、ユーザの音声データをリモコン補助サーバ100に送信して、出力すべき音声データをリモコン補助サーバ100から受信してもよい。
(3)ロボット200のCPU210は、入力された音声指示に対応するリモコンコードを赤外線発信部265A,265B・・・から発信させる。なお、CPU210は、通信インターフェイス260を介して、ユーザの音声データをリモコン補助サーバ100に送信して、発信すべき制御信号をリモコン補助サーバ100から受信してもよい。つまり、リモコン補助サーバ100のCPU110が、確認テーブル124を参照して、入力されたユーザ音声に対応するリモコンコードを特定し、通信インターフェイス160を介して当該リモコンコードをロボット200に提供する。
(4)ロボット200のCPU210は、発信したリモコンコードのための確認用データを通信インターフェイス260を介してリモコン補助サーバ100に要求する。リモコン補助サーバ100のCPU110は、ロボット200からの要求に応じて、通信インターフェイス160を介して確認用データをロボット200に提供する。ただし、確認用データは、(3)においてロボット200が制御信号を発信する前に、CPU210が通信インターフェイス260を介してリモコン補助サーバ100から取得するものであってもよい。
(5)ロボット200のCPU210は、確認用データに基づいて、スピーカ270から「強くなった?」という音声メッセージを出力させる。
(6)ロボット200のCPU210は、マイク280を介して「なったよ。」という音声を取得して、通信インターフェイス260を介してユーザの音声のデータなどの確認用データをリモコン補助サーバ100に送信する。リモコン補助サーバ100のCPU110は、通信インターフェイス160を介してロボット200から確認用データに基づいて、対象となる電気機器300の動作状態を特定し、状態テーブル125に動作状態を格納する。
次に、図22を参照して、スマートフォン600から扇風機300Cに制御命令を送信するための処理について説明する。(1)スマートフォン600のCPU610が、タッチパネル650を介してユーザの指示を受け付ける。CPU610は、通信インターフェイス660を介して当該指示を家電制御サーバ400に送信し、家電制御サーバ400のCPU410は通信インターフェイス460を介して当該指示をホームコントローラ500に送信する。ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、ルータ800を介してロボット200にECHONET(登録商標)の規格に則った指示を送信する。
(2)ロボット200のCPU210は、通信インターフェイス260を介してホームコントローラ500から指示を受け付けて、当該指示に対応するリモコンコードを特定する。なお、CPU210は、通信インターフェイス260を介して、当該指示に対応するリモコンコードをリモコン補助サーバ100からダウンロードしてもよい。CPU210は、赤外線発信部265A,265B・・・から当該リモコンコードを発信する。
(3)扇風機300Cは、赤外線受光部290を介して赤外線のリモコンコードを受信して、リモコンコードに基づいて機器駆動部390を制御する。
(4)ロボット200のCPU210は、通信インターフェイス260を介して、リモコン補助サーバ100に制御命令に対応する確認用データを要求する。CPU210は、リモコン補助サーバ100からの取得した確認用データに基づいて、ロボット200の周囲の環境を検知することによって扇風機300Cの動作状態を確認する。
このように、本実施の形態においては、ホームコントローラ500が、あたかもECHONET(登録商標)の規格に則って双方向通信によって扇風機300Cに指示を送ったかのごとく、赤外線制御用の電気機器300を制御することができる。
次に、図23を参照して、スマートフォン600が扇風機300Cの動作状態を取得するための処理について説明する。(1)スマートフォン600のCPU610が、タッチパネル650を介してユーザの指示を受け付ける。CPU610は、通信インターフェイス660を介して宅内家電状態取得要求を家電制御サーバ400に送信し、家電制御サーバ400のCPU410は通信インターフェイス460を介して当該要求をホームコントローラ500に送信する。
(2)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、ルータ800を介してロボット200に扇風機300Cの動作状態を要求する。
本実施の形態においては、定期的に、ロボット200が扇風機300Cの動作状態を確認するためのデータをリモコン補助サーバ100に提供したり、リモコン補助サーバ100が扇風機300Cの動作状態を更新したりしている。そして、ロボット200のCPU210は、ホームコントローラ500からの要求に基づいて、通信インターフェイス260を介して、リモコン補助サーバ100に扇風機300Cの最新の動作状態を要求する。リモコン補助サーバ100のCPU110は、ロボット200からの要求に応じて、扇風機300Cの動作状態をロボット200に提供する。
(3)ロボット200のCPU210は、通信インターフェイス260を利用することによって、ルータ800を介してホームコントローラ500に扇風機300Cの動作状態を送信する。
(4)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、インターネットなどを介して家電制御サーバ400に扇風機300Cの動作状態を送信する。家電制御サーバ400のCPU410は通信インターフェイス460を介して動作状態をスマートフォン600に送信する。スマートフォン600のCPU610は、扇風機300Cの動作状態をタッチパネル650に表示させる。
<第2の実施の形態>
本実施の形態においては、図24に示すように、複数の電気機器300の動作状態を列挙して表示するものである。以下では、図25を参照して、スマートフォン600が宅内の複数の電気機器300の動作状態を取得するための処理について説明する。
(1)スマートフォン600のCPU610が、タッチパネル650を介してユーザの指示を受け付ける。CPU610は、通信インターフェイス660を介して宅内家電状態取得要求を家電制御サーバ400に送信し、家電制御サーバ400のCPU410は通信インターフェイス460を介して当該要求をホームコントローラ500に送信する。
(2)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、ルータ800を介してECHONET(登録商標)に対応する照明300Aに動作状態を要求する。そして、ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、ルータ800を介してロボット200にWiFi通信不能なエアコン300Bと扇風機300Cの動作状態を要求する。
本実施の形態においては、定期的に、ロボット200がエアコン300Bと扇風機300Cの動作状態を確認するためのデータをリモコン補助サーバ100に提供したり、リモコン補助サーバ100がエアコン300Bと扇風機300Cの動作状態を更新したりしている。そして、ロボット200のCPU210は、ホームコントローラ500からの要求に基づいて、通信インターフェイス260を介して、リモコン補助サーバ100にエアコン300Bと扇風機300Cの最新の動作状態を要求する。リモコン補助サーバ100のCPU110は、ロボット200からの要求に応じて、エアコン300Bと扇風機300Cの動作状態をロボット200に提供する。
(3)ロボット200のCPU210は、通信インターフェイス260を利用することによって、ルータ800を介してホームコントローラ500にエアコン300Bと扇風機300Cの動作状態を送信する。
(4)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、直接的に取得した照明300Aの動作状態と、ロボット200を介して取得したエアコン300Bと扇風機300Cの動作状態とを、インターネットなどを介して家電制御サーバ400に送信する。家電制御サーバ400のCPU410は通信インターフェイス460を介して複数の電気機器300の動作状態をスマートフォン600に送信する。スマートフォン600のCPU610は、たとえば、図24に示すように、複数の電気機器300の動作状態をタッチパネル650に表示させる。
なお、電気機器300の動作状態がリモコン補助サーバ100に蓄積されている場合は、ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって照明300Aの動作状態を直接的に取得し、エアコン300Bと扇風機300Cの動作状態をリモコン補助サーバ100から取得してもよい。
<第3の実施の形態>
なお、ロボット200による電気機器300の動作確認は双方向通信を利用する場合と比較して精度が低い可能性がある。そこで、本実施の形態においては、図26に示すように、スマートフォン600は、複数の電気機器300の動作状態を、当該情報が正しい可能性を示す情報(以下、確度ともいう。)と共に、列挙して表示するものである。
本実施の形態においては、リモコン補助サーバ100のメモリ120は、図27に示すような確認テーブル124Bを格納する。本実施の形態にかかる確認テーブル124Bは、確認方法に確度が対応付けられている。たとえば、ユーザに電気機器300の動作を確認する方法の確度は90%、電気機器300が発するBEEP音に基づいて電気機器300の動作を確認する方法の確度は70%、風量によって扇風機300Cの動作を確認する方法の確度は40%、その他にも、明るさによって照明の動作を確認する方法の確度は50%、温度によってエアコンの動作を確認する方法の確度は60%、などのように設定されている。
また、本実施の形態においては、リモコン補助サーバ100のメモリ120は、図28に示すような状態テーブル125Bを格納する。本実施の形態にかかる状態テーブル125Bは、機器毎および動作状態毎に、採用された確認方法に対応する確度が対応付けられている。
次に、図29を参照して、本実施の形態にかかるリモコン補助サーバ100の情報処理について説明する。CPU110は、通信インターフェイス160を介して、ロボット200などの通信端末からデータを受信すると、以下の処理を実行する。
CPU110は、受信データから、ロボット200などの通信端末を特定するための機器IDを読み出す(ステップS101)。CPU110は、受信データから、通信端末が発信した制御命令と対象の電気機器300の種類とを特定する(ステップS102)。CPU110は、確認テーブル124Bを参照して、確度が高い確認方法を選択する(ステップS103)。CPU110は、選択された確認用データを読み出して、通信インターフェイス160を介して通信端末に送信する(ステップS104B)。
CPU110は、通信インターフェイス160を介して、通信端末からの回答データを待ち受ける(ステップS105)。より詳細には、CPU110は、通信端末からの回答データを受信していない場合(ステップS105にてNOである場合)、確認用データを送信してから所定時間が経過したか否かを判断する(ステップS106)。CPU110は、所定時間が経過するまで(ステップS106にてNOである場合)、ステップS105からの処理を繰り返す。
所定時間が経過すると(ステップS106にてYESである場合)、CPU110は、ステップS103からの処理を繰り返す。なお、本実施の形態においてはステップS103において、CPU110は、確認テーブル124Bを参照して、次に確度が高い確認方法を選択する。
通信端末からの回答データを受信すると(ステップS105にてYESである場合)、CPU110は、回答データに基づいて命令が電気機器300に受け付けられたか否かを判断する(ステップS107)。なお、CPU110は、制御命令が電気機器300に受け付けられた場合は、通信端末に対応する状態テーブル125の対象となっている電気機器300の動作状態を更新する。
CPU110は、通信インターフェイス160を介して、判断結果を確認方法と確度とともに通信端末に提供する(ステップS108B)。CPU110は、通信インターフェイス160を介して、次の通信端末からのデータを待ち受ける。
なお、CPU110は、ステップS107において、制御命令が電気機器300に受け付けられなかったと判断した場合は、通信インターフェイス160を介して、再度おなじ制御命令を発信するようにロボット200に指示してもよい。そして、所定回数失敗した場合に、制御命令の送信を失敗した旨をホームコントローラ500や家電制御サーバ400に送信してもよい。より詳細には、リモコン補助サーバ100が、リモコンコードの再発信をロボット200に指示する形態であってもよいし、ロボット200側の判断でリモコンコードの再発信を実行するものであってもよい。
図25を参照して、スマートフォン600が宅内の複数の電気機器300の動作状態を取得するためのネットワークシステム1の全体的な処理について説明する。(1)スマートフォン600のCPU610が、タッチパネル650を介してユーザの指示を受け付ける。CPU610は、通信インターフェイス660を介して宅内家電状態取得要求を家電制御サーバ400に送信し、家電制御サーバ400のCPU410は通信インターフェイス460を介して当該要求をホームコントローラ500に送信する。
(2)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、ルータ800を介してECHONET(登録商標)に対応する照明300Aに動作状態を要求し、ルータ800を介してロボット200にWiFi通信不能なエアコン300Bと扇風機300Cの動作状態を要求する。
本実施の形態においては、定期的に、ロボット200がエアコン300Bと扇風機300Cの動作状態を確認するためのデータをリモコン補助サーバ100に提供したり、リモコン補助サーバ100がエアコン300Bと扇風機300Cの動作状態を更新したりしている。本実施の形態においては、リモコン補助サーバ100は、電気機器300毎に、確度が高い確認方法から順に確認処理を試みるように指示するものであって、確認結果としての動作状態に確度を対応付けて蓄積していくものである。そして、ロボット200のCPU210は、ホームコントローラ500からの要求に基づいて、通信インターフェイス260を介して、リモコン補助サーバ100にエアコン300Bと扇風機300Cの最新の動作状態を要求する。リモコン補助サーバ100のCPU110は、ロボット200からの要求に応じて、エアコン300Bと扇風機300Cの動作状態をロボット200に提供する。
(3)ロボット200のCPU210は、通信インターフェイス260を利用することによって、ルータ800を介してホームコントローラ500にエアコン300Bと扇風機300Cの動作状態を確度とともに送信する。
(4)ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって、直接的に取得した照明300Aの動作状態と確度と、ロボット200を介して取得したエアコン300Bと扇風機300Cの動作状態と確度とを、インターネットなどを介して家電制御サーバ400に送信する。家電制御サーバ400のCPU410は通信インターフェイス460を介して複数の電気機器300の動作状態と確度とをスマートフォン600に送信する。スマートフォン600のCPU610は、たとえば、図26に示すように、複数の電気機器300の動作状態を確度とともにタッチパネル650に表示させる。
なお、電気機器300の動作状態がリモコン補助サーバ100に蓄積されている場合は、ホームコントローラ500のCPU510は、通信インターフェイス560を利用することによって照明300Aの動作状態を直接的に取得し、エアコン300Bと扇風機300Cの動作状態をリモコン補助サーバ100から取得してもよい。
<第4の実施の形態>
さらに、複数の電気機器300の動作状態の確認方法や確度は、電気機器300の周囲の状態に応じて可変であることが好ましい。
本実施の形態においては、リモコン補助サーバ100のメモリ120は、第3の実施の形態のものに加えて、図30に示すような条件テーブル129を格納する。本実施の形態にかかる条件テーブル129は、確認テーブル124Bの確認方法や検知方法毎に、確認方法や検知方法を特定するためのIDと、当該確認方法や検知方法を優先するための採用条件と、判断方法と、の対応関係を含む。
本実施の形態においては、図29のステップS105において、リモコン補助サーバ100のCPU110は、確認テーブル124Bと条件テーブル129とを参照して、条件にマッチする確認方法のうちで、確度が高い確認方法を選択する。
なお、条件テーブル129の条件にマッチする確認方法や検知方法の確度を所定値上昇させるものであってもよい。この場合は、図29のステップS105において、リモコン補助サーバ100のCPU110は、条件テーブル129と確認テーブル124Bとを参照して、条件にマッチする確認方法の確度を所定値上昇させた状態で、確度が高い確認方法から順に選択していく。
さらに、確認方法や検知方法毎に、条件にマッチする場合に上昇させる確度の数値を異なるものに設定してもよい。この場合は、図29のステップS105において、リモコン補助サーバ100のCPU110は、条件テーブル129と確認テーブル124Bとを参照して、条件にマッチする確認方法の確度を確認方法毎に設定されている数値だけ上昇させた状態で、確度が高い確認方法から順に選択していく。
さらに、確認方法や検知方法による確度が条件や時間によって変更される場合には、定期的にあるいはユーザ命令に基づいて、スマートフォン600や家電制御サーバ400などからの指示に応じて、リモコン補助サーバ100やロボット200が、ロボット200からの制御信号が電気機器300に受け付けられたか否かの再確認や再検知を実行することが好ましい。なお、確度が変更された場合に、リモコン補助サーバ100やロボット200が、自動的に再確認や再検知を実行することが好ましい。しかしながら、逆に、確認方法や検知方法による確度が条件や時間によって変更されない形態においても、定期的にあるいはユーザ命令に基づいて、スマートフォン600や家電制御サーバ400などからの指示に応じて、リモコン補助サーバ100やロボット200が、ロボット200からの制御信号が電気機器300に受け付けられたか否かの再確認や再検知を実行してもよい。
<第5の実施の形態>
第1から第4の実施の形態のロボット200は、電気機器300のリモコンコードとして赤外線の制御信号を発信するものであったが、たとえば、他の電磁波や音波などを利用してもよい。リモコンからは制御信号を発信しやすいが、電気機器300からの回答を受け取り難いネットワークシステムに上記の技術は便利である。
また、図1のような顔や胴体などを有するロボット200には限られず、自走式の掃除機やスマートフォンなど、他の形状を有する通信端末であってもよい。
<第6の実施の形態>
さらに、第1から第5の実施の形態のような、リモコン補助サーバ100やロボット200や家電制御サーバ400やホームコントローラ500やスマートフォン600の構造・機能・動作に限られず、各装置の役割が、他のサーバや端末やデータベースなどの複数の装置に分担されてもよい。逆に、複数の装置の役割の一部または全部が1つの装置に集約されてもよい。
たとえば、複数の電気機器300の動作状態を格納する状態テーブル125が、ロボット200などの通信端末やホームコントローラ500や家電制御サーバ400に保持されてもよい。あるいは、リモコンコード一式が、家電制御サーバ400に保持されてもよいし、スマートフォン600のアプリケーションがロボット200に提供するものであってもよい。
具体的な一例として、図31に示すように、第1から第5の実施の形態にかかるリモコン補助サーバ100の役割をロボット200が有してもよい。この場合は、たとえば、ユーザが、WiFi(登録商標)通信不能な扇風機300Cに関する命令を、スマートフォン600に入力する。するとスマートフォン600は、当該命令を家電制御サーバ400に送信する。家電制御サーバ400は、ルータ800などを介して、当該命令をホームコントローラ500に送信する。ホームコントローラ500は、WiFi(登録商標)通信では扇風機300Cに命令を送信できないため、ロボット200に仲介を要求する。
本実施の形態においては、ロボット200は、扇風機300Cに対する赤外線のリモコンコードを発信する。ロボット200は、ロボット200や扇風機300Cの周囲の状況に基づいて、扇風機300Cがリモコンコードを正常に受け付けたか否かを判断する。ロボット200は、ルータ800やインターネットを介して、判断結果をホームコントローラ500・家電制御サーバ400を介してスマートフォン600に提供する。
<ロボット200の情報処理>
次に、図32を参照して、本実施の形態にかかるロボット200の情報処理について説明する。ロボット200のCPU210は、通信インターフェイス260を介して、ホームコントローラ500などからデータを受信すると、以下の処理を実行する。
CPU210は、受信データから、対象の電気機器300の種類と電気機器300への制御命令とを特定する(ステップS202)。CPU210は、確認テーブル124を参照して当該命令が電気機器300に受け付けられたか否かを判断するための確認データを読み出して、確認処理を実行する(ステップS204)。
CPU210は、各種センサ281,282,283・・・を介して、確認が成功するまで待ち受ける(ステップS205)。より詳細には、CPU210は、確認できるまで(ステップS205にてNOである場合)、所定時間が経過したか否かを判断する(ステップS206)。CPU210は、所定時間が経過するまで(ステップS206にてNOである場合)、ステップS205からの処理を繰り返す。所定時間が経過すると(ステップS206にてYESである場合)、CPU210は、ステップS204からの処理を繰り返す。
確認結果を取得すると(ステップS205にてYESである場合)、CPU210は、確認結果に基づいて命令が電気機器300に受け付けられたか否かを判断する(ステップS207)。なお、CPU210は、制御命令が電気機器300に受け付けられた場合は、状態テーブル125のうちの、現在対象となっている電気機器300の動作状態を更新する。
CPU210は、通信インターフェイス260を介して、判断結果をホームコントローラ500などに提供する(ステップS208)。CPU210は、通信インターフェイス260を介して、次の指示を待ち受ける。
なお、CPU210は、ステップS207において、制御命令が電気機器300に受け付けられなかった場合は、再度おなじ制御信号を発信してもよい。そして、所定回数失敗した場合に、制御命令の送信を失敗した旨をホームコントローラ500や家電制御サーバ400に送信してもよい。
<その他の応用例>
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体(あるいはメモリ)を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わる他の記憶媒体に書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。