(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-10-23
(45)【発行日】2024-10-31
(54)【発明の名称】制御システム、制御方法及びプログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20241024BHJP
【FI】
G05B19/05 F
(21)【出願番号】P 2024108813
(22)【出願日】2024-07-05
【審査請求日】2024-07-11
【早期審査対象出願】
(73)【特許権者】
【識別番号】306022513
【氏名又は名称】日鉄エンジニアリング株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100140774
【氏名又は名称】大浪 一徳
(74)【代理人】
【識別番号】100134359
【氏名又は名称】勝俣 智夫
(74)【代理人】
【識別番号】100188592
【氏名又は名称】山口 洋
(74)【代理人】
【識別番号】100217249
【氏名又は名称】堀田 耕一郎
(74)【代理人】
【識別番号】100221279
【氏名又は名称】山口 健吾
(74)【代理人】
【識別番号】100207686
【氏名又は名称】飯田 恭宏
(74)【代理人】
【識別番号】100224812
【氏名又は名称】井口 翔太
(72)【発明者】
【氏名】佐々木 善信
(72)【発明者】
【氏名】村上 健太
【審査官】牧 初
(56)【参考文献】
【文献】特許第7441366(JP,B1)
【文献】中国特許出願公開第117148838(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04-19/05
G05B 19/18-19/416
G05B 19/42-19/46
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
被制御対象を制御する制御装置と、言語モデルと、を備える制御システムであって、
前記制御装置は、
前記被制御対象を制御するための関数のメタデータを前記言語モデルに送信する送信手段と、
前記被制御対象を制御するためのプロンプトを前記言語モデルに通知する通知手段と、
を備え、
前記言語モデルは、
前記送信手段によって送信される前記メタデータと、前記通知手段によって通知される前記プロンプトと、に基づき、前記関数を用いて前記プロンプトに回答するか否かを判定する判定手段と、
前記関数を用いて前記プロンプトに回答すると前記判定手段が判定する場合に、前記関数を識別する識別情報を含む回答情報を前記制御装置に提示する提示手段と、
を備え、
前記制御装置は、前記提示手段によって提示される前記回答情報を用い、前記被制御対象を制御する制御手段、
を更に備え、
前記被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む、
ことを特徴とする制御システム。
【請求項2】
前記メタデータは、前記被制御対象の動作の内容を示す内容情報を含む、
ことを特徴とする請求項1に記載の制御システム。
【請求項3】
前記回答情報は、前記関数の引数を示す引数情報と、前記引数の値と、を更に含む、
ことを特徴とする請求項2に記載の制御システム。
【請求項4】
前記メタデータは、前記引数の仕様を示す引数仕様情報を含む、
ことを特徴とする請求項3に記載の制御システム。
【請求項5】
前記プロンプトは、前記動作に対応する量を示す量情報を含む、
ことを特徴とする請求項4に記載の制御システム。
【請求項6】
前記プロンプトは、前記動作に対応する方向を示す方向情報を含む、
ことを特徴とする請求項5に記載の制御システム。
【請求項7】
前記言語モデルは、
前記関数を用いて前記プロンプトに回答しないと前記判定手段が判定する場合に、前記通知手段によって通知される前記プロンプトの内容を、前記制御装置に問い合わせる問い合わせ手段、
を更に備えることを特徴とする請求項1乃至6のいずれか1項に記載の制御システム。
【請求項8】
前記制御装置は、
前記通知手段によって通知される前記プロンプトと、前記提示手段によって提示される前記回答情報と、に応じ、前記識別情報が識別する前記関数を実行するか否かを判別する判別手段、
を更に備えることを特徴とする請求項1乃至6のいずれか1項に記載の制御システム。
【請求項9】
被制御対象を制御する制御装置と、言語モデルと、を備える制御システムの制御方法であって、
前記被制御対象を制御するための関数のメタデータを前記制御装置から前記言語モデルに送信する送信ステップと、
前記被制御対象を制御するためのプロンプトを前記制御装置から前記言語モデルに通知する通知ステップと、
前記言語モデルが、前記送信ステップによって送信される前記メタデータと、前記通知ステップによって通知される前記プロンプトと、に基づき、前記関数を用いて前記プロンプトに回答するか否かを判定する判定ステップと、
前記関数を用いて前記プロンプトに回答すると前記判定ステップで判定された場合に、前記関数を識別する識別情報を含む回答情報を前記言語モデルが前記制御装置に提示する提示ステップと、
前記制御装置が、前記提示ステップにおいて提示される前記回答情報を用いて前記被制御対象を制御する制御ステップと、
を備え、
前記被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む、
ことを特徴とする制御方法。
【請求項10】
コンピューターを、請求項1に記載の制御システムとして機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、制御方法及びプログラムに関する。
【背景技術】
【0002】
従来、被制御対象の制御を自動化することが行われている。
特許文献1は、駆動装置の制御内容を学習済みモデルによって特定すること、を開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1は、駆動装置の制御内容を具体的に開示していない。
【0005】
本開示は、前述した事情に鑑みてなされたものであって、被制御対象を自動制御することができる制御システム、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様に係る制御システムは、被制御対象を制御する制御装置と、言語モデルと、を備える制御システムであって、前記制御装置は、前記被制御対象を制御するための関数のメタデータを前記言語モデルに送信する送信手段と、前記被制御対象を制御するためのプロンプトを前記言語モデルに通知する通知手段と、を備え、前記言語モデルは、前記送信手段によって送信される前記メタデータと、前記通知手段によって通知される前記プロンプトと、に基づき、前記関数を用いて前記プロンプトに回答するか否かを判定する判定手段と、前記関数を用いて前記プロンプトに回答すると前記判定手段が判定する場合に、前記関数を識別する識別情報を含む回答情報を前記制御装置に提示する提示手段と、を備え、前記制御装置は、前記提示手段によって提示される前記回答情報を用い、前記被制御対象を制御する制御手段、を更に備え、前記被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む、ことを特徴とする。
【発明の効果】
【0007】
本開示によれば、被制御対象を自動制御することができる制御システム、制御方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態に係る制御システムのシステム構成を示す概略ブロック図である。
【
図2】実施形態に係る制御装置の機能構成の具体例を示す概略ブロック図である。
【
図3】実施形態に係る言語モデルの機能構成の具体例を示す概略ブロック図である。
【
図4】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図5】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図6】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図7】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図8】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図9】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図10】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図11】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図12】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図13】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図14】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図15】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図16】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図17】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図18】被制御対象であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図19】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図20】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図21】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図22】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図23】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図24】被制御対象であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図25】被制御対象であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図26】被制御対象であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図27】被制御対象であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図28】被制御対象であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図29】被制御対象であるデータベースが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図30】被制御対象であるデータベースが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図31】被制御対象であるデータベースが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図32】被制御対象であるデータベースが受信するコマンドに用いられるデータ構造の一例を示す図である。
【
図33】実施形態に係る制御システムの制御フローである。
【
図34】実施形態に適用される情報処理装置のハードウェア構成例の概略を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照し、本開示の一実施形態に係る制御システムを説明する。制御システムは、例えば、事前に定義された関数を用いて被制御対象を制御する。以下、本実施形態では、被制御対象を制御するための関数を、単に関数ということがある。制御システムにおいて、関数は、複数定義されていてよい。関数の詳細については後述する。
【0010】
図1は、実施形態に係る制御システム1のシステム構成を示す概略ブロック図である。
制御システム1は、制御装置10と、言語モデル20と、を含む。
図1に示すように、制御システム1と被制御対象2とは、ネットワーク70を介して通信可能に接続される。具体的には、制御システム1の制御装置10と被制御対象2とは、ネットワーク70を介して通信可能に接続される。また、制御装置10と言語モデル20とは、ネットワーク70を介して通信可能に接続される。
【0011】
ネットワーク70は、無線通信を用いたネットワークであってもよいし、有線通信を用いたネットワークであってもよい。ネットワーク70は、例えばインターネットを用いて構成されてもよいし、ローカルエリアネットワーク(LAN)を用いて構成されてもよい。ネットワーク70は、複数のネットワークが組み合わされて構成されてもよい。
【0012】
図2は、実施形態に係る制御装置10の機能構成の具体例を示す概略ブロック図である。
制御装置10は、被制御対象2を制御する。制御装置10は、例えばスマートフォン、タブレット、パーソナルコンピューター、専用機器などの情報機器を用いて構成される。制御装置10は、通信部11、入力部12、出力部13、記憶部14及び制御部15を備える。
【0013】
通信部11は、通信機器である。通信部11は、例えばネットワークインターフェースとして構成されてもよい。通信部11は、制御部15の制御に応じて、ネットワーク70を介して他の装置とデータ通信する。通信部11は、無線通信を行う装置であってもよいし、有線通信を行う装置であってもよい。
【0014】
入力部12は、キーボード、ポインティングデバイス(マウス、タブレット等)、ボタン、タッチパネル等の既存の入力装置を用いて構成される。入力部12は、ユーザーの指示を制御装置10に入力する際にユーザーによって操作される。入力部12は、入力装置を制御装置10に接続するためのインターフェースであっても良い。この場合、入力部12は、入力装置においてユーザーの入力に応じ生成された入力信号を制御装置10に入力する。入力部12は、マイク及び音声認識装置を用いて構成されてもよい。この場合、入力部12はユーザーの発話によって生じた音響信号を取得し、ユーザーによって発話された文言を音声認識し、認識結果の文字列情報を制御装置10に入力する。音声認識処理は制御部15によって実行されてもよい。入力部12は、ユーザーの指示を制御装置10に入力可能な構成であればどのように構成されてもよい。
【0015】
出力部13は、情報をユーザーが認知可能な形で出力する。出力部13は、例えば液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等の画像表示装置であってもよい。出力部13は、画像表示装置を制御装置10に接続するためのインターフェースであっても良い。この場合、出力部13は、画像データを表示するための映像信号を生成し、自身に接続されている画像表示装置に映像信号を出力する。出力部13は、スピーカー等の音響を出力する装置であってもよい。出力部13は、スピーカーやヘッドホン等の音響出力装置を制御装置10に接続するためのインターフェースであってもよい。この場合、出力部13は、音響データを再生するための音響信号を生成し、自身に接続されている音響出力装置に音響信号を出力する。なお、出力部13は、入力部12と一体のタッチパネルとして構成されてもよい。
【0016】
記憶部14は、磁気ハードディスク装置や半導体記憶装置等の記憶装置を用いて構成される。記憶部14は、制御部15によって使用されるデータを記憶する。記憶部14は、制御部15が処理を行う際に必要となるデータを記憶する。記憶部14は、例えばメタデータ記憶部141、プロンプト記憶部142、回答情報記憶部143、として機能する。
【0017】
メタデータ記憶部141は、メタデータを記憶する。本実施形態において、メタデータは、被制御対象2を制御するための関数のメタデータをいう。メタデータは、例えば、関数の具体的な内容や、関数の機能に関する情報である。本実施形態において、メタデータは、例えば、内容情報と、引数仕様情報と、を含む。
内容情報は、被制御対象2の動作の内容を示す情報である。具体的には、内容情報は、関数名称や、定義情報等を含む。関数名称は、関数の内容を示す名称である。本実施形態において、関数名称は、関数を識別する識別情報である。定義情報は、関数の具体的な内容を示す情報である。定義情報の具体例については後述する。
引数仕様情報は、引数の仕様を示す情報である。引数仕様情報は、関数に用いられる引数の仕様に関する具体的な内容を示す情報である。本実施形態において、引数の仕様は、その引数の型、その引数の定義、その引数が取り得る値を含む。
本実施形態において、上述したメタデータに関する各種情報は、例えば、予めユーザーによって定義され、メタデータ記憶部141に記憶されてよい。メタデータ記憶部141に記憶された情報は、制御システム1による制御が行われる際に、適宜読み出されて用いられてよい。メタデータ記憶部141に記憶された情報(メタデータ)は、言語モデル20に送信されてもよい。
【0018】
プロンプト記憶部142は、プロンプトを記憶する。本実施形態において、プロンプトは、被制御対象2を制御するためのプロンプトをいう。プロンプトは、例えば、入力部12を介してユーザーによって入力される。本実施形態において、プロンプトは、自然言語等からなるテキストを含む。テキストは、例えば、日本語や英語をはじめとする任意の言語であってよい。換言すれば、本実施形態において、被制御対象2を制御するためのプロンプトは、ユーザーが通常用いる自然言語からなる。
本実施形態において、プロンプトは、例えば、量情報や、方向情報を含んでよい。量情報は、被制御対象2の動作に対応する量を示す情報である。量情報は、例えば、被制御対象2の動作に対応する距離に関する数値情報や、被制御対象2の温度や圧力、流量やトルク等の状態に関する数値情報や、被制御対象2の動作に対応する時間に関する情報を含んでよい。被制御対象2の動作に対応する距離とは、例えば、被制御対象2が移動する距離であってよい。方向情報は、例えば、動作に対応する方向を示す情報である。方向情報は、例えば、被制御対象2の動作に対応する方向に関する情報を含んでよい。被制御対象2の動作に対応する方向とは、例えば、被制御対象2が移動する方向であってよい。
本実施形態において、上述したプロンプトに関する各種情報は、ユーザーによって入力部12を介して入力された後、プロンプト記憶部142に記憶されてよい。プロンプト記憶部142に記憶された情報は、例えば、制御システム1による制御が行われる際に、適宜読み出されて用いられてよい。プロンプト記憶部142に記憶された情報は、例えば、ユーザーが参照可能なログとして用いられてもよい。
【0019】
回答情報記憶部143は、回答情報を記憶する。本実施形態において、回答情報は、後述する提示手段22によって提示される情報である。回答情報は、例えば、関数を識別する識別情報(関数名称)、関数の引数を示す引数情報、引数の値、を含んでよい。
本実施形態において、上述した回答情報に関する各種情報は、提示手段22によって提示された後、回答情報記憶部143に記憶されてよい。回答情報記憶部143に記憶された情報は、制御システム1による制御が行われる際に、適宜読み出されて用いられてよい。
【0020】
制御部15は、CPU(Central Processing Unit)等のプロセッサーとメモリー(主記憶装置)とを用いて構成される。制御部15は、プロセッサーがプログラムを実行することによって、送信手段151、通知手段152、判別手段153、制御手段154として機能する。なお、制御部15の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やPLC(Programmable Logic Controller)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されても良い。上記のプログラムは、コンピューター読み取り可能な記録媒体に記録されても良い。コンピューター読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD-ROM、半導体記憶装置(例えばSSD:Solid State Drive)等の可搬媒体、コンピューターシステムに内蔵されるハードディスクや半導体記憶装置等の記憶装置である。上記のプログラムは、電気通信回線を介して送信されてもよい。
【0021】
制御部15は、例えば自装置(制御装置10)にインストールされたアプリケーションプログラムを実行してもよい。制御装置10にインストールされたプログラムは、コンピューターを、本実施形態に係る制御システム1として機能させてよい。このようなアプリケーションの具体例として、制御システム1の専用アプリケーションとして制御装置10に提供されるアプリケーションがある。このようなアプリケーションの他の具体例として、WEBブラウザーのアプリケーションがある。このようなアプリケーションは、予め制御装置10にインストールされていてもよいし、判定処理を実行する際にその都度ダウンロードされてもよい。例えばWEBブラウザーのアプリケーションとして実装される場合には、特定のWEBサーバーに制御装置10が接続することに応じてWEBサーバーによって指定された装置(例えばWEBサーバーそのものでもよいし他のサーバーでもよい)から制御装置10がアプリケーションをダウンロードして実行してもよい。制御部15は、実行中のアプリケーションのプログラムにしたがって動作する。
【0022】
送信手段151は、メタデータを言語モデル20に送信する。メタデータは、例えば、上述のように予めユーザーによって定義され、メタデータ記憶部141に記憶される。この場合、送信手段151は、制御システム1による制御が行われる際に、メタデータ記憶部141から読み出されたメタデータを言語モデル20に送信してよい。あるいは、メタデータは、制御システム1による制御が行われる際に、プロンプトと同時にユーザーによって入力されてよい。この場合、送信手段151は、ユーザーが入力したメタデータを言語モデル20に送信してよい。
【0023】
通知手段152は、プロンプトを言語モデル20に通知する。プロンプトは、例えば、上述のようにユーザーによって入力される。この場合、通知手段152は、制御システム1による制御が行われる際に、ユーザーが入力したプロンプトを言語モデル20に送信してよい。あるいは、プロンプトは、プロンプト記憶部142に記憶されたものが用いられてよい。この場合、通知手段152は、制御システム1による制御が行われる際に、プロンプト記憶部142から読み出されたプロンプトを言語モデル20に送信してよい。この態様は、例えば、ユーザーが過去に入力したプロンプトと同様の制御を行いたい場合に好適である。
【0024】
判別手段153は、通知手段152によって通知されるプロンプトと、提示手段22によって提示される回答情報と、に応じ、識別情報が識別する関数を実行するか否かを判別する。より具体的には、判別手段153は、提示手段22が提示した回答情報に基づき関数を実行した場合に、ユーザーが入力したプロンプトに沿った被制御対象2の制御が可能であるかを判断する。そして、判別手段153は、提示手段22が提示した回答情報によって、プロンプトに沿った被制御対象2の制御が可能であると判断した場合に、関数を実行する旨を判別する。判別手段153は、提示手段22が提示した回答情報によっては、プロンプトに沿った被制御対象2の制御が不可能であると判断した場合に、関数を実行しない旨を判別してもよい。
【0025】
制御手段154は、提示手段22によって提示される回答情報を用い、被制御対象2を制御する。換言すれば、制御手段154は、判別手段153が、関数を実行する旨を判別した場合に、関数を実行する。このことで、制御手段154は、被制御対象2を制御する。制御手段154による被制御対象2の制御の詳細については後述する。
【0026】
図3は、実施形態に係る言語モデル20の機能構成の具体例を示す概略ブロック図である。
言語モデル20は、例えば、学習済みモデルである。この学習済みモデルは、例えば、インターネットサイト等の情報源にアクセスし、「常識知」などのワードを使って、様々なテキスト情報(含むソースコード)や画像情報を事前に学習させられることで、汎用的な知識を習得させられたものである。より詳細には、言語モデル20は、例えば、大規模言語モデルを含む。大規模言語モデルは、例えば、GPT-4(登録商標)、GPT-3.5-turbo、PaLM2、LaMDA2、LLaMa2、Claude 2.1、OpenCALM、Alpaca 7Bを含んでよい。言語モデル20は、例えば、WEBサーバー上に記憶されたものを用いてもよいし、制御装置10の記憶部14に記憶されたものを用いてもよい。言語モデル20は、例えば、情報処理装置に記憶されていて、その情報処理装置によって動作させられてもよい。
本実施形態において、言語モデル20は、送信手段151から送信されるメタデータや、通知手段152から通知されるプロンプトを受け付け、判定手段21、提示手段22、問い合わせ手段23として機能する。
【0027】
判定手段21は、送信手段151によって送信されるメタデータと、通知手段152によって通知されるプロンプトと、に基づき、関数を用いてプロンプトに回答するか否かを判定する。
具体的には、判定手段21は、例えば、受け付けたプロンプトの内容に対応する、関数名称、及び/又は、定義情報があるか否かを判定する。そして、判定手段21は、この内容に対応する関数名称、及び/又は、定義情報があると判定された場合に、関数を用いてプロンプトに回答すると判定する。一方、判定手段21は、前記対応する関数名称、及び/又は、定義情報がないと判定される場合に、プロンプトに関数を用いては回答しないと判定する。
また、具体的には、判定手段21は、例えば、受け付けたプロンプトの内容から、メタデータに係る関数の引数やその値が特定可能か否かを判定する。そして、判定手段21は、プロンプトから関数の引数やその値が特定された場合に、関数を用いてプロンプトに回答すると判定する。判定手段21は、プロンプトから関数の引数やその値が特定されない場合に、関数を用いてプロンプトに回答しないと判定する。
【0028】
提示手段22は、関数を用いてプロンプトに回答すると判定手段21が判定する場合に、回答情報を制御装置10に提示する。具体的には、提示手段22は、例えば、受け付けたプロンプトの内容から、メタデータに係る関数の引数やその値を適宜抜き出し、プロンプトを実行するための関数の識別情報、関数の引数、及び引数の値を回答情報として出力する。そして、提示手段22は、そのように生成された回答情報を、制御装置10に提示する。このことで、ユーザーが上述のように自然言語によって入力したプロンプトに基づく、制御装置10による被制御対象2の制御を可能とする。
提示手段22は、例えば、言語モデル20におけるファンクションコーリング(Function calling)機能によって実現されてよい。
【0029】
問い合わせ手段23は、例えば、関数を用いてプロンプトに回答しないと判定手段21が判定する場合に、通知手段152によって通知されるプロンプトの内容を、制御装置10に問い合わせる。具体的には、問い合わせ手段23は、例えば、受け付けたプロンプトの内容からメタデータに係る関数の引数やその値が抜き出せない場合に、プロンプトの内容に対応する関数の引数やその値を問い合わせる旨のコマンドを出力する。問い合わせ手段23による各種情報の問い合わせは、以下のように行われる。
すなわち、問い合わせ手段23は、例えば、プロンプト記憶部142に記憶された過去のプロンプトの情報から、受け付けたプロンプトに対応する内容を検索すべき旨のコマンドを生成して制御装置10に送信してもよい。あるいは、問い合わせ手段23は、例えば、ユーザーに対してプロンプトを再度入力すべき旨のメッセージを表示部に表示させる旨のコマンドを生成して制御装置10に送信してもよい。
以上の各構成により、本実施形態に係る制御システム1は構成される。
【0030】
被制御対象2は、制御装置10によって制御される対象である。本実施形態において、被制御対象2は、例えば、ロボット、センサ、及びプラントのいずれか1つを含む。被制御対象2は、例えば、ロボット、センサ、プラント、データベースのいずれか1つを含んでいてもよい。制御装置10による被制御対象2の制御は、例えば、少なくとも被制御対象2の動作の実行、開始、中断、終了を含んでよい。
【0031】
本実施形態において、被制御対象2は、被制御対象2を制御するための関数を制御装置10の制御手段154が実行することで制御される。以下、本実施形態における、関数による被制御対象2の制御の概要について説明する。
まず、ユーザーが、自然言語を用いて被制御対象2への動作指示を行う。ユーザーによる動作指示は、例えば、ユーザーが入力部12を用いて入力することで、制御装置10によって受け付けられる。制御装置10は、このように受け付けた自然言語による動作指示を、送信手段151によって言語モデル20に送信する。言語モデル20は、制御装置10から受け付けた自然言語による動作指示を、被制御対象2を制御するためのプロンプトとして受け付ける。言語モデル20は、受け付けたプロンプトに対する回答情報として、被制御対象2を制御するための関数の識別情報、引数、及び引数の値を、提示手段22によって制御装置10に提示する。制御装置10の制御手段154は、このように提示された回答情報に基づき、関数を実行する。このことで、被制御対象2が制御される。
制御システム1による、被制御対象2の制御の具体的なフローについては後述する。
以下、被制御対象2が上述のそれぞれである場合における、制御装置10による被制御対象2を制御する関数の定義情報の例について説明する。これらの情報は、例えば、被制御対象2の制御可否判断及びパラメータ推定を行うために、言語モデル20に送信される関数メタデータ構造を示す。
【0032】
(被制御対象がロボットの場合)
被制御対象2がロボットの場合、被制御対象2であるロボットを制御する関数は、例えば、ロボットの位置や姿勢を制御するための関数を含んでよい。ロボットがツールを含む場合、ロボットを制御する関数には、ツールを制御するための関数を含んでいてもよい。ロボットがワークを作業対象としている場合、ロボットを制御する関数には、ワークを制御するための関数を含んでいてもよい。
被制御対象2であるロボットを制御する関数の引数の型は、数値に対応する型(例えば、number型)であってよいし、数値に対応しない型(例えば、boolean型)であってよい。また、被制御対象2であるロボットを制御する関数の引数は、ロボットの位置及び姿勢の制御に対応してもよい。
【0033】
図4は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図4が示すメタデータは、言語モデル20に送信される。
図4に示す例では、関数を識別する識別情報である関数名称は、“name”:“move_robot”とされている。すなわち、
図4に示す関数はmove_robot関数と定義される。
図4に示すmove_robot関数の機能は、“description”:“translate robot’s position and rotate robot’s attitude”とされている。すなわち、
図4に示すmove_robot関数は、ロボットの位置を移動させる、あるいはロボットの姿勢を回転(変化)させる関数である。
図4に示すmove_robot関数の引数は、例えば、init_flag、dx、dy、dz、drx、dry、drzを含む。
【0034】
図4に示すinit_flagは、ロボットの位置及び姿勢を初期状態にするための引数である。init_flagはboolean型であり、量等の変数を必要としない。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、move_robot関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、ロボットの位置及び姿勢を初期状態にする旨の指示が含まれているか否かに基づき、move_robot関数の引数がinit_flagであること、及び、init_flagの値がtrue又はfalseのいずれであるかを出力する。
init_flagの値がtrueである場合、制御手段154によって、ロボットの位置及び姿勢が初期状態にされる。init_flagの値がfalseである場合、ロボットの位置及び姿勢は初期状態にされない。
【0035】
図4に示すinit_flagによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットを初期位置に戻す」といった自然言語からなるプロンプトを入力した場合、提示手段22が、init_flagの値がtrueとなるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がmove_robot関数を実行することで、ロボットの位置及び姿勢が初期状態にされる。ユーザーによるプロンプトに上述の内容が含まれない場合、提示手段22は、init_flagの値がfalseとなるように回答情報を出力し、制御装置10に提示する。このことで、制御手段154がmove_robot関数を実行しても、ロボットの位置及び姿勢が初期状態にされない。
【0036】
図4に示すdx、dy、dzは、それぞれ、ロボットの位置をX方向、Y方向、又はZ方向に移動させるための引数である。dx、dy、dzはnumber型であり、それぞれの方向にロボットの位置を移動させる量(距離)の変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、move_robot関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、ロボットの位置を移動させる方向及び距離を指定する旨の指示が含まれているか否かに基づき、move_robot関数の引数がdx、dy、dzのいずれかであることを出力し、且つ、ロボットを移動させる距離を、dx、dy、dzのいずれかあるいはそれぞれの値として出力する。制御手段154は、このように出力された回答情報に基づきmove_robot関数を実行することで、ロボットの位置をX方向、Y方向、又はZ方向に所定の距離だけ移動させる。
【0037】
図4に示すdx、dy、dzによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットをX方向に100mm移動させる」といった自然言語からなるプロンプトを入力した場合、提示手段22が、dxの値が100mmの移動距離に相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がmove_robot関数を実行することで、ロボットの位置がX方向に100mm移動する。上述の場合、ユーザーによるプロンプトには、ロボットをY方向又はZ方向に移動させる旨の内容が含まれないことから、提示手段22は、dy及びdzの値が0mmの移動距離に相当する変数となるように回答情報を出力し、制御装置10に提示する。このことで、制御手段154がmove_robot関数を実行しても、ロボットはY方向又はZ方向には移動しない。
【0038】
ここで、例えば、ユーザーによって「ロボットを100mm移動させる」とか「ロボットをX方向に移動させる」といったプロンプトが入力されることがある。これらのようなプロンプトは、提示手段22がmove_robot関数を選択するためには十分であるが、dx、dy、dzのいずれかを選択する、また、dx、dy、dzの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ロボットを移動させるのはどの方向か」「ロボットをどれくらいの距離移動させるのか」といった内容を問い合わせることが好ましい。
【0039】
図4に示すdrx、dry、drzは、それぞれ、ロボットの姿勢をX軸回り、Y軸回り、又は、Z軸回りに回転(変化)させるための引き数である。drx、dry、drzは、number型であり、それぞれに対応する軸の回りにロボットの姿勢を回転(変化)させる量を示す変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、move_robot関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、ロボットの姿勢を回転(変化)させる軸及び量を指定する旨の指示が含まれているか否かに基づき、move_robot関数の引数がdrx、dry、drzのいずれかであることを出力し、且つ、ロボットの姿勢を回転(変化)させる量を、drx、dry、drzのいずれかあるいはそれぞれの値として出力する。制御手段154は、このように出力された回答情報に基づきmove_robot関数を実行することで、ロボットの姿勢をX軸回り、Y軸回り、又は、Z軸回りに、所定の量(角度)だけ移動させる。
【0040】
図4に示すdrx、dry、drzによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットの姿勢をX軸回りに30度変化させる」といった自然言語からなるプロンプトを入力した場合、提示手段22が、drxの値が30度の姿勢変化量に相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がmove_robot関数を実行することで、ロボットの姿勢がX軸回りに30度回転(変化)する。上述の場合、ユーザーによるプロンプトには、ロボットの姿勢をY軸回り又はZ軸回りに回転(変化)させる旨の内容が含まれないことから、提示手段22は、dry及びdrzの値が0度の姿勢変化量に相当する変数となるように回答情報を出力し、制御装置10に提示する。このことで、制御手段154がmove_robot関数を実行しても、ロボットの姿勢はY軸回り又はZ軸回りには変化しない。
【0041】
ここで、例えば、ユーザーによって「ロボットの姿勢を30度回転させる」とか「ロボットの姿勢をX軸回りに変化させる」といったプロンプトが入力されることがある。これらのようなプロンプトは、提示手段22がmove_robot関数を選択するためには十分であるが、drx、dry、drzのいずれかを選択する、また、drx、dry、drzの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ロボットの姿勢を回転させるのはどの軸回りか」「ロボットの姿勢をどれくらいの角度変化させるのか」といった内容を問い合わせることが好ましい。
【0042】
図5は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図5が示すメタデータは、言語モデル20に送信される。
図5に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_robot_timeseries_pos”とされている。すなわち、
図5に示す関数はget_robot_timeseries_pos関数と定義される。
図5に示すget_robot_timeseries_pos関数の機能は、“description”:“Get robot’s position(xyz) timeseries data from database”とされている。すなわち、
図5に示すget_robot_timeseries_pos関数は、データベースから時系列に沿ったロボットの位置データを取得する関数である。get_robot_timeseries_pos関数の実行によって取得された時系列に沿ったロボットの位置データは、例えば、過去にロボットが移動した軌跡を再現することに用いられる。前記データベースは、例えば、制御装置10の記憶部14に保存されていてもよいし、クラウド等に保存されていてもよい。
図5に示すget_robot_timeseries_pos関数の引数は、例えば、starttime、endtimeを含む。
【0043】
図5に示すstarttimeは、時系列に沿ったロボットの位置データを取得する際の開始時刻を取得するための引数である。endtimeは、時系列に沿ったロボットの位置データを取得する際の終了時刻を取得するための引数である。starttime、endtimeはstring型であり、時刻の変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_robot_timeseries_pos関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、開始時刻及び終了時刻を指定する旨の指示が含まれているか否かに基づき、get_robot_timeseries_pos関数の引数がstarttime又はendtimeであることを出力し、且つ、開始時刻及び終了時刻を、それぞれ、starttime及びendtimeの値として出力する。制御手段154は、このように出力された回答情報に基づきget_robot_timeseries_pos関数を実行することで、データベースから、指定された開示時刻から終了時刻までの間における、時系列に沿ったロボットの位置データを取得する。
【0044】
図5に示すstarttime、endtimeによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「9時00分から10時00分までのロボットの軌跡を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、starttimeの値が9時00分の時刻に相当する変数となるように、且つ、endtimeの値が10時00分の時刻に相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_robot_timeseries_pos関数を実行することで、制御手段154が、データベースから、9時00分から10時00分までの、時系列に沿ったロボットの位置データを取得する。
【0045】
ここで、例えば、ユーザーによって「9時00分からのロボットの軌跡を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_robot_timeseries_pos関数を選択する、また、starttimeの値を決定するためには十分であるが、endtimeの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「終了時刻はいつか」といった内容を問い合わせることが好ましい。
【0046】
上記の内容に加えて、被制御対象2であるロボットを制御する関数は、例えば、ロボットに取り付けられたエンドエフェクタの動作(例えば、対象物を把持する動作や、対象物を突く動作)を制御するための関数や、ロボットの状態(例えば、ロボットに作用する反力)を取得するための関数を含んでいてもよい。被制御対象2であるロボットを制御する関数の引数は、例えば、ロボットに取り付けられたエンドエフェクタの動作に対応してもよい。
【0047】
図6は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図6が示すメタデータは、言語モデル20に送信される。
図6に示す例では、関数を識別する識別情報である関数名称は、“name”:“activate_robot”とされている。すなわち、
図6に示す関数は、activate_robot関数と定義される。
図6に示すactivate_robot関数の機能は、“description”:“Activate/Deactivate robot servo”とされている。すなわち、
図6に示すactivate_robot関数は、ロボットのサーボ(サーボモーター)の稼働状態(ON)又は停止状態(OFF)のパラメータを設定する関数である。
図6に示すactivate_robot関数の引数は、例えば、activate_flagを含む。
【0048】
図6に示すactivate_flagは、ロボットのサーボを稼働状態(ON)及び停止状態(OFF)のいずれか一方にするための引数である。activate_flagはboolean型であり、量等の変数を必要としない。
【0049】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、activate_robot関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、ロボットのサーボを稼働状態及び停止状態のいずれの状態に設定するかの指示に基づき、activate_flagの値が“true”(例えば、稼働状態)又は“false” (例えば、停止状態)のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきactivate_robot関数を実行することで、ロボットのサーボを稼働状態又は停止状態に設定するかを把握する。
【0050】
図6に示すactivate_flagによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットのサーボをONに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、activate_flagの値がtrueになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がactivate_robot関数を実行することで、制御手段154が、ロボットのサーボを稼働状態に設定する。
【0051】
図7は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図7が示すメタデータは、言語モデル20に送信される。
図7に示す例では、関数を識別する識別情報である関数名称は、“name”:“Set_robot_parameter of minimum, maximum range”とされている。すなわち、
図7に示す関数はset_robot_parameter of minimum, maximum range関数(以下、set_robot_param関数)と定義される。すなわち、
図7に示すset_robot_param関数は、ロボットの位置範囲、速度範囲、姿勢範囲、又は反力範囲を設定する関数である。なお、メタデータにおいて、“name”:“set_robot_param”と記載され、かつ、“description”:“Set_robot_parameter of minimum, maximum range”と記載されていてもよい。
図7に示すset_robot_param関数の引数は、例えば、parameter、value_min、value_maxを含む。
【0052】
図7に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“position_range”(位置の範囲)、“velocity_range”(速度の範囲)、“angle_range”(角度(姿勢)の範囲)、又は“force_range”(反力の範囲)である。これらの文字列は列挙子として登録されている。
【0053】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_robot_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、位置範囲、速度範囲、角度範囲(姿勢範囲)、又は反力範囲のいずれのパラメータを設定するかの指示に基づき、set_robot_param関数の引数がparameterであること、及び、parameterの値が“position_range”、“velocity_range”、“angle_range”、又は“force_range”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきset_robot_param関数を実行することで、ロボットの位置範囲、速度範囲、角度範囲、又は反力範囲のいずれのパラメータを設定するかを把握する。
【0054】
図7に示すvalue_minは、位置範囲、速度範囲、角度範囲、又は反力範囲の下限値のパラメータを設定する際に必要な数値を取得するための引数である。value_minはnumber型であり、このような下限値の数値の変数を必要とする。
図7に示すvalue_maxは、位置範囲、速度範囲、角度範囲、又は反力範囲の上限値のパラメータを設定する際に必要な数値を取得するための引数である。value_maxはnumber型であり、このような上限値の数値の変数を必要とする。
【0055】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_robot_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、set_robot_param関数の引数がvalue_min及びvalue_maxであることを出力し、且つ、それぞれ設定される下限値及び上限値の数値を、value_min及びvalue_maxそれぞれの値として出力する。制御手段154は、このように出力された回答情報に基づきset_robot_param関数を実行することで、ロボットの位置範囲、速度範囲、角度範囲、又は反力範囲の下限値又は上限値を設定する。
【0056】
図7に示すparameter、value_min、及び、value_maxによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットの反力範囲の上限値をXに、その下限値をYに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“force_range”の列挙子となるように、value_maxの値がXになるように、及び、value_minの値がYになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_robot_param関数を実行することで、制御手段154が、ロボットの反力範囲の上限値をXに、その下限値をYに設定する。
なお、“position_range”、“velocity_range”、“angle_range”についても同様である。
【0057】
ここで、例えば、ユーザーによって「反力範囲を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_robot_param関数を選択し、parameterの値が“force_range”の列挙子となるようにするためには十分であるが、value_min、value_maxの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「反力範囲の上限値及び下限値をどのくらいに設定するか」といった内容を問い合わせることが好ましい。
【0058】
図8は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図8が示すメタデータは、言語モデル20に送信される。
図8に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_robot_control_mode”とされている。すなわち、
図8に示す関数はset_robot_control_mode関数と定義される。
図8に示すset_robot_control_mode関数の機能は、“description”:“Set robot control mode. manual means to use robot pendant. remote means to use PLC/PC/Teaching”とされている。すなわち、
図8に示すset_robot_control_mode関数は、ロボットの制御モードを、ペンダント等でロボットを操作するモードであるマニュアルモード(手動モード)、及び、ティーチング等でロボットを制御するモードであるリモートモード(自動モード)、のいずれか一方に設定する関数である。
図8に示すset_robot_control_mode関数の引数は、例えば、modeを含む。
【0059】
図8に示すmodeは、設定するパラメータに対応する文字列を取得するための引数である。modeはstring型であり、モードに対応する文字列を必要とする。モードに対応する文字列は、“manual”(手動)又は“remote”(自動)である。これらの文字列は列挙子として登録されている。
【0060】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_robot_control_mode関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、手動又は自動のいずれのパラメータを設定するかの指示に基づき、set_robot_control_mode関数の引数がmodeであることを出力する。制御手段154は、このように出力された回答情報に基づきset_robot_control_mode関数を実行することで、ロボットの制御モードに、自動又は手動のいずれのパラメータを設定するかを把握する。
【0061】
図8に示すmodeによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットの制御モードを手動モードに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、modeの値が“manual”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_robot_control_mode関数を実行することで、制御手段154がロボットの制御モードを手動モードに設定する。
【0062】
ここで、例えば、ユーザーによって「ロボットの制御モードを設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_robot_control_mode関数を選択するためには十分であるが、modeの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ロボットの動作モードを手動モード/自動モードのいずれに設定するか」といった内容を問い合わせることが好ましい。
【0063】
図9は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図9が示すメタデータは、言語モデル20に送信される。
図9に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_robot_operation_mode”とされている。すなわち、
図9に示す関数はset_robot_operation_mode関数と定義される。
図9に示すset_robot_operation_mode関数の機能は、“description”:“Set robot operation mode. jog(moving by joint angle input)/world axis(Catresian coordinates in world axis/tool axis(Catresian coordinates in tool axis)”とされている。すなわち、
図9に示すset_robot_operation_mode関数は、ロボットを、ジョグ操作で制御するモード、ワールド座標で制御するモード、ツール座標等で制御するモード、のいずれか1つに設定する関数である。
図9に示すset_robot_operation_mode関数の引数は、例えば、modeを含む。
【0064】
図9に示すmodeは、設定するパラメータに対応する文字列を取得するための引数である。modeはstring型であり、モードに対応する文字列を必要とする。モードに対応する文字列は、“jog”(ジョグ操作モード)、“world_axis”(ワールド座標モード、世界座標モード)又は“tool_axis”(ツール座標モード)である。これらの文字列は列挙子として登録されている。
【0065】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_robot_operation_mode関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、ジョグ操作モード、ワールド座標モード、又は、ツール座標モードのいずれのパラメータを設定するかの指示に基づき、set_robot_operatio_mode関数の引数がmodeであることを出力する。制御手段154は、このように出力された回答情報に基づきset_robot_operation_mode関数を実行することで、ロボットの制御モードに、ジョグ、ワールド座標、又はツール座標のいずれのパラメータを設定するかを把握する。
【0066】
図9に示すmodeによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットの操作モードをジョグ操作モードに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、modeの値が“jog”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_robot_operation_mode関数を実行することで、制御手段154がロボットの制御モードをジョグ操作モードに設定する。
【0067】
ここで、例えば、ユーザーによって「ロボットの操作モードを設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_robot_operation_mode関数を選択するためには十分であるが、modeの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ロボットの操作モードをジョグ操作モード/ワールド座標モード/ツール座標モードのいずれに設定するか」といった内容を問い合わせることが好ましい。
【0068】
図10は、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図10が示すメタデータは、言語モデル20に送信される。
図10に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_robot_param”とされている。すなわち、
図10に示す関数はget_robot_param関数と定義される。
図10に示すget_robot_param関数の機能は、“description”:“Get robot parameter. posiont is robot’s xyzabc position. joint is robot’s each joint angle. op_mode is operation mode. ctrl_mode is control mode.”とされている。すなわち、
図10に示すget_robot_param関数は、ロボットの位置・姿勢情報、ロボットの関節角度、ロボットの操作モード、又は、ロボットの制御モードを取得する関数である。
図10に示すget_robot_param関数の引数は、例えば、parameterを含む。
【0069】
図10に示すparameterは、取得するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“position”(位置・姿勢情報)、“joint”(関節角度)、“op_mode”(操作モード)、又は“ctrl_mode”(制御モード)である。これらの文字列は列挙子として登録されている。
【0070】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_robot_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、位置・姿勢、関節角度、操作モード、又は制御モードのいずれのパラメータを取得するかの指示に基づき、get_robot_param関数の引数がparameterであること、及び、parameterの値が“position”、“joint”、“op_mode”、又は“ctrl_mode”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきget_robot_param関数を実行することで、ロボットの位置・姿勢を示す位置姿勢情報、ロボットの関節角度を示す関節角度情報、操作モード、又は制御モードのパラメータを取得する。
【0071】
図10に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットの位置・姿勢を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“position”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_robot_param関数を実行することで、制御手段154が、ロボットの位置・姿勢情報を取得する。なお、“joint”、“op_mode”、“ctrl_mode”についても同様である。
【0072】
ここで、例えば、ユーザーによって「ロボットの情報を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_robot_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「位置姿勢、関節角度、操作モード、又は制御モードのいずれを取得するか」といった内容を問い合わせることが好ましい。
【0073】
図11、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図11が示すメタデータは、言語モデル20に送信される。
図11に示す例では、関数を識別する識別情報である関数名称は、“name”:“activate_tool”とされている。すなわち、
図11に示す関数は、activate_tool関数と定義される。
図11に示すactivate_tool関数の機能は、“description”:“Activate/Deactivate tool”とされている。すなわち、
図11に示すactivate_tool関数は、ロボットのツール(エンドエフェクタ)の稼働状態(ON)又は停止状態(OFF)のパラメータを設定する関数である。
図11に示すactivate_tool関数の引数は、例えば、activate_flagを含む。
【0074】
図11に示すactivate_flagは、エンドエフェクタを稼働状態(ON)及び停止状態(OFF)のいずれか一方にするための引数である。activate_flagはboolean型であり、量等の変数を必要としない。
【0075】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、activate_tool関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、エンドエフェクタを稼働状態及び停止状態のいずれの状態に設定するかの指示に基づき、activate_flagの値が“true”(例えば、稼働状態)又は“false”(例えば、停止状態)のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきactivate_tool関数を実行することで、エンドエフェクタを稼働状態又は停止状態に設定するかを把握する。
【0076】
図11に示すactivate_flagによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「エンドエフェクタをONに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、activate_flagの値がtrueになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がactivate_tool関数を実行することで、制御手段154が、エンドエフェクタを稼働状態に設定する。
【0077】
図12は、被制御対象2であるロボットのエンドエフェクタが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図12が示すメタデータは、言語モデル20に送信される。
図12に示す例では、関数を識別する識別情報である関数名称は、“name”:“change_tool”とされている。すなわち、
図12に示す関数はchange_tool関数と定義される。
図12に示すchange_tool関数の機能は、“description”:“Change tool to selected index”とされている。すなわち、
図12に示すchange_tool関数は、ロボットが把持しているエンドエフェクタを、選択されたエンドエフェクタIDに対応するエンドエフェクタに交換する制御をロボットに実行させる関数である。
図12に示すchange_tool関数の引数は、例えば、tool_idを含む。
【0078】
図12に示すtool_idは、エンドエフェクタに対応するエンドエフェクタIDを取得するための引数である。tool_idはnumber型であり、エンドエフェクタIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、change_tool関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、エンドエフェクタIDを指定する旨の指示が含まれているか否かに基づき、change_tool関数の引数がtool_idであることを出力し、且つ、エンドエフェクタIDを、tool_idの値として出力する。制御手段154は、このように出力された回答情報に基づきchange_tool関数を実行することで、ロボットが現在把持しているエンドエフェクタを、選択されたエンドエフェクタIDに対応するエンドエフェクタに交換するよう、ロボットを制御する。
【0079】
図12に示すtool_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のエンドエフェクタに交換する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、tool_idの値が1番のエンドエフェクタに対応するエンドエフェクタIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がchange_tool関数を実行することで、制御手段154が、ロボットが現在把持しているエンドエフェクタを、1番のエンドエフェクタIDに対応するエンドエフェクタに持ち替えるよう、ロボットを制御する。
【0080】
ここで、例えば、ユーザーによって「エンドエフェクタを持ち替える」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がchange_tool関数を選択するためには十分であるが、tool_idの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「どのエンドエフェクタに持ち替えるのか」といった内容を問い合わせることが好ましい。
【0081】
図13は、被制御対象2であるエンドエフェクタが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図13が示すメタデータは、言語モデル20に送信される。
図13に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_tool_param”とされている。すなわち、
図13に示す関数は、get_tool_param関数と定義される。
図13に示すget_tool_param関数の機能は、“description”:“Get tool parameter. angular_velocity means tool’s angular_velocity. motor_torque means tool’s motor torque.”とされている。すなわち、
図13に示すget_tool_param関数は、ロボットに取り付けられているエンドエフェクタの角速度又はトルクのパラメータを取得する関数である。
図13に示すget_tool_param関数の引数は、例えば、parameterを含む。
【0082】
図13に示すparameterは、取得するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“angular_velocity”(角速度)、又は“motor_torque”(モータートルク)である。これらの文字列は列挙子として登録されている。
【0083】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_tool_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、エンドエフェクタの角速度又はモータートルクのいずれのパラメータを取得するかの指示に基づき、get_tool_param関数の引数がparameterであること、及び、parameterの値が“angular_velocity”、又は“motor_torque”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきget_tool_param関数を実行することで、エンドエフェクタの角速度又はモータートルクのパラメータを取得するかを把握する。
【0084】
図13に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「エンドエフェクタの角速度を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“angular_velocity”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_tool_param関数を実行することで、制御手段154が、エンドエフェクタの角速度を取得する。なお、“motor_torque”についても同様である。
【0085】
ここで、例えば、ユーザーによって「エンドエフェクタの情報を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_tool_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「エンドエフェクタの角速度又はモータートルクのいずれの情報を取得するか」といった内容を問い合わせることが好ましい。
【0086】
図14は、被制御対象2であるロボットのエンドエフェクタが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図14が示すメタデータは、言語モデル20に送信される。
図14に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_tool_param”とされている。すなわち、
図14に示す関数は、set_tool_param関数と定義される。
図14に示すset_tool_param関数の機能は、“description:Set tool parameter. angular_velocity means tool’s angular_velocity. motor_torque means tool’s motor torque.”とされている。すなわち、
図14に示すset_tool_param関数は、ロボットに取り付けられているエンドエフェクタの角速度又はトルクのパラメータを設定する関数である。
図14に示すset_tool_param関数の引数は、例えば、parameter、valueを含む。
【0087】
図14に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“angular_velocity”(角速度)、又は“motor_torque”(モータートルク)である。これらの文字列は列挙子として登録されている。
【0088】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_tool_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、角速度又はモータートルクのいずれのパラメータを設定するかの指示に基づき、set_tool_param関数の引数がparameterであること、及び、parameterの値が“angular_velocity”、又は“motor_torque”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきset_tool_param関数を実行することで、エンドエフェクタの角速度又はモータートルクのいずれのパラメータを設定するかを把握する。
【0089】
図14に示すvalueは、エンドエフェクタの角速度又はモータートルクのパラメータを設定する際に必要な数値を取得するための引数である。valueはnumber型であり、角速度又はモータートルクの数値の変数を必要とする。
【0090】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_tool_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、set_tool_param関数の引数がvalueであることを出力し、且つ、設定する角速度又はモータートルクの数値を、valueの値として出力する。制御手段154は、このように出力された回答情報に基づきset_tool_param関数を実行することで、エンドエフェクタの角速度又はモータートルクのパラメータを設定する。
【0091】
図14に示すparameter及びvalueによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「エンドエフェクタの角速度をXに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“angular_velocity”の列挙子となるように、且つ、valueの値がXに対応する数値になるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_tool_param関数を実行することで、制御手段154が、エンドエフェクタの角速度をXに対応する数値に設定する。なお、“motor_torque”についても同様である。
【0092】
ここで、例えば、ユーザーによって「エンドエフェクタの角速度を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_tool_param関数を選択し、parameterの値が“angular_velocity”の列挙子となるようにするためには十分であるが、valueの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「エンドエフェクタの角速度をどのくらいに設定するか」といった内容を問い合わせることが好ましい。
【0093】
図15、被制御対象2であるロボットが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図15が示すメタデータは、言語モデル20に送信される。
図15に示す例では、関数を識別する識別情報である関数名称は、“name”:“activate_work”とされている。すなわち、
図15に示す関数は、activate_work関数と定義される。
図15に示すactivate_work関数の機能は、“description”:“Activate/Deactivate work”とされている。すなわち、
図15に示すactivate_work関数は、ロボットが作業するワークの稼働状態(ON)又は停止状態(OFF)のパラメータを設定する関数である。
図15に示すactivate_tool関数の引数は、例えば、activate_flagを含む。
【0094】
図15に示すactivate_flagは、ワークを稼働状態(ON)及び停止状態(OFF)のいずれか一方にするための引数である。activate_flagはboolean型であり、量等の変数を必要としない。
【0095】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、activate_work関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、ワークを稼働状態及び停止状態のいずれの状態に設定するかの指示に基づき、activate_flagの値が“true”(例えば、稼働状態)又は“false”(例えば、停止状態)のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきactivate_work関数を実行することで、ワークを稼働状態又は停止状態に設定するかを把握する。
【0096】
図15に示すactivate_flagによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ワークをONに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、activate_flagの値がtrueになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がactivate_work関数を実行することで、制御手段154が、エンドエフェクタを稼働状態に設定する。
【0097】
図16は、被制御対象2であるロボットが作業するワークが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図16が示すメタデータは、言語モデル20に送信される。
図16に示す例では、関数を識別する識別情報である関数名称は、“name”:“change_work”とされている。すなわち、
図16に示す関数はchange_work関数と定義される。
図16に示すchange work関数の機能は、“description”:“Change work to selected index”とされている。すなわち、
図16に示すchange work関数は、ロボットが作業するワークを、選択されたワークIDに対応するワークに変更する制御をロボットに実行させる関数である。
図16に示すchange_work関数の引数は、例えば、work_idを含む。
【0098】
図16に示すwork_idは、ワークに対応するワークIDを取得するための引数である。work_idはnumber型であり、ワークIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、change_work関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、work_idを指定する旨の指示が含まれているか否かに基づき、change_work関数の引数がwork_idであることを出力し、且つ、ワークIDを、work_idの値として出力する。制御手段154は、このように出力された回答情報に基づきchange_work関数を実行することで、ロボットが現在作業しているワークを、選択されたワークIDに対応するワークに変更するよう、ロボットを制御する。
【0099】
図16に示すwork_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ロボットが作業するワークを1番のワークに変更する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、work_idの値が1番のワークIDに対応するワークIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がchange_work関数を実行することで、制御手段154が、ロボットが現在作業しているワークを、1番のワークIDに対応するワークに変更するよう、ロボットを制御する。
【0100】
ここで、例えば、ユーザーによって「ロボットが作業するワークを変更する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がchange_work関数を選択するためには十分であるが、work_idの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「どのワークに変更するのか」といった内容を問い合わせることが好ましい。
【0101】
図17は、被制御対象2であるロボットが作業するワークが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図17が示すメタデータは、言語モデル20に送信される。
図17に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_work_param”とされている。すなわち、
図17に示す関数は、get_work_param関数と定義される。
図17に示すget_work_param関数の機能は、“description”:“Get work parameter. angular_velocity means work’s angular_velocity. mass means tool’s mass.”とされている。すなわち、
図17に示すget_work_param関数は、ロボットが作業するワークの角速度又は質量のパラメータを設定する関数である。
図17に示すget_work_param関数の引数は、例えば、parameterを含む。
【0102】
図17に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“angular_velocity”(角速度)、又は“mass”(質量)である。これらの文字列は列挙子として登録されている。
【0103】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_work_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、ワークの角速度又は質量のいずれのパラメータを取得するかの指示に基づき、get_work_param関数の引数がparameterであること、及び、parameterの値が“angular_velocity”、又は“mass”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきget_work_param関数を実行することで、ワークの角速度又は質量のパラメータを取得するかを把握する。
【0104】
図17に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ワークの角速度を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“angular_velocity”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_work_param関数を実行することで、制御手段154が、エンドエフェクタの角速度を取得する。なお、“mass”についても同様である。
【0105】
ここで、例えば、ユーザーによって「ワークの情報を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_work_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ワークの角速度又は質量のいずれの情報を取得するか」といった内容を問い合わせることが好ましい。
【0106】
図18は、被制御対象2であるロボットが作業するワークが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図18が示すメタデータは、言語モデル20に送信される。
図18に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_work_param”とされている。すなわち、
図18に示す関数は、set_work_param関数と定義される。
図18に示すset_work_param関数の機能は、“description:Set work parameter. angular_velocity means work’s angular_velocity. m_time means to be activation time.”とされている。すなわち、
図18に示すset_work_param関数は、ロボットが作業するワークの角速度又は稼働時間(回転時間)のパラメータを設定する関数である。
図18に示すset_work_param関数の引数は、例えば、parameter、valueを含む。
【0107】
図18に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“angular_velocity”(角速度)、又は“m_time”(稼働時間(回転時間))である。これらの文字列は列挙子として登録されている。
【0108】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_work_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、角速度又は稼働時間のいずれのパラメータを設定するかの指示に基づき、set_work_param関数の引数がparameterであること、及び、parameterの値が“angular_velocity”、又は“m_time”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきset_work_param関数を実行することで、ワークの角速度又は稼働時間のいずれのパラメータを設定するかを把握する。
【0109】
図18に示すvalueは、ワークの角速度又は稼働時間(回転時間、駆動時間)のパラメータを設定する際に必要な数値を取得するための引数である。valueはnumber型であり、角速度又は稼働時間の数値の変数を必要とする。
【0110】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_work_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、set_work_param関数の引数がvalueであることを出力し、且つ、設定する角速度又は稼働時間の数値を、valueの値として出力する。制御手段154は、このように出力された回答情報に基づきset_work_param関数を実行することで、ワークの角速度又は稼働時間のパラメータを設定する。
【0111】
図18に示すparameter及びvalueによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ワークの角速度をXに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“angular_velocity”の列挙子となるように、且つ、valueの値がXに対応する数値になるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_work_param関数を実行することで、制御手段154が、ワークの角速度をXに対応する数値に設定する。なお、“m_time”についても同様である。
【0112】
ここで、例えば、ユーザーによって「ワークの角速度を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_work_param関数を選択し、parameterの値が“angular_velocity”の列挙子となるようにするためには十分であるが、valueの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ワークの角速度をどのくらいに設定するか」といった内容を問い合わせることが好ましい。なお、“m_time”についても同様である。
【0113】
(被制御対象がセンサの場合)
被制御対象2がセンサの場合、被制御対象2であるセンサを制御する関数は、例えば、センサによる計測を制御するための関数、センサから計測値を取得するための関数を含んでよい。
本実施形態において、センサは、例えば、カメラである。センサによる計測を制御するための関数は、例えば、画像データ又は点群データを撮像して取得するための関数や、ワークの位置、ワークの表面の法線ベクトルの方向、ワークの表面をロボットが移動するための軌跡等の情報を、撮像した画像データから取得するための関数を含んでよい。
被制御対象2であるセンサを制御する関数の引数の型は、数値に対応する型(例えば、number型)であってよいし、数値に対応しない型(例えば、boolean型)であってよい。また、被制御対象2であるセンサを制御する関数の引数は、撮像等の計測の実行及びワークの位置等の取得に対応してもよい。
【0114】
図19は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図19が示すメタデータは、言語モデル20に送信される。
図19に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_image”とされている。すなわち、
図19に示す関数はget_image関数と定義される。
図19に示すget_image関数の機能は、“description”:“Get single camera image of selected device id.”とされている。すなわち、
図19に示すget_image関数は、選択されたデバイスIDに対応するカメラによって撮像を実行し、画像データを取得する関数である。
図19に示すget_image関数の引数は、例えば、device_idを含む。
【0115】
図19に示すdevice_idは、画像データを取得するカメラに対応するデバイスIDを取得するための引数である。device_idはnumber型であり、デバイスIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_image関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、デバイスIDを指定する旨の指示が含まれているか否かに基づき、get_image関数の引数がdevice_idであることを出力し、且つ、デバイスIDを、device_idの値として出力する。制御手段154は、このように出力された回答情報に基づきget_image関数を実行することで、選択されたデバイスIDに対応するカメラによって画像データを取得する。
【0116】
図19に示すdevice_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のカメラで写真を撮る」といった自然言語からなるプロンプトを入力した場合、提示手段22が、device_idの値が1番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_image関数を実行することで、制御手段154が、1番のデバイスIDに対応するカメラが撮像した画像データを取得する。
【0117】
なお、
図19に示すdevice_idにおいて、“description”:“Camera’s device ID. default value is zero.”とあるように、デバイスIDの初期値は0番である。ユーザーによるプロンプトにデバイスIDに関する情報が含まれない場合、提示手段22は、device_idの値が0番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_image関数を実行することで、制御手段154は、0番のデバイスIDに対応するカメラが撮像した画像データを取得する。
【0118】
図20は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図20が示すメタデータは、言語モデル20に送信される。
図20に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_pointcloud”とされている。すなわち、
図20に示す関数はget_pointcloud関数と定義される。
図20に示すget_pointcloud関数の機能は、“description”:“Get single point cloud sensor data of selected device id.”とされている。すなわち、
図20に示すget_pointcloud関数は、選択されたデバイスIDに対応するカメラによって撮像を実行し、点群データを取得する関数である。制御システム1においてget_pointcloud関数を実行する場合、被制御対象2であるカメラには、例えば、点群データの取得に対応可能なものが用いられることが好ましい。
図20に示すget_pointcloud関数の引数は、例えば、device_idを含む。
【0119】
図20に示すdevice_idは、点群データを取得するカメラに対応するデバイスIDを取得するための引数である。device_idはnumber型であり、デバイスIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_pointcloud関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、デバイスIDを指定する旨の指示が含まれているか否かに基づき、get_pointcloud関数の引数がdevice_idであることを出力し、且つ、デバイスIDを、device_idの値として出力する。制御手段154は、このように出力された回答情報に基づきget_pointcloud関数を実行することで、選択されたデバイスIDに対応するカメラによって点群データを取得する。
【0120】
図20に示すdevice_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のカメラで点群データを取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、device_idの値が1番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_pointcloud関数を実行することで、制御手段154が、1番のデバイスIDに対応するカメラが撮像した点群データを取得する。
【0121】
なお、
図20に示すdevice_idにおいて、“description”:“Point cloud sensor’s device ID. default value is zero”とあるように、デバイスIDの初期値は0番である。ユーザーによるプロンプトにデバイスIDに関する情報が含まれない場合、提示手段22は、device_idの値が0番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_pointcloud関数を実行することで、制御手段154は、0番のデバイスIDに対応するカメラが撮像した点群データを取得する。
【0122】
図21は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図21が示すメタデータは、言語モデル20に送信される。
図21に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_force”とされている。すなわち、
図21に示す関数はget_force関数と定義される。
図21に示すget_force関数の機能は、“description”:“Get force data from force sensor of selected device id.”とされている。すなわち、
図21に示すget_force関数は、選択されたデバイスIDに対応する力センサ等から得られる反力のデータを取得する関数である。
図21に示すget_force関数の引数は、例えば、device_idを含む。
【0123】
図21に示すdevice_idは、反力のデータを出力する力センサ等に対応するデバイスIDを取得するための引数である。device_idはnumber型であり、デバイスIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_force関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、デバイスIDを指定する旨の指示が含まれているか否かに基づき、get_force関数の引数がdevice_idであることを出力し、且つ、デバイスIDを、device_idの値として出力する。制御手段154は、このように出力された回答情報に基づきget_force関数を実行することで、選択されたデバイスIDに対応する力センサ等によって反力のデータを取得する。
【0124】
図21に示すdevice_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番の力センサで反力を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、device_idの値が1番の力センサに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_force関数を実行することで、制御手段154が、1番のデバイスIDに対応する力センサが得た反力のデータを取得する。
【0125】
なお、
図21に示すdevice_idにおいて、“description”:“Force sensor’s device ID. default value is zero.”とあるように、デバイスIDの初期値は0番である。ユーザーによるプロンプトにデバイスIDに関する情報が含まれない場合、提示手段22は、device_idの値が0番の力センサ等に対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_force関数を実行することで、制御手段154は、制御手段154は、0番のデバイスIDに対応する力センサ等が得た反力のデータを取得する。
【0126】
図22は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図22が示すメタデータは、言語モデル20に送信される。
図22に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_work_pos_from_image”とされている。すなわち、
図22に示す関数はget_work_pos_from_image関数と定義される。
図22に示すget_work_pos_from_image関数の機能は、“description”:“Get robot’s work position from selected device id’s camera’s image”とされている。すなわち、
図22に示すget_work_pos_from_image関数は、選択されたデバイスIDに対応するカメラによって撮像された画像データから、ロボットのワークの位置を特定する関数である。
図22に示すget_work_pos_from_image関数の引数は、例えば、device_idを含む。
【0127】
図22に示すdevice_idは、画像データを取得するカメラに対応するデバイスIDを取得するための引数である。
図22に示すdevice_idは、
図19に示すdevice_idと同様であるため、説明を省略する。
図22に示すdevice_idによる処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のカメラ画像からワーク位置を特定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、device_idの値が1番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_work_pos_from_image関数を実行することで、制御手段154が、1番のデバイスIDに対応するカメラによって撮像された画像データから、ロボットのワークの位置を特定する。
【0128】
なお、
図19に示すdevice_idと同様に、
図22に示すdevice_idにおいて、“description”:“Camera’s device ID. default value is zero.”とあるように、デバイスIDの初期値は0番である。ユーザーによるプロンプトにデバイスIDに関する情報が含まれない場合、提示手段22は、device_idの値が0番のカメラに対応するデバイスIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_work_pos_from_image関数を実行することで、制御手段154は、0番のデバイスIDに対応するカメラによって撮像された画像データから、ロボットのワークの位置を特定する。
【0129】
図23は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図23が示すメタデータは、言語モデル20に送信される。
図23に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_work_surface_positions_and_normals”とされている。すなわち、
図23に示す関数はget_work_surface_positions_and_normals関数と定義される。
図23に示すget_work_surface_positions_and_normals関数の機能は、“description”:“Get robot’s work surface’s positions and normal vectors”とされている。すなわち、
図23に示すget_work_surface_positions_and_normals関数は、選択されたデバイスIDに対応するカメラによって撮像された画像データから、ロボットのワークの表面の位置及び法線ベクトルの方向を特定(取得)する関数である。
図23に示すget_work_surface_positions_and_normals関数の引数は、例えば、work_idを含む。
【0130】
図23に示すwork_idは、表面の位置及び法線ベクトルの方向を特定する対象となるワークに対応するワークIDを取得するための引数である。work_idはnumber型であり、ワークIDの変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_work_surface_positions_and_normals関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、ワークIDを指定する旨の指示が含まれているか否かに基づき、get_work_surface_positions_and_normals関数の引数がwork_idであることを出力し、且つ、ワークIDを、work_idの値として出力する。制御手段154は、このように出力された回答情報に基づきget_work_surface_positions_and_normals関数を実行することで、選択されたワークIDに対応するワークの表面の位置及び法線ベクトルの方向を特定する。
【0131】
図23に示すwork_idによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のワークの表面の位置及び法線ベクトルの方向を特定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、work_idの値が1番のワークに対応するワークIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_work_surface_positions_and_normals関数を実行することで、制御手段154が、1番のワークIDに対応するワークの表面の位置及び法線ベクトルの方向を特定する。
【0132】
なお、
図23に示すwork_idにおいて、“description”:“Work’s ID. default value is zero.”とあるように、ワークIDの初期値は0番である。ユーザーによるプロンプトにワークIDに関する情報が含まれない場合、提示手段22は、work_idの値が0番のワークに対応するワークIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_work_surface_positions_and_normals関数を実行することで、制御手段154は、0番のワークIDに対応するワークの表面の位置及び法線ベクトルの方向を特定する。
【0133】
図24は、被制御対象2であるセンサが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図24が示すメタデータは、言語モデル20に送信される。
図24に示す例では、関数を識別する識別情報である関数名称は、“name”:“gen_trajectory_on_work_surface”とされている。すなわち、
図24に示す関数はgen_trajectory_on_work_surface関数と定義される。
図24に示すgen_trajectory_on_work_surface関数の機能は、“description”:“Generate robot’s positions trajectory on selected work’s surface”とされている。すなわち、
図24に示すgen_trajectory_on_work_surface関数は、選択されたワークの表面における、ロボットの移動軌跡を生成する関数である。gen_trajectory_on_work_surface関数によって生成されたロボットの移動軌跡は、例えば、選択されたワークの表面を研磨することに用いられる。
図24に示すgen_trajectory_on_work_surface関数の引数は、例えば、work_idを含む。
【0134】
図24に示すwork_idは、表面におけるロボットの移動軌跡を生成する対象となるワークに対応するワークIDを取得するための引数である。
図24に示すwork_idは、
図23に示すwork_idと同様であるため、説明を省略する。
図24に示すwork_idによる処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「1番のワークを研磨するための軌跡を生成する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、work_idの値が1番のワークに対応するワークIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がgen_trajectory_on_work_surface関数を実行することで、制御手段154が、1番のワークIDに対応するワークの表面におけるロボットの移動軌跡を生成する。
【0135】
なお、
図24に示すwork_idにおいて、“description”:“Work’s ID. default value is zero.”とあるように、ワークIDの初期値は0番である。ユーザーによるプロンプトにワークIDに関する情報が含まれない場合、提示手段22は、work_idの値が0番のワークに対応するワークIDに相当する変数となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がgen_trajectory_on_work_surface関数を実行することで、制御手段154は、0番のワークIDに対応するワークの表面におけるロボットの移動軌跡を生成する。
【0136】
(被制御対象がプラントの場合)
被制御対象2がプラントの場合、被制御対象2であるプラントを制御する関数は、例えば、ボイラ等をはじめとするプラント設備の稼働、開始、停止を制御するための関数と、プラント設備の状態を示す値を取得するための関数と、を含んでよい。
被制御対象2であるプラントを制御する関数の引数の型は、数値に対応する型(例えば、number型)であってよいし、数値に対応しない型(例えば、boolean型)であってよい。また、関数の引数の型は、文字列に対応する型(例えば、string型)であってもよいし、複数の列挙子に対応する型(例えば、enum型)であってもよい。また、被制御対象2であるプラントを制御する関数の引数は、ボイラ等のプラント設備の稼働、開始、停止、プラント設備の状態を示す状態情報の取得、に対応してもよい。
【0137】
図25は、被制御対象2であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図25に示すメタデータは、言語モデル20に送信される。
図25に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_plant_param”とされている。すなわち、
図25に示す関数はget_plant_param関数と定義される。
図25に示すget_plant_param関数の機能は、“description”:“Get plant parameter of maximum pressure or maximum temperature or maximum flow rate”とされている。すなわち、
図25に示すget_plant_param関数は、プラントの最大圧力又は最大温度のパラメータを取得する関数である。
図25に示すget_plant_param関数の引数は、例えば、parameterを含む。
【0138】
図25に示すparameterは、取得するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“maximum_pressure”(最大圧力)又は“maximum_temperature”(最大温度)、“maximum_flow_rate”(最大流量)である。これらの文字列は列挙子として登録されている。
【0139】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_plant_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、最大圧力又は最大温度のいずれのパラメータを取得するかの指示に基づき、get_plant_param関数の引数がparameterであること、及び、parameterの値が“maximum_pressure”又は“maximum_temperature”、“maximum_flow_rate”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきget_plant_param関数を実行することで、プラントの最大圧力又は最大温度、最大流量のパラメータを取得する。
【0140】
図25に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ボイラの最大圧力を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“maximum_pressure”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_plant_param関数を実行することで、制御手段154が、プラント設備(ボイラ)の最大圧力を取得する。なお、“maximum_temperature”、“maximum_flow_rate”についても同様である。
【0141】
ここで、例えば、ユーザーによって「ボイラの状態を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_plant_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「最大圧力又は最大温度のいずれを取得するか」といった内容を問い合わせることが好ましい。
【0142】
図26は、被制御対象2であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図26が示すメタデータは、言語モデル20に送信される。
図26に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_plant_param”とされている。すなわち、
図26に示す関数はset_plant_param関数と定義される。
図26に示すset_plant_param関数の機能は、“description”:“Set plant parameter of maximum pressure or maximum temperature or maximum flow rate”とされている。すなわち、
図26に示すset_plant_param関数は、プラントの最大圧力又は最大温度のパラメータを設定する関数である。
図26に示すset_plant_param関数の引数は、例えば、parameter、valueを含む。
【0143】
図26に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“maximum_pressure”(最大圧力)又は“maximum_temperature”(最大温度)、“maximum_flow_rate”(最大流量)である。これらの文字列は列挙子として登録されている。
【0144】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_plant_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、最大圧力又は最大温度のいずれのパラメータを設定するかの指示に基づき、set_plant_param関数の引数がparameterであること、及び、parameterの値が“maximum_pressure”又は“maximum_temperature”、“maximum_flow_rate”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきset_plant_param関数を実行することで、プラントの最大圧力又は最大温度のいずれのパラメータを設定するかを把握する。
【0145】
図26に示すvalueは、プラントの最大圧力又は最大温度のパラメータを設定する際に必要な数値を取得するための引数である。valueはnumber型であり、温度又は圧力の数値の変数を必要とする。
【0146】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_plant_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、set_plant_param関数の引数がvalueであることを出力し、且つ、設定する最大圧力又は最大温度の数値を、valueの値として出力する。制御手段154は、このように出力された回答情報に基づきset_plant_param関数を実行することで、プラントの最大圧力又は最大温度のパラメータを設定する。
【0147】
図26に示すparameter及びvalueによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「ボイラの最大圧力を25Paに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“maximum_pressure”の列挙子となるように、且つ、valueの値が25Paの数値になるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_plant_param関数を実行することで、制御手段154が、プラント設備(ボイラ)の最大圧力を25Paに設定する。なお、“maximum_temperature”、“maximum_flow_rate”についても同様である。
【0148】
ここで、例えば、ユーザーによって「ボイラの圧力を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_plant_param関数を選択し、parameterの値が“maximum_pressure”の列挙子となるようにするためには十分であるが、valueの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「ボイラの圧力をどのくらいに設定するか」といった内容を問い合わせることが好ましい。
【0149】
図27は、被制御対象2であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図27が示すメタデータは、言語モデル20に送信される。
図27に示す例では、関数を識別する識別情報である関数名称は、“name”:“control_motor”とされている。すなわち、
図27に示す関数は、control_motor関数と定義される。
図27に示すcontrol_motor関数の機能は、“description:Control motor of plant. motor_id or angular_velocity or motor_torque”とされている。すなわち、
図27に示すcontrol_motor関数は、プラントのモータの角速度又はトルクのパラメータを設定する関数である。
図27に示すcontrol_motor関数の引数は、例えば、parameter、valueを含む。
【0150】
図27に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“motor_id”、“angular_velocity”(角速度)、又は“motor_torque”(モータートルク)である。これらの文字列は列挙子として登録されている。
【0151】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、control_motor関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、idで指定されたモータの角速度又はトルクのいずれのパラメータを設定するかの指示に基づき、control_motor関数の引数がparameterであること、及び、parameterの値が“motor_id”、“angular_velocity”、又は“motor_torque”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきcontrol_motor関数を実行することで、プラントのどのモータの角速度又はトルクのパラメータを設定するかを把握する。
【0152】
図27に示すvalueは、プラントのモータの角速度又はトルクのパラメータを設定する際に必要な数値を取得するための引数である。valueはnumber型であり、モータのid、角速度又はトルクの数値の変数を必要とする。
【0153】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、control_motor関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、control_motor関数の引数がvalueであることを出力し、且つ、設定するモータのid、角速度又はトルクの数値を、valueの値として出力する。制御手段154は、このように出力された回答情報に基づきcontrol_motor関数を実行することで、プラントの、idで指定されたモータの角速度又はトルクのパラメータを設定する。
【0154】
図27に示すparameter及びvalueによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「X番のモータの角速度をYに設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“angular_velocity”の列挙子となるように、且つ、valueの値がYに対応する数値になるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がcontrol_motor関数を実行することで、制御手段154が、プラント設備(X番のモーター)の角速度をYに設定する。なお、“motor_torque”についても同様である。
【0155】
ここで、例えば、ユーザーによって「X番のモータの角速度を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がcontrol_motor関数を選択し、parameterの値が“angular_velocity”の列挙子となるようにするためには十分であるが、valueの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「X番のモータの角速度をどのくらいに設定するか」といった内容を問い合わせることが好ましい。なお、“motor_id”及び“motor_torque”についても同様である。
【0156】
図28は、被制御対象2であるプラントが受信するコマンドに用いられるデータ構造の一例を示す図である。なお、
図28が示すメタデータは、言語モデル20に送信される。
図28に示す例では、関数を識別する識別情報である関数名称は、“name:control_valve”とされている。すなわち、
図28に示す関数は、control_valve関数と定義される。
図28に示すcontrol_valve関数の機能は、“description”:“Control valve of plant.”とされている。すなわち、
図28に示すcontrol_valve関数は、プラントのバルブの稼働又は停止のパラメータを設定する関数である。
図28に示すcontrol_valve関数の引数は、例えば、valve_id、activateを含む。
【0157】
図28に示すvalve_idは、プラントのバルブであって制御対象のバルブ、を示すバルブIDを指定するための引数である。valve_idはnumber型であり、バルブIDの変数を必要とする。
図28に示すactivateは、バルブを稼働状態及び停止状態のいずれか一方にするための引数である。activateはboolean型であり、量等の変数を必要としない。
【0158】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、control_valve関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、valve_idで指定されたバルブを稼働状態及び停止状態のいずれの状態に設定するかの指示に基づき、control_valve関数の引数がvalve_idであること、及び、activateの値が“true”(例えば、稼働状態)又は“false”(例えば、停止状態)のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきcontrol_valve関数を実行することで、プラントのどのバルブを稼働状態又は停止状態に設定するかを把握する。
【0159】
図28に示すvalve_id及びactivateによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「X番のバルブを稼働状態に設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、valve_idの値がXとなるように、且つ、activateの値がtrueになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がcontrol_valve関数を実行することで、制御手段154が、プラント設備(X番のバブル)を稼働状態に設定する。
【0160】
ここで、例えば、ユーザーによって「バルブを稼働状態に設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がcontrol_valve関数を選択し、activateの値が“true”となるようにするためには十分であるが、valve_idの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「何番のバルブを稼働状態に設定するか」といった内容を問い合わせることが好ましい。
【0161】
(被制御対象がデータベースの場合)
被制御対象2がデータベースの場合、被制御対象2であるデータベースを制御する関数は、例えば、データベースによる記憶を制御するための関数、データベースから情報を取得するための関数を含んでよい。
本実施形態において、データベースは、例えば、制御装置10の記憶部14であってもよく、クラウドなどであってもよい。データベースには、ロボットやセンサ、プラントからの情報が記憶されてもよい。データベースがロボットからの情報が記憶される場合、データベースはロボットの一部として機能してもよい。データベースがセンサからの情報が記憶される場合、データベースはセンサの一部として機能してもよい。データベースがプラントからの情報が記憶される場合、データベースはプラントの一部として機能してもよい。
被制御対象2であるデータベースを制御する関数の引数の型は、数値に対応する型(例えば、number型)であってよいし、数値に対応しない型(例えば、boolean型)であってよい。
【0162】
図29は、被制御対象2であるデータベースが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図29が示すメタデータは、言語モデル20に送信される。
図29に示す例では、関数を識別する識別情報である関数名称は、“name”:“activate_recording_data”とされている。すなわち、
図29に示す関数は、activate_recording_data関数と定義される。
図29に示すactivate_recording_data関数の機能は、“description”:“Activate/Deactivate recording to database”とされている。すなわち、
図29に示すactivate_recording_data関数は、データベースへの記録開始又は記録停止のパラメータを設定する関数である。
図29に示すactivate_recording_data関数の引数は、例えば、activate_flagを含む。
【0163】
図29に示すactivate_flagは、データベースの状態を記録開始及び記録停止(OFF)のいずれか一方にするための引数である。activate_flagはboolean型であり、量等の変数を必要としない。
【0164】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、activate_recording_data関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、データベースの状態を記録開始状態及び記録停止状態のいずれの状態に設定するかの指示に基づき、activate_flagの値が“true”(例えば、記録開始状態)又は“false”(例えば、記録停止状態)のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきactivate_recording_data関数を実行することで、データベースの状態を記録開始状態又は記録停止状態に設定するかを把握する。
【0165】
図29に示すactivate_flagによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「データベースへの記録を開始する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、activate_flagの値がtrueになるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がactivate_recording_data関数を実行することで、制御手段154が、データベースへの記録を開始状態に設定する。
【0166】
図30は、被制御対象2である、動画や音声等を記録するデータベースが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図30が示すメタデータは、言語モデル20に送信される。
図30に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_recording_param”とされている。すなわち、
図30に示す関数は、get_recording_param関数と定義される。
図30に示すget_recording_param関数の機能は、“description”:“Get recording parameter. sampling_time means sampling time. time_out means time out seconds. status means database’s status of recordig”とされている。すなわち、
図30に示すget_recording_param関数は、データベースのサンプリングタイム、タイムアウト、又はステータスのパラメータを取得する関数である。
図30に示すget_recording_param関数の引数は、例えば、parameterを含む。
【0167】
図30に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“sampling_time”(サンプリング時間)、“time_out”(タイムアウト時間)、又は“status”(記録開始状態、記録停止状態)である。これらの文字列は列挙子として登録されている。
【0168】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_recording_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、データベースのサンプリング時間、タイムアウト時間、又はステータスのいずれのパラメータを取得するかの指示に基づき、get_recording_param関数の引数がparameterであること、及び、parameterの値が“sampling_time”、“time_out”、又は“status”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきget_recording_param関数を実行することで、データベースのサンプリング時間、タイムアウト時間、又はステータスのパラメータを取得するかを把握する。
【0169】
図30に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「データベースのサンプリング時間を取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“sampling_time”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_recording_param関数を実行することで、制御手段154が、データベースのサンプリング時間を取得する。なお、“time_out”、“status”についても同様である。
【0170】
ここで、例えば、ユーザーによって「データベースの情報を取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_recording_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「データベースのサンプリング時間、タイムアウト時間、又はステータスのいずれの情報を取得するか」といった内容を問い合わせることが好ましい。
【0171】
図31は、被制御対象2である、動画や音声等を記録するデータベースが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図31が示すメタデータは、言語モデル20に送信される。
図31に示す例では、関数を識別する識別情報である関数名称は、“name”:“set_recording_param”とされている。すなわち、
図31に示す関数は、set_recording_param関数と定義される。
図31に示すset_recording_param関数の機能は、“description”:“Set recording parameter. sampling_time means sampling time. time_out means time out seconds.”とされている。すなわち、
図31に示すset_recording_param関数は、データベースのサンプリングタイム、又はタイムアウトのパラメータを設定する関数である。
図31に示すset_recording_param関数の引数は、例えば、parameterを含む。
【0172】
図31に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“sampling_time”(サンプリング時間)、又は“time_out”(タイムアウト時間)である。これらの文字列は列挙子として登録されている。
【0173】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、set_recording_param関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる、データベースのサンプリング時間、又はタイムアウト時間のいずれのパラメータを取得するかの指示に基づき、set_recording_param関数の引数がparameterであること、及び、parameterの値が“sampling_time”、又は“time_out”のいずれであるかを出力する。制御手段154は、このように出力された回答情報に基づきset_recording_param関数を実行することで、データベースのサンプリング時間、又はタイムアウト時間のパラメータを設定するかを把握する。
【0174】
図31に示すparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「データベースのサンプリング時間を設定する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、parameterの値が“sampling_time”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がset_recording_param関数を実行することで、制御手段154が、データベースのサンプリング時間を設定する。なお、“time_out”についても同様である。
【0175】
ここで、例えば、ユーザーによって「データベースの情報を設定する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がset_recording_param関数を選択するためには十分であるが、parameterの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「データベースのサンプリング時間、又はタイムアウト時間のいずれの情報を設定するか」といった内容を問い合わせることが好ましい。
【0176】
図32は、被制御対象2であるデータベースが受信するコマンドに用いられるデータ構造の例を示す図である。なお、
図32が示すメタデータは、言語モデル20に送信される。
図32に示す例では、関数を識別する識別情報である関数名称は、“name”:“get_timeseries_recording_data”とされている。すなわち、
図32に示す関数はget_timeseries_recording_data関数と定義される。
図32に示すget_timeseries_recording_data関数の機能は、“description”:“Get timeseries data from database. robot_pos means robot’s position(xyzabc). force means force sensor’s values”とされている。すなわち、
図32に示すget_timeseries_recording_data関数は、データベースから時系列に沿ったデータ(含む、ロボットの位置・姿勢を示す位置・姿勢情報、力覚センサ等によって得られた反力データ等)を取得する関数である。get_timeseries_recording_data関数の実行によって取得された時系列に沿ったロボットの位置データは、例えば、過去にロボットが移動した軌跡を再現することに用いられる。前記データベースは、例えば、制御装置10の記憶部14に保存されていてもよいし、クラウド等に保存されていてもよい。
図32に示すget_timeseries_recording_data関数の引数は、例えば、start_time、end_time、parameterを含む。
【0177】
図32に示すstart_timeは、時系列に沿ったデータを取得する際の開始時刻を取得するための引数である。end_timeは、時系列に沿ったデータを取得する際の終了時刻を取得するための引数である。start_time、end_timeはstring型であり、時刻の変数を必要とする。
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_timeseries_recording_data関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに、開始時刻及び終了時刻を指定する旨の指示が含まれているか否かに基づき、get_timeseries_recording_data関数の引数がstart_time又はend_timeであることを出力し、且つ、開始時刻及び終了時刻を、それぞれ、start_time及びend_timeの値として出力する。制御手段154は、このように出力された回答情報に基づきget_timeseries_recording_data関数を実行することで、データベースから、指定された開示時刻から終了時刻までの間における、時系列に沿ったデータを取得する。
【0178】
図32に示すparameterは、設定するパラメータに対応する文字列を取得するための引数である。parameterはstring型であり、パラメータに対応する文字列を必要とする。パラメータに対応する文字列は、“robot_pos”(ロボットの位置・姿勢)、又は“force”(反力)である。これらの文字列は列挙子として登録されている。
【0179】
言語モデル20の提示手段22は、受け付けたプロンプトに基づき、get_timeseries_recording_data関数を用いることを出力する。また、提示手段22は、受け付けたプロンプトに含まれる数値に関する情報に基づき、get_timeseries_recording_data関数の引数がparameterであることを出力し、且つ、設定するロボット位置・姿勢又は反力を示す値を、parameterの値として出力する。制御手段154は、このように出力された回答情報に基づきget_timeseries_recording_data関数を実行することで、ロボットの位置・姿勢を示す位置姿勢情報又は反力を示す反力情報のパラメータを取得する。
【0180】
図32に示すstart_time、end_time、及びparameterによる上述の処理は、例えば、以下のようにして行われる。すなわち、例えば、ユーザーが「9時00分から10時00分までのロボットの軌跡をデータベースから取得する」といった自然言語からなるプロンプトを入力した場合、提示手段22が、start_timeの値が9時00分の時刻に相当する変数となるように、end_timeの値が10時00分の時刻に相当する変数となるように、且つ、parameterの値が“robot_pos”の列挙子となるように回答情報を出力し、制御装置10に提示する。その後、制御手段154がget_timeseries_recording_data関数を実行することで、制御手段154が、ロボットの位置・姿勢情報であって時系列に沿った位置・姿勢情報、に対応する数値を取得する。なお、“force”についても同様である。
図32に示すget_timeseries_recording_data関数は、
図5に示すget_robot_timeseries_pos関数の機能を包含しているともいえる。
【0181】
ここで、例えば、ユーザーによって「9時00分からのロボットの軌跡をデータベースから取得する」といったプロンプトが入力されることがある。このようなプロンプトは、提示手段22がget_timeseries_recording_data関数を選択する、また、start_timeの値を決定するためには十分であるが、end_timeの値を決定するためには不十分である。このような場合、問い合わせ手段23によって「終了時刻はいつか」といった内容を問い合わせることが好ましい。なお、“force”についても同様である。
【0182】
本実施形態において、被制御対象2は、上記のいずれかの関数によって制御される。
【0183】
(制御システムの制御方法)
次に、本実施形態に係る制御システム1の制御方法について説明する。
図33は、実施形態に係る制御システム1の制御フローである。
図33に示すように、本実施形態の制御フローは、送信ステップS1と、通知ステップS2と、判定ステップS3と、提示ステップS4と、問い合わせステップS5と、判別ステップS6と、制御ステップS7と、を備える。
【0184】
送信ステップS1は、送信手段151によって、被制御対象2を制御するための関数のメタデータを制御装置10から言語モデル20に送信するステップである。送信ステップS1において、送信手段151は、例えば、予め定義され、メタデータ記憶部141に記憶されたメタデータを読み出して、言語モデル20に送信してもよい。あるいは、送信ステップS1において、送信手段151は、例えば、ユーザーから入力されるメタデータに関する情報を受け付けて、言語モデル20に送信してもよい。また送信ステップS1において、送信手段151は、前述した複数のメタデータの全部を言語モデル20に送信してもよく、前述した複数のメタデータのうちの一部の任意の組み合わせを言語モデル20に送信してもよい。
【0185】
なおこのとき、言語モデル20は、受信した情報に基づいて、被制御対象2が実行できる動作と、実行できない動作と、を判断してもよい。
このとき、例えば、制御装置10が、メタデータの送信とあわせて、被制御対象2が実行できない動作についての情報を言語モデル20に送信し、言語モデル20は、メタデータとあわせて送信された情報に基づいて、被制御対象2が実行できる動作と、実行できない動作と、を判断してもよい。
さらに例えば、言語モデル20が、被制御対象2について一般的に実施可能な動作を予め学習している場合、まずは、受信したメタデータに基づいて、実行できる動作を判断した上で、一般的に実施可能な動作と、実行できる動作と、の差分に基づいて、被制御対象2が実行できない動作を判断してもよい。
なお、被制御対象2が実行できない動作(処理)についての情報は、制御装置10が送信するメタデータに含まれていても良い。また、被制御対象2が実行できる動作についての情報は、制御装置10が送信するメタデータに含まれていても良い。
ここで、被制御対象2が実行できない動作についての情報は、上述のメタデータそれぞれに定義されるものとする。また、被制御対象2が実行できない動作についての情報は、上述のメタデータそれぞれの引数ごとに定義されても良い。
同様に、被制御対象2が実行できる動作についての情報は、上述のメタデータそれぞれに定義されるものとする。また、被制御対象2が実行できる動作についての情報は、上述のメタデータそれぞれの引数ごとに定義されても良い。
一例として、
図7に示すset_robot_param関数を挙げると、そのメタデータにおいて、引数“force_range”を設定できないことを示す情報が定義されていても良い。
【0186】
通知ステップS2は、通知手段152によって、被制御対象2を制御するためのプロンプトを制御装置10から言語モデル20に通知するステップである。通知ステップS2において通知されたプロンプトは、判定ステップS3の際に用いられる。判定ステップS3において、通知手段152は、例えば、ユーザーから入力されるメタデータに関する情報を受け付けて、言語モデル20に通知してもよい。あるいは、判定ステップS3において、通知手段152は、例えば、過去のプロンプトに関する情報をプロンプト記憶部142から読み出して、言語モデル20に送信してもよい。
【0187】
判定ステップS3は、言語モデル20が、送信ステップS1によって送信されるメタデータと、通知ステップS2によって通知されるプロンプトと、に基づき、関数を用いてプロンプトに回答するか否かを判定するステップである。判定ステップS3において、判定手段21は、上述した態様に基づき、関数を用いてプロンプトに回答するか否かを判定する。
判定ステップS3において、判定手段21が、関数を用いてプロンプトに回答すると判定した場合(ステップS3:YES)、フローは提示ステップS4に移行する。
判定ステップS3において、判定手段21が、関数を用いてプロンプトに回答しないと判定した場合(ステップS3:NO)、フローは問い合わせステップS5に移行する。
【0188】
提示ステップS4は、関数を用いてプロンプトに回答すると判定ステップS3で判定された場合に、関数を識別する識別情報を含む回答情報を言語モデル20が制御装置10に提示するステップである。提示手段22は、提示ステップS4において、上述した関数を実行するための回答情報を生成する。
【0189】
問い合わせステップS5は、問い合わせ手段23が、通知手段152によって通知されるプロンプトの内容を、制御装置10に問い合わせるステップである。問い合わせステップS5において、制御装置10は、問い合わせ手段23から送信されたコマンドに基づき、例えば、プロンプト記憶部142に記憶された過去のプロンプトに関する情報を検索してもよいし、ユーザーから再度プロンプトを受け付けてもよい。
問い合わせステップS5が完了した後、フローは、再び判定ステップS3を行うように移行する。
【0190】
判別ステップS6は、判別手段153が、通知手段152によって通知されるプロンプトと、提示手段22によって提示される回答情報と、に応じ、識別情報が識別する関数を実行するか否かを判別するステップである。判別ステップS6において、判別手段153は、上述した態様に基づき、識別情報が識別する関数を実行するか否かを判別する。
判別ステップS6において、判別手段153が、識別情報が識別する関数を実行すると判別した場合(ステップS6:YES)、フローは制御ステップS7に移行する。
判別ステップS6において、判別手段153が、識別情報が識別する関数を実行しないと判別した場合(ステップS6:YES)、フローは問い合わせステップS5に移行する。
【0191】
制御ステップS7は、制御装置10が、提示ステップS4において提示される回答情報を用いて被制御対象2を制御するステップである。制御ステップS7において、制御装置10は、関数を実行することで、制御手段154によって被制御対象2を制御する。
以上の各フローによって、本実施形態に係る制御システム1の制御は行われる。
【0192】
図34は、実施形態に適用される情報処理装置90のハードウェア構成例の概略を示す図である。情報処理装置90は、プロセッサー91、主記憶装置92、通信インターフェース93、補助記憶装置94、入出力インターフェース95及び内部バス96を備える。プロセッサー91、主記憶装置92、通信インターフェース93、補助記憶装置94及び入出力インターフェース95は、内部バス96を介して互いに通信可能に接続される。情報処理装置90は、例えば制御装置10に適用されてもよい。この場合、例えば通信部11は通信インターフェース93を用いて構成されてもよい。例えば記憶部14は補助記憶装置94を用いて構成されてもよい。また、制御部15は、プロセッサー91及び主記憶装置92を用いて構成されてもよい。
【0193】
以上説明したように、本実施形態に係る制御システム1によれば、被制御対象2を制御する制御装置10と、言語モデル20と、を備える。制御装置10は、送信手段151によって、被制御対象2を制御するための関数のメタデータを言語モデル20に送信する。また、制御装置10は、通知手段152によって、被制御対象2を制御するためのプロンプトを言語モデル20に通知する。言語モデル20は、判定手段21によって、送信手段151によって送信されるメタデータと、通知手段152によって通知されるプロンプトと、に基づき、関数を用いてプロンプトに回答するか否かを判定する。また、言語モデル20は、関数を用いてプロンプトに回答すると判定手段21が判定する場合に、提示手段22によって、関数を識別する識別情報を含む回答情報を制御装置10に提示する。そして、制御装置10は、制御手段154によって、提示手段22によって提示される回答情報を用い、被制御対象2を制御する。このように、判定手段21が、関数を用いてプロンプトに回答するか否かを判定することで、被制御対象2を制御するための関数を、プロンプトに応じて適切に用いることができる。これにより、言語モデル20によって被制御対象2をより確実に制御することができる。
また、被制御対象2は、ロボット、センサ、及び、プラントのいずれか1つを含む。これにより、これらのいずれかを制御装置10及び言語モデル20によって自動制御することができる。
【0194】
また、メタデータは、被制御対象2の動作の内容を示す内容情報を含む。これにより、判定手段21は、関数を用いてプロンプトに回答するか否かの判定を、被制御対象2の動作の内容に基づき行うことができる。よって、例えば、言語モデル20が提示する回答情報をより正確なものにすることができる。
【0195】
また、言語モデル20の提示手段22が提示する回答情報は、関数の引数を示す引数情報と、引数の値と、を更に含む。これにより、例えば、制御装置10は、被制御対象2の制御をより正確に行うことができる。
【0196】
また、送信手段151が言語モデル20に送信する関数のメタデータは、引数の仕様を示す引数仕様情報を含む。これにより、判定手段21は、関数を用いてプロンプトに回答するか否かの判定を、引数の仕様に基づき行うことができる。よって、例えば、提示手段22が提示する回答情報が含む引数及びその値を、より正確なものにすることができる。
【0197】
また、プロンプトは、前記動作に対応する量を示す量情報を含む。これにより、例えば、言語モデル20の提示手段22が提示する回答情報が含む値を、より正確なものにすることができる。よって、例えば、制御装置10は、被制御対象2の制御をより正確に行うことができる。
【0198】
プロンプトは、動作に対応する方向を示す方向情報を含む。これにより、例えば、言語モデル20の提示手段22が提示する回答情報が含む引数又はその値を、より正確なものにすることができる。よって、例えば、制御装置10は、被制御対象2の制御をより正確に行うことができる。
【0199】
また、関数を用いてプロンプトに回答しないと判定手段21が判定する場合に、言語モデル20は、問い合わせ手段23によって、通知手段152によって通知されるプロンプトの内容を制御装置10に問い合わせる。これにより、例えば、言語モデル20の提示手段22が提示する回答情報を、より正確なものにすることができる。よって、例えば、制御装置10は、被制御対象2の制御をより正確に行うことができる。
【0200】
また、制御装置10は、判別手段153によって、通知手段152によって通知されるプロンプトと、提示手段22によって提示される回答情報と、に応じ、識別情報が識別する関数を実行するか否かを判別する。これにより、例えば、言語モデル20の提示手段22が提示する回答情報が、通知手段152によって通知されるプロンプトに応じて適切なものであるか否かを判別することができる。よって、例えば、制御装置10は、被制御対象2の制御をより正確に行うことができる。
【0201】
なお、本開示の技術的範囲は前記実施形態に限定されるものではなく、本開示の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
例えば、被制御対象2は、前述したようにデータベースであってもよい。この場合、被制御対象2であるデータベースを制御する関数は、例えば、データベースに含まれるデータを更新するための関数を含んでよく、
図29から
図32に示すような各関数を含んでいてもよい。
また、被制御対象2を制御するための関数のメタデータは、上述した各種情報に加えて、その他の任意の情報を含んでよい。
また、被制御対象2を制御するためのプロンプトは、上述した各種情報に加えて、その他の任意の情報を含んでよい。
また、提示手段22が制御装置10に提示する回答情報は、上述した各種情報に加えて、その他の任意の情報を含んでよい。
また、言語モデル20は、上述した大規模言語モデルに限らず、任意の言語モデル20が適宜用いられてよい。
【0202】
その他、本開示の趣旨に逸脱しない範囲で、前記実施形態における構成要素を周知の構成要素に置き換えることは適宜可能であり、また、前記した変形例を適宜組み合わせてもよい。
【0203】
(付記)
前記実施形態に係る制御システム、制御方法及びプログラムは、例えば以下のように把握される。
【0204】
<1>本開示の一態様に係る制御システムは、被制御対象を制御する制御装置と、言語モデルと、を備える制御システムであって、前記制御装置は、前記被制御対象を制御するための関数のメタデータを前記言語モデルに送信する送信手段と、前記被制御対象を制御するためのプロンプトを前記言語モデルに通知する通知手段と、を備え、前記言語モデルは、前記送信手段によって送信される前記メタデータと、前記通知手段によって通知される前記プロンプトと、に基づき、前記関数を用いて前記プロンプトに回答するか否かを判定する判定手段と、前記関数を用いて前記プロンプトに回答すると前記判定手段が判定する場合に、前記関数を識別する識別情報を含む回答情報を前記制御装置に提示する提示手段と、を備え、前記制御装置は、前記提示手段によって提示される前記回答情報を用い、前記被制御対象を制御する制御手段、を更に備え、前記被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む、ことを特徴とする。
【0205】
上記の制御システムは、被制御対象を制御する制御装置と、言語モデルと、を備える。制御装置は、送信手段によって、被制御対象を制御するための関数のメタデータを言語モデルに送信する。また、制御装置は、通知手段によって、被制御対象を制御するためのプロンプトを言語モデルに通知する。言語モデルは、判定手段によって、送信手段によって送信されるメタデータと、通知手段によって通知されるプロンプトと、に基づき、関数を用いてプロンプトに回答するか否かを判定する。また、言語モデルは、関数を用いてプロンプトに回答すると判定手段が判定する場合に、提示手段によって、関数を識別する識別情報を含む回答情報を制御装置に提示する。そして、制御装置は、制御手段によって、提示手段によって提示される回答情報を用い、被制御対象を制御する。このように、判定手段が、関数を用いてプロンプトに回答するか否かを判定することで、被制御対象を制御するための関数を、プロンプトに応じて適切に用いることができる。これにより、言語モデルによって被制御対象をより確実に制御することができる。
また、被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む。これにより、これらのいずれかを制御装置及び言語モデルによって自動制御することができる。
【0206】
<2>上記<1>に係る制御システムでは、前記メタデータは、前記被制御対象の動作の内容を示す内容情報を含む、ことを特徴とする構成を採用してもよい。
【0207】
また、メタデータは、被制御対象の動作の内容を示す内容情報を含む。これにより、判定手段は、関数を用いてプロンプトに回答するか否かの判定を、被制御対象の動作の内容に基づき行うことができる。よって、例えば、言語モデルが提示する回答情報をより正確なものにすることができる。
【0208】
<3>上記<1>または<2>に係る制御システムでは、前記回答情報は、前記関数の引数を示す引数情報と、前記引数の値と、を更に含む、ことを特徴とする構成を採用してもよい。
【0209】
また、言語モデルの提示手段が提示する回答情報は、関数の引数を示す引数情報と、引数の値と、を更に含む。これにより、例えば、制御装置は、被制御対象の制御をより正確に行うことができる。
【0210】
<4>上記<1>から<3>のいずれか一態様に係る制御システムでは、前記メタデータは、前記引数の仕様を示す引数仕様情報を含む、ことを特徴とする構成を採用してもよい。
【0211】
また、送信手段が言語モデルに送信する関数のメタデータは、引数の仕様を示す引数仕様情報を含む。これにより、判定手段は、関数を用いてプロンプトに回答するか否かの判定を、引数の仕様に基づき行うことができる。よって、例えば、提示手段が提示する回答情報が含む引数及びその値を、より正確なものにすることができる。
【0212】
<5>上記<1>から<4>のいずれか一態様に係る制御システムでは、前記プロンプトは、前記動作に対応する量を示す量情報を含む、ことを特徴とする構成を採用してもよい。
【0213】
また、プロンプトは、前記動作に対応する量を示す量情報を含む。これにより、例えば、言語モデルの提示手段が提示する回答情報が含む値を、より正確なものにすることができる。よって、例えば、制御装置は、被制御対象の制御をより正確に行うことができる。
【0214】
<6>上記<1>から<5>のいずれか一態様に係る制御システムでは、前記プロンプトは、前記動作に対応する方向を示す方向情報を含む、ことを特徴とする構成を採用してもよい。
【0215】
プロンプトは、動作に対応する方向を示す方向情報を含む。これにより、例えば、言語モデルの提示手段が提示する回答情報が含む引数又はその値を、より正確なものにすることができる。よって、例えば、制御装置は、被制御対象の制御をより正確に行うことができる。
【0216】
<7>上記<1>から<6>のいずれか一態様に係る制御システムでは、前記言語モデルは、前記関数を用いて前記プロンプトに回答しないと前記判定手段が判定する場合に、前記通知手段によって通知される前記プロンプトの内容を、前記制御装置に問い合わせる問い合わせ手段、を更に備えることを特徴とする構成を採用してもよい。
【0217】
また、関数を用いてプロンプトに回答しないと判定手段が判定する場合に、言語モデルは、問い合わせ手段によって、通知手段によって通知されるプロンプトの内容を制御装置に問い合わせる。これにより、例えば、言語モデルの提示手段が提示する回答情報を、より正確なものにすることができる。よって、例えば、制御装置は、被制御対象の制御をより正確に行うことができる。
【0218】
<8>上記<1>から<6>のいずれか一態様に係る制御システムでは、前記制御装置は、前記通知手段によって通知される前記プロンプトと、前記提示手段によって提示される前記回答情報と、に応じ、前記識別情報が識別する前記関数を実行するか否かを判別する判別手段、を更に備えることを特徴とする構成を採用してもよい。
【0219】
また、制御装置は、判別手段によって、通知手段によって通知されるプロンプトと、提示手段によって提示される回答情報と、に応じ、識別情報が識別する関数を実行するか否かを判別する。これにより、例えば、言語モデルの提示手段が提示する回答情報が、通知手段によって通知されるプロンプトに応じて適切なものであるか否かを判別することができる。よって、例えば、制御装置は、被制御対象の制御をより正確に行うことができる。
【0220】
<9>本開示の一態様に係る制御方法は、被制御対象を制御する制御装置と、言語モデルと、を備える制御システムの制御方法であって、前記被制御対象を制御するための関数のメタデータを前記制御装置から前記言語モデルに送信する送信ステップと、前記被制御対象を制御するためのプロンプトを前記制御装置から前記言語モデルに通知する通知ステップと、前記言語モデルが、前記送信ステップによって送信される前記メタデータと、前記通知ステップによって通知される前記プロンプトと、に基づき、前記関数を用いて前記プロンプトに回答するか否かを判定する判定ステップと、前記関数を用いて前記プロンプトに回答すると前記判定ステップで判定された場合に、前記関数を識別する識別情報を含む回答情報を前記言語モデルが前記制御装置に提示する提示ステップと、前記制御装置が、前記提示ステップにおいて提示される前記回答情報を用いて前記被制御対象を制御する制御ステップと、を備え、前記被制御対象は、ロボット、センサ、及び、プラントのいずれか1つを含む、ことを特徴とする。
【0221】
<10>本開示の一態様に係るプログラムは、コンピューターを、上記<1>から<8>のいずれか一態様に係る制御システムとして機能させる、ことを特徴とする。
【符号の説明】
【0222】
1 制御システム
2 被制御対象
10 制御装置
151 送信手段
152 通知手段
153 判別手段
154 制御手段
20 言語モデル
21 判定手段
22 提示手段
23 問い合わせ手段
S1 送信ステップ
S2 通知ステップ
S3 判定ステップ
S4 提示ステップ
S5 ステップ
S6 判別ステップ
S7 制御ステップ
【要約】
【課題】被制御対象を自動制御することができる制御システム、制御方法、及びプログラムを提供する。
【解決手段】言語モデル20は、送信手段によって送信されるメタデータと、通知手段によって通知されるプロンプトと、に基づき、関数を用いてプロンプトに回答するか否かを判定する判定手段21と、関数を用いてプロンプトに回答すると判定手段21が判定する場合に、関数を識別する識別情報を含む回答情報を制御装置10に提示する提示手段22と、を備え、制御装置10は、提示手段22によって提示される回答情報を用い、被制御対象2を制御する制御手段、を更に備え、被制御対象2は、ロボット、センサ、及び、プラントのいずれか1つを含む、ことを特徴とする。
【選択図】
図1