(58)【調査した分野】(Int.Cl.,DB名)
機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルを含む学習モジュールを備え、所定のタスクを実行させるシステムであって、
前記システムは、
一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成する第1入力部と、
前記学習モジュールから出力される情報を取得して、前記システムから出力される情報を生成する出力部であって、当該システムから出力される情報に基づいて所定のタスクが実行される、出力部と、
ユーザからの入力を受け付ける第2入力部であって、前記ユーザからの入力に基づく情報が、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力され、前記ユーザからの入力に基づいて前記出力部から出力される情報が変化する、第2入力部と、
を備え、
前記システムは、前記出力部から出力される情報に基づいてロボットの動作を制御し、
前記一又は複数の外部システムは前記ロボットの現在の姿勢を検知するセンサを含み、
前記第2入力部で受け付けられる前記ユーザからの入力は、前記ロボットの動作の制約に関する条件を含み、
前記出力部は、前記ロボットの現在の姿勢と前記条件とを考慮して、前記ロボットの動作を制御するための情報を出力するシステム。
機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルを含む学習モジュールを備え、所定のタスクを実行させるシステムであって、
前記システムは、
一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成する第1入力部と、
前記学習モジュールから出力される情報を取得して、前記システムから出力される情報を生成する出力部であって、当該システムから出力される情報に基づいて所定のタスクが実行される、出力部と、
ユーザからの入力を受け付ける第2入力部であって、前記ユーザからの入力に基づく情報が、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力され、前記ユーザからの入力に基づいて前記出力部から出力される情報が変化する、第2入力部と、を備え、
前記システムは、前記出力部から出力される情報に基づいてロボットの動作を制御し、
前記一又は複数の外部システムはロボットの現在の位置及び姿勢の少なくともいずれか一方を検知するセンサを含み、
前記第2入力部で受け付けられる前記ユーザからの入力は、前記ロボットが障害物を回避する安全性に関する条件を含み、
前記出力部は、前記ロボットの現在の位置と前記条件とを考慮して、前記ロボットの動作を制御するための情報を出力するシステム。
機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルを含む学習モジュールを備え、所定のタスクを実行させるシステムであって、
前記システムは、
一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成する第1入力部と、
前記学習モジュールから出力される情報を取得して、前記システムから出力される情報を生成する出力部であって、当該システムから出力される情報に基づいて所定のタスクが実行される、出力部と、
ユーザからの入力を受け付ける第2入力部であって、前記ユーザからの入力に基づく情報が、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力され、前記ユーザからの入力に基づいて前記出力部から出力される情報が変化する、第2入力部と、を備え、
前記一又は複数の外部システムはカメラを含み、
前記第2入力部で受け付けられる前記ユーザからの入力は、検査の基準に関する条件を含み、
前記出力部は、ユーザが入力した前記基準に関する条件を用いて再生成される特徴量に基づいて、前記カメラで撮影された対象物の画像から前記対象物の検査結果を出力し、
前記第2入力部は、前記基準に関する条件として、前記対象物、前記検査を行う環境及び前記検査の判定の少なくとも一つに関する基準に関する条件の入力を前記ユーザから受け付けるシステム。
機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルを含む学習モジュールを備えるシステムにおいて、所定のタスクを実行させる方法であって、
第1入力部が、一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成する第1ステップと、
前記学習モジュールが、少なくとも前記第1ステップで生成された情報に基づいて、所定の情報を出力する第2ステップと、
出力部が、少なくとも前記第2ステップで出力された情報を取得して、前記システムから出力される情報を生成する第3ステップであって、当該システムから出力される情報に基づいて所定のタスクが実行される、第3ステップと、
第2入力部が、前記第1のステップ、第2のステップ、又は、第3のステップの少なくともいずれかと略並行に行われ、ユーザからの入力を受け付ける第4ステップであって、前記ユーザからの入力に基づく情報が、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力され、前記ユーザからの入力に基づいて前記出力部から出力される情報が変化する、第4ステップと、
を備え、
前記システムは、前記出力部から出力される情報に基づいてロボットの動作を制御し、
センサが、前記一又は複数の外部システムは前記ロボットの現在の姿勢及び位置の少なくとも一方を検知するステップを更に備え、
前記第4ステップにおいて前記第2入力部で受け付けられる前記ユーザからの入力は、前記ロボットの動作の制約に関する条件、又は、前記ロボットが障害物を回避する安全性に関する条件を含み、
前記第4ステップにおいて前記変化する情報は、前記ロボットの現在の姿勢及び位置の少なくとも一方と前記条件とを考慮した前記ロボットの動作を制御するための情報を含む、方法。
機械学習により所定のタスクを実行させるための学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルからなる学習モジュールを含むコンピュータに、
一又は複数の外部システムから取得された情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成する第1ステップと、
少なくとも前記第1ステップで生成された情報に基づいて、前記学習モジュールが所定の情報を出力する第2ステップと、
少なくとも前記第2ステップで出力された情報を取得して、前記コンピュータから出力される情報を生成する第3ステップであって、当該コンピュータから出力される情報に基づいて所定のタスクが実行される、第3ステップと、
前記第1のステップ、第2のステップ、又は、第3のステップの少なくともいずれかと略並行に行われ、ユーザからの入力を受け付ける第4ステップであって、前記ユーザからの入力に基づく情報を、前記第1ステップ、前記第2ステップ又は前記第3ステップのうち少なくともいずれかのステップにおいて入力させることにより、前記ユーザからの入力に基づいて前記所定のタスクを実行させる情報を変化させる、第4ステップと、
を実行させ、
前記コンピュータから出力される情報に基づいてロボットの動作を制御させ、
前記一又は複数の外部システムは前記ロボットの現在の姿勢及び位置の少なくとも一方を検知するステップを更に備え、
前記第4ステップにおける前記ユーザからの入力は、前記ロボットの動作の制約に関する条件、又は、前記ロボットが障害物を回避する安全性に関する条件を含み、
前記第4ステップにおいて前記変化する情報は、前記ロボットの現在の姿勢及び位置の少なくとも一方と前記条件とを考慮した前記ロボットの動作を制御するための情報を含むプログラム。
【発明を実施するための形態】
【0022】
以下、図面を参照して本発明の実施形態について詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。また、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。さらに、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。
【0023】
図1は、本発明の一実施形態に係る所定のタスクを実行させるシステム10(以下「タスク実行システム10」ともいう。)を含む全体システム1の概念を示す図である。タスク実行システム10は、学習モジュール16を用いて、所定のタスクを実行させるシステムである。実行されるタスクとしては、例えば、製品の良不良を判定して検査結果を表示器に出力したり、ロボットに物体を把持させるための動作指令を出力したりすることが想定されるが、これらに限られるものではない。なお、学習モジュール16は、後述のように、機械学習によって学習する能力を備えた専用若しくは汎用のハードウェア又はソフトウェアの一単位、ないしこれらを任意に組み合わせた一単位を含むものである。すなわち、学習モジュール16は、機械学習によって学習する能力を備えた学習モデル、および、機械学習によって所定の能力を獲得した学習済みモデル、の少なくともいずれかを含むソフトウェアプログラムを含む。また、学習モジュール16は、当該ソフトウェアプログラムが保存された記憶装置、当該ソフトウェアを読み出し実行するハードウェアプロセッサ、を有する演算装置、を含む。また、所定のタスクを実行させるとは、外部システム50に所定のタスクを実行させることのほか、タスク実行システム10自身が所定のタスクを実行することも含み得る。また、タスク実行システム10は、実際のシステムにタスクを実行させることのみならず、仮想的なシステムであるシミュレータにタスクを実行させる場合にも適用可能である。この場合、仮想センサ、仮想ロボット、仮想システム等が制御の対象となる。
【0024】
図1に示すように、タスク実行システム10は、センサや外部機器などの入力側の外部システム20(以下「入力側外部システム20」ともいう。)から入力される情報I
Sに加えて、ユーザ(人)Pから入力される情報I
Pを受け付けることができる。
【0025】
入力側外部システム20から入力される情報I
Sの例としては、ビットマップ等の画像、点群(ポイントクラウド)、力(力覚センサの出力値)、距離(近接センサの出力値)、ロボット姿勢(エンコーダの出力値)などが挙げられるが、これらに限られない。ユーザから入力される情報I
Pの例としては、作業に対する要求や、作業の制約条件などが挙げられるがこれらに限られない。作業に対する要求とは、例えば、精度と速度のバランスなど、トレードオフの関係にある条件の選択を含み、作業の制約条件とは、例えば、対象物のうち触れてはいけない部分を指定するなど、禁止事項の設定を含む。当該タスクに対する要求や制約条件等の情報I
Pを、以下単に「条件(constraint)」ということがある。本発明の所定の実施形態に係るタスク実行システム10は、ユーザから入力される条件に基づいて、その挙動が変更される。すなわち、ユーザが入力する条件は、タスク実行システム10が所定のタスクを実行するときの、タスク実行システム10の挙動(例えば、出力される判断結果や動作指令等)を変動させる情報である。ユーザが入力する条件は、後述の第1入力部12に入力される場合には、第1入力部12を介して学習モジュール16に入力される情報を変動させる条件として使用され、後述の学習モジュール16に入力される場合には、学習モジュール16に含まれる学習済みモデルの内部パラメータを変動させる条件として使用され、後述の出力部18に入力される場合には、出力部18から出力される情報を変動させる条件として用いられる。ここで、情報の変動とは、情報の削除を含んでもよい。
【0026】
タスク実行システム10は、受け付けられた情報I
Sと情報I
Pに基づいて、学習モジュール16を用いて所定のタスクを実行する、または、出力側の外部システム50(以下「出力側外部システム50」ともいう。)に対して所定のタスクを実行させるための情報O
Sを出力する。タスク実行システム10から出力された情報O
Sは出力側外部システム50に渡されて、所定のタスクが実行される。また、タスク実行システム10から出力される情報のうち一部に、ユーザPに対して提示される情報O
Pを含めてもよい。出力側外部システム50に出力される情報O
Sの例としては、モータへの指令値、ロボットハンドへの動作指令、最適な把持姿勢、画像検査結果などが挙げられるが、これらに限られない。ユーザに対して提示される情報O
Pは、例えばユーザPが入力した情報I
Pに含まれる条件に対応して可視化される情報であり、具体的には、タスクの達成率や中間結果などが挙げられるが、これらに限られない。また、情報I
Pを入力するユーザと、情報O
Pが提示されるユーザは、同一であっても、異なっていてもよい。ここで、情報O
Pは、ユーザが入力する条件に対応した情報であることが好ましい。例えば、ユーザが入力した条件に対応するデータであって、ユーザに対して前記条件の達成度合を示すデータを用いることができる。また、例えば、ユーザから入力される情報I
Pが、ロボットの動作制御における精度と速度とのバランスである場合には、情報O
Pは、ロボットの動作制御に関する指令情報(指令値)と、当該指令情報(指令値)に基づき動作するロボットの予測精度(取り得る動作の誤差範囲)、及び、当該動作の達成時間を情報O
Pとして提示することができる。
【0027】
本実施形態では、入力側外部システム20から入力される情報I
Sに基づいて、タスク実行システム10が学習済みの学習モジュール16を用いて所定のタスクを実行させる際に、当該タスクに対する要求や制約条件等の情報I
Pをユーザが指定することができる。タスク実行システム10は、入力側外部システム20から入力される情報I
Sに加えて、ユーザPが指定した情報I
Pを考慮して出力を決定する。本実施形態によれば、実行させようとするタスクの精度、実行速度、失敗許容範囲などの要求や制約条件を現場や作業ごとに変えたいときに、学習モジュール16を再学習させることなく、ユーザが入力する情報I
Pを変更させることにより、要求や制約条件等の条件に応じた所望の出力を得ることができる。
【0028】
また、タスク実行システム10が所定のタスクを実行させる際に期待していない動作が発生した場合に、ユーザPが入力する情報I
P(例えば入力パラメータ)を調整することで、実行されるタスクの挙動を調整することができる。また、問題が起きたときに、ユーザPに対して提示される情報O
Pを用いることで、原因の特定が容易になることがある。
【0029】
なお、入力側外部システム20から情報I
Sが入力されるたびに、ユーザPが情報I
Pを入力しなければならないというものではない。情報I
Sをユーザが入力する代わりに、実行されるタスクやタスクの対象となる対象物に応じて予め設定された値が適用されるようにしてもよい。この場合、条件が変化したり、特殊な現場に適用するときなどに、ユーザは状況に応じて、条件をタスク実行システム10に入力すればよい。このとき、予め設定される値は、後述するように、学習器70の学習に用いられる訓練データに基づいて決定してよい。すなわち、訓練データには、学習モジュール16を使用して所定のタスクを実行させるときに、ユーザPが入力し得る条件と同形式のデータが含まれる。したがって、訓練データに含まれる、タスク実行時にユーザPが入力する条件と同形式のデータに基づいて、値を設定することができる。
【0030】
図2は、本実施形態に係るタスク実行システム10の機能構成の一例を示すブロック図である。
図3は、本実施形態に係るタスク実行システム10のハードウェア構成の一例を示す図である。
【0031】
図2に示すとおり、タスク実行システム10は、第1入力部12と、第2入力部14と、学習モジュール16と出力部18とを備える。また、
図3に示すとおり、タスク実行システム10は、
図2に示す機能を実現するために、演算装置61、記憶装置62、外部インタフェース(外部I/F)63、入力装置64及び出力装置65を備えている。
【0032】
演算装置61は、ハードウェアプロセッサであるCPU(Central Processing Unit)611、RAM(Random Access Memory)612、ROM(Read Only Memory)613等を含み、情報処理に応じて各構成要素の制御を行う。記憶装置62は、例えば、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置であり、
図2に示す学習モジュールに含まれる、学習済みモデルのパラメータや、学習済みモデルによる所定の処理を実行するためのプログラム等を記憶する。また、記憶装置62は、入力側外部システム20(例えばセンサ30)から入力される情報I
Sと、ユーザから入力される情報I
Pを記憶する。また、記憶装置62は、タスクを実行させるためのプログラムを記憶する。例えば、タスク実行システム10が、ロボットハンドを用いた把持システムを制御する事例では、ロボットハンドの経路演算プログラムやユーザから入力された姿勢に関する条件の初期値などが記憶装置62に記憶される。
【0033】
外部インタフェース63は、入力側外部システム20又は出力側外部システム50と接続するためのインタフェースであり、接続する入力側外部システム20および出力側外部システム50に応じて適宜構成される。外部インタフェース63は、ネットワークを介して他のコンピュータと接続するための通信インタフェースであってもよい。
図2に示す第1入力部12、第2入力部14及び出力部18は、ハードウェアとしての外部インタフェース63を含む。本実施形態において、タスク実行システム10は、外部インタフェース63を介して、入力側外部システム20及び出力側外部システム50に接続される。タスク実行システム10は、学習済みモデルに基づく演算処理を実行するためのプログラムを補助記憶装置から読出してRAM612に展開し、ハードウェアプロセッサにより解釈、実行する。
【0034】
なお、タスク実行システム10は、さらに、例えば、マウス、キーボード等の入力を行うための入力装置64、および、例えば、ディスプレイ、スピーカ等の出力を行うための出力装置65を備えていてよい。
【0035】
また、タスク実行システム10は、さらに、例えば、CDドライブ、DVDドライブ等の、記憶媒体に記憶されたプログラムを読み込むためのドライブ装置66を備えていてよい。
【0036】
図2に戻り、第1入力部12と第2入力部14は、タスク実行システム10に対して情報を入力するためのインタフェースとしての機能を有する。第1入力部12は、センサ30や外部機器40など、人以外の外部システム20から入力される情報I
Sを受け付ける機能を有する。他方、第2入力部14は、人から入力される情報、すなわちタスク実行システム10のユーザから入力される情報I
Pを受け付ける機能を有する。
【0037】
第2入力部14は、ユーザから受け付けた情報I
Pを、第1入力部12、学習モジュール16、出力部18の少なくともいずれかに渡す。このとき、ユーザから受け付けた情報の一部又は全部をそのまま各部に渡してもよいし、ユーザから受け付けた情報に基づいて生成ないし変換された情報を各部に渡してもよい。
【0038】
また、第2入力部14はユーザから受け付けた情報I
Pを記憶するメモリを備えてもよい。これによれば、メモリに記憶された情報を各部に渡すことにより、ユーザPが情報を毎回入力する手間を省くことができる。このとき、情報I
Pを記憶するメモリは、情報I
Pに加えて、第1入力部12に入力される情報I
Sとの対応関係を保持していることが好ましい。これによれば、入力側外部システム20から取得される情報I
Sの内容に応じて、適切な情報I
Pを選択することができる。なお、メモリは、第2入力部14の内部に位置していてもよい。すなわち、タスク実行システム10がメモリを備えていればよい。
【0039】
第1入力部12は、入力側外部システム20から受け付けた情報に基づいて、学習モジュール16に入力される情報を生成する。第2入力部14から第1入力部12に情報が渡されたとき、すなわち、ユーザからの入力に基づく情報を第1入力部が取得したときは、当該ユーザからの入力に基づく情報も考慮して、学習モジュール16に入力される情報が生成される。このとき、第1入力部12は、入力側外部システム20や第2入力部14から受け付けた情報の一部又は全部をそのまま学習モジュール16に渡してもよいし、入力側外部システム20や第2入力部14から受け付けた情報に基づいて生成ないし変換された情報を学習モジュール16に渡してもよい。
【0040】
第1入力部12は、状態認識部121と情報生成部122を備えてもよい。状態認識部121および情報生成部122は、タスク実行システム10が有する演算装置が、記憶装置に記憶された状態認識プログラムに基づいた情報処理を実行することにより実現される。
【0041】
状態認識部121は、センサ30や外部機器40から取得された観測情報をもとに、センサ30が観測する対象物の位置および/または姿勢の状態や外部機器40の内部状態等を認識し、認識された状態を認識結果として学習モジュール16に対して出力する。
【0042】
情報生成部122は、センサ30、外部機器40、第2入力部14から取得された情報をもとに、新たな情報を生成したり、データの形式を変換したりする。なお、本明細書では、情報の生成ないし変換を、単に情報の生成ということもある。
【0043】
なお、状態認識部121及び情報生成部122は、学習済みモデルを有していてもよい。すなわち、入力側外部システム20から取得された情報に基づく状態の認識や、入力側外部システム20から取得された情報の変換を、所定の機械学習に基づき生成された学習済モデルにより行ってよい。このとき、状態認識部121及び情報生成部122は、学習モジュール16により実行される所定のタスクを実現するためのサブ学習モジュールとして機能する。
【0044】
学習モジュール16は、機械学習によって学習する能力を備えた専用若しくは汎用のハードウェア又はソフトウェアの一単位、ないしこれらを任意に組み合わせた一単位を含む。また、学習モジュール16は、学習済みモデルやその複製物または蒸留物を含む。ここで、学習済みモデルの複製物は、モデルの内部構造を複製したもののみならず、学習が完了した学習済みの学習モジュール又は当該学習済みの学習モジュールの複製物に対して追加学習を行ったものを含む。蒸留物とは、いわゆる蒸留によって得られる学習済みモデルを指す。なお、蒸留とは、学習済みモデルの機能を保つように、学習済みモデルと構造が異なる他の学習モデルを学習させ、学習済みの当該他の学習済みモデルを得ることを含む。ここで、当該他の学習済みモデル(蒸留物)は、その基となった学習済みモデルよりも内部構造が単純であり、よりディプロイに適したものであることが好ましい。なお、学習済みモデルの複製物や蒸留物は、必ずしも学習能力を備えることを要しない。学習モジュール16は、パラメータに従って入力を出力に変換する関数の機能を有する所定の構造を含む。そのような構造の一例は、ニューラルネットワークであるので、ここでは、学習モジュール16がニューラルネットワークによって構成される場合を想定して説明する。しかしながら、学習モジュール16は、ニューラルネットワークに限定されるものではない。
【0045】
本実施形態において、学習モジュール16は、第1入力部12と第2入力部から情報が入力され得る。これにより、学習モジュール16において、センサ30や外部機器40などの入力側外部システム20から取得した情報とユーザ(人)から取得した情報とに基づく所定の演算が実行されて、演算結果が値やパターンなどの形式で出力される。出力された情報は出力部18に渡される。
【0046】
学習モジュールが多階層のニューラルネットワークによって構成されるとき、第1入力部12から入力される情報、すなわち入力側外部システム20から取得された情報は、ニューラルネットワークの入力層に入力される。これに対し、第2入力部14から入力される情報、すなわちユーザから取得された情報は、ニューラルネットワークの入力層に入力されてもよいが、これに限られず、入力層以外の層、すなわち中間層や出力層に入力されてもよい。
【0047】
学習モジュール16としては、機械学習によって、所定のタスクを実行する、または、外部システム50に対して所定のタスクを実行させることができるように訓練された学習済みモデルを適用することができる。この学習済みモデルは、学習器70において、センサ30や外部機器40などの入力側外部システム20から取得した情報とユーザ(人)から取得した情報とを含む訓練データを用いた機械学習によって獲得することができる。また、学習モジュール16として、学習済みモデルの複製物や蒸留物など、学習済みモデルと入出力関係が同等のモデルを適用してもよい。なお、本明細書では、これらをまとめて、単に学習済みモデルということがある。さらに、学習モジュール16は、複数の学習済みモデルを有するものであってもよい。
【0048】
出力部18は、タスク実行システム10から情報を出力するためのインタフェースである。出力部18は、学習モジュール16から取得した情報に基づいて、タスク実行システム10から出力される情報O
SとO
Pを生成する。なお、出力部18は、情報O
Sか情報O
Pのいずれかを生成してもよい。第2入力部14から出力部18に情報が渡されたとき、すなわち、ユーザからの入力に基づく情報を出力部18が取得したときは、当該ユーザからの入力に基づく情報も考慮して、タスク実行システム10から出力される情報O
SとO
Pが生成される。このとき、出力部18は、学習モジュール16や第2入力部14から受け付けた情報の一部又は全部をそのまま出力してもよいし、学習モジュール16や第2入力部14から受け付けた情報に基づいて生成ないし変換された情報を出力してもよい。
【0049】
出力部18から出力された情報、すなわちタスク実行システム10から出力された情報O
Sは、出力側外部システム50に入力され、出力側外部システム50において所定のタスクが実行される。また、出力部18から出力される情報のうち一部の情報O
Pは、ユーザPに対して提示される情報としてもよい。ここで、学習モジュール16が多階層のニューラルネットワークにより構成される場合には、当該ニューラルネットワークは、中間層と出力層とのいずれかに、ユーザPに対して提示する情報を出力するノードを有していることが好ましい。
【0050】
学習器70は、学習モジュール16として用いられる学習済みモデルを獲得する機能を有する学習装置である。学習器70は、タスク実行システム10を構成する学習モジュール16を生成し得るものであるが、タスク実行システム10を直接構成するものではない。学習器70において、入力側外部システム20から入力される情報とユーザから入力される情報とを含む訓練データを用いて、所定のタスクを実行させるための機械学習が行われる。機械学習においては、ユーザが入力する条件に対応したデータである入力変数と、当該入力変数の値に対する出力の望ましさを示す出力値と、を含む訓練データが用いられる。例えば、入力変数に対する望ましい出力値を示す正解データを含む訓練データを学習モジュールに対して直接与えて学習を行わせる手法を採用することができる。また、学習モジュールに対して出力の望ましさを示す評価関数を与えて学習を行わせる手法を用いてもよい。例えば、評価関数として、入出力の組み合わせに対する評価値を決定することのできる関数が用いられる。学習器70によって獲得された学習済みモデル又はそのパラメータ(ニューラルネットワークの場合は結合の重みなど)に基づいて、学習モジュール16を生成することができる。
【0051】
また、
図2に示すように、タスク実行システム10は、通信ネットワークを介して、一又は複数のセンサ30や一又は複数の外部機器40などの入力側外部システム20に接続される。なお、個々のセンサ30や外部機器40がそれぞれ1つの入力側外部システム20とみなしてもよいし、任意のセンサ30や外部機器40を組み合わせたものを1つの入力側外部システム20とみなしてもよい。後者の一例はロボットである。さらに、タスク実行システム10は、通信ネットワークを介して、出力側外部システム50に接続される。そして、入力側外部システム20とユーザからタスク実行システム10に情報が入力され、タスク実行システム10から出力側外部システム50に情報が出力されることによって、所定のタスクが実行される。なお、タスク実行システム10を、所定のタスクを実行するためのサブシステムとして捉え、当該サブシステムと、当該サブシステムが出力する情報を使用する出力側外部システム50とを一体のシステムとして構成してもよい。
【0052】
センサ30は、物理量を検出する物理量センサ、化学量を検出する化学量センサ、情報を検出する情報センサのいずれであってもよいが、これらに限られるものではなく、任意のセンサを含み得る。物理量センサは、例えば光を検出して画像データや動画データを出力するカメラや、人の心拍を検出して心拍データを出力する心拍センサ、人の血圧を検出して血圧データを出力する血圧センサ及び人の体温を検出して体温データを出力する体温センサ等のバイタルセンサを含み、その他任意の物理量を検出して電気的信号を出力するセンサを含む。化学量センサは、例えばガスセンサ、湿度センサ、イオンセンサを含み、その他任意の化学量を検出して電気信号を出力するセンサを含む。情報センサは、例えば統計データから特定のパターンを検出するセンサを含み、その他任意の情報を検出するセンサを含む。
【0053】
外部機器40は、コンピュータシステム、ロボット、その他各種デバイスによって構成される。なお、外部機器40と、センサ30とは、一体に構成されていてもよい。例えば、外部機器40としての産業用ロボットは、複数のモータ(軸)と、当該モータ(軸)によって駆動する複数のリンク(構造体)とを有している。モータと、このモータによって駆動されるリンクとが、順次接続され、多関節の産業用ロボットが構成される。ここで、モータは、その回転角度を検出するセンサ30としてのエンコーダと一体に構成されていてよい。外部機器40は、動作計画部42と動作生成部44を含んでもよい。動作計画部42は、外部機器40が制御等する対象物又は外部機器40自体の動作を計画し、本来の目標となる動作軌跡を作成する機能を有する。動作生成部44は、動作の候補を生成したり、障害物への衝突等を回避するための回避行動の候補を生成する機能を有する。ここで、動作の候補、及び、回避行動の候補は、外部機器40の移動方向を示す所定の数値および/または数値ベクトルにより表現される。なお、動作計画部42と動作生成部44は、学習済みモデルを有していてもよい。すなわち、動作候補の生成、回避行動の候補の生成を、所定の機械学習に基づき生成された学習済モデルにより行ってよい。また、動作計画部42と動作生成部44とは、タスク実行システム10に設けられてもよい。すなわち、動作計画部42と動作生成部44とは、タスク実行システム10に設けられ、センサ30および/または外部機器40から取得される情報I
Pに基づいて、動作候補の生成、回避行動の候補の生成を行い、生成された候補を学習モジュール16に入力する。このとき、動作計画部42と動作生成部44とは、学習モジュール16により実行される所定のタスクを実現するためのサブ学習モジュールとして機能する。
【0054】
なお、
図2においては、入力側外部システム20と出力側外部システム50を別の構成として図示しているが、入力側外部システム20と出力側外部システム50は同一の構成であってもよい。例えば、タスク実行システム10によってロボットハンドを備えたロボットの制御をする場合、当該ロボットハンドは入力側外部システム20であり、かつ、出力側外部システム50でもあり得る。例えば、カメラ付きのロボットであれば、カメラやロボットの関節に設けられたエンコーダがセンサ30に相当し得る。また、エンコーダの値がロボットを介して出力される場合は、ロボットが外部機器40に相当し得る。さらに、タスク実行システム10から出力された動作指令に基づいてロボットが動作する場合、ロボットは出力側外部システム50に相当し得る。なお、本実施形態において、センサから出力されたセンシングデータは、センサ30自身からタスク実行システム10に直接的に入力されてよく、センサ30から外部機器40を介して、タスク実行システム10に間接的に入力されてよい。したがって、本明細書では、センサ30と外部機器40を特に区別せずに、入力側外部システム20ということがある。
【0055】
なお、タスク実行システム10の構成は図示のものに限定されず、例えば、各ブロックのうち任意の部分を物理的ないし論理的に一体のものとして構成してもよいし、各ブロックを物理的ないし論理的に2以上の要素に分けて構成してもよい。
【0056】
図4は、本実施形態に係るタスク実行システム10における処理フローの一例を示す図である。まず第1入力部12が、センサ30や外部機器40などの入力側外部システム20から情報を取得する(ステップS31)。第1入力部12は、第2入力部14から情報を取得することもある。第1入力部12は、取得した情報を、必要に応じて学習モジュールの処理に適した形式にデータ変換等した後に、学習モジュール16に出力する。
【0057】
学習モジュール16は、第1入力部12から入力された情報に基づいて、学習済みモデルを用いた演算処理を行う(ステップS32)。学習モジュール16は、第2入力部14から情報が入力されることもあり、その場合は、第1入力部12から入力された情報と第2入力部14から入力された情報に基づいて演算処理が行われ、演算結果は出力部18に渡される。
【0058】
出力部18は、学習モジュール16から入力された情報に基づいて、出力側外部システム50に所定のタスクを実行させるための情報を生成し、出力側外部システム50に出力する(S33)。出力部18は、第2入力部14から情報が入力されることもあり、その場合は、学習モジュール16から入力された情報と第2入力部14から入力された情報に基づいて、出力側外部システム50に所定のタスクを実行させるための情報を生成する。例えば、出力側外部システム50がロボット装置であり、所定のタスクが、ロボットに実行させる所定の動作である場合には、出力部18は、学習モジュール16から複数の動作候補を取得し、第2入力部14から入力された情報に基づいて、複数の動作候補から所定の動作候補を選択して、出力側外部システム50に対して情報を出力することができる。
【0059】
ステップS31〜S33の処理と並行して、所定のタスクを実行するために必要な条件であって、ユーザPが指定したタスクの要件や制約条件等の条件を、第2入力部14が取得する(ステップS34)。第2入力部14は、取得した情報を、第1入力部12、学習モジュール16又は出力部18の少なくともいずれかに渡す。第1入力部12、学習モジュール16又は出力部18のいずれに情報が渡されるかは、出力側外部システム50に実行させるタスク等に応じて設定されることが好ましいが、この限りではない。
【0060】
以下、タスク実行システム10を、画像検査装置、把持システム、障害物回避システム、人物検索システム及び逆運動学モデルに適用した実施例について説明する。
【0061】
<実施例1:画像検査装置>
図5は、タスク実行システム10を画像検査装置に適用した場合の機能構成の一例を示すブロック図である。本実施例における画像検査装置100は、所定のタスクとしてカメラで撮像される画像を用いて製品等の対象物の良不良の判定を行う装置であり、タスク実行システム110と、カメラ130と、表示器150とを含むシステムを、ここでは画像検査装置と称するものとする。タスク実行システム110は、第1入力部112と、第2入力部114と、判定部116と、出力部118とを備える。なお、本実施例におけるタスク実行システム110、第1入力部112、第2入力部114、判定部116、出力部118、カメラ130及び表示器150は、それぞれ
図2におけるタスク実行システム10、第1入力部12、第2入力部14、学習モジュール16、出力部18、センサ30及び出力側外部システム50に相当する構成である。すなわち、画像検査装置100の各構成に付与された符号の下2ケタは、
図2において当該構成に対応する構成の符号に等しい。他の実施例についても同様である。
【0062】
本実施例において、画像検査装置100は、カメラ130で撮影した検査対象物の画像が、第1入力部112を介して判定部116に入力される。これに加えて、ユーザPの入力した条件としての検査基準が、第2入力部114を介して判定部116に入力される。
【0063】
判定部116は、学習済みモデル(例えば、学習済みのニューラルネットワーク)により構成されている。判定部116は、製品の外観が写った画像と検査基準とが入力されると、ユーザが指定した検査基準を考慮して、製品の検査結果を出力する。例えば、検査結果は「良」又は「不良」のいずれかである。判定部116が出力した検査結果は、出力部118を介して表示器150に検査結果が表示される。また、画像検査装置100は、検査結果に加えて、ユーザが指定した検査基準に基づく情報を表示器150に表示してもよい。検査基準としては、例えば、検査を行う対象物に関する基準、検査を行う環境に関する基準、検査の判定に関する基準、を入力することができる。検査を行う対象物の基準としては、例えば、対象物の材質、大きさ、色、反射度、透明度等の少なくともいずれかを入力することができる。また、検査が行われる環境の基準としては、例えば、環境の明るさの度合いを入力することができる。また、検査の判定基準として、出力すべき良不良の厳しさを示す基準を入力することができる。検査基準の例はこれらに限られず、また、複数の検査基準を組合せて使用してよい。
【0064】
図6は、本実施例において、判定部116を構成する学習済みモデルを機械学習によって獲得する際に与えられる訓練データの一例を示す図である。同図に示すように、訓練データは、画像と判定基準ごとの検査結果の正解データとが対応付けられている。
図6に示す例では、入力される各画像(画像1,画像2,・・・)は、検査対象物の画像である。ここでは、判定基準が3段階存在する。画像1は、基準1〜3のいずれでも検査結果を「良」と判定すべき画像である。画像2は、基準1と2では検査結果を「良」と判定し、基準3では「不良」と判定すべき画像である。画像3は、基準1では検査結果を「良」と判定し、基準2と3では「不良」と判定すべき画像である。画像4と5は、基準1〜3のいずれでも検査結果を「不要」と判定すべき画像である。
【0065】
学習器に対し、
図6に示すような、画像と、判定基準ごとの検査結果の正解データが対応付けられた訓練データを複数与えて教師あり学習を行うことにより、画像検査装置100に用いられる学習済みモデルを獲得することができる。
【0066】
図6に示す訓練データによる学習の結果得られる学習済みモデルは、ユーザが基準1〜3のいずれかの判定基準を選択すると、選択された判定基準に従った検査結果を出力することができる。
図6の例では、基準1,2,3はそれぞれ甘い基準、標準的な基準、厳しい基準であるといえる。
【0067】
本実施例では、ユーザPが入力する基準が3段階の場合について説明したが、2段階あるいは4段階以上の基準を設けてもよいことはいうまでもない。また、基準1,2,3といった離散的な数値ではなく、−1から1までのような範囲をもった連続値によってユーザPが基準を指定できるようにしてもよい。さらに、数値ではなく、予め用意されたラベル(甘い、標準、厳しい等)からユーザPが基準を選択できるようにしてもよい。
【0068】
このように、所望の検査基準の形式を含む訓練データを用いて機械学習を行うことで検査基準に応じて判断結果が変動する学習済みモデルを獲得し、獲得した学習済みモデルを有する学習モジュール16と、学習モジュール16に対してユーザPから任意に入力される検査基準と、を使用することで、用いて、検査実行時にユーザが検査の内容に応じて、その検査基準を柔軟に指定できる画像検査装置を実現することができる。
【0069】
<実施例2−1:把持システム(1)>
図7は、タスク実行システム10を把持システムに適用した場合の機能構成の一例を示すブロック図である。本実施例における把持システム200は、ロボットにより物体を把持させるシステムであり、タスク実行システム210と、カメラやエンコーダなどのセンサ230と、ロボット240,250とを備える。
図7ではロボット240とロボット250の符号を分けているが、実際には同じロボットを指しているものとする。また、センサ230の一部又は全部はロボット240に搭載されていてもよい。
【0070】
タスク実行システム210は、第1入力部212と、第2入力部214と、予測器216と、動作決定部218とを備える。それぞれ、
図2における、第1入力部12、第2入力部14、学習モジュール16及び出力部18に相当する構成である。
【0071】
本実施例において、把持システム200は、カメラ230で撮影したロボットのハンド及び把持対象物を含む画像と、ロボットの関節に搭載されたエンコーダ230の出力値から得られるロボット240の現在の姿勢とが、第1入力部212を介して予測器216に入力されるように構成されている。また、タスク実行システム210は、ロボット240の動作生成部244が作成した複数の動作候補を取得し、取得された複数の動作候補が第1入力部212を介して予測器216に入力されるように構成されている。これらに加えて、ユーザPの入力した条件が、第2入力部214を介して予測器216に入力される。なお、動作生成部244は、タスク実行システム210に設けられていてもよく、ロボット230及び把持システム210とは別体に設けられていてもよい。また、動作生成部244は、学習済みモデルを有していてもよい。すなわち、動作候補の生成を、所定の機械学習に基づき生成された学習済みモデルを用いて行ってよい。このとき、動作生成部244は、学習モジュール16により実行される所定のタスクを実現するためのサブ学習モジュールとして機能する。
【0072】
ユーザPが入力する条件としては、例えば、作業時の制約として把持対象物のうち「持たせたい場所」(把持推奨領域)や「持ってはならない場所」(把持禁止領域)などの制約条件を指定することが想定される。
【0073】
予測器216は、ロボット240から取得された複数の動作候補を示す移動方向ベクトル、センサとしてのカメラ230から入力された画像や、センサとしてのエンコーダ230から入力された値に基いて算出されるロボットの現在の位置および/または姿勢と、ユーザが入力した制約条件と、をもとに、それぞれの移動方向ベクトルに従って移動した場合の把持達成率と、ユーザPが入力する制約条件に対応した制約充足度を予測する。動作決定部218は、予測器から出力された把持成功率と制約充足度に基づいて各動作候補の評価値を算出し、評価値をもとに動作候補の中から次の動作を決定する。そして、決定された動作を実行させるための動作指令を生成して、ロボット250に出力する。また、図示省略するが、予測器216によって予測された把持達成率と制約充足度に基づく情報をディスプレイ等に出力して、ユーザPに提示してもよい。
【0074】
図8は、本実施例において、予測器216に入力される複数の動作候補(移動方向ベクトル)と、予測器216から出力される各動作候補の把持成功率及び制約充足度の一例を示す図である。同図では、(0,0,0)、(0,1,0)、(0,−1,0)、・・・などの移動方向ベクトルが次の動作の候補となっている。移動方向ベクトル(x,y,z)において、xはハンドの左右方向の移動量、yはハンドの上下方向の移動量、zはハンドの回転量を表している。例えば(0,0,0)は、次の動作として、ハンドを動かさないことを表し、(0,1,0)は上方向に1単位ハンドを動かすことをあらわしている。
【0075】
把持成功率は、次にその動作をしたときに最終的に把持に成功する確率を表している。制約充足度は、次にその動作をしたときに、ユーザが指定した制約条件を満たすか否かを表している。制約充足度が「1」の場合は制約条件を満たすが、「0」の場合は制約条件を満たさないことを表す。例えば、把持禁止領域をユーザが指定したとき、動作候補の動作を行うことで対象物の把持禁止領域をハンドが触れてしまう場合、当該動作候補の制約充足度を「0」と判定する。
【0076】
図8に示す例では、予測器216が、動作候補(0,0,0)に対して把持成功率「0.4」、制約充足度「1」を出力し、動作候補(0,1,0)に対して把持成功率「0.7」、制約充足度「0」を出力することを表している。つまり、ハンドを動かさないとき、把持成功率は0.4しかないが、禁止領域には入らないこと、他方、ハンドを上方向に1単位動かすと把持成功率が0.7になるが、把持が成功した場合には、禁止領域を把持してしまうため制約充足度が0になることを表している。
【0077】
なお、予測器216を構成する学習済みモデルは、ハンドと作業対象が写った画像と、ロボットの関節のエンコーダ値から得られるロボットの現在姿勢と、移動方向ベクトルとを入力すると、当該移動方向ベクトルに従ってハンドを移動させたときの把持成功率と制約充足度を出力するように機械学習されたものである。このような学習済みモデルは、例えば、ハンドと作業対象が写った画像と、ロボットの関節のエンコーダ値から得られるロボットの現在姿勢と、動作候補となる移動方向ベクトルと、当該移動方向ベクトルに従ってハンドを移動させたときの把持成功率と制約充足度とが対応付けられた訓練データを用いた機械学習によって獲得することができる。
【0078】
動作決定部218は、予測器216から出力された動作候補ごとの把持成功率と制約充足度に基づいて、評価値を算出する。
図8では、評価値=把持成功率×制約充足度により算出しているが、評価値の算出手法はこれに限られるものではない。動作決定部218は、動作候補ごとの評価値にもとに、所定の動作決定ルールに従って、次にどの動作を行うかを決定する。
【0079】
図9は、本実施例における動作決定ルールの一例である。
図8の動作候補に
図9の動作決定ルールを当てはめた場合、移動しない場合(0,0,0)の評価値が0.4<0.9であるから条件1が不成立であり、動作候補(0,0,0.5)の評価値が0.6>0.5であるから条件2も不成立であるから、条件3が成立し、「成功率が最大となる方向に移動」するという動作が選択される。したがって、次の動作として、移動方向ベクトル(0,0,0.5)が選択される。こうして、動作決定部218はハンドを90度回転させるための動作指令をロボット250に出力する。
【0080】
なお、ここでは、予測器216が把持成功率と制約充足度を出力し、動作決定部218において把持成功率と制約充足度に基づいて評価値を算出し、評価値に基づいて動作を決定する実施例について説明したが、予測器216がユーザの制約条件を加味した評価値を出力し、動作決定部218は予測器216から受け取った評価値に基づいて動作を決定するものとしてもよい。この場合、予測器216を構成する学習済みモデルは、ハンドと作業対象が写った画像と、ロボットの関節のエンコーダ値から得られるロボットの現在姿勢と、移動方向ベクトルとを入力すると、当該移動方向ベクトルに従ってハンドを移動させたときの評価値を出力するように機械学習されたものを用いればよい。なお、本実施例においては、ユーザPが入力する条件として、把持推奨領域および/または把持禁止領域を入力することとしたが、これに加えて、動作決定を行うための評価値を入力するようにしてもよい。このとき、ユーザPが入力した評価値は、第2入力部214を介して動作決定部(出力部)218に入力される。これによれば、物体を把持するためのグリッパの開閉動作を行うか否かの判断の基準を、ユーザPが任意に設定できる。このとき、把持システム200は、設定された基準や判断された結果に基づく情報をディスプレイ等に出力して、ユーザPに提示してもよい。
【0081】
<実施例2−2:把持システム(2)>
図10は、把持システム200の他の実施例を示す図である。実施例2−1では、把持成功率と制約充足度を1つの予測器216が出力するように構成したが、
図10に示すように、把持成功率と制約充足度を出力する予測器を分ける構成とすることができる。
【0082】
この実施例では、予測器216aは、ロボット240から取得された複数の動作候補に対して、カメラ230から入力された画像や、エンコーダ230から入力された値に基づいて算出されるロボットの現在の位置および/または姿勢をもとに、現在の状態でそれぞれの方向に移動した場合の把持達成率を予測する。また、予測器216bは、ロボット240から取得された複数の動作候補に対して、カメラ230から入力された画像や、エンコーダ230から入力された値に基づいて算出されるロボットの現在の位置および/または姿勢と、ユーザが入力した制約条件と、をもとに、現在の状態からそれぞれの方向に移動した場合の制約充足度を予測する。
【0083】
図11は、予測器216aから出力される把持成功率と、予測器216bから出力される制約充足度の一例を示す図である。
図11(A)は、予測器216aに入力される複数の移動方向ベクトル(動作候補)と、予測器216aから出力される各動作候補の把持成功率の一例を示す図である。
図11(B)は、予測器216bに入力される複数の移動方向ベクトル(動作候補)と、予測器216bから出力される各動作候補の制約充足度の一例を示す図である。
【0084】
図10に戻り、動作決定部218は、予測器216aから動作候補ごとの把持成功率を取得し、予測器216bから動作候補ごとの制約充足度を取得し、これらを合わせて、動作候補ごとの評価値を算出する。他の処理は、
図6の実施例と同様であるので、説明を省略する。
【0085】
把持成功率と制約充足度を予測する予測器を2つに分けることにより、把持成功率を予測するための学習済みモデルと、制約充足度を予測する学習済みモデルを、それぞれ分けて学習させることができるようになる。例えば、把持成功率を予測するための予測器216aは、従来からあるものを利用し、ユーザの入力した制約条件に基づく制約充足度を予測するための予測器216bについて、機械学習を行って学習済みモデルを獲得すればよい。このように、把持システム200を構成する予測器216を複数の予測器に分けて構成することにより、例えば種々の制約条件を追加しようとする場合に、予測器216をはじめから作り直す必要がなく、個々の制約条件に応じて個別に機械学習をすればよいため、機械学習を行うための訓練データを縮約できる。また、個々の制約条件に応じて獲得された学習済みモデルを追加すればよいため、予測器216を柔軟に構成することができるようになる。
【0086】
この把持システム200のように、タスク実行システム10を所定のシステムに適用したときに、当該システムが複数の予測器216を有するとき、複数の予測器216は、少なくとも以下の2つの学習モジュールを含むことが好ましい。すなわち、外部システム20から取得されるセンシングデータなどの情報を入力データとして情報処理を行う第1の学習モジュールと、外部システム20から取得される情報とユーザPが入力する条件を学習モジュールでの演算に適したデータ形式に変換した情報とを入力データとして情報処理を行う第2の学習モジュールの2つである。
【0087】
本実施例において、第1の学習モジュールは、センサ230から取得されるセンシングデータを入力データとし、把持成功率を出力する学習モジュール216aである。また、第2の学習モジュールは、センサ230から取得されるセンシングデータと、ユーザPが入力する条件としての把持推奨領域および/または把持禁止領域を示す情報と、を入力データとし、条件の充足度を出力する学習モジュール216bである。このように、複数の学習モジュールを含む構成によれば、ロボットにより対象物を把持するタスクを実行するために必須な学習モジュール216aと、タスクを実行するときの制約条件を考慮した制約充足度を示す情報を出力する学習モジュール216bとを別々に構成することができるので、タスクに課す制約条件に応じて、適切な学習モジュールの使い分けを容易にすることができる。
【0088】
<実施例2−3:把持システム(3)>
図12は、把持システム200の他の実施例を示す図である。実施例2−1では、ユーザPが入力した条件が、第2入力部214を介して予測部216に入力される構成について説明したが、
図12に示すように、ユーザPが入力した条件が、第1入力部212に入力される構成とすることができる。
【0089】
この実施例において、第1入力部212は、ロボット240の動作生成部244が作成した複数の動作候補(当初の動作候補)を受け付ける。他方、第1入力部212は、ユーザPが入力した制約条件を、第2入力部214を介して受け付ける。第1入力部212の情報生成部2122は、ロボット240から取得した当初の動作候補のそれぞれが、ユーザPが入力した制約条件を満たすか否かを判別し、制約条件を満たす動作候補を予測部216に渡す。予測部216は、入力された複数の動作候補のそれぞれについて把持成功率を予測し、動作決定部318において、把持成功率に基づいて次の動作を決定する。これにより、ユーザPが入力した制約条件を満たさない動作候補については予測部216に入力する前に候補から外すことができるため、予測部216における演算時間を短縮できる。
【0090】
図13は、実施例2−1乃至2−3に記載の把持システム200において、ユーザPが制約条件を指定する際の一例を示す図である。例えば、把持対象となる物体のうち、触れてはいけない領域(把持禁止領域)や、把持させたい領域(把持推奨領域)が存在するとき、ユーザPは、コンピュータの表示画面等に表示された把持対象物の3Dモデル上で、制約条件を指定することができる。ユーザが指定した制約条件を考慮した学習済みモデルを獲得する際、ユーザが入力した制約条件を、学習モデルに入力可能な、すなわち、学習モデルで行われる演算に適した形式に変換する必要がある。
図13に示す例では、ユーザが指定した制約条件を特徴量ベクトルに変換することによって、ニューラルネットワークに入力可能な形式に変換させている。具体的には、第2入力部214に接続された所定の表示装置に、把持対象の2次元又は3次元形状を表示する。このとき把持対象物の形状を特定の大きさのボックス(ボクセル)で離散化したデータを保持しておく。第2入力部214に接続された所定の隆の句装置を介してユーザが指定した把持推奨領域および/または把持禁止領域に応じて、把持対象物を構成するボクセルに対し、把持可能である旨を示す数値ベクトルと、把持可能である旨を示す数値ベクトルとを対応付ける。これにより、生成された把持対象物をボクセルで離散化した数値ベクトルと、各ボクセルに対応づけられた把持可能または把持不可能である旨を示す数値ベクトルデータ、とに基づいて把持可能なセルと把持不可能なセルを識別可能であって、ニューラルネットワークに入力可能な形式のベクトルを生成すればよい。
【0091】
<実施例3:障害物回避システム(多関節ロボット)>
図14は、タスク実行システム10を多関節ロボットにおける障害物回避システムに適用した場合の機能構成の一例を示すブロック図である。本実施例における障害物回避システム300は、ロボットが動的な環境において障害物を回避しつつ、作業を自律的に実行するシステムである。ユーザPが入力する作業に対する要求に関する条件として、障害物を回避する実現性と作業効率との優先度合いを使用することができる。すなわち、タスク実行システム10は、ユーザPが、条件として、障害物を回避する実現性としての障害物を回避する確率と作業効率としての作業速度とのバランス、を指定できるように構成されている。また、ユーザPが入力する条件として、例えば、障害物を回避する実現性、作業速度、に加え、「移動に係る消費エネルギー」などを含む、複数の指標に対する重要度や優先度を指定することができる。
【0092】
障害物回避システム300は、タスク実行システム310と、センサ330と、ロボット340,350とを備える。センサ330の一部または全部はロボット340に搭載されてもよい。
図14ではロボット340とロボット350の符号を分けているが、実際には同じロボットを指しているものとする。
【0093】
タスク実行システム310は、第1入力部312と、第2入力部314と、予測部316と、動作決定部318とを備える。それぞれ、
図2における、第1入力部12、第2入力部14、学習モジュール16及び出力部18に相当する構成である。
【0094】
本実施例において、障害物回避システム300は、センサ330がセンシングしたロボット周辺に存在する障害物に関する情報としての点群が、第1入力部312を介して予測部316に入力されるように構成されている。なお、障害物に関する情報としては、センサ330によりセンシングされた障害物の形状を、多面体や点群により近似して数値ベクトルとして表現されていることが好ましい。また、タスク実行システム310は、ロボット340の動作計画部342が作成した、障害物の存在を加味しない動作経路である本来の目標軌跡を取得し、第1入力部312を介して予測部316に入力する。さらに、ロボット340の動作生成部344が生成した障害物を回避するための回避行動の候補を取得し、第1入力部312を介して予測部316に入力する。これらに加えて、ユーザPの入力した条件である安全係数が、第2入力部314を介して予測部316に入力される。なお、動作生成部344は、障害物を回避するための回避行動の候補を送信する代わりに、ロボット340の現在の姿勢からいずれの方向に移動すべきかを示す動作候補を送信してもよい。
【0095】
予測部316は、複数の回避行動の候補のそれぞれについて、回避成功率と目標逸脱率を予測し、ユーザの指定した安全係数を考慮した評価値を出力する。動作決定部318は、評価値に基づいて回避行動を決定し、決定された回避行動を実現させるための動作指令をロボット350に出力する。ロボット350は、タスク実行システム310から受け取った動作指令に基づいて回避行動を実行する。加えて、障害物回避システム300は、ユーザの指定した安全係数に基づく情報をディスプレイ等に表示して、ユーザに提示してもよい。
【0096】
また、予測部316は、複数の回避行動の候補のそれぞれについて、回避成功率と目標逸脱率を予測して、動作決定部318に出力してもよい。このとき、ユーザが指定した安全係数は、第2入力部314から動作決定部318に入力される(
図14の破線矢印)。動作決定部318において、回避成功率と目標逸脱率をもとに、複数の回避行動の候補のそれぞれについて、ユーザの指定した安全係数を考慮した評価値を算出し、評価値に基づいて回避行動を決定してもよい。
【0097】
図15は、本実施例において、予測部316に入力される本来の目標軌跡の候補と、予測器316から出力される目標軌跡の候補ごとの回避成功率及び目標逸脱率の一例を示す図である。同図において、軸1、2、・・・、6は、6軸多関節ロボットの各関節を構成するモータの番号である。v1、v2、・・・、vnは、ロボットの動作候補(目標軌跡)の種別を示す記号である。各動作を表現する記号のうち、矢印はモータの回転方向を表し、φはモータが動かないこと表している。具体的には、「↑」はモータを正方向に回転させ、「↓」はモータを逆方向に回転させ、「φ」はモータを動かさない。また、モータの回転方向を矢印ではなく数値ベクトル(−1〜+1)で表現して、回転方向と合わせて回転量を連続的に表してもよい。また、数値ベクトルをモータの回転方向としてではなく、モータの加速度(角加速度)として表してもよい。
【0098】
回避成功率Pは、ロボットが動作vnを行った場合に、障害物を回避できる確率を示す。目標逸脱率Qは、ロボットが動作vnを行った場合に、障害物が無かった場合の通常経路(目標軌跡)にどれほど近いかを示す指標である。例えば、障害物がなかった場合の動作軌跡と完全一致している場合を1とし、始点と終点のみが一致しており中間軌跡が一切一致していない場合を0とした指標である。
【0099】
例えば、
図15において、動作候補v1は、軸1の関節を正方向に回転させ、残りの軸2〜6の関節は動かさないという動作を示しており、次の動作として動作候補v1が実行されたときの回避成功率と目標逸脱率は、それぞれ0.2と0.8であることを示している。すなわち、予測器316は現在の状態において、動作候補v1の回避成功率と目標逸脱率として、それぞれ0.2と0.8を出力する。
【0100】
本実施例において、ユーザPは、安全係数αを入力する。この安全係数によって、いずれの動作候補vnを選択するかが決定される。例えば、動作の評価値Kを、評価式:K=回避成功率×α(安全係数)+目標逸脱率×(1−α) によって算出する場合、ユーザが安全係数αを調整することによって、回避成功率と目標逸脱率のいずれを重視するかを調整することができる。
図15の例では、例えば、安全係数αを1とすれば、回避成功率の高い動作候補v2が選択され、安全係数αを0とすれば、目標逸脱率の高い動作候補v1が選択される。このように、本実施例では、人による入力を追加することで、安全性と効率のトレードオフをユーザがその場で指定することができるようなる。
【0101】
なお、予測部316は学習済みモデルによって構成される。学習器においては、回避行動の候補を実行した場合の回避成功率と、本来の目標軌跡(作業目標動作)からの逸脱率の比が、人による入力の値に近づくほど高い報酬が得られるような報酬関数を用いて訓練を行うことで、所望の出力を行う学習済みモデルを獲得することができる。
【0102】
<実施例4:障害物回避システム(マルチエージェント)>
図16は、タスク実行システム10をマルチエージェントにおける障害物回避システムに適用した場合の機能構成の一例を示すブロック図である。本実施例における障害物回避システム400は、複数の移動ロボット(エージェント)が、工場や倉庫などの共通の空間内でそれぞれの目的地に衝突せずに最短時間で到達する経路を決定するシステムであり、タスク実行システム410と、移動ロボット440,450とを備える。移動ロボット440には、カメラ430が搭載されている。
図16では移動ロボット440と移動ロボット450の符号を分けているが、実際には同じ移動ロボットを指しているものとする。
【0103】
タスク実行システム410は、第1入力部412と、第2入力部414と、予測部416と、動作決定部418とを備える。それぞれ、
図2における、第1入力部12、第2入力部14、学習モジュール16及び出力部18に相当する構成である。また、本実施例において、第1入力部412は、状態認識部4121を含む。これは
図2における、状態認識部121に相当する構成である。
【0104】
本実施例において、障害物回避システム400は、カメラ430が撮影した移動ロボット周辺の画像が、第1入力部412の状態認識部4121に入力される。状態認識部4121は、カメラ430から取得した画像に基づいて移動ロボット440の状態を認識し、状態ベクトルを予測部416に出力する。また、タスク実行システム410は、ロボット440の動作計画部442が作成した本来の目標軌跡(目標ベクトル)を取得し、第1入力部412を介して予測部416に入力する。さらに、ロボット440の動作生成部444が生成した他の移動ロボットとの衝突を回避するための回避行動の候補を取得し、第1入力部412を介して予測部416に入力する。
【0105】
図17は、本実施例におけるマルチエージェントシステムの概略図である。同図に示す例では全部で5台の移動ロボットがあり、それぞれの位置と速度を示す状態ベクトル(p,v)を有する。また、移動ロボットは目標妃を示す目標ベクトル{u
0}を有する。
【0106】
図16に戻り、予測部416は、第1入力部412から入力された目標ベクトル{u
0}と、状態ベクトル{p
0,v
0,p
1,v
1,p
2,v
2,p
3,v
3}と、複数の回避動作の候補{↑,↓,←,→,φ}に基づいて、複数の回避行動の候補のそれぞれについて評価値を算出し、動作決定部418に出力する。
【0107】
動作決定部418には、評価値に加えて、ユーザPの入力した安全係数が、第2入力部414を介して入力される。動作決定部418は、評価値と安全件数に基づいて回避動作を決定し、動作指令をロボット450に出力する。また、障害物回避システム400は、ユーザの入力した安全係数に基づく情報をディスプレイ等に表示して、ユーザに提示してもよい。
【0108】
各移動ロボットは、自身の現在状態と、周囲の移動ロボットの現在状態をもとに、最適な行動を決定する必要があり、そのような行動ポリシーを機械学習により獲得することができる。
【0109】
<実施例5:人物検索システム>
図18は、タスク実行システム10を人物検索システムに適用した場合の機能構成の一例を示すブロック図である。本実施例における人物検索システム500は、監視映像から、見本で示された特定の人物を抽出するシステムである。本実施例では、重視したい体の部位をユーザPが指定することにより、効果的な絞り込みを可能にしたものである。
【0110】
人物検索システム500は、タスク実行システム510と、動画を撮影してフレーム画像を取得する監視カメラ530と、見本画像が格納された外部システム540と、処理結果を表示するための表示器550とを備える。タスク実行システム510は、第1入力部512と、第2入力部514と、判定部516と、出力部518とを含む。
【0111】
本実施例において、人物検索システム500は、監視カメラ530が撮影した動画フレーム画像が、第1入力部512を介して判定部516に入力される。また、外部システム540に格納された見本画像が、第1入力部512を介して判定部516に入力される。
【0112】
判定部516は、取得された動画フレーム画像と見本画像から、特定の人物が映っているか否かを判定する。本実施例では、判定部516は複数の学習モジュールによって構成される。各学習モジュールはそれぞれ身体の所定の部位を比較して一致度を判定することができるように機械学習されている。ここでは、判定部は4つの比較部により構成され、それぞれ、目、口、髪型及び輪郭を比較するためのニューラルネットワークにより構成さえれている。4つの判定部は、カメラ530から入力された画像に映っている人物と、見本画像の人物とを比較して、各部位(目、口、髪型、輪郭)ごとに一致度を判定し、部位ごとの一致度を出力する。
【0113】
出力部518は、部位ごとの一致度を判定部516から取得する。他方、出力部518は、ユーザPが入力した部位ごとの重みを第2入力部514から受け取り、部位ごとの重み付けを考慮した総合的な一致度を算出し、表示器550に出力する。また、人物検索システム500は、ユーザPが入力した部位ごとの重みに基づく情報を、表示器550に出力してもよい。
【0114】
図19は、本実施例における、部位ごとの一致度と重みの一例を示す図である。各部位の重みは、ユーザが入力したものである。出力部518は、判定部から出力された各部位の一致度と、ユーザの入力した各部位の重みとに基づいて、総合的な一致度を所定のロジックで算出する。
【0115】
<実施例6:逆運動学モデル>
図20は、タスク実行システム10を逆運動学モデルに適用した場合の機能構成の一例を示すブロック図である。
図21は、逆運動学において複数の解が存在する場合の一例を示す図である。
【0116】
本実施例における逆運動学制御システム600は、ハンドやグリッパなどのエンドエフェクタの姿勢が与えられたときに、その姿勢を実現するジョイント角を出力することのできるシステムである。エンドエフェクタの姿勢を与えた時に、
図21に示すように、それを実現するジョイント角が複数存在する場合がある。本実施例では、現在姿勢からの移動距離が最小になるものなど、ユーザが指定した条件に基づいて、適切な解を出力する。
【0117】
図20に示すように、本実施例における逆運動学制御システム600は、タスク実行システム610と、センサ630と、ロボット640,650とを備える。センサ630の一部又は全部は、ロボット640に搭載されてもよい。
図20ではロボット640とロボット650の符号を分けているが、実際には同じロボットを指しているものとする。タスク実行システム610は、第1入力部612と、第2入力部614と、予測器616と、動作決定部618とを含む。
【0118】
本実施例において、タスク実行システム610は、エンコーダなどのセンサ630からロボット640の現在姿勢を取得し、第1入力部612を介して予測器616に入力する。また、エンドエフェクタの目標姿勢を、ロボット640の動作計画部(不図示)から取得し、第1入力部612を介して予測器616に入力する。タスク実行システム610はこれらに加えて、ユーザPの入力した条件を取得し、第2入力部を介して予測器616に入力する。
【0119】
予測器616は、学習済みモデルによって構成され、ロボットの現在姿勢とエンドエフェクタの目標姿勢とに基づいて、目標姿勢を実現するためのジョイント角を出力する。複数の解が存在するときは、ユーザPによって入力された条件に基づいて、適切な解を選択し、選択された解(ジョイント角)を出力する。
【0120】
動作決定部618は、予測器616から受け取ったジョイント角に基づいて動作指令を生成し、ロボット650に出力する。ロボット650は、受信した動作指令に基づいて動作することにより、ユーザが指定した条件に沿った形でエンドエフェクタの姿勢を制御することができる。また、逆運動学制御システム600は、ユーザPによって入力された条件に基づく情報を、ディスプレイ等に出力して、ユーザPに提示してもよい。
【0121】
本実施例において、予測器616を構成する学習済みモデルは、学習器において、エンドエフェクタの姿勢とそれに対応するジョイント角のセットを訓練データとして与えて教師あり学習を行うことで、逆運動学のモデルを獲得することができる。具体的には、様々なジョイント角の組み合わせを生成し、それに対応するエンドエフェクタの姿勢を順運動学により計算することで、正解となる訓練データのセットを生成できる。
【0122】
さらに、エンドエフェクタの姿勢に対するジョイント角の組み合わせが複数存在するとき、所定の評価指標を設定し、評価指標が最大となるものを正解とする訓練データを生成する。このように生成された訓練データを用いた教師あり学習により、指定された評価関数を最大化するような解を出力する学習済みモデルを得ることができる。評価関数は、例えば、位置決め精度と移動コストの組み合わせなどにより表現できる。位置決め精度は、要求されたエンドエフェクタの姿勢とジョイント角の姿勢との差であり、移動コストは現在姿勢からの移動量として計算することができる。また、他にも、特異点からの距離などを評価指標としてもよい。
【0123】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で処理ステップの一部を省略したり、各処理ステップの順番を任意に変更して又は並列に実行することができる。また、各実施形態における機能構成及びハードウェア構成は一例にすぎず、図示したものに限定されるものではない。
【0124】
本明細書において説明した各処理を実施するプログラムは、記録媒体に記憶させてもよい。例えば、コンピュータに、上記プログラムをインストールすることによって、当該コンピュータをタスク実行システム10として機能させることができる。ここで、上記プログラムを記憶した記録媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は特に限定されないが、例えば、CD−ROM等の記録媒体であってもよい。
【0125】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0126】
(付記1)
少なくとも1つのメモリと、前記メモリと接続された少なくとも1つのハードウェアプロセッサとを備え、機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルを含む学習モジュールを用いて所定のタスクを実行させるシステムであって、
前記ハードウェアプロセッサが、
第1入力部において、一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される情報の少なくとも一部を生成し、
出力部において、前記学習モジュールから出力される情報を取得して、前記システムから出力される情報であって、当該情報に基づいて所定のタスクが実行される情報を生成し、
ユーザからの入力を受け付けて、前記ユーザからの入力に基づく情報が、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力され、前記ユーザからの入力に基づいて前記出力部から出力される情報が変化する、
システム。
【0127】
(付記2)
機械学習により所定の学習がなされた学習済みモデル又は前記学習済みモデルと入出力関係が同等のモデルからなる学習モジュールを用いて所定のタスクを実行させるシステムを制御する方法であって、
少なくとも1つ以上のハードウェアプロセッサによって、第1入力部において、一又は複数の外部システムから取得される情報を受け付けて、前記学習モジュールに入力される第1情報の少なくとも一部を生成し、
前記ハードウェアプロセッサによって、前記学習モジュールにおいて、少なくとも前記生成された第1情報に基づいて、所定のタスクが実行される第2情報を出力し、
前記ハードウェアプロセッサによって、出力部において、少なくとも前記出力された第2情報を取得して、前記システムから出力される第3情報を生成し、
前記ハードウェアプロセッサによって、前記第1情報の生成、前記第2情報の出力、又は、前記第3情報のせ生成の少なくともいずれかと略並行に行われ、ユーザからの入力を受け付けて、前記ユーザからの入力に基づく情報を、前記第1入力部、前記学習モジュール又は前記出力部のうち少なくともいずれかに入力し、前記ユーザからの入力に基づいて前記出力部から出力される情報を変化させる、
方法。