(57)【要約】      （修正有）【課題】ロボットを用いたワークフローをより容易に構築する情報処理装置、方法及びプログラムを提供する。【解決手段】ワークフロー制御システムは、ワークフロー構築支援装置及び複数のロボットを含む。ワークフロー構築支援装置は、ＵＩ画面表示制御部１１１と、中間情報生成部１１２と、制御情報生成部１１３と、を備える。ＵＩ画面表示制御部は、自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、ロボットを含むワークフローの入力を受け付ける。中間情報生成部は、ブロック及びコネクタ毎に、ブロックが表す処理内容及びコネクタが表すブロック間の関係が文字情報として表現された中間情報を生成する。制御情報生成部は、中間情報に基づいて、プログラミング言語で表現されたロボットの動作を表す制御情報を生成する。【選択図】図３
2019212053.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを含むワークフローにおける前記ロボットの制御情報を生成する情報処理装置であって、
自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、前記ロボットを含むワークフローの入力を受け付けるワークフロー入力手段と、
前記ブロック及び前記コネクタ毎に、前記ブロックが表す処理内容及び前記コネクタが表す前記ブロック間の関係が文字情報として表現された中間情報を生成する中間情報生成手段と、
前記中間情報に基づいて、プログラミング言語で表現された前記ロボットの動作を表す制御情報を生成する制御情報生成手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記中間情報生成手段は、前記ブロックの種別を判定し、判定された前記ブロックの種別毎に、予め用意された前記文字情報の形式に変換すると共に、前記ブロックに対して個別に設定されたパラメータを前記文字情報の形式における引数として含めることにより、前記中間情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記中間情報生成手段は、前記ブロック及びコネクタの図形が表す属性を文字情報に置換することにより、前記中間情報を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御情報生成手段は、ロボットの制御に用いられる規定のオペレーティングシステムに対応した前記制御情報を生成することを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ワークフローは、複数の前記ロボットによって実行され、
前記制御情報生成手段は、前記ロボットを制御するプログラムが実行すべき順に記述された前記制御情報を、複数の前記ロボット毎に生成することを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
ロボットを含むワークフローにおける前記ロボットの制御情報を生成する情報処理装置で実行される情報処理方法であって、
自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、前記ロボットを含むワークフローの入力を受け付けるワークフロー入力ステップと、
前記ブロック及び前記コネクタ毎に、前記ブロックが表す処理内容及び前記コネクタが表す前記ブロック間の関係が文字情報として表現された中間情報を生成する中間情報生成ステップと、
前記中間情報に基づいて、プログラミング言語で表現された前記ロボットの動作を表す制御情報を生成する制御情報生成ステップと、
を含むことを特徴とする情報処理方法。
【請求項７】
ロボットを含むワークフローにおける前記ロボットの制御情報を生成するコンピュータに、
自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、前記ロボットを含むワークフローの入力を受け付けるワークフロー入力機能と、
前記ブロック及び前記コネクタ毎に、前記ブロックが表す処理内容及び前記コネクタが表す前記ブロック間の関係が文字情報として表現された中間情報を生成する中間情報生成機能と、
前記中間情報に基づいて、プログラミング言語で表現された前記ロボットの動作を表す制御情報を生成する制御情報生成機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット等を制御するための制御情報を生成する情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、人間とのコミュニケーションを行うロボットを用いて業務等のワークフローを実行するシステムが実現されている。
例えば、非特許文献１には、ＲＯＳ（Ｒｏｂｏｔ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に基づいて動作するロボットに所望の会話や動作を行わせる技術が記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Tenorth,M. et al., “KnowRob: A knowledge processing infrastructure for cognition-enabled robots”, International Journal of Robotics Research, Vol. 32, No. 5, pp. 566 - 590 (2013)
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ロボットを制御するためには、ロボットが実行可能な制御コード（プログラム）として動作を表現する必要がある。
ロボットの制御コードを作成する作業は、高度な専門性を要するものであり、プログラマ等の専門家に実行が委ねられている。
一方、飲食店の接客等の業務フローは、各店舗のニーズ等に応じて、具体的な内容が種々異なることが一般的である。
そのため、ロボットを用いて業務等のワークフローを実行する場合、ロボットの動作として具体的な内容を柔軟に変更することが求められるところ、従来の技術では、このような状況に適切に対応することができていない。
また、ロボットを用いた業務等のワークフローにおいては、ロボットを単体で用いる場合の他、複数のロボットが連携して処理を行う必要が生じる場合もある。
このような場合、従来の技術においては、各ロボットの制御コードをプログラマ等の専門家が個別に作成する必要があり、ロボットを用いた業務等のワークフローを実現する上で、大きな作業負担となっている。
即ち、従来の技術においては、ロボットを用いたワークフローを構築することが容易ではなかった。
【０００５】
本発明の課題は、ロボットを用いたワークフローをより容易に構築できるようにすることである。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一態様の情報処理装置は、
ロボットを含むワークフローにおける前記ロボットの制御情報を生成する情報処理装置であって、
自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、前記ロボットを含むワークフローの入力を受け付けるワークフロー入力手段と、
前記ブロック及び前記コネクタ毎に、前記ブロックが表す処理内容及び前記コネクタが表す前記ブロック間の関係が文字情報として表現された中間情報を生成する中間情報生成手段と、
前記中間情報に基づいて、プログラミング言語で表現された前記ロボットの動作を表す制御情報を生成する制御情報生成手段と、
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ロボットを用いたワークフローをより容易に構築することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係るワークフロー構築支援装置を含むワークフロー制御システムのシステム構成を示す模式図である。
【図２】ワークフロー構築支援装置及びロボットの制御ユニットを構成する情報処理装置のハードウェア構成を示すブロック図である。
【図３】ワークフロー構築支援装置の機能的構成を示すブロック図である。
【図４】ＵＩ画面において構築されるワークフローの一例を示す模式図である。
【図５】中間情報の一例を示す模式図である。
【図６】中間情報から生成された制御情報の一例を示す模式図である。
【図７】ロボットの制御ユニットの機能的構成を示すブロック図である。
【図８】ワークフロー制御システムにおいて、ワークフロー構築支援装置が実行するワークフロー構築支援処理の流れを示すフローチャートである。
【図９】ワークフロー制御システムにおいて、ロボットの制御ユニットが実行するロボット制御処理の流れを示すフローチャートである。
【図１０】ワークフロー制御システムにおいて構築及び実行されるワークフローの具体例の概念を示す模式図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を用いて説明する。
［システム構成］
図１は、本発明の一実施形態に係るワークフロー構築支援装置１０を含むワークフロー制御システム１のシステム構成を示す模式図である。
ワークフロー構築支援装置１０は、本発明に係る情報処理装置の一実施形態として構成されるものである。
図１に示すように、ワークフロー制御システム１は、ワークフロー構築支援装置１０と、複数のロボット２０とを含んで構成され、ワークフロー構築支援装置１０と、複数のロボット２０とは、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の通信手段によって通信可能に構成されている。
【００１０】
ワークフロー構築支援装置１０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等によって構成され、ワークフローの視覚的な構築環境（後述する図形を用いた入力インターフェース）を提供することにより、ユーザによるロボット２０を含むワークフローの入力を受け付ける。そして、ワークフロー構築支援装置１０は、ロボット２０を含むワークフローを実現するための各ロボット２０の制御情報（制御コード）を生成する。
【００１１】
ロボット２０は、ＰＣまたは組み込み型のマイコン等によって構成される制御ユニット２１と、センサやアクチュエータ等を有するロボット２０の本体となるロボットハードウェアユニット２２とを備えている。そして、ロボット２０においては、制御ユニット２１がワークフロー構築支援装置１０によって生成された制御情報に基づいて、ロボットハードウェアユニット２２を制御することにより、ロボット２０についてプログラミングされた動作を実行する。
【００１２】
［ハードウェア構成］
次に、ワークフロー構築支援装置１０及びロボット２０の制御ユニット２１のハードウェア構成について説明する。
図２は、ワークフロー構築支援装置１０及びロボット２０の制御ユニット２１を構成する情報処理装置８００のハードウェア構成を示すブロック図である。
【００１３】
図２に示すように、情報処理装置８００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、入力部１４と、出力部１５と、記憶部１６と、通信部１７と、を備えている。
【００１４】
ＣＰＵ１１は、ＲＯＭ１２または記憶部１６に記憶されたプログラムに従って各種の処理を実行する。
ＲＯＭ１２は、情報処理装置８００で実行される制御のための各種プログラムを記憶する。
ＲＡＭ１３には、ＣＰＵ１１が各種の処理を実行するためのデータ等が記憶される。
【００１５】
入力部１４は、キーボードやマウス、あるいは、タッチパネル等の入力装置によって構成され、ユーザの指示操作に応じて各種情報を入力する。
出力部１５は、ディスプレイやスピーカによって構成され、ＣＰＵ１１の制御に従って、情報の表示や音声の出力を行う。
記憶部１６は、ハードディスクや半導体メモリ等の記憶装置によって構成され、情報処理装置８００で使用される各種データやプログラムを記憶する。
通信部１７は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブル等の通信ケーブルや、インターネット等の通信ネットワークを介して他の装置との通信を行う。
【００１６】
［機能的構成］
次に、ワークフロー構築支援装置１０及びロボット２０の制御ユニット２１の機能的構成について説明する。
［ワークフロー構築支援装置の機能的構成］
図３は、ワークフロー構築支援装置１０の機能的構成を示すブロック図である。
図３に示すように、ワークフロー構築支援装置１０は、ＣＰＵ１１の機能として、ユーザインターフェース（ＵＩ）画面表示制御部１１１と、中間情報生成部１１２と、制御情報生成部１１３と、を備えている。また、ワークフロー構築支援装置１０の記憶部１６には、ワークフロー記憶部１７１と、中間情報記憶部１７２と、制御情報記憶部１７３と、が形成される。
【００１７】
ＵＩ画面表示制御部１１１は、ワークフローを構築するための図形を用いた入力インターフェース（以下、「ＵＩ画面」と称する。）を表示する。ＵＩ画面において、ユーザは、ワークフローのプロセスを単位として定義された図形（以下、「ブロック」と称する。）を構築したいワークフローの流れに従って配置する。また、ＵＩ画面において、ユーザは、ブロック間の接続関係を表す図形（以下、「コネクタ」と称する。）を構築したいワークフローの流れを表すようにブロック間に配置する。
【００１８】
図４は、ＵＩ画面において構築されるワークフローの一例を示す模式図である。
図４に示すように、ユーザは、ワークフローの開始を表す「開始」ブロックから、ワークフローの終了を表す「終了」ブロックまでの間に、自らが構築したいワークフローのプロセスに対応するブロックを適宜配置することができる。また、ユーザは、配置したブロック間の接続関係を表すコネクタを配置し、ワークフローの流れを決定する。
図４に示す例では、ブロックＺ１が「開始」、ブロックＺ２が「終了」を表している。また、ブロックＡ１，Ｂ１，Ｃ１が具体的な「処理」（プロセス）を表しており、「開始」、「終了」及び「処理」のブロックはコネクタＸ１，Ｘ２，Ｘ３，Ｘ４で接続されている。コネクタＸ１〜Ｘ４は、それぞれの「処理」からの出力を受けて、次の「処理」の入力として渡している。
【００１９】
なお、ブロックが表すプロセスは、ワークフローの１工程として、自然言語によって表現される人間の行動を表す文言によって表現されるものである。例えば、飲食店等における接客に関するワークフローであれば、ブロックが表すプロセスとして、「挨拶をする」、「注文を取る」、「飲食物を運ぶ」といった行動を定義することができる。
このように、ワークフローを構成するブロックは、業務等において人間が行う行動を単位として定義されているため、ＵＩ画面において、ユーザは、業務等における手順を想定しながら、容易にワークフローの概要を決定することができる。
【００２０】
また、ＵＩ画面表示制御部１１１は、ＵＩ画面において、ブロックの具体的な内容を定義するためのパラメータの設定を受け付ける。即ち、ＵＩ画面において、ユーザは、ブロックに含まれる選択可能な要素の中で、自らが構築するワークフローに適するパラメータを設定する。例えば、「挨拶する」というプロセスのブロックであれば、「いらっしゃいませ」、「ようこそ」、「ご用件をお伺いします」といった複数の選択肢の中から、ユーザの目的に適合するいずれかのフレーズを設定することができる。本実施形態においては、予め複数の選択肢が用意されており、ユーザは、自らの目的に適合する選択肢（パラメータ）を順次選択することで、ブロックの内容を具体的に設定することが可能となっている。
【００２１】
このように、ＵＩ画面において、ユーザは、複数種類のプロセスに対応するブロックを配置し、ブロック間をコネクタで接続すると共に、各ブロックにおける具体的なパラメータを設定することで、自らの目的に適合するワークフローを構築することができる。
中間情報生成部１１２は、ＵＩ画面において入力されたワークフローに基づいて、ワークフローの各ブロック及びコネクタを、文字情報として表される中間情報に変換する。
【００２２】
中間情報とは、ワークフロー構築支援装置１０の内部処理において生成される情報であり、図形に基づく情報であるブロック及びコネクタを、ロボット２０の制御情報（プログラミング言語で表される制御コード）に変換する過程において、予め定義された変換基準に従って文字情報に変換したものである。
本実施形態において、中間情報は、ブロック及びコネクタ毎に生成され、ブロック及びコネクタの属性を文字情報に変換した情報として生成することができる。例えば、中間情報の形式として、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）に基づく表現形式を用いることができ、ブロック及びコネクタの図形が表す属性を全て文字情報（データの意味を表す「キー」とその具体的な内容である「値」の組み合わせ等）に変換することで中間情報とすることができる。
【００２３】
このような変換処理は、情報の置換によって実現できることから、図形に基づく情報を比較的容易に文字情報に変換することが可能となる。図形に基づく情報で表されたワークフローは人間に理解し易いものの、ロボット２０の制御情報として用いることはできない。これに対し、図形に基づく情報で表されたワークフローを中間情報の形式とすることにより、中間情報からロボット２０の制御情報に変換することが可能となる。
【００２４】
具体的な変換手順として、中間情報生成部１１２は、ワークフローの各ブロックを、ブロックの種別に対応する中間情報の形式に変換すると共に、ブロックに設定されたパラメータを中間情報に引数として含める。例えば、ブロックには、サービス、プロセス、ＲＯＳサービス、ＲＯＳパブリッシャ、ＲＯＳサブスクライバ、その他のモジュールといった種別を設定することができ、中間情報生成部１１２は、ブロックがいずれの種別であるかを判定して、種別に対応する中間情報の形式に変換することができる。そして、中間情報生成部１１２は、種別に対応する中間情報に、ブロックに設定されたパラメータを引数として含めることができる。
これにより、ユーザによって入力されたワークフローのブロックが、保有する情報を維持したまま中間情報に変換される。なお、同様に、ワークフローの各コネクタも、パラメータ（接続元のブロック及び接続先のブロック等）を引数として含めてコネクタを表す中間情報の形式に変換される。
【００２５】
図５は、中間情報の一例を示す模式図である。
図５に示す中間情報は、図４に示すワークフローに対応して生成されたものである。
なお、図５においては、説明の便宜のため、中間情報の一部を適宜省略して示している。
図５に示すように、中間情報は、例えば、ＪＳＯＮに基づく表現形式で生成される。
本実施形態において、中間情報では、ブロックとコネクタとが個別に中間情報に変換されている。ブロックの中間情報では、例えば、ブロックの名前（ｎａｍｅ）、種類（ｋｉｎｄ）と、図中の位置（ｐｏｓｉｔｉｏｎ／ｓｐｏｓｉｔｉｏｎ）、及び、ユーザによって設定された追加データ（ｄａｔａ）が定義されている。また、コネクタの中間情報では、例えば、接続元（ｓｏｕｒｃｅ）、接続先（ｔａｒｇｅｔ）、及び、種類（ｋｉｎｄ）が定義されている。
【００２６】
このように生成された中間情報は、ワークフローのブロック及びコネクタと１対１に対応すると共に、ワークフローの図形の配列を表す情報を含むものであるため、可逆的に中間情報からワークフローに変換することが可能である。
なお、ブロック及びコネクタを中間情報に変換する場合、一例として、ブロックの種別及びコネクタ毎に変換基準に基づく変換がそれぞれ定義されたテーブルを参照して、ブロック及びコネクタを中間情報に変換することができる。
【００２７】
制御情報生成部１１３は、中間情報生成部１１２によって生成された中間情報に基づいて、中間情報によって表されるワークフローにおいて、各ロボット２０が実行すべき動作を表す制御情報（プログラミング言語で表される制御コード）を生成する。制御情報生成部１１３は、例えば、Ｐｙｔｈｏｎによって表された制御コードを制御情報として生成することができる。
具体的には、制御情報生成部１１３は、各ブロック及びコネクタの中間情報に含まれる文字情報を読み出し、ブロックが表すプロセスの内容及びブロックの順番と、ブロック間で受け渡されるデータとに基づいて、ワークフロー全体を表す制御情報（制御コード）を生成する。ワークフロー全体を表す制御情報には、ワークフローが実行されるワークフロー制御システム１に含まれるロボット２０それぞれを制御するための個別の制御情報（個別の制御コード）が含まれている。
【００２８】
また、本実施形態において、制御情報生成部１１３は、各ロボット２０の制御情報をＲＯＳに対応したプログラムとして生成する。即ち、制御情報においては、ＲＯＳで呼び出しが可能なルーチン等を用いたプログラムの記述が許容される。
なお、制御情報生成部１１３は、予め用意された関数を用いて、中間情報から制御情報を生成したり、中間情報と制御情報との対応関係が定義されたテーブルを参照して、中間情報から制御情報を生成したりすることができる。
【００２９】
図６は、中間情報から生成された制御情報の一例を示す模式図である。
なお、図６においては、説明の便宜のため、制御情報の一部を適宜省略して示している。
図６に示すように、制御情報は、例えば、Ｐｙｔｈｏｎによって表された制御コードとして生成される。
本実施形態において、制御情報では、各ブロック及びコネクタの中間情報が、ワークフロー制御システム１で実行される処理手順に展開されており、ブロックの内容に対応するプログラムの制御コードが、コネクタの内容に応じて実行順に記述されたプログラムとされている。
【００３０】
図３に戻り、ワークフロー記憶部１７１には、ＵＩ画面においてユーザが構築したワークフローのデータが記憶される。
中間情報記憶部１７２には、中間情報生成部１１２によって生成された中間情報のデータが記憶される。
制御情報記憶部１７３には、制御情報生成部１１３によって生成された制御情報のデータが記憶される。制御情報のデータには、プログラミング言語で表されたロボット２０毎の制御コードが含まれている。
【００３１】
［ロボットの制御ユニットの機能的構成］
図７は、ロボット２０の制御ユニット２１の機能的構成を示すブロック図である。
図７に示すように、ロボット２０の制御ユニット２１は、ＣＰＵ１１の機能として、制御情報取得部２１１と、制御情報実行部２１２と、ロボットハードウェア制御部２１３と、を備えている。また、制御ユニット２１の記憶部１６には、制御情報記憶部２７１が形成される。
制御情報取得部２１１は、ワークフロー構築支援装置１０によって生成されたワークフローの制御情報において、当該ロボット２０が実行する制御情報を取得する。
制御情報実行部２１２は、制御情報取得部２１１によって取得された制御情報を実行し、ロボット２０全体を制御する。
【００３２】
ロボットハードウェア制御部２１３は、制御情報実行部２１２が制御情報を実行することにより、ロボットハードウェアユニット２２の動作が指示された場合に、ロボットハードウェアユニット２２に実装されているアクチュエータ、カメラ、センサあるいはスピーカ等のデバイスを制御する。
この結果、ロボット２０は、ワークフロー構築支援装置１０においてユーザが構築したワークフローに従う動作を実行するものとなる。
制御情報記憶部２７１には、制御情報取得部２１１によって取得された制御情報のデータが記憶される。
【００３３】
［動作］
次に、ワークフロー制御システム１の動作を説明する。
［ワークフロー構築支援処理］
図８は、ワークフロー制御システム１において、ワークフロー構築支援装置１０が実行するワークフロー構築支援処理の流れを示すフローチャートである。
ワークフロー構築支援処理は、入力部１４を介してワークフロー構築支援処理の実行が指示入力されることに対応して開始される。
【００３４】
ステップＳ１において、ＵＩ画面表示制御部１１１は、ワークフローを構築するための図形を用いた入力インターフェース（ＵＩ画面）を表示する。
ステップＳ２において、ＵＩ画面表示制御部１１１は、ユーザによるブロック及びコネクタの入力（フローの流れに応じた配置）を受け付ける。
ステップＳ３において、ＵＩ画面表示制御部１１１は、ユーザによるブロックのパラメータの設定を受け付ける。これにより、ブロックの具体的な内容が定義される。なお、パラメータが定義されたワークフローのデータは、識別情報を付されてワークフロー記憶部１７１に記憶される。
【００３５】
ステップＳ４において、中間情報生成部１１２は、ＵＩ画面において入力されたワークフローに基づいて、ワークフローの各ブロック及びコネクタを、文字情報として表される中間情報に変換する。なお、この中間情報は、ワークフローのデータの識別情報と対応付けて中間情報記憶部１７２に記憶される。
ステップＳ５において、制御情報生成部１１３は、中間情報生成部１１２によって生成された中間情報に基づいて、中間情報によって表されるワークフローにおいて、各ロボット２０が実行すべき動作を表す制御情報（プログラミング言語で表される制御コード）を生成する。なお、生成された制御情報は、ワークフローのデータの識別情報と対応付けて制御情報記憶部１７３に記憶される。
ステップＳ５の後、ワークフロー構築支援処理は終了となる。
【００３６】
［ロボット制御処理］
図９は、ワークフロー制御システム１において、ロボット２０の制御ユニット２１が実行するロボット制御処理の流れを示すフローチャートである。
ロボット制御処理は、入力部１４を介してロボット制御処理の実行が指示入力されることに対応して開始される。
ステップＳ１１において、制御情報取得部２１１は、ワークフロー構築支援装置１０によって生成されたワークフローの制御情報において、当該ロボット２０が実行する制御情報を取得する。
【００３７】
ステップＳ１２において、制御情報実行部２１２は、制御情報取得部２１１によって取得された制御情報を実行し、ロボット２０全体を制御する。
ステップＳ１３において、ロボットハードウェア制御部２１３は、ロボットハードウェアユニット２２に実装されているアクチュエータ、カメラ、センサあるいはスピーカ等のデバイスを制御する。これにより、ロボット２０がワークフローにおいて割り当てられている個別の役割を実行する。
ステップＳ１３の後、処理はステップＳ１２に移行する。
なお、ワークフロー制御システム１においてワークフローの実行が終了した場合、ロボット２０におけるロボット制御処理の実行も終了する。
【００３８】
［ワークフローの具体例］
次に、ワークフロー制御システム１において構築及び実行されるワークフローの具体例について説明する。
図１０は、ワークフロー制御システム１において構築及び実行されるワークフローの具体例の概念を示す模式図である。
図１０においては、ワークフロー構築支援装置１０と、接客用ロボット２０Ａと、調理用ロボット２０Ｂと、給仕用ロボット２０Ｃと、人体検出ユニット２０Ｄと、を含むワークフロー制御システム１が、喫茶店におけるワークフローに適用された場合の例を示している。なお、喫茶店内の各テーブルには、着席している来店客の注文時における音声等を検出するためのマイクアレイが設置されている。さらに、来店客の着席状態を検出するためのセンサ等を設置することとしてもよい。ワークフロー構築支援装置１０は、喫茶店外に設置することとしてもよい。
【００３９】
接客用ロボット２０Ａは、来店客に対して挨拶を行い、座席案内をして注文を取る役割を担っている。また、接客用ロボット２０Ａは、会計及び退店客を見送る役割を担っている。
調理用ロボット２０Ｂは、接客用ロボット２０Ａによって取られた注文を基に、飲み物を用意する役割を担っている。
給仕用ロボット２０Ｃは、調理用ロボット２０Ｂによって用意された飲み物を、注文者の客席に運搬する役割を担っている。
【００４０】
人体検出ユニット２０Ｄは、店舗の入り口に設置され、撮像センサによって画像センシングを行うことにより、来店客の入店を検出する。なお、人体検出ユニット２０Ｄは、いわゆるロボットの形態ではなく、専らセンシングを行う装置であるが、ここではロボット２０の１つとして取り扱うものとする。
【００４１】
このようなシステム構成において、喫茶店におけるワークフローを構築するユーザが、ワークフロー構築支援装置１０のＵＩ画面表示制御部１１１が表示するＵＩ画面上で、
（１）人体検出ユニット２０Ｄが来店客を検出する（来店客検出プロセス）。
（２）接客用ロボット２０Ａが来店客に挨拶をする（挨拶プロセス）。
（３）接客用ロボット２０Ａが座席案内をする（座席案内プロセス）。
（４）接客用ロボット２０Ａが注文を取る（注文受けプロセス）。
（５）調理用ロボット２０Ｂが飲み物を用意する（飲料用意プロセス）。
（６）給仕用ロボット２０Ｃが飲み物を運搬する（飲料運搬プロセス）。
（７）接客用ロボット２０Ａが会計をする（会計プロセス）。
（８）接客用ロボット２０Ａが退店客を見送る（見送りプロセス）。
という各プロセスのブロックを配置し、ブロック間をコネクタで接続して順番を設定することによりワークフローを決定したとする。
【００４２】
このとき、ユーザは、各ブロックにおける選択肢を設定することにより、自らが構築するワークフローに適したプロセスの内容を設定することができる。
例えば、来店客検出プロセスでは、「来店客の有無の検出」、「来店客の人数の検出」、「個別の来店客の識別」等、来店客の検出に関する選択肢のいずれかを選択して設定することができる。また、例えば、挨拶プロセスでは、「いらっしゃいませ」、「ようこそ」、「ご用件をお伺いします」等、挨拶を表すフレーズの選択肢のいずれかを選択して設定することができる。さらに、例えば、飲料用意プロセスでは、用意する飲料に合わせた異なる飲料容器の使用等を設定することができる。
【００４３】
すると、ワークフロー構築支援装置１０において、中間情報生成部１１２が、ワークフローの各ブロックを、ブロックの種別に基づく中間情報の形式に変換すると共に、ブロックに設定されたパラメータを中間情報に引数として含める処理を実行する。
即ち、来店客検出プロセス、挨拶プロセス、座席案内プロセス、注文受けプロセス、飲料用意プロセス、飲料運搬プロセス、会計プロセス及び見送りプロセスそれぞれの種別に対応する中間情報の形式において、ユーザによって設定された選択肢の内容がパラメータとして反映された中間情報が生成される。
【００４４】
そして、ワークフロー構築支援装置１０において、制御情報生成部１１３が、中間情報生成部１１２によって生成された中間情報に基づいて、中間情報によって表されるワークフローにおいて、各ロボット２０が実行すべき動作を表す制御情報（プログラミング言語で表される制御コード）を生成する。
【００４５】
即ち、制御情報生成部１１３は、
（Ａ）人体検出ユニット２０Ｄが、来店客を検出する来店客検出プロセスの制御情報
（Ｂ）接客用ロボット２０Ａが、来店客に挨拶をする挨拶プロセス、座席案内をする座席案内プロセス、注文を取る注文受けプロセス、会計をする会計プロセス、及び、退店客を見送る見送りプロセスを実行する制御情報
（Ｃ）調理用ロボット２０Ｂが、飲み物を用意する飲料用意プロセスの制御情報
（Ｄ）給仕用ロボット２０Ｃが、飲み物を運搬する飲料運搬プロセスの制御情報
をそれぞれ生成する。
【００４６】
これらの各制御情報には、各ロボット２０のロボットハードウェアユニット２２に備えられたデバイスを制御するための制御情報が含まれている。
そして、接客用ロボット２０Ａ、調理用ロボット２０Ｂ、給仕用ロボット２０Ｃ、及び、人体検出ユニット２０Ｄの各制御ユニット２１において、制御情報取得部２１１が各ロボット２０のための制御情報をワークフロー構築支援装置１０から取得する。
これにより、ワークフロー制御システム１において、ユーザによって構築されたワークフローを各ロボット２０が連携して実行するための実行環境が整えられる。
【００４７】
そして、接客用ロボット２０Ａ、調理用ロボット２０Ｂ、給仕用ロボット２０Ｃ、及び、人体検出ユニット２０Ｄの各制御情報実行部２１２が、各ロボット２０のための制御情報を実行することにより、各ロボット２０のロボットハードウェアユニット２２がそれぞれ制御され、ワークフロー制御システム１において、ユーザが構築したワークフローが開始される。
【００４８】
即ち、店舗に来店客があった場合、人体検出ユニット２０Ｄが来店客を検出する（来店客検出プロセス）。
すると、接客用ロボット２０Ａが来店客に挨拶し（挨拶プロセス）、座席案内をする（座席案内プロセス）。
さらに、接客用ロボット２０Ａが注文を取る（注文受けプロセス）。
続いて、調理用ロボット２０Ｂが飲み物を用意し（飲料用意プロセス）、給仕用ロボット２０Ｃが飲み物を運搬する（飲料運搬プロセス）。
そして、接客用ロボット２０Ａが会計をし（会計プロセス）、退店客を見送る（見送りプロセス）。
【００４９】
このように、ワークフロー制御システム１によれば、ユーザは、図形に基づく情報であるブロック及びコネクタをＵＩ画面で配置し、ブロックに個別の内容を表すパラメータを設定することで、自らの目的に適合するワークフローを決定することができる。なお、コネクタのパラメータは、接続元及び接続先が指定されることで、自動的に設定される。すると、ワークフロー構築支援装置１０において、ブロック及びコネクタに対応する中間情報が生成され、中間情報を基に複数のロボット２０の動作を制御するための制御情報が生成される。
したがって、ワークフロー制御システム１によれば、ロボット２０を用いたワークフローをより容易に構築することが可能となる。
また、中間情報から各ロボット２０を制御するための制御情報を生成することができるため、複数のロボット２０を用いたワークフローを容易に実現することができる。
【００５０】
以上のように構成されるワークフロー制御システム１は、ワークフロー構築支援装置１０及び複数のロボット２０を含み、ワークフロー構築支援装置１０において、ＵＩ画面表示制御部１１１と、中間情報生成部１１２と、制御情報生成部１１３と、を備える。
ＵＩ画面表示制御部１１１は、自然言語で表された処理内容に対応するブロック及び当該ブロック間の関係に対応するコネクタを図形として配置することにより、ロボット２０を含むワークフローの入力を受け付ける。
中間情報生成部１１２は、ブロック及びコネクタ毎に、ブロックが表す処理内容及びコネクタが表すブロック間の関係が文字情報として表現された中間情報を生成する。
制御情報生成部１１３は、中間情報に基づいて、プログラミング言語で表現されたロボット２０の動作を表す制御情報を生成する。
これにより、ユーザは、図形に基づく情報であるブロック及びコネクタを画面上で配置することで、自らの目的に適合するワークフローを決定することができる。すると、ブロック及びコネクタに対応する中間情報が生成され、中間情報を基にロボット２０の動作を制御するための制御情報が生成される。
したがって、本発明によれば、ロボット２０を用いたワークフローをより容易に構築することが可能となる。
【００５１】
中間情報生成部１１２は、ブロックの種別を判定し、判定されたブロックの種別毎に、予め用意された文字情報の形式に変換すると共に、ブロックに対して個別に設定されたパラメータを文字情報の形式における引数として含めることにより、中間情報を生成する。
これにより、ブロック及びコネクタから適切な内容の中間情報を生成することが可能となる。
【００５２】
中間情報生成部１１２は、ブロック及びコネクタの図形が表す属性を文字情報に置換することにより、中間情報を生成する。
これにより、図形に基づく情報であるブロック及びコネクタから文字情報である中間情報を容易に生成することが可能となる。
【００５３】
制御情報生成部１１３は、ロボット２０の制御に用いられる規定のオペレーティングシステムに対応した制御情報を生成する。
これにより、ロボット２０を容易に制御して、目的とするワークフローを実現することが可能となる。
【００５４】
ワークフローは、複数のロボット２０によって実行される。
制御情報生成部１１３は、ロボット２０を制御するプログラムが実行すべき順に記述された制御情報を、複数のロボット２０毎に生成する。
これにより、中間情報から各ロボット２０を制御するための制御情報を生成することができるため、複数のロボット２０を用いたワークフローを容易に実現することができる。
【００５５】
なお、本発明は、本発明の効果を奏する範囲で変形、改良等を適宜行うことができ、上述の実施形態に限定されない。
例えば、上述の実施形態において、中間情報をＪＳＯＮに基づく表現形式で生成するものとして説明したが、これに限られない。即ち、ブロック及びコネクタが有する情報を文字情報として表現でき、制御情報に変換可能な表現形式であれば、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等の構造化データといった各種表現形式で生成することとしてもよい。
また、上述の実施形態において、制御情報をＰｙｔｈｏｎによって表された制御コードとして生成する場合を例に挙げて説明したが、これに限られない。即ち、ロボット２０の制御に用いることができれば、Ｊａｖａ（登録商標）やＣ言語といった各種プログラミング言語で制御情報を生成することとしてもよい。
【００５６】
上述の実施形態における処理は、ハードウェア及びソフトウェアのいずれにより実行させることも可能である。
即ち、上述の処理を実行できる機能がワークフロー制御システム１に備えられていればよく、この機能を実現するためにどのような機能構成及びハードウェア構成とするかは上述の例に限定されない。
上述の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータにネットワークや記憶媒体からインストールされる。
【００５７】
プログラムを記憶する記憶媒体は、装置本体とは別に配布されるリムーバブルメディア、あるいは、装置本体に予め組み込まれた記憶媒体等で構成される。リムーバブルメディアは、例えば、磁気ディスク、光ディスク、または光磁気ディスク等により構成される。光ディスクは、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ），Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ等により構成される。光磁気ディスクは、ＭＤ（Ｍｉｎｉ−Ｄｉｓｋ）等により構成される。また、装置本体に予め組み込まれた記憶媒体は、例えば、プログラムが記憶されているＲＯＭやハードディスク等で構成される。
【００５８】
以上、本発明の実施形態について説明したが、上記実施形態は例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５９】
１  ワークフロー制御システム、１０  ワークフロー構築支援装置、１１  ＣＰＵ、１２  ＲＯＭ、１３  ＲＡＭ、１４  入力部、１５  出力部、１６  記憶部、１７  通信部、１１１  ユーザインターフェース（ＵＩ）画面表示制御部、１１２  中間情報生成部、１１３  制御情報生成部、１７１  ワークフロー記憶部、１７２  中間情報記憶部、１７３，２７１  制御情報記憶部、２０  ロボット、２１  制御ユニット、２１１  制御情報取得部、２１２  制御情報実行部、２１３  ロボットハードウェア制御部、２２  ロボットハードウェアユニット、８００  情報処理装置
【図１】
2019212053.tif 000003
【図２】
2019212053.tif 000004
【図３】
2019212053.tif 000005
【図４】
2019212053.tif 000006
【図５】
2019212053.tif 000007
【図６】
2019212053.tif 000008
【図７】
2019212053.tif 000009
【図８】
2019212053.tif 000010
【図９】
2019212053.tif 000011
【図１０】
2019212053.tif 000012