(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-11-15
(45)【発行日】2024-11-25
(54)【発明の名称】ロボット動作生成支援装置、ロボット動作生成支援システム、及びロボット動作生成支援プログラム
(51)【国際特許分類】
B25J 13/00 20060101AFI20241118BHJP
B25J 9/22 20060101ALI20241118BHJP
【FI】
B25J13/00 Z
B25J9/22 A
(21)【出願番号】P 2024529701
(86)(22)【出願日】2024-01-05
(86)【国際出願番号】 JP2024000051
【審査請求日】2024-05-17
【早期審査対象出願】
(73)【特許権者】
【識別番号】515075692
【氏名又は名称】リバーフィールド株式会社
(74)【代理人】
【識別番号】110002055
【氏名又は名称】弁理士法人iRify国際特許事務所
(72)【発明者】
【氏名】菅野 貴皓
【審査官】松浦 陽
(56)【参考文献】
【文献】国際公開第2023/162164(WO,A1)
【文献】米国特許出願公開第2023/0311335(US,A1)
【文献】中国特許出願公開第116911552(CN,A)
【文献】中国特許出願公開第117033025(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/42 - 19/46
(57)【特許請求の範囲】
【請求項1】
対象物に対して動作を行うロボットのロボット動作生成支援装置であって、
前記ロボット制御用のAPIドキュメントと対象物データベースの情報を記憶する記憶手段と、
前記ロボットの前記対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得するテキストデータ取得手段と、
前記テキストデータ取得手段で取得したテキストデータに、前記ロボット制御用の前記APIドキュメント及び前記対象物データベースの情報を付加して合成テキストデータを生成する合成テキストデータ生成手段と、
前記合成テキストデータ
生成手段で生成した合成テキストデータを自然言語処理部に入力し、前記自然言語処理部から前記結果物を得るための前記ロボットの動作のソースコードの出力を得るソースコード取得手段と、
前記ソースコード取得手段で取得したソースコードを使用して、仮想環境で前記ロボットを動作させるシミュレーションを行うシミュレーション手段と、
前記シミュレーションにおいて前記結果物を得られた場合は、前記ソースコードを前記ロボットに送信する送信手段と、
前記シミュレーションにおいて前記結果物を得られなかった場合は、前記シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、前記ソースコードの修正に必要な情報を前記自然言語処理部に再入力して前記ソースコードを修正するソースコード修正手段と、
を備え
、
前記ロボット制御用のAPIドキュメントは、前記ロボットが行う動作及び検出を示すコマンドの書式と、前記動作および検出処理内容を表す自然言語データと、を対応付けて有し、前記コマンドは、実行を依頼する作業を構成する動作及び検出処理を含み、
前記対象物データベースは、前記検出を示すコマンドで引数にとれる前記対象物の名称を含み、かつ実行を依頼する作業で登場し得る名詞を含み、
前記合成テキストデータは、前記テキストデータ、前記APIドキュメント、前記対象物データベースの情報のそれぞれに関連付けられた説明文を表す自然言語データを含み、
前記自然言語処理部は、ソースコードを含んだデータにより学習したLLMを用いて、自然言語からソースコードを自動生成し、
前記異常情報は、前記シミュレーション中に異常が生じたことを表す自然言語データと、前記シミュレーション中に前記ロボットが実行できなかった動作内容を表す自然言語データと、前記動作内容が実行できなかった原因を表す自然言語データとを含む、
ロボット動作生成支援装置。
【請求項2】
前記ソースコード修正手段は、
前記シミュレーション手段によって前記異常情報に基づいたフィードバックデータを生成し、前記ソースコード取得手段によって前記フィードバックデータを前記自然言語処理部に入力し、前記自然言語処理部から修正されたソースコードの出力を得る、
請求項1に記載のロボット動作生成支援装置。
【請求項3】
前記シミュレーション手段は、前記ソースコード修正手段によって得られたソースコードを使用して、新たにシミュレーションを行う、
請求項2に記載のロボット動作生成支援装置。
【請求項4】
前記ソースコード取得手段で取得したソースコードを実行するインタプリタ手段をさらに備え、
前記インタプリタ手段は、前記シミュレーション手段によるシミュレーションの前に、前記ソースコード取得手段で取得したソースコードを実行し、
前記実行が正常に終了した場合、前記実行したソースコードを使用して、前記シミュレーション手段でシミュレーションを行う、
請求項1に記載のロボット動作生成支援装置。
【請求項5】
前記ロボットは、ロボットハンドを有し、
前記対象物は、具材であり、
前記APIドキュメントは、前記ロボットハンドの把持、前記ロボットハンドの移動、前記ロボットハンドの解放、移動先の場所のレイアウト情報に関する情報を含み、
前記結果物は、複数種類の前記具材からなる食品である、
請求項1から請求項4のいずれか1項に記載のロボット動作生成支援装置。
【請求項6】
対象物に対して動作を行うロボットのロボット動作生成支援システムであって、
前記ロボット制御用のAPIドキュメントと対象物データベースの情報を記憶する記憶手段と、
前記ロボットの前記対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得するテキストデータ取得手段と、
前記テキストデータ取得手段で取得したテキストデータに、前記ロボット制御用の前記APIドキュメント及び前記対象物データベースの情報を付加して合成テキストデータを生成する合成テキストデータ生成手段と、
前記合成テキストデータ
生成手段で生成した合成テキストデータを自然言語処理部に入力し、前記自然言語処理部から前記結果物を得るための前記ロボットの動作のソースコードの出力を得るソースコード取得手段と、
前記ソースコード取得手段で取得したソースコードを使用して、仮想環境で前記ロボットを動作させるシミュレーションを行うシミュレーション手段と、
前記シミュレーションにおいて前記結果物を得られた場合は、前記ソースコードを前記ロボットに送信する送信手段と、
前記シミュレーションにおいて前記結果物を得られなかった場合は、前記シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、前記ソースコードの修正に必要な情報を前記自然言語処理部に再入力して前記ソースコードを修正するソースコード修正手段と、
を備え
、
前記ロボット制御用のAPIドキュメントは、前記ロボットが行う動作及び検出を示すコマンドの書式と、前記動作および検出処理内容を表す自然言語データと、を対応付けて有し、前記コマンドは、実行を依頼する作業を構成する動作及び検出処理を含み、
前記対象物データベースは、前記検出を示すコマンドで引数に取れる前記対象物の名称を含み、かつ実行を依頼する作業で登場し得る名詞を含み、
前記合成テキストデータ生成手段は、前記テキストデータ、前記APIドキュメント、前記対象物データベースの情報のそれぞれに関連付けられた説明文を表す自然言語データを含み、
前記自然言語処理部は、ソースコードを含んだデータにより学習したLLMを用いて、自然言語からソースコードを自動生成し、
前記異常情報は、前記シミュレーション中に異常が生じたことを表す自然言語データと、前記シミュレーション中に前記ロボットが実行できなかった動作内容を表す自然言語データと、前記動作内容が実行できなかった原因を表す自然言語データとを含む、
ロボット動作生成支援システム。
【請求項7】
対象物に対して動作を行うロボットのロボット動作生成支援プログラムであって、
前記ロボット制御用のAPIドキュメントと対象物データベースの情報を記憶する記憶手段と、
前記ロボットの前記対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得するテキストデータ取得手段と、
前記テキストデータ取得手段で取得したテキストデータに、前記ロボット制御用の前記APIドキュメント及び前記対象物データベースの情報を付加して合成テキストデータを生成する合成テキストデータ生成手段と、
前記合成テキストデータ
生成手段で生成した合成テキストデータを自然言語処理部に入力し、前記自然言語処理部から前記結果物を得るための前記ロボットの動作のソースコードの出力を得るソースコード取得手段と、
前記ソースコード取得手段で取得したソースコードを使用して、仮想環境で前記ロボットを動作させるシミュレーションを行うシミュレーション手段と、
前記シミュレーションにおいて前記結果物を得られた場合は、前記ソースコードを前記ロボットに送信する送信手段と、
前記シミュレーションにおいて前記結果物を得られなかった場合は、前記シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、前記ソースコードの修正に必要な情報を前記自然言語処理部に再入力して前記ソースコードを修正するソースコード修正手段と、
を備え
、
前記ロボット制御用のAPIドキュメントは、前記ロボットが行う動作及び検出を示すコマンドの書式と、前記動作および検出処理内容を表す自然言語データと、を対応付けて有し、前記コマンドは、実行を依頼する作業を構成する動作及び検出処理を含み、
前記対象物データベースは、前記検出を示すコマンドで引数に取れる前記対象物の名称を含み、かつ実効を依頼する作業で登場し得る名詞を含み、
前記合成テキストデータ生成手段は、前記テキストデータ、前記APIドキュメント、前記対象物データベースの情報のそれぞれに関連付けられた説明文を表す自然言語データを含み、
前記自然言語処理部は、ソースコードを含んだデータにより学習したLLMを用いて、自然言語からソースコードを自動生成し、
前記異常情報は、前記シミュレーション中に異常が生じたことを表す自然言語データと、前記シミュレーション中に前記ロボットが実行できなかった動作内容を表す自然言語データと、前記動作内容が実行できなかった原因を表す自然言語データとを含む、
ロボット動作生成支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボット動作生成支援装置、ロボット動作生成支援システム、及びロボット動作生成支援プログラムに関するものである。
【背景技術】
【0002】
種々の製造、組み立て等のために産業用ロボットが使用されていることは周知である。一般的にロボットは、様々な形状の対象物を把持(Pick)、移動(Move)、及び配置(Place)する。従来、ユーザ(操作者)は、教示操作盤(ティーチペンダント)を使用することで、ロボットに対象物を把持、移動及び配置する方法を教示していた。このようなティーチペンダントを使用したロボットの教示は、時間を要すると共に、教示するユーザに専門的なプログラミングスキルが求められる。
【0003】
そこで、非特許文献1では、ティーチペンダントを使用せずに、自然言語処理によってロボットの軌道データを生成する技術が開示されている。非特許文献1が開示する自然言語処理では、対象物の移動、扉の開閉等の単純なアクションシーケンスを達成するためのロボットの動作プログラムを生成することができる。
【先行技術文献】
【非特許文献】
【0004】
【文献】Naoki Wake, Atsushi Kanehira, Kazuhiro Sasabuchi, Jun Takamatsu, and Katsushi Ikeuchi, “ChatGPT Empowered Long-Step Robot Control in Various Environments: A Case Application”, 2023, https://www.microsoft.com/en-us/research/uploads/prod/2023/04/chatgpt_robot_manipulation_prompts.pdf
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の技術においては、複雑なアクションシーケンスを達成するロボット動作を生成する場合、ユーザに高度な専門的知識が求められる。また、非特許文献1が開示する自然言語処理では、条件分岐や繰り返し処理等を含む複雑な動作プログラムを正確に生成することが困難である。
【0006】
そこで、本開示は、専門的な知識を要することなく、複雑な作業を行うロボット動作の生成を可能とするロボット動作生成支援装置、ロボット動作生成支援システム、及びロボット動作生成支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示の一態様に係るロボット動作生成装置は、対象物に対して動作を行うロボットのロボット動作生成支援装置であって、前記ロボット制御用のAPIドキュメントと対象物データベースの情報を記憶する記憶手段と、前記ロボットの前記対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得するテキストデータ取得手段と、前記テキストデータ取得手段で取得したテキストデータに、前記ロボット制御用の前記APIドキュメント及び前記対象物データベースの情報を付加して合成テキストデータを生成する合成テキストデータ生成手段と、前記合成テキストデータ生成手段で生成した合成テキストデータを自然言語処理部に入力し、前記自然言語処理部から前記結果物を得るための前記ロボットの動作のソースコードの出力を得るソースコード取得手段と、前記ソースコード取得手段で取得したソースコードを使用して、仮想環境で前記ロボットを動作させるシミュレーションを行うシミュレーション手段と、前記シミュレーションにおいて前記結果物を得られた場合は、前記ソースコードを前記ロボットに送信する送信手段と、前記シミュレーションにおいて前記結果物を得られなかった場合は、前記シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、前記ソースコードの修正に必要な情報を前記自然言語処理部に再入力して前記ソースコードを修正するソースコード修正手段と、を備え、前記ロボット制御用のAPIドキュメントは、前記ロボットが行う動作及び検出を示すコマンドの書式と、前記動作および検出処理内容を表す自然言語データと、を対応付けて有し、前記コマンドは、実行を依頼する作業を構成する動作及び検出処理を含み、前記対象物データベースは、前記検出を示すコマンドで引数に取れる前記対象物の名称を含み、かつ実効を依頼する作業で登場し得る名詞を含み、前記合成テキストデータ生成手段は、前記テキストデータ、前記APIドキュメント、前記対象物データベースの情報のそれぞれに関連付けられた説明文を表す自然言語データを含み、前記自然言語処理部は、ソースコードを含んだデータにより学習したLLMを用いて、自然言語からソースコードを自動生成し、前記異常情報は、前記シミュレーション中に異常が生じたことを表す自然言語データと、前記シミュレーション中に前記ロボットが実行できなかった動作内容を表す自然言語データと、前記動作内容が実行できなかった原因を表す自然言語データとを含む。
【発明の効果】
【0008】
本開示によれば、専門的な知識を要することなく、複雑な作業を行うロボット動作の生成を可能とするロボット動作生成支援装置、ロボット動作生成支援システム、及びロボット動作生成支援プログラムを提供することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係るロボット動作生成支援システムの全体構成の一例を示す図である。
【
図2】
図2は、実施形態に係るロボット動作生成支援サーバの構成の一例を示す図である。
【
図3】
図3は、実施形態に係る端末装置の入力画面の表示例を示す図である。
【
図4】
図4は、実施形態に係る合成テキストデータの一例を示す図である。
【
図5】
図5は、実施形態に係るロボット動作生成支援システムの動作シーケンスの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本開示を実施するための形態について詳細に説明する。なお、本開示はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0011】
なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の又は対応する機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する場合がある。また、理解を容易にするために、図面における各部の縮尺は、実際とは異なる場合がある。
【0012】
≪実施形態≫
<ロボット動作生成支援システム1の全体構成>
まず、ロボット動作生成支援システム1の全体構成について説明する。
図1は本実施形態に係るロボット動作生成支援システム1の全体構成の一例を示す図である。ロボット動作生成支援システム1は、
図1に示すように、ロボット動作生成支援サーバ100と、端末装置200と、ロボット300とを備える。
【0013】
ロボット動作生成支援サーバ100、端末装置200、及びロボット300は、ネットワーク10に接続されており、ネットワーク10を介して相互に通信可能である。ネットワーク10は、インターネットを含む。ネットワーク10は、LAN(Local Area Network)及び/又はWAN(Wide Area Network)を含んでもよい。また、ロボット動作生成支援サーバ100、端末装置200、及びロボット300は、直接有線通信または無線通信で接続されていてもよい。また、ロボット動作生成支援サーバ100は、例えばワークステーション又はPCのような汎用コンピュータとしてもよいし、クラウド・コンピューティング(分散コンピューティング)によって論理的に実現されてもよい。つまり、1つのコンピュータで構成してもよいし、複数のコンピュータで構成してもよい。
【0014】
ロボット動作生成支援サーバ100は、ユーザによる、複雑な作業を行うロボット300の動作プログラム(ソースコード)の生成を支援するロボット動作生成支援装置の一例である。なお、ソースコードは、Python等のプログラミング言語を用いて記述された文字列である。本実施形態では、ソースコードは、Python形式であるものとするが、このような形式に限定されるものではなく、例えばC、C++、C#、Java、Visual Basic、Perl、JavaScript等のプログラミング言語であってもよい。
【0015】
ここで、本開示が適用される場面の一例について説明する。
本開示が適用される場面の一例は、病院食や弁当等の食品の製造現場に設置されたロボット300のユーザがロボット300の動作プログラム(ソースコード)を生成する場面である。病院食や弁当等の食品の製造現場に設置されたロボット300は、複数の総菜等の中から具材を特定(選定)し、特定した具材を容器の所定の場所に移送して解放する動作を繰り返し行う。このようなロボット300の作業は、条件に応じて異なる動作や繰り返し動作等を含むため、複雑な動作プログラム(ソースコード)が必要である。なお、本開示が適用される場面は、病院食や弁当等の食品の製造現場に限定されず、例えば、部品や部材の製造、組み立て等の複雑な作業を行うロボット300の動作プログラム(ソースコード)の生成支援にも適用され得る。
【0016】
本実施形態では、ロボット動作生成支援サーバ100は、対象物に対して動作を行うロボット300のソースコードを生成するユーザに対して、ロボット300の動作の生成を支援する。例えば、ロボット動作生成支援サーバ100は、ユーザの端末装置200に、ロボット300の対象物に対する動作によって得られる結果物の内容の入力を促す入力画面131aを表示させ、入力された結果物の内容に応じたロボット300の動作のソースコードを生成し、生成したソースコードをロボット300に送信する。
【0017】
また、ロボット動作生成支援サーバ100は、ロボット300の制御用のAPIドキュメント122と対象物データベース121の情報を記憶し、ロボット300の対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得し、取得したテキストデータに、ロボット300の制御用のAPIドキュメント122及び対象物データベース121の情報を付加して合成テキストデータを生成し、生成した合成テキストデータを自然言語処理部135に入力し、自然言語処理部135から結果物を得るためのロボット300の動作のソースコードの出力を得て、取得したソースコードを使用して、仮想環境でロボット300を動作させ、シミュレーションにおいて前記結果物を得られた場合は、ソースコードをロボット300に送信し、シミュレーションにおいて結果物を得られなかった場合は、シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、ソースコードの修正に必要な情報を自然言語処理部135に再入力して前記ソースコードを修正する。
【0018】
なお、ロボット300はロボットハンド301を有する。また、対象物は例えば総菜等の具材である。また、APIドキュメント122は、例えば、ロボットハンド301の把持、ロボットハンド301の移動、ロボットハンド301の解放、移動先の場所のレイアウト情報に関する情報を含む。また、結果物は、例えば、唐揚げ弁当であり、その内容は、唐揚げ6個、白米、ポテトサラダからなる弁当である。
【0019】
このようにして、ユーザは、ロボット300の対象物に対する動作によって得られる結果物の内容を自然言語で記述すれば、自動的に、記述された結果物の内容に応じたロボット300の動作のソースコードが生成され、当該ソースコードがロボット300に送信される。そのため、プログラミングスキルの乏しいユーザであっても、条件に応じて異なる動作や繰り返し動作等を含む複雑な作業を行うロボット300のソースコードを生成することができる。
【0020】
また、病院食や弁当等の食品の製造現場では、患者の健康状態や利用客の注文に応じて弁当等の盛り付け内容(具材の種類や数量等)が多岐にわたるため、複数のロボット300動作のソースコードを生成しなければならなかったが、本実施形態によれば、自動的にロボット300の動作のソースコードを生成することができるため、複数のソースコードを容易に生成することができる。
【0021】
なお、自然言語とは、人類の歴史の中で自然に発生した言語をいい、例えば、日本語や英語等である。本実施形態では、自然言語が日本語であるものとするが、日本語に限定されるものではなく、他の種類の自然言語(例えば、英語)であってもよい。
【0022】
ロボット動作生成支援サーバ100は、人工知能(AI)を含む機械学習技術により構築された大規模言語モデル(LLM:Large Language Model)を用いて自然言語処理タスクを実行するサーバである。また、LLMは、大規模なテキストデータを事前に大量に学習し、わずか数例のタスクを与えただけでさまざまな言語処理タスクを実行できる言語モデルである。このようなLLMの例としては、OpenAI社が開発したGPT-3やGPT-4等が挙げられる。
【0023】
本実施形態では、ロボット動作生成支援サーバ100は、ソースコードを事前に大量に学習したLLMを用いて、自然言語からソースコードを自動生成する。例えば、当該LLMは、インターネット上で公開されている大量のソースコードを学習している。例えば、ソースコードには、コメント文等の自然言語文が含まれていることが一般的であるため、自然言語文とプログラムとの対応関係を学習済みである。そのため、ロボット動作生成支援サーバ100は、ユーザが記述した自然言語文(テキストデータ)を取得すると、ソースコードを自動で生成し、当該ソースコードをロボット300に送信することができる。
【0024】
また、ロボット動作生成支援サーバ100は、ユーザから取得したロボット300の対象物に対する動作によって得られる結果物の内容に加えて、ロボット300の制御用APIドキュメント122と対象物データベース121の情報をLLMに入力することで、ロボットハンド301による対象物の把持、移送、解放が組み合わされたソースコードを生成することができる。
【0025】
端末装置200は、例えば、パーソナルコンピュータ(PC)、スマートフォン、タブレット端末、又はウェアラブル端末等である。端末装置200は、ユーザとのインターフェイスと、ネットワーク10とのインターフェイスとを有する。ユーザとのインターフェイスは、例えば、ディスプレイ、キーボード、マウス、タッチパッド、タッチパネルディスプレイ、マイク、及びスピーカのうち、少なくとも1つを含む。ネットワーク10とのインターフェイスは、有線通信インターフェイス及び無線通信インターフェイスのうち少なくとも1つを含む。端末装置200は、ネットワーク10を介してロボット動作生成支援サーバ100にアクセスし、ロボット300の動作のソースコードを生成するためにロボット動作生成支援サーバ100と情報をやり取りする。
【0026】
ロボット300は、例えば、対象物を把持するロボットハンド301と、対象物を撮影する撮像部302と、ロボットハンド301及び撮像部302を制御する制御部303とを備えている。ロボット300は、例えば、撮像部302により撮像された画像データを画像認識することで把持対象となる対象物(具材)の特定(選定)、特定した対象物(具材)の把持、把持した対象物(具材)の所定の場所(食器や弁当箱等の容器内)への移送、当該所定の場所(容器内)での対象物(具材)の解放等の一連の動作を繰り返し行うことで、結果物(唐揚げ弁当)を製造することができる。
【0027】
また、ロボット300は、例えば、画像データに含まれる具材の名称を特定する学習済みモデルを記憶しており、当該学習済みモデルを用いて画像認識処理を行う。つまり、ロボット300は、複数の具材が撮影された画像データを、学習済みモデルに入力することで、画像データに含まれている具材の名称を特定し、特定した具材の位置を取得する。
【0028】
<ロボット動作生成支援サーバ100>
次に、ロボット動作生成支援サーバ100の構成について説明する。
図2は本実施形態に係るロボット動作生成支援サーバ100の構成の一例を示す図である。ロボット動作生成支援サーバ100は、
図2に示すように、通信部110と、記憶部120と、処理部130とを備える。通信部110、記憶部120、及び処理部130は、図示しないバス等によって相互に接続されている。
【0029】
通信部110は、処理部130の制御下で、ネットワーク10を介して他装置(例えば、端末装置200及びロボット300)との通信を行う。通信部110による通信は、有線通信であってもよいし、無線通信を含んでもよい。
【0030】
記憶部120は、ロボット300の制御用のAPIドキュメント122と、対象物データベース121の情報を記憶している。APIドキュメント122は、API仕様書でもあり、ロボットハンド301による把持、移動、解放等の機能を実行するための情報を含む。ロボット動作生成支援サーバ100によって生成されたソースコードは、APIドキュメント122を使用しているため、APIを介してロボットハンド301の把持、移動、解放等の機能を実行することができる。対象物(具材)データベース121は、ロボット300に記憶された学習済みモデルの学習済み対象物(具材)の名称に関する情報を記録するものである。対象物(具材)データベース121に記録された対象物(具材)の名称は、ロボット300に記憶された学習済み具材の名称と同様である。
【0031】
記憶部120は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、及び補助記憶装置等の種々のメモリを含んで構成される。処理部130により実行されるプログラム(ロボット動作生成支援プログラム)は、例えば、記憶部120のROM及び/又は補助記憶装置に記憶されている。処理部130は、1つ又は複数のプロセッサにより構成される。
【0032】
処理部130は、ロボット動作生成支援プログラムを実行することにより、情報提示部131と、テキストデータ取得部132と、合成テキストデータ生成部133と、ソースコード取得部134と、自然言語処理部135と、シミュレーション部136と、送信部137と、の各機能を実現する。
【0033】
情報提示部131は、ロボット300の対象物(具材)に対する動作によって得られる結果物(唐揚げ弁当)の内容の入力をユーザに促す入力画面131aを端末装置200に表示させるとともに、ロボット動作生成支援のための情報を入力画面131a上でユーザに提示する。端末装置200における画面表示例については後述する。
【0034】
テキストデータ取得部132は、結果物(唐揚げ弁当)の内容をユーザが自然言語で記述したテキストデータを取得する。例えば、テキストデータ取得部132は、入力画面131a上のテキスト入力欄にユーザが自然言語で記述した文字列(文章)をテキストデータとして取得する。いずれにしても、ユーザは、自然言語により自由な形式でテキスト入力が可能である。
【0035】
但し、ユーザが入力したテキストデータは、ロボット300の動作のソースコードの出力のための条件を満たしていない場合がある。例えば、対象物の記述が不足(具材の名称や数量の記述が不足)しており、自然言語処理部135がソースコードを出力できない場合がある。そのような場合、情報提示部131は、ソースコード出力の条件を満たす新たな結果物の内容の入力を促す情報をユーザに提示してもよい。これにより、ロボット300の動作のソースコードがより確実に作成されることを担保できる。
【0036】
情報提示部131及びテキストデータ取得部132は、問答形式により段階的なテキスト入力をユーザから受け付けてもよい。例えば、情報提示部131が質問情報をユーザに提示し、テキストデータ取得部132が質問情報に対する回答として入力された文章を蓄積し、これを繰り返すことで、十分な量のテキストデータを得ることができる。すなわち、情報提示部131は、質問情報をユーザに複数回提示し、テキストデータ取得部132は、質問情報に対する回答として入力されたテキストデータを蓄積し、自然言語処理部135は、蓄積されたテキストデータからソースコードを出力してもよい。これにより、クオリティの高いロボット300の動作のソースコードの作成を支援できる。
【0037】
合成テキストデータ生成部133は、テキストデータ取得部132によって取得されたテキストデータに、少なくともロボット300の制御用のAPIドキュメント122、及び対象物(具材)データベース121の情報を付加して、合成テキストデータを生成する。なお、合成テキストデータの内容の一例については後述する。APIドキュメント122及び対象物(具材)データベース121の情報はテキストデータである。また、合成テキストデータ生成部133は、生成した合成テキストデータを情報提示部131に送信してユーザの端末装置200に表示させるようにしてもよい。上述したように対象物(具材)データベース121に記録された対象物(具材)の名称とロボット300に記憶された学習済み具材の名称とが同様であるため、テキストデータにAPIドキュメント122及び対象物(具材)データベース121の情報を付加することで、自然言語処理部135に、ロボット300に記憶された学習済みモデルによって画像認識可能な対象物(具材)を教示できる。つまり、
図4に示すように、自然言語処理部135に、APIドキュメント122であるfind関数によって探索できる対象物(具材)を教示できる。このように、自然言語で記述された結果物のうち、ロボット300が画像認識可能な対象物(具材)を自然言語処理部135に教示できる。ロボット300が画像認識できない対象物(具材)が結果物に含まれている場合は、例えば、画像認識可能な対象物(具材)を列記したうえで結果物の内容の再入力を促す画面やロボット300に記憶された学習済みモデルの追加学習が必要である旨を表示する画面等を情報提示部131によって表示させるようにしてもよい。
【0038】
ソースコード取得部134は、合成テキストデータ生成部133が生成した合成テキストデータを自然言語処理部135へ入力し、自然言語処理部135からロボット300の動作のソースコードの出力を得る。本実施形態では、ソースコード取得部134は、合成テキストデータ生成部133が生成した合成テキストデータをAPIにより自然言語処理部135に提供し、ロボット300の動作のソースコードをAPIにより自然言語処理部135から取得することで、ロボット300の動作のソースコードを取得する。なお、本実施形態では、自然言語処理部135は処理部130に組み込まれているが、例えば、自然言語処理部135と、ロボット動作生成支援サーバ100とが別のサーバである場合は、合成テキストデータ生成部133が生成した合成テキストデータをAPIにより自然言語処理サーバに提供し、ロボット300の動作のソースコードをAPIにより自然言語処理サーバから取得するようにしてもよい。
【0039】
自然言語処理部135は、LLMを用いて自然言語処理タスクを実行する。また、LLMは、大規模なテキストデータを事前に大量に学習し、わずか数例のタスクを与えただけでさまざまな言語処理タスクを実行できる言語モデルである。本実施例では、自然言語処理部135は、合成テキストデータに対応するロボット300の動作のソースコードを出力する。
【0040】
シミュレーション部136は、ソースコード取得部134によって取得したソースコードを仮想環境で使用して、ユーザが記述した結果物の内容(唐揚げ6個、白米、ポテトサラダからなる唐揚げ弁当)に基づいてロボット300が動作するか否かをテストする。本実施形態では、ロボット300のミドルウェアのオープンソースROS(Robot Operating System)、物理シミュレータのオープンソースGazebo等を用いることで、ソースコード取得部134によって取得したソースコードを使用して仮想環境中でロボット300を動作させる。また、シミュレーション部136は、シミュレーションにおいて、ユーザが記述した結果物を得ることができた場合は、シミュレーションは正常に終了したと判断し、ユーザが記述した結果物を得ることができなかった場合は、シミュレーションは異常終了したと判断する。
【0041】
シミュレーション部136は、シミュレーションが正常終了した場合、ロボット300の動作のソースコードを送信部137を介してロボット300に送信する。また、シミュレーション部136は、シミュレーションが正常終了した場合のソースコードを情報提示部131に送信してユーザの端末装置200に表示させるようにしてもよい。
【0042】
シミュレーションが異常終了した場合は、例えばシミュレーション中にエラーメッセージや警告等が生じた場合である。シミュレーション部136は、ROSを介して、シミュレーション中のロボット300の状態やタスクの進捗状況等に関するログ情報をリアルタイムで監視できる。また、シミュレーション部136は、ログ情報からエラーメッセージや警告等を含む異常情報を検出して取得することができる。ロボット動作生成支援サーバ100は、この異常情報を用いることで、ソースコードを修正する。
【0043】
シミュレーション部136は、異常情報に基づいてソースコードを修正するためのフィードバックデータを生成する。また、ソースコード取得部134は、シミュレーション部136が生成したフィードバックデータを自然言語処理部135に再入力し、自然言語処理部135から修正されたソースコードの出力を得る。
このようにして、ロボット動作生成支援サーバ100は、ソースコードを修正する。
【0044】
なお、フィードバックデータの内容は、例えば「ERROR:“唐揚げ”をreleaseできません。目標位置に障害物が存在する。」等である。また、本実施形態では、シミュレーション部136は、ROSを介してログ情報からエラーメッセージや警告等を含む異常情報を取得するが、それに限定されず、Gazebo APIを介してシミュレーション中のロボット300の状態や異常情報等の各種データを取得してもよい。
【0045】
また、シミュレーション部136は、シミュレーションが異常終了した場合の異常情報を情報提示部131に送信してユーザの端末装置200に表示させるようにしてもよい。また、シミュレーション部136は、取得した異常情報を情報提示部131に送信して端末装置200に表示させ、ユーザからテキスト入力を受け付けてもよい。例えば、異常情報をユーザに提示し、ユーザから修正の必要な機能やコード等の修正内容についてのテキスト入力を受け付けて、ユーザから受け付けた内容に基づいてフィードバックデータを生成してもよい。その際、ユーザは、何らかの事象、例えばエラーの発生に応じてエラーメッセージを表示させる例外処理(例えば、事象が発生する可能性があるコードをTryブロック内に記載する。)をソースコードに含めることができる。そのようにすることで、自然言語処理部135に対して具体的な修正指示を提供することができ、ソースコードの修正に要する時間を短縮することができる。
【0046】
シミュレーション部136は、ソースコード取得部134によって取得した修正されたソースコードを仮想環境で使用して、ロボット300の動作を再びシミュレーションする。再シミュレーションが異常終了した場合は、上述したソースコードの修正手段を行う。すなわち、ロボット動作生成支援サーバ100は、シミュレーションが正常終了するまで、ソースコードの修正及び修正したソースコードでのシミュレーションを繰り返し行う。
このように、ソースコードに問題があった場合でも、シミュレーションにおける異常情報に基づいて自動的にソースコードの修正を実行することができる。これにより、正確なソースコードが作成されることを担保できる。
【0047】
なお、ロボット動作生成支援サーバ100は、ソースコードを使用してシミュレーション部136でシミュレーションを実行する前に、当該ソースコードにファイルシステムやネットワーク10へのアクセスに関するコードが含まれていないかを確認してもよい。ソースコードにファイルシステムやネットワーク10へのアクセスに関するコードが含まれている場合、ロボット動作生成支援サーバ100は、それら不必要なコードを削除し、ファイルシステムやネットワーク10へのアクセスを防止する。つまり、ロボット動作生成支援サーバ100がシミュレーション実行前にセキュリティチェックを行うようにしてもよい。
【0048】
送信部137は、シミュレーションが正常終了した場合のソースコードをロボット300に送信する。
ロボット300は、送信部137から送信されたソースコードを取得する。ロボット300は、ソースコードを使用することで、結果物の内容(唐揚げ6個、白米、ポテトサラダからなる弁当)にしたがって対象物(具材)の把持、移送、解放の動作を行う。
【0049】
<端末装置200の画面表示>
次に、端末装置200の画面表示例について説明する。
図3は本実施形態に係る端末装置200の入力画面131aの表示例を示す図である。
情報提示部131は、
図3に示すように、入力画面131aを端末装置200に表示させる。情報提示部131は、入力画面131aとして、例えば、テキスト入力用のテキスト入力欄Aを表示させるとともに、テキスト入力欄Aへのテキスト入力を促す情報を表示させる。情報提示部131は、テキスト入力欄Aへのテキスト入力例を示すサンプル情報を表示させてもよい。
【0050】
情報提示部131は、自然言語で記述された結果物(唐揚げ弁当)の内容がテキスト入力欄Aにユーザによって入力されると、ソースコード取得の実行操作を行うためのボタンBを表示させる。テキストデータ取得部132は、ボタンBが操作されると、当該テキストデータを取得する。図示の例では、結果物の内容が「唐揚げ6個、白米、ポテトサラダからなる唐揚げ弁当」であって、当該結果物の内容をユーザが日本語で入力している。
【0051】
<合成テキストデータの内容>
次に、合成テキストデータの内容の一例について説明する
図4は本実施形態に係る合成テキストデータの一例を示す図である。
合成テキストデータ生成部133は、テキストデータ取得部132によって取得された結果物の内容に、ロボット300の制御用のAPIドキュメント122及び対象物(具材)データベース121の情報を付加することで、
図4に示すような合成テキストデータを生成する。
【0052】
<動作シーケンスの一例>
次に、ロボット動作生成支援システム1の動作の流れについて説明する。
図5は本実施形態に係るロボット動作生成支援システム1の動作シーケンスの一例を示す図である。
【0053】
ステップS1において、ユーザが端末装置200からロボット動作生成支援サーバ100にアクセスする。
【0054】
ステップS2において、ロボット動作生成支援サーバ100は、入力画面131aを端末装置200に送信して表示させる。
【0055】
ステップS3において、端末装置200は、入力画面131aのテキスト入力欄へのテキスト入力を受け付ける。ユーザは、
図3に示すように、テキスト入力欄に「唐揚げ6個、白米、ポテトサラダからなる唐揚げ弁当」と入力する。端末装置200は、入力されたテキストデータをロボット動作生成支援サーバ100に送信する。
【0056】
ステップS4において、ロボット動作生成支援サーバ100は、端末装置200から受信したテキストデータにAPIドキュメント122及び対象物(具材)データベース121の情報を付加して、合成テキストデータを生成する。合成テキストデータは
図4に示すような内容である。
【0057】
ステップS5において、ロボット動作生成支援サーバ100は、合成テキストデータを自然言語処理部135に入力し、自然言語処理部135から出力されたソースコードを取得する。
【0058】
ステップS6において、ロボット動作生成支援サーバ100は、取得したソースコードをシミュレーション部136で使用して、ロボット300の動作をテストする。
【0059】
ステップS7において、ロボット動作生成支援サーバ100は、シミュレーションが正常終了した場はステップS8へと移行し、シミュレーションが異常終了した場合はステップS10へと移行する。
【0060】
ステップS8において、ロボット動作生成支援サーバ100は、シミュレーションで使用したソースコードをロボット300へ送信する。
【0061】
ステップS9において、ロボット300は、ロボット動作生成支援サーバ100から送信されたソースコードを取得し、取得したソースコードを使用して対象物(具材)の把持、移送、解放の動作を行う。
【0062】
ステップS10において、ロボット動作生成支援サーバ100は、シミュレーションのログ情報から異常情報を検出して取得する。
【0063】
ステップS11において、ロボット動作生成支援サーバ100は、異常情報に基づいてフィードバックデータを生成する。フィードバックデータの内容は、例えば「ERROR:“唐揚げ”をreleaseできません。目標位置に障害物が存在する。」である。次にステップS5へ移行して、ロボット動作生成支援サーバ100は、生成したフィードバックデータを自然言語処理部135に入力し、自然言語処理部135から修正されたソースコードの出力を得る。
【0064】
<変形例>
上述した実施形態では異常情報に基づいてソースコードを修正していたが、変形例では、インタプリタ部140での実行結果に応じてもソースコードを修正する。なお、上述した実施形態と同じ構成には同じ符号を付して、説明を省略する。
【0065】
変形例では、ロボット動作生成支援サーバ100は、ソースコードを実行するためのインタプリタ部140をさらに備える。インタプリタ部140は、例えばPythonインタプリタによってソースコードを実行する。インタプリタ部140は、シミュレーション部136によるシミュレーションの前に、ソースコード取得部134で取得したソースコードを実行する。インタプリタ部140による実行が正常終了した場合は、続いてシミュレーション部136によるシミュレーションを行う。
【0066】
インタプリタ部140による実行が異常終了した場合は、インタプリタ部140の実行によって得られたエラーメッセージに基づいてフィードバックデータを生成する。ソースコード取得部134は、インタプリタ部400で生成したフィードバックデータを自然言語処理部135に再入力し、自然言語処理部135から修正されたソースコードの出力を得る。これをインタプリタ部140での実行が正常に終了するまで繰り返す。すなわち、変形例では、異常情報に基づいたソースコードの修正に加えて、インタプリタ部140でのエラーメッセージに基づいたソースコードの修正も行う。
【0067】
これにより、より正確なロボット300の動作のソースコードが生成されることを担保できる。なお、インタプリタ部140でのエラーメッセージに基づいたソースコードの修正は、シミュレーションの前後のいずれで行われてもよい。また、送信部137は、シミュレーション部136のシミュレーションが正常終了し、かつインタプリタ部140の実行結果が正常に終了した場合にソースコードをロボット300に送信するようにしてもよい。
【0068】
なお、上述した実施形態において、ロボット動作生成支援サーバ100が行っていた処理の一部を端末装置200又は他の装置で行うように変更してもよい。この場合、ロボット動作生成支援サーバ100及び端末装置200によりロボット動作生成支援装置又はロボット動作生成支援システム1が構成されてもよい。
【0069】
また、上述した本実施形態における動作フロー及び動作例は、必ずしもフロー図又はシーケンス図に記載された順序に沿って時系列に実行されなくてよい。例えば、動作におけるステップは、フロー図又はシーケンス図として記載した順序と異なる順序で実行されても、並列的に実行されてもよい。また、動作におけるステップの一部が削除されてもよく、さらなるステップが処理に追加されてもよい。また、上述の実施形態における動作フロー及び動作例は、別個独立に実施してもよいし、2以上の動作フロー及び動作例を組み合わせて実施してもよい。例えば、1つの動作フローの一部のステップを他の動作フローに追加してもよいし、1つの動作フローの一部のステップを他の動作フローの一部のステップと置換してもよい。
【0070】
また、上述した本実施形態に係る動作をコンピュータに実行させるロボット動作生成支援プログラムが提供されてもよい。ロボット動作生成支援プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、コンピュータにロボット動作生成支援プログラムをインストールすることが可能である。ここで、ロボット動作生成支援プログラムが記録されたコンピュータ読取り可能媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD-ROMやDVD-ROM等の記録媒体であってもよい。
【符号の説明】
【0071】
1 ロボット動作生成支援システム
10 ネットワーク
100 ロボット動作生成支援サーバ
110 通信部
120 記憶部
121 対象物データベース
122 APIドキュメント
130 処理部
131 情報提示部
131a 入力画面
132 テキストデータ取得部
133 合成テキストデータ生成部
134 ソースコード取得部
135 自然言語処理部
136 シミュレーション部
137 送信部
140 インタプリタ部
200 端末装置
300 ロボット
301 ロボットハンド
【要約】
対象物に対して動作を行うロボットのロボット動作生成支援装置であって、前記ロボット制御用のAPIドキュメントと対象物データベースの情報を記憶する記憶手段と、前記ロボットの前記対象物に対する動作によって得られる結果物の内容についてユーザが自然言語で記述したテキストデータを取得するテキストデータ取得手段と、前記テキストデータ取得手段で取得したテキストデータに、前記ロボット制御用の前記APIドキュメント及び前記対象物データベースの情報を付加して合成テキストデータを生成する合成テキストデータ生成手段と、前記合成テキストデータ手段で生成した合成テキストデータを自然言語処理部に入力し、前記自然言語処理部から前記結果物を得るための前記ロボットの動作のソースコードの出力を得るソースコード取得手段と、前記ソースコード取得手段で取得したソースコードを使用して、仮想環境で前記ロボットを動作させるシミュレーションを行うシミュレーション手段と、前記シミュレーションにおいて前記結果物を得られた場合は、前記ソースコードを前記ロボットに送信する送信手段と、前記シミュレーションにおいて前記結果物を得られなかった場合は、前記シミュレーション中に検出したエラーメッセージを含む異常情報に基づいて、前記ソースコードの修正に必要な情報を前記自然言語処理部に再入力して前記ソースコードを修正するソースコード修正手段と、を備えた。