(57)【要約】【課題】料理の画像やテキストを含むレシピデータに基づいて調理ロボットを制御することができるようにする。【解決手段】本技術の一側面のデータ処理装置は、料理を撮影した画像データと、料理の食材および料理の調理工程のうちの少なくともいずれかを示すテキストデータとを含むレシピデータに基づいて、アームを備える調理ロボットが実行する調理動作を命令する命令コマンドを生成する装置である。本技術は、調理機能を有するロボットを制御するコンピュータに適用することができる。【選択図】図１
2020075301.tif 000002
【特許請求の範囲】
【請求項１】
料理を撮影した画像データと、前記料理の食材および前記料理の調理工程のうちの少なくともいずれかを示すテキストデータとを含むレシピデータに基づいて、アームを備える調理ロボットが実行する調理動作を命令する命令コマンドを生成するコマンド生成部を備える
データ処理装置。
【請求項２】
前記コマンド生成部は、前記食材と前記食材の調理方法とを対応付けた情報を含む調理データセットを参照して、前記命令コマンドを生成する
請求項１に記載のデータ処理装置。
【請求項３】
前記調理データセットは、前記調理方法と、前記調理方法に従って前記調理動作を行う際に用いる調理道具とを対応付けた情報である
請求項２に記載のデータ処理装置。
【請求項４】
前記調理データセットは、前記調理方法と、前記調理方法に従って前記調理動作を行う際に用いる調理道具と、前記調理道具の仕様とを対応付けた情報である
請求項２に記載のデータ処理装置。
【請求項５】
前記コマンド生成部は、前記調理ロボットの能力に関する仕様と前記調理データセットを参照して、前記命令コマンドを生成する
請求項２に記載のデータ処理装置。
【請求項６】
前記コマンド生成部は、調理済みの前記食材の盛り付け方法に関する情報を含む盛り付けデータセットを参照して、前記命令コマンドを生成する
請求項１に記載のデータ処理装置。
【請求項７】
前記盛り付けデータセットは、前記食材の識別子と、盛り付けに使われる食器における前記食材の位置を示す位置データとを対応付けた情報である
請求項６に記載のデータ処理装置。
【請求項８】
前記位置データは、前記食材の平面位置と前記食材の階層位置のうちの少なくともいずれかを示す情報である
請求項７に記載のデータ処理装置。
【請求項９】
前記位置データは、前記食材の平面位置として、前記食材を同一階層に所定のパターンで配置した平面配置パターンを示し、前記食材の階層位置として、前記食材を異なる階層に所定のパターンで配置した階層配置パターンを示す情報である
請求項８に記載のデータ処理装置。
【請求項１０】
前記画像データは、前記料理を撮影した静止画像、または、前記料理の調理工程を撮影した動画像のデータである
請求項１に記載のデータ処理装置。
【請求項１１】
前記レシピデータには、前記テキストデータとして、前記食材の名称を示すテキストデータ、および、前記調理工程を示すテキストデータのうちの少なくともいずれかが含まれる
請求項１に記載のデータ処理装置。
【請求項１２】
前記コマンド生成部は、前記画像データに写る前記料理の状態をゴール状態とした状態遷移に応じた前記命令コマンドを生成する
請求項１に記載のデータ処理装置。
【請求項１３】
前記コマンド生成部は、調理に用いることが可能な前記食材の状態が、前記レシピデータに記述された前記食材の状態を満たしていない場合、調理に用いることが可能な前記食材の状態に応じて前記状態遷移を設定し、前記命令コマンドを生成する
請求項１２に記載のデータ処理装置。
【請求項１４】
前記コマンド生成部は、前記料理を提供するユーザの嗜好に応じて前記状態遷移を設定し、前記命令コマンドを生成する
請求項１２に記載のデータ処理装置。
【請求項１５】
前記コマンド生成部は、前記調理動作の状態に応じて、前記状態遷移を自律的に変更し、前記命令コマンドを生成する
請求項１２に記載のデータ処理装置。
【請求項１６】
前記コマンド生成部は、前記調理動作の状態に応じて、前記食材と前記調理工程のうちの少なくともいずれかを変更した前記状態遷移を設定し、前記命令コマンドを生成する
請求項１５に記載のデータ処理装置。
【請求項１７】
前記コマンド生成部は、前記食材と前記食材の調理方法とを対応付けた情報を含む調理データセットを複数回参照しながら前記状態遷移を設定する
請求項１２に記載のデータ処理装置。
【請求項１８】
前記コマンド生成部は、前記調理ロボットにより調理された前記食材の盛り付け方法に関する情報を含む盛り付けデータセットを複数回参照しながら前記状態遷移を設定する
請求項１２に記載のデータ処理装置。
【請求項１９】
前記コマンド生成部は、複数の前記レシピデータを組み合わせた組み合わせレシピデータに基づいて、前記命令コマンドを生成する
請求項１に記載のデータ処理装置。
【請求項２０】
データ処理装置が、
料理を撮影した画像データと、前記料理の食材および前記料理の調理工程のうちの少なくともいずれかを示すテキストデータとを含むレシピデータに基づいて、アームを備える調理ロボットが実行する調理動作を命令する命令コマンドを生成する
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データ処理装置、データ処理方法に関し、特に、料理の画像やテキストを含むレシピデータに基づいて調理ロボットを制御することができるようにしたデータ処理装置、データ処理方法に関する。
【背景技術】
【０００２】
料理のレシピを公開しているサービスが存在する。ユーザは、カテゴリから探したり、食材の名前をキーワードとして入力したりして好みのレシピを検索することができる。レシピには、完成した料理の写真、食材、調理工程などの各種の情報が記載される。
【０００３】
このようなサービスによって提供されるレシピは、当然、人が見るために用意されたものである。大まかな手順の説明しか記載されていない場合でも、人であれば、過去の経験や他の料理の知識などから詳細な手順を推定し、調理を行うことができる。
【０００４】
ところで、AI(Artificial Intelligence)やセンシング技術などの発達に伴い、調理を自動的に行うロボットである調理ロボットが注目されている。調理ロボットの中には、人と同じように２本のアームを使って調理を行うものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１７−５０６１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
人が見るために用意されたレシピに基づいて調理ロボットを駆動させることができるとすれば便利である。レシピの記載の通りにアームなどを駆動させるためのプログラムを人が用意する必要がない。
【０００７】
本技術はこのような状況に鑑みてなされたものであり、料理の画像やテキストを含むレシピデータに基づいて調理ロボットを制御することができるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面のデータ処理装置は、料理を撮影した画像データと、前記料理の食材および前記料理の調理工程のうちの少なくともいずれかを示すテキストデータとを含むレシピデータに基づいて、アームを備える調理ロボットが実行する調理動作を命令する命令コマンドを生成するコマンド生成部を備える。
【０００９】
本技術の一側面においては、料理を撮影した画像データと、前記料理の食材および前記料理の調理工程のうちの少なくともいずれかを示すテキストデータとを含むレシピデータに基づいて、アームを備える調理ロボットが実行する調理動作を命令する命令コマンドが生成される。
【図面の簡単な説明】
【００１０】
【図１】本技術の一実施形態に係る制御システムの構成例を示す図である。
【図２】データ処理装置の配置例を示す図である。
【図３】調理ロボットの外観を示す斜視図である。
【図４】調理アームの様子を拡大して示す図である。
【図５】調理アームの外観を示す図である。
【図６】調理アームの各部の可動域の例を示す図である。
【図７】調理アームとコントローラの接続の例を示す図である。
【図８】レシピデータの例を示す図である。
【図９】レシピデータの例を示す図である。
【図１０】データ処理装置が行う全体の処理の流れを示す図である。
【図１１】状態の記述の例を示す図である。
【図１２】ゴール状態の記述の具体例を示す図である。
【図１３】状態シーケンスのプランニングの例を示す図である。
【図１４】調理全体シーケンスの例を示す図である。
【図１５】状態遷移の例を示す図である。
【図１６】データベースの例を示す図である。
【図１７】食材DBに格納される情報の例を示す図である。
【図１８】調理方法DBの構成例を示す図である。
【図１９】状態遷移DBに格納される情報の例を示す図である。
【図２０】アクションDBに格納される情報の例を示す図である。
【図２１】盛り付け方法DBに格納される情報の例を示す図である。
【図２２】アクションの表現例を示す図である。
【図２３】状態遷移を示す図である。
【図２４】アクションの様子を示す図である。
【図２５】データ処理装置のハードウェアの構成例を示すブロック図である。
【図２６】データ処理装置の機能構成例を示すブロック図である。
【図２７】調理ロボットの構成例を示すブロック図である。
【図２８】データ処理装置の制御処理について説明するフローチャートである。
【図２９】データ処理装置の制御処理について説明する、図２８に続くフローチャートである。
【図３０】アクションの選択の例を示す図である。
【図３１】アクション候補の例を示す図である。
【図３２】アクション候補の評価の例を示す図である。
【図３３】命令コマンドの生成の例を示す図である。
【図３４】調理ロボットの調理処理について説明するフローチャートである。
【図３５】レシピデータの加工の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本技術を実施するための形態について説明する。説明は以下の順序で行う。
１．調理ロボットの制御システム
２．状態シーケンスのプランニングとアクション
３．各装置の構成と動作
４．変形例
【００１２】
＜＜調理ロボットの制御システム＞＞
＜システム構成＞
図１は、本技術の一実施形態に係る制御システムの構成例を示す図である。
【００１３】
図１に示すように、制御システムは、データ処理装置１と調理ロボット２から構成される。調理ロボット２は、調理アームなどの駆動系の装置、および、各種のセンサを有し、調理を行う機能を搭載したロボットである。調理ロボット２は、例えば家庭内に設置される。
【００１４】
データ処理装置１は、調理ロボット２を制御する装置である。データ処理装置１はコンピュータなどにより構成される。
【００１５】
図１の左端に示すように、データ処理装置１による調理ロボット２の制御は、料理毎に用意されるレシピデータに基づいて行われる。レシピデータには、完成した料理を撮影した画像である料理画像、料理の名前、食材の名前、調理工程を説明する文章などが記述される。レシピデータは、それによって表示されるレシピを見て、人が調理を行うためにも用いられる。
【００１６】
なお、料理は、調理を経て出来上がる成果物のことを意味する。調理は、料理を作る過程や、料理を作る行為（作業）のことを意味する。
【００１７】
データ処理装置１は、人による調理にも用いられるレシピデータに基づいて調理ロボット２を制御し、料理を作らせることになる。
【００１８】
矢印Ａ１に示すように、例えば料理Ｘのレシピデータが入力された場合、データ処理装置１は、レシピデータの記述に基づいて、料理Ｘが完成するまでのプランニングを行う。
【００１９】
プランニングは、例えば、スタート状態からゴール状態までの状態遷移を設定するようにして行われる。スタート状態として、未調理の食材の状態が設定され、ゴール状態として、完成した料理Ｘの状態が設定される。状態の遷移は、調理ロボット２の動作などによって食材の状態が変化することにより生じることになる。
【００２０】
データ処理装置１は、現在状態から次の状態への遷移を生じさせるための動作を調理ロボット２にとらせるための命令コマンドを生成し、矢印Ａ２に示すように調理ロボット２に出力する。
【００２１】
調理ロボット２は、データ処理装置１から供給された命令コマンドに従って調理アームなどの各部を駆動し、調理に関する動作を行う。命令コマンドには、調理アームに設けられたモータのトルク、駆動方向、駆動量を制御する情報などが含まれる。
【００２２】
ゴール状態に到達するまでの間、データ処理装置１から調理ロボット２に対して命令コマンドが順次出力される。命令コマンドに応じた動作を調理ロボット２がとることにより、最終的に、料理Ｘが完成することになる。
【００２３】
このように、データ処理装置１は、調理ロボット２にとっては不完全な情報といえるレシピデータを命令コマンドに変換し、調理ロボット２の動作を制御する装置として機能する。レシピデータは、人が見て調理工程などを確認するために用意された情報であるから、調理ロボット２を制御するための情報としては不完全な情報といえる。
【００２４】
人が調理を行うためのレシピデータに基づいて調理ロボット２を制御することができるから、例えば制御システムの管理者は、調理ロボット２を制御するためのプログラムを料理毎に用意する必要がない。
【００２５】
人が調理を行うためのレシピデータは、レシピを公開するサービスのために用意されるなどして大量に存在する。ユーザは、多くの料理の中から選択した料理を調理ロボット２に作らせることができる。例えば、レシピデータは、レシピを公開するサービスを提供しているサーバから、ユーザによる選択に応じて取得され、データ処理装置１に入力される。
【００２６】
図２は、データ処理装置１の配置例を示す図である。
【００２７】
図２のＡに示すように、データ処理装置１は、例えば調理ロボット２の外部の装置として設けられる。図２のＡの例においては、データ処理装置１と調理ロボット２は、インターネットなどのネットワーク３を介して接続される。
【００２８】
データ処理装置１から送信された命令コマンドは、ネットワーク３を介して調理ロボット２により受信される。調理ロボット２からデータ処理装置１に対しては、調理ロボット２のカメラにより撮影された画像、調理ロボット２に設けられたセンサにより測定されたセンサデータなどの各種のデータがネットワーク３を介して送信される。
【００２９】
１台のデータ処理装置１に対して１台の調理ロボット２が接続されるのではなく、１台のデータ処理装置１に対して複数台の調理ロボット２が接続されるようにしてもよい。
【００３０】
図２のＢに示すように、データ処理装置１が調理ロボット２の筐体の内部に設けられるようにしてもよい。この場合、データ処理装置１が生成する命令コマンドに従って、調理ロボット２の各部の動作が制御される。
【００３１】
以下、主に、データ処理装置１が、調理ロボット２の外部の装置として設けられるものとして説明する。
【００３２】
＜調理ロボットの構成＞
図３は、調理ロボット２の外観を示す斜視図である。
【００３３】
図３に示すように、調理ロボット２は、横長直方体状の筐体１１を有するキッチン型のロボットである。調理ロボット２の本体となる筐体１１の内部に各種の構成が設けられる。
【００３４】
筐体１１の背面側には、筐体１１の上面から立設する形で調理補助システム１２が設けられる。薄板状の部材で区切ることによって調理補助システム１２に形成された各スペースは、冷蔵庫、オーブンレンジ、収納などの、調理アーム２１−１乃至２１−４による調理を補助するための機能を有する。
【００３５】
天板１１Ａには長手方向にレールが設けられており、そのレールに調理アーム２１−１乃至２１−４が設けられる。調理アーム２１−１乃至２１−４は、移動機構としてのレールに沿って位置を変えることが可能とされる。
【００３６】
調理アーム２１−１乃至２１−４は、円筒状の部材を関節部で接続することによって構成されるロボットアームである。調理に関する各種の作業が調理アーム２１−１乃至２１−４により行われる。
【００３７】
天板１１Ａの上方の空間が、調理アーム２１−１乃至２１−４が調理を行う調理空間となる。調理空間は、調理アーム２１−１乃至２１−４が調理を行う空間と完全に一致する空間だけでなく、そのような空間に包含される部分的な空間をも含む。
【００３８】
図３においては４本の調理アームが示されているが、調理アームの数は４本に限定されるものではない。以下、適宜、調理アーム２１−１乃至２１−４のそれぞれを区別する必要がない場合、まとめて調理アーム２１という。
【００３９】
図４は、調理アーム２１の様子を拡大して示す図である。
【００４０】
図４に示すように、調理アーム２１の先端には、各種の調理機能を有するアタッチメントが取り付けられる。調理アーム２１用のアタッチメントとして、食材や食器などを掴むマニピュレーター機能（ハンド機能）を有するアタッチメント、食材をカットするナイフ機能を有するアタッチメントなどの各種のアタッチメントが用意される。
【００４１】
図４の例においては、ナイフ機能を有するアタッチメントであるナイフアタッチメント３１−１が調理アーム２１−１に取り付けられている。ナイフアタッチメント３１−１を用いて、天板１１Ａの上に置かれた肉の塊がカットされている。
【００４２】
調理アーム２１−２には、食材を固定させたり、食材を回転させたりすることに用いられるアタッチメントであるスピンドルアタッチメント３１−２が取り付けられている。
【００４３】
調理アーム２１−３には、食材の皮をむくピーラーの機能を有するアタッチメントであるピーラーアタッチメント３１−３が取り付けられている。
【００４４】
スピンドルアタッチメント３１−２を用いて調理アーム２１−２により持ち上げられているジャガイモの皮が、ピーラーアタッチメント３１−３を用いて調理アーム２１−３によりむかれている。このように、複数の調理アーム２１が連携して１つの作業を行うことも可能とされる。
【００４５】
調理アーム２１−４には、マニピュレーター機能を有するアタッチメントであるマニピュレーターアタッチメント３１−４が取り付けられている。マニピュレーターアタッチメント３１−４を用いて、チキンを載せたフライパンが、オーブン機能を有する調理補助システム１２のスペースに運ばれている。
【００４６】
このような調理アーム２１による調理は、作業の内容に応じてアタッチメントを適宜取り替えて進められる。アタッチメントの取り替えは、例えば調理ロボット２により自動的に行われる。
【００４７】
４本の調理アーム２１のそれぞれにマニピュレーターアタッチメント３１−４を取り付けるといったように、同じアタッチメントを複数の調理アーム２１に取り付けることも可能とされる。
【００４８】
調理ロボット２による調理は、調理アーム用のツールとして用意された以上のようなアタッチメントを用いて行われるだけでなく、適宜、人が調理に使うツールと同じツールを用いて行われる。例えば、人が使うナイフをマニピュレーターアタッチメント３１−４によって掴み、ナイフを用いて食材のカットなどの調理が行われる。
【００４９】
＜調理アームの構成＞
図５は、調理アーム２１の外観を示す図である。
【００５０】
図５に示すように、調理アーム２１は、全体的に、細い円筒状の部材を、関節部となるヒンジ部で接続することによって構成される。各ヒンジ部には、各部材を駆動させるための力を生じさせるモータなどが設けられる。
【００５１】
円筒状の部材として、先端から順に、着脱部材５１、中継部材５３、およびベース部材５５が設けられる。着脱部材５１は、中継部材５３の長さの略１／５程度の長さを有する部材である。着脱部材５１の長さと中継部材５３の長さを合わせた長さが、ベース部材５５の長さとほぼ同じ長さとなる。
【００５２】
着脱部材５１と中継部材５３はヒンジ部５２によって接続され、中継部材５３とベース部材５５はヒンジ部５４によって接続される。中継部材５３の両端にはヒンジ部５２とヒンジ部５４が設けられる。
【００５３】
この例においては、３本の円筒状の部材によって調理アーム２１が構成されているが、４本以上の円筒状の部材によって構成されるようにしてもよい。この場合、中継部材５３が複数設けられる。
【００５４】
着脱部材５１の先端には、アタッチメントが着脱される着脱部５１Ａが設けられる。着脱部材５１は、各種のアタッチメントが着脱される着脱部５１Ａを有し、アタッチメントを動作させることによって調理を行う調理機能アーム部として機能する。
【００５５】
ベース部材５５の後端には、レールに取り付けられる着脱部５６が設けられる。ベース部材５５は、調理アーム２１の移動を実現する移動機能アーム部として機能する。
【００５６】
図６は、調理アーム２１の各部の可動域の例を示す図である。
【００５７】
楕円＃１で囲んで示すように、着脱部材５１は、円形断面の中心軸を中心として回転可能とされる。楕円＃１の中心に示す扁平の小円は、一点鎖線の回転軸の方向を示す。
【００５８】
円＃２で囲んで示すように、着脱部材５１は、ヒンジ部５２との嵌合部５１Ｂを通る軸を中心として回転可能とされる。また、中継部材５３は、ヒンジ部５２との嵌合部５３Ａを通る軸を中心として回転可能とされる。
【００５９】
円＃２の内側に示す２つの小円はそれぞれの回転軸の方向（紙面垂直方向）を示す。嵌合部５１Ｂを通る軸を中心とした着脱部材５１の可動範囲と、嵌合部５３Ａを通る軸を中心とした中継部材５３の可動範囲は、それぞれ例えば９０度の範囲である。
【００６０】
中継部材５３は、先端側の部材５３−１と、後端側の部材５３−２により分離して構成される。楕円＃３で囲んで示すように、中継部材５３は、部材５３−１と部材５３−２との連結部５３Ｂにおいて、円形断面の中心軸を中心として回転可能とされる。
【００６１】
他の可動部も、基本的に同様の可動域を有する。
【００６２】
すなわち、円＃４で囲んで示すように、中継部材５３は、ヒンジ部５４との嵌合部５３Ｃを通る軸を中心として回転可能とされる。また、ベース部材５５は、ヒンジ部５４との嵌合部５５Ａを通る軸を中心として回転可能とされる。
【００６３】
ベース部材５５は、先端側の部材５５−１と、後端側の部材５５−２により分離して構成される。楕円＃５で囲んで示すように、ベース部材５５は、部材５５−１と部材５５−２との連結部５５Ｂにおいて、円形断面の中心軸を中心として回転可能とされる。
【００６４】
円＃６で囲んで示すように、ベース部材５５は、着脱部５６との嵌合部５５Ｃを通る軸を中心として回転可能とされる。
【００６５】
楕円＃７で囲んで示すように、着脱部５６は、円形断面の中心軸を中心として回転可能となるようにレールに取り付けられる。
【００６６】
このように、先端に着脱部５１Ａを有する着脱部材５１、着脱部材５１とベース部材５５を連結する中継部材５３、後端に着脱部５６が接続されるベース部材５５は、それぞれ、ヒンジ部により回転可能に接続される。各可動部の動きが、調理ロボット２内のコントローラにより命令コマンドに従って制御される。
【００６７】
図７は、調理アームとコントローラの接続の例を示す図である。
【００６８】
図７に示すように、調理アーム２１とコントローラ６１は、筐体１１の内部に形成された空間１１Ｂ内において配線を介して接続される。図７の例においては、調理アーム２１−１乃至２１−４とコントローラ６１は、それぞれ、配線６２−１乃至６２−４を介して接続されている。可撓性を有する配線６２−１乃至６２−４は、調理アーム２１−１乃至２１−４の位置に応じて適宜撓むことになる。
【００６９】
このように、調理ロボット２は、調理アーム２１を駆動させることにより調理に関する各種の作業を行うことが可能なロボットである。
【００７０】
＜レシピデータ＞
図８および図９は、レシピデータの例を示す図である。
【００７１】
図８および図９のレシピデータは、「ニース風サラダ」のレシピデータである。「ニース風サラダ」のレシピデータには、図８に示すように、完成した「ニース風サラダ」を撮影した料理画像である料理画像Ｐ１と、食材を示すテキストデータが含まれる。
【００７２】
図８の例においては、「レタス１/２個、玉ねぎ１個、アボガド１個、・・・」のテキストデータが、３〜４人分の食材を示すテキストデータとして含まれている。料理の名前を示す「ニース風サラダ」のテキストデータも、「ニース風サラダ」のレシピデータに含まれる。
【００７３】
レシピデータには、通常、図９に示すような、大まかな調理工程を説明したテキストデータが、調理の様子を撮影した画像とともに含まれる。
【００７４】
図９の例においては、１ステップ目の作業に関する情報として、「トマトをカットし、レタスを一口サイズに手でちぎります。ツナ缶を開けておきます。」のテキストデータが画像Ｐ１１とともに含まれる。画像Ｐ１１は、１ステップ目の作業後の様子を撮影した画像である。
【００７５】
また、２ステップ目の作業に関する情報として、「キュウリをスライスし、玉ねぎを輪切りにします。ゆで卵を一口サイズにカットます。」のテキストデータが画像Ｐ１２とともに含まれる。画像Ｐ１２は、２ステップ目の作業後の様子を撮影した画像である。
【００７６】
３ステップ目の作業に関する情報として、「全ての材料をお皿に盛り、お好みのドレッシングをかけます。」のテキストデータが画像Ｐ１３とともに含まれる。画像Ｐ１３は、３ステップ目の作業後の様子として、完成した「ニース風サラダ」を撮影した画像である。画像Ｐ１３と料理画像Ｐ１は同じ画像である。
【００７７】
このように、調理ロボット２の動作を制御するためにデータ処理装置１が用いるレシピデータには、画像とテキストデータが少なくとも含まれる。レシピデータに含まれる画像は、静止画像であってもよいし、動画像であってもよい。
【００７８】
図９の調理工程の説明については、レシピデータに含まれるようにしてもよいし、含まれないようにしてもよい。図９の調理工程の説明が含まれない場合、図８に示す、料理画像Ｐ１と食材を示すテキストデータに基づいて調理ロボット２の動作が制御される。
【００７９】
以下、「ニース風サラダ」のレシピデータに基づく処理等について説明する。他の料理のレシピデータに基づく処理も同様にして行われる。
【００８０】
＜＜状態シーケンスのプランニングとアクション＞＞
＜レシピデータに基づくプランニング＞
図１０は、データ処理装置１が行う全体の処理の流れを示す図である。
【００８１】
「ニース風サラダ」のレシピデータが入力された場合、矢印Ａ１１，Ａ１２の先に示すように、データ処理装置１は、レシピデータに含まれる料理画像とテキストデータに基づいてゴール状態を設定する。
【００８２】
例えば、「ニース風サラダ」に必要な食材がテキストデータに基づいて推定される。また、「ニース風サラダ」の料理画像Ｐ１を解析することによって、レタス、玉ねぎ、アボガドなどの各食材の状態が推定される。各食材の状態には、食材に対してどのような調理が施されているのかといった調理の状態、調理済みの食材をどのように盛り付けているのかといった盛り付けの状態などが含まれる。料理画像Ｐ１に写る「ニース風サラダ」の状態が、ゴール状態として設定される。
【００８３】
図１１は、ゴール状態を含む各状態の記述の例を示す図である。
【００８４】
図１１に示すように、データ処理装置１が設定する各状態は、状態の識別子であるIDとパラメータセットとの組み合わせにより、離散的な状態として表される。
【００８５】
各状態は、適宜、IDとベクトルデータとの組み合わせや、IDとパラメータセットとベクトルデータとの組み合わせにより表される。
【００８６】
図１２は、ゴール状態の記述の具体例を示す図である。
【００８７】
「ニース風サラダ」のゴール状態であるゴール状態ＳＧには所定のIDが割り当てられる。
【００８８】
図１２に示すように、ゴール状態ＳＧを示すパラメータセットには、盛り付けに使う食器に関するパラメータが含まれる。食器に関するパラメータとして、食器のタイプを示すパラメータ、食器の数を示すパラメータが含まれる。
【００８９】
食器のタイプと食器の数は、例えば料理画像Ｐ１を解析することによって推定される。例えば、食器のタイプとして「大皿」、食器の数として「１」を示すパラメータが設定される。
【００９０】
ゴール状態ＳＧを示すパラメータセットには、食材としてのトマトに関するパラメータが含まれる。トマトに関するパラメータとして、トマトのカットの仕方を示すパラメータ、カット後のトマトの数を示すパラメータ、カット後のトマトの向き／配置を示すパラメータが含まれる。
【００９１】
食材にトマトが含まれることは、例えば、食材のテキストデータに基づいて推定される。トマトのカットの仕方、カット後のトマトの数、カット後のトマトの向き／配置は、調理工程を説明したテキストデータに基づいて、または、料理画像Ｐ１を解析することによって推定される。図１２の例においては、カット後のトマトの数が「６」であることを示すパラメータが設定されている。
【００９２】
ゴール状態ＳＧを示すパラメータセットには、食材としてのたまごに関するパラメータが含まれる。たまごに関するパラメータとして、たまごの調理後の状態を示すパラメータ、たまごのカットの仕方を示すパラメータ、カット後のたまごの数を示すパラメータ、カット後のたまごの向き／配置を示すパラメータが含まれる。
【００９３】
食材にたまごが含まれることは、例えば、食材のテキストデータに基づいて推定される。たまごの調理後の状態、たまごのカットの仕方、カット後のたまごの数、カット後のたまごの向き／配置は、調理工程を説明したテキストデータに基づいて、または、料理画像Ｐ１を解析することによって推定される。図１２の例においては、たまごの調理後の状態が「半熟」であり、たまごのカットの仕方が「ハーフカット」であることを示すパラメータが設定されている。
【００９４】
同様に、ゴール状態ＳＧを示すパラメータセットには、トッピングに関するパラメータ、ドレッシングに関するパラメータ、温度に関するパラメータが含まれる。
【００９５】
「ニース風サラダ」のゴール状態ＳＧは、レシピデータから推定されるこのようなパラメータのセットにより表される。スタート状態からゴール状態までの間の各状態も、IDとパラメータセットの組み合わせなどにより構成される。
【００９６】
図１０の説明に戻り、このような記述により表されるゴール状態ＳＧが設定された後、矢印Ａ１３の先に示すように、スタート状態からゴール状態までの状態シーケンスのプランニングが行われる。
【００９７】
状態シーケンスのプランニングは、矢印Ａ１４に示すように、レシピデータに含まれるテキストデータに基づいて行われる。状態シーケンスのプランニングには、適宜、料理画像Ｐ１や、調理工程の説明に含まれる画像などの画像データも用いられる。
【００９８】
状態シーケンスのプランニングが終わった場合、矢印Ａ１５の先に示すように、調理ロボット２の制御が行われる。調理ロボット２の制御にも、適宜、矢印Ａ１６に示すようにレシピデータの記述が用いられる。
【００９９】
状態シーケンスを構成する各状態間の遷移を生じさせるためのアクションを調理ロボット２に実行させるための制御が繰り返され、最終的に、矢印Ａ１７の先に示すように、ゴール状態ＳＧとして設定された「ニース風サラダ」の状態に到達する。ゴール状態ＳＧに到達するまでの間、適宜、矢印Ａ１８に示すように遷移シーケンスの変更が行われる。
【０１００】
図１３は、スタート状態からゴール状態までの状態シーケンスのプランニングの例を示す図である。
【０１０１】
右上に示す状態Ｓ０はスタート状態である。図１３の例においては、状態Ｓ０のパラメータセットは、「まるごと１つ」の「トマト」を示すパラメータ、「３枚」の「レタス」を示すパラメータ、「１つ」の「ツナ缶」を示すパラメータなどにより構成される。
【０１０２】
状態Ｓ０を示すパラメータセットは、例えば食材のテキストデータに基づいて設定される。食材のテキストデータに基づいて食材の準備が行われ、準備された食材を示す状態がスタート状態として設定されるようにしてもよい。
【０１０３】
矢印Ａ２１の先に示す状態Ｓ１は、状態Ｓ０の次の状態である。状態Ｓ１のパラメータセットは、「６つ切り（くし型）」の「６個」の「トマト」を「皿１」に並べた状態を示すパラメータ、開いた「ツナ缶」を示すパラメータなどにより構成される。
【０１０４】
状態Ｓ１を示すパラメータセットは、例えば、食材のテキストデータと、矢印Ａ３１に示す、調理工程の説明に含まれる１ステップ目の作業に関する情報とに基づいて設定される。図１３の左側に示す調理工程は、図９を参照して説明した調理工程と同じものである。
【０１０５】
上述したように、「ニース風サラダ」のレシピデータには、１ステップ目の作業に関する情報として、「トマトをカットし、レタスを一口サイズに手でちぎります。ツナ缶を開けておきます。」のテキストデータと、作業後の様子を示す画像Ｐ１１が含まれる。
【０１０６】
これらの情報を解析することにより、トマトをどのようにカットするのか、ツナ缶をどのような状態にしておくのかなどを推定することができ、状態Ｓ１のパラメータセットを設定することが可能となる。例えば画像Ｐ１１には、６つ切りにした６個のトマトを小皿に並べた様子が写っている。また、画像Ｐ１１には、開けたツナ缶の様子が写っている。
【０１０７】
矢印Ａ２２の先に示す状態Ｓ２は、状態Ｓ１の次の状態である。状態Ｓ２のパラメータセットは、「ハーフカット」の「４個」の「半熟」の「たまご」を「皿３」に並べた状態を示すパラメータ、「３mm」厚にスライス済みの「キュウリ」を「皿４」に並べた状態を示すパラメータなどにより構成される。
【０１０８】
状態Ｓ２を示すパラメータセットは、例えば、食材のテキストデータと、矢印Ａ３２に示す、調理工程の説明に含まれる１ステップ目と２ステップ目の作業に関する情報とに基づいて設定される。
【０１０９】
上述したように、「ニース風サラダ」のレシピデータには、２ステップ目の作業に関する情報として、「キュウリをスライスし、玉ねぎを輪切りにします。ゆで卵を一口サイズにカットます。」のテキストデータと、作業後の様子を示す画像Ｐ１２が含まれる。
【０１１０】
これらの情報を解析することにより、キュウリをどのようにカットするのか、たまごをどのような状態にしておくのかなどを推定することができ、状態Ｓ２のパラメータセットを設定することが可能となる。
【０１１１】
矢印Ａ２３の先に示すように、状態Ｓ２の次の状態はゴール状態ＳＧである。ゴール状態ＳＧを示すパラメータセットは、レシピデータに含まれる「ニース風サラダ」の料理画像Ｐ１、食材のテキストデータ、および、矢印Ａ３３に示す、調理工程に関する全ての情報に基づいて設定されたものである。
【０１１２】
このように、スタート状態からゴール状態までの状態シーケンスのプランニングは、例えば、レシピデータに記述されている調理工程の各ステップの説明を状態表現にいわば翻訳し、各状態を順に繋ぐことによって行われる。状態Ｓ０をスタート状態として、状態Ｓ１、状態Ｓ２を経由する状態遷移により、ゴール状態ＳＧとしての「ニース風サラダ」に到達することが可能となる。
【０１１３】
以下、適宜、レシピデータに基づいて設定される、スタート状態からゴール状態までの全体の状態シーケンスを、調理全体シーケンスという。
【０１１４】
図１４は、調理全体シーケンスの例を示す図である。
【０１１５】
図１４に示すように、「ニース風サラダ」のレシピデータに基づいて設定される調理全体シーケンスは、状態Ｓ０、状態Ｓ１、状態Ｓ２、ゴール状態ＳＧと、それぞれの状態間を結ぶエッジにより構成される。
【０１１６】
各エッジに相当する状態遷移は、状態Ｓ０、状態Ｓ１、状態Ｓ２、ゴール状態ＳＧのそれぞれの状態の間を結ぶ状態シーケンスである個別シーケンスにより表される。調理全体シーケンスを構成するある状態から次の状態までの状態遷移を生じさせるためには、通常、複数の食材の状態を変化させる必要がある。それぞれの食材の状態を変化させるための調理が、個別シーケンスにより表される。
【０１１７】
図１４の白抜き矢印に示すように、状態Ｓ０と状態Ｓ１の間、状態Ｓ１と状態Ｓ２の間、状態Ｓ２とゴール状態ＳＧの間のそれぞれの個別シーケンスは、個別シーケンス＃０乃至＃２として表される。個別シーケンス＃０乃至＃２のそれぞれも、複数の状態と、それぞれの状態間を結ぶエッジにより構成される。
【０１１８】
例えば、現在状態が状態Ｓ０である場合において、個別シーケンス＃０に従って状態遷移が行われることにより、状態Ｓ１に到達する。また、現在状態が状態Ｓ１である場合において、個別シーケンス＃１に従って状態遷移が行われることにより、状態Ｓ２に到達する。現在状態が状態Ｓ２である場合において、個別シーケンス＃２に従って状態遷移が行われることにより、ゴール状態ＳＧに到達する。
【０１１９】
調理全体シーケンスがレシピデータに基づいて設定されるのに対して、個別シーケンスは、基本的に、データベース（DB(Data Base)）に用意されている情報に基づいて設定される。例えばデータ処理装置１には、調理全体シーケンスを構成する状態間を繋ぐためのシーケンスである個別シーケンスに関する情報が予め用意されている。
【０１２０】
なお、スタート状態からゴール状態までの全体の状態シーケンスをレシピデータだけに基づいて完全にプランニングすることができる場合、個別シーケンスは不要となる。
【０１２１】
図１５は、状態遷移の例を示す図である。
【０１２２】
個別シーケンスを構成する各状態間の遷移は、図１５に示すように調理ロボット２のアクションにより生じる。状態遷移を生じさせるための調理ロボット２のアクションは、データ処理装置１が有するデータベースを参照して選択される。
【０１２３】
図１５の例においては、遷移前の状態である「ホールトマト」の状態から、遷移後の状態である「カット済みトマト」の状態までの遷移を生じさせるためのアクションとして、「カット」が選択されている。
【０１２４】
データ処理装置１が有するデータベースには、遷移前の状態と遷移後の状態の２つの状態と、２つの状態間の遷移を生じさせるためのアクションとを対応付けた情報が格納されている。データ処理装置１が有するデータベースについては後述する。
【０１２５】
なお、図１５のアクションと状態は、説明の便宜上、簡略化して示したものである。実際には、切り方、力の入れ方などの仕様を指定した、より詳細なアクションが選択される。
【０１２６】
図１５に示すような１つの食材を対象とした状態遷移が複数繋がれることによって個別シーケンスが構成され、そのような個別シーケンスによって、調理全体シーケンスを構成する状態間が繋がれることになる。
【０１２７】
＜データベースの例＞
図１６は、個別シーケンスの設定とアクションの実行に用いられるデータベースの例を示す図である。
【０１２８】
図１６に示すように、食材DB１０１、調理方法DB１０２、および盛り付け方法DB１０３が用意される。各データベースは、例えばデータ処理装置１に設けられる。
【０１２９】
データ処理装置１と調理ロボット２のいずれかに各データベースが設けられるようにしてもよいし、データ処理装置１と調理ロボット２の双方からアクセス可能なサーバに各データベースが設けられるようにしてもよい。食材DB１０１が調理ロボット２に設けられ、調理方法DB１０２と盛り付け方法DB１０３がデータ処理装置１に設けられるといったように、それぞれのデータベースが異なる装置に設けられるようにしてもよい。
【０１３０】
矢印Ａ５１の先に示すように、レシピデータに基づいて食材の準備が行われる。食材の準備が食材DB１０１を参照して行われる。
【０１３１】
食材DB１０１は、例えば所定の食材を対象としたアクションを行う場合において、対象となる食材を認識するために用いられる。食材の準備などのアクションを行うためには、食材の認識用の情報が用意されている必要がある。データベースに格納されている情報の詳細については後述する。
【０１３２】
食材が準備された後、矢印Ａ５２に示すように、状態シーケンスに従って、食材を対象としたカットなどの調理が行われる。食材を対象とした調理が、調理方法DB１０２を複数回参照して行われる。調理方法DB１０２は、食材の調理に関するアクションを行う場合だけでなく、上述した個別シーケンスの設定を行う場合にも用いられる。
【０１３３】
全ての食材の調理が終わった後、矢印Ａ５３に示すように、調理済みの食材の盛り付けが行われる。調理済みの食材の盛り付けが、盛り付け方法DB１０３を複数回参照して行われる。
【０１３４】
・食材DB１０１
図１７は、食材DB１０１に格納される情報の例を示す図である。
【０１３５】
図１７に示すように、食材DB１０１には、食材名と対応付けて食材の外観の画像データが格納される。
【０１３６】
図１７の例においては、「キュウリ」、「トマト」、「アボガド」、「ピーマン」のそれぞれの食材の画像データが示されている。食材の画像データとして、例えば、食材を撮影した画像を解析することによって抽出された、食材の特徴を示すデータが用意される。
【０１３７】
図１７においては１つの食材に対して１つの画像データが対応付けられているが、実際には、１つの食材に対して、大きさ、形状、色、柔らかさ、向きなどが異なる食材を撮影した複数の画像データが対応付けられる。
【０１３８】
例えば状態シーケンスのプランニングには、どのような食材が用意されているのかなどの、現在状態の推定が必要となる。現在状態の推定時に、食材DB１０１に格納されている情報が用いられる。
【０１３９】
データ処理装置１は、調理ロボット２のカメラにより撮影された画像を解析し、調理ロボット２の周りにあるそれぞれの食材の特徴を抽出する。データ処理装置１は、調理ロボット２の周りにある食材の特徴と、食材DB１０１に格納されている情報により表されるそれぞれの食材の特徴とのマッチングを行うことによって、調理ロボット２の周りにある食材を認識し、現在状態の推定を行う。
【０１４０】
食材DB１０１に格納されている情報は、アクションの実行時にも用いられる。例えば「キュウリ」を準備する場合、データ処理装置１は、食材DB１０１を参照することによって、「キュウリ」の画像データを読み出す。データ処理装置１は、読み出した画像データを命令コマンドに含めて調理ロボット２に送信する。
【０１４１】
調理ロボット２は、カメラにより撮影された画像を解析し、調理ロボット２の周りにあるそれぞれの食材の特徴を抽出する。調理ロボット２は、周りにある食材の特徴と、命令コマンドに含めてデータ処理装置１から送信されてきた「キュウリ」の画像データにより表される特徴とのマッチングを行うことによって、周りにある「キュウリ」の位置、向きなどを認識する。
【０１４２】
これにより、調理ロボット２は、「キュウリ」を掴んだり、所定の位置に移動させたりすることが可能となる。他の食材の準備も同様にして行われる。
【０１４３】
食材DB１０１に格納されている情報は、食材の準備だけでなく、適宜、食材を認識する必要がある各種のアクションの実行時にも参照される。
【０１４４】
・調理方法DB１０２
図１８は、調理方法DB１０２の構成例を示す図である。
【０１４５】
図１８に示すように、調理方法DB１０２は、状態遷移DB１１１とアクションDB１１２から構成される。
【０１４６】
状態遷移DB１１１は、調理前の状態から調理後の状態までの状態遷移に関する情報を格納したデータベースである。状態遷移DB１１１には、そのような状態遷移に関する情報が、例えば、食材毎、調理の仕方毎といったように、様々な状態の組み合わせに応じて用意される。状態遷移DB１１１に格納されている情報に基づいて、上述した個別シーケンスが設定される。
【０１４７】
一方、アクションDB１１２は、食材の状態遷移を生じさせるためのアクションの仕様に関する情報を格納したデータベースである。アクションDB１１２に格納されている情報に基づいて、食材の調理に関するアクションを実行させるための命令コマンドが生成される。
【０１４８】
調理方法DB１０２においては、各食材の状態遷移に関する情報と、それぞれの状態遷移を生じさせるためのアクションの仕様に関する情報が対応付けて管理される。
【０１４９】
図１９は、状態遷移DB１１１に格納される情報の例を示す図である。
【０１５０】
図１９に示すように、状態遷移DB１１１には、食材名、調理の仕方、および、調理前の状態から調理後の状態までの状態遷移の各情報が対応付けて格納される。状態遷移を構成する各状態は、例えば、上述したようにIDとパラメータセットにより表される。
【０１５１】
図１９の例においては、「キュウリ」、「トマト」、「アボガド」のそれぞれの食材に対して、切り方（カットの仕方）と、カット前の状態からカット後の状態までの状態遷移が対応付けられている。「キュウリ」の切り方としては、「薄切り」、「細切り」、「乱切り」が設定されている。
【０１５２】
例えば、「キュウリ」を「薄切り」にした状態を含む個別シーケンスを設定する場合、データ処理装置１は、「薄切り」にする前の状態から「薄切り」にした後の状態までの状態遷移に関する情報を状態遷移DB１１１から取得する。データ処理装置１は、取得した情報により表される状態遷移を含むように個別シーケンスを設定する。
【０１５３】
レシピデータの調理工程の説明には、上述したように「キュウリをスライスし、・・・」などの記述が含まれていることがある。そのような記述に基づいて、「キュウリ」を「薄切り」にした状態を含む個別シーケンスが設定されるようにしてもよい。
【０１５４】
他の食材についても同様に、調理の仕方毎の状態遷移に関する情報が状態遷移DB１１１に格納される。切り方以外にも、洗い方、皮のむき方、ゆで方、焼き方などの各種の調理の仕方の情報が格納される。
【０１５５】
このように、状態遷移DB１１１には、各食材を様々な方法で調理した場合の、調理前の状態から調理後の状態までの状態遷移に関する情報が格納される。状態遷移DB１１１に格納される情報は、様々な方法で調理したときの食材の状態を、上述したようなパラメータセットを用いて表現することによって生成される。
【０１５６】
状態遷移DB１１１に格納される情報の生成は、調理中の様子を撮影した動画を解析することによって所定の装置により行われるようにしてもよいし、データ処理装置１の管理者により手動で行われるようにしてもよい。
【０１５７】
図２０は、アクションDB１１２に格納される情報の例を示す図である。
【０１５８】
図２０に示すように、アクションDB１１２は、食材仕様情報のデータベースである食材Dynamics DB、調理道具仕様情報のデータベースである調理道具Dynamics DB、ロボット動作仕様情報のデータベースであるロボット動作Dynamics DBから構成される。
【０１５９】
食材仕様情報、調理道具仕様情報、ロボット動作仕様情報は、状態遷移DB１１１に格納されている情報により表される状態遷移を生じさせるためのアクション毎に対応付けて格納される。
【０１６０】
食材仕様情報は、アクションの対象となる食材の仕様に関する情報である。食材の仕様には、大きさ、形状、柔らかさなどの、食材の各種の状態が含まれる。
【０１６１】
食材Dynamics DBには、例えば、アクションの実行中の各時刻における食材の状態を示す食材仕様情報が格納される。
【０１６２】
調理道具仕様情報は、アクションに用いられるツール（調理道具）の仕様に関する情報である。ツールの仕様には、調理ロボット２が調理に使うアタッチメントなどの各種のツールの仕様、機能などが含まれる。アクションを行う際にツールの状態が変化する場合、その変化を示す情報が調理道具仕様情報に含まれる。
【０１６３】
調理道具Dynamics DBには、例えば、アクションの実行中の各時刻におけるツールの仕様、機能、変化の状態を対応付けた調理道具仕様情報が格納される。
【０１６４】
ロボット動作仕様情報は、アクションを行う際の、調理ロボット２の動作の仕様に関する情報である。調理ロボット２の動作の仕様には、アクションを実行する調理アーム２１のレール上の位置、調理アーム２１を構成する各モータのスピード、回転量、トルクなどが含まれる。調理ロボット２の動作の仕様には、アクションの実行中にフィードバックとして測定されるセンサデータも含まれる。
【０１６５】
調理アーム２１のレール上の位置、調理アーム２１を構成する各モータのスピード、回転量、トルク、フィードバックとなるセンサデータを、例えば、ベクトル表現を用いて表した情報がロボット動作仕様情報として用意される。
【０１６６】
調理アーム２１以外のハードウェアを用いてアクションが行われる場合、それぞれのハードウェアの動作の仕様に関する情報もロボット動作仕様情報として用意される。
【０１６７】
ロボット動作Dynamics DBには、例えば、アクションの実行中の各時刻における調理アーム２１の動作の仕様を示すロボット動作仕様情報が格納される。
【０１６８】
例えば、所定のツールを用いたアクションの実行時、対象となる食材の大きさによっては、アクションを実行する調理アーム２１を構成するモータの駆動量などが異なる。アクションDB１１２には、様々な状態の食材を対象として、様々なツールを用いて調理する場合の、調理ロボット２の動作に関する情報が格納される。
【０１６９】
すなわち、アクションを実行するために、どのような食材を対象として、どのようなツールのどのような機能を用いて、調理アーム２１をどのように動作させればよいのか示す情報がアクションDB１１２に格納されることになる。
【０１７０】
アクションDB１１２に格納される情報は、例えば、データ処理装置１の管理者が調理アーム２１の動作を調整しながら、様々な状態の食材を、様々なツールを用いて調理することによって生成される。
【０１７１】
様々な状態の食材を、様々なツールを用いて調理したときの様子を撮影した動画を解析することによって所定の装置により生成された情報がアクションDB１１２に格納されるようにしてもよい。
【０１７２】
食材仕様情報、調理道具仕様情報、ロボット動作仕様情報のそれぞれが、適宜、他の情報から推定されることによって生成されるようにしてもよい。
【０１７３】
例えば、ある状態の肉をナイフで２つに切り分けるというアクションを考えた場合、食材仕様情報と調理道具仕様情報が特定されていれば、おおよそのロボット動作仕様情報を推定することが可能となる。このようにして他の情報に基づいて推定された情報がアクションDB１１２に用意されるようにしてもよい。
【０１７４】
このように、調理方法DB１０２には、食材と、状態遷移によって表される調理方法とを対応付けたデータセットである状態遷移DB１１１が用意される。また、調理方法DB１０２には、調理方法と対応付けた形で、食材の仕様、調理方法に従って調理（アクション）を行う際に用いるツールの仕様、および、調理ロボット２の動作の仕様のデータセットであるアクションDB１１２が用意される。
【０１７５】
・盛り付け方法DB１０３
図２１は、盛り付け方法DB１０３に格納される情報の例を示す図である。
【０１７６】
図２１に示すように、盛り付け方法DB１０３には、料理と対応付けて、料理を完成させるために必要な調理済みの食材の識別子である食材IDが格納される。
【０１７７】
調理済みの食材に対しては、盛り付け位置に関する情報である盛り付け位置情報が設定される。盛り付け位置情報により、盛り付けに使われる食器における、各食材の平面上の位置と、レイヤ（階層）が表される。
【０１７８】
図２１の例においては、「ニース風サラダ」、「シーザーサラダ」、「ハンバーグ」のそれぞれの料理に関する情報が示されている。
【０１７９】
「ニース風サラダ」に対しては、調理済みの食材の識別子として、カット済みのレタスを示すID１、カット済みのトマトを示すID２、カット済みのキュウリを示すID３が対応付けられている。
【０１８０】
また、カット済みのレタスの位置を示す情報として「x1,y1,L0」が設定されている。「x1,y1」は、カット済みのレタスの平面上の位置を示し、「L0」は、最下層である１層目にカット済みのレタスを配置することを示す。
【０１８１】
また、カット済みのトマトの位置を示す情報として「x2,y2,L3」が設定されている。「x2,y2」は、カット済みのトマトの平面上の位置を示し、「L3」は４層目にカット済みのトマトを配置することを示す。
【０１８２】
カット済みのキュウリを含む他の食材についても同様に盛り付け位置を示す情報が設定される。
【０１８３】
例えば、「ニース風サラダ」に必要な「レタス」、「トマト」、「キュウリ」、・・・のカットが終わった場合、データ処理装置１は、調理済みの食材の盛り付けに関する状態シーケンスを設定する。データ処理装置１は、状態シーケンスに従って、盛り付け位置情報により示される位置に各食材を配置するための命令コマンドを生成し、調理ロボット２に出力する。
【０１８４】
このように、盛り付け方法DB１０３には、料理毎に、必要な食材と盛り付け位置を示すデータセットが格納される。盛り付け方法DB１０３に格納される情報は、例えば、レシピデータに含まれる料理画像を解析することによって生成される。
【０１８５】
画像に写っていない食材とその盛り付け位置については、適宜、一般的な盛り付け方法の知識として予め用意された情報に基づいて生成される。盛り付け方法DB１０３に格納される情報が、データ処理装置１の管理者により手動で設定されるようにしてもよい。
【０１８６】
食器における平面上の位置と階層位置の組み合わせを示す情報が盛り付け位置情報として用意されるものとしたが、食器における平面上の位置だけを示す情報、または、階層位置だけを示す情報が盛り付け位置情報として用意されるようにしてもよい。
【０１８７】
また、食材を同一階層に所定のパターンで配置した平面配置パターンを示す情報や、食材を異なる階層に所定のパターンで配置した階層配置パターンを示す情報が盛り付け位置情報として用意されるようにしてもよい。
【０１８８】
各データベースに格納されている情報が、調理ロボット２がアクションを実際に実行することに応じて適宜変更されるようにしてもよい。
【０１８９】
＜アクションの記述例＞
調理ロボット２の動作が状態シーケンスにより表現されるものとしたが、木構造により表現されるようにしてもよい。
【０１９０】
図２２は、アクションの表現の例を示す図である。
【０１９１】
図２２に示すように、１つのアクションが木構造で表現されるようにしてもよい。木構造で表現される各種のアクションに関する情報が、データ処理装置１の所定のデータベースに用意される。図２２に示す木構造は、１つのアクションである「Cut Method 1」を示す。
【０１９２】
「Cut Method 1」は、状態Ｓ１１としての「Select PickUp Tool」と、状態Ｓ１２としての「Select Cut Tools」に分岐する。状態Ｓ１１は、「Cut Method 1」のアクションを実行する調理アーム２１−１の状態である。また、状態Ｓ１２は、「Cut Method 1」のアクションを調理アーム２１−１と連携して実行する調理アーム２１−２の状態である。
【０１９３】
「Select PickUp Tool」は、例えば、食材を掴んだりすることに用いられるツールであるマニピュレーターアタッチメントを用いて行われる状態である。また、「Select Cut Tools」は、例えば、食材のカットに用いられるツールであるナイフアタッチメントを用いて行われる状態である。
【０１９４】
状態Ｓ１１と状態Ｓ１２の各状態が、リーフとなる複数の状態のシーケンスから構成される。
【０１９５】
図２２の例においては、状態Ｓ１１は、状態Ｓ１１−１としての「Find Target」、状態Ｓ１１−２としての「Pick up Target」、状態Ｓ１１−３としての「Move it The position」、状態Ｓ１１−４としての「Fix The target」のシーケンスから構成される。
【０１９６】
「Find Target」は、ターゲットとなる食材を探す状態であり、「Pick up Target」は、マニピュレーターアタッチメントにより食材を掴む状態である。「Move it The position」は、食材を所定の位置に移動させる状態であり、「Fix The target」は、マニピュレーターアタッチメントにより食材を固定する状態である。
【０１９７】
一方、状態Ｓ１２は、状態Ｓ１２−１としての「Find Target」、状態Ｓ１２−２としての「Place The Tool」、状態Ｓ１２−３としての「Move The Tool」のシーケンスから構成される。
【０１９８】
「Find Target」は、カットのターゲットとなる食材を探す状態であり、「Place The Tool」は、ナイフアタッチメントを食材の近くに動かす状態である。「Move it The position」は、食材の近くにあるナイフアタッチメントを食材に向けて動かすことによってカットを行う状態である。
【０１９９】
リーフとなる各状態は、スタート状態からゴール状態に至る図２３に示すような状態遷移により表される。
【０２００】
図２４は、アクションの様子を示す図である。
【０２０１】
図２４の例においては、マニピュレーターアタッチメントが装着された調理アーム２１−１により食材である肉の塊が固定され、ナイフアタッチメントが装着された調理アーム２１−２により肉がカットされている。
【０２０２】
マニピュレーターアタッチメントによって肉の塊を固定する調理アーム２１−１の動作は、図２２の記述に従って、「Select PickUp Tool」が実行されることによって実現される。また、ナイフアタッチメントによって肉をカットする調理アーム２１−２の動作は、図２２の記述に従って、「Select Cut Tools」が実行されることによって実現される。
【０２０３】
以上のような木構造によって表現されるアクションを組み合わせることによって、調理ロボット２の動作が制御されるようにしてもよい。
【０２０４】
木構造の表現を有するアクションが遷移前の状態と遷移後の状態に応じて選択され、個別シーケンスを構成する状態間のエッジとして設定されるようにしてもよい。この場合、状態シーケンスと木構造の表現を有するアクションとを組み合わせて用いることによって、調理ロボット２の動作が制御されることになる。
【０２０５】
以上のように、調理ロボット２の制御は、状態遷移や木構造を用いて行われる。DNN(Deep Neural Network)、RNN(Recurrent Neural Network)などのNNを用いて調理ロボット２の制御が行われるようにしてもよい。
【０２０６】
＜＜各装置の構成と動作＞＞
＜各装置の構成＞
・データ処理装置１の構成
図２５は、データ処理装置１のハードウェアの構成例を示すブロック図である。
【０２０７】
図２５に示すように、データ処理装置１はコンピュータにより構成される。CPU(Central Processing Unit)２０１、ROM(Read Only Memory)２０２、RAM(Random Access Memory)２０３は、バス２０４により相互に接続される。
【０２０８】
バス２０４には、さらに、入出力インタフェース２０５が接続される。入出力インタフェース２０５には、キーボード、マウスなどよりなる入力部２０６、ディスプレイ、スピーカなどよりなる出力部２０７が接続される。
【０２０９】
また、入出力インタフェース２０５には、ハードディスクや不揮発性のメモリなどよりなる記憶部２０８、ネットワークインタフェースなどよりなる通信部２０９、リムーバブルメディア２１１を駆動するドライブ２１０が接続される。
【０２１０】
以上のように構成されるコンピュータでは、CPU２０１が、例えば、記憶部２０８に記憶されているプログラムを入出力インタフェース２０５およびバス２０４を介してRAM２０３にロードして実行することにより、各種の処理が行われる。
【０２１１】
図２６は、データ処理装置１の機能構成例を示すブロック図である。
【０２１２】
図２６に示す機能部のうちの少なくとも一部は、図２５のCPU２０１により所定のプログラムが実行されることによって実現される。
【０２１３】
図２６に示すように、データ処理装置１においてはコマンド生成部２２１が実現される。コマンド生成部２２１は、レシピデータ取得部２３１、レシピデータ解析部２３２、ロボット状態推定部２３３、状態制御部２３４、データベース管理部２３５、およびコマンド出力部２３６から構成される。
【０２１４】
レシピデータ取得部２３１は、通信部２０９を制御し、レシピデータを管理するサーバと通信を行うなどしてレシピデータを取得する。レシピデータ取得部２３１が取得するレシピデータは、例えばユーザにより選択された料理のレシピデータである。
【０２１５】
レシピデータのデータベースが記憶部２０８に設けられているようにしてもよい。この場合、記憶部２０８に設けられるデータベースからレシピデータが取得される。レシピデータ取得部２３１により取得されたレシピデータはレシピデータ解析部２３２に供給される。
【０２１６】
レシピデータ解析部２３２は、レシピデータ取得部２３１により取得されたレシピデータに含まれる画像とテキストデータを解析する。レシピデータ解析部２３２による解析結果は状態制御部２３４に供給される。
【０２１７】
ロボット状態推定部２３３は、通信部２０９を制御し、調理ロボット２から送信されてきた画像とセンサデータを受信する。調理ロボット２からは、調理ロボット２のカメラにより撮影された画像と、調理ロボット２の所定の位置に設けられたセンサにより測定されたセンサデータが所定の周期で送信されてくる。調理ロボット２のカメラにより撮影された画像には、調理ロボット２の周囲の様子が写っている。
【０２１８】
ロボット状態推定部２３３は、調理ロボット２から送信されてきた画像とセンサデータを解析することによって、調理アーム２１の状態、食材の状態などの、調理ロボット２の周囲の状態を推定する。ロボット状態推定部２３３により推定された調理ロボット２の周囲の状態を示す情報は、状態制御部２３４に供給される。
【０２１９】
状態制御部２３４は、レシピデータ解析部２３２によるレシピデータの解析結果に基づいてゴール状態を設定する。状態制御部２３４は、ロボット状態推定部２３３により推定された状態を現在状態として、現在状態からゴール状態までの調理全体シーケンスのプランニングをレシピデータの解析結果に基づいて行う。
【０２２０】
また、状態制御部２３４は、データベース管理部２３５が管理する調理方法DB１０２（状態遷移DB１１１）を参照し、調理全体シーケンスを構成する状態間を繋ぐための状態シーケンスである個別シーケンスを設定する。
【０２２１】
状態制御部２３４は、遷移前の状態と遷移後の状態に応じたアクションを、調理方法DB１０２を参照して選択する。状態制御部２３４は、選択したアクションに関するロボット動作仕様情報をアクションDB１１２から読み出し、命令コマンドを生成する。
【０２２２】
状態制御部２３４により生成される命令コマンドは、遷移前の状態と遷移後の状態に応じたアクションを、ロボット動作仕様情報により表される仕様の通りに調理ロボット２に実行させるためのコマンドとなる。このように、状態制御部２３４は、命令コマンドを生成する機能を有する。状態制御部２３４により生成された命令コマンドはコマンド出力部２３６に供給される。
【０２２３】
なお、状態制御部２３４が生成する命令コマンドは、ある状態遷移を生じさせるためのアクション全体の実行を命令するコマンドであってもよいし、アクションの一部分の実行を命令するコマンドであってもよい。すなわち、１つのアクションが１つの命令コマンドに従って実行されるようにしてもよいし、複数の命令コマンドに従って実行されるようにしてもよい。
【０２２４】
データベース管理部２３５は、食材DB１０１、調理方法DB１０２、盛り付け方法DB１０３を管理する。食材DB１０１、調理方法DB１０２、盛り付け方法DB１０３は例えば記憶部２０８に構築される。
【０２２５】
コマンド出力部２３６は、通信部２０９を制御し、状態制御部２３４により生成された命令コマンドを調理ロボット２に送信する。
【０２２６】
・調理ロボット２の構成
図２７は、調理ロボット２の構成例を示すブロック図である。
【０２２７】
調理ロボット２は、調理ロボット２の動作を制御する制御装置としてのコントローラ６１（図７）に対して各部が接続されることによって構成される。図２７に示す構成のうち、上述した構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
【０２２８】
コントローラ６１に対しては、調理アーム２１の他に、カメラ２５１、センサ２５２、および通信部２５３が接続される。
【０２２９】
コントローラ６１は、CPU，ROM，RAM、フラッシュメモリなどを有するコンピュータにより構成される。コントローラ６１は、CPUにより所定のプログラムを実行し、調理ロボット２の全体の動作を制御する。上述したように、コントローラ６１によってデータ処理装置１が構成されるようにしてもよい。
【０２３０】
例えば、コントローラ６１は、通信部２５３を制御し、カメラ２５１により撮影された画像とセンサ２５２により測定されたセンサデータをデータ処理装置１に送信する。
【０２３１】
コントローラ６１においては、所定のプログラムが実行されることにより、命令コマンド取得部２６１、アーム制御部２６２が実現される。
【０２３２】
命令コマンド取得部２６１は、データ処理装置１から送信され、通信部２５３において受信された命令コマンドを取得する。命令コマンド取得部２６１により取得された命令コマンドはアーム制御部２６２に供給される。
【０２３３】
アーム制御部２６２は、命令コマンド取得部２６１により取得された命令コマンドに従って調理アーム２１の動作を制御する。
【０２３４】
カメラ２５１は、調理ロボット２の周囲の様子を撮影し、撮影によって得られた画像をコントローラ６１に出力する。カメラ２５１は、調理補助システム１２の正面、調理アーム２１の先端などの様々な位置に設けられる。
【０２３５】
センサ２５２は、温湿度センサ、圧力センサ、光センサ、距離センサ、人感センサ、測位センサ、振動センサなどの各種のセンサにより構成される。センサ２５２による測定は所定の周期で行われる。センサ２５２による測定結果を示すセンサデータはコントローラ６１に供給される。
【０２３６】
カメラ２５１とセンサ２５２が、調理ロボット２の筐体１１から離れた位置に設けられるようにしてもよい。
【０２３７】
通信部２５３は、無線LANモジュール、LTE(Long Term Evolution)に対応した携帯通信モジュールなどの無線通信モジュールである。通信部２５３は、データ処理装置１や、インターネット上のサーバなどの外部の装置との間で通信を行う。
【０２３８】
また、通信部２５３は、ユーザが使うスマートフォンやタブレット端末などの携帯端末と通信を行う。料理の選択などの、調理ロボット２に対するユーザの操作が携帯端末上の操作によって入力されるようにしてもよい。
【０２３９】
図２７に示すように、調理アーム２１にはモータ２７１とセンサ２７２が設けられる。
【０２４０】
モータ２７１は、調理アーム２１の各関節部に設けられる。モータ２７１は、アーム制御部２６２による制御に従って軸周りの回転動作を行う。モータ２７１の回転量を測定するエンコーダ、モータ２７１の回転をエンコーダによる測定結果に基づいて適応的に制御するドライバなども各関節部に設けられる。
【０２４１】
センサ２７２は、例えばジャイロセンサ、加速度センサ、タッチセンサなどにより構成される。センサ２７２は、調理アーム２１の動作中、各関節部の角速度、加速度などを測定し、測定結果を示す情報をコントローラ６１に出力する。調理ロボット２からデータ処理装置１に対しては、適宜、センサ２７２の測定結果を示すセンサデータも送信される。
【０２４２】
調理アーム２１の数などの、調理ロボット２の能力に関する仕様に関する情報は、所定のタイミングで調理ロボット２からデータ処理装置１に提供される。データ処理装置１においては、調理ロボット２の能力に関する仕様に応じたデータベースの情報を参照するなどして、上述したプランニングが行われる。データ処理装置１において生成される命令コマンドも、調理ロボット２の能力に関する仕様に応じたものとなる。
【０２４３】
＜各装置の動作＞
ここで、以上のような構成を有するデータ処理装置１と調理ロボット２の動作について説明する。
【０２４４】
・データ処理装置１の動作
はじめに、図２８、図２９のフローチャートを参照して、調理ロボット２の動作を制御するデータ処理装置１の処理について説明する。
【０２４５】
図２８、図２９の処理は、例えば、所定の料理を作ることがユーザにより選択されたときに開始される。
【０２４６】
ステップＳ１において、レシピデータ取得部２３１はレシピデータを取得する。
【０２４７】
ステップＳ２において、レシピデータ解析部２３２は、レシピデータ取得部２３１により取得されたレシピデータを解析する。
【０２４８】
ステップＳ３において、状態制御部２３４は、レシピデータ解析部２３２による解析結果に基づいて、レシピデータに含まれる料理画像に写る料理の状態をゴール状態として設定する。ゴール状態は、上述したように例えばIDとパラメータセットにより表される。
【０２４９】
ステップＳ４において、ロボット状態推定部２３３は、調理ロボット２から送信されてきた画像とセンサデータに基づいて現在状態を推定する。
【０２５０】
ステップＳ５において、状態制御部２３４は、ゴール状態の補正が必要であるか否かを判定する。
【０２５１】
ゴール状態の補正が必要であるとステップＳ５において判定した場合、ステップＳ６において、状態制御部２３４はゴール状態を補正する。
【０２５２】
例えば、ゴール状態として設定された「ニース風サラダ」の食材として「トマト」が必要であるものの、「トマト」が調理ロボット２の周囲にない場合、ゴール状態の補正が必要であるとして判定される。「トマト」が調理ロボット２の周囲にないことは、ロボット状態推定部２３３による現在状態の推定結果により特定される。
【０２５３】
この場合、状態制御部２３４は、例えば、「トマト」に関するパラメータをパラメータセットから削除することによって、ゴール状態を補正する。このように、調理に用いることが可能な食材の状態が、ゴール状態として設定された食材の状態を満たしていないといったように、到達することができない状態がゴール状態として設定されている場合、到達可能な状態になるようにゴール状態が補正される。食材を変更するようにゴール状態が補正されるのではなく、調理方法を変更するようにゴール状態が補正されるようにしてもよい。また、食材と調理方法の両方を変更するようにゴール状態が補正されるようにしてもよい。
【０２５４】
調理に用いることが可能な食材の状態がゴール状態を満たしていない場合、調理に用いることが可能な食材で作ることができる料理が新たに選択され、違う料理を作るための処理が続けられるようにしてもよい。
【０２５５】
ゴール状態の補正が必要ではないとステップＳ５において判定された場合、ステップＳ６の処理はスキップされる。
【０２５６】
ステップＳ７において、状態制御部２３４は、現在状態からゴール状態までの調理全体シーケンスのプランニングをレシピデータの解析結果に基づいて行う。
【０２５７】
図２９のステップＳ８において、状態制御部２３４は、サブゴール状態を選択する。例えば、調理全体シーケンスを構成する状態のうち、現在状態を基準として次の状態がサブゴール状態として選択される。
【０２５８】
ステップＳ９において、状態制御部２３４は、データベース管理部２３５が管理する状態遷移DB１１１を参照し、現在状態とサブゴール状態を繋ぐための個別シーケンスを設定する。
【０２５９】
図１９を参照して説明したように、状態遷移DB１１１には、各食材を様々な方法で調理したときの状態遷移に関する情報が格納されている。例えば、状態遷移DB１１１に格納されている情報により表される状態遷移を組み合わせることによって個別シーケンスが設定される。
【０２６０】
個別シーケンスを設定する際に、アクションDB１１２に格納されている情報が参照されるようにしてもよい。
【０２６１】
例えば、遷移前の状態ｓと遷移後の状態ｓ’を繋ぐ“状態遷移Ｔ”が見つかっていないものとする。この場合、状態制御部２３４は、遷移元の状態集合ＳＳ、遷移先の状態集合ＳＤを設定する。状態集合ＳＳには状態ｓが含まれ、状態集合ＳＤには状態ｓ’が含まれる。
【０２６２】
状態制御部２３４は、状態集合ＳＳに含まれる状態ｓｉを遷移元とする全てのアクションを、アクションDB１１２に情報が格納されているアクションの中から検索する。状態制御部２３４は、検索により見つかったアクションをそれぞれ状態ｓｉに適用し（順方向の状態遷移を仮想的に生じさせ）、遷移先の状態を状態集合ＳＳに追加する。
【０２６３】
状態集合ＳＤに含まれる状態の中に、状態集合ＳＳに追加した状態と同じ状態がある場合、状態制御部２３４は、状態ｓｉと、状態集合ＳＳに追加された状態を繋ぐ状態遷移を“状態遷移Ｔ”として選択する。
【０２６４】
また、状態集合ＳＤに含まれる状態の中に、状態集合ＳＳに追加した状態と同じ状態がない場合、状態制御部２３４は、状態集合ＳＤに含まれる状態ｓｊを遷移先とする全てのアクションを、アクションDB１１２に情報が格納されているアクションの中から検索する。状態制御部２３４は、検索により見つかったアクションをそれぞれ状態ｓｊに適用し（逆方向の状態遷移を仮想的に生じさせ）、遷移元の状態を状態集合ＳＤに追加する。
【０２６５】
状態集合ＳＳに含まれる状態の中に、状態集合ＳＤに追加した状態と同じ状態がある場合、状態制御部２３４は、状態ｓｊと、状態集合ＳＤに追加された状態を繋ぐ状態遷移を“状態遷移Ｔ”として選択する。
【０２６６】
ステップＳ１０において、状態制御部２３４は、調理方法DB１０２を参照し、現在状態から次の状態への状態遷移を生じさせるためのアクションを選択し、命令コマンドを生成する。アクションの選択の詳細については後述する。
【０２６７】
ステップＳ１１において、コマンド出力部２３６は、命令コマンドを調理ロボット２に送信し、状態制御部２３４により選択されたアクションを実行させる。
【０２６８】
ステップＳ１２において、ロボット状態推定部２３３は、調理ロボット２から送信されてきた画像とセンサデータに基づいて現在状態を推定する。
【０２６９】
ステップＳ１３において、状態制御部２３４は、ロボット状態推定部２３３により推定された現在状態に基づいて、次の状態までの状態遷移が完了したか否かを判定する。
【０２７０】
状態遷移が完了していないとステップＳ１３において判定した場合、ステップＳ１４において、状態制御部２３４は、状態遷移が不可能な状態であるか否かを判定する。
【０２７１】
状態遷移が不可能な状態ではないとステップＳ１４において判定された場合、ステップＳ１０に戻り、それ以降の処理が繰り返される。
【０２７２】
一方、状態遷移が不可能な状態であるとステップＳ１４において判定された場合、ステップＳ８に戻り、サブゴール状態が新たに選択される。
【０２７３】
例えば、カットのアクションを実行した結果、カットの対象になっていた食材が天板１１Ａから落ちてしまい、その食材のカットを続けることが不可能な状態になったことがロボット状態推定部２３３により推定されたものとする。この場合、状態遷移が不可能な状態であると判定され、その後、例えばカットの対象になっていた食材を使わない状態が新たなサブゴール状態として選択される。
【０２７４】
次の状態までの状態遷移が完了したとステップＳ１３において判定した場合、ステップＳ１５において、状態制御部２３４は、サブゴール状態に遷移したか否かを判定する。
【０２７５】
サブゴール状態に遷移していないとステップＳ１５において判定された場合、ステップＳ１０に戻り、個別シーケンスに従って状態遷移を行うように以上の処理が繰り返される。
【０２７６】
サブゴール状態に到達したとステップＳ１５において判定した場合、ステップＳ１６において、状態制御部２３４は、ゴール状態に到達したか否かを判定する。
【０２７７】
ゴール状態に到達していないとステップＳ１６において判定された場合、ステップＳ５に戻り、それ以降の処理が繰り返される。すなわち、１つのサブゴール状態に到達する毎に、ゴール状態の補正が必要であるか否かが判定され、適宜、ゴール状態を補正して処理が進められる。
【０２７８】
ゴール状態が補正されることに連動して、調理全体シーケンスを構成する、ゴール状態までのそれぞれの状態が補正されるようにしてもよい。
【０２７９】
ゴール状態に到達したとステップＳ１６において判定された場合、処理は終了となる。このとき、現在状態は、ゴール状態として設定された料理が完成した状態となる。
【０２８０】
以上のように、調理ロボット２の制御は、状態遷移が生じる毎に、ゴール状態を自律的に補正（変更）しながら進められる。到達可能な状態がゴール状態になるように補正が行われるから、料理が未完成のまま、処理が終了されることはない。
【０２８１】
ロボットを対象とした制御の方法として、例えば、一度設定したゴール状態に到達できない状態になったときには、ゴール状態に到達することを諦め、処理を終了させる方法がある。
【０２８２】
仮に、調理ロボット２の状態がゴール状態に到達できない状態になったことに応じて処理を終了させるとした場合、それまでに使った食材が無駄になってしまう。
【０２８３】
ゴール状態を適宜補正しながら処理を進め、ゴール状態に必ず到達するように調理ロボット２を制御することにより、食材の無駄が生じるのを防ぐことが可能となる。
【０２８４】
・アクションの選択
図３０は、図２９のステップＳ１０において行われるアクションの選択の例を示す図である。
【０２８５】
調理ロボット２に実行させるアクションの選択は、調理方法DB１０２を参照して行われる。上述したように、データベース管理部２３５が管理する調理方法DB１０２おいては、個別シーケンスを構成する状態遷移と、アクションの仕様とが対応付けて管理されている。
【０２８６】
図３０の左端に示すように、状態制御部２３４は、遷移前の状態のIDと遷移後の状態のIDとのペア（<from_state_id, to_state_id>）をキーとして調理方法DB１０２の検索を行う。検索を行うことにより、キーとしたIDのペアと対応付けて管理されているアクションがアクション候補として取得される。
【０２８７】
例えば、現在状態を遷移前の状態とし、個別シーケンスにおいて現在状態の次の状態を遷移後の状態としたIDのペアに応じたアクション候補が取得される。状態を示すパラメータセットにも基づいてアクション候補が取得されるようにしてもよい。
【０２８８】
状態制御部２３４は、複数のアクション候補が取得された場合、それぞれのアクション候補に応じたアクションを行った場合の状態遷移を評価する。状態遷移の評価に用いる評価器が、それぞれのアクション候補に紐付けた形で用意されている。
【０２８９】
吹き出し＃１１に示すように、アクション候補の評価結果は、成功率、分散値、アクションの実行にかかる時間、アクション実行後の片付けにかかる負荷などにより表される。
【０２９０】
状態制御部２３４は、例えば、評価結果が最もよい状態遷移を生じさせるアクション候補を、調理ロボット２に実行させるアクションとして選択する。例えば、成功率の高いアクション候補の方が、成功率の低いアクション候補より高い評価結果となる。状態遷移の評価には、適宜、現在状態に応じた制約、優先度なども用いられる。
【０２９１】
図３１は、アクション候補の例を示す図である。
【０２９２】
図３１に示すように、遷移前の状態が「whole tomato」であり、遷移後の状態が「1/8 tomato wedge」である場合、それらの状態のIDのペアをキーとして検索を行うことにより、「cut by a knife」のアクション候補が取得される。
【０２９３】
他のアクション候補として、吹き出し＃２１に示すように「cut by scissors」、「cut by a slicer」、「tear by hands」が取得される。
【０２９４】
図３２は、アクション候補の評価の例を示す図である。
【０２９５】
「cut by a knife」のアクション候補に紐付けられた評価器が用いられることにより、図３２に示すように、「cut by a knife」のアクション候補の評価結果が出力される。図３２の例においては、「cut by a knife」のアクション候補の成功率が９９％であり、アクションの実行にかかる時間が２０秒とされている。また、アクション実行後の片付けにかかる負荷が０．５とされている。
【０２９６】
評価結果を構成するそれぞれの要素に対して重み付けが行われ、アクション候補の評価が行われるようにしてもよい。
【０２９７】
図２９のステップＳ１０においては、例えば、このような評価に基づいて１つのアクションが選択される。
【０２９８】
・命令コマンドの生成
調理ロボット２に実行させるアクションが選択された後、アクションDB１１２に格納されている情報に基づいて命令コマンドが生成されるものとしたが、NN(Neural Network)を用いて命令コマンドが生成されるようにしてもよい。
【０２９９】
図３３は、命令コマンドの生成の例を示す図である。
【０３００】
図３３に示すように、命令コマンドの生成に用いられるNNがアクション毎に用意される。命令コマンドの生成に用いられるNNは、例えば、遷移前の状態と遷移後の状態のそれぞれの状態を示すパラメータセット、現在状態を示す情報などを入力として、命令コマンドを出力するNNである。
【０３０１】
現在状態は、例えば、調理ロボット２により撮影された画像を変換して得られたベクトルデータ、調理ロボット２により計測されたセンサデータを変換して得られたベクトルデータなどにより表される。ベクトルデータの時系列などの様々な学習用データを用いた学習によってアクション毎のNNが予め生成され、例えばデータベース管理部２３５により管理されている。
【０３０２】
図３３のNNは「cut by a knife」のアクション用のNNである。「cut by a knife」のアクションが選択された場合、「cut by a knife」のアクション用のNNに対しては、矢印Ａ１０１に示すように、調理ロボット２により撮影された画像Ｐが他の情報とともに入力される。画像Ｐは、「トマト」に「ナイフ」をあてた様子を撮影した画像である。
【０３０３】
「cut by a knife」のアクション用のNNから出力された所定の命令コマンドが調理ロボット２に送信され、実行されることにより、矢印Ａ１０２の先に示すように、次の状態に遷移するためのアクションが行われる。
【０３０４】
・調理ロボット２の動作
次に、図３４のフローチャートを参照して、調理ロボット２の調理処理について説明する。
【０３０５】
図３４に示す処理は、例えば、データ処理装置１から送信された命令コマンドが通信部２５３において受信されたときに開始される。
【０３０６】
ステップＳ３１において、命令コマンド取得部２６１は、データ処理装置１から送信されてきた命令コマンドを取得する。
【０３０７】
ステップＳ３２において、アーム制御部２６２は、命令コマンドに従って調理アーム２１の動作を制御する。その後、ステップＳ３１に戻り、データ処理装置１から命令コマンドが送信されてくる毎に以上の処理が繰り返される。
【０３０８】
以上の一連の処理により、データ処理装置１は、レシピデータに含まれる画像とテキストデータから、料理に使う食材、それぞれの食材の調理方法、調理済みの食材の盛り付け方法を推定することができる。
【０３０９】
食材の様々な状態に応じた調理方法に関する情報などがデータベースに用意されるため、データ処理装置１は、様々の状態に対応した形で調理を行わせることができる。データベースに用意されている情報は、人が持っている、調理に関する知識に相当する情報といえるものである。
【０３１０】
上述したように、食材DB１０１には、人が持っている、食材の視覚情報に相当する画像が用意されている。また、調理方法DB１０２には、調理の種類、調理の進め方などの、調理方法の知識に相当する情報が用意されている。また、盛り付け方法DB１０３には、盛り付け方の知識に相当する情報が用意されている。
【０３１１】
データ処理装置１は、レシピデータには表現されていない内容を、そのような知識に相当する情報でいわば補うことにより、様々の状態に対応した形で調理を行わせることが可能となる。
【０３１２】
一方、調理ロボット２は、データ処理装置１による推定結果に基づいて、それぞれの食材を調理し、調理済みの食材を盛り付けることによって、料理を完成させることができる。状態遷移のプランニングが繰り返し行われるため、調理ロボット２は、どのような状態になった場合でも、料理を完成させることが可能となる。
【０３１３】
このように、図１の制御システムにおいては、画像とテキストデータを含み、ロボットを制御するには不完全な情報といえるレシピデータに基づいて、調理ロボット２に調理を行わせるといったことが実現される。
【０３１４】
＜＜変形例＞＞
レシピデータとデータベースに用意されている情報に基づいて調理のプランニングが行われるものとしたが、ユーザの嗜好をも考慮してプランニングが行われるようにしてもよい。例えば、ユーザの好きな食材を加えたり、嫌いな食材を除いたりしてプランニングが行われる。
【０３１５】
調理に使うことが可能な食材の種類や数などの制約に応じて食材を変えたり、食材の量を変えたりしてプランニングが行われるようにしてもよい。
【０３１６】
エンターテインメント性を有する調理が行われるようにしてもよい。例えば、カットを実行する前に、カットの仕方を音声で説明したり、料理が完成したときに音楽を再生したりする処理が調理ロボット２により行われることにより、調理ロボット２の調理にエンターテインメント性を持たせることが可能となる。
【０３１７】
１つのレシピデータに基づいて１つの料理を作る場合について説明したが、複数のレシピデータがデータ処理装置１に入力され、複数のレシピデータに基づいて料理のプランニングなどが行われるようにしてもよい。複数のレシピデータが入力された場合、レシピデータを加工し、１つのレシピデータに組み合わせる処理がデータ処理装置１において行われる。
【０３１８】
図３５は、レシピデータの加工の例を示す図である。
【０３１９】
複数種類の料理を作る場合、１種類ずつ順に作るのではなく、複数種類の料理を作るための調理が並行に進められる。
【０３２０】
例えば料理Ａと料理Ｂを作ることが選択された場合、状態制御部２３４は、図３５に示すように、料理Ａのレシピデータと料理Ｂのレシピデータを組み合わせ、料理Ａと料理Ｂを作るためのレシピデータを生成する。
【０３２１】
加工後のレシピデータにおいては、料理Ａを作るための作業と料理Ｂを作るための作業が前後して組み合わされたものとなっている。
【０３２２】
調理アーム２１の数や利用可能なアタッチメントの種別によっては、料理Ａを作るためのある作業中に、料理Ｂを作るための他の作業を行うことができることがある。
【０３２３】
複数種類の料理を作る場合に、それぞれの料理を作るための作業が適宜並行して行われるようにレシピデータの記述内容を変更することにより、調理時間を短縮することが可能となる。
【０３２４】
＜コンピュータの構成例＞
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０３２５】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、汎用のパーソナルコンピュータなどにインストールされる。
【０３２６】
インストールされるプログラムは、光ディスク（CD-ROM(Compact Disc-Read Only Memory)，DVD(Digital Versatile Disc)等）や半導体メモリなどよりなる図２５に示されるリムーバブルメディア２１１に記録して提供される。また、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供されるようにしてもよい。プログラムは、ROM２０２や記憶部２０８に、あらかじめインストールしておくことができる。
【０３２７】
コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０３２８】
なお、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０３２９】
本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【０３３０】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０３３１】
例えば、本技術は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０３３２】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０３３３】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【符号の説明】
【０３３４】
１  データ処理装置，  ２  調理ロボット，  ２１−１乃至２１−４  調理アーム，  ６１  コントローラ，  ２２１  コマンド生成部，  ２３１  レシピデータ取得部，  ２３２  レシピデータ解析部，  ２３３  ロボット状態推定部，  ２３４  状態制御部，  ２３５  データベース管理部，  ２３６  コマンド出力部，  ２５１  カメラ，  ２５２  センサ，  ２５３  通信部，  ２６１  命令コマンド取得部，  ２６２  アーム制御部
【図１】
2020075301.tif 000003
【図２】
2020075301.tif 000004
【図３】
2020075301.tif 000005
【図４】
2020075301.tif 000006
【図５】
2020075301.tif 000007
【図６】
2020075301.tif 000008
【図７】
2020075301.tif 000009
【図８】
2020075301.tif 000010
【図９】
2020075301.tif 000011
【図１０】
2020075301.tif 000012
【図１１】
2020075301.tif 000013
【図１２】
2020075301.tif 000014
【図１３】
2020075301.tif 000015
【図１４】
2020075301.tif 000016
【図１５】
2020075301.tif 000017
【図１６】
2020075301.tif 000018
【図１７】
2020075301.tif 000019
【図１８】
2020075301.tif 000020
【図１９】
2020075301.tif 000021
【図２０】
2020075301.tif 000022
【図２１】
2020075301.tif 000023
【図２２】
2020075301.tif 000024
【図２３】
2020075301.tif 000025
【図２４】
2020075301.tif 000026
【図２５】
2020075301.tif 000027
【図２６】
2020075301.tif 000028
【図２７】
2020075301.tif 000029
【図２８】
2020075301.tif 000030
【図２９】
2020075301.tif 000031
【図３０】
2020075301.tif 000032
【図３１】
2020075301.tif 000033
【図３２】
2020075301.tif 000034
【図３３】
2020075301.tif 000035
【図３４】
2020075301.tif 000036
【図３５】
2020075301.tif 000037