IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネイバーラボス コーポレーションの特許一覧

特許7353341サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ
<>
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図1
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図2
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図3
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図4
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図5
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図6
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図7
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図8
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図9
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図10
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図11
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図12
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図13
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図14
  • 特許-サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-21
(45)【発行日】2023-09-29
(54)【発明の名称】サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ
(51)【国際特許分類】
   G05D 1/02 20200101AFI20230922BHJP
【FI】
G05D1/02 P
G05D1/02 H
【請求項の数】 18
(21)【出願番号】P 2021171001
(22)【出願日】2021-10-19
(65)【公開番号】P2022087019
(43)【公開日】2022-06-09
【審査請求日】2021-10-19
(31)【優先権主張番号】10-2020-0163830
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】319012978
【氏名又は名称】ネイバーラボス コーポレーション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パク ギョンシク
(72)【発明者】
【氏名】ユン ヨンファン
(72)【発明者】
【氏名】チャ スンイン
(72)【発明者】
【氏名】チェ ウヨン
【審査官】牧 初
(56)【参考文献】
【文献】特表2019-534516(JP,A)
【文献】特開2017-196691(JP,A)
【文献】特開2013-099800(JP,A)
【文献】特開2001-142534(JP,A)
【文献】特開平06-175722(JP,A)
【文献】特開2017-010518(JP,A)
【文献】中国特許出願公開第106378780(CN,A)
【文献】欧州特許出願公開第03636390(EP,A1)
【文献】国際公開第2020/164734(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00- 1/12
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法であって、
前記サービスアプリケーションから前記サービスを提供するための命令を受信する段階、
前記受信した命令を具体化して複数のサブ命令を生成する段階、および
前記ロボットに前記サブ命令の各サブ命令を送信する段階
を含み、
前記サービスアプリケーションからの前記命令は、前記サービスを提供するように前記ロボットを直接的に制御することのできない抽象化された命令であり、
前記各サブ命令は、前記ロボットを直接的に制御することができるように前記抽象化された命令が具体化された命令であり、
前記ロボットは、受信した前記各サブ命令に基づいて制御される、ロボット制御方法。
【請求項2】
前記サービスアプリケーションからの命令がバイパス対象命令であるかどうかを判定する段階
をさらに含み、
前記サブ命令を生成する段階は、前記サービスアプリケーションからの命令がバイパス対象命令ではない場合に実行される、請求項1に記載のロボット制御方法。
【請求項3】
前記サービスアプリケーションからの命令がバイパス対象命令であれば、前記サービスアプリケーションからの命令を前記ロボットに直に伝達する段階
をさらに含み、
前記ロボットは、前記伝達された命令に基づいて制御される、請求項2に記載のロボット制御方法。
【請求項4】
前記バイパス対象命令は、前記ロボットのUX(User Experience)と関連する構成を制御するための命令である、請求項3に記載のロボット制御方法。
【請求項5】
前記各サブ命令は、前記ロボットが実行可能な単位命令であり、
前記サブ命令を生成する段階は、前記受信した命令を複数の単位命令に分割することによって前記サブ命令を生成する、請求項1に記載のロボット制御方法。
【請求項6】
前記サービスアプリケーションからの命令は、目的地に前記ロボットを移動させるようにする命令であり、
前記サブ命令を生成する段階は、
前記ロボットの現在地から前記目的地まで前記ロボットが移動しなければならない複数のウェイポイントを決定する段階、および
前記ウェイポイントの各ウェイポイントに前記ロボットを移動させる命令を前記各サブ命令として前記ロボットに送信する段階
を含み、
前記ロボットは、前記ウェイポイントへの移動に対応する前記サブ命令にしたがって制御されることによって前記目的地に移動する、請求項5に記載のロボット制御方法。
【請求項7】
前記各サブ命令を送信する段階は、前記各サブ命令を順に送信するが、
前記サブ命令のうちの第1サブ命令を前記ロボットに送信する段階、
前記第1サブ命令による前記ロボットの制御が完了した後、前記ロボットから完了レポートを受信する段階、および
前記完了レポートを受信した後、前記サブ命令のうちの前記第1サブ命令の次に該当する第2サブ命令を前記ロボットに送信する段階
を含む、請求項1に記載のロボット制御方法。
【請求項8】
前記各サブ命令を送信する段階は、
前記ロボットの状態をモニタリングする段階、および
前記ロボットの状態に基づいて、前記サブ命令のうちで前記ロボットによる前記サービスの提供のために必要なサブ命令を前記ロボットに送信するか、予め送信されたサブ命令を取り消すための取消命令を前記ロボットに送信する段階
を含む、請求項1に記載のロボット制御方法。
【請求項9】
前記ロボットから前記ロボットに関連するデータを受信する段階、
前記ロボットからのデータが前記ロボットの第1状態を示すバイパス対象データを含んでいるかどうかを判定する段階、
前記ロボットからのデータに前記バイパス対象データが含まれている場合には、前記バイパス対象データを前記サービスアプリケーションに直に伝達する段階、および
前記ロボットからのデータのうち、前記バイパス対象データではないデータに基づいて抽象化されたデータを生成し、生成された前記抽象化されたデータを前記サービスアプリケーションに送信する段階
をさらに含み、
前記抽象化されたデータに基づいて、前記サービスアプリケーションでは、前記ロボットを制御するための命令が生成されるか、前記ロボットのモニタリング情報が生成され
前記バイパス対象データに基づいて、前記サービスアプリケーションでは前記ロボットの第1状態が識別される、請求項1に記載のロボット制御方法。
【請求項10】
前記抽象化されたデータを生成する段階は、
前記ロボットからのデータを分析して前記ロボットが第2状態を示すかどうかを判定する段階、および
前記判定の結果により、前記ロボットが第2状態を示すかどうかを示す情報を前記抽象化されたデータとして前記サービスアプリケーションに送信する段階
を含む、請求項に記載のロボット制御方法。
【請求項11】
前記サービスアプリケーションからの命令とは独立的に前記ロボットを制御するための独立命令を生成する段階、および
前記ロボットまたは他のロボットに前記独立命令を送信する段階
をさらに含み、
前記独立命令は、前記ロボットに充電を要求する命令、前記ロボットの特定の地点への移動の経路を更新する命令、または前記ロボットが前記サービスを提供することができなくなったときに、前記他のロボットに対して前記サービスを提供するように要請する命令を含む、請求項1に記載のロボット制御方法。
【請求項12】
前記サービスアプリケーションは、前記ロボットとはネットワークを介して区分されるサーバまたはクライアント上に実現され、
前記ロボットに送信される前記各サブ命令は、前記サービスと関連するコンテキスト情報を含まない、請求項1に記載のロボット制御方法。
【請求項13】
前記サービスアプリケーションが前記ロボットにプラグイン(plug-in)されることにより、前記ロボットは、前記サービスアプリケーションと連係して前記サービスを提供するように実現され、
前記サービスアプリケーションは複数であり、
前記クラウドサーバは、複数のサービスアプリケーションのうちの他のサービスアプリケーションが前記ロボットとプラグインされるようにすることにより、前記ロボットが前記他のサービスアプリケーションと連係して他のサービスを提供するように制御する、請求項12に記載のロボット制御方法。
【請求項14】
前記サービスアプリケーション、前記クラウドサーバ、および前記ロボットには、互いに異なる保安政策が設定される、請求項12に記載のロボット制御方法。
【請求項15】
クラウドサーバおよびサービスアプリケーションと連係してサービスを提供するロボットの制御方法であって、
前記クラウドサーバから、前記サービスアプリケーションから前記クラウドサーバに送信された前記サービスを提供するための命令が具体化されることによって生成された複数のサブ命令の各サブ命令を受信する段階、および
受信した前記各サブ命令に基づいて前記ロボットを制御する段階
を含み、
前記サービスアプリケーションは、前記ロボットとはネットワークを介して区分されるサーバまたはクライアント上に実現され、
前記サービスアプリケーションからの前記命令は、前記サービスを提供するように前記ロボットを直接的に制御することのできない抽象化された命令であり、
前記各サブ命令は、前記ロボットを直接的に制御することができるように前記抽象化された命令が具体化された命令であり、
前記ロボットに送信される前記各サブ命令は、前記サービスと関連するコンテキスト情報を含まない、ロボット制御方法。
【請求項16】
前記ロボットの制御と関連するデータを収集する段階、および
前記クラウドサーバに前記収集されたデータを送信する段階
をさらに含み、
前記クラウドサーバに送信されたデータは、前記クラウドサーバによって分析されることによって抽象化されたデータに加工され、前記サービスアプリケーションに送信され、
前記抽象化されたデータに基づいて、前記サービスアプリケーションでは、前記ロボットを制御するための命令が生成されるか、前記ロボットのモニタリング情報を示す情報が生成される、請求項15に記載のロボット制御方法。
【請求項17】
前記ロボットは、前記サービスアプリケーションがプラグイン(plug-in)されることにより、前記サービスアプリケーションと連係して前記サービスを提供するように実現され、
前記クラウドサーバにより、前記サービスアプリケーションではない他のサービスアプリケーションがプラグインされることにより、前記ロボットは、前記他のサービスアプリケーションと連係して他のサービスを提供するように制御される、請求項15に記載のロボット制御方法。
【請求項18】
サービスアプリケーションと連係してサービスを提供するロボットを制御するクラウドサーバであって、
コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサは、
前記サービスアプリケーションから前記サービスを提供するための命令を受信し、前記受信した命令を具体化して複数のサブ命令を生成し、前記ロボットに前記サブ命令の各サブ命令を送信し、
前記サービスアプリケーションからの前記命令は、前記サービスを提供するように前記ロボットを直接的に制御することのできない抽象化された命令であり、
前記各サブ命令は、前記ロボットを直接的に制御することができるように前記抽象化された命令が具体化された命令であり、
前記ロボットは、受信した前記各サブ命令に基づいて制御される、クラウドサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバに関する。
【背景技術】
【0002】
自律走行ロボットとは、ロボットが自ら周辺を探りながら障害物を感知し、タイヤや足を利用して目的地までの最適経路を探索するロボットであって、自律走行車はもちろん、物流、ホテルサービス、掃除サービスなどのような多様な分野のために開発されて活用されている。
【0003】
例えば、特許文献1は、自律移動ロボットのための経路計画方法に関する技術であって、自宅やオフィス内で自律的に移動する移動ロボットが、障害物を回避しながら安全かつ迅速に目標点まで移動するための最適経路を計画する方法について開示している。
【0004】
上述した情報は、本発明の理解を助けるためのものに過ぎず、従来技術の一部を形成しない内容を含むこともある。
【先行技術文献】
【特許文献】
【0005】
【文献】韓国公開特許第10-2005-0024840号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法であって、サービスアプリケーションから受信した抽象化された命令を具体化して複数のサブ命令を生成し、具体化されたサブ命令をロボットに送信することによってロボットが制御されるようにする、ロボット制御方法を提供する。
【0007】
ロボットから受信したデータを分析して抽象化されたデータを生成し、抽象化されたデータをサービスアプリケーションに送信し、該当の抽象化されたデータに基づいて、サービスアプリケーションで、ロボットを制御するための命令を生成したり、ロボットのモニタリング情報を生成したりすることができるようにする、ロボット制御方法を提供する。
【課題を解決するための手段】
【0008】
一側面において、クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法であって、前記サービスアプリケーションから前記サービスを提供するための命令を受信する段階、前記受信した命令を具体化して複数のサブ命令を生成する段階、および前記ロボットに前記サブ命令の各サブ命令を送信する段階を含み、前記ロボットは、受信した前記各サブ命令に基づいて制御される、ロボット制御方法を提供する。
【0009】
前記ロボット制御方法は、前記サービスアプリケーションからの命令がバイパス対象命令であるかどうかを判定する段階をさらに含み、前記サブ命令を生成する段階は、前記サービスアプリケーションからの命令がバイパス対象命令でない場合に実行されてよい。
【0010】
前記ロボット制御方法は、前記サービスアプリケーションからの命令がバイパス対象命令であれば、前記サービスアプリケーションからの命令を前記ロボットに直に伝達する段階をさらに含み、前記ロボットは、前記伝達された命令に基づいて制御されてよい。ここで「直に伝達」とは、「受信した命令を具体化して複数のサブ命令を生成する段階」を経ずに、受信した命令をそのまま伝達することを言う。
【0011】
前記バイパス対象命令は、前記ロボットのUX(User Experience)と関連する構成を制御するための命令であってよい。
【0012】
前記各サブ命令は、前記ロボットが実行可能な単位命令であり、前記サブ命令を生成する段階は、前記受信した命令を複数の単位命令に分割することによって前記サブ命令を生成してよい。
【0013】
前記サービスアプリケーションからの命令は、前記ロボットを目的地に移動させるようにする命令であり、前記サブ命令を生成する段階は、前記ロボットの現在地から前記目的地まで前記ロボットが移動しなければならない複数のウェイポイントを決定する段階、および前記ウェイポイントの各ウェイポイントに前記ロボットを移動させる命令を前記各サブ命令として前記ロボットに送信する段階を含み、前記ロボットは、前記ウェイポイントへの移動に対応する前記サブ命令にしたがって制御されることによって前記目的地に移動してよい。
【0014】
前記各サブ命令を送信する段階は、前記各サブ命令を順に送信するが、前記サブ命令のうちの第1サブ命令を前記ロボットに送信する段階、前記第1サブ命令による前記ロボットの制御が完了した後、前記ロボットから完了レポートを受信する段階、および前記完了レポートを受信した後、前記サブ命令のうちの前記第1サブ命令の次に該当する第2サブ命令を前記ロボットに送信する段階を含んでよい。
【0015】
前記各サブ命令を送信する段階は、前記ロボットの状態をモニタリングする段階、および前記ロボットの状態に基づいて、前記サブ命令のうちで前記ロボットによる前記サービスの提供のために必要なサブ命令を前記ロボットに送信するか、予め送信されたサブ命令を取り消すための取消命令を前記ロボットに送信する段階を含んでよい。
【0016】
前記ロボット制御方法は、前記ロボットから前記ロボットが収集したデータを受信する段階、前記データを分析して抽象化されたデータを生成する段階、および前記抽象化されたデータを前記サービスアプリケーションに送信する段階を含み、前記抽象化されたデータに基づいて、前記サービスアプリケーションでは、前記ロボットを制御するための命令が生成されるか、前記ロボットのモニタリング情報が生成されてよい。
【0017】
前記ロボット制御方法は、前記ロボットからのデータがバイパス対象データを含むかどうかを判定する段階、および前記ロボットからのデータのうちの前記バイパス対象データを前記サービスアプリケーションに直に伝達する段階をさらに含み、前記バイパス対象データは、前記ロボットの第1状態を示すデータを含んでよい。
【0018】
前記抽象化されたデータを生成する段階は、前記ロボットからのデータを分析して前記ロボットが第2状態を示すかどうかを判定する段階、および前記判定の結果により、前記ロボットが第2状態を示すかどうかに関する情報を前記抽象化されたデータとして前記サービスアプリケーションに送信する段階を含んでよい。
【0019】
前記ロボット制御方法は、前記サービスアプリケーションからの命令とは独立的に前記ロボットを制御するための独立命令を生成する段階、および前記ロボットまたは他のロボットに前記独立命令を送信する段階をさらに含み、前記独立命令は、前記ロボットに充電を要求する命令、前記ロボットの特定の地点への移動の経路を更新する命令、または前記ロボットが前記サービスを提供することができなくなったときに、前記他のロボットに前記サービスを提供するように要請する命令を含んでよい。
【0020】
前記サービスアプリケーションは、前記ロボットとはネットワークを介して区分されるサーバまたはクライアント上に実現され、前記サービスアプリケーションからの前記命令は、前記サービスを提供するように前記ロボットを直接的に制御することのできない抽象化された命令であり、前記各サブ命令は、前記ロボットを直接的に制御することができるように前記抽象化された命令が具体化された命令であり、前記ロボットに送信される前記各サブ命令は、前記サービスと関連するコンテキスト情報を含まなくてよい。
【0021】
前記サービスアプリケーションが前記ロボットにプラグイン(plug-in)されることにより、前記ロボットは、前記サービスアプリケーションと連係して前記サービスを提供するように実現され、前記サービスアプリケーションは複数であり、前記クラウドサーバは、複数のサービスアプリケーションのうちの他のサービスアプリケーションが前記ロボットとプラグインされるようにすることにより、前記ロボットが前記他のサービスアプリケーションと連係して他のサービスを提供するように制御してよい。
【0022】
前記サービスアプリケーション、前記クラウドサーバ、および前記ロボットには、互いに異なる保安政策が設定されてよい。
【0023】
他の一側面において、クラウドサーバおよびサービスアプリケーションと連係してサービスを提供するロボットの制御方法であって、前記クラウドサーバから、前記サービスアプリケーションから前記クラウドサーバに送信された前記サービスを提供するための命令が具体化されることによって生成された複数のサブ命令の各サブ命令を受信する段階、および受信した前記各サブ命令に基づいて前記ロボットを制御する段階を含み、前記サービスアプリケーションは、前記ロボットとはネットワークを介して区分されるサーバまたはクライアント上に実現され、前記サービスアプリケーションからの前記命令は、前記サービスを提供するように前記ロボットを直接的に制御することのできない抽象化された命令であり、前記各サブ命令は、前記ロボットを直接的に制御することができるように前記抽象化された命令が具体化された命令であり、前記ロボットに送信される前記各サブ命令は、前記サービスと関連するコンテキスト情報を含まない、ロボット制御方法を提供する。
【0024】
前記ロボット制御方法は、前記ロボットの制御と関連するデータを収集する段階、および前記収集されたデータを前記クラウドサーバに送信する段階をさらに含み、前記クラウドサーバに送信されたデータは、前記クラウドサーバで分析されることによって抽象化されたデータに加工され、前記サービスアプリケーションに送信され、前記抽象化されたデータに基づいて、前記サービスアプリケーションでは、前記ロボットを制御するための命令が生成されるか、前記ロボットのモニタリング情報を示す情報が生成されてよい。
【0025】
前記ロボットは、前記サービスアプリケーションがプラグイン(plug-in)されることにより、前記サービスアプリケーションと連係して前記サービスを提供するように実現され、前記クラウドサーバにより、前記サービスアプリケーションではない他のサービスアプリケーションがプラグインされることにより、前記ロボットは、前記他のサービスアプリケーションと連係して他のサービスを提供するように制御されてよい。
【0026】
他の一側面において、サービスアプリケーションと連係してサービスを提供するロボットを制御するクラウドサーバであって、コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、前記サービスアプリケーションから前記サービスを提供するための命令を受信し、前記受信した命令を具体化して複数のサブ命令を生成し、前記ロボットに前記サブ命令の各サブ命令を送信し、前記ロボットは、受信した前記各サブ命令に基づいて制御される、クラウドサーバを提供する。
【発明の効果】
【0027】
ロボットが提供するサービスと関連するサービスロジックを含むサービスアプリケーションをロボットから分離することができる。サービスアプリケーションは、ロボットとはネットワークを介して区分されるサーバまたはクライアント上に実現することができる。
【0028】
クラウドサーバが、サービスアプリケーションから受信される(ロボットを直接的に制御することのできない)抽象化された命令に基づいて、ロボットを直接的に制御するための単位命令に該当する具体化されたサブ命令を生成し、生成されたサブ命令にしたがってサービスを提供するようにロボットを制御することができる。
【0029】
ロボット側では、ロボットが提供するサービスに対するコンテキスト情報を把握する必要がなくなり、サービスアプリケーション側では、ロボットの詳細な機能の制御方法を把握する必要がなくなるため、サービスアプリケーションの開発の複雑性を低め、拡張性を容易に高めることができる。
【0030】
多様なアプリケーションをロボットにプラグインすることができるため、異なるサービスを提供するロボットに容易にスイッチングすることができる。
【図面の簡単な説明】
【0031】
図1】一実施形態における、クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法を示した図である。
図2】一実施形態における、サービスを提供するロボットを示したブロック図である。
図3】一実施形態における、ロボットを制御するクラウドサーバを示したブロック図である。
図4】一実施形態における、ロボットを制御するクラウドサーバを示したブロック図である。
図5】一実施形態における、サービスアプリケーションが搭載された装置を示したブロック図である。
図6】一実施形態における、クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法を示したフローチャートである。
図7】一例における、抽象化された命令に基づいて、抽象化された命令が具体化されたサブ命令を生成する方法を示したフローチャートである。
図8】一例における、抽象化された命令に基づいて、抽象化された命令が具体化されたサブ命令を生成する方法を示したフローチャートである。
図9】一例における、ロボットからのデータを処理し、該当のデータに基づいて抽象化されたデータを生成および処理する方法を示したフローチャートである。
図10】一例における、ロボットからのデータを処理し、該当のデータに基づいて抽象化されたデータを生成および処理する方法を示したフローチャートである。
図11】一例における、クラウドサーバ側でロボットに対して独立的に提供する独立命令を生成および処理する方法を示したフローチャートである。
図12】一例における、サービスアプリケーションからの抽象的な命令に基づいて具体化されたサブ命令を生成してロボットを制御する方法を示した図である。
図13】一例における、サービスアプリケーションからの抽象的な命令に基づいて具体化されたサブ命令を生成してロボットを制御する方法を示した図である。
図14】一例における、クラウドサーバ、ロボット、およびサービスアプリケーションのN:1:Kの関係を示した図である。
図15】一例における、データの流れの観点において、クラウドサーバ、ロボット、およびサービスアプリケーションの関係を示した図である。
【発明を実施するための形態】
【0032】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0033】
図1は、一実施形態における、クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法を示した図である。
【0034】
図1では、ロボット100を通じてサービスを提供する(または、ロボット100を制御する)にあたり、クラウドサーバ120が、サービスアプリケーション110からの命令(抽象化された命令)を受信し、受信した命令を具体化し、具体化した命令にしたがってロボット100を制御する方法について説明している。
【0035】
また、図1では、ロボット100が制御されることにより、クラウドサーバ120がロボット100からロボット100が収集したデータ(例えば、ロボット100の制御と関連するデータ)を受信してデータを抽象化し、抽象化されたデータをサービスアプリケーション110に送信する方法について説明している。
【0036】
クラウドサーバ120は、サービスアプリケーション110からの命令が、具体化が必要ないバイパス対象命令に該当するかどうかを判定してよく、命令がバイパス対象命令の場合は、該当の命令をロボット100に直に伝達(ルーティングまたはフォワーディング)してよい。
【0037】
また、クラウドサーバ120は、ロボット100からのデータが、抽象化が必要ないバイパス対象データを含むかどうかを判定してよく、バイパス対象データの場合は、該当のデータを直にサービスアプリケーション110に伝達(ルーティングまたはフォワーディング)してよい。
【0038】
一例として、図に示すように、サービスアプリケーション110からの命令が「ウィンクして挨拶」のように、ロボット100のUX(User Experience)と関連する装置105(例えば、ロボット100の目に対応するLED、またはその他のサウンド出力装置など)を制御するためのものである場合、クラウドサーバ120は、このような命令をバイパス対象命令に該当すると判断してよい。このとき、命令はロボット100に伝達されてよく、ロボット100は、装置105を通じて挨拶に該当する表情およびサウンド(「こんにちは」)を出力してよい。
【0039】
実施形態では、ロボット100が提供するサービスと関連するサービスロジックを含むサービスアプリケーションの部分が、ロボット100から分離されて実現されてよい。言い換えれば、実施形態は、特定のサービスを提供するためのロボット100を実現するためにサービスまたは該当のサービスと関連する機能を含むアプリケーションをロボット100内部に搭載しなければならなかった従来の技術に比べ、(サービスを運用および/または要請する側の)サービスアプリケーション110の複雑度を減らすことができ、ロボット100の拡張性を高めることができる。
【0040】
従来の技術の場合は、ロボット100が提供するサービスと関連するサービスロジックがサービスアプリケーションとしてロボット100に搭載され、このようなロボットに搭載されたサービスアプリケーションが(サービスを運用および/または要請する側の)サービスアプリケーション110と相互作用しながらサービスを提供していた。
【0041】
これに比べ、実施形態の場合は、ロボット100にはサービスロジックを含むサービスアプリケーションが搭載されないため、ロボット100側では、サービスと関連するコンテキスト情報を把握することができず、ロボット100は、クラウドサーバ120からロボット100の動きおよびロボット100が提供する機能を制御するための命令(すなわち、ロボット100が実行可能な単位命令)だけを受信して動作するようになる。
【0042】
一方、命令を下すサービスアプリケーション110側では、(ロボットを直接的に制御するための具体化された命令ではない)抽象化された命令をクラウドサーバ120に送信してよく、クラウドサーバ120側では、このような抽象化された命令に基づいて、ロボット100を直接的に制御するための具体化された命令を生成してよい。したがって、サービスアプリケーション110の開発者は、ロボット100の詳細的な機能の制御方法を把握する必要がなくなり、ロボット100を通じてサービスを提供するための(すなわち、抽象化された命令だけでロボット100を制御することのできる)アプリケーションを開発することができるようになる。
【0043】
サービスアプリケーション110は、ロボット100とネットワークを介して区分されるサーバまたはクライアント上に実現されてよい。また、サービスアプリケーション110は、実施形態によっては、ロボット100に結合されるか、ロボット100に含まれる装置内で実現されてもよい。このような実施形態の場合にも、サービスアプリケーション110とロボット100は、ネットワークを介して区分されてよい。
【0044】
ロボット100、サービスアプリケーション110、およびクラウドサーバ120の具体的な動作と、ロボット100の詳しい制御方法については、図2~15を参照しながらさらに詳しく説明する。
【0045】
図2は、一実施形態における、サービスを提供するロボットを示したブロック図である。
【0046】
図2では、クラウドサーバ120により、サービスアプリケーション110と連係してサービスを提供するロボット100を示している。ロボット100は、例えば、建物の室内などのような空間内でクラウドサーバ120による制御にしたがってサービスを提供するサービスロボットであってよい。空間が室内の空間に限定されてはならず、室外の空間を示してもよい。言い換えれば、空間は、範囲が特定されている室内または室外の空間や、室内と室外の両方が含まれた空間であってよい。
【0047】
空間は、例えば、ロボット100によって品物の配達が実行される建物(会社など)、飲食物の配達が実行されるカフェ、案内サービスが提供される室内/室外空間などであってよい。
【0048】
ロボット100は、空間を走行することにより、空間内の利用者にサービスを提供してよい。ロボット100は、サービスアプリケーション110からの命令(抽象化された命令)に基づいてサービスを提供してよい。サービスアプリケーション110からの命令は、クラウドサーバ120で具体化されてロボット100に伝達されてよく、ロボット100は、このような具体化された命令に基づいて制御されてよい。
【0049】
ロボット100は、サービスを提供するために必要となる具体的な演算を実行せず、これを実行するためのセンシングデータはもちろん、ロボットの制御と関連するデータ(または、ロボット100が収集したデータ)をクラウドサーバ120に提供するだけであるという点において、ブレインレスロボットに該当してよい。
【0050】
ロボット100が提供するサービスは、空間内で、飲食物、工産品のような商品、または宅配を配達する配達サービスを含んでよい。すなわち、ロボット100は、配達サービスロボットまたはサービングサービスロボットであってよい。また、ロボット100が提供するサービスは、利用者を空間内の特定の位置に案内する道案内サービスを含んでよい。さらに、ロボット100が提供するサービスは、警備サービス、イベント/ニュースなどの情報提供サービス、および空間内に位置する植物を管理するサービスを含んでよい。
【0051】
ロボット100は、物理的な装置であってよく、図に示すように、制御部104、駆動部108、センサ部106、および通信部102を含んでよい。また、ロボット100は、サービス提供のための品物などを載せるための搭載部をさらに含んでもよい。
【0052】
制御部104は、ロボット100に内蔵された物理的なプロセッサであってよく、経路計画処理モジュール211、マッピング処理モジュール212、駆動制御モジュール213、ローカリゼーション処理モジュール214、データ処理モジュール215、および命令処理モジュール216を含んでよい。このとき、経路計画処理モジュール211、マッピング処理モジュール212、およびローカリゼーション処理モジュール214は、クラウドサーバ120との通信がなされない場合にもロボット100の自律走行が実行されるようにするために、実施形態によっては、選択的に、制御部104に含まれるものであってもよい。
【0053】
通信部102は、ロボット100が他の装置(他のロボットまたはクラウドサーバ120など)と通信するための構成であってよい。言い換えれば、通信部102は、他の装置に対してデータおよび/または情報を送信/受信する、ロボット100のアンテナ、データバス、ネットワークインタフェースカード、ネットワークインタフェースチップ、およびネットワーキングインタフェースポートなどのようなハードウェアモジュール、またはネットワークデバイスドライバ(driver)またはネットワーキングプログラムのようなソフトウェアモジュールであってよい。
【0054】
駆動部108は、ロボット100の移動を制御して移動を可能にする構成であって、これを実行するための装備を含んでよい。例えば、駆動部108は、タイヤを含んでよい。駆動部108は、命令処理モジュール216によって処理された命令にしたがってロボット100の動きおよび/または機能を制御してよい。
【0055】
センサ部106は、ロボット100の自律走行およびサービス提供のために必要なデータを収集するための構成であってよい。センサ部106は、高価なセンシング装備(スキャン装備)を含まなくてよく、低価型の超音波センサおよび/または低価型のカメラなどのようなセンサを含んでよい。センサ部106は、走行方向に位置する障害物/人物を識別するためのセンサを含んでもよい。
【0056】
また、センサ部106は、図には示されていないが、カメラを含んでよい。カメラは、ロボット100の周りに位置する利用者または障害物を認識することができるように配置されてよい。カメラは、RGBカメラまたは単眼カメラであってよい。または、カメラは、デプス(depth)カメラを含んでもよい。
【0057】
制御部104の処理例として、制御部104のデータ処理モジュール215は、センサ部106からのセンシング値(例えば、センサからの出力値)を含むセンシングデータを、通信部102を経てクラウドサーバ120に送信してよい。クラウドサーバ120は、空間内の(室内)地図に基づいて生成された経路データをロボット100に送信してよい。前記経路データは、ロボット100がサービスを提供するための経路を示すデータであってよい。経路データは、通信部102からデータ処理モジュール215に伝達されてよい。データ処理モジュール215は、経路データを駆動制御モジュール213に直接伝達してよく、駆動制御モジュール213は、経路データにしたがって駆動部108を制御してロボット100の自律走行を制御してよい。
【0058】
ロボット100とクラウドサーバ120が通信できなくなった場合、データ処理モジュール215は、センシングデータをローカリゼーション処理モジュール214に送信し、経路計画処理モジュール211とマッピング処理モジュール212で経路データを生成してロボット100の自律走行を直接処理してもよい。例えば、制御部104は、経路計画処理モジュール211とマッピング処理モジュール212によって地図からサービスを提供する位置を識別してよく、識別された位置でサービスを提供するための経路を示すデータとしての経路データを生成してよく、このような経路データによる経路を走行するようにロボット100の自律走行を制御してよい。
【0059】
ロボット100は、クラウド上に格納された地図に基づいてサービスを提供するための位置に自律走行で移動してよく、走行時に障害物の回避、敷居越え、エレベータの乗下車、非常停止などを実行するように制御されてよい。
【0060】
一方、ロボット100は、空間内の地図を生成するために利用されるマッピングロボットとは区分されるものであってよい。このとき、ロボット100は、高価なセンシング装備(スキャン装備)を含まないため、低価型の超音波センサおよび/または低価型のカメラなどのようなセンサの出力値を利用して自律走行を処理してよい。ロボット100が以前にクラウドサーバ120との通信によって自律走行を処理した経験があれば、クラウドサーバ120から以前に受信した経路データが含むマッピングデータなどをさらに活用することにより、低価のセンサを利用しながらでも正確な自律走行を可能にすることができる。実施形態によっては、ロボット100は、前記マッピングロボットと兼用されてもよい。
【0061】
実施形態において、ロボット100には、ロボット100が提供するサービスと関連するサービスロジックを含むサービスアプリケーションが搭載されなくてもよい。したがって、ロボット100は、サービスアプリケーション110からのサービスの提供のための抽象化された命令によっては直接的に制御されず、クラウドサーバ120によって該当の命令が具体化されることによって生成された単位命令(サブ命令)に基づいて制御されてよい。クラウドサーバ120からロボット100に送信されるサブ命令は、サービスと関連するコンテキスト情報を含まなくてもよい。例えば、サブ命令は、サービスの種類を示す情報やサービスの識別子などのように、サービスと関連する情報を含まなくてもよい。したがって、ロボット100の制御は、サービスのコンテキストに依存しなくてもよくなる。
【0062】
命令処理モジュール216は、クラウドサーバ120から受信した命令(すなわち、具体化された命令)を、通信部102を経て、または通信部102とデータ処理モジュール215を経て受信してよい。制御部104は、受信した命令に基づいてロボット100を制御してよい。ロボット100は、クラウドサーバ120から受信した具体化された命令にしたがって制御されることによって利用者にサービスを提供してよい。
【0063】
一方、駆動部108は、ロボット100の移動のための装備だけでなく、ロボット100が提供するサービスと関連する装備をさらに含んでよい。例えば、駆動部108は、上述したような搭載部と、サービスと関連する品物を搭載したり移動させたりするための構成(一例として、ロボットアーム(arm))を含んでよい。クラウドサーバ120から受信した具体化された命令にしたがい、サービス提供のために駆動部108が制御されてもよい。
【0064】
また、ロボット100は、情報/コンテンツを提供するためのスピーカおよび/またはディスプレイ、またはLEDなどをさらに含んでよい。これらの装置は、図1を参照しながら説明したUXと関連する装置105を構成してよい。命令処理モジュール216は、クラウドサーバ120から受信した命令にしたがってUXと関連する装置105が制御されるようにロボット100を制御してよい。
【0065】
実施形態では、サービスアプリケーション110にはロボット100のUIおよびサービスシナリオを制御するロジックが搭載され、ロボット100にはロボット100の動作に必要となる最小限のロジック(例えば、安全関連ロジック)だけが搭載されてよい。サービスアプリケーション110からの抽象化された命令(例えば、移動命令)にしたがい、クラウドサーバ120は、命令に該当する詳細移動計画を決定してよく、ロボット100を制御してよい。ロボット100は、このような決定された移動計画にしたがって走行してよい。
【0066】
クラウドサーバ120から命令を受信し、受信した命令にしたがってロボット100が制御される具体的な方法については、図3~15を参照しながらさらに詳しく説明する。
【0067】
以上、図1を参照しながら説明した技術的特徴は、図2に対してもそのまま適用可能であるため、重複する説明は省略する。
【0068】
図3および図4は、一実施形態における、ロボットを制御するクラウドサーバを示したブロック図である。
【0069】
クラウドサーバ120は、上述したロボット100の空間内での移動(すなわち、走行)、およびロボット100によって提供される機能を制御する装置であってよい。クラウドサーバ120は、ロボット100が複数の場合、複数のロボットそれぞれの移動およびロボットそれぞれの機能を制御してよい。クラウドサーバ120は、ロボット100との通信により、ロボット100がサービスを提供するために移動しなければならない経路を設定してよく、このような経路に関する情報をロボット100に伝達してよい。ロボット100は、受信した経路に関する情報にしたがって走行してよく、利用者にサービスを提供してよい。すなわち、クラウドサーバ120は、設定された経路に沿ってロボットが移動(走行)するようにロボット100の移動を制御してよい。
【0070】
クラウドサーバ120は、ロボット制御システムやその一部を構成してよい。クラウドサーバ120は、少なくとも1つのコンピュータ装置を含んでよく、空間内部または空間外部に位置するサーバで実現されてよい。
【0071】
クラウドサーバ120は、図に示すように、メモリ330、プロセッサ320、通信部310、および入力/出力インタフェース340を含んでよい。
【0072】
メモリ330は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置(permanent mass storage device)を含んでよい。ここで、ROMと永続的大容量記録装置は、メモリ330とは区分される別の永続的記録装置として含まれてもよい。また、メモリ330には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ330とは別のコンピュータ読み取り可能な記録媒体からロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信部310を通じてメモリ330にロードされてもよい。
【0073】
プロセッサ320は、基本的な算術、ロジック、および入力/出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ330または通信部310によって、プロセッサ320に提供されてよい。例えば、プロセッサ320は、メモリ330にロードされたプログラムコードにしたがって受信される命令を実行するように構成されてよい。このようなプロセッサ320は、図4に示すような構成410~440を含んでよい。
【0074】
プロセッサ320の構成410~440それぞれは、プロセッサ320の一部であって、ソフトウェアおよび/またはハードウェアモジュールであってよく、プロセッサによって実現される機能(機能ブロック)を示してよい。プロセッサ320の構成410~440については、図4を参照しながら説明する。
【0075】
通信部310は、クラウドサーバ120が他の装置(ロボット100またはサービスアプリケーション110が搭載された装置など)と通信するための構成であってよい。言い換えれば、通信部310は、他の装置においてデータおよび/または情報を送信/受信する、クラウドサーバ120のアンテナ、データバス、ネットワークインタフェースカード、ネットワークインタフェースチップ、およびネットワーキングインタフェースポートなどのようなハードウェアモジュール、またはネットワークデバイスドライバ(driver)またはネットワーキングプログラムのようなソフトウェアモジュールであってよい。
【0076】
入力/出力インタフェース340は、キーボードまたはマウスなどのような入力装置、およびディスプレイやスピーカのような出力装置とのインタフェースのための手段であってよい。
【0077】
実施形態によっては、クラウドサーバ120は、図に示した構成要素よりも多くの構成要素を含んでもよい。
【0078】
実施形態において、クラウドサーバ120は、サービスアプリケーション110からロボット100によるサービス提供のための命令(抽象化された命令)を受信してよく、受信した命令を処理して(すなわち、具体化して)ロボット100を制御するためのサブ命令(すなわち、具体化された命令)を生成してよい。
【0079】
図4を参照しながら、上述したプロセッサ320の構成410~440についてさらに詳しく説明する。プロセッサ320は、図に示すように、マップ生成モジュール410、ローカリゼーション処理モジュール420、経路計画処理モジュール430、および命令処理モジュール440を含んでよい。このようなプロセッサ320が含む構成要素は、オペレーティングシステムのコードと、少なくとも1つのコンピュータプログラムのコードとによる制御命令(instruction)にしたがってプロセッサ320が含む少なくとも1つのプロセッサが実行する互いに異なる機能(different functions)の表現であってよい。
【0080】
マップ生成モジュール410は、建物内部で自律走行する(図示せず)マッピングロボットが、目標施設物(例えば、建物の内部)に対して生成したセンシングデータを利用して目標施設物の室内地図を生成するための構成要素であってよい。
【0081】
このとき、ローカリゼーション処理モジュール420は、ロボット100からネットワークを介して受信したセンシングデータと、マップ生成モジュール410で生成された目標施設物の室内地図を利用しながら、目標施設物(建物または建物の階)内部におけるロボット100の位置を決定してよい。
【0082】
経路計画処理モジュール430は、上述したロボット100から受信したセンシングデータと生成された室内地図を利用しながら、ロボット100の自律走行を制御するための制御信号を生成してよい。例えば、経路計画処理モジュール430は、ロボット100の走行のための経路(すなわち、経路データ)を生成してよい。生成された経路(経路データ)は、該当の経路に沿ったロボット100の走行のためにロボット100に設定されてよい。クラウドサーバ120は、生成された経路に関する情報を、ネットワークを介してロボット100に送信してよい。一例として、経路に関する情報は、ロボット100の現在地を示す情報、現在地と室内地図をマッピングするための情報、または経路計画情報を含んでよい。経路計画処理モジュール430は、ロボット100のための経路を生成してロボット100に設定してよい。クラウドサーバ120は、このような設定された経路に沿って(すなわち、設定された経路に沿って)ロボット100が移動するようにロボット100の移動を制御してよい。
【0083】
生成された経路は、空間内でロボット100がサービスを提供するために走行する経路であってよい。経路計画処理モジュール430は、地図から空間内でサービスを提供する位置を識別してよく、該当の位置でサービスが提供されるようにする経路を生成してよい。
【0084】
命令処理モジュール440は、サービスアプリケーション110からロボット100によるサービス提供のための命令(抽象化された命令)を受信してよく、受信した命令を処理して(すなわち、具体化して)ロボット100を制御するためのサブ命令(すなわち、具体化された命令)を生成してよい。また、命令処理モジュール440は、生成されたサブ命令をロボット100に送信し、サブ命令に基づいてロボット100を制御してよい。
【0085】
実施形態では、ロボット100にはロボット100が提供するサービスと関連するサービスロジックを含むサービスアプリケーションが搭載されず、ロボット100は、サービスアプリケーション110からのサービスの提供のための抽象化された命令によっては直接的に制御されなくてもよい。
【0086】
ロボット100の動きおよび機能は、クラウドサーバ120から提供される具体化された命令によってのみ制御されてよい。命令処理モジュール440は、サービスアプリケーション110から受信した抽象化された命令をロボットが実行可能な単位命令に具体化することによって該当の単位命令に対応するサブ命令を生成してよく、このようなサブ命令のそれぞれをロボット100に送信することにより、ロボット100を制御してよい。
【0087】
また、命令処理モジュール440は、サービスアプリケーション110から受信した命令のタイプにより、命令をロボット100に直に伝達してもよいし、該当の命令を具体化した後、具体化されたサブ命令をロボット100に送信してもよい。
【0088】
実施形態では、ロボット100がサービスアプリケーションに対応するサービスロジックの部分を搭載しないことにより、サービスアプリケーション110の開発者は、ロボット100の詳細的な機能の制御方法を把握する必要なく、ロボット100を通じてサービスを提供するためのアプリケーションを開発することができる。また、ロボット100には、異なるサービスを提供する多様なサービスアプリケーションを容易にプラグインすることができる。
【0089】
また、命令処理モジュール440は、ロボット100からロボット100が収集したデータ(例えば、ロボット100の制御と関連するデータ)を受信してよい。命令処理モジュール440は、受信したデータのタイプにより、データをサービスアプリケーション110に伝達してもよいし、該当のデータを抽象化した後、抽象化したデータをサービスアプリケーション110に送信してもよい。
【0090】
ロボット100、サービスアプリケーション110、およびクラウドサーバ120のより具体的な動作とロボット100の制御方法については、図5~15を参照しながらさらに詳しく説明する。
【0091】
以上、図1および図2を参照しながら説明した技術的特徴は、図3および図4に対してもそのまま適用可能であるため、重複する説明は省略する。
【0092】
図5は、一実施形態における、サービスアプリケーションが搭載された装置を示したブロック図である。
【0093】
上述したように、サービスアプリケーション110は、ロボット100とはネットワークを介して区分されるサーバまたはクライアント上に実現されてよい。装置500は、このようなサーバまたはクライアントに対応してよい。実施形態によっては、このような装置500は、ロボット100に結合されてもよいし、ロボット100に含まれる装置内で実現されてもよい。また、装置500は、クラウドサーバ120に結合されてもよいし、クラウドサーバ120に含まれる装置内で実現されてもよい。このような実施形態の場合にも、サービスアプリケーション110とロボット100は、ネットワークを介して区分されてよい。
【0094】
装置500は、PC(personal computer)、ノート型PC(laptop computer)、スマートフォン(smart phone)、タブレット(tablet)、ウェアラブルコンピュータ(wearable computer)、モノのインターネット(Internet Of Things)機器などを含む、あらゆる端末装置または電子装置を意味してよい。装置500は、ロボット100によって提供されるサービスを運用および/または要請する利用者が使用する端末であってよい。
【0095】
装置500に搭載されたサービスアプリケーション110により、利用者は、ロボット100にサービスを提供するように命令してよい。このような命令は、クラウドサーバ120からロボット100に伝達されてもよいし、クラウドサーバ120による処理によって具体化された後にロボット100に送信されてもよい。
【0096】
また、装置500は、搭載されたサービスアプリケーション110により、ロボット100からのデータを受信してよい。データは、クラウドサーバ120からサービスアプリケーション110に伝達されてもよいし、クラウドサーバ120による処理によって抽象化された後にサービスアプリケーション110に送信されてもよい。
【0097】
装置500は、図に示すように、通信部510およびプロセッサ520を含んでよい。通信部510は、装置500がクラウドサーバ120(あるいは、ロボット100)と通信するための装置であってよい。言い換えれば、通信部510は、このような他の装置においてデータおよび/または情報を送信/受信する、ネットワークインタフェースカード、ネットワークインタフェースチップ、およびネットワーキングインタフェースポートなどのようなハードウェアモジュール、またはネットワークデバイスドライバ(driver)またはネットワーキングプログラムのようなソフトウェアモジュールであってよい。
【0098】
プロセッサ520は、装置500の構成要素を管理してよく、ユーザ端末110が使用するプログラムまたはアプリケーションを実行してよい。例えば、プロセッサ520は、ロボット100によるサービスの提供のための命令を生成および送信するためのサービスアプリケーション110をインストールして実行してよく、サービスアプリケーション110の実行とデータの処理などに必要な演算を実行してよい。プロセッサ520は、少なくとも1つのプロセッサまたはプロセッサ内の少なくとも1つのコア(core)であってよい。
【0099】
装置500は、図には示していないが、メモリを含んでよい。メモリは、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置(permanent mass storage device)を含んでよい。ここで、ROMと永続的大容量記録装置は、メモリとは区分される別の永続的記録装置として含まれてもよい。また、メモリには、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリとは別のコンピュータ読み取り可能な記録媒体からロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信部510を通じてメモリにロードされてもよい。
【0100】
プロセッサ520は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリまたは通信部510によって、プロセッサ520に提供されてよい。例えば、プロセッサ520は、メモリにロードされたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0101】
装置500がサービスを運用および/または要請する利用者の端末の場合、装置500は、ディスプレイを含んでよい。ディスプレイは、ロボット100の制御状態、ロボット100の管理のための情報、およびロボット100によるサービス提供の状態を含む、ロボット100のモニタリング情報を表示してよい。ディスプレイは、タッチスクリーンを含んでよい。
【0102】
実施形態では、サービス提供のための抽象化された命令を生成する主体であるサービスアプリケーション110と、該当の命令を具体化してロボット100に送信する主体であるクラウドサーバ120とが分離される。
【0103】
したがって、サービスアプリケーション110に該当するレイヤと、クラウドサーバ120に該当するレイヤ、およびロボット100に該当するレイヤは、互いに区分されてよい。これにより、サービスアプリケーション110、クラウドサーバ120、およびロボット100には、保安政策が互いに(または、これらのうちの少なくとも2つの保安政策が)異なるように設定されてよく、相対的に頻繁にアップデートが必要となるレイヤだけを分離して管理してよい。
【0104】
また、実施形態では、サービスアプリケーション110に該当するレイヤだけをアップデートすることにより、ロボット100がアップデートされたサービスを提供するように実現されてよい。
【0105】
また、異なるサービスアプリケーションをロボット100に簡単にプラグインさせることが可能であるため、ロボット100が提供する機能の範囲を超えない限り、多様なサービスを提供するロボット100を実現することができる。
【0106】
サービスアプリケーション110の開発者は、ロボット100に関する詳細的なドメイン知識がなくても(すなわち、不必要なトラブルシューテングやロボットの実行/運用に関するイシューに対応する必要なく)、ロボット100が提供するサービスをサービスアプリケーション110内に実現することができる。
【0107】
したがって、ロボット100とサービスアプリケーション110における拡張性を高めることができる。
【0108】
以上、図1~4を参照しながら説明した技術的特徴は、図5に対してもそのまま適用可能であるため、重複する説明は省略する。
【0109】
以下の詳細な説明において、ロボット100、クラウドサーバ120、またはサービスアプリケーション110(例えば、ロボット100、クラウドサーバ120、または装置500のプロセッサ)によって実行される動作は、説明の便宜上、ロボット100、クラウドサーバ120、またはサービスアプリケーション110によって実行される動作として説明する。
【0110】
図6は、一実施形態における、クラウドサーバが実行する、サービスアプリケーションと連係してサービスを提供するロボットの制御方法を示したフローチャートである。
【0111】
段階610で、クラウドサーバ120は、サービスアプリケーション110からサービスを提供するための命令を受信してよい。サービスアプリケーション110から受信される命令は、ロボット100に特定の動作および/または機能の実行を要請するものであって、抽象化された命令であってよい。抽象化された命令は、(具体化されなくては)サービスが提供されるようにロボット100を直接的に制御することのできない命令であってよい。抽象化された命令は、品物を、例えば、配達するサービスで配達または回収位置にロボットを移動させる命令、道案内サービスで利用者を特定の位置に案内する命令、または、ロボット100に特定の機能の実行を要請する命令などを含んでよい。
【0112】
段階615で、クラウドサーバ120は、サービスアプリケーション110からの命令がバイパス対象命令であるかどうかを判定してよい。
【0113】
段階620で、クラウドサーバ120は、サービスアプリケーション110からの命令がバイパス対象命令であれば、サービスアプリケーション110からの命令をロボット100に直に伝達してよい。段階622において、ロボット100は、このような伝達されたバイパス対象命令にしたがって制御されてよい。
【0114】
バイパス対象命令とは、クラウドサーバ120による具体化の必要がない単純命令であって、サービスアプリケーション110からクラウドサーバ120を経てロボット100に直に伝達(ルーティング)される命令であってよい。バイパス対象命令は、例えば、ロボット100のUX(User Experience)と関連する構成105を制御するための命令であってよい。一例として、バイパス対象命令は、ロボット100に含まれたLEDまたはインジケータ(例えば、ロボットのgazeに対応するLED、またはその他の視覚的インジケータ)のオン/オフを制御する命令、またはロボット100に備えられたスピーカから特定のサウンドを出力するようにする命令を含んでよい。また、ロボット100の動き(移動)を手動で制御するための命令は、バイパス対象命令となってよい。
【0115】
クラウドサーバ120は、サービスアプリケーション110からの命令のタイプを分析することにより、該当の命令がバイパス対象命令であるかどうかを判定してよい。例えば、クラウドサーバ120は、サービスアプリケーション110からの命令のプロトコルを分析することにより、命令がバイパス対象命令であるかどうかを判定してよい。すなわち、クラウドサーバ120は、受信した命令のプロトコル端を解釈することにより、命令をロボット100にバイパスするかどうかを決定してよい。
【0116】
段階625で、クラウドサーバ120は、サービスアプリケーション110から受信した命令を具体化して複数のサブ命令を生成してよい。サブ命令を生成する段階は、サービスアプリケーション110からの命令がバイパス対象命令ではない場合に実行されてよい。「命令の具体化」とは、サービスアプリケーション110からの抽象化された命令を、ロボット100を直接的に制御することができるようにする命令に分割することを意味してよい。言い換えれば、段階625によって生成された各サブ命令は、ロボット100を直接的に制御することができるように、サービスアプリケーション110からの抽象化された命令が具体化されたものであってよい。
【0117】
段階630で、クラウドサーバ120は、生成されたサブ命令の各サブ命令をロボット100に送信してよい。段階635で、ロボット100は、受信した各サブ命令に基づいて制御されてよい。ロボット100は、サブ命令による制御を完了することにより、サービスアプリケーション110からの命令によって要請された動作を完了してよい。
【0118】
それぞれのサブ命令は、ロボットが実行可能な単位命令を構成してよい。言い換えれば、段階625で、クラウドサーバ120は、サービスアプリケーション110から受信した命令を複数の単位命令に分割することによってサブ命令を生成してよい。例えば、クラウドサーバ120は、サービスアプリケーション110から受信した命令を所定の時間単位または所定の大きさ単位に分割することによってサブ命令を生成してよい。アプリケーション110から受信した命令が示す動作が時間によって複数の動作に区分されるものであれば、前記動作のそれぞれに対応して前記アプリケーション110から受信された命令がサブ命令としてそれぞれ分割されてよい。
【0119】
抽象化された命令に基づいて抽象化された命令が具体化されたサブ命令を生成する方法については、図7および図8を参照しながらさらに詳しく説明する。
【0120】
クラウドサーバ120は、生成されたサブ命令のそれぞれを順にロボット100に送信してよい。各サブ命令は、ロボット100の動作によって適時にクラウドサーバ120からロボット100に伝達されてよい。
【0121】
例えば、段階630で、クラウドサーバ120は、サブ命令のうちの第1サブ命令をロボット100に送信してよい。第1サブ命令とは、サービスアプリケーション110から受信した命令が示すロボット100の動作を完了するために、ロボット100が優先して実行しなければならない第1動作を示してよい。段階635で、ロボット100は、第1サブ命令にしたがって第1動作を実行してよく、第1動作の実行が完了したことを示す完了レポート(または、完了を示す信号)をクラウドサーバ120に送信してよい。段階640で、クラウドサーバ120は、このような完了レポートを受信してよく、完了レポートを受信した後、段階645で、サブ命令のうちの第1サブ命令の次に該当する第2サブ命令をロボット100に送信してよい。このとき、第2サブ命令とは、サービスアプリケーション110から受信した命令が示すロボット100の動作を完了するための前記第1動作の次の動作を示してよい。段階650で、ロボット100は、第2サブ命令にしたがって第2動作を実行してよい。同じように、ロボット100は、第2動作の実行が完了したことを示す完了レポートをクラウドサーバ120に送信してよく、クラウドサーバ120から次のサブ命令を受信してよい。
【0122】
このように、クラウドサーバ120は、生成されたサブ命令のそれぞれを順にロボット100に送信することができ、あるサブ命令が示す動作がロボット100によって実行されてから次のサブ命令をロボット100に送信することにより、ロボット100に適時に命令を伝達することができる。これにより、ロボット100の誤動作を防ぐことができる。言い換えれば、クラウドサーバ120は、サービスアプリケーション110から受信した命令を複数のミッションに区分することによって具体化してよい。ロボット100に送信されたサブ命令にしたがって1つのミッションが完了した場合、次のミッションに該当するサブ命令をロボット100に送信してよい。
【0123】
また、上述したものとは異なり、ロボット100は、サブ命令による動作後、レポートをクラウドサーバ120に送信しなくてもよい。このとき、クラウドサーバ120は、ロボット100を(例えば、リアルタイムで)モニタリングし、ロボット100がサブ命令による動作を実行したと判断された場合に、次のサブ命令をロボット100に送信してよい。
【0124】
または、クラウドサーバ120は、所定の時間間隔でサブ命令のそれぞれを順にロボット100に送信してもよい。
【0125】
上述したように、実施形態では、クラウドサーバ120がサービスアプリケーション110からの命令を分析し、命令のタイプにより、該当の命令をロボット100にバイパスしてもよいし、命令を具体化してサブ命令を生成してロボットに送信してもよく、これにより、ロボット100を適切に制御することができる。
【0126】
一方、図には示されていないが、ロボット100は、受信した命令(サブ命令)がサービスアプリケーション110からの命令がバイパスされたものであるかを判定してもよい。このとき、ロボット100は、受信した命令(サブ命令)のプロトコルを分析することにより、受信した命令(サブ命令)がサービスアプリケーション110からの命令がバイパスされたものであるかを判定してよい。ロボット100は、受信した命令(サブ命令)がバイパスされた命令に該当する場合は、該当のバイパスされた命令に対応する動作を実行してよく、バイパスされていない命令(すなわち、具体化された命令)に該当する場合は、具体化された命令に対応する動作を実行してよい。
【0127】
以上、図1~5を参照しながら説明した技術的特徴は、図6に対してもそのまま適用可能であるため、重複する説明は省略する。
【0128】
図7および図8は、一例における、抽象化された命令に基づいて、抽象化された命令が具体化されたサブ命令を生成する方法を示したフローチャートである。
【0129】
図6を参照しながら、上述した段階625のクラウドサーバ120は、サービスアプリケーション110から受信した命令を複数の単位命令に分割することによってサブ命令を生成する方法についてより詳しく説明する。クラウドサーバ120は、サービスアプリケーション110から受信した命令を所定の時間単位または所定の大きさ単位に分割することによってサブ命令を生成してよい。
【0130】
例えば、サービスアプリケーション110からの命令が目的地にロボット100を移動させるようにする命令である場合について、図7を参照しながら説明する。目的地は、ロボット100が品物を配達するための目的地、またはロボット100が利用者を案内するための目的地であってよい。
【0131】
段階710で、クラウドサーバ120は、ロボット100の現在地から目的地までロボット100が移動しなければならない複数のウェイポイントを決定してよい。
【0132】
段階720で、クラウドサーバ120は、ウェイポイントの各ウェイポイントにロボット100を移動させる命令を各サブ命令として生成してよく、生成された各サブ命令をロボット100に送信してよい。
【0133】
例えば、クラウドサーバ120は、ロボット100の現在地から目的地までロボット100が移動しなければならない複数のウェイポイントのそれぞれの座標(座標の配列)を決定してよく、各座標への移動を示す命令を各サブ命令としてロボット100に送信してよい。
【0134】
ウェイポイントのそれぞれは、例えば、空間内の位置であってよく、目的地への移動においてロボット100が階間移動をしなければならない場合は、エレベータ前(すなわち、ドア前)の位置を示してよい。また、ウェイポイントは、空間内のドアの前の位置、空間内のコーナーに対応する位置、または空間の角または隅に対応する位置などであってよい。ウェイポイントは、目的地を含んでもよいし含まなくてもよい。
【0135】
上述したように、ロボット100があるウェイポイントへの移動を完了した後、クラウドサーバ120は、ロボット100から完了レポートを受信してよく、これにより、クラウドサーバ120は、ロボット100に次のウェイポイントへの移動を示すサブ命令を送信してよい。
【0136】
ロボット100は、ウェイポイントへの移動に対応するサブ命令にしたがって制御されることによって目的地に移動してよい。
【0137】
このように、サービスアプリケーション110から受信した命令は、複数のウェイポイントへの移動に具体化され、具体化されたサブ命令が生成されてよい。
【0138】
図8を参照しながら、クラウドサーバ120がロボット100の状態をモニタリングしながら適切なサブ命令をロボット100に送信する方法について説明する。
【0139】
段階810で、クラウドサーバ120は、ロボット100の状態をモニタリングしてよい。ロボット100の状態のモニタリングは、リアルタイムあるいはほぼリアルタイムで行なわれてよい。
【0140】
段階820で、クラウドサーバ120は、モニタリングされたロボット100の状態に基づいて、適したサブ命令を識別するか、予め送信されたサブ命令に対する取消命令を生成してよい。クラウドサーバ120は、識別されたサブ命令または取消命令をロボット100に送信してよい。
【0141】
クラウドサーバ120は、モニタリングされたロボット100の状態により、サービスアプリケーション110から受信した命令を具体化して生成されたサブ命令のうち、ロボット100によるサービスの提供のために必要なサブ命令を決定してロボット100に送信してよい。例えば、クラウドサーバ120は、ロボット100があるウェイポイントに移動したことが確認された場合、サブ命令のうちから次のウェイポイントへの移動を示すサブ命令を識別してよく、識別されたサブ命令をロボット100に送信してよい。
【0142】
また、クラウドサーバ120は、モニタリングされたロボット100の状態により、予め送信されたサブ命令を取り消すための取消命令をロボット100に送信してよい。例えば、(ロボット100が特定の位置に閉じこめられたり、機能異常が発生したり、動作不能になったりするなどの事由により)予め送信されたサブ命令による動作をロボット100が実行することができなくなった場合、クラウドサーバ120は、予め送信されたサブ命令を取り消すための取消命令をロボット100に送信してよい。場合によっては、クラウドサーバ120は、他のロボットに前記サブ命令を送信し、前記実行されなかった動作を他のロボットが代わりに実行するように制御してよい。または、クラウドサーバ120は、前記予め送信されたサブ命令による動作を延期するように(すなわち、後で実行するように)する延期命令をロボット100に送信してもよい。
【0143】
上述したように、クラウドサーバ120は、ロボット100の状態をモニタリングすることで、ロボット100に適時にサブ命令を送信したり、命令を取消/延期する命令を送信したりすることができるようになる。
【0144】
これに関し、図12および図13は、一例における、サービスアプリケーションからの抽象的な命令に基づいて具体化されたサブ命令を生成してロボットを制御する方法を示している。
【0145】
図12において、ロボット100は、配達サービスを提供するロボットであって、目的地1200に移動しろという命令がサービスアプリケーション110からクラウドサーバ120に受信されたと仮定する。
【0146】
クラウドサーバ120は、サービスアプリケーション110からの命令に基づいて、ロボット100が目的地1200に移動するための経路計画を樹立してよい。クラウドサーバ120は、ロボット100が目的地1200に移動するための経路に含まれる複数のウェイポイント1210((1)~(7))を決定してよく、ウェイポイントへの移動を示すサブ命令1210-1~1210-7を生成してよい。
【0147】
クラウドサーバ120は、サブ命令1210-1~1210-7のそれぞれを順にロボット100に送信することにより、ロボット100がウェイポイント1210((1)~(7))を経由して目的地1200に到着するように制御してよい。ウェイポイント1210((1)~(7)それぞれは、対応する位置の座標値を示してよい。
【0148】
ロボット100の現在地から目的地1200までの経路がロボット100の階間移動を含む場合、ウェイポイント1210((1)~(7))のうちの少なくとも1つは、ロボット100が乗るエレベータに対応する位置(すなわち、ロボット100が搭乗および/または下車するエレベータのドア前に該当する位置)を示してよい。これにより、ロボット100は、階間移動を含んで目的地1200に移動することができるようになる。
【0149】
上述したように、ロボット100に目的地1200への移動が指示された場合、ロボット100は、クラウドサーバ1200から分割された(ウェイポイントを示す)サブ命令を受信して制御されてよい。すなわち、ロボット100は、一度に実行可能な単位の命令に該当する単位命令を受信して動作してよい。単位命令は、抽象化された命令とは異なり、ロボット100が処理することのできる座標の配列を示してよい。
【0150】
図13では、ロボット100を終了しろという命令がサービスアプリケーション110からクラウドサーバ120に受信されたと仮定する。
【0151】
クラウドサーバ120は、ロボット100を終了しろという抽象化された命令に基づいて、(1)ロボット100のセンサデバイス終了、(2)ロボット100のモータ制御終了、および(3)ロボット100のメインシステム終了という3つのサブ命令を生成してよい。クラウドサーバ120は、(1)~(3)のサブ命令を順にロボット100に送信してよい。例えば、クラウドサーバ120は、(1)によってロボット100のセンサデバイスが終了すればロボット100に(2)を送信し、(2)によってロボット100のモータ制御が終了すればロボット100に(3)を送信してよい。これにより、ロボット100は終了となってよい。
【0152】
上述したクラウドサーバ120は、ロボット100の1つの機能を制御するように構成されたサーバであってよい。例えば、クラウドサーバ120は、図12を参照しながら説明したようなロボット100の移動を制御するためのサーバであるか、図13を参照しながら説明したようなロボット100の終了(または、始動)を制御するためのサーバであってよい。または、クラウドサーバ120は、ロボット100の複数の機能のそれぞれを制御するように構成されてもよい。
【0153】
以上、図1~6を参照しながら説明した技術的特徴は、図7、8、12、および13に対してもそのまま適用可能であるため、重複する説明は省略する。
【0154】
図9および図10は、一例における、ロボットからのデータを処理し、該当のデータに基づいて抽象化されたデータを生成および処理する方法を示したフローチャートである。
【0155】
図9を参照しながら、ロボット100からのデータがクラウドサーバ120で処理される方法について説明する。
【0156】
段階905で、クラウドサーバ120は、ロボット100から、ロボット100が収集したデータ(例えば、ロボット100の制御と関連するデータ)を受信してよい。ロボット100の制御と関連するデータは、ロボット100が走行、機能実行、またはサービス動作によって収集したデータであってよい。例えば、ロボット100の制御と関連するデータは、センサ部106が収集したデータであって、時間情報、ロボット100の速度、位置、バッテリ情報、およびカメラで撮影された映像情報のうちの少なくとも1つを含んでよい。また、ロボット100の制御と関連するデータは、LEDの点灯状態、サウンドの出力状態、ロボット100のドアの開閉状態などのように、UXと関連する装置105の動作状態を示すデータを含んでよい。
【0157】
段階910で、クラウドサーバ120は、ロボット100からのデータがバイパス対象データを含むかどうかを判定してよい。
【0158】
段階915で、クラウドサーバ120は、ロボット100からのデータのうちのバイパス対象データを、サービスアプリケーション110に直に伝達(ルーティング)してよい。バイパス対象データは、ロボット100の第1状態を示すデータを含んでよい。第1状態は、データに対する分析または加工なく、該当のデータ自体だけで把握することのできるロボット100の単純状態を示してよい。または、第1状態は、サービスアプリケーション110によるリアルタイムの識別を必要とするロボット100の状態を示してよい。
【0159】
第1状態は、例えば、ロボット100のバッテリ状態、速度状態、ドア開閉状態、LED点灯状態、およびサウンド出力状態を含んでよく、第1状態を示すデータは、このようなロボット100のバッテリデータ、速度データ、ドア開閉状態に関するデータ、LED点灯状態に関するデータ、およびサウンド出力状態に関するデータを含んでよい。
【0160】
このようなロボット100の第1状態を示すデータは、サービスアプリケーション110に直に伝達されてよく、サービスアプリケーション110では、ロボット100の第1状態が識別されてよい。サービスアプリケーション110は、ロボット100の第1状態が識別されることにより、ロボット100に対するモニタリング情報を生成してよい。モニタリング情報は、装置500において表示/出力されてよい。
【0161】
段階925で、クラウドサーバ120は、ロボット100からのデータを分析して抽象化されたデータを生成してよい。クラウドサーバ120は、ロボット100からのデータのうちでバイパス対象データではないデータ、またはバイパス対象データを含むロボット100からのデータを分析し、抽象化されたデータを生成してよい。「データの抽象化」は、ロー(raw)データを分析することによって加工されたデータを生成する段階であってよい。例えば、抽象化されたデータは、ロボット100からのデータを分析しながらロボット100が特定の状態に該当するかどうかを判定した結果によってロボット100が特定の状態に該当するかどうかを示すデータであってよい。
【0162】
これについては、図10を参照しながら、抽象化されたデータを生成する方法としてさらに詳しく説明する。
【0163】
以下の段階1010~1040は、段階925に含まれてよい。
【0164】
段階1010で、クラウドサーバ120は、ロボット100からのデータを分析してよい。
【0165】
段階1020で、クラウドサーバ120は、ロボット100からのデータを分析し、ロボット200が第2状態を示すかどうかを判定してよい。
【0166】
段階1030で、クラウドサーバ120は、ロボット100が第2状態を示すと判定された場合、ロボット100が第2状態であることを示す抽象化されたデータを生成してよい。または、段階1040で、クラウドサーバ120は、ロボット100が第2状態に該当しないと判定された場合、ロボット100が第2状態でないことを示す抽象化されたデータを生成してよい。
【0167】
言い換えれば、クラウドサーバ120は、このような判定の結果により、ロボット100が第2状態を示すかどうかを示す情報を抽象化されたデータとして生成してよい。
【0168】
段階930で、クラウドサーバ120は、生成された抽象化されたデータをサービスアプリケーション110に送信してよい。
【0169】
段階1010で分析されるロボット100からのデータは、上述した第1状態を示すデータを含んでよく、または/追加的に、センサ部106でセンシングされたデータを含んでよい。第2状態は、クラウドサーバ120がこのようなデータを分析することにより、ロボット100が該当するものであると判定するロボット100の状態を意味してよい。例えば、第2状態は、ロボット100によってサービスの提供が完了したかどうか、ロボット100によってサービスの提供が可能であるかどうか、またはロボット100の動作が正常であるかどうかを示してよい。言い換えれば、第2状態は、ロボット100からのデータに基づいて、クラウドサーバ120が判断したロボット100の状態を示してよい。
【0170】
具体的に、クラウドサーバ120は、ロボット100の位置が一定の時間以上変化しないと分析されたときには、ロボット100が閉じこめられているか、ロボット100が適切に動作することができないか、サービスの提供が不可能になったこと(または、サービスの提供に多くの時間がかかった)を示す抽象化されたデータを生成してよい。
【0171】
段階935で、サービスアプリケーション110は、受信した抽象化されたデータに基づいて、ロボット100が第2状態に該当することを識別してよい。
【0172】
サービスアプリケーション110は、段階940のように、受信した抽象化されたデータに基づいて(または、ロボット100の第2状態が識別されることにより)、ロボット100を制御するための命令を生成してよい。または/追加的に、サービスアプリケーション110は、受信した抽象化されたデータに基づいて(または、ロボット100の第2状態が識別されることにより)、ロボット100に対するモニタリング情報を生成してよい。
【0173】
モニタリング情報は、上述したロボット100の第1状態および/または第2状態を示す情報であってよい。モニタリング情報は、装置500に表示/出力されてよい。
【0174】
段階940で、クラウドサーバ120に送信される命令は、図6の段階610を参照しながら説明した、抽象化された命令に対応してよい。一方、図には示されていないが、上述した第1状態が識別された場合にも、サービスアプリケーション110は、ロボット100を制御するための命令を生成してよい。
【0175】
以上、図1~8、図12および図13を参照しながら説明した技術的特徴は、図9および図10に対してもそのまま適用可能であるため、重複する説明は省略する。
【0176】
図11は、一例における、クラウドサーバ側からロボットに対して独立的に提供する独立命令を生成および処理する方法を示したフローチャートである。
【0177】
段階1110で、クラウドサーバ120は、サービスアプリケーション110からの命令(抽象化された命令)とは独立的にロボット100を制御するための独立命令を生成してよい。
【0178】
段階1120で、クラウドサーバ120は、ロボット100または他のロボットに独立命令を送信してよい。
【0179】
独立命令は、サービスアプリケーション110とは関係なく、クラウドサーバ120がロボット100を制御するために生成する命令であってよい。独立命令は、ロボット100の動作および機能実行と関連するものであり、ロボット100が提供するサービスに対しては独立的な動作および機能の実行に関する命令であってよい。
【0180】
例えば、独立命令は、ロボット100に充電を要求する命令(一例として、空間内の充電位置への移動命令)、ロボット100の特定の地点への移動の経路を更新する命令(例えば、目的地または特定のウェイポイントへの経路を更新する命令(走行recovery命令))、またはロボット100がサービスを提供することができなくなったときに、他のロボットに該当のサービスを提供するように要請する命令を含んでよい。
【0181】
また、クラウドサーバ120が複数のロボットを制御するにあたり、サービスを提供する特定のロボットを他のサービスを提供するようにスイッチングするか、サービスを提供するロボットを他のロボットに変更するなどのような資源管理と関連する命令は、独立命令となってよい。
【0182】
以上、図1~10、図12および図13を参照しながら説明した技術的特徴は、図11に対してもそのまま適用可能であるため、重複する説明は省略する。
【0183】
図14は、一例における、クラウドサーバ、ロボット、およびサービスアプリケーションのN:1:Kの関係を示した図である。
【0184】
図に示すように、サービスアプリケーション110は複数であってよい。サービスアプリケーション110-1~110-Nは、それぞれ異なるロボット100がサービスを提供するように実現されたものであってよい。Nは2以上の自然数であってよい。クラウドサーバ120は、サービスアプリケーション110-1~110-Nそれぞれから抽象化された命令を受信してよく、受信した抽象化された命令に対応する動作を実行するようにロボット100を制御してよい。
【0185】
図に示すように、ロボット100は複数であってよい。ロボット100-1~100-Kのそれぞれは、サービスアプリケーション110-1~110-Nが提供するサービスのうちの少なくとも1つを提供するように構成されてよい。ロボット100-1~100-Kは、サービスアプリケーション110-1~110-Nと1:多数または多数:1の関係でマッチングされてよい。すなわち、1つのサービスアプリケーションによって複数のロボット100-1~100-Kが制御されてよく、1つのロボットが複数のサービスアプリケーション110-1~110-Nと関連するサービスを提供するように構成されてよい。
【0186】
例えば、ロボット100-1~100-Kそれぞれは、サービスアプリケーション110-1~110-Nのうちの少なくとも1つが該当のロボットにプラグイン(plug-in)されることにより、該当のロボットがプラグインされたサービスアプリケーションと連係してサービスを提供するように実現されてよい。言い換えれば、サービスアプリケーション110がロボット100にプラグイン(plug-in)されることにより、ロボット100は、サービスアプリケーション110と連係してサービスアプリケーション110と関連するサービスを提供するように実現されてよい。
【0187】
クラウドサーバ120は、複数のサービスアプリケーション110-1~110-Nのうちの他のサービスアプリケーションがロボット100とプラグインされるようにすることにより、ロボット100が他のサービスアプリケーションと連係して他のサービスを提供するように制御してよい。
【0188】
したがって、図に示すように、実施形態では、あるサービスを提供するように実現されたロボット100を他のサービスを提供するようにする(または、追加で他のサービスを提供するようにする)ロボット100に容易にスイッチングすることができる。言い換えれば、ロボット100によるサービスの提供を簡単に確張することができる。
【0189】
以上、図1~13を参照しながら説明した技術的特徴は、図14に対してもそのまま適用可能であるため、重複する説明は省略する。
【0190】
図15は、一例における、データの流れの観点において、クラウドサーバ、ロボット、およびサービスアプリケーションの関係を示した図である。
【0191】
データの流れの観点において、クラウドサーバ120、ロボット100、およびサービスアプリケーション110は、互いに連結していてよい。
【0192】
ロボット100とサービスアプリケーション110は、クラウドサーバ120から命令とデータを通信するが、バイパス対象命令およびバイパス対象データは、ロボット100とサービスアプリケーション110の間で直に伝達されるため、データの流れの観点では、クラウドサーバ120、ロボット100、およびサービスアプリケーション110は、互いに連結するものと見なしてよい。
【0193】
以上、図1~14を参照しながら説明した技術的特徴は、図15に対してもそのまま適用可能であるため、重複する説明は省略する。
【0194】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0195】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ記録媒体または装置に永続的に、または臨時的に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0196】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであっても、コンピュータソフトウェア当業者に公知されて使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例には、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令を記録して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0197】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0198】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【0199】
100:ロボット
102:通信部
104:制御部
106:センサ部
108:駆動部
110:サービスアプリケーション
120:クラウドサーバ
211:経路計画処理モジュール
212:マッピング処理モジュール
213:駆動制御モジュール
214:ローカリゼーション処理モジュール
215:データ処理モジュール
216:命令処理モジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15