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

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

▶ 株式会社メガチップスの特許一覧

特開2024-39086自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法
<>
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図1
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図2
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図3
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図4
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図5
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図6
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図7
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図8
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図9
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図10
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図11
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図12
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図13
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図14
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図15
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図16
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図17
  • 特開-自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024039086
(43)【公開日】2024-03-22
(54)【発明の名称】自動制御システム、行動コード取得装置、学習データ生成方法、プログラム、学習データ、および、自動制御方法
(51)【国際特許分類】
   B25J 13/00 20060101AFI20240314BHJP
   G06N 20/00 20190101ALI20240314BHJP
【FI】
B25J13/00 Z
G06N20/00 130
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022143371
(22)【出願日】2022-09-09
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(72)【発明者】
【氏名】永田 竜仁
(72)【発明者】
【氏名】本村 秀人
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707JS02
3C707KS03
3C707KS04
3C707KS17
3C707KT01
3C707KT06
3C707LV07
3C707LW03
3C707LW12
3C707NS02
(57)【要約】
【課題】学習データを生成するのに熟練のオペレータを必要とせず、制御対象が変更、あるいは、制御対象が置かれている環境が変更された場合であっても、効率良く動作予測を行うモデルを学習させることができ、学習済みモデルを用いて高精度に制御対象を制御することができる自動制御システムを実現する。
【解決手段】自動制御システム1000では、行動コード取得部1により、汎用的なコード(制御対象に特化しないコード)である行動コードが取得され、制御対象駆動処理部2により、当該行動コードから制御対象を制御するための制御情報を取得する。そして、取得した制御情報により、制御対象Rbt1に対して所定の動作を実行させる。自動制御システム1000では、行動コードに基づいて、処理が実行されるため、制御対象Rbt1あるいは環境が変化した場合であっても柔軟に対応することができる。
【選択図】図1

