以下に、実施の形態にかかるロボット制御装置、ロボット制御方法およびロボット制御プログラムを図面に基づいて詳細に説明する。
実施の形態1.
図1は、実施の形態1にかかるロボット制御装置10の構成例を示す図である。図2は、実施の形態1にかかるロボット制御装置10を含むロボット制御システム40の構成例を示す図である。
ロボット制御システム40は、ロボット制御装置10と、ロボット30と、ハンド31とを備える。ハンド31は、ロボット30を構成するアームの先端部に取り付けられている。ロボット制御装置10は、ロボット30を制御する。ロボット制御システム40は、ロボット30およびハンド31の動作によって対象物を把持して、把持した対象物を指定した位置へ搬送する。図2に示すロボット制御システム40は、箱に入れられている対象物を取り出して、箱の外の指定された位置へ対象物を搬送する。
ロボット制御システム40の周辺機器として、ビジョンセンサといったセンシングデバイスが設置される。センシングデバイスは、対象物の位置を認識する。ロボット制御装置10は、対象物の位置の情報をセンシングデバイスから取得し、取得された情報を基にロボット指令を生成する。ロボット制御装置10は、ロボット30の駆動部へロボット動作指令を送る。駆動部の図示は省略する。駆動部がロボット動作指令に従ってロボット30を駆動することにより、ロボット30は、ロボット動作指令に従って動作する。
ハンド31は、ハンド制御装置によって制御される。ハンド制御装置の図示は省略する。ハンド31は、ハンド制御装置から送られるハンド動作指令に従って動作する。ロボット制御システム40は、ハンド制御装置を用いず、ロボット制御装置10がロボット30およびハンド31の双方を制御しても良い。
実施の形態1において、ハンド31は、開閉動作を行う2つの可動部を備える。ハンド31は、互いに向かい合う2つの可動部で対象物を掴むことで、対象物を把持する。ハンド31は、各可動部が互いに近づく向きに移動する閉動作によって、対象物を掴む。ハンド31は、対象物を掴んでいる状態から各可動部が互いに離れる向きに移動する開動作によって、掴んでいる対象物を離す。なお、ハンド31は、2つの可動部を備えるものに限られない。ハンド31に備えられる可動部の数は2つに限られず任意であるものとする。また、ハンド31は、可動部を備えるものに限られない。例えば、ハンド31は、吸引力を発生させる部位を備え、当該部位に対象物を吸着させることによって対象物を把持するものであっても良い。なお、以下の説明では、ハンド31の可動部を、指部と称する。
図1に示すように、ロボット制御装置10は、動作時間予測部11と、なじみ時間予測部12と、ハンド動作開始指示部13と、把持後動作指示部14と、記憶部15とを備える。また、ロボット制御装置10は、ロボット動作指令を生成する指令生成部を備える。指令生成部の図示は省略する。
動作時間予測部11は、ロボット動作時間T1を算出するロボット動作時間算出部16と、ハンド動作時間Tgspを算出するハンド動作時間算出部17とを備える。ロボット動作時間T1は、ロボット30のハンド31をロボット30が目的位置に到達させるまでに要する時間とする。ハンド動作時間Tgspは、ハンド31の動作が指令された時点から目的位置においてハンド31が対象物を把持する動作を終えるまでの時間とする。動作時間予測部11は、ロボット動作時間算出部16によりロボット動作時間T1を算出することによって、ロボット動作時間T1を予測する。ロボット動作時間算出部16は、ロボット動作時間T1に基づいてロボット残動作時間T0を算出する。ロボット残動作時間T0は、ロボット30の動作を開始した後の任意の時点からロボット30が目的位置に到達させるまでに要する時間である。動作時間予測部11は、ハンド動作時間算出部17によりハンド動作時間Tgspを算出することによって、ハンド動作時間Tgspを予測する。
動作時間予測部11は、ロボット残動作時間T0の値とハンド動作時間Tgspの値とをハンド動作開始指示部13へ出力する。ハンド動作開始指示部13は、ロボット動作時間T1の値に基づいて算出されたロボット残動作時間T0の値と、ハンド動作時間Tgspの値とを用いて、ハンド31の動作を開始させるタイミングを決定する。ハンド動作開始指示部13は、決定されたタイミングでのハンド31の動作開始を、ハンド制御装置に指示する。すなわち、ハンド動作開始指示部13は、予測されたロボット動作時間T1と予測されたハンド動作時間Tgspとに基づいて決定されたタイミングでのハンド31の動作開始を指示する。また、ハンド動作開始指示部13は、ハンド31の動作開始を指示した時点Tkを示す情報を把持後動作指示部14へ出力する。
なじみ時間予測部12は、なじみ時間Tfitを予測する。なじみ時間Tfitは、ハンド31が対象物の把持を開始してからハンド31が対象物になじむまでの時間とする。ハンド31が対象物になじむとは、ロボット30がハンド31を移動させてもハンド31が対象物を把持している状態を維持可能に、ハンド31と対象物との接触が安定することを指す。なじみ時間予測部12は、予測されたなじみ時間Tfitの値を把持後動作指示部14へ出力する。実施の形態1では、ハンド31が対象物を把持した時点からロボット30が次の動作を開始するまでの待ち時間の長さには、予測されたなじみ時間Tfitの長さが設定される。把持後動作指示部14は、ハンド31が対象物の把持を開始した時点から、予測されたなじみ時間Tfitが経過した後に、対象物を把持する動作の次に行われるロボット30の動作を指示する。
ロボット制御装置10には、対象物の位置Pの情報とハンド動作情報とが入力される。位置Pは、ビジョンセンサ等のセンサを用いて計測される。ロボット制御装置10に入力される位置Pの情報は、対象物が1回把持されるごとに更新される。ハンド動作情報は、対象物を把持するときのハンド31の動作についての情報である。実施の形態1において、ハンド動作情報は、差し込み量d、開き幅w、および把持力Fgspの各値を含む。
対象物を掴む閉動作が開始される前に、ハンド31の先端、すなわち各指部の先端は、対象物の周囲へ差し込まれる。差し込み量dは、対象物に対する各指部の差し込み度合いを表す。ここでは、対象物の中心位置を基準として、対象物の中心位置に各指部の先端が一致している状態を、d=0と定義する。対象物の中心位置に各指部の先端が一致しているとは、差し込み方向における各指部の先端の位置と、差し込み方向における対象物の中心位置とが互いに一致していることを指す。差し込み方向とは、閉動作の前におけるロボット30の動作によって各指部が移動する方向である。また、d=0であるときに比べて、ハンド31における各指部の付け根側に対象物の中心位置がある状態を、d>0とする。d=0であるときに比べて、対象物の中心位置が各指部の先端側にある状態を、d<0とする。開き幅wは、閉動作の開始時における各指部の先端部同士の間隔である。把持力Fgspは、ハンド31が対象物を把持している状態においてハンド31が対象物に及ぼす力である。
記憶部15は、ロボット制御系情報と、ハンド特性情報と、対象物特性情報とを記憶する。ロボット制御系情報は、ロボット30の駆動部を制御するロボット制御系の特性を示す情報である。ロボット制御系情報は、ロボット制御系によるフィードフォワード制御に使用される制御パラメータの値と、ロボット制御系によるフィードバック制御に使用される制御パラメータの値とのうち少なくとも1つを含む。ロボット制御系情報に含まれる制御パラメータは、ロボット制御系の応答性を決定するパラメータである。制御パラメータとしては、例えば、PID(Proportional Integral Differential)制御のP(Proportional)ゲイン、I(Integral)ゲインおよびD(Differential)ゲイン、一次遅れ要素の時定数、または、むだ時間要素のむだ時間といった、制御工学において定義されるパラメータである。なお、ロボット制御系情報に含まれる制御パラメータの種類は、ロボット制御系の構成によって異なる。
ハンド特性情報は、ハンド31の動作特性を示す情報である。ハンド特性情報は、開閉指令速度の値と、ハンド制御系情報と、機構パラメータの値とのうちの少なくとも1つを含む。開閉指令速度は、ハンド制御装置によって指令される速度であって、ハンド31の開閉動作における各指部の移動速度である。ハンド制御系情報は、ハンド31の開閉を制御するハンド制御系の特性を示す情報である。ハンド制御系情報は、ハンド制御系の制御パラメータの値を含む。
機構パラメータとは、ハンド31を駆動するアクチュエータまたは減速機といった要素の位置関係、または、ハンド31の指部における各部位の寸法を表現する値である。あるいは、機構パラメータとは、ハンド31に備え付けられたアクチュエータまたは減速機の減速比を表現する値である。ハンド31に備え付けられたアクチュエータは、モータまたは空気圧アクチュエータである。機構パラメータを使用することによって、ハンド31の位置または各指部の位置を計算することができる。機構パラメータは、ハンド31と対象物とが接触するタイミング、または、ハンド31と対象物の周囲にある物体とが接触するタイミングを計算するために用いられる。
ハンド31による把持の安定性を高めるために、ハンド31の指部のうち対象物に触れる部分である指腹部には、柔軟な素材が備えられることがある。この場合、指腹部への対象物の接触が開始されてから対象物の把持が安定するまでには、指腹部の変形によって指腹部に対象物がなじむまでの時間が必要となる。このような指腹部の特性を考慮するために、ハンド特性情報には、ハンド31の指部のうち対象物に触れる部分である指腹部の物性についての情報が含まれても良い。指腹部の物性についての情報は、指腹部の剛性Khの値、または、指腹部の粘性Dhの値などを含む。
対象物特性情報は、対象物の物性を示す情報である。対象物特性情報は、対象物の変形についての情報であって、剛性Kwの値または粘性Dwの値などを含む。
図2に示す位置Pgetは、ロボット30の動作によってハンド31の先端を到達させる目的位置とする。ロボット制御装置10には、次に把持する対象物の位置Pの情報が入力される。位置Pgetは、対象物の位置Pと差し込み量dとに基づいて決定される。図2に示す位置Pupは、ハンド31の先端を目的位置へ移動させるためのロボット30の動作を開始する時点におけるハンド31の位置とする。
ロボット制御システム40の周辺機器であるセンシングデバイスは、対象物を観測した結果を基に、対象物の位置Pと差し込み量dとを計算する。ここで計算される差し込み量dは、ハンド31の先端を位置Pgetに到達させた状態における差し込み量dである。ロボット制御装置10の指令生成部は、対象物の位置Pの情報と差し込み量dとに基づいて、ロボット動作指令を生成する。
位置Pupは、位置Pgetから上方へ一定の距離だけ離れた位置であって、ユーザが定義可能な位置である。位置Pupと位置Pgetとの間の距離には、ハンド31の先端が対象物の周辺にある物に触れることが無いような距離が設定される。位置Pupにおけるハンド31の姿勢には、位置Pgetにおいてハンド31が取る姿勢と同じ姿勢が設定される。このように、位置Pup、および位置Pupにおける姿勢が定義されることによって、位置Pupにハンド31が到達する直前におけるロボット30の動作に関わらず、毎回の把持動作における対象物とハンド31との相対位置関係を同じとすることができる。ロボット30は、対象物とハンド31との相対位置関係が毎回同じであることによって、再現性がある動作を実現できる。ここで生成されるロボット動作指令は、対象物の位置Pと差し込み量dとに基づいて求まる位置Pget、および、上述の定義に従って求まる位置Pupについて、位置Pupから位置Pgetへハンド31を移動させる動作をロボット30に行わせるためのロボット動作指令である。このように、対象物の位置Pの情報と、ハンド動作情報である差し込み量dの値とを基に、ロボット動作指令が生成される。
次に、ロボット制御装置10の動作について説明する。図3は、実施の形態1にかかるロボット制御装置10の動作時間予測部11によって予測されるロボット動作時間T1について説明するための図である。
ロボット動作時間T1は、ロボット動作指令に従ってロボット30が位置Pupから位置Pgetへハンド31を移動させる動作を行った場合におけるロボット30の動作時間である。ロボット動作時間T1の始点は、ロボット30が動作を開始した時点である。ロボット動作時間T1の終点は、ハンド31の先端の位置と位置Pgetとの誤差があらかじめ指定された範囲内となる時点である。ロボット動作時間算出部16は、ロボット動作指令を基に、ロボット動作時間T1を算出する。
時間Taは、ロボット30が動作を開始した時点からの経過時間である。ロボット動作時間算出部16は、時間Taを計測する。ロボット動作時間算出部16は、ロボット動作時間T1から時間Taを差し引くことによってロボット残動作時間T0を算出する。動作時間予測部11は、ロボット残動作時間T0を算出することによって、ハンド31の先端が対象物に到達するまでに要する時間を随時把握する。
ロボット動作時間算出部16は、ロボット動作模擬手段を備える。ロボット動作模擬手段は、ロボット動作指令の生成を模擬し、かつ、ロボット制御系の特性に応じたロボット30の動作を模擬する。ロボット動作模擬手段は、ロボット制御装置10へ入力された対象物の位置Pの情報を取得する。ロボット動作模擬手段は、ロボット制御装置10へ入力されたハンド動作情報から差し込み量dの値を取得する。ロボット動作模擬手段は、対象物の位置Pと差し込み量dとを基に、ロボット動作指令の生成を模擬する。
ロボット動作模擬手段は、ロボット制御系の特性に応じたロボット30の動作を模擬するためのフィルタ手段を備える。フィルタ手段とは、指令値に対する制御系および機械システムの挙動または応答を模擬し、挙動または応答の様子を表現するための数式モデルである。フィルタ手段には、例えば、伝達関数を用いることができる。フィルタ手段へ指令値が入力されることによって、フィルタ手段は、機械システムのうち当該指令値に従って動く部分について、当該指令値に応じた動作による変位量、当該指令値に応じた動作における速度の変化量、または、当該指令値に応じた動作における加速度の変化量を求めることができる。
フィルタ手段は、記憶部15に記憶されているロボット制御系情報を基に、ロボット30の動作を模擬する。ロボット動作模擬手段は、フィルタ手段にロボット動作指令を通すことによって、ロボット制御系の特性に応じたロボット30の動作を模擬する。なお、ロボット動作模擬手段およびフィルタ手段の図示は省略する。
ロボット動作時間算出部16は、ロボット動作模擬手段によりロボット30の動作を模擬した結果を基に、ハンド31の先端の実際の挙動を予測する。ロボット動作時間算出部16は、予測されたハンド31の挙動を基にロボット動作時間T1の終点を予測して、ロボット動作時間T1を算出する。このように、ロボット動作時間算出部16は、ロボット制御系情報を組み入れた計算によってロボット動作時間T1を算出する。動作時間予測部11は、ロボット制御系情報を組み入れた計算によりロボット動作時間T1を予測する。
ロボット動作時間算出部16は、ロボット制御系の特性に応じたロボット30の動作をロボット動作模擬手段によって模擬するものに限られない。ロボット動作時間算出部16は、ロボット制御系の特性に応じた、ロボット30の動作の遅れ時間Trsを算出するものであっても良い。ロボット動作時間算出部16は、ロボット動作指令に示される指令位置とロボット30を動作させる速度または加速度とを基に遅れ時間Trsを算出する近似関数を用いる。複数の動作条件によるロボット制御系の挙動があらかじめシミュレーションされることによって、シミュレーションの結果を基に、近似関数のパラメータの値を同定することができる。近似関数のパラメータの値は、記憶部15に記憶されるロボット制御系情報に含められる。ロボット動作時間算出部16は、ロボット制御系情報に含まれる近似関数のパラメータの値を基に、近似関数を用いた遅れ時間Trsの算出を行う。近似関数には、多項式を用いられても良く、ニューラルネットワークが用いられても良い。
ロボット動作時間算出部16は、ロボット動作指令に基づいて時間T1cを算出する。時間T1cは、位置Pupから位置Pgetへハンド31を移動させる動作を行った場合におけるロボット30の動作時間である。ロボット動作時間算出部16は、時間T1cに遅れ時間Trsを加算することによって、ロボット動作時間T1を算出する。このように、ロボット動作時間算出部16は、ロボット制御系情報を組み入れた計算によってロボット動作時間T1を算出する。すなわち、動作時間予測部11は、ロボット制御系情報を組み入れた計算によりロボット動作時間T1を予測する。さらに、ロボット動作時間T1を算出するために使用されるロボット動作指令は、上述するように、対象物の位置Pの情報とハンド動作情報である差し込み量dの値とを基に生成される。ロボット動作時間算出部16は、ロボット制御系情報と、対象物の位置Pの情報と、ハンド動作情報とを組み入れた計算によってロボット動作時間T1を算出するといえる。動作時間予測部11は、ロボット制御系情報と、対象物の位置Pの情報と、ハンド動作情報とを組み入れた計算によりロボット動作時間T1を予測するといえる。
ハンド動作時間算出部17は、ハンド動作模擬手段を備える。ハンド動作模擬手段は、ハンド動作指令を模擬し、かつ、ハンド制御系の特性に応じたハンド31の動作を模擬する。ハンド動作模擬手段は、ロボット制御装置10へ入力されるハンド動作情報から開き幅wの値を取得する。ハンド動作模擬手段は、記憶部15に記憶されているハンド特性情報から、機構パラメータである定数を取得する。ハンド動作模擬手段は、開き幅wの値に定数を乗算することによって、ハンド31のストロークを算出する。ハンド31のストロークとは、開動作と閉動作との各々におけるハンド31の先端の移動幅とする。ハンド動作模擬手段は、算出したストロークを基に、ハンド動作指令の生成を模擬する。
ハンド動作模擬手段は、ハンド制御系の特性に応じてハンド31の動作を模擬するためのフィルタ手段を備える。フィルタ手段は、記憶部15に記憶されているハンド特性情報のうちのハンド制御系情報を基に、ハンド31の動作を模擬する。ハンド動作模擬手段は、フィルタ手段にハンド動作指令を通すことによって、ハンド制御系の特性に応じたハンド31の動作を模擬する。なお、ハンド動作模擬手段およびフィルタ手段の図示は省略する。
ハンド動作時間算出部17は、ハンド動作模擬手段によりハンド31の各指部の動作を模擬した結果を基に、時間Tgsp_oを算出する。時間Tgsp_oは、各指部が動作を開始してから、各指部が動作を終えるまでの時間である。ハンド動作時間算出部17は、ハンド動作指令である信号の伝達に要する時間の予測値を時間Tgsp_oに加算することによって、ハンド動作時間Tgspを算出する。時間Tgsp_oには、模擬された指部の位置と指部の目標位置との差があらかじめ設定された値以下となるまでに経過する時間を採用することができる。
ここまで、動作時間予測部11が、ハンド動作情報のうち、対象物の位置Pの情報と差し込み量dおよび開き幅wの各値とを用いてロボット動作時間T1とハンド動作時間Tgspとを予測する例を説明した。動作時間予測部11は、対象物の位置Pの情報と、差し込み量dおよび開き幅wの各値とのうちの一部のみを用いてロボット動作時間T1とハンド動作時間Tgspとを予測しても良い。動作時間予測部11は、ロボット動作時間T1とハンド動作時間Tgspとの予測において差し込み量dの値を用いなくても良い。
上記説明は、把持の直前に対象物の近辺において、ハンド31の各指部の姿勢を固定するとともに、低い速度で直線方向にハンド31を移動させてハンド31を位置決めする場合の例とする。この場合は、差し込み量dを調整することで対象物の重心付近を把持し易くできるなど、把持の安定性を向上できることがある。一方、対象物の近辺に直線軌道を設けず、曲線軌道におけるハンド31の高速移動によってハンド31を位置決めする場合は、ロボット動作時間T1およびハンド動作時間Tgspの予測に差し込み量dは不要である。また、対象物を吸着させるハンドの場合、ハンド動作時間Tgspの予測に開き幅wの値は不要である。対象物を吸着させるハンドの場合、ハンド動作時間Tgspは、信号の伝達に要する時間の予測値とする。
図4は、実施の形態1にかかるロボット制御装置10による、ハンド31の動作開始の指示とロボット30の動作開始の指示とについて説明するための図である。図4には、ハンド31の位置の変化を表すグラフと、ハンド31の開閉状態を表すグラフとを示す。ハンド31の位置の変化を表すグラフにおいて、縦軸はハンド31の位置を表し、横軸は時間Tを表す。ハンド31の開閉状態を表すグラフにおいて、縦軸は開状態または閉状態を表し、横軸は時間Tを表す。
動作時間予測部11は、ロボット残動作時間T0の値とハンド動作時間Tgspの値とを基に、ロボット残動作時間T0の値がT0<Tgspを充足する値に到達したタイミングを検出する。動作時間予測部11は、当該タイミングを検出すると、T0<Tgspを充足するタイミングが到来したことをハンド動作開始指示部13へ伝達する。また、動作時間予測部11は、当該タイミングにおけるロボット残動作時間T0の値と、当該タイミングにおけるハンド動作時間Tgspの値とをハンド動作開始指示部13へ送る。
ハンド動作開始指示部13は、T0<Tgspを充足するタイミングが到来したときに、ハンド31による対象物の把持のための動作、すなわち閉動作の開始をハンド制御装置に指示する。ハンド動作開始指示部13は、閉動作命令をハンド制御装置へ送ることによって、閉動作の開始をハンド制御装置に指示する。ハンド動作開始指示部13による指示に従ってハンド制御装置がハンド31へハンド動作指令を送ることによって、ハンド31は閉動作を開始する。
ハンド動作開始指示部13は、時点Tkを示す情報、例えば、時点Tkを示す時刻情報を把持後動作指示部14へ送る。時点Tkは、T0<Tgspを充足した時点であって、ハンド動作開始指示部13がハンド制御装置に閉動作の開始を指示した時点である。さらに、ハンド動作開始指示部13は、ハンド動作時間Tgspの値と経過時間Tpの値との差分Tgsp-Tpを、随時、把持後動作指示部14へ送る。
動作時間予測部11は、補正量ΔTを設定しておき、T0<Tgspを充足するタイミングの代わりに、T0<(Tgsp-ΔT)を充足するタイミングを検出しても良い。動作時間予測部11は、当該タイミングを検出すると、T0<(Tgsp-ΔT)を充足するタイミングが到来したことをハンド動作開始指示部13へ伝達する。また、動作時間予測部11は、当該タイミングにおけるロボット残動作時間T0の値と、当該タイミングにおけるハンド動作時間Tgspの値と、補正量ΔTの値とを、ハンド動作開始指示部13へ送る。
ここで、補正量ΔTの例について説明する。ここでは、対象物の外形を半径Rwの球体に近似する。また、対象物は、外力を受けることによって容易に変形するものとする。開状態におけるハンド31の開き幅をw、対象物を把持可能にハンド31が閉じた状態におけるハンド31の開き幅をwcとする。ハンド31が開状態から閉じる過程における開き幅waが2Rwになった時点でハンド31は対象物に接触する。
wa=2Rwの状態からさらにハンド31が閉じることによって、ハンド31の指部同士が向かい合う方向における対象物の幅が2Rwよりも小さい2Rwcとなるまで対象物が変形したとする。このとき、対象物とハンド31の指部との間には垂直抗力Fnが発生する。垂直抗力Fnに対する摩擦力の発生と、指部同士の間における対象物の幾何学的な拘束とによって、ハンド31による対象物の把持が可能となる。このように、ハンド31が閉じていき、開き幅が2Rwとなって指部が対象物に触れる状態となってから、さらにハンド31は、開き幅が2Rwcになるまで閉じる。この場合、ロボット制御装置10は、T0=0の時点でハンド31の開き幅が2Rwcとなるように、閉動作の開始をハンド制御装置に指示する。これにより、ロボット制御装置10は、ΔT>0のときにおいて、ロボット30の動作が終了するタイミングで指部を対象物に接触させることができる。また、ロボット制御装置10は、ロボット30の動作中において対象物に指部を接触させないようにすることで、把持の失敗を低減できる。
なお、T0≦Tgspを充足することを初めて検出した時点で閉動作を開始した場合、ロボット30の動作中にwa<2Rwを充足する状態となる。この場合、ロボット30の動作中にハンド31の指部が対象物に接触し始めることになるため、把持が失敗することがある。これに対し、補正量ΔTが適宜設定されることによって、指部が対象物に接触し始めるタイミングを、ロボット30の動作が終わる時点に合わせることができる。すなわち、補正量ΔTが適宜設定されることによって、T0=0の時点における開き幅を2Rwとすることができる。これにより、ハンド31による把持の成功率を向上させることができる。
上記説明では対象物の外形を球体に近似することとしたが、対象物の外形を直方体に近似することとしても良い。この場合、指部同士が向かい合う方向における対象物の長さLwに基づいて補正量ΔTが適宜設定されることによって、ハンド31による把持の成功率を向上させることができる。
なじみ時間予測部12は、ハンド特性情報および対象物特性情報の少なくとも一方と、開き幅wとに基づいてなじみ時間Tfitを算出するための関数を保持する。なじみ時間予測部12は、ハンド特性情報である剛性Khの値または粘性Dhの値と、対象物特性情報である剛性Kwの値または粘性Dwの値との少なくとも一方を組み入れた計算により、なじみ時間Tfitを算出する。なじみ時間予測部12は、なじみ時間Tfitの値を把持後動作指示部14へ送る。
対象物が変形したとしても変形が不十分である場合、ロボット30の動作による慣性力が対象物に生じ、対象物のうち指部と接触している部分が滑ることによって、対象物がハンド31から抜け落ちることがある。ハンド31の指部のうち指腹部の物性に関わる情報と、対象物の変形に関わる情報との少なくとも一方を計算に組み入れることで、なじみ時間予測部12は、対象物を十分に変形させ得るなじみ時間Tfitを算出することができる。これにより、ハンド31による把持の成功率を向上させることができる。
なお、実施の形態1において、対象物の変形とは、対象物の全体が変形する場合と、対象物の一部が変形する場合とを含むものとする。対象物のうち、対象物の表面に形成されている突起等のみが変形する場合も、対象物の変形には含まれる。対象物が変形する態様は、特定の態様に限定されないものとする。
実施の形態1において、なじみ時間Tfitを算出するための関数は、開き幅w、対象物の剛性Kw、およびなじみ時間Tfitの関係を表す表形式のデータベースである。表形式のデータベースは、開き幅wおよび剛性Kwの2次元の表に限られず、対象物の種類ごとの開き幅wおよびなじみ時間Tfitの表であっても良い。開き幅w、対象物の剛性Kw、およびなじみ時間Tfitの関係は、ロボット30およびハンド31による把持動作を検証することによりあらかじめ求められる。以下、対象物の種類ごとの開き幅wおよびなじみ時間Tfitの表を例として、表の作成について説明する。
表を作成するためのデータの取得に際し、互いに異なる大きさの複数の対象物が準備される。複数の対象物の各々について、ハンド31によって対象物を把持してロボット30により対象物を上昇させる一連の動作の検証により、把持の成否が判定される。具体的には、ハンド31が閉動作を開始した時点から時間Tgsp+Tbが経過した時点で対象物の上昇を開始させる動作をロボット30に行わせて、把持の成功率が算出される。時間Tbは、あらかじめ定められた刻み時間だけ0秒から徐々に増加させる。互いにTbを異ならせた各時間Tgsp+Tbについてあらかじめ定められた回数の検証が行われ、把持を成功した回数を基に、各時間Tgsp+Tbについての成功率が算出される。対象物を上昇させた状態でロボット30を停止させ、ロボット30を停止させた位置で対象物が把持されているか否かが、ビジョンセンサを用いて判定される。
対象物が把持されているか否かの判定には、ビジョンセンサの代わりに力覚センサが用いられても良い。力覚センサの出力を基に、把持の成否が判定される。力覚センサは、ロボット30のうちハンド31との接続部分である手首部に取り付けられる。または、ビジョンセンサの代わりにレーザ変位計を用いて、レーザ変位計による計測結果を基に把持の成否が判定されても良い。
算出される成功率があらかじめ定められた閾値以上となるか、または、時間Tbがあらかじめ定められた上限値Tblimに達した場合に、刻み時間ごとの時間Tbの増加を終了する。作成される表には、時間Tbの増加を終了した時点における開き幅wおよびなじみ時間Tfitの各値が、互いに対応付けられて書き込まれる。開き幅wの値には、検証に使用された対象物の幅の値が採用される。なじみ時間Tfitの値には、成功率が閾値以上となった場合における時間Tbの値が採用される。
なお、開き幅w、剛性Kw、およびなじみ時間Tfitの表を作成する場合、開き幅wをあらかじめ定められた幅w0にしてハンド31が対象物を挟んだときの把持力Fgspの値を基に、対象物の剛性Kwの値が導き出される。把持力Fgspの値は、ロボット制御装置10へ入力されるハンド動作情報から取得される。表には、剛性Kwの値ごとに、剛性Kw、開き幅wおよびなじみ時間Tfitの各値が互いに対応付けられて書き込まれる。
開き幅wが、表に示されている値同士の中間の値である場合、すなわち、対象物の幅が当該中間の値である対象物については、表に示されているなじみ時間Tfitの複数の値の線形補間によって、なじみ時間Tfitが算出される。この場合の線形補間に使用される値は、例えば、当該中間の値の両隣のデータ点である開き幅wの各値に対応するなじみ時間Tfitの各値である。対象物の剛性Kwが、表に示されている値同士の中間の値である場合も、当該対象物についてのなじみ時間Tfitは、表に示されているなじみ時間Tfitの複数の値の線形補間によって算出される。この場合の線形補間に使用される値は、例えば、当該中間の値の両隣のデータ点である剛性Kwの各値に対応するなじみ時間Tfitの各値である。
把持後動作指示部14には、なじみ時間Tfitの値が入力される。把持後動作指示部14には、把持動作の開始が指示された時点Tkを示す情報がハンド動作開始指示部13から入力される。さらに、ハンド動作時間Tgspの値と経過時間Tpの値との差分Tgsp-Tpが、ハンド動作開始指示部13から把持後動作指示部14へ随時入力される。
把持後動作指示部14は、Tgsp-Tp=0となった時点からの経過時間となじみ時間Tfitとを比較する。把持後動作指示部14は、Tgsp-Tp=0となった時点からの経過時間がなじみ時間Tfitを超えた時点において、対象物を把持した後の次のロボット動作指令の出力を指令生成部に指示する。このようにして、把持後動作指示部14は、ハンド31が対象物の把持を開始した時点から、予測されたなじみ時間Tfitが経過した後に、ハンド31が対象物を把持する動作を終えた次のロボット30の動作開始を指示する。ロボット動作指令に従って駆動部がロボット30を駆動することにより、ロボット30は、対象物を把持した後の次の動作を開始する。
ロボット動作時間算出部16においてロボット動作指令に基づいて時間T1cを算出する場合は、ロボット制御装置10は、以下に説明する処理を行うこととしても良い。上記説明では、ロボット動作時間算出部16は、ロボット動作指令に従ってロボット30が1つの動作を行った場合における時間T1cを算出した。時間T1cは、ロボット動作指令に従ってロボット30が1つの動作を行った場合における動作時間ではなく、ロボット動作指令に従ってロボット30が2つの連続する動作を行った場合における動作時間の合計であっても良い。ここで、点Psから点Peまでハンド31を移動させる動作を1つの動作とした場合に、2つの動作とは、1つの動作に続いて点Peから点Pe2へハンド31を移動させる動作とする。2つの動作により、2つの連続した軌道Ps-Pe,Pe-Pe2においてハンド31を移動させる。
例えば、ロボット動作指令に従った2つの動作によって、点Psから対象物の近辺の点Peへハンド31を移動させた後に、点Peから点Pe2へ、差し込み量dに相当する直線移動をハンド31に行わせるとする。この場合、ロボット動作時間算出部16は、点Psからのハンド31の移動を開始させる時点から、点Pe2へのハンド31の移動が終了するまでの時間T1cを算出する。ハンド動作開始指示部13は、差し込み量dに相当する直線移動の開始前か、または、当該直線移動の途中かに関わらず、T0<Tgspを充足した時点Tkにおいて閉動作命令をハンド制御装置へ送る。
次に、ロボット制御装置10の動作手順について説明する。図5は、実施の形態1にかかるロボット制御装置10の動作手順を示すフローチャートである。
ステップS1において、ロボット制御装置10は、対象物の位置Pの情報とハンド動作情報とを取得する。ステップS2において、ロボット制御装置10は、ハンド動作時間算出部17において、ハンド特性情報を組み入れた計算によりハンド動作時間Tgspを算出する。ステップS2は、ハンド動作時間Tgspを予測するステップである。
ステップS3において、ロボット制御装置10は、なじみ時間予測部12においてなじみ時間Tfitを算出する。ステップS3は、なじみ時間Tfitを予測するステップである。なじみ時間予測部12は、ハンド特性情報および対象物特性情報の少なくとも一方と、ハンド動作情報とを組み入れた計算により、なじみ時間Tfitを算出する。
ステップS4において、ロボット制御装置10は、ロボット動作時間算出部16において、ロボット残動作時間T0を算出する。動作時間予測部11は、ロボット残動作時間T0を算出する前に、ロボット制御系情報と、位置Pの情報と、ハンド動作情報とを組み入れた計算を行うことにより、ロボット動作時間T1を予測する。ロボット動作時間算出部16は、ロボット動作時間T1から経過時間である時間Taを差し引くことによって、ロボット残動作時間T0を算出する。なお、ステップS2と、ステップS3と、ロボット動作時間T1を予測するステップとの順序は任意とする。ロボット制御装置10は、ステップS2と、ステップS3と、ロボット動作時間T1を予測するステップとの各手順のうち2つ以上を同時に行っても良い。
ステップS5において、ロボット制御装置10は、動作時間予測部11において、T0<Tgspを充足したか否かを判断する。T0<Tgspを充足していない場合(ステップS5,No)、ロボット制御装置10は、ステップS4へ手順を戻し、再びロボット残動作時間T0を算出する。T0<Tgspを充足した場合(ステップS5,Yes)、ロボット制御装置10は、ステップS6へ手順を進める。
ステップS6において、ロボット制御装置10は、ハンド動作開始指示部13により、ハンド31の動作開始をハンド制御装置に指示する。ステップS6は、予測されたロボット動作時間T1と予測されたハンド動作時間Tgspとに基づいて決定されたタイミングでのハンド31の動作開始を指示するステップである。
ステップS7において、ロボット制御装置10は、把持後動作指示部14において、把持が開始された時点からなじみ時間Tfitが経過したか否かを判断する。把持が開始された時点からなじみ時間Tfitが経過していない場合(ステップS7,No)、ロボット制御装置10は、ステップS7の手順を繰り返す。把持が開始された時点からなじみ時間Tfitが経過した場合(ステップS7,Yes)、ロボット制御装置10は、ステップS8へ手順を進める。
ステップS8において、ロボット制御装置10は、把持後動作指示部14により、対象物を把持する動作の次に行われるロボット30の動作を指示する。ステップS8は、ハンド31が対象物の把持を開始した時点から、予測されたなじみ時間Tfitが経過した後に、対象物を把持する動作の次に行われるロボット30の動作を指示するステップである。以上により、ロボット制御装置10は、図5に示す手順による動作を終了する。
実施の形態1によると、ロボット制御装置10は、ロボット制御系情報を組み入れた計算によりロボット動作時間T1を予測することで、ロボット制御系の特性に起因するロボット30の動作の遅れを加味して、ハンド31の動作開始を指示するタイミングを調整することができる。ロボット制御装置10は、ハンド動作情報を組み入れた計算によりロボット動作時間T1を予測することで、対象物の大きさに応じたハンド31の動作の態様を加味して、ハンド31の動作開始を指示するタイミングを調整することができる。ロボット制御装置10は、ハンド特性情報を組み入れた計算によりハンド動作時間Tgspを予測することで、ハンド31の動作特性を加味して、ハンド31の動作開始を指示するタイミングを調整することができる。ロボット制御装置10は、熟練者による長時間に及ぶ調整が行われなくても、把持動作に要する時間を短縮するために、ハンド31の動作を指示するタイミングを正確に調整することができる。以上により、ロボット制御装置10は、ロボット30およびハンド31による把持動作に要する時間を短縮するために、ハンド31の動作を指示するタイミングを正確に調整することができるという効果を奏する。
さらに、実施の形態1によると、ロボット制御装置10は、なじみ時間Tfitを予測して、ハンド31が対象物の把持を開始した時点から、予測されたなじみ時間Tfitが経過した後に、把持動作の次に行われるロボット30の動作を指示する。ロボット制御装置10は、把持動作の次の動作開始のタイミングを調整するための試行錯誤が行われなくても、把持動作の次の動作を開始させるタイミングを適切に調整することができる。
実施の形態2.
図6は、実施の形態2にかかるロボット制御装置10Aの構成例を示す図である。ロボット制御装置10Aは、実施の形態1で説明した動作時間予測部11と同様の動作時間予測部11Aを備える。また、ロボット制御装置10Aには、実施の形態1で説明したなじみ時間予測部12は備えられていない。実施の形態2では、上記の実施の形態1と同一の構成要素には同一の符号を付し、実施の形態1とは異なる構成について主に説明する。
実施の形態2において、把持後動作指示部14は、ハンド31が対象物を把持した時点からロボット30が次の動作を開始するまでの待ち時間Twの値を記憶する。待ち時間Twの値は、ロボット30の制御のためのプログラムによりあらかじめ指定されている。または、待ち時間Twの値は、ロボット制御装置10Aのパラメータ値としてあらかじめ指定されている。待ち時間Twは、あらかじめ設定されたなじみ時間Tfitに相当する。
待ち時間Twには、対象物に応じて互いに異なる時間が設定されても良い。例えば、ある型式のハンド31を使用する場合において、金属製の対象物を把持する場合には待ち時間Twとして時間Tw1が設定され、樹脂製の対象物を把持する場合には待ち時間Twとして時間Tw2が設定されることとしても良い。
把持後動作指示部14は、Tgsp-Tp=0となった時点からの経過時間と待ち時間Twとを比較する。把持後動作指示部14は、Tgsp-Tp=0となった時点からの経過時間が待ち時間Twを超えた時点において、対象物を把持した後の次のロボット動作指令の出力を指令生成部に指示する。このようにして、把持後動作指示部14は、ハンド31が対象物の把持を開始した時点から待ち時間Twが経過した後に、対象物を把持する動作の次に行われるロボット30の動作開始を指示する。ロボット動作指令に従って駆動部がロボット30を駆動することにより、ロボット30は、対象物を把持した後の次の動作を開始する。
実施の形態2によると、ロボット制御装置10Aは、実施の形態1の場合と同様に、ロボット30およびハンド31による把持動作に要する時間を短縮するために、把持動作を指示するタイミングを正確に調整することができる。また、ロボット制御装置10Aは、把持動作の次の動作開始のタイミングを調整するための試行錯誤が行われなくても、把持動作の次の動作を開始させるタイミングを適切に調整することができる。
実施の形態3.
図7は、実施の形態3にかかるロボット制御装置10Bの構成例を示す図である。ロボット制御装置10Bは、把持制御パラメータ更新部18を備える点が、実施の形態1にかかるロボット制御装置10とは異なる。また、ロボット制御装置10Bは、実施の形態1で説明した動作時間予測部11とは異なる動作時間予測部11Bと、実施の形態1で説明したなじみ時間予測部12とは異なるなじみ時間予測部12Bとを備える。実施の形態3では、上記の実施の形態1または2と同一の構成要素には同一の符号を付し、実施の形態1または2とは異なる構成について主に説明する。
把持制御パラメータ更新部18には、対象物の位置Pの情報と、ハンド動作情報と、成否情報とが入力される。成否情報は、対象物の把持の成否についての情報である。把持制御パラメータ更新部18は、把持制御パラメータを更新させる。把持制御パラメータは、把持動作を制御するためのパラメータである。ここでは、把持制御パラメータは、ハンド動作時間Tgspおよびなじみ時間Tfitであるものとする。把持制御パラメータ更新部18は、ロボット30およびハンド31の動作の検証により把持の成否を判定した結果を示す成否情報を取得する。成否情報としては、前回の把持動作である1回の把持動作における把持の成否を判定した結果を示す情報を用いることができる。なお、同じ把持制御パラメータの値を使用して複数回の検証を行った場合には、成否情報は、把持の成功率を示す値とする。以下、同じ把持制御パラメータの値を使用して複数回の検証を行う場合を例に挙げて説明する。
把持制御パラメータ更新部18には、成否情報と、前回の把持動作におけるハンド動作情報とが入力される。把持制御パラメータ更新部18は、新しいハンド動作情報を動作時間予測部11へ出力する。新しいハンド動作情報は、次回の把持動作におけるハンド31の動作についての更新された情報である。また、把持制御パラメータ更新部18は、対象物の位置Pの情報を動作時間予測部11Bへ出力する。
動作時間予測部11Bは、実施の形態1の動作時間予測部11と同様に、ロボット動作時間算出部16を備える。動作時間予測部11Bには、実施の形態1で説明したハンド動作時間算出部17は備えられていない。
次に、ロボット制御装置10Bの動作について説明する。把持制御パラメータの更新を繰り返しながらロボット30およびハンド31の動作が検証される。実施の形態3では、把持制御パラメータ更新部18は、ハンド動作時間Tgspの更新を繰り返しながら検証が行われることによって取得された成否情報に基づいてハンド動作時間Tgspの値を決定する。また、把持制御パラメータ更新部18は、なじみ時間Tfitの更新を繰り返しながら検証が行われることによって取得された成否情報に基づいてなじみ時間Tfitの値を決定する。
把持制御パラメータ更新部18は、ある決められた刻み幅Tgでハンド動作時間Tgspの値を変化させることによるハンド動作時間Tgspの調整によって、ハンド動作時間Tgspを更新する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの更新を繰り返す際における、ハンド動作時間Tgspの最大値Tgsp_maxおよびハンド動作時間Tgspの最小値Tgsp_minを記憶する。また、把持制御パラメータ更新部18は、刻み幅Tgの値を記憶する。なお、ハンド動作時間Tgspの更新においてハンド動作時間Tgspの値を変化させる態様は、実施の形態3で説明するものに限られず、適宜変更可能であるものとする。
把持制御パラメータ更新部18は、ある決められた刻み幅Tfでなじみ時間Tfitの値を変化させることによるなじみ時間Tfitの調整によって、なじみ時間Tfitを更新する。把持制御パラメータ更新部18は、なじみ時間Tfitの更新を繰り返す際における、なじみ時間Tfitの最大値Tfit_maxおよびなじみ時間Tfitの最小値Tfit_minを記憶する。また、把持制御パラメータ更新部18は、刻み幅Tfの値を記憶する。なお、なじみ時間Tfitの更新においてなじみ時間Tfitの値を変化させる態様は、実施の形態3で説明するものに限られず、適宜変更可能であるものとする。
ここで、ハンド動作時間Tgspの値となじみ時間Tfitの値とを決定する際におけるロボット制御装置10Bの動作について説明する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの値を決定し、その後、なじみ時間Tfitの値を決定する。ロボット制御装置10Bは、なじみ時間Tfitの値を最大値Tfit_maxに固定し、かつ、ハンド動作時間Tgspの値を最小値Tgsp_minから刻み幅Tgごとに順次増加させて、ロボット30およびハンド31の動作を検証する。ロボット制御装置10Bは、かかる検証によって、ハンド動作時間Tgspの値を決定する。
把持制御パラメータ更新部18は、ハンド動作時間Tgspの値を決定するための動作の開始時に、ハンド動作時間Tgspの値には最小値Tgsp_minを設定し、なじみ時間Tfitの値には最大値Tfit_maxを設定する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの値、すなわち最小値Tgsp_minを動作時間予測部11Bへ出力する。把持制御パラメータ更新部18は、なじみ時間Tfitの値、すなわち最大値Tfit_maxをなじみ時間予測部12Bへ出力する。
実施の形態1の場合と同様に、動作時間予測部11Bは、ロボット動作時間算出部16において、ロボット制御系情報と、位置Pの情報と、ハンド動作情報とを組み入れた計算によってロボット動作時間T1を算出する。動作時間予測部11Bは、ロボット制御系情報と、位置Pの情報と、ハンド動作情報とを組み入れた計算によりロボット動作時間T1を予測する。ロボット動作時間算出部16は、ロボット動作時間T1から経過時間である時間Taを差し引くことによって、ロボット残動作時間T0を算出する。
動作時間予測部11Bは、ロボット残動作時間T0の値と、入力されたハンド動作時間Tgspの値とを比較する。実施の形態1の場合と同様に、動作時間予測部11Bは、ロボット残動作時間T0の値がT0<Tgspを充足する値に到達したタイミングを検出する。動作時間予測部11Bは、当該タイミングを検出すると、T0<Tgspを充足するタイミングが到来したことをハンド動作開始指示部13へ伝達する。また、動作時間予測部11Bは、当該タイミングにおけるロボット残動作時間T0の値と、当該タイミングにおけるハンド動作時間Tgspの値とをハンド動作開始指示部13へ送る。
実施の形態1の場合と同様に、ハンド動作開始指示部13は、時点Tkを示す情報、例えば、時点Tkを示す時刻情報を把持後動作指示部14へ送る。さらに、ハンド動作開始指示部13は、動作時間予測部11Bから入力されたハンド動作時間Tgspの値と経過時間Tpの値との差分Tgsp-Tpを、随時、把持後動作指示部14へ送る。
実施の形態1の場合と同様に、動作時間予測部11Bは、補正量ΔTを設定しておき、T0<Tgspを充足するタイミングの代わりに、T0<Tgsp-ΔTを充足するタイミングを検出しても良い。動作時間予測部11Bは、当該タイミングを検出すると、T0<Tgsp-ΔTを充足するタイミングが到来したことをハンド動作開始指示部13へ伝達する。また、動作時間予測部11Bは、当該タイミングにおけるロボット残動作時間T0の値と、当該タイミングにおけるハンド動作時間Tgspの値と、補正量ΔTの値とを、ハンド動作開始指示部13へ送る。
実施の形態1の場合と同様に、ロボット制御装置10Bは、T0=0の時点でハンド31の開き幅が2Rwcとなるように、ハンド31による閉動作の開始をハンド制御装置に指示する。これにより、ロボット制御装置10Bは、ΔT>0のときにおいて、ロボット30の動作が終了するタイミングで指部を対象物に接触させることができる。また、ロボット制御装置10Bは、ロボット30の動作中において対象物に指部を接触させないようにすることで、把持の失敗を低減できる。
なじみ時間予測部12Bは、把持制御パラメータ更新部18から入力されたなじみ時間Tfitの値を、そのまま把持後動作指示部14へ出力する。実施の形態1の場合と同様に、把持後動作指示部14には、時点Tkを示す情報と、ハンド動作時間Tgspの値と経過時間Tpの値との差分Tgsp-Tpとが入力される。把持後動作指示部14は、Tgsp-Tp=0となった時点からの経過時間がなじみ時間Tfitを超えた時点において、対象物を把持した後の次のロボット動作指令の出力を指令生成部に指示する。ロボット動作指令に従って駆動部がロボット30を駆動することにより、ロボット30は、対象物を把持した後の次の動作を開始する。
ロボット30の動作後に、ロボット30を停止させた位置で対象物が把持されているか否かが、ビジョンセンサを用いて判定される。このように、ハンド31によって対象物を把持してロボット30により対象物を上昇させる一連の動作の検証により、把持の成否が判定される。あらかじめ設定された回数の動作をロボット30とハンド31とに行わせることによって、把持の成功率が算出される。把持制御パラメータ更新部18には、成功率の値を示す把持情報が入力される。
成功率があらかじめ設定された閾値以上である場合、把持制御パラメータ更新部18は、ハンド動作時間Tgspの最小値Tgsp_minに刻み幅Tgを加算した値を動作時間予測部11Bへ出力する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの値に刻み幅Tgを加算することによりハンド動作時間Tgspを更新する。ロボット制御装置10Bは、更新されたハンド動作時間Tgspについて、上記説明と同様の動作を繰り返し、成功率の値を取得する。
把持制御パラメータ更新部18は、成功率が閾値以下となるか、または、ハンド動作時間Tgspの値が最大値Tgsp_maxに到達するまで、ハンド動作時間Tgspの更新を繰り返すとともに成功率を取得する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの更新と検証とを繰り返す間において成功率が閾値以下となること無く、ハンド動作時間Tgspが最大値Tgsp_maxに到達した場合は、最大値Tgsp_maxを、ハンド動作時間Tgspの値に決定する。把持制御パラメータ更新部18は、ハンド動作時間Tgspの更新と検証とを繰り返す間において成功率が閾値以下となった場合、成功率が閾値以下となった検証の1つ前の検証の際に設定されていたハンド動作時間Tgspの値を、ハンド動作時間Tgspの値に決定する。
このようにして、把持制御パラメータ更新部18は、ハンド動作時間Tgspの更新を繰り返しながら検証が行われて取得された成否情報に基づいてハンド動作時間Tgspの値を決定する。動作時間予測部11Bは、把持制御パラメータ更新部18によって成否情報に基づいて決定されたハンド動作時間Tgspの値を、予測されたハンド動作時間Tgspの値として出力する。
次に、ロボット制御装置10Bは、なじみ時間Tfitの値を決定するための動作を行う。ロボット制御装置10Bは、ハンド動作時間Tgspの値を、決定された値に固定し、かつ、なじみ時間Tfitの値を最大値Tfit_maxから刻み幅Tfごとに順次減少させて、ロボット30およびハンド31の動作を検証する。ロボット制御装置10Bは、かかる検証によって、なじみ時間Tfitの値を決定する。
把持制御パラメータ更新部18は、なじみ時間Tfitの値を決定する動作の開始時に、なじみ時間Tfitには最大値Tfit_maxを設定する。把持制御パラメータ更新部18は、なじみ時間Tfitの値、すなわち最大値Tfit_maxをなじみ時間予測部12Bへ出力する。ハンド動作時間Tgspの値を決定する場合と同様に、なじみ時間Tfitの値を決定する場合も、あらかじめ設定された回数の動作をロボット30とハンド31とに行わせることによって、把持の成功率が算出される。把持制御パラメータ更新部18には、成功率の値を示す把持情報が入力される。
成功率があらかじめ設定された閾値以上である場合、把持制御パラメータ更新部18は、なじみ時間Tfitの最大値Tfit_maxから刻み幅Tfを減算した値をなじみ時間予測部12Bへ出力する。把持制御パラメータ更新部18は、なじみ時間Tfitの値から刻み幅Tfを減算することによりなじみ時間Tfitを更新する。ロボット制御装置10Bは、更新されたなじみ時間Tfitについて、上記説明と同様の動作を繰り返し、成功率の算出結果を取得する。
把持制御パラメータ更新部18は、成功率が閾値以下となるか、または、なじみ時間Tfitの値が最小値Tfit_minに到達するまで、なじみ時間Tfitの更新を繰り返すとともに成功率を取得する。把持制御パラメータ更新部18は、なじみ時間Tfitの更新と検証とを繰り返す間において成功率が閾値以下となること無く、なじみ時間Tfitの値が最小値Tfit_minに到達した場合は、最小値Tfit_minを、なじみ時間Tfitの値に決定する。把持制御パラメータ更新部18は、なじみ時間Tfitの更新と検証とを繰り返す間において成功率が閾値以下となった場合、成功率が閾値以下となった検証の1つ前の検証の際に設定されていたなじみ時間Tfitの値を、なじみ時間Tfitの値に決定する。
このようにして、把持制御パラメータ更新部18は、なじみ時間Tfitの更新を繰り返しながら検証が行われて取得された成否情報に基づいてなじみ時間Tfitの値を決定する。なじみ時間予測部12Bは、把持制御パラメータ更新部18によって成否情報に基づいて決定されたなじみ時間Tfitの値を、予測されたなじみ時間Tfitの値として出力する。
ここまで、把持制御パラメータ更新部18が、ハンド動作時間Tgspとなじみ時間Tfitとを更新させ、かつ成否情報に基づいてハンド動作時間Tgspの値となじみ時間Tfitの値とを決定する例を説明した。実施の形態3では、把持制御パラメータ更新部18は、ハンド動作時間Tgspの代わりに、ロボット30の動作の遅れ時間Trsを更新させて、成否情報に基づいて遅れ時間Trsの値を決定しても良い。実施の形態3では、把持制御パラメータは、ロボット制御系情報である遅れ時間Trs、および、なじみ時間Tfitであっても良い。
把持制御パラメータ更新部18は、遅れ時間Trsの更新を繰り返しながら検証が行われて取得された成否情報に基づいて遅れ時間Trsの値を決定する。動作時間予測部11Bは、ロボット動作時間算出部16において、決定された遅れ時間Trsの値を組み入れた計算によってロボット動作時間T1を算出する。動作時間予測部11Bは、決定された遅れ時間Trsの値を組み入れた計算によりロボット動作時間T1を予測する。
把持制御パラメータ更新部18は、ある決められた刻み幅Trで遅れ時間Trsの値を変化させることによる遅れ時間Trsの調整によって、遅れ時間Trsを更新する。把持制御パラメータ更新部18は、遅れ時間Trsの更新を繰り返す際における、遅れ時間Trsの最大値Trs_maxおよび遅れ時間Trsの最小値Trs_minを記憶する。また、把持制御パラメータ更新部18は、刻み幅Trの値を記憶する。なお、遅れ時間Trsの更新において遅れ時間Trsの値を変化させる態様は、実施の形態3で説明するものに限られず、適宜変更可能であるものとする。
ここで、遅れ時間Trsの値を決定する際におけるロボット制御装置10Bの動作について説明する。把持制御パラメータ更新部18は、遅れ時間Trsの値を決定し、その後、なじみ時間Tfitの値を決定する。ロボット制御装置10Bは、なじみ時間Tfitの値を固定の値とし、かつ、遅れ時間Trsの値を最大値Trs_maxまたは最小値Trs_minから刻み幅Trで変化させて、ロボット30およびハンド31の動作を検証する。ロボット制御装置10Bは、かかる検証によって、遅れ時間Trsの値を決定する。
把持制御パラメータ更新部18は、遅れ時間Trsの値を決定するための動作の開始時に、遅れ時間Trsの値には最大値Trs_maxまたは最小値Trs_minを設定する。把持制御パラメータ更新部18は、遅れ時間Trsの値を動作時間予測部11Bへ出力する。実施の形態1の場合と同様に、ロボット動作時間算出部16は、ロボット動作指令に基づいて時間T1cを算出する。ロボット動作時間算出部16は、時間T1cに遅れ時間Trsを加算することによって、ロボット動作時間T1を算出する。ロボット動作時間算出部16は、ロボット30が動作を開始した時点からの経過時間である時間Taをロボット動作時間T1から差し引くことによってロボット残動作時間T0を算出する。
把持制御パラメータ更新部18は、成功率が閾値以下となるか、あるいは、遅れ時間Trsの値が最大値Trs_maxまたは最小値Trs_minに到達するまで、遅れ時間Trsの更新を繰り返すとともに成功率を取得する。このようにして、把持制御パラメータ更新部18は、遅れ時間Trsの更新を繰り返しながら検証が行われて取得された成否情報に基づいて遅れ時間Trsの値を決定する。動作時間予測部11Bは、決定された遅れ時間Trsの値を組み入れた計算によりロボット動作時間T1を予測する。
実施の形態3によると、ロボット制御装置10Bは、ハンド動作時間Tgspおよびなじみ時間Tfitの各々を更新させ、検証により取得された成否情報に基づいてハンド動作時間Tgspの値となじみ時間Tfitの値とを決定する。または、ロボット制御装置10Bは、ロボット制御系情報である遅れ時間Trs、およびなじみ時間Tfitの各々を更新させ、検証により取得された成否情報に基づいて遅れ時間Trsの値となじみ時間Tfitの値とを決定する。これにより、ロボット制御装置10Bは、把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
実施の形態3において、把持制御パラメータ更新部18は、補正量ΔTを更新させ、かつ成否情報に基づいて補正量ΔTの値を決定しても良い。この場合、把持制御パラメータには、補正量ΔTが含まれる。把持制御パラメータ更新部18は、補正量ΔTの更新を繰り返しながら検証が行われて取得された成否情報に基づいて補正量ΔTの値を決定する。把持制御パラメータ更新部18は、ある決められた刻み幅で補正量ΔTの値を変化させることによる補正量ΔTの調整によって、補正量ΔTを更新する。動作時間予測部11Bは、ロボット動作時間算出部16において、決定された補正量ΔTの値を組み入れた計算によってロボット動作時間T1を算出する。ロボット制御装置10Bは、成否情報に基づいて補正量ΔTの値を決定する場合も、ユーザによるマニュアルの調整方法に比べて、簡単に把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
実施の形態3において、把持制御パラメータ更新部18は、差し込み量dを更新させ、かつ成否情報に基づいて差し込み量dの値を決定しても良い。この場合、把持制御パラメータには、差し込み量dが含まれる。把持制御パラメータ更新部18は、差し込み量dの更新を繰り返しながら検証が行われて取得された成否情報に基づいて差し込み量dの値を決定する。把持制御パラメータ更新部18は、ある決められた刻み幅で差し込み量dの値を変化させることによる差し込み量dの調整によって、差し込み量dを更新する。動作時間予測部11Bは、ロボット動作時間算出部16において、決定された差し込み量dの値を組み入れた計算によってロボット動作時間T1を算出する。ロボット制御装置10Bは、成否情報に基づいて差し込み量dの値を決定する場合も、ユーザによるマニュアルの調整方法に比べて、簡単に把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
実施の形態4.
実施の形態4では、実施の形態3における把持制御パラメータの更新の態様の変形例について説明する。実施の形態4にかかるロボット制御装置10Bの動作は、把持制御パラメータの調整の態様が実施の形態3とは異なる。ここでは、図7を参照して、実施の形態4にかかるロボット制御装置10Bの動作を説明する。実施の形態4では、上記の実施の形態1から3と同一の構成要素には同一の符号を付し、実施の形態1から3とは異なる構成について主に説明する。
実施の形態4において、把持制御パラメータは、実施の形態3と同様に、ハンド動作時間Tgspおよびなじみ時間Tfit、または、ロボット制御系情報である遅れ時間Trs、およびなじみ時間Tfitである。把持制御パラメータには、補正量ΔTまたは差し込み量dが含まれても良い。ここでは、把持制御パラメータがハンド動作時間Tgspおよびなじみ時間Tfitである場合を例として説明する。
実施の形態3では、ロボット制御装置10Bは、ハンド動作時間Tgspの値となじみ時間Tfitの値とのうち、一方を固定の値とし、他方を決められた刻み幅Tg,Tfで変化させることによって、ハンド動作時間Tgspの更新、またはなじみ時間Tfitの更新を行った。実施の形態4では、ロボット制御装置10Bは、ハンド動作時間Tgspの値となじみ時間Tfitの値との組み合わせを、粒子群最適化、ベイズ最適化、または、遺伝的アルゴリズムなどの探索手法を用いて探索する。
探索に用いられる評価関数には、動作時間の短さを評価する関数が使用される。動作時間は、ロボット30およびハンド31による把持動作に要する時間であって、ロボット30が目的位置への移動を開始してからハンド31が対象物を把持する動作を終えるまでの時間とする。把持に失敗した場合には、評価結果に大きなペナルティが加算される。把持制御パラメータ更新部18は、把持を成功でき、かつ動作時間を短縮できるハンド動作時間Tgspの値となじみ時間Tfitの値との最適な組み合わせを、評価関数を使用して探索する。把持制御パラメータ更新部18は、探索の回数があらかじめ設定された回数に到達した時点で探索を終了し、それまでの探索において評価関数が最小となったハンド動作時間Tgspの値となじみ時間Tfitの値との組み合わせを出力する。
なお、把持制御パラメータが遅れ時間Trsおよびなじみ時間Tfitである場合、把持制御パラメータ更新部18は、把持を成功でき、かつ動作時間を短縮できる遅れ時間Trsの値となじみ時間Tfitの値との最適な組み合わせを、評価関数を使用して探索する。
実施の形態4によると、ロボット制御装置10Bは、把持を成功でき、かつ動作時間を短縮できるハンド動作時間Tgspの値となじみ時間Tfitの値との最適な組み合わせを、評価関数を使用して探索する。または、ロボット制御装置10Bは、把持を成功でき、かつ動作時間を短縮できる遅れ時間Trsの値となじみ時間Tfitの値との最適な組み合わせを、評価関数を使用して探索する。これにより、ロボット制御装置10Bは、把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
実施の形態5.
図8は、実施の形態5にかかるロボット制御装置10Cの構成例を示す図である。ロボット制御装置10Cは、実施の形態3で説明した動作時間予測部11Bと同様の動作時間予測部11Cを備える。また、ロボット制御装置10Cには、実施の形態3で説明したなじみ時間予測部12Bは備えられていない。実施の形態5では、上記の実施の形態1から4と同一の構成要素には同一の符号を付し、実施の形態1から4とは異なる構成について主に説明する。
ロボット制御装置10Cは、実施の形態3で説明した把持制御パラメータ更新部18とは異なる把持制御パラメータ更新部18Cを備える。実施の形態5において、把持制御パラメータは、ハンド動作時間Tgspまたは遅れ時間Trsである。
実施の形態3の場合と同様に、把持制御パラメータ更新部18Cは、ハンド動作時間Tgspを更新させ、かつ、成否情報を取得する。把持制御パラメータ更新部18Cは、ハンド動作時間Tgspの更新を繰り返しながら検証が行われて取得された成否情報に基づいてハンド動作時間Tgspの値を決定する。または、実施の形態3の場合と同様に、把持制御パラメータ更新部18Cは、ロボット制御系情報である遅れ時間Trsを更新させ、かつ、成否情報を取得する。把持制御パラメータ更新部18Cは、ハンド動作時間Tgspの更新を繰り返しながら検証が行われることによって取得された成否情報に基づいてハンド動作時間Tgspの値を決定する。実施の形態5において、把持制御パラメータ更新部18Cは、なじみ時間Tfitの更新およびなじみ時間Tfitの値の決定を行わない。
ハンド動作時間Tgspの値または遅れ時間Trsの値を決定するためのロボット制御装置10Cの動作は、実施の形態3の場合と同様である、実施の形態5によると、ロボット制御装置10Cは、把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。なお、実施の形態3または4の場合と同様に、把持制御パラメータには、補正量ΔTまたは差し込み量dが含まれても良い。
実施の形態6.
実施の形態6では、機械学習により把持制御パラメータの値を決定する例について説明する。図9は、実施の形態6にかかるロボット制御装置10Dの構成例を示す図である。ロボット制御装置10Dは、把持制御パラメータ学習部20を備える。ロボット制御装置10Dには、実施の形態3で説明した把持制御パラメータ更新部18は備えられていない。ロボット制御装置10Dは、実施の形態3で説明した動作時間予測部11Bと同様の動作時間予測部11Dを備える。ロボット制御装置10Dは、実施の形態3で説明したなじみ時間予測部12Bと同様のなじみ時間予測部12Dを備える。実施の形態6では、上記の実施の形態1から5と同一の構成要素には同一の符号を付し、実施の形態1から5とは異なる構成について主に説明する。
把持制御パラメータ学習部20は、学習装置21と、推論装置22と、学習済モデル記憶部23とを備える。学習装置21は、対象物の位置Pとハンド動作情報と把持制御パラメータとの関係であって、把持の成功率があらかじめ設定された閾値以上、かつ、ロボット30およびハンド31による把持動作に要する時間である動作時間が最短となるときにおける関係を学習する。把持制御パラメータは、ハンド動作時間Tgsp、なじみ時間Tfit、および、ロボット制御系情報である遅れ時間Trsの少なくとも1つである。ここでは、対象物の位置Pと、ハンド動作情報と、ハンド動作時間Tgsp、なじみ時間Tfit、および遅れ時間Trsとの関係を学習する場合を例として説明する。ハンド動作情報は、差し込み量dの値、および、開き幅wの値とする。ハンド動作情報には、開き幅wの値の代わりに、対象物の幅の値が含まれても良い。
学習装置21は、対象物の位置Pとハンド動作情報と把持制御パラメータとの関係を示す学習済モデルを生成する。学習済モデル記憶部23は、学習済モデルを記憶する。推論装置22は、学習済モデルを使用して、ハンド動作時間Tgsp、なじみ時間Tfit、および遅れ時間Trsの各値を推論する。
図10は、実施の形態6にかかるロボット制御装置10Dが有する把持制御パラメータ学習部20のうち、学習装置21および学習済モデル記憶部23を示す図である。学習装置21は、データ取得部24およびモデル生成部25を備える。データ取得部24には、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値と、位置Pの情報と、ハンド動作情報と、成否情報と、動作時間情報とが入力される。
成否情報は、位置P、差し込み量d、および開き幅wの組み合わせごとに遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値を更新しながら把持動作を検証することによって取得される。実施の形態6において、成否情報は、把持の成功率を示す値とする。動作時間情報は、ロボット30が目的位置への移動を開始してからハンド31が対象物を把持する動作を終えるまでの時間の長さを示す値とする。動作時間は、把持動作を検証する際に計測される。
データ取得部24は、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値の組み合わせと、位置Pの情報と、ハンド動作情報と、成否情報と、動作時間情報とを使用して、学習用データを作成する。データ取得部24は、入力された遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値の組み合わせから、成功率が閾値以上、かつ動作時間が最短となるときの組み合わせを抽出する。データ取得部24は、位置Pの情報と、ハンド動作情報と、抽出された遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値の組み合わせとを互いに関連付けた学習用データを作成する。このようにして、データ取得部24は、学習用データを取得する。
モデル生成部25は、学習用データを用いて、位置Pおよびハンド動作情報から、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値を推論するための学習済モデルを生成する。学習済モデル記憶部23は、生成された学習済モデルを記憶する。
モデル生成部25が用いる学習アルゴリズムとしては、教師あり学習、教師なし学習、または強化学習等の公知のアルゴリズムを用いることができる。一例として、ニューラルネットワークを適用する場合について説明する。モデル生成部25は、ニューラルネットワークモデルに従い、いわゆる教師あり学習によって、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値の組み合わせを学習する。ここで、教師あり学習とは、入力および結果のデータの組を学習装置21に与えることで、学習用データにある特徴を学習し、入力から結果を推論する手法である。学習用データは、入力と、入力に対応する結果であるラベルとを含む。位置Pの情報およびハンド動作情報は入力に相当し、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値はラベルに相当する。
図11は、実施の形態6における機械学習に使用されるニューラルネットワークの構成例を示す図である。ニューラルネットワークは、複数のニューロンからなる入力層と、複数のニューロンからなる中間層である隠れ層と、複数のニューロンからなる出力層とで構成される。中間層は、1層、または2層以上でも良い。入力層へ入力された複数の値の各々は、重みが乗算されて、中間層へ入力される。中間層へ入力された複数の値の各々は、重みが乗算されて、出力層から出力される。出力層から出力される出力結果は、入力層で乗算される重みの値と、中間層で乗算される重みの値とに従って変化する。
ニューラルネットワークは、入力層に位置Pの情報およびハンド動作情報を入力して出力層から出力された結果が、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値に近づくように重みの値を調整することによって、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値の組み合わせを学習する。モデル生成部25は、以上のような学習を実行することで学習済モデルを生成する。モデル生成部25は、既に生成された学習済モデルを学習済モデル記憶部23から読み出し、学習用データに従った再学習により学習済モデルを更新しても良い。
図12は、実施の形態6にかかるロボット制御装置10Dが有する把持制御パラメータ学習部20のうち、推論装置22および学習済モデル記憶部23を示す図である。推論装置22は、データ取得部26および推論部27を備える。
データ取得部26に位置Pの情報およびハンド動作情報が入力されることによって、データ取得部26は、推論用データである位置Pの情報およびハンド動作情報を取得する。推論部27は、学習済モデル記憶部23から学習済モデルを読み出す。推論部27は、学習済モデルへ位置Pの情報およびハンド動作情報を入力することによって、遅れ時間Trs、ハンド動作時間Tgsp、およびなじみ時間Tfitの各値を出力する。
把持制御パラメータ学習部20は、遅れ時間Trsおよびハンド動作時間Tgspの各値を動作時間予測部11Dへ出力する。把持制御パラメータ学習部20は、なじみ時間Tfitの値をなじみ時間予測部12Dへ出力する。
実施の形態1の場合と同様に、ロボット動作時間算出部16は、ロボット動作指令に基づいて時間T1cを算出する。ロボット動作時間算出部16は、時間T1cに遅れ時間Trsを加算することによって、ロボット動作時間T1を算出する。ロボット動作時間算出部16は、ロボット30が動作を開始した時点からの経過時間である時間Taをロボット動作時間T1から差し引くことによってロボット残動作時間T0を算出する。実施の形態1の場合と同様に、動作時間予測部11Dは、ロボット動作時間算出部16において、ロボット制御系情報と、対象物の位置Pの情報と、ハンド動作情報とを組み入れた計算によってロボット動作時間T1を算出する。動作時間予測部11Dは、ロボット制御系情報と、対象物の位置Pの情報と、ハンド動作情報とを組み入れた計算によりロボット動作時間T1を予測する。
動作時間予測部11Dは、ロボット残動作時間T0の値と、入力されたハンド動作時間Tgspの値とを比較する。実施の形態1の場合と同様に、動作時間予測部11Dは、ロボット残動作時間T0の値がT0<Tgspを充足する値に到達したタイミングを検出すると、T0<Tgspを充足するタイミングが到来したことをハンド動作開始指示部13へ伝達する。また、動作時間予測部11Dは、当該タイミングにおけるロボット残動作時間T0の値と、当該タイミングにおけるハンド動作時間Tgspの値とをハンド動作開始指示部13へ送る。
なお、実施の形態1の場合と同様に、動作時間予測部11Dは、補正量ΔTを設定しておき、T0<Tgspを充足するタイミングの代わりに、T0<Tgsp-ΔTを充足するタイミングを検出しても良い。ロボット制御装置10Dは、T0=0の時点でハンド31の開き幅が2Rwcとなるように、把持動作の開始をハンド制御装置に指示する。これにより、ロボット制御装置10Dは、ΔT>0のときにおいて、ロボット30の動作が終了するタイミングで指部を対象物に接触させることができる。また、ロボット制御装置10Dは、ロボット30の動作中において対象物に指部を接触させないようにすることで、把持の失敗を低減できる。
なじみ時間予測部12Dは、把持制御パラメータ学習部20から入力されたなじみ時間Tfitの値を、そのまま把持後動作指示部14へ出力する。なお、ハンド動作開始指示部13および把持後動作指示部14の各々の動作は、実施の形態1の場合と同様である。
実施の形態6では、モデル生成部25が用いる学習アルゴリズムに教師あり学習を適用する場合について説明したが、学習アルゴリズムには、教師あり学習以外の学習が適用されても良い。モデル生成部25は、強化学習、教師なし学習、または半教師あり学習といった学習アルゴリズムを用いて機械学習を実行しても良い。モデル生成部25は、深層学習(Deep Learning)、遺伝的プログラミング、帰納論理プログラミング、またはサポートベクターマシンといった学習アルゴリズムを用いて機械学習を実行しても良い。
実施の形態6では、学習装置21は、ロボット制御装置10Dに内蔵されている。学習装置21は、ロボット制御装置10Dの外部の装置でも良い。学習装置21は、ネットワークを介してロボット制御装置10Dに接続される装置でも良く、クラウドサーバ上に存在する装置でも良い。
学習装置21は、1つのロボット制御装置10Dについて作成された学習用データに従って把持制御パラメータの値を学習するものに限られない。学習装置21は、複数のロボット制御装置10Dについて作成された学習用データに従って、把持制御パラメータの値を学習しても良い。学習装置21は、同一の場所で使用される複数のロボット制御装置10Dから学習用データを取得しても良く、または、互いに異なる場所で使用される複数のロボット制御装置10Dから学習用データを取得しても良い。学習用データは、複数の場所において互いに独立して稼働するロボット制御装置10Dから取得されても良い。複数のロボット制御装置10Dからの学習用データの取得を開始した後に、学習用データが取得される対象に新たなロボット制御装置10Dが追加されても良い。また、複数のロボット制御装置10Dからの学習用データの取得を開始した後に、学習用データが取得される対象から、複数のロボット制御装置10Dの一部が除外されても良い。
ある1つのロボット制御装置10Dについて学習を行った学習装置21は、当該ロボット制御装置10D以外の他のロボット制御装置10Dについての学習を行っても良い。学習装置21は、当該他のロボット制御装置10Dについての再学習によって、学習済モデルを更新することができる。
学習装置21は、対象物の位置Pと、ハンド動作情報と、ハンド動作時間Tgsp、なじみ時間Tfit、および、遅れ時間Trsの各値のうち少なくとも1つとの関係を学習するものであれば良い。推論装置22は、学習済モデルを用いて、対象物の位置Pおよびハンド動作情報から、ハンド動作時間Tgsp、なじみ時間Tfit、および、遅れ時間Trsの各値のうち少なくとも1つを推論する。
学習装置21へ入力されるハンド動作情報には、差し込み量dの値、および、開き幅wの値のうちの少なくとも1つが含まれていれば良い。学習装置21へ入力されるハンド動作情報には、差し込み量dの値の代わりに、指定位置にて差し込み量dによりロボット30を動作させる際の速度または加速度の情報が含まれても良い。
実施の形態6によると、ロボット制御装置10Dは、対象物の位置Pとハンド動作情報と把持制御パラメータとの関係であって、把持の成功率があらかじめ設定された閾値以上、かつ、ロボット30およびハンド31による把持動作に要する時間である動作時間が最短となるときにおける関係を学習する。ロボット制御装置10Dは、学習済モデルを用いて、対象物の位置Pおよびハンド動作情報から把持制御パラメータの値を推論する。これにより、ロボット制御装置10Dは、把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
実施の形態7.
図13は、実施の形態7にかかるロボット制御装置10Eの構成例を示す図である。ロボット制御装置10Eは、実施の形態6にかかるロボット制御装置10Dと同様に、把持制御パラメータ学習部20を備える。ロボット制御装置10Eは、実施の形態6で説明した動作時間予測部11Dと同様の動作時間予測部11Eを備える。また、ロボット制御装置10Eには、実施の形態6で説明したなじみ時間予測部12Dは備えられていない。実施の形態7では、上記の実施の形態1から6と同一の構成要素には同一の符号を付し、実施の形態1から6とは異なる構成について主に説明する。
実施の形態7において、把持制御パラメータは、ハンド動作時間Tgsp、およびロボット制御系情報である遅れ時間Trsの少なくとも1つである。学習装置21は、対象物の位置Pと、ハンド動作情報と、ハンド動作時間Tgspおよび遅れ時間Trsの各値のうち少なくとも1つとの関係を学習する。実施の形態7において、学習装置21にはなじみ時間Tfitの値は入力されない。推論装置22は、学習済モデルを使用して、ハンド動作時間Tgspおよび遅れ時間Trsの各値を推論する。推論装置22は、なじみ時間Tfitの値の推論を行わない。
実施の形態6の場合と同様に、ロボット制御装置10Eは、対象物の位置Pとハンド動作情報と把持制御パラメータとの関係であって、把持の成功率があらかじめ設定された閾値以上、かつ、ロボット30およびハンド31による把持動作に要する時間である動作時間が最短となるときにおける関係を学習する。実施の形態6の場合と同様に、ロボット制御装置10Eは、学習済モデルを用いて、位置Pおよびハンド動作情報から把持制御パラメータの値を推論する。これにより、ロボット制御装置10Eは、把持の成功率を向上させることができ、かつ、ロボット30およびハンド31による把持動作に要する時間を短縮することができる。
次に、実施の形態1から7にかかるロボット制御装置10,10A,10B,10C,10D,10Eを実現するハードウェア構成について説明する。ロボット制御装置10,10A,10B,10C,10D,10Eは、処理回路により実現される。処理回路は、プロセッサがソフトウェアを実行する回路であっても良いし、専用の回路であっても良い。
処理回路がソフトウェアにより実現される場合、処理回路は、例えば、図14に示す制御回路である。図14は、実施の形態1から7にかかる制御回路50の構成例を示す図である。制御回路50は、入力部51、プロセッサ52、メモリ53および出力部54を備える。
入力部51は、制御回路50の外部から入力されたデータを受信してプロセッサ52に与えるインターフェース回路である。出力部54は、プロセッサ52またはメモリ53からのデータを制御回路50の外部に送るインターフェース回路である。処理回路が図14に示す制御回路50である場合、プロセッサ52がメモリ53に記憶されたロボット制御プログラムを読み出して実行することにより、ロボット制御装置10,10A,10B,10C,10D,10Eの各構成要素が実現される。ロボット制御プログラムは、ロボット制御装置10,10A,10B,10C,10D,10Eの各構成要素に対応するプログラムである。また、プロセッサ52は、演算結果等のデータをメモリ53の揮発性メモリに出力する。メモリ53は、プロセッサ52が実施する各処理における一時メモリとしても使用される。プロセッサ52は、演算結果等のデータをメモリ53に出力して記憶させても良いし、演算結果等のデータを、メモリ53の揮発性メモリを介して補助記憶装置に記憶させても良い。各構成要素において情報を記憶する機能は、メモリ53または補助記憶装置により実現される。
プロセッサ52は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、またはDSP(Digital Signal Processor)ともいう)である。メモリ53は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable Programmable Read Only Memory)等の、不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスクまたはDVD(Digital Versatile Disc)等が該当する。
図14は、汎用のプロセッサ52およびメモリ53により各構成要素を実現する場合のハードウェアの例であるが、各構成要素は、専用のハードウェア回路により実現されても良い。図15は、実施の形態1から7にかかる専用のハードウェア回路55の構成例を示す図である。
専用のハードウェア回路55は、入力部51、出力部54および処理回路56を備える。処理回路56は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせた回路である。なお、各構成要素は、制御回路50とハードウェア回路55とが組み合わされて実現されても良い。
なお、ロボット制御プログラムは、CD(Compact Disc)-ROM、DVD-ROMなどの記録媒体に格納され、各実施の形態を実現させるために記録媒体が提供されてもよい。
以上の各実施の形態に示した構成は、本開示の内容の一例を示すものである。各実施の形態の構成は、別の公知の技術と組み合わせることが可能である。各実施の形態の構成同士が適宜組み合わせられても良い。本開示の要旨を逸脱しない範囲で、各実施の形態の構成の一部を省略または変更することが可能である。