以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
(第1実施形態)
図1は、本実施形態に係るシミュレーション装置10のハードウェア構成を示すブロック図である。
本実施形態のシミュレーション装置10は、対象となる装置、装置が扱うワーク及び障害物などをシミュレーションモデルとして、シミュレーションモデルの挙動を予測及び設計する。シミュレーションモデルとしては、例えば、装置等に働く物理現象を数式で表現した物理モデル、又は実機の計測データからシステム同定あるいは機械学習などにより得られた動的モデルがある。
本実施形態では、シミュレーションの対象となる装置は、ロボットアームを備えたロボットである。ロボットアームの先端には弾性を有する保持体が取り付けられ、ロボットは、保持体によりワークをピックアップして、搬送し、目的地にワークを載置する、いわゆるピックアンドプレース装置である。本実施形態では、特に、保持体が吸着パッドであり、ロボットアームがワークを吸着搬送する場合について説明する。
図1に示すように、シミュレーション装置10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、モニタ16、光ディスク駆動装置17、及び通信インタフェース18を有する。各構成は、バス19を介して相互に通信可能に接続されている。
本実施形態では、ROM12又はストレージ14には、シミュレーションを実行するシミュレーションプログラムが格納されている。CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各構成を制御したりする。すなわち、CPU11は、ROM12又はストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12又はストレージ14に記録されているプログラムにしたがって、上記各構成の制御及び各種の演算処理を行う。
ROM12は、各種プログラム及び各種データを格納する。RAM13は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
入力部15は、キーボード151、及びマウス152等のポインティングデバイスを含み、各種の入力を行うために使用される。モニタ16は、例えば、液晶ディスプレイであり、シミュレーション結果等の各種の情報を表示する。モニタ16は、タッチパネル方式を採用して、入力部15として機能してもよい。光ディスク駆動装置17は、各種の記録媒体(CD−ROM又はブルーレイディスクなど)に記憶されたデータの読み込みや、記録媒体に対するデータの書き込み等を行う。
通信インタフェース18は、他の機器と通信するためのインタフェースであり、例えば、イーサネット(登録商標)、FDDI又はWi−Fi(登録商標)等の規格が用いられる。
次に、第1実施形態に係るシミュレーション装置10の機能構成について説明する。
図2は、シミュレーション装置10の機能構成の例を示すブロック図である。図3は、ロボットが動作する座標位置の例を示す図、図4は、モーションプログラムの例を示す図、図5は、モーションパラメータの例を示す図である。
図2に示すように、シミュレーション装置10は、機能構成として、モーションプログラム編集部101、モーションパラメータ設定部102、モーション指令値計算部103、ダイナミクス計算部104、許容値受付部105、揺れ角算出部106、最適指令値特定部107、及び3D表示部108を有する。各機能構成は、CPU11がROM12又はストレージ14に記憶されたシミュレーションプログラムを読み出し、RAM13に展開して実行することにより実現される。なお、ダイナミクス計算部104は、本発明の加速度導出部の一例であり、揺れ角算出部106は、本発明の算出部の一例であり、最適指令値特定部107は、本発明の特定部の一例である。
モーションプログラム編集部101は、シミュレーションにおけるロボットの所望の動作をユーザから受け付けたり、動作の編集を受け付けたりする。ユーザは、モニタ16を参照しつつ、入力部15によりモーションプログラムを入力又は編集できる。なお、モーションプログラム編集部101は、装置及び障害物の配置情報から、装置の動作モーションプログラムを自動的に生成するモーションプランニング部として機能してもよい。
モーションプログラム編集部101では、例えば、図3に示すような動作をロボットアームに実行させるために、図4に示すモーションプログラムが設定される。図3に示す動作の例では、位置p0からロボットアームの移動が開始し、位置p1及び位置p2を経て、位置p3にロボットアームが到達する動作を示す。位置p0は、xyz座標系において座標(0,0,0)、すなわち原点を表す。位置p1は、座標(0,0,30)であり、位置p0からz方向(高さ方向)に座標で定義される単位で30だけ移動した位置である。位置p2は、座標(50,0,30)であり、位置p1からさらに、x方向に50進んだ位置である。位置p3は、座標(50,0,0)であり、位置p2からさらに、−z方向に30進んだ位置である。このように、図3に示す動作は、ロボットアームが原点から上昇する鉛直運動と、高さを維持した水平運動と、下降する鉛直運動とによる3つの運動が連続する動作である。
このような動作のための命令は、モーションプログラムとして、例えば図4に示すようにモーションプログラム編集部101に入力される。図4に示すモーションプログラムは、行番号の昇順に命令を実行させるための三行の動作指令を含む。ピックアンドプレース装置の場合、ピックアップ及びプレースの動作もモーションプログラムに含まれうる。ロボットの移動だけでなく、ワークの保持(吸着)及び解放等の動作についても、モーションプログラムにより命令される。
モーションパラメータ設定部102は、モーションプログラムにより命令される動作のパラメータを設定する。モーションパラメータは、例えば、図5に示すように、各命令による動作における最大速度及び最大加速度を設定する。最大速度及び最大加速度は、ロボットに予め設定されている基準速度及び基準加速度に対する割合として設定されうる。基準速度に対する割合としてパラメータが設定されることにより、ロボットの常識的な動作速度に対して、どの程度の動作速度が設定されたかを直観的に把握することができる。なお、モーションパラメータ設定部102は、速度及び加速度の物理量の数値を設定してもよい。
なお、本明細書では、「加速度」は、加速する際の加速度(正の値)、及び減速する際の減速度(負の値)の両方の概念を含む用語として使用する。したがって、図5の最大加速度のパラメータは、加速の際の最大加速度だけでなく、減速の際の最大減速度も含む。ただし、最大加速度と最大減速度のパラメータが同じ値として一律に設定される必要はなく、それぞれ個別に設定されてもよい。
モーション指令値計算部103は、シミュレーションの開始が指示されると、モーションプログラム編集部101で得られたモーションプログラムのうち最初の動作のための命令を読み込む。次に、モーション指令値計算部103は、モーションパラメータ設定部102で設定されたモーションパラメータのうち、命令に対応するモーションパラメータを読み込む。そして、モーション指令値計算部103は、読み込んだ命令とモーションパラメータとから、シミュレーションで用いるモーション指令値(動作指令値)を順次計算し、出力する。同様に、モーション指令値計算部103は、後続の命令と対応するモーションパラメータとを順に読み込み、モーション指令値を出力する。
本実施形態では、モーション指令値計算部103は、モーション指令値の1つとして、各時刻におけるロボットアームの加速度を出力する。したがって、モーション指令値計算部103は、ピック位置からプレース位置までのロボットアームの加速度の時系列を含むモーション指令値を出力する。
ダイナミクス計算部104は、モーション指令値計算部103から出力されたモーション指令値と、ロボットの三次元CADデータと、ワーク、吸着パッド(保持体)、及びロボットアームの各々を表すモデルを含むシミュレーションモデルとを読み込む。ダイナミクス計算部104は、読み込んだモーション指令値、CADデータ、及びシミュレーションモデルから、ダイナミクス(動力学)を考慮したシミュレーションモデルの動作に関わる各種データを計算し、出力する。ロボットの三次元CADデータ及びシミュレーションモデルは、ストレージ14に予め格納されていてもよいし、光ディスク駆動装置17から読み込まれて取得されてもよいし、あるいは、通信インタフェース18を介して外部機器から取得されてもよい。なお、上記では三次元CADデータを用いる点を例示しているが、三次元CADデータを用いなくても、シミュレーションは実行可能である。例えば、二次元CADデータ、ロボットの寸法データ、又はロボットの設計データ等を用いてシミュレーションを実行してもよい。
ダイナミクス計算部104により出力される各種データには、ワークの加速度が含まれる。以下、シミュレーションにおけるワークの加速度の導出方法について説明する。
図6に示すように、第1実施形態のシミュレーションモデルは、ワークW、ワークWを吸着した吸着パッドP、及び先端に吸着パッドPが取り付けられたロボットアームRの各々を表すモデルを含む物理モデルとして構成されている。図6に示す物理モデルでは、ワークW及びロボットアームRは剛体とし、吸着パッドPは、質量mpad、回転減衰係数Cpad、及び回転弾性係数Kpadの弾性体としている。
図6に示す物理モデルを用いたシミュレーションにおいて、ワークWの加速度awは、吸着パッドPとワークWとの間の伝達関数G(s)、及びロボットアームRの加速度arを用いて、次の式(1)で表される。
aw=G(s)×ar … 式(1)
ここで伝達関数G(s)は、吸着パッドPを図6に示す物理モデルで表した場合、例えば、以下の式(2)で表される。物理モデルは、実機の動作データから、ワークWの加速度awに影響を及ぼすパラメータを抽出して構築される。例えば、図6では、ロボットアームRを加速度arで加速度運動させたときに、ワークWの加速度awに影響する吸着パッドPの質量mpad、回転減衰係数Cpad、及び回転弾性係数Kpadが吸着パッドモデルのパラメータとして抽出されている。特にワークWの加速度awに影響を及ぼすパラメータだけで吸着パッドモデルを構築することにより、加速度aw以外の外部影響を低減でき、より高い精度により加速度awを求めることができる。
許容値受付部105は、ワーク搬送時に許容されるワークの傾きの最大値に相当するワークの揺れ角(以下、「許容揺れ角」という)をユーザから受け付ける。本実施形態では、ロボットアームRとワークWとの間には、弾性を有する吸着パッドPが介在しているため、搬送時にワークWに傾きが生じる。そこで、図7に示すように、吸着パッドPに想定される回転軸を回転中心とし、鉛直方向に対するワークの重心WGの回転角度を、ワークWの揺れ角θと定義する。
揺れ角算出部106は、ダイナミクス計算部104により導出されたワークWの加速度awを用いて、ワークWの揺れ角θを算出する。具体的には、揺れ角算出部106は、ワークの加速度awと、回転中心からワークWの底面までの鉛直方向の長さLと、ワークWの揺れの角周波数ωを用いて、ワークWの揺れ角θを算出する。ワークWの加速度awは、ダイナミクス計算部104で導出された値である。長さLは、実測値である。ωは、例えば、式(1)及び式(2)の伝達関数を用いた物理モデルを用いる場合、ロボットアームRの加速度arを時系列で入力したときの出力であるワークWの加速度awの時系列変化を示すステップ応答のピーク間の時間差から求めることができる。以下、ワークWの加速度aw、回転中心からワークWの底面までの鉛直方向の長さL、及びワークWの角周波数ωを用いたワークWの揺れ角θの算出について説明する。
まず、ワークWの揺れ角θを、下記式(3)に示すように単純化して考える。
AはワークWの揺れの振幅、tは時間である。ワークWの角加速度は、式(3)を時間tで2階微分して、下記式(4)のように表すことができる。
ここで、ワークWの揺れ角θが小さい場合、ワークWの角加速度は、下記式(5)のように近似することができる。
なお、第1実施形態では、ロボットアームRに保持された状態のワークWの底面に取り付けた加速度センサにより計測されたワークの加速度awを用いて、図6に示すような物理モデルを構築し、シミュレーション時には、この物理モデルにより導出されたワークWの加速度awを用いることを想定している。そのため、式(5)の近似では、図7に示すように、ロボットアームRに保持され、揺れ角θが0の状態におけるワークWの鉛直方向の長さを、回転中心からワークWの底面までの長さLとして用いている。
上記式(3)〜式(5)を整理すると、ワークWの揺れ角θは、下記式(6)のように算出することができる。
最適指令値特定部107は、モーション指令値の1つであるロボットアームRの加速度arのパターン(ar(t))として、最適パターンを特定する。本実施形態では、ロボットアームRの加速度arの最適パターンを、揺れ角算出部106で算出されたワークWの揺れ角θが、許容値受付部105で受け付けられた許容揺れ角を超えない範囲で、タクトタイムが最短となるパターンとする。タクトタイムとは、ワークWがピックアップされてからプレースされるまでの時間である。なお、最適パターンは、上記の例に限定されず、例えば、タクトタイムが予め定めた時間より短くなるパターンのうち、揺れ角算出部106で算出されたワークの揺れ角θが最小となるパターンなど、適宜設定可能である。
具体的には、最適指令値特定部107は、モーションパラメータ設定部102に対し、パラメータの取りうる値の全組み合わせの各々を設定するように指示すると共に、モーション指令値計算部103に対し、パラメータの全組み合わせの各々について、モーション指令値の1つであるロボットアームRの加速度arのパターン(ar(t))を計算するように指示する。また、最適指令値特定部107は、ロボットアームRの加速度arのパターン(ar(t))に対して、ダイナミクス計算部104で導出されたワークWの加速度awのパターン(aw(t))を用いて、ワークWの揺れ角θ(t)を、揺れ角算出部106に算出させる。
最適指令値特定部107は、揺れ角算出部106で算出された、各パターンに対応するワークWの揺れ角θ(t)が、許容値受付部105で受け付けられた許容揺れ角の範囲内であるパターンを抽出する。また、最適指令値特定部107は、抽出した各パターンでロボットアームRを加速度運動させた場合のタクトタイムを算出する。そして、最適指令値特定部107は、抽出した各パターンのうち、タクトタイムが最小となるパターンを、ロボットアームRの加速度arの最適パターンとして特定する。最適指令値特定部107は、特定した最適パターンに対応するモーションパラメータ及びタクトタイムを、モニタ16に表示する。
3D表示部108は、ダイナミクス計算部104により計算されたシミュレーションモデルの動作を、モニタ16に表示する。3D表示部108は、例えば、ロボットがワークを搬送する様子を経時的に三次元に示す動画をモニタ16に表示させる。表示は、三次元に限定されず、二次元あるいは数値であってもよい。
次に、第1実施形態に係るシミュレーション装置10の作用について説明する。
図8は、シミュレーション装置10のCPU11により実行される動作の流れを示すフローチャートである。CPU11がROM12又はストレージ14からシミュレーションプログラムを読み出して、RAM13に展開し実行することにより、シミュレーション処理が行なわれる。図9は、ユーザから許容値等の入力を受け付けると共に、最適パラメータ等を表示するための画面の一例を示す図である。
CPU11は、許容値受付部105として、ワークWの許容揺れ角を受け付ける(ステップS101)。以下では、受け付けた許容揺れ角に「θth」の符号を付す。例えば、CPU11は、図9に示すような画面をモニタ16に表示させ、入力ボックス201に許容揺れ角θthの入力を許可する。ユーザは、入力部15を介して許容揺れ角θthを入力できる。
CPU11は、モーションプログラム編集部101として、モーションプログラムを受け付ける。また、CPU11は、モーションパラメータ設定部102として、モーションパラメータの初期値を設定する(ステップS102)。モーションパラメータの初期値は、モーションパラメータの全組み合わせのいずれか(例えば、全てのパラメータが「100%」)とすることができる。
なお、事前にモーションプログラムの一部が決まっている場合には、残りの一部だけの入力を受け付けてもよい。例えば、CPU11は、図9に示す画面をモニタ16に表示させ、入力ボックス202〜204に、モーションプログラムとして設定されるロボットアームR(ワークW)の移動距離の入力を受け付ける。ステップS103以降の処理は、例えば、図9の「最適パラメータ算出実行」ボタン205をユーザが押下することをトリガーとして開始してもよい。
CPU11は、モーション指令値計算部103として、モーションプログラム及びモーションパラメータを読み込み、モーション指令値を計算する(ステップS103)。
CPU11は、ダイナミクス計算部104として、モーション指令値の1つであるロボットアームRの加速度arのパターン(ar(t))を用いて、シミュレーションモデルによりシミュレーションを実行し、ワークWの加速度awのパターン(aw(t))を導出する(ステップS104)。
CPU11は、揺れ角算出部106として、例えば、ワークWの加速度aw(t)と、回転中心からワークWの底面までの鉛直方向の長さLと、ワークWの揺れの角周波数ωとを用いて、上記式(6)により、ワークWの揺れ角θ(t)を算出する(ステップS105)。
CPU11は、最適指令値特定部107として、ワークWの揺れ角θ(t)が、許容揺れ角θthの範囲内か否かを判断する(ステップS106)。ワークWの揺れ角θ(t)に許容揺れ角θthを超える値が含まれる場合(ステップS106:NO)、CPU11は、ステップS109の処理に進む。ワークWの揺れ角θ(t)が許容揺れ角θthの範囲内の場合(ステップS106:YES)、CPU11は、シミュレーションにおいてロボットアームRがワークWを搬送するタクトタイムを算出する(ステップS107)。CPU11は、ステップS102又は後述するステップS110で設定したモーションパラメータと、ステップS107で算出したタクトタイムと、ステップS105で算出したワークWの揺れ角θ(t)とを関連付けて、ストレージ14又はRAM13に記憶する(ステップS108)。
CPU11は、変更し得る全てのモーションパラメータの組合せについて、ワークWの揺れ角θ(t)が許容揺れ角θthの範囲内か否かを判断する処理を終了したか否かを判断する(ステップS109)。全てのモーションパラメータの組合せについて判断が終了していない場合(ステップS109:NO)、CPU11は、モーションパラメータの設定を変更し(ステップS110)、ステップS103の処理に戻る。
全てのモーションパラメータの組合せについて判断が終了した場合(ステップS109:YES)、CPU11は、上記ステップS108で、ストレージ14又はRAM13に記憶した中で、タクトタイムが最短となるモーションパラメータの組合せを最適パラメータとして、タクトタイムと共にモニタ16に表示する(ステップS111)。CPU11は、例えば、図9の算出結果表示ウィンドウ206に示すように、ロボットアームRの各動作におけるモーションパラメータ及び当該モーションパラメータによる動作時のタクトタイムを表示する。また、CPU11は、算出されたワークWの揺れ角θ(t)をグラフ化して表示してもよい。
CPU11は、ステップS111で最適パラメータとして決定したモーションパラメータにより、モーション指令値計算部103及びダイナミクス計算部104としてシミュレーションを行い、3D表示部108として、シミュレーション結果を表示する(ステップS112)。シミュレーション結果は、例えば、シミュレーションモデルの動作の動画として表示される。CPU11は、シミュレーション処理を終了する。
以上のように、第1実施形態のシミュレーション装置10によれば、シミュレーションにより、ロボットアームの加速度に対するワークの加速度を導出し、このワークの加速度を用いて、搬送時におけるワークの傾き度合いを示す揺れ角を算出することができる。また、シミュレーション装置10によれば、算出した揺れ角を利用して、ワークの揺れ角が、受け付けた許容揺れ角を超えない範囲で最適なロボットアームの加速度を特定することができる。これにより、ユーザは、許容できる揺れ角に応じた最適な動作指令値を知ることができる。例えば、ワーク内で内容物が移動できる隙間が多少許されているような場合に、ワークの傾き度合いが大きくなり過ぎて、内容物がワーク内で偏った位置に配置されてしまうなどの不具合を防止しつつ、例えばタクトタイムが最短となるようにロボットアームを動作させることができる。
(第2実施形態)
図10は、第2実施形態に係るシミュレーション装置10Aの機能構成を示すブロック図である。なお、シミュレーション装置10Aのハードウェア構成については、第1実施形態に係るシミュレーション装置10と同様であるため、説明を省略する。
図10に示すように、シミュレーション装置10Aは、第1実施形態に係るシミュレーション装置10の機能構成における最適指令値特定部107に変えて、最適指令値特定部107Aを有する。また、シミュレーション装置10Aは、第1実施形態に係るシミュレーション装置10の機能構成に加え、負荷導出部109を有する。なお、最適指令値特定部107Aは、本発明の特定部の一例であり、負荷導出部109は、本発明の負荷モーメント導出部の一例である。
負荷導出部109は、ダイナミクス計算部104により計算されたシミュレーションモデルの動作から、シミュレーションモデルが鉛直運動する際にワークにかかる下向きの力を導出する。また、負荷導出部109は、ダイナミクス計算部104により計算されたシミュレーションモデルの動作から、シミュレーションモデルが水平運動する際のロボットアームの加速度とワークの加速度との差により吸着パッドに発生する負荷モーメント(詳細は後述)を導出する。負荷導出部109は、下向きの力及び負荷モーメントを、シミュレーションモデルの動作から計算してもよく、また、予め登録されているテーブルから導出してもよい。
最適指令値特定部107Aは、ワークの揺れ角θが許容揺れ角θthの範囲内であることに加え、負荷導出部109により導出した下向きの力及び負荷モーメントに基づいて、ワークが吸着パッドから落下しないような、ロボットアームの加速度arの最適パターンを特定する。
具体的には、最適指令値特定部107Aは、負荷導出部109により導出した下向きの力及び負荷モーメントに基づいて、ワークが吸着パッドから落下するか否かを判定する。最適指令値特定部107Aは、シミュレーションモデルが鉛直運動する際には、下向きの力が閾値(以下、閾値Tvと呼ぶ)より大きいか否かによりワークの落下を判定する。また、最適指令値特定部107Aは、シミュレーションモデルが水平運動する際には、負荷モーメントが閾値(以下、閾値Thと呼ぶ)より大きいか否かによりワークの落下を判断する。なお、水平運動においてもワークには重力がかかるが、閾値Thは、重力に加えてどの程度の負荷モーメントが発生すればワークが落下するかを表す値である。
閾値Tv及び閾値Thは、いずれもワークの落下を考慮して設定される値である。例えば、閾値Tvは、シミュレーションモデルに相当するロボットの実機を動作させたときに、ワークが落下しなかった実行条件で発生する下向きの力として設定され得る。好ましくは、閾値Tvは、シミュレーションモデルに相当するロボットの実機を実行条件を変更して繰り返し動作させたときに、ワークが落下しなかった実行条件で発生する下向きの力のうちの最大値として設定される。同様に、閾値Thは、シミュレーションモデルに相当するロボットの実機を動作させたときに、ワークが落下しなかった実行条件で発生する負荷モーメントとして設定され得る。好ましくは、閾値Thは、シミュレーションモデルに相当するロボットの実機を実行条件を変更して繰り返し動作させたときに、ワークが落下しなかった実行条件で発生する負荷モーメントのうちの最大値として設定される。なお、閾値Tvおよび閾値Thは、必ずしも実機を動作させることにより設定されなくてもよい。ワーク毎の閾値を前もって蓄積したデータベースを参照し、搬送対象のワークと類似しているワークの鉛直運動の際の閾値及び水平運動の際の閾値を、閾値Tv及び閾値Thとして設定してもよい。
次に、下向きの力及び負荷モーメントについて、詳細に説明する。
図11は、ワークにかかる下向きの力を示す図、図12は、ロボットアームとワークとの加速度の差を示す図、図13はワークの回転を示す図である。
まず、下向きの力について説明する。図11に示すように、ロボットアームRが鉛直方向上方に加速度arにより加速度運動する場合、シミュレーションモデルに含まれるワークWの重心には、重力m×gと、慣性力m×azとの和の力がかかる。ここで、mは、ワークWの質量、gは重力加速度、azはワークWの加速度である。重力m×gと慣性力m×azとの和である下向きの力が閾値Tv以下の場合、ワークWは落下せず、閾値Tvよりも大きい場合にワークWは落下すると判定する。閾値Tvは、シミュレーションモデルに相当するロボットの実機を実行条件を変更して繰り返し動作させたときに、ワークが落下しなかった実行条件で発生する下向きの力のうちの最大値として設定される。
次に、負荷モーメントについて説明する。図12に示すように、ロボットアームRが動作指令に基づいて水平方向に加速度arにより加速度運動する場合について説明する。ここで、ロボットアームRとワークWとの間には、弾性を有する吸着パッドPが介在している。このため、加速度運動時に吸着パッドPが変形し、ワークWは、吸着パッドPに想定される回転軸を回転中心として、図13に示すように回転し、ワークW及びロボットアームR間に加速度の差が生じる。ここで、ワークの加速度をawで表し、回転中心からワークWの重心までの距離を記号L1で表し、回転中心からワークの底部までの距離を記号L2で表す。また、シミュレーションモデルの回転部分のワークWの慣性モーメントを記号Iで表す。ワークWの鉛直方向に対する回転角度をθとして表す。ワークW及びロボットアームRが移動する慣性座標系においては、ワークWに生じるモーメントτは、次の式(7)により表される。
ここで、ワークの揺れ角θが小さい場合、角加速度は、下記式(8)のように近似することができる。
式(7)に式(8)を代入すると、次の式(9)が得られる。
式(9)に示すように、ワークWの加速度awとロボットアームRの加速度arとの差により、ワークWに生じるモーメントτが表される。
一方、ワークWに生じるモーメントτは、ロボットアームRと共に運動する並進座標系において考えることもできる。並進座標系においては、ワークに生じるモーメントτは、次の式(10)に示す回転の運動方程式により表される。
並進座標系においては、ワークWに生じるモーメントτは、ロボットアームRの加速度運動(水平運動)により水平方向に作用する水平慣性力により、ワークWに作用する(みかけの)慣性モーメントmarL1と、吸着パッドPに負荷としてかかる力、すなわち、負荷モーメントMとの和で表すことができる。式(10)のように、並進座標系で考えれば、式(7)よりも、吸着パッドPにかかる負荷モーメントMを考慮する分、ワークWに生じるモーメントτをより正確に表現することができる。
式(10)に式(8)を代入し、負荷モーメントMの式に変形すると、式(11)が得られる。従って、加速度arを与えれば、上記の式(1)から加速度awが求められるので、式(11)から負荷モーメントMを求めることができる。
以下の説明では、負荷モーメントMを式(11)で表す場合について説明する。負荷モーメントMが上述した閾値Th以下の場合、ワークWは落下せず、閾値Thよりも大きい場合にワークWは落下する。閾値Thは、シミュレーションモデルに相当するロボットの実機を実行条件を変更して繰り返し動作させたときに、ワークが落下しなかった実行条件で発生する負荷モーメントのうちの最大値として設定される。
図14は、第2実施形態に係るシミュレーション装置10AのCPU11により実行される動作の流れを示すフローチャートである。CPU11がROM12又はストレージ14からシミュレーションプログラムを読み出して、RAM13に展開し実行することにより、シミュレーション処理が行なわれる。
ステップS201〜ステップS205及びステップS208〜S213は、図8に示すステップS101〜ステップS105及びステップS107〜S112と同様であるので、説明を省略する。
CPU11は、負荷導出部109として、シミュレーション中に変化する、全ての下向きの力及び式(11)に基づく全ての負荷モーメントMを導出する(ステップS206)。
CPU11は、最適指令値特定部107Aとして、ワークWの揺れ角θ(t)が、許容揺れ角θthの範囲内で、全ての下向きの力が閾値Tv以下で、かつ全ての負荷モーメントMが閾値Th以下か否かを判断する(ステップS207)。ワークWの揺れ角θ(t)が許容揺れ角θthを超える値を含む場合、閾値Tvより大きい下向きの力が存在する場合、及び閾値Thより大きい負荷モーメントMが存在する場合の少なくともいずれかの場合(ステップS207:NO)、CPU11は、ステップS210の処理に進む。一方、ワークWの揺れ角θ(t)が許容揺れ角θthの範囲内で、全ての下向きの力が閾値Tv以下で、かつ全ての負荷モーメントMが閾値Th以下の場合(ステップS207:YES)、CPU11は、ステップS208の処理に進む。
以上のように、第2実施形態のシミュレーション装置10Aによれば、算出した揺れ角を利用して、ワークの揺れ角が受け付けた許容揺れ角を超えない範囲で、かつ下向きの力及び負荷モーメントが閾値以下となる最適なロボットアームの加速度を特定することができる。これにより、ユーザは、許容できる揺れ角に応じた最適な動作指令値であって、かつワークが落下しない動作指令値を知ることができる。
(第3実施形態)
図15は、第3実施形態に係るシミュレーション装置10Bの機能構成を示すブロック図である。なお、シミュレーション装置10Bのハードウェア構成については、第1実施形態に係るシミュレーション装置10と同様であるため、説明を省略する。
図15に示すように、シミュレーション装置10Bは、第2実施形態に係るシミュレーション装置10Aの機能構成における最適指令値特定部107Aに変えて、最適指令値特定部107Bを有する。また、シミュレーション装置10Bは、第2実施形態に係るシミュレーション装置10Aの機能構成における許容値受付部105に変えて、許容値受付部105Bを有する。また、シミュレーション装置10Bは、第2実施形態に係るシミュレーション装置10Aの機能構成における負荷導出部109に変えて、負荷モーメント導出部109Bを有する。また、シミュレーション装置10Bは、第2実施形態に係るシミュレーション装置10Aの機能構成に加え、相関関係取得部110を有する。なお、最適指令値特定部107B及び相関関係取得部110は、本発明の特定部の一例である。
負荷モーメント導出部109Bは、ダイナミクス計算部104により計算されたシミュレーションモデルの動作から、シミュレーションモデルが水平運動する際のロボットアームの加速度とワークの加速度との差に応じて吸着パッドに作用する負荷モーメントを導出する。負荷モーメント導出部109Bにより導出される負荷モーメントは、第2実施形態における負荷導出部109により導出される負荷モーメントMと同様である。
許容値受付部105Bは、ワークWの許容揺れ角と共に、許容されるワークWの落下率(以下、「許容落下率」という)を受け付ける。例えば、ロボットが包材により包装されたワークWを吸着する場合、包材にランダムなシワが発生する。ランダムなシワは、ロボットによるワークWの吸着力をランダムに低下させてしまい、ロボットによるワークWの保持を失敗させる可能性がある。つまり、包材を有するワークWを搬送する場合、ロボットを同じ動作条件により動かしても、ワークWが落下したりしなかったりする。同じ動作条件における複数回の搬送のうち、ワークWが落下する割合をワークの落下率と呼ぶ。許容落下率は、ユーザがどの程度の落下率まで許容できるかを表す。例えば、許容落下率が0.1%の場合、ユーザは、1000回の搬送のうち平均1回はワークが落下してしまうことを許容していることを表す。
相関関係取得部110は、負荷モーメントと、ワークの落下率に相当する物理量との相関関係を示すデータを取得する。データの取得先は、例えば、ストレージ14又は外部のサーバである。相関関係は、実験により求めた負荷モーメントと落下率との相関を表す確率分布を、確率紙を用いてプロットすることにより求められる。例えば、負荷モーメントと落下率との相関をワイブル分布として表し、ワイブル確率紙にプロットすることにより相関関係が得られる。確率分布はワイブル分布に限らず、正規分布、対数正規分布、グンベル分布、フレシェ分布、指数関数型最小値漸近分布、指数分布又はレーリー分布等も適用し得る。この場合も、それぞれに合わせた確率紙にプロットすることにより相関関係が得られる。図16に、負荷モーメントと、ワークの落下率に相当する物理量との相関関係の一例を示す。
最適指令値特定部107Bは、ワークWの揺れ角θが許容揺れ角θthの範囲内であることに加え、負荷モーメント導出部109Bにより導出される負荷モーメントに対応して、相関関係取得部110により取得される落下率が許容落下率を超えない範囲で、ロボットアームRの加速度arの最適パターンを特定する。
図17は、第3実施形態に係るシミュレーション装置10BのCPU11により実行される動作の流れを示すフローチャートである。CPU11がROM12又はストレージ14からシミュレーションプログラムを読み出して、RAM13に展開し実行することにより、シミュレーション処理が行なわれる。
ステップS303〜ステップS306及びステップS309〜S314は、図8に示すステップS102〜ステップS105及びステップS107〜S112と同様であるので、説明を省略する。
CPU11は、許容値受付部105Bとして、ワークWの許容揺れ角θth及び許容落下率を受け付ける(ステップS301)。以下では、受け付けた許容落下率に符号「p」を付す。許容落下率pの受け付けは、例えば、図9に示すような画面により許容揺れ角θthを受け付ける場合と同様に受け付けることができる。
CPU11は、相関関係取得部110として、上述の負荷モーメントと、ワークの落下率に相当する物理量との相関関係(例えば、図16)を参照し、ステップS301において受け付けた許容落下率pに対応する負荷モーメントMを閾値Tpとして設定する(ステップS302)。閾値Tpは、ストレージ14又はRAM13に一旦記憶される。
CPU11は、負荷モーメント導出部109Bとして、シミュレーション中に変化する、全ての負荷モーメントMを、式(11)に基づいて導出する(ステップS307)。
CPU11は、最適指令値特定部107Bとして、ワークWの揺れ角θ(t)が、許容揺れ角θthの範囲内で、かつ全ての負荷モーメントMが閾値Tp以下か否かを判断する(ステップS308)。ワークWの揺れ角θ(t)が許容揺れ角θthを超える値を含む場合、又は閾値Tpより大きい負荷モーメントMが存在する場合(ステップS308:NO)、CPU11は、ステップS311の処理に進む。一方、ワークWの揺れ角θ(t)が許容揺れ角θthの範囲内で、かつ全ての負荷モーメントMが閾値Tp以下の場合(ステップS308:YES)、CPU11は、ステップS309の処理に進む。
以上のように、第3実施形態のシミュレーション装置10Bによれば、算出した揺れ角を利用して、ワークの揺れ角が受け付けた許容揺れ角を超えない範囲で、かつ負荷モーメントに対応する落下率が許容落下率を超えない範囲で、最適なロボットアームの加速度を特定することができる。これにより、ユーザは、許容できる揺れ角及び落下率に応じた最適な動作指令値を知ることができる。
(第4実施形態)
第1〜第3実施形態では、揺れ角算出部106により算出されたワークWの揺れ角θを、ロボットアームRの加速度arの最適パターンを特定するために利用する場合について説明した。第4実施形態では、ワークWにロボットアームRの水平方向の加速度及び鉛直方向の加速度が作用することを考慮した負荷モーメントの導出に、算出されたワークWの揺れ角θを利用する場合について説明する。例えば、ロボットアームRが水平方向に対して傾斜した運動を行なう場合に、水平方向の加速度及び鉛直方向の加速度がワークWに作用する。
図18は、第4実施形態に係るシミュレーション装置10Cの機能構成を示すブロック図である。なお、シミュレーション装置10Cのハードウェア構成については、第1実施形態に係るシミュレーション装置10と同様であるため、説明を省略する。
図18に示すように、シミュレーション装置10Cは、第3実施形態に係るシミュレーション装置10Bの機能構成における最適指令値特定部107Bに変えて、最適指令値特定部107Cを有する。また、シミュレーション装置10Cは、第3実施形態に係るシミュレーション装置10Bの機能構成における負荷モーメント導出部109Bに変えて、負荷モーメント導出部109Cを有する。なお、シミュレーション装置10Cは、第3実施形態に係るシミュレーション装置10Bの機能構成における許容値受付部105B及び相関関係取得部110は有さない。なお、最適指令値特定部107Cは、本発明の特定部の一例である。
ここで、負荷モーメント導出部109Cにおける負荷モーメントの導出を説明するために、まず、図19に、ワークWにかかる力を示す。
図19において、ロボットアームRの加速度arを分解して得られる水平方向の加速度をay、鉛直方向の加速度をazとして示す。また、ワークWにかかる合成慣性力をFw、合成慣性力Fwを分解して得られる水平方向の慣性力をFy、鉛直方向の慣性力をFzとして示す。ワークWの鉛直方向に対する回転角度をθとして表す。また、ワークWの質量をm、シミュレーションモデルの回転する部分に作用する慣性モーメントをIとして表す。ワークWの回転中心からワークWの重心までの距離がL1、回転中心からワークWの先端(底面)までの距離をL2とする。
水平方向の慣性力Fyは、Fy=m×ayとして表され、鉛直方向の慣性力Fzは、Fz=m×azとして表される。
慣性力による水平方向のモーメントの腕の長さはL1sinθ、鉛直方向のモーメントの腕の長さはL1cosθで表され、θが小さい場合、各々L1θ、L1で表される。したがって、ロボットアームRと共に運動する並進座標系においては、ワークWに生じるモーメントτは、次の式(12)に示す回転の運動方程式により表される。
ワークWに生じるモーメントτと、慣性力によるモーメントとの差が、吸着パッドPに負荷としてかかる力、すなわち、負荷モーメントMである。
式(12)に上記の式(8)を代入し、負荷モーメントMの式に変形すると、式(13)が得られる。
したがって、負荷モーメント導出部109Cは、上記式(13)のθとして、揺れ角算出部106により算出されたワークWの揺れ角θを用いて、負荷モーメントMを導出する。
最適指令値特定部107Cは、負荷モーメント導出部109Cにより導出される負荷モーメントMが、予め定めた閾値Mpを超えない範囲で、ロボットアームRの加速度arの最適パターンを特定する。閾値Mpは、例えば、シミュレーションモデルに相当するロボットの実機を実行条件を変更して繰り返し動作させたときに、ワークが落下しなかった実行条件で発生する負荷モーメントのうちの最大値などを設定しておくことができる。
図20は、第4実施形態に係るシミュレーション装置10CのCPU11により実行される動作の流れを示すフローチャートである。CPU11がROM12又はストレージ14からシミュレーションプログラムを読み出して、RAM13に展開し実行することにより、シミュレーション処理が行なわれる。
ステップS401〜ステップS404及びステップS407〜S412は、図8に示すステップS102〜ステップS105及びステップS107〜S112と同様であるので、説明を省略する。
CPU11は、負荷モーメント導出部109Cとして、シミュレーション中に変化する、全ての負荷モーメントMを、ステップS404で算出されたワークWの揺れ角θ、及び式(13)に基づいて導出する(ステップS405)。
CPU11は、最適指令値特定部107Cとして、全ての負荷モーメントMが閾値Tp以下か否かを判断する(ステップS406)。閾値Tpより大きい負荷モーメントMが存在する場合(ステップS406:NO)、CPU11は、ステップS409の処理に進む。一方、全ての負荷モーメントMが閾値Tp以下の場合(ステップS406:YES)、CPU11は、ステップS407の処理に進む。
以上のように、第4実施形態のシミュレーション装置10Cによれば、水平方向に交差する方向にロボットアームを運動させる場合でも、算出した揺れ角を利用して、精度良く負荷モーメントを導出することができる。ワークの落下に影響を与える負荷モーメントを精度良く導出できることにより、ワークが落下しないようなロボットアームの加速度の最適パターンを特定することができる。これにより、ユーザは、ワークが落下しない最適な動作指令値を知ることができる。
なお、シミュレーション装置は、上記の各実施形態に限定されず、種々の改変が可能である。
例えば、上記各実施形態では、ワークWの傾きの度合いの一例として、ワークWの揺れ角θを算出する場合について説明したが、ワークWの揺れ幅を算出するようにしてもよい。ワークWの揺れ幅xは、例えば図21に示すように、ワークWの回転軸を通る鉛直方向を基準とし、回転中心とワークWの重心とを通る直線とワークWの底面との交点の水平方向の距離と定義することができる。この場合、揺れ幅xは、x=Lsinθにより、算出することができる。
また、ワークWの揺れ幅は、ワークWの加速度awの二階積分により求めることができる。ワークWの揺れが小さい場合、下記式(14)に示すように、揺れ幅xを利用した近似により、ワークWの揺れ角θを算出してもよい。
また、上記各実施形態では、算出したワークWの揺れ角θを利用して、ロボットアームRの加速度arの最適パターンを特定する場合について説明したが、これに限定されない。例えば、第1実施形態では、算出されたワークWの揺れ角θが、許容揺れ角θthの範囲内か否かをユーザに提示するようにしてもよい。また、ユーザから許容揺れ角θthを受け付けることなく、算出されたワークWの揺れ角θをユーザに提示するようにしてもよい。
また、上記各実施形態では、モーションパラメータの取りうる全ての組み合わせに対応するロボットアームRの加速度arのパターン(ar(t))から、最適パターンを探索する場合について説明したが、これに限定されない。例えば、算出された揺れ角θと、許容揺れ角θthとの比較結果に応じて、次にシミュレーションするモーションパラメータの組合せを決定し、所定の条件を満たすモーションパラメータが特定できた場合には、モーションパラメータの全ての組み合わせについてシミュレーションを行うことなく、シミュレーション処理を終了してもよい。所定の条件は、例えば、算出された揺れ角θが、許容揺れ角θthの範囲内で、かつタクトタイムが予め定めた時間以下の場合とすることができる。
また、上記各実施形態では保持体として吸着パッドを用いた例について説明した。しかし、吸着パッドに限定されず、ロボットアームに対してワークが相対運動可能な構成、すなわち、ロボットアームの加速度とワークの加速度とに差が生じる構成であればよい。例えば、ワークをチャック等により両サイドから把持し、把持された部分を結ぶ線を軸に、ワークに傾きが生じる場合などにも、本発明を適用することができる。
また、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行したシミュレーション処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field−Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、シミュレーション処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
また、上記各実施形態では、シミュレーションプログラムがストレージ14またはROM12に予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD−ROM(Compact Disk Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。