【特許請求の範囲】
【請求項1】
所定の環境下に置かれた制御対象を制御する自動制御システムであって、
前記制御対象が置かれている環境下のデータを取得する環境データ取得部と、
前記制御対象の状態を示すデータである状態データと、前記環境データ取得部により取得されたデータである環境データとに基づいて、前記制御対象が備える機能により特定できる行動を規定するコードである行動コードを取得する行動コード取得処理を実行する行動コード取得部と、
前記行動コード取得部により取得された前記行動コードから、前記制御対象を制御する制御情報であって、前記行動コードで規定されている動作を前記制御対象に実行させるための前記制御情報を取得する制御対象駆動処理部と、
を備える自動制御システム。
【請求項2】
前記制御対象に対して所定のタスクを実行させるように制御する自動制御システムであって、
前記行動コード取得部は、
前記状態データと、前記環境データと、前記制御対象に実行させるタスクを示すデータであるタスクデータとに基づいて、前記行動コードを取得する行動コード取得処理を実行する、
請求項1に記載の自動制御システム。
【請求項3】
前記制御対象駆動処理部は、
前記行動コード取得部により取得された前記行動コードに対応する前記制御対象に特化した制御指令列を取得する行動コード解釈処理部と、
前記行動コード解釈処理部が取得した前記制御指令列に基づいて、前記行動コードで規定されている動作を前記制御対象に実行させるための前記制御情報を取得する制御対象駆動部と、
を備える、
請求項1または2に記載の自動制御システム。
【請求項4】
前記行動コード取得部は、
前記行動コードに対応する前記制御対象に特化した制御指令列を取得する行動コード解釈処理部を備え、
前記制御対象駆動処理部は、
前記行動コード解釈処理部が取得した前記制御指令列に基づいて、前記行動コードで規定されている動作を前記制御対象に実行させるための前記制御情報を取得する制御対象駆動部を備える、
請求項1または2に記載の自動制御システム。
【請求項5】
前記行動コード解釈処理部は、
選択信号を入力し、
前記行動コードと、前記行動コードに対応する前記制御対象に特化した制御指令列とを対応付けたルックアップテーブルを複数有しており、前記選択信号に基づいて、複数の前記ルックアップテーブルから、1つの前記ルックアップテーブルを選択し、選択した前記ルックアップテーブルに基づいて、前記行動コードに対応する前記制御対象に特化した制御指令列を取得する、
請求項4に記載の自動制御システム。
【請求項6】
前記タスクは、1または複数の工程からなり、
前記行動コード取得部は、学習可能モデルを備えており、
前記学習可能モデルは、
前記タスクの少なくとも1つ以上の工程において、前記状態データ、および/または、前記環境データから導出されるデータを入力データとし、当該工程において前記制御対象に実行させる動作から特定される前記行動コードを正解データとした学習データを用いて、学習処理が実行される、
請求項2に記載の自動制御システム。
【請求項7】
前記学習可能モデルは、入力されたデータに関する過去の履歴を保持することが可能なモデルである、
請求項6に記載の自動制御システム。
【請求項8】
前記学習可能モデルに対して、前記タスクの少なくとも1つ以上の工程において、前記状態データ、および/または、前記環境データから導出されるデータを入力データとし、当該工程において前記制御対象に実行させる動作から特定される前記行動コードを正解データとした学習データを用いて、学習処理を実行することで、前記学習可能モデルの学習済みモデルを取得し、
前記行動コード取得部は、取得した前記学習済みモデルを用いた処理を行うことで前記行動コード取得処理を実行する、
請求項6または7に記載の自動制御システム。
【請求項9】
前記行動コードは、階層的なコード体系を有しているコードであり、
前記階層的なコード体系を有している所定の行動コードには、前記制御対象に対する制御レベルを指示するデータにより、前記制御対象に対して行う制御内容が異なる複数の行動コードである階層的行動コードが設定されている、
請求項1または2に記載の自動制御システム。
【請求項10】
請求項1または2に記載の自動制御システムに用いられる行動コード取得装置であって、
前記行動コード取得部を備える、
行動コード取得装置。
【請求項11】
請求項6または7に記載の自動制御システムにおいて、前記学習可能モデルを学習させるための学習データを生成する学習データ生成方法であって、
前記タスクの少なくとも1つ以上の工程において、前記状態データ、および/または、前記環境データから導出されるデータを入力データに設定する第1ステップと、
当該工程において前記制御対象に実行させる動作から特定される前記行動コードを正解データに設定する第2ステップと、
前記第1ステップで設定された前記入力データと、前記第2ステップで正解データに設定された前記行動コードとを組みとすることで学習データを取得する学習データ取得ステップと、
を備える学習データ生成方法。
【請求項12】
請求項11に記載の学習データ生成方法をコンピュータに実行させるためのプログラム。
【請求項13】
請求項6または7に記載の自動制御システムにおいて、前記学習可能モデルに対して学習処理を実行するときに用いられる学習データであって、
前記タスクの少なくとも1つ以上の工程において、前記状態データ、および/または、前記環境データから導出されるデータを入力データとして含み、
当該工程において前記制御対象に実行させる動作から特定される前記行動コードを正解データとして含む、
データ構造を有する学習データ。
【請求項14】
所定の環境下に置かれた制御対象を制御する自動制御方法であって、
前記制御対象が置かれている環境下のデータを取得する環境データ取得ステップと、
前記制御対象の状態を示すデータである状態データと、前記環境データ取得ステップにより取得されたデータである環境データとに基づいて、前記制御対象が備える機能により特定できる行動を規定するコードである行動コードを取得する行動コード取得処理を実行する行動コード取得ステップと、
前記行動コード取得ステップにより取得された前記行動コードから、前記制御対象を制御する制御情報であって、前記行動コードで規定されている動作を前記制御対象に実行させるための前記制御情報を取得する制御対象駆動処理ステップと、
を備える自動制御方法。
【請求項15】
請求項14に記載の自動制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット等の制御対象を自動制御(自動運転)し、所定のタスクを実行するための自動制御システムに関する。
【背景技術】
【0002】
近年、ロボット等の制御対象を自動制御(自動運転)し、所定のタスクを実行するための自動制御システムが種々開発されている。
【0003】
例えば、特許文献1には、熟練した人間が行うような操作の自動化を効率的に行う動作予測システムの開示がある。当該システムでは、所定の環境において、オペレータが行ったデータを取得し、取得したデータを学習データとして、動作予測を行うモデルを学習させる。そして、当該システムでは、予測時において、現在の環境が学習時と類似する環境である場合、現在の環境が類似する環境下において構築した(学習させた)学習済みモデルを用いて、予測処理を行い、制御対象(例えば、ロボットアーム)に、所定の動作を実行させる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2018-206286号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来の技術では、オペレータが所定の環境下において、実際に、制御対象(例えば、ロボットアーム)を操作し、動作予測を行うモデルの学習処理を行う必要がある。そのため、制御対象の操作を実際に行うことができるオペレータが必要となる。そして、制御対象に対して、複雑な操作を実際に行う必要がある場合、当該操作を実際に行うことができる熟練のオペレータが必要になるという課題がある。
【0006】
また、上記従来の技術では、動作予測を行うモデルの入力が所定の環境下におけるセンサ情報(例えば、制御対象(例えば、ロボットアーム)の所定部位の位置を検出するセンサにより取得される情報や制御対象の姿勢、状態等を検出するセンサにより取得される情報)であり、出力が動作指令(制御対象(例えば、ロボットアーム)に所定の動作をさせるための指令)となる。つまり、入力と出力との対応関係が、動作予測を行うモデルに全面的に依存しており、例えば、制御対象(例えば、ロボットアーム)が変更された場合、変更された制御対象に応じたデータが、動作予測を行うモデルから出力されるように変更する必要がある。つまり、この場合、再度、新たなデータ(変更された制御対象に応じたデータ)により、動作予測を行うモデルを学習させる必要がある。
【0007】
また、例えば、制御対象が置かれている環境が変更された場合、あるいは、制御対象の状態や周辺環境の情報を取得するセンサが変更された場合、当該変更に応じた学習データを生成し、生成した学習データにより、再度、動作予測を行うモデルを学習させる必要がある。
【0008】
そこで、本発明は、上記課題に鑑み、学習データを生成するのに熟練のオペレータを必要とせず、制御対象が変更、あるいは、制御対象が置かれている環境が変更された場合であっても、効率良く動作予測を行うモデルを学習させることができ、学習済みモデルを用いて高精度に制御対象を制御することができる自動制御システムを実現することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、第1の発明は、所定の環境下に置かれた制御対象を制御する自動制御システムであって、環境データ取得部と、行動コード取得部と、制御対象駆動処理部と、を備える。
【0010】
環境データ取得部は、制御対象が置かれている環境下のデータを取得する。
【0011】
行動コード取得部は、制御対象の状態を示すデータである状態データと、環境データ取得部により取得されたデータである環境データとに基づいて、制御対象が備える機能により特定できる行動を規定するコードである行動コードを取得する行動コード取得処理を実行する。
【0012】
制御対象駆動処理部は、行動コード取得部により取得された行動コードから、制御対象を制御する制御情報であって、行動コードで規定されている動作を制御対象に実行させるための制御情報を取得する。
【0013】
この自動制御システムでは、行動コード取得部により、汎用的なコード(制御対象に特化しないコード)である行動コードが取得され、制御対象駆動処理部により、当該行動コードから制御対象を制御するための制御情報を取得する。したがって、この自動制御システムでは、(1)置かれている環境が変化した場合、あるいは、制御対象から出力されるデータ、または、制御対象が置かれている環境で取得されるデータが変化した場合、それに合わせて行動コード取得部を変更すればよく、(2)制御対象が変更された場合、それに合わせて、制御対象駆動処理部を変更すればよい。したがって、自動制御システムでは、環境の変化、制御対象の変更等に柔軟に対応することができる。
【0014】
第2の発明は、第1の発明であって、制御対象に対して所定のタスクを実行させるように制御する自動制御システムであり、行動コード取得部は、状態データと、環境データと、制御対象に実行させるタスクを示すデータであるタスクデータとに基づいて、行動コードを取得する行動コード取得処理を実行する。
【0015】
これにより、この自動制御システムでは、制御対象に対して実行させようとしているタスクを特定しつつ、行動コード取得部により、汎用的なコード(制御対象に特化しないコード)である行動コードが取得され、制御対象駆動処理部により、当該行動コードから制御対象を制御するための制御データを取得する。したがって、この自動制御システムでは、(1)置かれている環境が変化した場合、あるいは、制御対象から出力されるデータ、または、制御対象が置かれている環境で取得されるデータが変化した場合、それに合わせて行動コード取得部を変更すればよく、(2)制御対象が変更された場合、それに合わせて、制御対象駆動処理部を変更すればよい。したがって、自動制御システムでは、環境の変化、制御対象の変更等に柔軟に対応することができる。
【0016】
第3の発明は、第1または第2の発明であって、制御対象駆動処理部は、行動コード解釈処理部と、制御対象駆動部と、を備える。
【0017】
行動コード解釈処理部は、行動コード取得部により取得された行動コードに対応する制御対象に特化した制御指令列を取得する。
【0018】
制御対象駆動部は、行動コード解釈処理部が取得した制御指令列に基づいて、行動コードで規定されている動作を制御対象に実行させるための制御情報を取得する。
【0019】
これにより、この自動制御システムでは、制御対象が変更された場合、それに合わせて、制御対象駆動処理部を変更すればよく、特に、制御対象に特化した制御指令列(例えば、コマンド系列)が変更されただけの場合は、行動コード解釈処理部21のみを変更すればよい。したがって、自動制御システムでは、環境の変化、制御対象の変更等に柔軟に対応することができる。
【0020】
第4の発明は、第1から第3のいずれかの発明であって、行動コード取得部は、行動コードに対応する制御対象に特化した制御指令列を取得する行動コード解釈処理部を備える。
【0021】
制御対象駆動処理部は、行動コード解釈処理部が取得した制御指令列に基づいて、行動コードで規定されている動作を制御対象に実行させるための制御情報を取得する制御対象駆動部を備える。
【0022】
これにより、行動コード解釈処理部を備える行動コード取得部を用いて、自動制御システムを実現することができる。
【0023】
第5の発明は、第4の発明であって、行動コード解釈処理部は、選択信号を入力する。また、行動コード解釈処理部は、行動コードと、行動コードに対応する制御対象に特化した制御指令列とを対応付けたルックアップテーブルを複数有しており、選択信号に基づいて、複数のルックアップテーブルから、1つのルックアップテーブルを選択し、選択したルックアップテーブルに基づいて、行動コードに対応する制御対象に特化した制御指令列を取得する。
【0024】
これにより、この自動制御システムでは、選択信号により、複数のルックアップテーブルから、1つのルックアップテーブルを選択し、選択したルックアップテーブルに基づいて、行動コードに対応する制御対象に特化した制御指令列を取得することができる。
【0025】
第6の発明は、第2から第5のいずれかの発明であって、タスクは、1または複数の工程からなり、行動コード取得部は、学習可能モデルを備えている。
【0026】
そして、学習可能モデルは、タスクの少なくとも1つの工程において、状態データ、および/または、環境データから導出されるデータを入力データとし、当該工程において制御対象に実行させる動作から特定される行動コードを正解データとした学習データを用いて、学習処理が実行される。
【0027】
この自動制御システムでは、行動コードを特定(選択)して正解データを設定するだけで簡単に学習データを生成することができるので、学習データを生成するのに熟練のオペレータを必要とせず、制御対象が変更、あるいは、制御対象が置かれている環境が変更された場合であっても、効率良く動作予測を行うモデル(学習可能モデル)を学習させることができる。
【0028】
第7の発明は、第6の発明であって、学習可能モデルは、入力されたデータに関する過去の履歴を保持することが可能なモデルである。
【0029】
これにより、この自動制御システムでは、入力データと正解データ(行動コード)とが多対1の対応となることが発生する場合であっても、適切に、学習可能モデルに対して、学習処理を行うことができる。
【0030】
第8の発明は、第6または第7の発明であって、学習可能モデルに対して、タスクの少なくとも1つ以上の工程において、状態データ、および/または、環境データから導出されるデータを入力データとし、当該工程において制御対象に実行させる動作から特定される行動コードを正解データとした学習データを用いて、学習処理を実行することで、学習可能モデルの学習済みモデルを取得する。
【0031】
そして、行動コード取得部は、取得した学習済みモデルを用いた処理を行うことで行動コード取得処理を実行する。
【0032】
これにより、この自動制御システムでは、行動コードを用いて生成された学習データにより学習された学習済みモデルを用いた行動コード取得処理(予測処理)を実行することができる。
【0033】
第9の発明は、第1から第8のいずれかの発明であって、行動コードは、階層的なコード体系を有しているコードであり、階層的なコード体系を有している所定の行動コードには、制御対象に対する制御レベルを指示するデータにより、制御対象に対して行う制御内容が異なる複数の行動コードである階層的行動コードが設定されている。
【0034】
これにより、この自動制御システムでは、階層的なコード体系を有する行動コードを用いて、自動制御システムにおける学習処理、行動コード取得処理(予測処理)を実行することができる。
【0035】
なお、「制御レベル」とは、制御対象の制御の内容を特定するための指標を示すデータであり、例えば、要求される条件の厳しさに応じて設定される指標である。制御レベルは、行動コードのコード体系を階層的なものにする指標であればよく、所定の基準に応じて、その程度に応じて規定される指標であればよい。
【0036】
第10の発明は、第1から第3のいずれかの発明である自動制御システムに用いられる行動コード取得装置であって、行動コード取得部を備える。
【0037】
これにより、第1または第2の発明である自動制御システムの行動コード取得部を備える行動コード取得装置を実現することができる。
【0038】
第11の発明は、第6または第7の発明である自動制御システムにおいて、学習可能モデルを学習させるための学習データを生成する学習データ生成方法であって、第1ステップと、第2ステップと、学習データ取得ステップと、を備える。
【0039】
第1ステップは、タスクの少なくとも1つ以上の工程において、状態データ、および/または、環境データから導出されるデータを入力データに設定する。
【0040】
第2ステップは、当該工程において制御対象に実行させる動作から特定される行動コードを正解データに設定する。
【0041】
学習データ取得ステップは、第1ステップで設定された入力データと、第2ステップで正解データに設定された行動コードとを組みとすることで学習データを取得する。
【0042】
この学習データ生成方法では、行動コードを特定(選択)して正解データを設定するだけで簡単に学習データを生成することができるので、学習データを生成するのに熟練のオペレータを必要とせず、制御対象が変更、あるいは、制御対象が置かれている環境が変更された場合であっても、効率良く動作予測を行うモデル(学習可能モデル)を学習させることができる。
【0043】
なお、上記の学習データ生成方法の1または複数のステップは、ROM、RAM等にアクセスできるCPUやプロセッサを用いて、実行されるものであってもよい。
【0044】
第12の発明は、第11の発明である学習データ生成方法をコンピュータに実行させるためのプログラムである。
【0045】
これにより、第11の発明と同様の効果を奏する学習データ生成方法をコンピュータに実行させるためのプログラムを実現することができる。
【0046】
第13の発明は、第6から第8のいずれかの発明である自動制御システムにおいて、学習可能モデルに対して学習処理を実行するときに用いられる学習データであって、
タスクの少なくとも1つ以上の工程において、状態データ、および/または、環境データから導出されるデータを入力データとして含み、
当該工程において制御対象に実行させる動作から特定される行動コードを正解データとして含む、データ構造を有する学習データである。
【0047】
この学習データを用いることで、自動制御システムにおいて、入力データから行動コードを出力する学習可能モデルの学習処理を効率良く行うことができる。
【0048】
第14の発明は、所定の環境下に置かれた制御対象を制御する自動制御方法であって、環境データ取得ステップと、行動コード取得ステップと、環境データ取得ステップと、制御対象駆動処理ステップと、を備える。
【0049】
環境データ取得ステップは、制御対象が置かれている環境下のデータを取得する。
【0050】
行動コード取得ステップは、制御対象の状態を示すデータである状態データと、環境データ取得ステップにより取得されたデータである環境データとに基づいて、制御対象が備える機能により特定できる行動を規定するコードである行動コードを取得する行動コード取得処理を実行する。
【0051】
制御対象駆動処理ステップは、行動コード取得ステップにより取得された行動コードから、制御対象を制御する制御情報であって、行動コードで規定されている動作を制御対象に実行させるための制御情報を取得する。
【0052】
これにより、第1の発明と同様の効果を奏する自動制御方法を実現することができる。
【0053】
第15の発明は、第14の発明である自動制御方法をコンピュータに実行させるためのプログラムである。
【0054】
これにより、第14の発明と同様の効果を奏する自動制御方法を実現することができる。
【発明の効果】
【0055】
本発明によれば、学習データを生成するのに熟練のオペレータを必要とせず、制御対象が変更、あるいは、制御対象が置かれている環境が変更された場合であっても、効率良く動作予測を行うモデルを学習させることができ、学習済みモデルを用いて高精度に制御対象を制御することができる自動制御システムを実現することができる。
【図面の簡単な説明】
【0056】
図1】第1実施形態に係る自動制御システム1000の概略構成図。
図2】第1実施形態に係る自動制御システム1000の行動コード取得部1と制御対象駆動処理部2の概略構成図。
図3】制御対象Rbt1ロボットアームとしたときに第1タスクを実行させるための環境を模式的に示した図。
図4】制御対象Rbt1ロボットアームとした場合の行動コード(一例)を示す図。
図5】制御対象Rbt1ロボットアームとした場合の第1タスクtsk1を実行させる自動制御システム1000を構築するための学習データを説明するための図。
図6】クラス分類および回帰を行うニューラルネットワークモデルを採用した場合の行動コード取得処理部12の学習可能モデルの概略構成図。
図7】予測処理を実行する場合(予測処理時)の第1実施形態に係る自動制御システム1000の行動コード取得部1と制御対象駆動処理部2の概略構成図。
図8】制御対象Rbt1ロボットアームとしたときに第2タスクを実行させるための環境を模式的に示した図。
図9】制御対象Rbt1ロボットアームとした場合の第2タスクtsk2を実行させる自動制御システム1000を構築するための学習データを説明するための図。
図10】第1実施形態の第1変形例における行動コード(制御対象Rbt1をロボットアームとした場合の行動コード)(一例)の表を示す図。
図11】第1実施形態の第1変形例における行動コード(階層データ)(一例)を示す図(行動コードC1-3の場合)。
図12】第1実施形態の第1変形例における行動コード(階層データ)(一例)を示す図(行動コードC2-2の場合)。
図13】第1実施形態の第2変形例の学習データ生成装置3の概略構成図。
図14】第2実施形態に係る自動制御システム2000の概略構成図。
図15】第2実施形態に係る自動制御システム2000の行動コード取得部1Aと制御対象駆動処理部2Aの概略構成図。
図16】第2実施形態の第1変形例に係る自動制御システム2000Aの概略構成図。
図17】第2実施形態の第1変形例に係る自動制御システム2000Aの行動コード取得部1Bと制御対象駆動処理部2Aの概略構成図。
図18】CPUバス構成を示す図。
【発明を実施するための形態】
【0057】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0058】
<1.1:自動制御システムの構成>
図1は、第1実施形態に係る自動制御システム1000の概略構成図である。
【0059】
図2は、第1実施形態に係る自動制御システム1000の行動コード取得部1と制御対象駆動処理部2の概略構成図である。
【0060】
自動制御システム1000は、図1に示すように、行動コード取得部1と、制御対象駆動処理部2と、制御対象Rbt1と、環境データ取得部Dev_sensorsとを備える。
【0061】
行動コード取得部1は、制御対象Rbt1のセンサ等により取得される計測データであって、制御対象Rbt1の状態、姿勢、所定の部位の状態および/または位置等を特定するための計測データであるデータD11_sensと、環境データ取得部Dev_sensorsにより取得される、制御対象Rbt1が置かれている環境下の計測データ(画像データ、映像データを含みうる)であるデータD12_sensとを入力し、行動コードデータD_act_codeを出力する機能部である。行動コード取得部1は、図2に示すように、入力データ調整部11と、行動コード取得処理部12とを備える。
【0062】
入力データ調整部11は、制御対象Rbt1から出力されるデータD11_sensと、環境データ取得部Dev_sensorsから出力されるデータD12_sensとを入力する。
【0063】
入力データ調整部11は、後段の機能部が要求する形式のデータとなるように、データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データに対して入力データ調整処理を実行し、当該調整処理後のデータを後段の機能部に出力する。具体的には、入力データ調整部11は、行動コード取得処理部12が、行動コード取得処理部12への入力データとして要求する形式のデータとなるように、データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データに対して入力データ調整処理を行い、当該調整処理後のデータを、データD2として、行動コード取得処理部12に出力する。
【0064】
なお、入力データ調整部11で実行される入力データ調整処理としては、例えば、以下の処理が挙げられる。当該入力データ調整処理は、下記のいずれかの処理により実現されるものであってもよいし、下記の1または複数の処理の一部または全部を組み合わせることにより実現されるものであってもよい。
(1)データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データにおいて、映像信号が含まれる場合、後段の機能部が、当該機能部への入力データとして要求する形式のデータとなるように、当該映像信号から、所定のフレーム数のフレーム画像を形成する映像信号(各フレーム画像を構成する画像信号の集合(要求されるフレーム数分の画像信号))を取得(抽出)する処理。
(2)データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データにおいて、映像信号が含まれる場合、後段の機能部が、当該機能部への入力データとして要求する形式のデータとなるように、当該映像信号から、所定の特徴量を抽出した画像信号または映像信号(フレーム画像を形成する画像信号の集合)を取得する処理。
(3)データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データにおいて、映像信号が含まれる場合、後段の機能部が、当該機能部への入力データとして要求する形式のデータとなるように、当該映像信号から、所定の画像サイズの画像信号または映像信号(フレーム画像を形成する画像信号の集合)を取得する処理。
(4)データD11_sensに含まれる各データ、および、データD12_sensに含まれる各データにおいて、映像信号が含まれる場合、後段の機能部が、当該機能部への入力データとして要求する形式のデータとなるように、当該映像信号から、所定の色空間の画像信号または映像信号(フレーム画像を形成する画像信号の集合)を取得する処理(カラー画像の階調を調整した画像信号または映像信号を取得する処理や、グレースケール画像や白黒2値画像に変換した画像信号または映像信号を取得する処理を含む)。
(5)データD11_sensに含まれる各データにおいて、制御対象Rbt1の位置、姿勢、状態を特定する情報、および/または、制御対象Rbt1の所定の部位の位置、姿勢、状態を特定する情報を含む信号(例えば、センサの計測結果(例えば、測定結果に対応する所定の物理量)に対応する信号)である場合、当該信号から、制御対象Rbt1の位置、姿勢、状態を特定する情報(データ)、および/または、制御対象Rbt1の所定の部位の位置、姿勢、状態を特定する情報(データ)を取得する処理。
(6)データD12_sensに含まれる各データにおいて、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の位置、姿勢、状態を特定する情報、および/または、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の所定の部位の位置、姿勢、状態を特定する情報を含む信号(例えば、センサの計測結果(例えば、測定結果に対応する所定の物理量)に対応する信号)である場合、当該信号から、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の位置、姿勢、状態を特定する情報(データ)、および/または、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の所定の部位の位置、姿勢、状態を特定する情報(データ)を取得する処理。
【0065】
行動コード取得処理部12は、入力データ調整部11から出力されるデータD2と、条件hとを入力する。行動コード取得処理部12は、条件hに基づいて、データD2に対して、行動コード取得処理を実行し、行動コードを取得し、取得した行動コードを含むデータをデータD_act_codeとして、制御対象駆動処理部2に出力する。なお、行動コード取得処理部12は、機械学習を行うことで可能な学習可能モデルを有している。行動コード取得処理部12は、(1)学習時において、学習データを用いて、当該学習可能モデルに対して、学習処理(教師あり学習)を行うことで、学習済みモデルを取得し、(2)予測時において、データD2に対して、学習処理により取得した学習済みモデルによる処理を行うことで、行動コードを取得する。
【0066】
制御対象駆動処理部2は、図2に示すように、行動コード解釈処理部21と、制御対象駆動部22とを備える。
【0067】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、当該データD_act_codeに対して、行動コード解釈処理を実行し、当該処理により取得したデータを、データD3として、制御対象駆動部22に出力する。なお、行動コード解釈処理部21は、学習時(行動コード取得処理部12の学習可能モデルの学習処理時)においては、行動コードの正解データ(行動コード取得処理部12の学習可能モデルから出力すべき正解データ)D_correctを入力し、当該データD_correctに対して、行動コード解釈処理を実行し、当該処理により取得したデータを、データD3として、制御対象駆動部22に出力する。
【0068】
制御対象駆動部22は、制御データ生成部221と、駆動信号生成部222とを備える。
【0069】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3を入力し、データD3から、制御データを生成する処理を実行する。そして、制御データ生成部221は、生成した制御データを含むデータを、データD4として、駆動信号生成部222に出力する。
【0070】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τを生成する。そして、駆動信号生成部222は、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)。
【0071】
制御対象Rbt1は、自動制御システム1000における自動制御の対象であり、自動制御可能な装置である。制御対象Rbt1は、例えば、ロボットやロボットアーム等である。制御対象Rbt1は、例えば、アクチュエータ等により所定の部位が駆動されることで、所定の動作を行うことができる。制御対象Rbt1は、制御対象駆動処理部2から出力される駆動信号Sig_τにより、所定の部位が駆動されることで、所定の動作を行う。また、制御対象Rbt1は、制御対象Rbt1に装着されたセンサ等により、制御対象Rbt1の位置、姿勢、状態を特定する情報、および/または、制御対象Rbt1の所定の部位の位置、姿勢、状態を特定する情報を含む信号(データ)を取得し、取得した当該信号(データ)を、データD11_sensとして、行動コード取得部1に出力する。
【0072】
環境データ取得部Dev_sensorsは、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の位置、姿勢、状態を特定する情報、および/または、制御対象Rbt1が置かれている環境下の所定の装置、センサ等の所定の部位の位置、姿勢、状態を特定する情報を含む信号(例えば、センサの計測結果(例えば、測定結果に対応する所定の物理量)に対応する信号)(データ)を取得し、取得した当該信号(データ)を、データD12_sensとして、行動コード取得部1に出力する。なお、環境データ取得部Dev_sensorsは、複数の装置、センサ等から構成されるものであってもよい。
【0073】
<1.2:自動制御システムの動作>
以上のように構成された自動制御システム1000の動作について、以下、説明する。
【0074】
図3は、制御対象Rbt1ロボットアームとしたときに第1タスクを実行させるための環境を模式的に示した図である。
【0075】
図4は、制御対象Rbt1ロボットアームとした場合の行動コード(一例)を示す図である。
【0076】
図5は、制御対象Rbt1ロボットアームとした場合の第1タスクtsk1を実行させる自動制御システム1000を構築するための学習データを説明するための図(行動コード取得処理部12の学習可能モデルのための学習データの入力データと出力データ(正解データ)とを時系列に模式的に示した図)である。
【0077】
以下では、説明便宜のために、制御対象Rbt1をロボットアームとし、自動制御システム1000において、第1タスクtsk1を実行させる場合(一例)について、説明する。なお、第1タスクtsk1は、ベルトコンベアの搬送速度の通常速度v1で動作している第1ベルトコンベアCvy1上の物体(被搬送物)OBJ(i:自然数)を、制御対象Rbt1(ロボットアーム)で掴み、別のベルトコンベアである第2ベルトコンベアCvy2(運搬速度v1)上の所定の位置に置くというタスクとする(図3を参照)。
【0078】
また、以下では、自動制御システム1000の動作について、(1)学習データ生成方法(行動コード取得処理部12の学習可能モデルを学習させるための学習データの生成方法)、(2)学習処理、(3)予測処理に分けて説明する。
【0079】
(1.2.1:学習データ生成方法)
学習データ生成方法(行動コード取得処理部12の学習可能モデルを学習させるための学習データの生成方法)について、説明する。
【0080】
まず、制御対象Rbt1をロボットアームとした場合の行動コードを規定する。行動コードは、制御対象Rbt1に対して所定のタスクを実行させるときに必要となる1または複数の行動を、制御対象Rbt1に実行させるためのコードであり、行動ごとに規定される汎用コードである。つまり、行動コードは、制御対象Rbt1に対して所定のタスクを実行させるときに必要となる1または複数の行動を実行させるためのコードであって、制御対象Rbt1に特化した制御コード(例えば、制御指令列、制御コマンド列)に依存しない様式で制御対象Rbt1を制御するためのコード(制御対象Rbt1に特化した制御コードとなることなく、制御対象Rbt1に対する制御内容を抽象化した汎用コード)である。
【0081】
図4に、制御対象Rbt1をロボットアームとした場合の行動コードの一例を示す。
【0082】
図4に示すように、行動コードは、制御対象Rbt1(ロボットアーム)に実行させる行動を上位概念化して規定したコードであり、行動コードを決定することで、制御対象Rbt1(ロボットアーム)に実行させる行動を決定することができる。
【0083】
以下では、図4の行動コードが規定された場合について、第1タスクtsk1を実行するように、行動コード取得処理部12の学習可能モデルを学習させるための学習データの生成方法について、説明する。
【0084】
自動制御システム1000において、第1タスクtsk1を実行するための工程を規定し、規定した各工程において、行動コード取得処理部12の学習可能モデルに入力するデータと、当該データが行動コード取得処理部12の学習可能モデルに入力されたときに行動コード取得処理部12の学習可能モデルが出力されるべき行動コードとを決めることで、行動コード取得処理部12の学習可能モデルのための学習データ(第1タスクtsk1を実行する学習済みモデルを実現させるための学習データ)を生成する。
【0085】
具体的には、工程1~工程6を規定し、各工程において、以下のデータを入力データおよび出力データとすることで、行動コード取得処理部12の学習可能モデルのための学習データ(第1タスクtsk1を実行する学習済みモデルを実現させるための学習データ)を生成する。以下では、図3図5を参照しながら説明する。また、自動制御システム1000が置かれている環境下において、共通の3次元座標空間が規定されており、当該3次元座標空間は、それぞれ直交する3つの軸であるx軸、y軸、z軸で規定されており、かつ、所定の位置を原点とする。また、上記3次元座標空間内の点の位置を、3次元座標(x,y,z)として表記する。
【0086】
≪工程1≫
(A)入力データ(状態1で取得されるデータ):
状態1:第1ベルトコンベアCvy1の特定の位置(この位置を(x1,y1,z1)とする)に物体(被搬送物)OBJが存在することが検出された状態。なお、上記特定の位置は、ロボットアームが準備を開始するときの位置(これを「ロボットアーム準備開始位置」という)であり、当該位置に物体OBJが存在することが確認された場合、ロボットアームが始動することで、物体OBJを掴むための準備を完了させる時間を確保できる位置である。つまり、当該位置に物体OBJが到達したときに、ロボットアームが準備を開始することで、後続の動作が可能となる。
(入力データ1):pos(OBJ)=(x1,y1,z1)
pos(OBJ):物体OBJの3次元座標を取得する関数
(入力データ2):det_pos_ready(pos(OBJ))=1
det_pos_ready(pos(OBJ)):物体OBJが、第1ベルトコンベアの特定の範囲に含まれる位置に存在する場合、「1」を出力し、それ以外の場合、「0」を出力する関数(検出結果を取得する関数)
(B)出力データ:
行動コードC2-1(100%)(ロボットアームの先端の爪を開く(爪の開度:100%)ことを示す行動コード)
≪工程2≫
(A)入力データ(状態2で取得されるデータ):
状態2:制御対象Rbt1(ロボットアーム)の先端の爪の位置(この位置を(x2,y2,z2)とする)が検出された状態。
(入力データ1):pos_tip(Rbt1)=(x2,y2,z2)
pos_tip(Rbt1):ロボットアームRbt1の先端の爪の位置の3次元座標を取得する関数
(B)出力データ:
行動コードC1-2(x3,y3,z3,10s)(ロボットアームの先端の爪を、物体OBJを掴む位置(x3,y3,z3)に10秒間で移動させることを示す行動コード)
≪工程3≫
(A)入力データ(状態3で取得されるデータ):
状態3:物体OBJが制御対象Rbt1(ロボットアーム)によるピックアップが可能な位置(この位置を(x4,y4,z4)とする)に存在することが検出された状態。
(入力データ1):pos(OBJ)=(x4,y4,z4)
pos(OBJ):物体OBJの3次元座標を取得する関数
(入力データ2):det_pos_grasp(pos(OBJ))=1
det_pos_grasp(pos(OBJ)):物体OBJが、第1ベルトコンベアの特定の範囲に含まれる位置であって、物体OBJが制御対象Rbt1(ロボットアーム)によるピックアップが可能な位置に存在する場合、「1」を出力し、それ以外の場合、「0」を出力する関数(検出結果を取得する関数)
(B)出力データ:
行動コードC2-3(0%)(ロボットアームの先端の爪を閉じる(爪の開度:0%)ことを示す行動コード)
≪工程4≫
(A)入力データ(状態4で取得されるデータ):
状態4:制御対象Rbt1(ロボットアーム)の先端の爪の反力が特定の範囲内の値であることが検出された状態。
(入力データ1):force_tip(Rbt1)
force_tip(Rbt1):制御対象Rbt1(ロボットアーム)の先端の爪の反力を取得する関数
(入力データ2):det_force_tip(force_tip(Rbt1))=1
det_force_tip(force_tip(Rbt1)):制御対象Rbt1(ロボットアーム)の先端の爪の反力が特定の範囲内の値である場合「1」を出力し、それ以外の場合、「0」を出力する関数(検出結果を取得する関数)
(B)出力データ:
行動コードC1-5(x5,y5,z5,10s)(ロボットアームの先端の爪を、物体OBJを離す位置(x5,y5,z5)に10秒間で移動させることを示す行動コード)
≪工程5≫
(A)入力データ(状態5で取得されるデータ):
状態5:制御対象Rbt1(ロボットアーム)の先端の爪の位置(この位置を(x6,y6,z6)とする)が物体を離すことが可能な位置であることが検出された状態。
(入力データ1):pos_tip(Rbt1)=(x6,y6,z6)
pos_tip(Rbt1):ロボットアームRbt1の先端の爪の位置の3次元座標を取得する関数
(入力データ2):det_pos_tip_release(pos_tip(Rbt1))=1
det_pos_tip_release(pos_tip(Rbt1)):制御対象Rbt1(ロボットアーム)の先端の爪の位置がリリース可能位置(把持している物体をリリースする(放す)ことが可能である位置)である場合「1」を出力し、それ以外の場合、「0」を出力する関数(検出結果を取得する関数)
(B)出力データ:
行動コードC2-3(100%)(ロボットアームの先端の爪を開く(爪の開度:100%)ことを示す行動コード)
≪工程6≫
(A)入力データ(状態6で取得されるデータ):
状態6:物体OBJが制御対象Rbt1(ロボットアーム)を動かしても物体OBJと干渉しない位置(この位置を(x7,y7,z7)とする)に存在することが検出された状態。
(入力データ1):pos(OBJ)=(x7,y7,z7)
pos(OBJ):物体OBJの3次元座標を取得する関数
(入力データ2):det_pos_init(pos(OBJ))=1
det_pos_init(pos(OBJ)):物体OBJが、制御対象Rbt1(ロボットアーム)を動かしても物体OBJと干渉しない位置に存在する場合、「1」を出力し、それ以外の場合、「0」を出力する関数(検出結果を取得する関数)
(B)出力データ:
行動コードC3-1(10s)(ロボットアームを10秒間で初期状態の位置に移動させることを示す行動コード)
以上のように、所定のタスク(上記では、第1タスクtsk1)を設定し、工程ごとに、自動制御システム1000の状態(及び状態遷移)を考慮して入力データ(行動コード取得処理部12への入力データ)を決定し、当該タスクを実現するための行動コードを選択するだけで学習データ(行動コード取得処理部12の学習可能モデルの学習データ)を生成することができる。このため、上記の学習データ生成方法では、制御対象Rbt1(ロボットアーム)に対して、実際の操作ができる熟練のオペレータを必要としない。
【0087】
(1.2.2:学習処理)
次に、自動制御システム1000における学習処理について、説明する。以下では、上記の学習データ生成方法により生成した学習データ(第1タスクtsk1用の学習データ)を用いて学習処理を行う場合(一例)について、説明する。
【0088】
まず、自動制御システム1000において、制御対象Rbt1(ロボットアーム)を起動し、制御可能な状態(初期状態)にする。そして、自動制御システム1000において、図5および上記で示した工程1~工程6を行うことで、学習処理を行う。具体的な処理について、以下説明する。なお、第1タスクtsk1についての学習処理を行うので、条件hを、第1タスクtsk1を特定するデータに設定して、当該データ(条件h)が行動コード取得処理部12に入力される。
【0089】
また、図3に示すように、環境データ取得部Dev_sensorsは、第1ベルトコンベアCvy1上の物体OBJの位置を検出する位置検出センサDev_sensors(1)、Dev_sensors(2)、および、Dev_sensors(3)(例えば、位置検出センサDev_sensors(1)Dev_sensors(2)、および、Dev_sensors(3)は、それぞれ、撮像装置により実現され、当該撮像装置の3次元座標空間の位置(既知)と、当該撮像装置の撮影パラメータ(撮像点(カメラの位置(例えば、撮像素子の撮像素子面の中心点))、焦点位置、焦点距離、画角、視野角、カメラ光学系の光軸の情報(光軸の向き等)等)を考慮して、当該撮像装置により取得される撮像画像を解析することで、物体OBJの位置を検出するものであってもよい)を含むものとする。
【0090】
また、第1ベルトコンベアCvy1および第2ベルトコンベアCvy2は、搬送速度v1で動作しているものとする。
【0091】
また、制御対象Rbt1であるロボットアームは、第1ベルトコンベアCvy1上の空間SP1にある物体を掴んで保持し、第2ベルトコンベアCvy2上の空間SP2内の位置に移動させることが可能であり、ロボットアームの先端の爪(物体を把持する部分)の可能範囲が上記操作を可能とする範囲であるものとする。そして、ロボットアームは、上記操作が可能となる位置に設置されているものとする。
【0092】
≪工程1≫
位置検出センサDev_sensors(1)は、物体(被搬送物)OBJの第1ベルトコンベアCvy1の位置(この位置をpos(OBJ)=(x1,y1,z1)とする)を取得し、取得した当該位置のデータを、データD12_sensに含める。そして、データD12_sensは、位置検出センサDev_sensors(1)(環境データ取得部Dev_sensors)から行動コード取得部1に出力される。
【0093】
行動コード取得部1の入力データ調整部11は、データD12_sensを入力し、当該データから物体(被搬送物)OBJの第1ベルトコンベアCvy1の位置のデータpos(OBJ)(=(x1,y1,z1))を取得する。そして、入力データ調整部11は、データpos(OBJ)(=(x1,y1,z1))が、ロボットアーム準備開始位置であるか否かを検出する。つまり、入力データ調整部11は、関数det_pos_ready(pos(OBJ))に相当する処理を実行する。そして、det_pos_ready(pos(OBJ))=1である場合(物体OBJがロボットアーム準備開始位置に存在する(到達している)と判定された場合)、下記の入力データを行動コード解釈処理部21の学習可能モデルに入力する(データD2として、入力データ調整部11から行動コード取得処理部12へ出力される)。一方、det_pos_ready(pos(OBJ))=1ではない場合、入力データ調整部11は、det_pos_ready(pos(OBJ))=1となるまで、待機する。
入力データ(工程1):
(1)pos(OBJ)(=(x1,y1,z1))
(2)det_pos_ready(pos(OBJ))=1
なお、行動コード解釈処理部21の学習可能モデルに入力されるデータは、下記であり、下記(1)~(3)のデータについては、取得されていない場合、行動コード解釈処理部21の学習可能モデルには、無入力あるいは「0」が入力され、下記(4)~(8)のデータについては、検出されていない場合、行動コード解釈処理部21の学習可能モデルには「0」が入力されるものとする(他の工程においても同様)。
<行動コード解釈処理部21の学習可能モデルへの入力データ>
(1)pos(OBJ)により取得される3次元座標空間座標データ
(2)pos_tip(Rbt1)により取得される3次元座標空間座標データ
(3)force_tip(Rbt1)により取得される反力のデータ
(4)det_pos_ready()により取得される検出データ
(5)det_pos_grasp()により取得される検出データ
(6)det_force_tip()により取得される検出データ
(7)det_pos_tip_release()により取得される検出データ
(8)det_pos_tip_init()により取得される検出データ
(9)条件h(タスクを特定するデータ)
行動コード取得処理部12は、入力データ調整部11から出力されるデータD2と、条件hとを入力する。行動コード取得処理部12は、学習可能モデルを有しており、当該学習可能モデルに、データD2(工程1で取得されたデータ)が入力される。行動コード取得処理部12の学習可能モデルは、例えば、クラス分類および回帰を行うニューラルネットワークモデルである。図6に、クラス分類および回帰を行うニューラルネットワークモデルを採用した場合の行動コード取得処理部12の学習可能モデルの概略構成図を示す。
【0094】
学習可能モデルがクラス分類および回帰を行うニューラルネットワークモデルである場合、当該学習可能モデルの入力層に、データD2(工程1で取得されたデータ(上記(1)~(8)のデータ))および条件h(第1タスクtsk1を特定するデータ)を入力する。また、当該学習可能モデルは、例えば、図6に示すように、1または複数の中間層、全結合層(FC層)、ソフトマックス層、第1出力層(クラス分類用の出力層)、および、第2出力層(回帰用の出力層)を有している。
【0095】
第1出力層は、設定された行動コードの数のノードを有する層であり、各ノードは、所定の行動コードに1対1で割り当てられている。なお、当該学習可能モデルは、第1出力層の前段にソフトマックス層を有しており、出力層の各ノードの出力値xは、0≦x≦1となる。そして、当該学習可能モデルは、第1出力層のノードのうち、最大値を出力するノードを特定し、特定した当該ノードに割り当てられた行動コードを出力とする。
【0096】
第2出力層は、回帰の出力データを取得するための層であり、本実施形態では、(1)x座標値を出力するノード、(2)y座標値を出力するノード、(3)z座標値を出力するノード、(4)時間tを出力するノード、および(5)爪の開度Hを出力するノードを有しており、各ノードからは、実数値が出力される。
【0097】
また、当該学習可能モデルは、第1出力層の各ノードの値(出力値)を要素とするベクトルと、正解データ(正解の行動コードに相当するノードに対応する要素のみを「1」とし、他のノードに対応するベクトル)との交差エントロピー誤差を取得し、取得した交差エントロピー誤差に基づいて、誤差逆伝播法(バックプロパゲーション)により、当該学習可能モデルのパラメータを更新するものとする。
【0098】
また、当該学習可能モデルは、第2出力層の各ノードの値(出力値)と、正解データ(正解のデータ(行動コードの引数の値))との二乗和誤差を取得し、取得した二乗和誤差に基づいて、誤差逆伝播法(バックプロパゲーション)により、当該学習可能モデルのパラメータを更新するものとする。
【0099】
また、当該学習可能モデルは、クラス分類および回帰を行うニューラルネットワークモデルであるので、誤差関数として、マルチタスク誤差を取得する関数を採用し、当該誤差関数の値により、学習が収束したか否かを判断する。マルチタスク誤差を取得する関数としては、例えば、以下の数式により表現される関数を採用すればよい。
(誤差関数)=(分類誤差)+λ×(回帰誤差)
(分類誤差):第1出力層の出力データと正解データとの誤差であり、交差エントロピー誤差により取得される誤差
(回帰誤差):第2出力層の出力データと正解データとの誤差であり、二乗和誤差により取得される誤差
λ:係数
以下では、説明便宜のため、行動コード取得処理部12の学習可能モデルは、上記のクラス分類および回帰を行うニューラルネットワークモデルである図6に示したモデル(一例)であるものとして説明する。
【0100】
行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程1では、行動コードC2-1(100%))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0101】
≪工程2≫
工程2では、まず、工程1の正解データ(行動コードC2-1(100%))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力する。
【0102】
行動コード解釈処理部21は、入力されたデータD_correctに対して、行動コード解釈処理を実行する。具体的には、行動コード解釈処理部21は、入力されたデータD_correctで規定される行動を実行するための制御指令列であって、制御対象Rbt1(ロボットアーム)を駆動するためのコマンド列(制御対象Rbt1(ロボットアーム)に特化した制御指令の列)を特定(取得)する処理を行う。例えば、行動コードC2-1(100%)で規定される行動を制御対象Rbt1に実行させるための制御対象Rbt1(ロボットアーム)のコマンド列(N1個(N1:自然数)からなるコマンド)を
D_cmd (C2-1(100%))、D_cmd (C2-1(100%))、・・・、D_cmdN1 (C2-1(100%))
とすると、行動コード解釈処理部21は、行動コード解釈処理を実行することで、上記のコマンド列を取得する。なお、取得したコマンド列は、その順に(添え字の昇順に)、実行されるものとする。
【0103】
そして、行動コード解釈処理部21は、上記処理により取得したコマンド列を含むデータを、データD3として、制御対象駆動部22の制御データ生成部221に出力する。
【0104】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3から、制御データを生成する処理を実行する。例えば、制御データ生成部221は、データD3から取得したコマンド列を構成する各コマンドD_cmd (C2-1(100%))(i:自然数、1≦i≦N1)を実行するための制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)を取得する。なお、制御データD_drv(Mj)(τ)は、制御対象Rbt1(ロボットアーム)に搭載されているj番目(j:自然数、1≦j≦n)(n:自然数、nは、制御対象Rbt1(ロボットアーム)の回転モータの数)の回転モータにトルクτを発生させるための制御データである。つまり、制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)により、制御対象Rbt1(ロボットアーム)に搭載されているn個の回転モータのそれぞれに発生させるトルクを特定することができる。
【0105】
制御データ生成部221は、上記により生成した制御データ(制御データ列)を含むデータを、データD4として、駆動信号生成部222に出力する。
【0106】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τ(制御対象Rbt1(ロボットアーム)の各回転モータを駆動するための駆動信号の集合)を生成する。
【0107】
そして、駆動信号生成部222が、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)ことで、制御対象Rbt1(ロボットアーム)の各回転モータが指定されたトルクで駆動され、制御対象Rbt1(ロボットアーム)が所定の動作を行う。工程2では、制御対象Rbt1(ロボットアーム)の先端の爪が開く(開度:100%)動作が実行される。
【0108】
制御対象Rbt1(ロボットアーム)は、先端の爪の位置(この位置をpos_tip(Rbt1)=(x2,y2,z2)とする)を取得し、取得した当該位置のデータを、データD11_sensに含め、当該データD11_sensを行動コード取得部1の入力データ調整部11に出力する。なお、制御対象Rbt1(ロボットアーム)は、制御対象Rbt1(ロボットアーム)を制御する制御部(不図示)により、ロボットアームを構成する各リンクの位置、姿勢を特定することができ、当該制御部により、先端の爪の位置を特定することができるものとする。
【0109】
行動コード取得部1の入力データ調整部11は、データD11_sensを入力し、当該データから制御対象Rbt1(ロボットアーム)の先端の爪の位置pos_tip(Rbt1)(=(x2,y2,z2))を取得する。そして、入力データ調整部11は、取得したデータpos_tip(Rbt1)(=(x2,y2,z2))を含めたデータを、データD2として、行動コード取得処理部12に出力する。
【0110】
そして、工程2において、下記の入力データが、行動コード取得処理部12の学習可能モデルに入力される。
入力データ(工程2):
(1)pos_tip(Rbt1)(=(x2,y2,z2))
そして、行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程2では、行動コードC1-2(x3,y3,z3,10s)(行動コードC1-2は、第1出力層(クラス分類用の出力層)の正解データであり、(x3,y3,z3,10s)は、第2出力層(回帰用の出力層)の正解データである))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0111】
≪工程3≫
工程3では、まず、工程2の正解データ(行動コードC1-2(x3,y3,z3,10s))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力する。
【0112】
行動コード解釈処理部21は、入力されたデータD_correctに対して、行動コード解釈処理を実行する。具体的には、工程2と同様に、行動コード解釈処理部21は、入力されたデータD_correctで規定される行動を実行するための制御指令列であって、制御対象Rbt1(ロボットアーム)を駆動するためのコマンド列(制御対象Rbt1(ロボットアーム)に特化した制御指令の列)を特定(取得)する処理を行う。
【0113】
そして、行動コード解釈処理部21は、上記処理により取得したコマンド列を含むデータを、データD3として、制御対象駆動部22の制御データ生成部221に出力する。
【0114】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3から、制御データを生成する処理を実行する。制御データ生成部221は、工程2と同様に、データD3から取得したコマンド列を構成する各コマンドD_cmd (C2-1(100%))(i:自然数、1≦i≦N1)を実行するための制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)を取得する。
【0115】
そして、制御データ生成部221は、上記により生成した制御データ(制御データ列)を含むデータを、データD4として、駆動信号生成部222に出力する。
【0116】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τ(制御対象Rbt1(ロボットアーム)の各回転モータを駆動するための駆動信号の集合)を生成する。
【0117】
そして、駆動信号生成部222が、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)ことで、制御対象Rbt1(ロボットアーム)の各回転モータが指定されたトルクで駆動され、制御対象Rbt1(ロボットアーム)が所定の動作を行う。工程3では、制御対象Rbt1(ロボットアーム)の先端の爪を、物体OBJを掴む位置(x3,y3,z3)に10秒間で移動させる動作が実行される。
【0118】
位置検出センサDev_sensors(2)は、物体(被搬送物)OBJの第1ベルトコンベアCvy1の位置(この位置をpos(OBJ)=(x4,y4,z4)とする)を取得し、取得した当該位置のデータを、データD12_sensに含める。そして、データD12_sensは、位置検出センサDev_sensors(2)(環境データ取得部Dev_sensors)から行動コード取得部1に出力される。
【0119】
行動コード取得部1の入力データ調整部11は、データD12_sensを入力し、当該データから物体(被搬送物)OBJの第1ベルトコンベアCvy1の位置のデータpos(OBJ)(=(x4,y4,z4))を取得する。そして、入力データ調整部11は、データpos(OBJ)(=(x4,y4,z4))が、第1ベルトコンベアの特定の範囲に含まれる位置であって、物体OBJが制御対象Rbt1(ロボットアーム)によるピックアップが可能な位置であるか否かを検出する。つまり、入力データ調整部11は、関数det_pos_grasp(pos(OBJ))に相当する処理を実行する。そして、det_pos_grasp(pos(OBJ))=1である場合、下記の入力データを行動コード解釈処理部21の学習可能モデルに入力する(データD2として、入力データ調整部11から行動コード取得処理部12へ出力される)。一方、det_pos_grasp(pos(OBJ))=1ではない場合、入力データ調整部11は、det_pos_grasp(pos(OBJ))=1となるまで、待機する。
入力データ(工程3):
(1)pos(OBJ)(=(x4,y4,z4))
(2)det_pos_grasp(pos(OBJ))=1
そして、行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程3では、行動コードC2-3(0%)(行動コードC2-3は、第1出力層(クラス分類用の出力層)の正解データであり、(0%)(開度H)は、第2出力層(回帰用の出力層)の正解データである))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0120】
≪工程4≫
工程4では、まず、工程3の正解データ(行動コードC2-3(0%))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力する。
【0121】
行動コード解釈処理部21は、入力されたデータD_correctに対して、行動コード解釈処理を実行する。具体的には、工程2と同様に、行動コード解釈処理部21は、入力されたデータD_correctで規定される行動を実行するための制御指令列であって、制御対象Rbt1(ロボットアーム)を駆動するためのコマンド列(制御対象Rbt1(ロボットアーム)に特化した制御指令の列)を特定(取得)する処理を行う。
【0122】
そして、行動コード解釈処理部21は、上記処理により取得したコマンド列を含むデータを、データD3として、制御対象駆動部22の制御データ生成部221に出力する。
【0123】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3から、制御データを生成する処理を実行する。制御データ生成部221は、工程2と同様に、データD3から取得したコマンド列を構成する各コマンドD_cmd (C2-1(100%))(i:自然数、1≦i≦N1)を実行するための制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)を取得する。
【0124】
そして、制御データ生成部221は、上記により生成した制御データ(制御データ列)を含むデータを、データD4として、駆動信号生成部222に出力する。
【0125】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τ(制御対象Rbt1(ロボットアーム)の各回転モータを駆動するための駆動信号の集合)を生成する。
【0126】
そして、駆動信号生成部222が、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)ことで、制御対象Rbt1(ロボットアーム)の各回転モータが指定されたトルクで駆動され、制御対象Rbt1(ロボットアーム)が所定の動作を行う。工程4では、制御対象Rbt1(ロボットアーム)の先端の爪を閉じる動作が実行される。
【0127】
制御対象Rbt1(ロボットアーム)は、先端の爪の反力(この反力をforce_tip(Rbt1)とする)を取得し、取得した反力のデータを、データD11_sensに含め、当該データD11_sensを行動コード取得部1の入力データ調整部11に出力する。なお、制御対象Rbt1(ロボットアーム)は、先端の爪の反力を測定するセンサを有しており、当該センサにより、先端の爪の反力を取得できるものとする。
【0128】
行動コード取得部1の入力データ調整部11は、データD11_sensを入力し、当該データから制御対象Rbt1(ロボットアーム)の先端の爪の反力force_tip(Rbt1)を取得する。
【0129】
そして、入力データ調整部11は、反力force_tip(Rbt1)が、特定の範囲内の値(物体OBJを把持し、把持した状態を維持したまま移動させることが可能な反力)であるか否かを検出する。つまり、入力データ調整部11は、関数det_force_tip(pos(force_tip(Rbt1)))に相当する処理を実行する。そして、det_force_tip(pos(force_tip(Rbt1)))=1である場合、下記の入力データを行動コード解釈処理部21の学習可能モデルに入力する(データD2として、入力データ調整部11から行動コード取得処理部12へ出力される)。一方、det_force_tip(pos(force_tip(Rbt1)))=1ではない場合、入力データ調整部11は、det_force_tip(pos(force_tip(Rbt1)))=1となるまで、待機する。
【0130】
入力データ調整部11は、取得したデータforce_tip(Rbt1)、det_force_tip(pos(force_tip(Rbt1)))=1を含めたデータを、データD2として、行動コード取得処理部12に出力する。
【0131】
そして、工程4において、下記の入力データが、行動コード解釈処理部21の学習可能モデルに入力される。
入力データ(工程4):
(1)force_tip(Rbt1)
(2)det_force_tip(pos(force_tip(Rbt1)))=1
そして、行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程4では、行動コードC1-5(x5,y5,z5,10s)(行動コードC1-5は、第1出力層(クラス分類用の出力層)の正解データであり、(x5,y5,z5,10s)は、第2出力層(回帰用の出力層)の正解データである))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0132】
≪工程5≫
工程5では、まず、工程4の正解データ(行動コードC1-5(x5,y5,z5,10s))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力する。
【0133】
行動コード解釈処理部21は、入力されたデータD_correctに対して、行動コード解釈処理を実行する。具体的には、工程2と同様に、行動コード解釈処理部21は、入力されたデータD_correctで規定される行動を実行するための制御指令列であって、制御対象Rbt1(ロボットアーム)を駆動するためのコマンド列(制御対象Rbt1(ロボットアーム)に特化した制御指令の列)を特定(取得)する処理を行う。
【0134】
そして、行動コード解釈処理部21は、上記処理により取得したコマンド列を含むデータを、データD3として、制御対象駆動部22の制御データ生成部221に出力する。
【0135】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3から、制御データを生成する処理を実行する。制御データ生成部221は、工程2と同様に、データD3から取得したコマンド列を構成する各コマンドD_cmd (C2-1(100%))(i:自然数、1≦i≦N1)を実行するための制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)を取得する。
【0136】
そして、制御データ生成部221は、上記により生成した制御データ(制御データ列)を含むデータを、データD4として、駆動信号生成部222に出力する。
【0137】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τ(制御対象Rbt1(ロボットアーム)の各回転モータを駆動するための駆動信号の集合)を生成する。
【0138】
そして、駆動信号生成部222が、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)ことで、制御対象Rbt1(ロボットアーム)の各回転モータが指定されたトルクで駆動され、制御対象Rbt1(ロボットアーム)が所定の動作を行う。工程5では、制御対象Rbt1(ロボットアーム)の先端の爪を、物体OBJを離す位置(x5,y5,z5)に10秒間で移動させる動作が実行される。
【0139】
制御対象Rbt1(ロボットアーム)は、先端の爪の位置(この位置をpos_tip(Rbt1)=(x6,y6,z6)とする)を取得し、取得した当該位置のデータを、データD11_sensに含め、当該データD11_sensを行動コード取得部1の入力データ調整部11に出力する。
【0140】
行動コード取得部1の入力データ調整部11は、データD11_sensを入力し、当該データから制御対象Rbt1(ロボットアーム)の先端の爪の位置pos_tip(Rbt1)(=(x6,y6,z6))を取得する。そして、入力データ調整部11は、データpos_tip(Rbt1)が、制御対象Rbt1(ロボットアーム)の先端の爪で把持している物体OBJを離すことが可能な位置であるか否かを検出する。つまり、入力データ調整部11は、関数det_pos_tip_release(pos_tip(Rbt1))に相当する処理を実行する。そして、det_pos_tip_release(pos_tip(Rbt1))=1である場合、下記の入力データを行動コード解釈処理部21の学習可能モデルに入力する(データD2として、入力データ調整部11から行動コード取得処理部12へ出力される)。一方、det_pos_tip_release(pos_tip(Rbt1))=1ではない場合、入力データ調整部11は、det_pos_tip_release(pos_tip(Rbt1))=1となるまで、待機する。
【0141】
そして、工程5において、下記の入力データが、行動コード解釈処理部21の学習可能モデルに入力される。
入力データ(工程5):
(1)pos_tip(Rbt1)(=(x6,y6,z6))
(2)det_pos_tip_release(pos_tip(Rbt1))=1
そして、行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程5では、行動コードC2-3(100%)(行動コードC2-3は、第1出力層(クラス分類用の出力層)の正解データであり、(100%)(開度H)は、第2出力層(回帰用の出力層)の正解データである))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0142】
≪工程6≫
工程6では、まず、工程5の正解データ(行動コードC2-3(100%))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力する。
【0143】
行動コード解釈処理部21は、入力されたデータD_correctに対して、行動コード解釈処理を実行する。具体的には、工程2と同様に、行動コード解釈処理部21は、入力されたデータD_correctで規定される行動を実行するための制御指令列であって、制御対象Rbt1(ロボットアーム)を駆動するためのコマンド列(制御対象Rbt1(ロボットアーム)に特化した制御指令の列)を特定(取得)する処理を行う。
【0144】
そして、行動コード解釈処理部21は、上記処理により取得したコマンド列を含むデータを、データD3として、制御対象駆動部22の制御データ生成部221に出力する。
【0145】
制御データ生成部221は、行動コード解釈処理部21から出力されるデータD3から、制御データを生成する処理を実行する。制御データ生成部221は、工程2と同様に、データD3から取得したコマンド列を構成する各コマンドD_cmd (C2-1(100%))(i:自然数、1≦i≦N1)を実行するための制御データ列D_drv(M1)(τ)、D_drv(M2)(τ)、・・・、D_drv(Mn)(τ)を取得する。
【0146】
そして、制御データ生成部221は、上記により生成した制御データ(制御データ列)を含むデータを、データD4として、駆動信号生成部222に出力する。
【0147】
駆動信号生成部222は、制御データ生成部221から出力されるデータD4を入力し、データD4に基づいて、駆動信号Sig_τ(制御対象Rbt1(ロボットアーム)の各回転モータを駆動するための駆動信号の集合)を生成する。
【0148】
そして、駆動信号生成部222が、生成した駆動信号Sig_τを制御対象Rbt1に出力する(例えば、生成した駆動信号Sig_τにより、制御対象Rbt1の所定の部位を動かすモータを駆動する)ことで、制御対象Rbt1(ロボットアーム)の各回転モータが指定されたトルクで駆動され、制御対象Rbt1(ロボットアーム)が所定の動作を行う。工程6では、制御対象Rbt1(ロボットアーム)の先端の爪を開く(開度H=100%)動作が実行される。
【0149】
位置検出センサDev_sensors(4)は、物体(被搬送物)OBJの位置(この位置をpos(OBJ)=(x7,y7,z7)とする)を取得し、取得した当該位置のデータを、データD12_sensに含める。そして、データD12_sensは、位置検出センサDev_sensors(2)(環境データ取得部Dev_sensors)から行動コード取得部1に出力される。
【0150】
行動コード取得部1の入力データ調整部11は、データD12_sensを入力し、当該データから物体(被搬送物)OBJの位置のデータpos(OBJ)(=(x7,y7,z7))を取得する。そして、入力データ調整部11は、データpos(OBJ)が、物体OBJが、制御対象Rbt1(ロボットアーム)を動かしても物体OBJと干渉しない位置に存在するか否かを検出する。つまり、入力データ調整部11は、関数det_pos_init(pos(OBJ))に相当する処理を実行する。そして、det_pos_init(pos(OBJ))=1である場合、下記の入力データを行動コード解釈処理部21の学習可能モデルに入力する(データD2として、入力データ調整部11から行動コード取得処理部12へ出力される)。一方、det_pos_init(pos(OBJ))=1ではない場合、入力データ調整部11は、det_pos_init(pos(OBJ))=1となるまで、待機する。
入力データ(工程6):
(1)pos(OBJ)(=(x7,y7,z7))
(2)det_pos_init(pos(OBJ))=1
そして、行動コード取得処理部12の学習可能モデルは、入力データ調整部11から出力されるデータD2と、条件hとを入力し、入力したデータを用いて、データを順伝播させ、出力データを取得する。そして、行動コード取得処理部12は、学習可能モデルの出力データと正解データ(工程6では、行動コードC3-1(10s)(行動コードC3-1は、第1出力層(クラス分類用の出力層)の正解データであり、(10s)(時間t)は、第2出力層(回帰用の出力層)の正解データである))との誤差を取得し、取得した誤差を誤差関数により評価する。行動コード取得処理部12は、誤差関数により取得された誤差が所定の範囲内のものである場合、学習が収束したと判定し、誤差関数により取得された誤差が所定の範囲内のものではない場合、学習を継続させる。学習を継続させると判断された場合、行動コード取得処理部12の学習可能モデルにおいて、取得した誤差を逆伝播させることで、当該学習可能モデルのパラメータを更新する。
【0151】
そして、工程6の正解データ(行動コードC3-1(10s))を、データD_correctとして、制御対象駆動処理部2の行動コード解釈処理部21に入力し、さらに、制御データ生成部221および駆動信号生成部222において、工程2と同様の処理を実行し、行動コードC3-1(10s)に対応する行動、すなわち、制御対象Rbt1(ロボットアーム)に10秒間で初期状態の位置に移動させる動作(初期状態に戻る動作)を実行させる。
【0152】
さらに、工程1~工程6を繰り返し実行し、行動コード取得処理部12の学習可能モデルを学習させる処理を行う。そして、行動コード取得処理部12が誤差関数により取得された誤差が所定の範囲内のものであると判定し、学習が収束したと判定した場合、そのとき学習可能モデルに設定されているパラメータを最適パラメータとして固定する。これにより、学習処理が完了し、学習済みモデル(最適パラメータが設定されたモデル)を取得することができる。
【0153】
なお、上記では、自動制御システム1000において、第1タスクtsk1の場合の学習処理が実行される場合について説明したが、他のタスクを条件hで指定し、第1タスクtsk1以外のタスクを含めて、上記と同様に、学習処理を行うようにしてもよい。これにより、複数のタスクを実行することが可能な学習済みモデル(行動コード取得処理部12の学習済みモデル)を取得することができる。そして、当該学習済みモデルを用いた処理(予測処理)を行うことで、複数のタスクを実行する自動制御システム1000を実現できる。
【0154】
以上のように、自動制御システム1000では、制御対象Rbt1が置かれている環境下での状態により取得されるデータを入力データとし、当該入力データが行動コード取得処理部12の学習可能モデルに入力されたときに出力すべきデータ(正解データ)を行動コードとするので、制御対象Rbt1のコマンド系列に特化することなく、汎用的な学習処理を行うことができる。
【0155】
(1.2.3:予測処理)
次に、自動制御システム1000で実行される予測処理について、説明する。
【0156】
図7は、予測処理を実行する場合(予測処理時)の第1実施形態に係る自動制御システム1000の行動コード取得部1と制御対象駆動処理部2の概略構成図である。
【0157】
予測処理を実行する場合、自動制御システム1000では、図7に示すように、行動コード取得処理部12は、学習処理により取得された学習済みモデルを有している。
【0158】
そして、行動コード取得処理部12の学習済みモデルの出力データが、データD_act_codeとして、制御対象駆動処理部2の行動コード解釈処理部21に出力される。
【0159】
例えば、条件hを第1タスクtsk1(当該タスクを特定するデータ)とすることで、自動制御システム1000では、第1タスクtsk1を自動実行することができる。このとき、自動制御システム1000では、以下の処理が実行される。
【0160】
≪工程1≫
図5に示す状態1と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程1):
(1)pos(OBJ)(=(x1,y1,z1))
(2)det_pos_ready(pos(OBJ))=1
そして、学習済みモデルは、行動コードC2-1(100%)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0161】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0162】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0163】
≪工程2≫
そして、図5に示す状態2と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程2):
(1)pos_tip(Rbt1)(=(x2,y2,z2))
そして、学習済みモデルは、行動コードC1-2(x3,y3,z3,10s)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0164】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0165】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0166】
≪工程3≫
そして、図5に示す状態3と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程3):
(1)pos(OBJ)(=(x4,y4,z4))
(2)det_pos_grasp(pos(OBJ))=1
そして、学習済みモデルは、行動コードC2-3(0%)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0167】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0168】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0169】
≪工程4≫
そして、図5に示す状態4と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程4):
(1)force_tip(Rbt1)
(2)det_force_tip(pos(force_tip(Rbt1)))=1
そして、学習済みモデルは、行動コードC1-5(x5,y5,z5,10s)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0170】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0171】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0172】
≪工程5≫
そして、図5に示す状態5と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程5):
(1)pos_tip(Rbt1)(=(x6,y6,z6))
(2)det_pos_tip_release(pos_tip(Rbt1))=1
そして、学習済みモデルは、行動コードC2-3(100%)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0173】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0174】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0175】
≪工程6≫
そして、図5に示す状態6と同じ状態(あるいは類似の状態)のとき、行動コード取得処理部12の学習済みモデルには、下記入力データが入力される。
入力データ(工程6):
(1)pos(OBJ)(=(x7,y7,z7))
(2)det_pos_init(pos(OBJ))=1
そして、学習済みモデルは、行動コードC3-1(10s)に相当するデータを出力する。そして、学習済みモデルから出力されたデータは、データD_act_codeとして、行動コード解釈処理部21に出力される。
【0176】
行動コード解釈処理部21は、行動コード取得処理部12から出力されるデータD_act_codeを入力し、上記学習処理の記載で説明したのと同様に、当該データD_act_codeに対応するコマンド列を取得し、当該コマンド列を含むデータを、データD3として、制御対象駆動部22に出力する。
【0177】
そして、制御対象駆動部22では、上記学習処理の記載で説明したのと同様に、データD3のコマンド列に従う動作を制御対象Rbt1(ロボットアーム)に実行させるための駆動信号Sig_τを生成し、当該駆動信号Sig_τにより、制御対象Rbt1(ロボットアーム)に所定の動作(D_act_codeに対応する動作)を実行させる。
【0178】
以上により、自動制御システム1000では、第1タスクtsk1を実行(自動実行)させることができる。また、自動制御システム1000では、他のタスクについても、同様に処理することで、自動実行させることができる。
【0179】
(1.2.4:環境が変化した場合の処理)
次に、自動制御システム1000が置かれている環境が変化した場合の処理について説明する。
【0180】
図8は、制御対象Rbt1ロボットアームとしたときに第2タスクtsk2を実行させるための環境を模式的に示した図である。
【0181】
例えば、図3で示した環境(自動制御システム1000が置かれている環境)(この環境を「環境1」という)において、第1ベルトコンベアCvy1の搬送速度v_cvy1が、速度v1から、速度v1よりも速い速度v2(>v1)に変更された場合(この環境を「環境2」という)、自動制御システム1000において、図3で示した環境下で学習処理を行ったシステムでは、例えば、第1タスクtsk1を適切に実行することができない。このような場合、自動制御システム1000において、行動コード取得処理部12の学習可能モデルを再学習し、変化した環境に対応させることができる。これについて、以下、説明する。
【0182】
なお、説明便宜のため、図3で示した環境(自動制御システム1000が置かれている環境)において、第1ベルトコンベアCvy1の搬送速度v_cvy1が、速度v1から、速度v1よりも速い速度v2(>v1)に変更された場合(一例)(環境1から環境2に変化した場合)について、以下、説明する。
【0183】
環境1では、図5に示した学習データ(第1タスクtsk1用学習データ)により、第1タスクtsk1を実行する学習可能モデル(行動コード取得処理部12の学習可能モデル)を取得することができたが、環境2では、第1ベルトコンベアCvy1の搬送速度v_cvy1が速くなっているので、第1タスクtsk1用学習データの代わりに、第2タスクtsk2用学習データを用いて学習処理を行う。
【0184】
図9は、制御対象Rbt1ロボットアームとした場合の第2タスクtsk2を実行させる自動制御システム1000を構築するための学習データを説明するための図(行動コード取得処理部12の学習可能モデルのための学習データ(第2タスクtsk2用学習データ)の入力データと出力データ(正解データ)とを時系列に模式的に示した図)である。
【0185】
第2タスクtsk2用学習データは、図9に示すように、第1タスクtsk1用学習データにおいて、以下の部分を追加、変更したものである。
(1)工程2の状態2において、第1ベルトコンベアCvy1の速度(搬送速度)v_cvy1を取得する処理を追加し、当該処理により取得したデータを、行動コード取得処理部12の学習可能モデルへの入力データに追加。
(2)工程2の正解データ(行動コード取得処理部12の学習可能モデルの出力データの正解データ)を、環境1のときの行動コードC1-2(x3,y3,z3,10s)から行動コードC1-3(x3,y3,z3,5s)に変更。
【0186】
なお、行動コードC1-3は、所定の軌道により位置(x3,y3,z3)に指定された時間(5s)で、制御対象Rbt1(ロボットアーム)の先端の爪を移動させる行動コードである。
(3)工程4の正解データ(行動コード取得処理部12の学習可能モデルの出力データの正解データ)を、環境1のときの行動コードC1-5(x5,y5,z5,10s)から行動コードC1-5(x5,y5,z5,5s)に変更。
(4)工程6の正解データ(行動コード取得処理部12の学習可能モデルの出力データの正解データ)を、環境1のときの行動コードC3-1(10s)から行動コードC3-1(5s)に変更。
【0187】
自動制御システム1000では、上記のように第1タスクtsk1用学習データの一部を追加、変更することで生成された第2タスクtsk2用学習データを用いて、第1タスクtsk1用学習データを用いた学習処理と同様の処理を行うことで、第2タスクtsk2を実行することができるように行動コード取得処理部12の学習可能モデルを学習させる(条件hを、第2タスクtsk2を特定するデータに設定して、学習処理を行う)。なお、自動制御システム1000において、従来対応できていたタスク(第1タスクtsk1等)についても行動コード取得処理部12の学習可能モデルが正解データを出力できるようにしつつ、第2タスクtsk2用学習データを用いて、行動コード取得処理部12の学習可能モデルを学習させる。
【0188】
上記学習処理により取得した学習済みモデルを行動コード取得処理部12に搭載し、当該学習済みモデルにより処理(予測処理)を行うことで、自動制御システム1000において、従来対応できていたタスク(第1タスクtsk1等)、および、第2タスクtsk2を適切に自動実行することができる。
【0189】
このように、自動制御システム1000では、環境が変化した場合であっても、環境の変化に応じて、行動コード取得処理部12の学習可能モデルへの入力データを追加、変更し、かつ、正解データとなる行動コードを変更(引数の変更を含む)するだけで、行動コード取得処理部12の学習可能モデルの学習データを簡単に生成することができる。
【0190】
≪まとめ≫
以上のように、自動制御システム1000では、学習可能モデルを備える行動コード取得部1が汎用コードである行動コード(制御対象Rbt1が備える機能により特定できる動作(行動)を規定するコード)をデータD_act_codeとして出力し、制御対象駆動処理部2が当該データD_act_codeを制御対象Rbt1に特化したコマンド列に変換し、変換したコマンド列に従い、制御対象Rbt1に所定の動作を実行させる。したがって、自動制御システム1000では、所定の環境において、制御対象Rbt1に所定の動作させるときに、行動コード取得部1の学習処理を、当該所定の環境下で取得されるデータ(制御対象Rbt1のデータ、および/または、制御対象Rbt1が置かれている環境下のデータ)を入力とし、正解データを所定の行動コードとした学習データを用いて行うことができる。
【0191】
そして、自動制御システム1000では、上記学習データを、行動コードを用いて生成できるので、所定の環境下(状態)で、制御対象Rbt1に所定の動作をオペレータが操作して実行させる必要がなく、その結果、学習データを生成するのに熟練のオペレータを必要としない。つまり、自動制御システム1000では、所定の環境下(状態)で、制御対象Rbt1に所定の動作を実現させるための学習処理を行う場合、実際に制御対象Rbt1を操作する必要はなく、所定の環境下(状態)で制御対象Rbt1に所定の動作を実行させるための行動コード(および/または、行動コードの組み合わせ(行動コード列))を特定できればよい。
【0192】
また、自動制御システム1000では、制御対象駆動処理部2が当該データD_act_codeを制御対象Rbt1に特化したコマンド列に変換し、変換したコマンド列に従い、制御対象Rbt1に所定の動作を実行させるので、制御対象Rbt1が変更され、制御対象Rbt1に特化したコマンド系列が変更された場合であっても、制御対象駆動処理部2の行動コード解釈処理部21での処理(行動コードから、制御対象Rbt1に特化したコマンド列を取得する処理)を変更するだけで対応することができる。
【0193】
つまり、自動制御システム1000では、(1)置かれている環境が変化した場合、あるいは、制御対象Rbt1から出力されるデータ、または、制御対象Rbt1が置かれている環境で取得されるデータが変化した場合、それに合わせて行動コード取得部1を変更すればよく、(2)制御対象Rbt1が変更された場合、それに合わせて、制御対象駆動処理部2(コマンド系列が変更されただけの場合は、行動コード解釈処理部21のみ)を変更すればよい。したがって、自動制御システム1000では、環境の変化、制御対象Rbt1の変更等に柔軟に対応することができる。
【0194】
さらに、自動制御システム1000では、実現したいタスクについて行動コード取得部の学習可能モデルを学習させ取得した学習済みモデルを用いて処理(予測処理)を行うので、高精度に制御対象Rbt1を制御し、所定のタスクを精度良く実現させることができる。その結果、自動制御システム1000では、制御対象Rbt1に所望の動作を高精度に実行させることができる。
【0195】
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0196】
本変形例では、階層的なデータ構造を有する行動コードを用いる点が第1実施形態と異なる。
【0197】
図10は、第1変形例における行動コード(制御対象Rbt1をロボットアームとした場合の行動コード)(一例)の表を示す図である。
【0198】
図11は、第1変形例における行動コード(階層データ)(一例)を示す図である(行動コードC1-3の場合)。
【0199】
図12は、第1変形例における行動コード(階層データ)(一例)を示す図である(行動コードC2-2の場合)。
【0200】
本変形例の行動コード(行動コード体系)は、各行動コードに、階層データの有無を示す情報が付与されている。この点が、第1実施形態の行動コード(行動コード体系)(図4を参照)と異なる。
【0201】
図10の表において、「階層データの有無」の欄に丸印が付与されている行動コードは、階層データを有している。なお、「階層データの有無」の欄に丸印が付与されていない行動コードは、階層データを有していない。
【0202】
図10の表から、行動コードC1-3およびC2-2に階層データが存在することが分かる。
【0203】
そして、行動コードC1-3の階層データの詳細を図11に、行動コードC2-2の階層データの詳細を図12に、それぞれ、示す。
【0204】
以下では、説明便宜のため、行動コード体系が図10図12の場合(一例)について、説明する。
【0205】
図11に示すように、階層データを有する行動コードC1-3は、行動コードC1-3(x,y,z,t)において、引数として、制御レベルを規定する値(引数)LevXが追加されている。なお、制御レベルを規定する値(引数)LevXは、図11の場合、3段階のレベルを規定しており、LevH(高レベル制御)、LevM(中レベル制御)、LevL(低レベル制御)のいずれかをとる。なお、自動制御システム1000において、行動コード(第1実施形態の行動コード体系の行動コード)に追加された引数がある場合、当該行動コードが階層的行動コードであると判定するようにしてもよい。
【0206】
また、制御レベルは、制御対象Rbt1の制御の内容を特定するための指標を示すデータであり、例えば、要求される条件の厳しさに応じて設定される指標である。制御レベルは、行動コードのコード体系を階層的なものにする指標であればよく、所定の基準に応じて、その程度に応じて規定される指標であればよい。以下では、説明便宜のため、制御レベルLevXは、要求される条件の厳しさに応じて設定される指標であり、(1)LevH(高レベル制御)が厳しい条件が課される場合を示しており、(2)LevM(中レベル制御)が中程度(普通)の条件が課される場合を示しており、(3)LevL(低レベル制御)が緩い条件が課される場合を示しているものとして、説明する。
【0207】
まず、図11の階層的行動コードC1-3について、説明する。
【0208】
階層的行動コードC1-3(x,y,z,t,LevH)は、図11から分かるように、制御対象Rbt1(ロボットアーム)を位置(x,y,z)にt秒間で移動させる行動を規定するコードであり、さらに、制御対象Rbt1に対して高レベル制御を実行させることを規定するコードである。この高レベル制御の内容は、例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが大きい場合、ロボットアームを速く動かし(移動させ)、移動完了後の時間マージンを多く確保するようにする制御を行うことである。
【0209】
階層的行動コードC1-3(x,y,z,t,LevH)が指定された場合、制御対象Rbt1に対して高レベル制御を実行させることで、制御対象Rbt1が置かれている環境下で要求される条件が厳しい場合(例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが大きく、ロボットアームを素早く移動させないと所定の動作を行うことができない条件(厳しい条件)である場合)であっても、適切に、制御対象Rbt1を制御することができる(制御対象Rbt1に所定の動作を実行させることができる)。
【0210】
階層的行動コードC1-3(x,y,z,t,LevM)は、図11から分かるように、制御対象Rbt1(ロボットアーム)を位置(x,y,z)にt秒間で移動させる行動を規定するコードであり、さらに、制御対象Rbt1に対して中レベル制御を実行させることを規定するコードである。この中レベル制御の内容は、例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが中程度(通常)の場合、ロボットアームを速く動かし(移動させ)、移動完了後の時間マージンを中程度(通常)に確保するようにする制御を行うことである。
【0211】
階層的行動コードC1-3(x,y,z,t,LevM)が指定された場合、制御対象Rbt1に対して中レベル制御を実行させることで、制御対象Rbt1が置かれている環境下で要求される条件が中程度(通常)の場合(例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが中程度(通常)であり、ロボットアームを通常に移動させれば所定の動作を行うことができる条件(中程度の条件)である場合)においても、適切に、制御対象Rbt1を制御することができる(制御対象Rbt1に所定の動作を実行させることができる)。
【0212】
階層的行動コードC1-3(x,y,z,t,LevL)は、図11から分かるように、制御対象Rbt1(ロボットアーム)を位置(x,y,z)にt秒間で移動させる行動を規定するコードであり、さらに、制御対象Rbt1に対して低レベル制御を実行させることを規定するコードである。この低レベル制御の内容は、例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが小さい場合、ロボットアームをゆっくり動かし(移動させ)、移動完了後の時間マージンを少なくするようにする制御を行うことである。
【0213】
階層的行動コードC1-3(x,y,z,t,LevL)が指定された場合、制御対象Rbt1に対して低レベル制御を実行させることで、制御対象Rbt1が置かれている環境下で要求される条件が緩い場合(例えば、ベルトコンベアの搬送速度のゆらぎや、ベルトコンベアに対象物が置かれる間隔のゆらぎが小さく、ロボットアームをゆっくり移動させても所定の動作を行うことができる条件(緩い条件)である場合)においても、適切に、制御対象Rbt1を制御することができる(制御対象Rbt1に所定の動作を実行させることができる)。
【0214】
次に、図12の階層的行動コードC2-2について、説明する。
【0215】
階層的行動コードC2-2(H,LevH)は、図12から分かるように、制御対象Rbt1(ロボットアーム)の先端の爪(把持部)の開度をH%とする行動を規定するコードであり、さらに、制御対象Rbt1に対して高レベル制御を実行させることを規定するコードである。この高レベル制御の内容は、厳しい条件が課された場合において、当該条件を満たす動作が実行されるように制御することであり、例えば、ロボットアームの先端で把持している物体が容易に破損する性質の物体である場合に、当該物体を破損しないように把持するために、ロボットアームの先端の爪(把持部)の加速度が所定の第1範囲に収まるような値となるように制御することである。これにより、例えば、制御対象Rbt1(ロボットアーム)が物体を強く握りすぎて、当該物体を破損することがなくなり、その結果、ロボットアームが把持している物体を破損する可能性を極めて低くすることができる。なお、上記の所定の第1範囲は、ロボットアームが把持している物体(あるいは、把持しようとしている物体)を破損する可能性を極めて低くする加速度の範囲である。
【0216】
階層的行動コードC2-2(H,LevM)は、図12から分かるように、制御対象Rbt1(ロボットアーム)の先端の爪(把持部)の開度をH%とする行動を規定するコードであり、さらに、制御対象Rbt1に対して中レベル制御を実行させることを規定するコードである。この中レベル制御の内容は、中程度(通常)の条件が課された場合において、当該条件を満たす動作が実行されるように制御することであり、例えば、ロボットアームの先端で把持している物体が中程度に破損する性質の物体である場合に、当該物体を破損しないように把持するために、ロボットアームの先端の爪(把持部)の加速度が所定の第2範囲に収まるような値となるように制御することである。これにより、例えば、制御対象Rbt1(ロボットアーム)が物体を破損する可能性を低くすることができる。なお、上記の所定の第2範囲は、ロボットアームが把持している物体(あるいは、把持しようとしている物体)を破損する可能性を低くする加速度の範囲であり、第1範囲よりも緩い条件を満たす範囲である。
【0217】
階層的行動コードC2-2(H,LevL)は、図12から分かるように、制御対象Rbt1(ロボットアーム)の先端の爪(把持部)の開度をH%とする行動を規定するコードであり、さらに、制御対象Rbt1に対して低レベル制御を実行させることを規定するコードである。この低レベル制御の内容は、緩い条件が課された場合において、当該条件を満たす動作が実行されるように制御することであり、例えば、ロボットアームの先端で把持している物体が強く握っても破損しにくい性質の物体である場合に、当該物体を把持するために、ロボットアームの先端の爪(把持部)の加速度が所定の第3範囲に収まるような値となるように制御することである。これにより、例えば、制御対象Rbt1(ロボットアーム)が物体を破損する可能性を中程度にすることができる。なお、上記の所定の第3範囲は、ロボットアームが把持している物体(あるいは、把持しようとしている物体)を破損する可能性を中程度にする加速度の範囲であり、第2範囲よりも緩い条件を満たす範囲である。
【0218】
以上のように、本変形例の行動コード体系は、一部の行動コードにおいて、階層的行動コードを有するコード体系である。したがって、本変形例の行動コード体系を用いることで、例えば、要求される制御の精度に応じて、行動コード、または、階層的行動コードを選択することができる。
【0219】
例えば、自動制御システム1000において、所定のタスクを実行しようとしている場合、所定の工程において、高精度の制御が求められる場合、当該工程において、行動コード取得処理部12の学習可能モデルの学習処理の正解データの行動コードが階層的行動コードを有しているか否かを判定し、正解データの行動コードが階層的行動コードを有している場合、高精度制御を実現する階層的行動コード(例えば、行動コードC1-3ならば、階層的行動コードC1-3(x,y,z,t,LevH)、行動コードC2-2ならば、階層的行動コードC2-2(H,LevH))を選択すればよい(選択して、学習用データを生成すればよい)。
【0220】
一方、自動制御システム1000において、所定のタスクを実行しようとしている場合、所定の工程において、低精度の制御が求められる場合(あまり高い精度を求められていない場合)、当該工程において、行動コード取得処理部12の学習可能モデルの学習処理の正解データの行動コードが階層的行動コードを有しているか否かを判定し、正解データの行動コードが階層的行動コードを有している場合、低精度制御を実現する階層的行動コード(例えば、行動コードC1-3ならば、階層的行動コードC1-3(x,y,z,t,LevL)、行動コードC2-2ならば、階層的行動コードC2-2(H,LevL))を選択すればよい(選択して、学習用データを生成すればよい)。
【0221】
このように、本変形例の行動コード体系(階層的なデータ構造の行動コード体系)の行動コードを用いて、行動コード取得処理部12の学習可能モデルの学習処理のための学習データを生成し、生成した当該学習データにより行動コード取得処理部12の学習可能モデルを学習させて学習済みモデルを取得し、取得した当該学習済みモデルにより、自動制御システム1000において、予測処理を行うことで、要求される制御精度に応じた処理(制御対象Rbt1を自動制御(自動運転)し所定のタスクを実現する処理)を行うことができる。
【0222】
≪第2変形例≫
次に、第1実施形態の第2変形例について、説明する。なお、上記実施形態、変形例と同様の部分については、同一符号を付し、詳細な説明を省略する。
本変形例では、階層的なデータ構造を有する行動コードを用いた学習データ生成装置、学習データ生成方法について、説明する。
【0223】
図13は、第1実施形態の第2変形例の学習データ生成装置3の概略構成図である。
【0224】
本変形例の学習データ生成装置3は、図13に示すように、例えば、手動により生成した、正解データとして行動データを含む学習データである入力学習データDin_train_setと、行動データ、階層的行動コードを格納したデータ格納部DB1から読み出される、行動データ、階層的行動コードを含むデータD_act_code_setsと、要求する制御精度(制御対象Rbt1の制御の精度)を示すデータであるデータD_accrcyと、を入力する。また、学習データ生成装置3は、図13に示すように、階層データ有無検出部31と、学習データ生成処理部32とを備える。
【0225】
階層データ有無検出部31は、正解データとして行動データを含む入力学習データDin_train_setと、行動データ、階層的行動コードを格納したデータ格納部DB1から読み出される、行動データ、階層的行動コードを含むデータD_act_code_setsとを入力する。そして、入力学習データDin_train_setに含まれる行動データを取得(抽出)し、取得した当該行動データに、階層的行動コードがあるか否かを、データ格納部DB1から読み出したデータD_act_code_setsを参照することで、判定する。なお、データ格納部DB1は、第1変形例の行動コード体系の行動コードのデータを記憶保持しており、各行動コードが階層的行動コードを有しているか否かのデータ(情報)も記憶保持しているものとする。
【0226】
そして、階層データ有無検出部31は、入力学習データDin_train_setに含まれる各行動データの階層的行動コードの有無を示す情報(データ)を、データDet1として、学習データ生成処理部32に出力する。
【0227】
学習データ生成処理部32は、入力学習データDin_train_setと、データD_accrcyと、階層データ有無検出部31から出力されるデータDet1と、データ格納部DB1から出力されるデータD_act_setsとを入力する。学習データ生成処理部32は、データDet1を参照し、入力学習データDin_train_setに含まれる行動コードのうち、階層的行動コードを有する行動コードを特定する。また、学習データ生成処理部32は、データD_accrcyを参照し、要求している制御精度を特定する。そして、学習データ生成処理部32は、入力学習データDin_train_setに含まれる行動コードのうち、階層的行動コードを有する行動コードについて、データD_accrcyを参照し、特定した制御精度(要求している制御精度)を満たす階層的行動コードを特定し、上記行動コードを、特定した階層的行動コードに置換する処理を行う。これにより、入力学習データDin_train_setに含まれる行動コードのうち、階層的行動コードを有する行動コードについては、要求している制御精度を満たす階層的行動コードに置換されたデータを生成することができる。そして、学習データ生成処理部32は、上記処理により取得したデータを、学習データDout_train_setとして取得(出力)する。
【0228】
以上のように、本変形例の学習データ生成装置3では、上記のように処理することで、例えば、手動により生成した、正解データとして行動データを含む学習データである入力学習データDin_train_setから、要求している制御精度を満たす学習データDout_rain_setを取得することができる。そして、学習データ生成装置3により取得した学習データDout_rain_setを用いて、自動制御システム1000において、行動コード取得処理部12の学習可能モデルの学習処理を行うことで、要求した制御精度を満たす処理を実行する行動コード取得処理部12の学習済みモデルを取得することができる。そして、自動制御システム1000において、取得した行動コード取得処理部12の学習済みモデルを用いて処理を行うことで、要求した制御精度を満たす処理(制御対象Rbt1に対して所定のタスクを実行させる処理)を実現することができる。
【0229】
なお、学習データ生成装置3に入力される要求される制御精度を示すデータD_accrcyは、例えば、自動制御システム1000の制御対象Rbt1から出力されるデータD11_sens、および/または、環境データ取得部Dev_sensorsから出力されるデータD12_sensの取得精度(計測精度)を取得できる場合、当該取得精度(計測精度)に基づいて、設定されるものであってもよい。例えば、データD11_sens、および/または、データD12_sensの取得精度(計測精度)が高い場合であって、制御対象Rbt1に対する制御の精度は低くしても良い場合、学習データ生成装置3に入力される要求される制御精度を示すデータD_accrcyを、制御精度として低精度を要求するデータとしてもよい。
【0230】
[第2実施形態]
次に、第2実施形態について、説明する。なお、上述の実施形態(変形例を含む)と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0231】
図14は、第2実施形態に係る自動制御システム2000の概略構成図である。
【0232】
図15は、第2実施形態に係る自動制御システム2000の行動コード取得部1Aと制御対象駆動処理部2Aの概略構成図である。
【0233】
第2実施形態の自動制御システム2000は、第1実施形態の自動制御システム1000において、行動コード取得部1を行動コード取得部1Aに置換し、制御対象駆動処理部2を制御対象駆動処理部2Aに置換した構成を有している(図14を参照)。
【0234】
また、第2実施形態の行動コード取得部1Aは、第1実施形態の行動コード取得部1において、行動コード解釈処理部13を追加した構成を有している(図15を参照)。
【0235】
また、第2実施形態の制御対象駆動処理部2Aは、第1実施形態の制御対象駆動処理部2において、行動コード解釈処理部21を削除した構成を有している(図15を参照)。
【0236】
つまり、第2実施形態の自動制御システム2000では、第1実施形態の自動制御システム1000において、制御対象駆動処理部2に設置されていた行動コード解釈処理部21を、行動コード取得部1Aに移動させた構成を有している。なお、第2実施形態の自動制御システム2000の行動コード取得部1Aの行動コード解釈処理部13は、第1実施形態の自動制御システム1000の制御対象駆動処理部2の行動コード解釈処理部21と同様の構成、機能を有している。
【0237】
自動制御システム2000は上記構成を有しているので、自動制御システム2000では、行動コード取得部1Aの行動コード解釈処理部13からデータD3が、制御対象駆動処理部2Aの制御対象駆動部22に入力される。なお、第2実施形態の自動制御システム2000の動作については、第1実施形態の自動制御システム1000と同様であり、第2実施形態の自動制御システム2000は、第1実施形態の自動制御システム1000と同様の機能を有している。
【0238】
第2実施形態の自動制御システム2000では、上記構成を有しているので、例えば、行動コード取得部1Aを単独の装置、半導体装置(例えば、LSI)として実現することができる。
【0239】
≪第1変形例≫
次に、第2実施形態について、説明する。なお、上述の実施形態(変形例を含む)と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0240】
図16は、第2実施形態の第1変形例に係る自動制御システム2000Aの概略構成図である。
【0241】
図17は、第2実施形態の第1変形例に係る自動制御システム2000Aの行動コード取得部1Bと制御対象駆動処理部2Aの概略構成図である。
【0242】
第2実施形態の第1変形例の自動制御システム2000Aは、第2実施形態の自動制御システム2000において、行動コード取得部1Aを行動コード取得部1Bに置換した構成を有している(図16を参照)。
【0243】
また、第2実施形態の第1変形例の行動コード取得部1Bは、第2実施形態の行動コード取得部1Aにおいて、行動コード解釈処理部13を行動コード解釈処理部13Aに置換した構成を有している(図17を参照)。
【0244】
行動コード解釈処理部13Aは、図17に示すように、行動コード解釈処理部13と同様の機能を有し、さらに、選択信号D_selectを入力する構成を有している。また、行動コード解釈処理部13Aは、行動コード列と、制御対象Rbt1に特化したコマンド列との対応関係を示すルックアップテーブル(LUT)を複数有しており、選択信号D_selectで指示されたルックアップテーブルを選択することができる。選択信号D_selectは、外部から(例えば、ユーザにより、ユーザインターフェース(不図示)を介して)、あるいは、行動コード取得部1Bの各機能部を制御する制御部(不図示)から入力される信号であり、その信号値に従い、行動コード解釈処理部13Aが、行動コード解釈処理部13Aで記憶保持されている複数のルックアップテーブルのうち1つのルックアップテーブルを選択する。
【0245】
例えば、選択信号D_selectを8ビットデータの信号値(値「0」~「255」)をとる信号であり、行動コード解釈処理部13Aが256個のルックアップテーブル(LUT~LUT255)を記憶保持している場合、信号値がi(i:整数、0≦i≦255)である選択信号D_selectが行動コード解釈処理部13Aに入力されると、行動コード解釈処理部13Aは、ルックアップテーブルLUTを選択し、当該ルックアップテーブルLUTで規定されている行動コード列と、制御対象Rbt1に特化したコマンド列との対応関係に基づいて入力されたデータD_act_codeに対応するコマンド列(制御対象Rbt1に特化したコマンド列)を取得し、取得したコマンド列を含むデータを、データD3として、制御対象駆動処理部2Aに出力する。
【0246】
これにより、行動コード取得部1Bでは、選択信号D_selectにより、制御対象Rbt1に対応したコマンド列を出力させることができる。例えば、行動コード解釈処理部13Aで記憶保持するルックアップテーブルを、制御対象Rbt1の種類やメーカー(製造者)に特化したコマンド列に対応させたデータ(ルックアップテーブル)とすることで、制御対象Rbt1の種類やメーカーが変更された場合(異なる種類、あるいは、異なるメーカーの制御対象Rbt1に変更された場合)に対応することができる。つまり、変更後の制御対象Rbt1に対応する信号値の選択信号D_selectを行動コード解釈処理部13Aに入力することで、変更後の制御対象Rbt1に対応するコマンド列を含むデータD3を、行動コード解釈処理部13Aから出力することができ、その結果、自動制御システム2000Aでは、変更後の制御対象Rbt1に対する制御を行うことが可能となる。
【0247】
なお、上記では、行動コード解釈処理部13Aが、ルックアップテーブルを記憶保持する場合について説明したが、これに限定されることはなく、例えば、ルックアップテーブルを記憶保持する記憶部(不図示)を、行動コード取得部1Bの内部または外部に設け、行動コード解釈処理部13Aが当該記憶部からルックアップテーブルを読み出す構成としてもよい。
【0248】
[他の実施形態]
上記実施形態(変形例を含む)では、自動制御システムにおいて、行動コード取得部に条件h(タスクを特定するための条件h)が入力される構成を採用する場合について説明したが、これに限定されることはなく、行動コード取得部に条件hが入力されない構成としてもよい。例えば、実行しようとしているタスクが限定されている場合、あるいは、変更があったとしても微小な変更である場合、制御対象Rbt1の状況、および/または、制御対象Rbt1が置かれている環境下の状況を把握して、自動制御システムにおいて、上記実施形態(変形例を含む)で説明した処理を実行させるようにすればよい。
【0249】
上記実施形態(変形例を含む)では、制御対象Rbt1がロボットアームである場合について説明したが、これに限定されることはなく、制御対象Rbt1は、ロボットアーム以外のものであってもよい。制御対象Rbt1としては、制御可能な装置であればよく、例えば、ロボットや、物体を運搬する装置(例えば、クレーン、コンテナ運搬装置)や、飛行体(例えば、ドローン)等であってもよい。
【0250】
また、自動制御システム1000において実現させる処理、タスクも、上記実施形態(変形例を含む)に限定されることはなく、他の処理、タスクであってもよい。例えば、自動制御システム1000において、制御対象Rbt1に応じて要求する処理、タスクであってもよく、行動コードを規定できる処理(制御対象Rbt1が備える機能により特定できる動作(行動)を規定するコード(行動コード)により規定できる処理)、タスクであれば、任意の処理、タスクであってもよい。
【0251】
また、上記実施形態(変形例を含む)では、自動制御システム1000において、行動コード解釈処理部21は、制御対象駆動処理部2に含まれる場合について説明したが、これに限定されることはなく、行動コード解釈処理部21は、制御対象駆動処理部2の外部に設置されるものであってもよい。
【0252】
また、上記実施形態(変形例を含む)では、自動制御システム1000において、入力データ調整部11において、各種の検出処理(det_pos_ready()に相当する処理、det_pos_grasp()に相当する処理、det_force_tip()に相当する処理、det_pos_tip_release()に相当する処理、det_pos_tip_init()に相当する処理等)が実行され、その検出結果を行動コード取得処理部12に出力する場合について、説明したが、これに限定されることはなく、上記の検出処理を、例えば、制御対象Rbt1に搭載されたセンサや制御部、環境データ取得部Dev_sensorsのセンサや装置により実行するようにしてもよい。この場合、検出結果データが入力データ調整部11に入力され、入力データ調整部11は、入力した検出結果データを、データD2に含めて、データD2を行動コード取得処理部12に出力するようにすればよい。
【0253】
また、自動制御システム1000の入力データ調整部11において、入力されるデータから所定の特徴量を取得し、取得した特徴量を行動コード取得処理部12に出力するようにしてもよい(当該特徴量を行動コード取得処理部12の入力データとしてもよい)。
【0254】
また、上記実施形態(変形例を含む)では、自動制御システム1000において、学習データ(第1タスクtsk1用学習データ、第2タスクtsk2用学習データ)は、入力データと、正解データ(行動コード、階層的行動コード)とが1対1に対応している場合について、説明したが、これに限定されることはなく、例えば、異なる入力データ(異なる状態から取得された入力データ)に対して、同一の正解データ(行動コード、階層的行動コード)を対応させるようにしてもよい。この場合、行動コード取得処理部12の学習可能モデルは、過去の履歴を保持することができるモデル(例えば、アテンション機構を備えるニューラルネットワークモデル(例えば、トランスフォーマーモデル)や、RNNモデル(RNN:Recurrent Neural Network)や、自己回帰モデル)とすればよい。これにより、状態遷移が異なれば、入力データと、正解データ(行動コード、階層的行動コード)とが1対1に対応している場合であっても、正しい行動コード(あるいは、階層的行動コード)を出力するモデルを構築できる(学習処理により取得できる)。
【0255】
また、上記実施形態(変形例を含む)で説明した自動制御システム1000の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明した自動制御システム1000の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0256】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0257】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0258】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0259】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0260】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、図18に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0261】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。また、上記実施形態(変形例を含む)における処理方法において、発明の要旨を逸脱しない範囲で、一部のステップが、他のステップと並列に実行されるものであってもよい。
【0262】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0263】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0264】
また、本明細書内の記載、特許請求の範囲の記載において、「最適化」とは、最も良い状態にすることをいい、システム(モデル)を「最適化」するパラメータとは、当該システムの目的関数の値が最適値となるときのパラメータのことをいう。「最適値」は、システムの目的関数の値が大きくなるほど、システムが良い状態となる場合は、最大値であり、システムの目的関数の値が小さくなるほど、システムが良い状態となる場合は、最小値である。また、「最適値」は、極値であってもよい。また、「最適値」は、所定の誤差(測定誤差、量子化誤差等)を許容するものであってもよく、所定の範囲(十分収束したとみなすことができる範囲)に含まれる値であってもよい。
【0265】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0266】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0267】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0268】
1000、2000、2000A 自動制御システム
1、1A、1B 行動コード取得部
13、13A 行動コード解釈処理部
2、2A 制御対象駆動処理部
21 行動コード解釈処理部
22 制御対象駆動部
Dev_sensors 環境データ取得部
Rbt1 制御対象
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18