(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-11
(45)【発行日】2023-12-19
(54)【発明の名称】ツールの状態を学習する機械学習装置、ロボットシステム、及び機械学習方法
(51)【国際特許分類】
B25J 13/00 20060101AFI20231212BHJP
G05B 19/4155 20060101ALI20231212BHJP
B25J 13/08 20060101ALI20231212BHJP
【FI】
B25J13/00 Z
G05B19/4155 V
B25J13/08 Z
(21)【出願番号】P 2019115371
(22)【出願日】2019-06-21
【審査請求日】2022-03-17
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】▲羽▼根 幹人
(72)【発明者】
【氏名】佐藤 貴之
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2017-033526(JP,A)
【文献】特開2003-019643(JP,A)
【文献】特開昭59-142048(JP,A)
【文献】特開2019-000942(JP,A)
【文献】特開2018-138327(JP,A)
【文献】特開2014-061556(JP,A)
【文献】特開2003-011080(JP,A)
【文献】特開2018-024055(JP,A)
【文献】中国特許出願公開第101612712(CN,A)
【文献】特開平11-267949(JP,A)
【文献】特開2019-139755(JP,A)
【文献】特開2020-069600(JP,A)
【文献】米国特許第04926309(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/416
B23Q 17/00 - 17/24
B23Q 15/00 - 15/28
(57)【特許請求の範囲】
【請求項1】
ロボットが作業に用いるツールの状態を学習する機械学習装置であって、
前記ロボットが前記ツールに所定の動作を行わせている間に前記ツールから前記ロボットに加わる力のデータと、前記所定の動作を行っているときの前記ツールの状態を示すデータと、前記ツールの作業対象となるワークの粗さ又は剛性率の数値のデータと、を、学習データセットとして取得する学習データ取得部と、
前記学習データセットを用いて、前記力と前記ツールの状態との相関性を表す学習モデルを、前記力と前記数値との関連性を加味して生成する学習部であって、前記学習モデルは、前記力及び前記数値のデータの入力を受け付けて、
該数値に対応する該力と前記相関性を有する前記状態のデータを出力する、学習部と、を備える、機械学習装置。
【請求項2】
前記学習データ取得部は、前記所定の動作を行っているときの前記ツールの位置及び姿勢のデータを、前記学習データセットとしてさらに取得し、
前記学習部は、前記相関性に前記力と前記位置及び姿勢との関連性を加味して前記学習モデルを生成する、請求項1に記載の機械学習装置。
【請求項3】
前記ツールは、回転動作によりワークを研磨する研磨材であり、
前記所定の動作は、
前記研磨材をワークに接触させることなく回転させる動作、又は
前記研磨材をワークに接触させて回転させる動作である、請求項1又は2に記載の機械学習装置。
【請求項4】
前記ツールは、前記状態が経時で変化する既知の耐用期間を有し、
前記学習部は、前記耐用期間に含まれる複数の小期間の各々について前記学習モデルを生成する、請求項1~3のいずれか1項に記載の機械学習装置。
【請求項5】
前記学習データ取得部は、前記ロボットが前記力を制御する力制御を実行している間の前記力のデータを取得する、請求項1~4のいずれか1項に記載の機械学習装置。
【請求項6】
前記力のデータは、該力の時間変化特性、該力の振幅値、及び該力の周波数スペクトラムの少なくとも1つを含む、請求項1~5のいずれか1項に記載の機械学習装置。
【請求項7】
ツールを用いて作業を行うロボットと、
請求項1~6のいずれか1項に記載の機械学習装置と、
前記力を検出し、前記力のデータとして前記学習データ取得部に供給する力センサと、
前記学習部が生成した前記学習モデルに基づいて、前記ロボットが前記作業に際して前記所定の動作を行っているときの前記ツールの状態を判定する状態判定部と、を備える、ロボットシステム。
【請求項8】
前記力センサの故障の有無を検知する故障検知部をさらに備える、請求項7に記載のロボットシステム。
【請求項9】
ロボットが作業に用いるツールの状態を学習する機械学習方法であって、
プロセッサが、
前記ロボットが前記ツールに所定の動作を行わせている間に前記ツールから前記ロボットに加わる力のデータと、前記所定の動作を行っているときの前記ツールの状態を示すデータと、前記ツールの作業対象となるワークの粗さ又は剛性率の数値のデータと、を、学習データセットとして取得し、
前記学習データセットを用いて、前記力と前記ツールの状態との相関性を表す学習モデルを、前記力
と前記数値との
関連性を加味して生成し、
前記学習モデルは、前記力及び前記数値のデータの入力を受け付けて、
該数値に対応する該力と前記相関性を有する前記状態のデータを出力する、機械学習方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットが作業に用いるツールの状態を学習する機械学習装置、ロボットシステム、及び機械学習方法に関する。
【背景技術】
【0002】
工具でワークを加工しているときの音又は振動の特徴を学習し、工具の劣化度を判定する技術が知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットの分野においては、ロボットがツールを用いて作業を行っているときに、ツールからロボットに加わる力を検出する。このように検出される力から、ツールの状態を判定する技術が求められている。
【課題を解決するための手段】
【0005】
本開示の一態様において、ロボットが作業に用いるツールの状態を学習する機械学習装置は、ロボットがツールに所定の動作を行わせている間にツールからロボットに加わる力のデータと、所定の動作を行っているときのツールの状態を示すデータとを、学習データセットとして取得する学習データ取得部と、学習データセットを用いて、力とツールの状態との相関性を表す学習モデルを生成する学習部とを備える。
【0006】
本開示の他の態様において、ロボットが作業に用いるツールの状態を学習する機械学習方法は、プロセッサが、ロボットがツールに所定の動作を行わせている間にツールからロボットに加わる力のデータと、所定の動作を行っているときのツールの状態を示すデータとを、学習データセットとして取得し、学習データセットを用いて、力とツールの状態との相関性を表す学習モデルを生成する。
【発明の効果】
【0007】
本開示によれば、ロボットがツールに所定の動作を行わせているときに該ツールからロボットに加わる力と該ツールの状態との相関性を定量的に表すモデルを、自動的且つ正確に求めることができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係る学習装置のブロック図である。
【
図2】一実施形態に係るロボットにエンドエフェクタを取り付けた状態を示す。
【
図3】
図2に示すロボットに、他のエンドエフェクタを取り付けた状態を示す。
【
図4】
図2に示すロボットに、さらに他のエンドエフェクタを取り付けた状態を示す。
【
図5】
図2に示すロボットに、さらに他のエンドエフェクタを取り付けた状態を示す。
【
図6】
図5に示すロボットで把持したツールを穴に嵌入した状態を示す。
【
図7】
図1に示す機械学習装置が行う学習サイクルの一例を示すフローチャートである。
【
図9】多層ニューラルネットワークのモデルを模式的に示す。
【
図10】一実施形態に係るロボットシステムのブロック図である。
【
図11】
図10に示すロボットシステムの動作フローの一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。
図1を参照して、一実施形態に係る機械学習装置10について説明する。機械学習装置10は、プロセッサ(CPU、GPU等)、記憶部(ROM、RAM等)、及び入力装置(キーボード、マウス、タッチパネル等)等を有するコンピュータ、又は、学習アルゴリズム等のソフトウェアから構成され得る。
【0010】
機械学習装置10は、後述するロボット20が作業に用いるツールの状態(正常状態、異常状態等)を学習する。
図2~
図7に、ロボット20と、該ロボット20に取り付けられる種々のエンドエフェクタとを示す。
図2に示すように、ロボット20は、垂直多関節ロボットであって、ベース部22、旋回胴24、下腕部26、上腕部28、手首部30を有する。
【0011】
ベース部22は、作業セルの床の上に固定される。旋回胴24は、鉛直軸周りに回動可能となるようにベース部22に設けられている。下腕部26は、水平軸周りに回動可能となるように旋回胴24に設けられている。上腕部28は、下腕部26の先端部に回動可能に設けられている。手首部30は、上腕部28の前端部に回動可能に設けられている。
【0012】
図2に示す例においては、手首部30の先端部に、ワークを研磨するためのエンドエフェクタ40が着脱可能に取り付けられている。手首部30は、エンドエフェクタ40を回動可能に支持する。ロボット20には、複数のサーボモータ(図示せず)が内蔵され、これらサーボモータは、ロボット20の可動要素(すなわち、旋回胴24、下腕部26、上腕部28、手首部30)を駆動し、エンドエフェクタ40を任意の位置及び姿勢に配置させる。
【0013】
エンドエフェクタ40は、ベース部42と、軸線A1周りに回転可能にベース部42に設けられたツール44と、該ツール44を回転駆動する駆動部46を有する。ベース部42は、手首部30の先端部に連結されている。ツール44は、例えば、研磨砥粒(セラミック、ジルコニア、ダイアモンド等)を含む略円柱状の研磨材であって、回転動作によりワークを研磨する。駆動部46は、例えばサーボモータであって、ツール44を軸線A1周りに回転させる。
【0014】
手首部30とエンドエフェクタ40との間には、力センサ32が介挿されている。力センサ32は、例えば、複数の歪ゲージを有する6軸力覚センサであって、該力センサ32に作用する力を検出する。より具体的には、力センサ32は、各々の歪ゲージから、該力センサ32に生じる歪に応じた出力信号SOを出力する。
【0015】
これら出力信号SOに基づいて、力センサ座標系CFのx軸方向の力Fx、y軸方向の力Fy、及びz軸方向の力Fzと、該x軸周りのモーメントMx、該y軸周りのモーメントMy、該z軸周りのモーメントMzとの、計6方向の力Fx、Fy、Fz、Mx、My、及びMzを検出することができる。
【0016】
そして、これら6方向の力Fx、Fy、Fz、Mx、My、Mzから、エンドエフェクタ40(例えば、ツール44)に掛かる力FEの大きさ及び方向を検出することができる。なお、力センサ座標系CFは、例えば、その原点が力センサ32における所定位置(例えば、中心)に配置され、そのz軸方向が、力センサ32の中心軸線と平行となるように、該力センサ32に対して設定される。
【0017】
一方、
図3に示す例においては、ロボット20の手首部30に、ワークを研磨するための他のエンドエフェクタ50が取り付けられている。エンドエフェクタ50は、ベース部52と、軸線A
2周りに回転可能にベース部52に設けられたツール44と、該ツール44を回転駆動する駆動部54を有する。
【0018】
ベース部52は、力センサ32を介して手首部30の先端部に取り付けられている。駆動部54は、例えばサーボモータであって、ツール44を軸線A
2周りに回転させる。
図2及び
図3に示す例においては、ロボット20は、ツール44を用いてワークを研磨する作業を行う。
【0019】
図4に示す例においては、ロボット20の手首部30に、ワークW
1を切削加工(例えば、バリ取り)するためのエンドエフェクタ60が着脱可能に取り付けられている。具体的には、エンドエフェクタ60は、ベース部62と、軸線A
3周りに回転可能にベース部62に設けられたツール64と、該ツール64を回転駆動する駆動部66とを有する。ベース部62は、力センサ32を介して手首部30の先端部に取り付けられている。
【0020】
ツール64は、鋼鉄等から構成された、先端部が略円錐状の切削工具であって、回転動作によりワークW1を切削加工する。駆動部66は、例えばモータ又は圧縮気体によって動力を発生させる装置であって、ベース部62に内蔵され、ツール64を軸線A3周りに回転させる。ロボット20は、ツール64を用いてワークを切削加工(バリ取り等)する作業を行う。
【0021】
図5に示す例においては、ロボット20の手首部30に、エンドエフェクタ70が着脱可能に取り付けられている。エンドエフェクタ70は、ツール74をハンドリングするロボットハンドであって、ベース部72と、該ベース部72に開閉可能に設けられた複数の指部76と、該指部76を駆動する駆動部78を有する。
【0022】
ベース部72は、力センサ32を介して手首部30の先端部に取り付けられている。指部76は、互いに接近及び離反する方向へ移動可能となるようにベース部72に設けられ、ツール74を把持したり、解放したりする。駆動部78は、例えばサーボモータ又はシリンダであって、ベース部72に内蔵されている。
【0023】
ツール74は、円筒状又は多角柱状の部材(自動車用シリンダ等)である。ロボット20は、エンドエフェクタ70でツール74を把持し、
図6に示すように、把持したツール74を、作業対象のワークW
2に形成された穴Hに嵌入し、該ツール74を該ワークW
2に組み付ける作業を行う。
【0024】
再度、
図1を参照して、機械学習装置10は、学習データ取得部12、及び学習部14を備える。学習データ取得部12は、ロボット20がツール44、64、又は74に所定の動作を行わせている間に該ツール44、64、又は74からロボット20に加わる力Fのデータと、該所定の動作を行っているときの該ツール44、64、又は74の状態Sを示すデータとを、学習データセットとして取得する。
【0025】
例えば、
図2~
図4に示す例において、「所定の動作」とは、ロボット20がツール44又は64を、ワークに接触させることなく回転させる動作である。代替的には、「所定の動作」とは、ロボット20がツール44又は64を、ワークに接触させて回転させる動作である。ここで、ロボット20は、所定の動作としてツール44又は64をワークに接触させて回転させる動作を行うときに、該ツール44又は64からロボット20に加わる力F(換言すれば、ツール44又は64からワークに加わる力)を、所定の目標値に制御する力制御を実行してもよい。
【0026】
また、
図5に示す例において、「所定の動作」とは、ロボット20がツール74を穴Hに嵌入する動作である。ここで、ロボット20は、所定の動作としてツール74を穴Hに嵌入する動作を行うときに、ツール74からロボット20に加わる力F(換言すれば、ツール74からワークW
2に加わる力)を、所定の目標値に制御する力制御を実行してもよい。
【0027】
このように、ロボット20の手首部30には、作業に応じて種々のエンドエフェクタ40、50、60又は70が取り付けられ、ロボット20は、ツール44、64又は74に、所定の動作を行わせる。力センサ32は、ロボット20がツール44、64又は74に所定の動作を実行させているときに、該ツール44、64又は74からロボット20に加わる力Fを検出し、力Fのデータを、学習データ取得部12に供給する。
【0028】
例えば、
図2~
図4に示す例において、ロボット20が所定の動作として、ツール44又は64をワークに接触させることなく(又は、ワークに接触させて)回転させる動作を行っているとき、ツール44又は64の回転によって力センサ32に力が加わる。力センサ32は、このような力を、所定の動作時にツール44又は64からロボット20に加わる力Fとして検出する。
【0029】
また、
図5に示す例において、ロボット20が所定の動作として、ツール74を穴Hに嵌入する動作を行っているとき、ツール74を穴Hに嵌入する動作に起因する力が力センサ32に加わる。力センサ32は、このような力を、所定の動作時にツール74からロボット20に加わる力Fとして検出する。学習データ取得部12は、力センサ32が検出した力Fのデータを、該力センサ32から取得する。力Fのデータは、上述の出力信号S
O、力F
x、F
y、F
z、M
x、M
y、及びM
z、並びに、エンドエフェクタ40に掛かる力F
Eのうちの少なくとも1つを含む。
【0030】
また、力Fのデータは、データSO、Fx、Fy、Fz、Mx、My、Mz、FEの時間変化特性CT、振幅値AP(正又は負のピーク値、ピークピーク値等)、及び周波数スペクトラムFSの少なくとも1つを含んでもよい。また、時間変化特性CT又は周波数スペクトラムFSは、所定の時間τに亘って検出されたデータであってもよい。また、振幅値APは、所定の時間τの平均値又は最大値であってもよい。また、所定の時間τは、ロボット20が行う「所定の動作」の始期から終期までの時間であってもよいし、又は、「所定の動作」中の任意の時間(例えば、1秒)であってもよい。
【0031】
一方、ツール44、64又は74の状態Sを示すデータは、例えば、「正常状態」、「異常状態」等のラベル情報を含む。ここで、異常状態とは、例えば、ツール44、64又は74に、欠け、割れ又は亀裂等の損傷が生じている状態である。一方、正常状態とは、ツール44、64又は74に損傷が生じていない状態である。
【0032】
なお、「正常状態」のラベル情報として、「新品状態」、「中古状態」といった複数のラベル情報を設定してもよい。また、「異常状態」のラベル情報として、「異常状態レベル1」、「異常状態レベル2」、「異常状態レベル3」といったように、異常状態の度合いに応じた複数のラベル情報を設定してもよい。
【0033】
ツール44、64又は74の状態Sを示すデータは、オペレータによって定められる。例えば、オペレータは、目視等によって、ツール44、64又は74の状態(正常状態、異常状態)を確認し、該ツール44、64又は74の状態Sを示すデータを学習データ取得部12に入力する。
【0034】
代替的には、オペレータは、ツール44、64又は74の画像データと、該ツール44、64又は74の状態Sとの相関性を表す学習モデルLM2を予め準備し、ツール44、64又は74を撮像した画像データを該学習モデルLM2に入力して、ツール44、64又は74の状態Sを判定してもよい。学習データ取得部12は、力センサ32から取得した力Fのデータと、オペレータ(又は学習モデルLM2)によって定められた状態Sを示すデータとを、学習データセットDSとして取得する。
【0035】
ここで、ロボット20がツール44、64又は74に所定の動作を実行させているときにツール44、64又は74からロボット20に加わる力Fと、ツール44、64又は74の状態S(正常状態、異常状態等)との間には、相関性がある。例えば、
図2~
図4に示す例において、ツール44又は64に損傷が生じていたとする。
【0036】
この場合にロボット20がツール44又は64を回転させる所定の動作を行うと、損傷によってツール44又は64の回転に偏心が発生し、その結果、ツール44又は64からロボット20に加わる力Fが、損傷がないツール44又は64を回転させた場合と比べて、異なり得る。
【0037】
また、
図5及び
図6に示す例において、ツール74に損傷が生じていたとする。この場合にロボット20がツール74を穴Hに嵌入させる所定の動作を行うと、ツール74の損傷箇所と穴Hの壁面との間で生じる摩擦等に起因して、ツール74からロボット20に加わる力Fが、損傷がないツール74を穴Hに嵌入させた場合と比べて、異なり得る。
【0038】
学習部14は、力F及び状態Sの学習データセットDSを用いて、力Fと状態Sとの相関性を表す学習モデル(関数)LMを生成する。例えば、学習部14は、教師あり学習を実行することで、学習モデルLMを生成する。この場合、新たなツール44、64又は74をロボット20に装着する毎に、ロボット20に所定の動作を繰り返し試行させる。そして、学習データ取得部12は、ロボット20が所定の動作を実行する毎に、学習データセットDSを教師データとして繰り返し取得する。
【0039】
学習部14は、教師データとして取得した力Fのデータ(時間変化特性、周波数スペクトラム等)と状態Sを示すデータ(正常状態、異常状態等のラベル情報)との相関性を暗示する特徴を識別することで、学習モデルLMを学習していく。このような教師あり学習として、例えば、サポートベクターマシン(SVM)、又は混合ガウスモデル(GMM)といったアルゴリズムを用いることができる。
【0040】
以下、
図7を参照して、機械学習装置10が行う学習サイクルのフローについて説明する。ステップS1において、オペレータは、ロボット20にツール44、64又は74(すなわち、エンドエフェクタ40、50、60又は70)を取り付け、ロボット20でツール44、64又は74に所定の動作を行わせる。
【0041】
ステップS2において、学習データ取得部12は、学習データセットDSを取得する。具体的には、学習データ取得部12は、ステップS1でロボット20がツール44、64又は74に所定の動作を行わせる間に力センサ32が検出した力Fのデータを、該力センサ32から取得する。
【0042】
また、学習データ取得部12は、ステップS1で回転させたツール44、64又は74の状態Sを示すデータとして、正常状態のラベル情報、又は異常状態のラベル情報を取得する。一例として、オペレータは、ステップS1で所定の動作を行う前にツール44、64又は74を目視することで、該ツール44、64又は74が正常状態であるか、又は異常状態であるかを確認する。
【0043】
他の例として、オペレータは、ステップS1で所定の動作を行っている間に力センサ32が検出した力Fのデータを確認することで、該ツール44が正常状態であるか、又は異常状態であるかを確認する。オペレータは、機械学習装置10の入力装置を操作して、ステップS1で取り付けたツール44、64又は74の状態Sを示すデータとして、正常状態のラベル情報、又は異常状態のラベル情報を入力する。
【0044】
さらに他の例として、ステップS1で所定の動作を実行する前、又は実行した後に、ツール44、64又は74をカメラ(図示せず)で撮像する。そして、撮像した画像データを上記の学習モデルLM2に入力する。学習モデルLM2は、正常状態のラベル情報、又は異常状態のラベル情報を、学習データ取得部12へ出力する。
【0045】
学習データ取得部12は、入力された正常状態のラベル情報、又は異常状態のラベル情報を取得する。このようにして、学習データ取得部12は、力Fのデータと状態Sを示すデータの学習データセットDSを取得し、互いに関連付けて記憶部に記憶する。
【0046】
ステップS3において、学習部14は、ステップS2で取得した学習データセットDSを用いて、力Fと状態Sとの相関性を表す学習モデルLMを生成する。具体的には、学習部14は、教師あり学習のアルゴリズム(SVM、GMM等)を実行することによって、学習モデルLMを学習する。
【0047】
そして、ステップS1に戻り、オペレータは、新たなツール44、64又は74(すなわち、エンドエフェクタ40、50、60又は70)をロボット20に取り付けて、ロボット20は、該新たなツール44、64又は74で所定の動作を行う。そして、ステップS2において、学習データ取得部12は、該新たなツール44、64又は74に関して学習データセットDSを取得し、ステップS3において、学習部14は、新たに取得された学習データセットDSを用いて学習モデルLMを更新する。
【0048】
このような学習サイクルを実行することによって、学習モデルLMの学習が進行し、学習モデルLMが最適解へ導かれることになる。このような学習サイクルを、ツール44、64、及び74の各々に関して実行することにより、ツール44、64、74の状態Sと力Fとの相関性を表す学習モデルLMを、ツール44、64、及び74のそれぞれに関して取得することができる。
【0049】
本実施形態によれば、力Fとツールの状態Sとの相関性を定量的に表すモデルを、自動的且つ正確に求めることができる。なお、
図7に示す学習サイクルのフローに限らず、例えば、ステップS1及びS2のループを繰り返し実行して多数の学習データセットDSを取得した後に、ステップS3を実行し、学習部14が、該多数の学習データセットDSを用いて学習モデルLMの学習を実行してもよい。
【0050】
なお、機械学習装置10の他の機能として、ステップS2において、学習データ取得部12は、ステップS1でロボット20が所定の動作を行っているときのツール44、64又は74の位置及び姿勢のデータを、学習データセットDSとしてさらに取得してもよい。具体的には、ステップS1でロボット20は、ツール44、64又は74を所定の位置及び姿勢に配置させた状態で、該ツール44、64又は74に所定の動作を実行させる。
【0051】
そして、ステップS2で、学習データ取得部12は、ステップS1でツール44、64又は74を所定の位置及び姿勢に配置させたときに、ロボット20の各サーボモータの回転角度θを検出するエンコーダ(図示せず)から、回転角度θを取得する。これら回転角度θから、ツール44、64又は74(又は、エンドエフェクタ40、50、60又は70)の位置及び姿勢を算出できる。
【0052】
このステップS2において、学習データ取得部12は、学習データセットDSとして、力Fのデータ及び状態Sを示すデータに加えて、ツール44、64又は74の位置及び姿勢のデータをさらに取得する。なお、学習データ取得部12は、位置及び姿勢のデータとして、回転角度θを取得してもよい。そして、ステップS3において、学習部14は、力Fのデータと、状態Sのデータと、位置及び姿勢のデータとの学習データセットDSを用いて、学習モデルLMを生成する。
【0053】
学習データセットDSとして位置及び姿勢のデータを取得する意義について、以下に説明する。ロボット20が所定の動作を実行しているときに力センサ32が検出する力Fは、ツール44、64又は74の位置及び姿勢に応じて変化する。したがって、ツール44、64又は74の位置及び姿勢と力Fとの関連性を加味して学習モデルLMを生成することによって、ツール44、64又は74を様々な位置及び姿勢に配置して所定の動作を実行したときの力Fと状態Sとの相関性を表す学習モデルLMを取得することができる。
【0054】
機械学習装置10のさらに他の機能として、例えばツール44又は64を用いる場合、ステップS2において、学習データ取得部12は、ステップS1でロボット20が所定の動作を行っているときのツール44又は64の回転速度のデータを、学習データセットDSとしてさらに取得してもよい。
【0055】
具体的には、ステップS1でロボット20がツール44又は64を回転させる所定の動作を行っているときに、学習データ取得部12は、ツール44又は64の回転速度を検出する速度センサ(図示せず)から、回転速度Vのデータを取得する。
【0056】
代替的には、学習データ取得部12は、ステップS1でロボット20がツール44又は64に所定の動作を行わせるときにエンドエフェクタ40、50又は60に送信される速度指令CRのデータを取得してもよい。速度指令CRは、所定の動作時におけるツール44又は64の回転速度を規定する指令である。
【0057】
一方、ツール74を用いる場合、ステップS2において、学習データ取得部12は、ステップS1でロボット20が所定の動作を行っているときのツール74の動作速度(すなわち、ツール74が穴Hへ移動する速度)のデータを、学習データセットDSとしてさらに取得してもよい。具体的には、学習データ取得部12は、ステップS1でロボット20がツール74を穴Hに嵌入させる所定の動作を行っているときに、該ツール74の動作速度を検出する速度センサ(図示せず)から、動作速度Vを取得する。
【0058】
代替的には、学習データ取得部12は、ステップS1でロボット20がツール74に所定の動作を行わせているときに該ツール74に送信される速度指令CRのデータを取得してもよい。速度指令CRは、所定の動作時におけるツール74の動作速度を規定する指令である。
【0059】
こうして、ステップS2において、学習データ取得部12は、学習データセットDSとして、力Fのデータ及び状態Sを示すデータに加えて、ツール44、64又は74の速度V(又は速度指令CR)のデータをさらに取得する。そして、ステップS3において、学習部14は、力Fのデータと、状態Sのデータと、速度V(又は速度指令CR)との学習データセットDSを用いて、学習モデルLMを生成する。
【0060】
ここで、ロボット20が所定の動作を実行しているときに力センサ32が検出する力Fは、ツール44、64又は74の速度Vに応じて変化する。したがって、ツール44、64又は74の速度V(又は速度指令CR)と力Fとの関連性を加味して学習モデルLMを生成することによって、速度Vに応じた学習モデルLMを取得することができる。
【0061】
機械学習装置10のさらに他の機能として、ステップS2において、学習データ取得部12は、ツール44、64又は74の重量WGのデータを、学習データセットDSとしてさらに取得してもよい。具体的には、ステップS1で所定の動作を実行する前、又は実行した後に、学習データ取得部12は、ツール44、64又は74の重量を検出する重量センサ(図示せず)から、重量WGのデータを取得する。
【0062】
こうして、ステップS2において、学習データ取得部12は、学習データセットDSとして、力Fのデータ及び状態Sを示すデータに加えて、ツール44、64又は74の重量WGのデータをさらに取得する。そして、ステップS3において、学習部14は、力Fのデータと、状態Sのデータと、重量WGのデータとの学習データセットDSを用いて、学習モデルLMを生成する。
【0063】
ここで、ロボット20が所定の動作を実行しているときに力センサ32が検出する力Fは、ツール44、64又は74の重量WGに応じて変化する。したがって、ツール44、64又は74の重量WGと力Fとの関連性を加味して学習モデルLMを生成することによって、重量WGに応じた学習モデルLMを取得することができる。
【0064】
機械学習装置10のさらに他の機能として、ステップS2において、学習データ取得部12は、ツール44、64又は74の作業対象となるワークWの種類のデータを、学習データセットDSとしてさらに取得してもよい。ワークWの種類のデータは、ワークWの材料、粗さ、又は剛性率等のワークWの仕様に関する情報、又は、ワークWの種類を識別する情報等を含む。
【0065】
ワークWの仕様に関する情報は、文字(「鉄」、「アルミ」、「SUS3044」等)、又は数値を含んでもよい。また、ワークWの種類を識別する情報は、「ワークタイプA」、「ワークタイプB」といった文字情報であってもよいし、又は、オペレータがワークW毎に付す識別番号であってもよい。
【0066】
例えば、オペレータは、ステップS2において、機械学習装置10の入力装置を操作して、ワークWの種類のデータを入力する。こうして、ステップS2において、学習データ取得部12は、学習データセットDSとして、力Fのデータ及び状態Sを示すデータに加えて、ワークWの種類のデータをさらに取得する。そして、ステップS3において、学習部14は、力Fのデータと、状態Sのデータと、ワークWの種類のデータとの学習データセットDSを用いて、学習モデルLMを生成する。
【0067】
ここで、ロボット20が所定の動作を実行しているときに力センサ32が検出する力Fは、ワークWの種類のデータに応じて変化する。例えば、ステップS1でロボット20がツール44又は64をワークWに接触させて回転させる所定動作を行う場合、又は、ロボット20がツール74を穴Hに嵌入させる所定動作を行う場合、ワークWの材料、粗さ、又は剛性率等によって、ワークWからツール44又は64に掛かる力は変動し得る。
【0068】
したがって、ワークWの種類と力Fとの関連性を加味して学習モデルLMを生成することによって、ワークWの種類に応じた学習モデルLMを取得することができる。なお、学習データ取得部12は、ツール44、64又は74の種類のデータ(ツールの種類を識別する文字情報等)を、学習データセットDSとしてさらに取得してもよい。
【0069】
なお、ツール44、64又は74は、状態Sが経時で変化する既知の耐用期間Tを有している。この耐用期間とは、例えば1ヶ月又は1年というように、ツール44、64又は74の仕様として予め定められ得る。このような耐用期間が有る場合において、学習部14は、耐用期間Tに含まれる複数の小期間の各々について、学習モデルLMを生成してもよい。
【0070】
例えば、耐用期間Tを、ツール44、64又は74が新品の時点t0から、ツール44、64又は74を所定時間使用した後の時点t1までの小期間T1と、時点t1から、ツール44、64又は74を所定時間さらに使用した後の時点t2までの小期間T2と、・・・時点tn-1から、ツール44、64又は74を所定時間さらに使用した後の時点tnまでの小期間Tnとに区切る。
【0071】
この場合において、学習部14は、小期間T
n(n=1、2、3、・・・n)の各々において、
図7に示す学習サイクルを実行し、小期間T
n毎に学習モデルLM
nを生成してもよい。この構成によれば、ツール44、64、74の使用期間に応じた学習モデルLMを生成できる。
【0072】
なお、学習部14が実行する学習アルゴリズムは、教師あり学習に限定されず、例えば教師なし学習、強化学習、ニューラルネットワーク等、機械学習として公知の学習アルゴリズムを採用できる。一例として、
図8は、ニューロンのモデルを模式的に示す。
図9は、
図8に示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。なお、
図8は、一例として入力xが3つである場合を示しているが、入力xの数は、n(nは、2又は4以上の正数)であってもよい。また、
図9は、一例として、三層のニューラルネットワークのモデルを示しているが、n層(nは、2又は4以上の正数)のニューラルネットワークを用いてもよい。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
【0073】
図8に示すニューロンは、複数の入力x(図では例として入力x1~x3)に対し結果yを出力する。個々の入力x(x1、x2、x3)にはそれぞれに重みw(w1、w2、w3)が乗算される。入力xと結果yとの関係は、下記の式1で表すことができる。なお、入力x、結果y及び重みwはいずれもベクトルである。また式1において、θはバイアスであり、f
kは活性化関数である。
【0074】
【0075】
図9に示す三層のニューラルネットワークは、左側から複数の入力x(図では例として入力x1~入力x3)が入力され、右側から結果y(図では例として結果y1~結果y3)が出力される。図示の例では、入力x1、x2、x3のそれぞれに対応の重み(総称してW1で表す)が乗算されて、個々の入力x1、x2、x3がいずれも3つのニューロンN11、N12、N13に入力されている。
【0076】
図9では、ニューロンN11~N13の各々の出力を、総称してZ1で表す。Z1は、入力ベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルZ1のそれぞれに対応の重み(総称してW2で表す)が乗算されて、個々の特徴ベクトルZ1がいずれも2つのニューロンN21、N22に入力されている。特徴ベクトルZ1は、重みW1と重みW2との間の特徴を表す。
【0077】
図9では、ニューロンN21~N22の各々の出力を、総称してZ2で表す。Z2は、特徴ベクトルZ1の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルZ2のそれぞれに対応の重み(総称してW3で表す)が乗算されて、個々の特徴ベクトルZ2がいずれも3つのニューロンN31、N32、N33に入力されている。
【0078】
特徴ベクトルZ2は、重みW2と重みW3との間の特徴を表す。最後にニューロンN31~N33は、それぞれ結果y1~y3を出力する。機械学習装置10は、学習データセットDSを入力とし、上記したニューラルネットワークに従う多層構造の演算を行うことで、学習モデルLMを学習することができる。
【0079】
上述した機械学習装置10の構成は、コンピュータのプロセッサが実行する機械学習方法(又はソフトウェア)として記述できる。この機械学習方法は、ロボット20がツール44、64又は74に所定の動作を行わせている間に該ツール44、64又は74からロボット20に加わる力Fのデータと、該所定の動作を行っているときのツール44、64又は74の状態Sを示すデータとを学習データセットDSとして取得し、学習データセットDSを用いて、力Fとツールの状態Sとの相関性を表す学習モデルLMを生成する。
【0080】
次に、
図10を参照して、一実施形態に係るロボットシステム100について説明する。ロボットシステム100は、ロボット20、力センサ32、及び制御装置102を備える。制御装置102は、プロセッサ104、及び記憶部106を有する。プロセッサ104と記憶部106とは、バス108を介して互いに通信可能に接続され、プロセッサ104は、CPU又はGPU等を含み、記憶部106と通信しつつ各種演算を実行する。
【0081】
本実施形態においては、機械学習装置10は、ハードウェア又はソフトウェアとして制御装置102に実装されており、プロセッサ104は、機械学習装置10の機能を果たすための各種演算を実行する。すなわち、本実施形態においては、プロセッサ104は、学習データ取得部12及び学習部14として機能する。記憶部106は、ROM及びRAM等を含み、機械学習装置10が学習した学習モデルLMを予め格納している。
【0082】
次に、
図11を参照して、ロボットシステム100の動作について説明する。
図11に示すフローは、プロセッサ104が、オペレータ、上位コントローラ、又は作業プログラムから作業開始指令を受け付けたときに、開始する。ステップS11において、プロセッサ104は、ロボット20の動作を開始する。このステップS11において、プロセッサ104はロボット20に、学習モデルLMの学習段階で実行した「所定の動作」と同じ動作を行わせる。
【0083】
例えば、
図2~
図4に示す例の場合、プロセッサ104はロボット20に、ツール44又は64をワークに接触させずに(又は接触させて)回転させる動作を行わせる。また、
図5及び
図6に示す例の場合、プロセッサ104はロボット20に、エンドエフェクタ70で把持したツール74を穴Hに嵌入する動作を行う。なお、ツール44若しくは64をワークに接触させて回転させる動作、又は、ツール74を穴Hに嵌入する動作を行っているときに、プロセッサ104は、上述の力制御を実行してもよい。
【0084】
なお、このステップS11で実行する「同じ動作」とは、学習モデルLMの学習段階で実行した「所定の動作」と完全に同じ条件(ツールの種類、ワークの種類、ロボット20の種類、ロボット20の位置及び姿勢、ロボット20の移動経路等)の動作に限らず、条件のうちの少なくとも1つが「所定の動作」と異なる動作も含み得る。
【0085】
ステップS12において、プロセッサ104は、力Fのデータの取得を開始する。具体的には、プロセッサ104は、ステップS11の動作を実行している間に力センサ32が検出した力Fのデータを、該力センサ32から取得する動作を開始する。ここで、プロセッサ104は、ステップS11の動作を実行している間の所定の時間τに亘って、力Fのデータを取得してもよい。
【0086】
この所定の時間τは、ステップS11でロボット20が行う動作の始期から終期までの時間であってもよいし、又は、該動作中の任意の時間(例えば、1秒)であってもよい。また、
図7に示す学習サイクルでツール44、64又は74の位置及び姿勢のデータをさらに取得して学習モデルLMの学習を行った場合、プロセッサ104は、このステップS12で、力センサ32が力Fを検出したときのツール44、64又は74の位置及び姿勢のデータを取得し、取得した力Fのデータと関連付けて記憶部106に記憶してもよい。
【0087】
また、
図7に示す学習サイクルでツール44、64又は74の速度Vのデータをさらに取得して学習モデルLMの学習を行った場合、速度センサは、ステップS11の実行中にツール44、64又は74の速度V(又は速度指令CR)を検出し、プロセッサ104は、このステップS12で、該速度センサから速度Vのデータを取得する。
【0088】
また、
図7に示す学習サイクルでツール44、64又は74の重量WGのデータをさらに取得して学習モデルLMの学習を行った場合、プロセッサ104は、ツール44、64又は74の重量WGのデータを、重量センサから取得する。また、
図7に示す学習サイクルでワーク(又はツール)の種類のデータをさらに取得して学習モデルLMの学習を行った場合、プロセッサ104は、ワーク(又はツール)の種類のデータを、オペレータから入力装置を通して取得する。
【0089】
ステップS13において、プロセッサ104は、学習モデルLMに基づいて、ツール44、64又は74の状態Sを判定する。具体的には、プロセッサ104は、ステップS12で取得した力Fのデータを、記憶部106に格納している学習モデルLMに入力する。そうすると、学習モデルLMは、入力された力Fのデータと相関性を有する状態Sのデータ(「正常状態」、「異常状態」等のラベル情報)を推定して出力する。こうして、プロセッサ104は、取得した力Fのデータから、ツール44、64、74の状態Sを判定することができる。
【0090】
なお、学習データセットDSとしてツール44、64又は74の位置及び姿勢のデータを用いて学習モデルLMを生成している場合、プロセッサ104は、力Fのデータとともに、ステップS12で取得したツール44、64又は74の位置及び姿勢のデータを学習モデルLMに入力してもよい。この場合、学習モデルLMは、ツール44、64又は74の位置及び姿勢に対応する力Fのデータと相関性を有する状態Sのデータを推定して出力する。
【0091】
また、学習データセットDSとして、ツール44、64又は74の速度V(又は速度指令CR)、重量WG、若しくはワーク(又はツール)の種類のデータを用いて学習モデルLMを生成している場合、プロセッサ104は、力Fのデータとともに、速度V(又は速度指令CR)、重量WG、若しくは種類のデータを学習モデルLMに入力してもよい。この場合、学習モデルLMは、力Fのデータと、速度V(又は速度指令CR)、重量WG、又は種類のデータとから、状態Sのデータを推定して出力する。
【0092】
このように、力Fのデータに加えて、より多くのデータを用いて学習モデルLMを生成することにより、
図11に示すフローでツール44、64又は74の異常を判定する段階において、より多くの条件(位置及び姿勢、速度V、重量WG、ワーク又はツールの種類)に対応して、ツール44、64又は74の異常を判定することが可能となる。
【0093】
プロセッサ104は、ツール44、64又は74の状態Sが異常状態ではない(又は、正常状態である)場合にNOと判定し、ステップS11で開始した動作を完了させ、
図11に示すフローを終了する。一方、プロセッサ104は、ツール44、64又は74の状態Sが異常状態である(又は、正常状態ではない)場合にYESと判定し、ステップS15へ進む。このように、本実施形態においては、プロセッサ104は、ツール44、64又は74の状態Sを判定する状態判定部110(
図10)として機能する。
【0094】
ステップS15において、プロセッサ104は、力センサ32の故障の有無を検知する。ここで、仮に力センサ32が故障していた場合、適切な力のデータFをプロセッサ104に供給することができず、これにより、ツール44、64又は74の状態Sが正常状態であるにも関わらず、ステップS13で状態Sが異常状態である(すなわちYES)と判定され得る。
【0095】
状態Sの判定の正誤を識別すべく、本実施形態においては、プロセッサ104は、このステップS15を実行する。具体的には、プロセッサ104は、ステップS11で開始した動作を停止し、ツール44、64又は74(すなわち、エンドエフェクタ40、50、60又は70)を、予め定められた位置及び姿勢に配置させる。
【0096】
そして、プロセッサ104は、このときに力センサ32が検出した力F0を、該力センサ32から取得する。そして、プロセッサ104は、取得した力F0が、予め定められた基準値Fαと異なっているか否かを判定する。ここで、静止状態のツール44、64又は74を予め定められた位置及び姿勢に配置したときに該ツール44、64又は74からロボット20に加わる力は、計測又はシミュレーション等によって、推定することができる。したがって、このように推定された力を、基準値Fαとして、記憶部106に予め記憶することができる。
【0097】
プロセッサ104は、取得した力F
0が基準値F
αと異なっている(すなわち、YES)と判定した場合、ステップS17へ進む一方、取得した力F
0が基準値F
αと実質同じである(すなわち、NO)と判定した場合、ステップS16へ進む。例えば、プロセッサ104は、このステップS15において、力F
0と基準値F
αとの差(=|F
0-F
α|)が、予め定められた閾値よりも大きい場合に、YESと判定してもよい。このように、本実施形態においては、プロセッサ104は、力センサ32の故障の有無を検知する故障検知部112(
図10)として機能する。
【0098】
なお、オペレータは、ツール44、64又は74の位置及び姿勢と、力センサ32が検出する力Fの状態(正常値、異常値)との相関性を表す学習モデルLM3を予め準備してもよい。そして、プロセッサ104は、このステップS15でツール44、64又は74を予め定められた位置及び姿勢させたときの該ツール44、64又は74の位置及び姿勢のデータと、このときに力センサ32が検出した力F0とを該学習モデルLM3に入力し、力センサ32の故障の有無を検知してもよい。
【0099】
また、例えばツール44又は64を用いる場合において、力センサ32は、ツール44又は64をワークに接触させずに回転させる動作を行っているときに力F0’を検出してもよい。ツール44又は64をワークに接触させずに回転させているときに該ツール44、64又は74からロボット20に加わる力も、計測又はシミュレーション等によって、推定することができる。したがって、プロセッサ104は、このように推定された力を、基準値Fα’とし、このステップS15において、力センサ32によって検出された力F0’が基準値Fα’と異なっているか否かを判定してもよい。
【0100】
ステップS16において、プロセッサ104は、第1の警告信号を生成する。例えば、プロセッサ104は、「ツールに異常が発生している可能性があります」という音声又は画像の信号を生成し、制御装置102に設けられたスピーカ又はディスプレイ(図示せず)を通して出力する。そして、プロセッサ104は、
図11に示すフローを終了する。
【0101】
ステップS17において、プロセッサ104は、第2の警告信号を生成する。例えば、プロセッサ104は、「力センサに異常が発生している可能性があります」という音声又は画像の信号を生成し、制御装置102に設けられたスピーカ又はディスプレイを通して出力する。そして、プロセッサ104は、
図11に示すフローを終了する。
【0102】
以上のように、本実施形態においては、プロセッサ104は、ロボット20がツール44、64又は74を用いて作業を行っているときに、機械学習装置10が学習した学習モデルLMに基づいてツール44、64又は74の状態Sを判定している。この構成によれば、ツール44、64又は74に異常が発生しているか否かを、作業中に取得した力Fのデータから自動的且つ高精度に判定することができる。
【0103】
また、本実施形態においては、プロセッサ104は、ツール44、64又は74の状態Sが異常状態であると判定したときに、力センサ32の故障の有無を検知している。この構成によれば、オペレータがツール44、64又は74の状態Sを誤認してしまうのを防止することができるとともに、力センサ32の故障を特定できる。
【0104】
なお、ロボットシステム100から、故障検知部112の機能を削除することもできる。この場合、
図11に示すフローからステップS15及びS17が削除され、プロセッサ104は、ステップS13でYESと判定した場合に、ステップS16へ進む。また、ロボットシステム100の記憶部106は、制御装置102とは別の装置(外付けメモリ、外部サーバ、クラウド等)として設けられてもよい。
【0105】
また、上述の実施形態においては、プロセッサ104は、ステップS13でYESと判定した場合に、力センサ32の故障の有無を判定するプロセス(ステップS15)を実行する場合について述べたが、ステップS13でNOと判定した場合に、力センサ32の故障の有無を判定するプロセスを実行し、該力センサ32の故障があると判定した場合にステップS17へ進んでもよい。
【0106】
また、力センサ32は、ロボット20の如何なる位置に設けられてもよい。例えば、力センサ32は、ロボットのベース部22に設置されてもよい。また、力センサ32は、6軸力覚センサに限らず、例えば、ロボット20に内蔵された複数のサーボモータにそれぞれ設けられた複数のトルクセンサから構成されてもよい。この場合、トルクセンサは、対応するサーボモータに掛かるトルクを力Fとして検出し、力Fのデータを学習データ取得部12に供給する。
【0107】
また、上述の実施形態においては、研磨作業、切削加工、及び嵌入作業のためのツール44、64、及び74(エンドエフェクタ40、50、60、及び70)について述べたが、他の如何なる作業(例えば、スポット溶接)を行うためのツール(スポット溶接ガン)をロボット20に取り付けてもよい。また、ロボットは、垂直多関節型ロボットに限らず、水平多関節ロボット、又はパラレルリンクロボット等、如何なるタイプのロボットであってもよい。また、ロボットは、天井吊り下げタイプ、又は、壁掛けタイプのロボットであってもよい。
【0108】
また、
図10に示す実施形態においては、制御装置102のプロセッサ104が、学習データ取得部12及び学習部14として機能する場合について述べた。しかしながら、これに限らず、例えば、学習部14が、制御装置102とは別のコンピュータに実装されてもよい。
【0109】
この場合、該別のコンピュータは、制御装置102と通信可能に接続され、制御装置102のプロセッサ104が学習データ取得部12として取得した学習データセットDSを、該別のコンピュータに送信し、学習部14が、制御装置102から取得した学習データセットDSを用いて学習モデルLMを生成する。又は、学習データ取得部12及び学習部14を備える機械学習装置10が、該別のコンピュータに実装されてもよい。この場合、該別のコンピュータは、学習データ取得部12として機能して、力センサ32から力Fのデータを取得する。
【0110】
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0111】
10 機械学習装置
12 学習データ取得部
14 学習部
20 ロボット
32 力センサ
44,64,74 ツール
100 ロボットシステム
102 制御装置
104 プロセッサ
110 状態判定部
112 故障検知部