説明

ロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラム

【課題】シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能なロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラムを提供する。
【解決手段】仮想ロボットを軌道に沿って動かすロボットシミュレーション装置であって、前記仮想ロボットの軌道をサンプリング時間Tpだけサンプリングするプロセスである軌道計算プロセスP1を割り込み間隔Tiで行う軌道計算部と、前記サンプリング時間Tpが前記割り込み間隔Ti以下となる範囲で前記サンプリング時間Tpと前記割り込み間隔Tiとの双方を各別に可変にする時間可変部とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの動きをシミュレーションする装置、特に、オペレーティングシステムを用いてロボットの動きをシミュレーションするロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラムに関する。
【背景技術】
【0002】
従来から、特許文献1に記載のように、ロボットの動きをシミュレーションするロボットシミュレーション装置が知られている。図7は、ロボットシミュレーション装置の構成の一例をその機能に基づいて階層ごとに示す構成図である。図8は、ロボットシミュレーション装置が行うシミュレーションの一例をシミュレーションの対象であるロボットの構造とともに示す図である。また、図9は、こうしたロボットシミュレーション装置にて実行なわれるプロセスの推移を示すタイムチャートである。
【0003】
図7に示されるように、ロボットシミュレーション装置50の装置本体50aには、プロセッサー51、メモリー52、OS61、及びアプリケーションプログラム71が搭載されている。また、装置本体50aには、表示部53と入力部54とが接続されている。
【0004】
プロセッサー51には、プロセスのタイミングを定めるシステムタイマー51aが内蔵され、また、メモリー52には、仮想ロボットを画像で表現するためのロボットデータ52aが格納されている。プロセッサー51は、アプリケーションプログラム71の一つであるロボットシミュレーションプログラム71aを読み出して解釈するとともに、OS61の環境下にて、ロボットコントローラのメモリーアドレスをロボットシミュレーション装置50のメモリーアドレスに変換する。これによって、仮想ロボットコントローラが、ロボットシミュレーション装置50にて起動する。仮想ロボットコントローラは、仮想ロボットの構造、アクチュエーターの種別、仮想ロボットが行う動作の始点、及び仮想ロボットが行う動作の終点、これらを示すロボットデータ52aから読み出すとともに、上述した始点と終点とを結ぶ最適な全体軌道を計算する。そして、仮想ロボットコントローラは、システムタイマー51aの時間間隔で下記二つのプロセス、すなわち、軌道計算プロセスとイベントプロセスとを順に行う。
【0005】
軌道計算プロセスでは、まず、所定のサンプリング時間が経過したときのロボットの目標位置が上述した最適な全体軌道上に定められる。そして、仮想ロボットの現在位置と仮想ロボットの目標位置とをつなぐ最適な軌道が、現在位置からの目標軌道として計算される。すなわち、仮想ロボットコントローラでは、軌道計算プロセスが行われるたびに、現在位置からの微小な軌道が計算されて、こうした軌道の集合として最適な軌道が取り扱われる。その結果、最適な軌道がどの様な形状であっても、その最適な軌道に近い軌道に沿ってロボットが動くこととなる。
【0006】
イベントプロセスでは、まず、仮想空間におけるワークが仮想ロボットのハンドにセットされること、仮想ロボットが所定の位置に到達することなど、これら仮想ロボットの周辺部における非定常的及び偶発的な状態がイベントとして取り扱われる。そして、上記軌道計算プロセスが行われた直後にこうしたイベントが補足されるとともに、補足されたイベントに基づいて、イベント駆動のプロセスが続けて行われる。その結果、仮想ロボットの周辺部における非定常的及び偶発的な状態に合わせて仮想ロボットが軌道に沿って動くこととなる。
【0007】
例えば、ロボットシミュレーション装置50にてシミュレーションが行われると、図8に示されるように、ロボットシミュレーション装置50の表示部53には、動作表示画面53aが表示される。この動作表示画面53aには、シミュレーションの対象となる仮想ロボットR、仮想ロボットRの先端部を仮想空間で撮像するカメラCa、仮想ロボットRの位置を仮想空間で検出するロボットセンサーSeが表示される。なお、シミュレーションの対象となる仮想ロボットRは、垂直多関節ロボットやスカラーロボットであって、このような仮想ロボットRは、基端部であるロボット本体部Raと先端部であるロボットハンドRbとから構成されている。
【0008】
そして、仮想ロボットコントローラは、ロボット本体部Raに対して、上述した始点と終点とを用い、これら始点と終点とを結ぶ最適な軌道を計算する。次いで、仮想ロボットコントローラは、所定の時間間隔で上記軌道計算プロセスを行い、これによってロボット本体部Raの軌道を逐次更新する。また、仮想ロボットコントローラは、上記軌道計算プロセスを行うたびに、上記イベントプロセスを行い、ロボットハンドRb、カメラCa、ロボットセンサーSeなど、ロボット周辺部におけるイベントを補足する。そして、仮想ロボットコントローラは、ロボット本体部Raが終点に到達するまで、軌道計算プロセスとイベントプロセスとを繰り返して行い、これらの結果に基づいて、動作表示画面53aにおける仮想ロボットRの画像を更新し続ける。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2003−300185号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
ところで、上述したロボットシミュレーション装置50では、軌道計算プロセスとイベントプロセスとを行うための割り込みが、軌道計算プロセスを監視するシステムコールによって発生する。そして、OS61の環境下では、こうしたシステム割り込みの間隔が、通常、システムタイマー51aによる最小割り込み間隔となる。この際、システムタイマー51aによる最小割り込み間隔は、上述したプロセッサー51やメモリー52などのハードウェア資源のアーキテクチャーによって一義的に定められる。そのため、軌道計算プロセスの行われる割り込みの間隔は、例えば、一つの装置において2ミリ秒である一方、他の装置では10ミリ秒を超えるという場合もある。結局のところ、こうした最少割り込みの間隔は、ロボットシミュレーションプログラムの搭載されるハードウェア資源ごとに互いに異なることとなる。
【0011】
これに対して、軌道計算プロセスにて用いられるサンプリング時間とは、ロボットシミュレーションプログラムに固有の時間であって、上述したハードウェア資源のアーキテクチャーには寄らない時間である。すなわち、軌道計算プロセスの行われる割り込みの間隔が、ハードウェア資源ごとに異なる一方、軌道計算プロセスにてサンプリングする時間は、ハードウェア資源間にて共通するものとなる。それゆえに、ハードウェア資源の性能によっては、上述した最小割り込み間隔とサンプリング時間との間に大きな時間差が生じ、その結果、ロボットシミュレーションの結果が以下のようなものとなる虞がある。
【0012】
例えば、図9に示されるように、ハードウェア資源の性能が低く、最小割り込み間隔Tsがサンプリング時間Tpよりも大幅に大きくなる場合には、実際の時間軸にて最小割り込み間隔Tsが経過する間に、仮想ロボットコントローラ内の時間軸では、サンプリング時間Tpだけしか進まないことになる。その結果、シミュレーションそのものに必要とされる時間が長くなるうえ、表示部53に表示される仮想ロボットRの動きまでもが遅くなってしまう。ひいては、実際のロボットコントローラによって制御されたロボットの動き
と仮想ロボットの動きとが大きく異なってしまう。
【0013】
本発明は、上記問題を解決するためになされたものであり、その目的は、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能なロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラムを提供することにある。
【課題を解決するための手段】
【0014】
この発明は、仮想ロボットを軌道に沿って動かすロボットシミュレーション装置であって、前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算部と、前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変部とを備える。
【0015】
上述した軌道計算プロセスが所定の割り込み間隔で行われるとき、実際の時間軸では、割り込み間隔に相当する時間が経過するとともに、仮想ロボットの時間軸では、サンプリング時間が経過する。そのため、ハードウェア資源に基づく最小割り込み間隔で軌道計算プロセスが行われるとなれば、ハードウェア資源ごとに、割り込み間隔とサンプリング時間との時間差が互いに異なることとなる。そして、ハードウェア資源に基づく最小割り込み間隔が非常に大きなものとなれば、割り込みが発生するたび、割り込み間隔(Ti)とサンプリング時間(Tp)との差分(Ti−Tp)ずつ、仮想ロボットの時間が実際の時間よりも遅れることとなる。その結果、シミュレーションそのものに必要とされる時間が長くなるうえ、シミュレーションの結果であるロボットの動きまでもが遅くなってしまう。
【0016】
この発明によれば、サンプリング時間(Tp)が割り込み間隔(Ti)以下となる範囲でサンプリング時間(Tp)と割り込み間隔(Ti)とが可変となる。それゆえに、例えば、ハードウェア資源による最小割り込み間隔が相対的に長い場合には、割り込み間隔を長くするとともに、該割り込み間隔に合わせてサンプリング時間を長くすることが可能である。これによれば、割り込み間隔とサンプリング時間との差分(Ti−Tp)を短くすることが可能である。
【0017】
また、軌道計算プロセスに必要とされるプロセス時間も、上述した最小割り込み間隔と同じく、ハードウェア資源ごとに互いに異なるものである。それゆえに、例えば、ハードウェア資源による軌道計算の速度が相対的に低い場合には、サンプリング時間を相対的に長くするとともに、最小割り込み間隔とは異なる長い割り込み間隔をサンプリング時間に合わせて設定することが可能でもある。
【0018】
その結果、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能なロボットシミュレーション装置を提供することが可能である。
【0019】
この発明では、前記時間可変部は、前記サンプリング時間が前記割り込み間隔の半分以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にするとともに、前記軌道計算部は、前記割り込み間隔で行う前記軌道計算プロセスの回数と、前記割り込み間隔を前記サンプリング時間で除算した値の整数部とを同じにすることが好ましい。
【0020】
この発明によれば、割り込みが発生するたびに、複数回の軌道計算プロセスが行われる
。そして、割り込み間隔で行われる軌道計算プロセスの回数と、割り込み間隔をサンプリング時間で除算した値の整数部とが同じになる。それゆえに、実際の時間軸では、割り込み間隔が経過する一方、仮想ロボットの時間軸では、サンプリング時間が複数回にわたって加算されることとなる。これによれば、実際の時間軸における経過時間と仮想ロボットの時間軸における経過時間との差分が、サンプリング時間よりも確実に小さくなる。そのため、シミュレーションそのものに必要とされる時間が長くなること、シミュレーションの結果である仮想ロボットの動きが遅くなること、これらを確実に抑えることが可能である。
【0021】
この発明では、前記時間可変部は、前記割り込み間隔が前記サンプリング時間の整数倍となるように前記サンプリング時間と前記割り込み間隔とを可変にすることが好ましい。
この発明によれば、割り込みが発生するたびに、実際の時間軸では、割り込み間隔に相当する時間が経過し、また、仮想ロボットの時間軸では、サンプリング時間が複数回にわたって加算されることとなる。この際、割り込み間隔(Ti)がサンプリング時間(Tp)の整数倍(K倍)であるため、これら実際の時間軸における経過時間(Ti)と仮想ロボットの時間軸における経過時間(Tp×K)とが同じになる。それゆえに、シミュレーションそのものに必要とされる時間が長くなること、シミュレーションの結果である仮想ロボットの動きが遅くなること、これらをより確実に抑えることが可能である。
【0022】
この発明では、前記仮想ロボットは、前記軌道計算プロセスの対象であるロボット本体部と、該ロボット本体部の周辺を構成するロボット周辺部とから構成され、前記ロボット周辺部に対する状態の把握をイベントとして処理するイベントプロセスを前記軌道計算プロセスごとに該軌道計算プロセスに続いて行うイベント処理部をさらに備えることが好ましい。
【0023】
上述した時間可変部にて割り込み間隔とサンプリング時間とが同じもの(Ti=Tp)となれば、少なくとも実際の時間軸と仮想ロボットの時間軸とを一致させることは可能であって、シミュレーションの結果がハードウェア資源によって互いに異なることを抑えることは可能である。ただし、割り込み間隔とサンプリング時間とを同じもの(Ti=Tp)とすると、割り込み間隔(Ti)が大きい場合には、軌道計算プロセスに必要なプロセス時間とサンプリング時間(Tp(=Ti))との時間差も大きくなる。その結果、軌道計算プロセスのプロセス時間が経過してから該軌道計算プロセスのサンプリング時間(Tp)が経過するまでの時間も大きくなり、この間に発生するイベント数も多くなる。そして、こうしたイベントを補足することが困難となってしまう。
【0024】
この点、この発明によれば、軌道計算プロセスが行われるごとに、該軌道計算プロセスに続いてイベントプロセスが行われる。そのため、サンプリング時間(Tp)が長くなる場合であっても、該サンプリング時間にて発生したイベントをその後のイベントプロセスにて補足することが可能になる。また、一度の割り込みで複数回の軌道計算プロセスが行われる構成であれば、軌道計算プロセスが行われる回数分だけ、該軌道計算プロセスのサンプリング時間も小さくなる。そのため、軌道計算プロセスのプロセス時間が経過してからサンプリング時間が経過するまでの時間を短くすること、また、この時間に発生するイベントを少なくすることが可能ともなる。それゆえに、軌道計算プロセス後のイベントプロセスにて、イベントを補足することがより確実なものとなる。
【0025】
この発明は、前記ロボット本体部が、関節にて連結された複数のアームであり、前記ロボット周辺部が、前記ロボット本体部の先端に連結されたロボットハンドと、前記ロボットハンドを撮像するカメラと、前記ロボットハンドの位置を検出するセンサーとから構成されていることが好ましい。
【0026】
この発明によれば、ロボットハンド、カメラ、センサーから補足されるイベントを確実に補足しつつ、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えることが可能である。
【0027】
この発明は、仮想ロボットを軌道に沿って動かすロボットシミュレーション方法であって、前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算工程と、前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変工程とを備える。
【0028】
この発明によれば、サンプリング時間(Tp)が割り込み間隔(Ti)以下となる範囲でサンプリング時間(Tp)と割り込み間隔(Ti)とが可変となる。それゆえに、例えば、ハードウェア資源による最小割り込み間隔が相対的に長い場合には、割り込み間隔を長くするとともに、該割り込み間隔に合わせてサンプリング時間を長くすることが可能である。これによれば、割り込み間隔とサンプリング時間との差分を短くすることが可能である。
【0029】
また、軌道計算プロセスに必要とされるプロセス時間も、上述した最小割り込み間隔と同じく、ハードウェア資源ごとに互いに異なるものである。それゆえに、例えば、ハードウェア資源による軌道計算の速度が相対的に低い場合には、サンプリング時間を相対的に長くするとともに、最小割り込み間隔とは異なる長い割り込み間隔をサンプリング時間に合わせて設定することが可能でもある。
【0030】
その結果、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能なロボットシミュレーション方法を提供することが可能である。
【0031】
この発明は、仮想ロボットを軌道に沿って動かすコンピュータを、前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算部、前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変部として機能させるロボットシミュレーションプログラムである。
【0032】
この発明によれば、サンプリング時間(Tp)が割り込み間隔(Ti)以下となる範囲でサンプリング時間(Tp)と割り込み間隔(Ti)とが可変となる。それゆえに、例えば、ハードウェア資源による最小割り込み間隔が相対的に長い場合には、割り込み間隔を長くするとともに、該割り込み間隔に合わせてサンプリング時間を長くすることが可能である。これによれば、割り込み間隔とサンプリング時間との差分(Ti−Tp)を短くすることが可能である。
【0033】
また、軌道計算プロセスに必要とされるプロセス時間も、上述した最小割り込み間隔と同じく、ハードウェア資源ごとに互いに異なるものである。それゆえに、例えば、ハードウェア資源による軌道計算の速度が相対的に低い場合には、サンプリング時間を相対的に長くするとともに、最小割り込み間隔とは異なる長い割り込み間隔をサンプリング時間に合わせて設定することが可能でもある。
【0034】
その結果、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能なロボットシミュレーションプログラムを提供することが可能である。
【図面の簡単な説明】
【0035】
【図1】本発明の一実施形態におけるロボットシミュレーション装置の構成を機能に基づいて階層ごとに示す構成図。
【図2】同実施形態のロボットシミュレーション装置における条件入力画面を示す図。
【図3】同実施形態のロボットシミュレーション方法にて行われるプロセスの順序を示すフローチャート。
【図4】同実施形態の動作表示プロセスにて行われるプロセスの順序を示すフローチャート。
【図5】同実施形態のロボットシミュレーション方法にて行われるプロセスの推移を示すタイムチャート。
【図6】変形例のロボットシミュレーション方法にて行われるプロセスの推移を示すタイムチャート。
【図7】従来例のロボットシミュレーション装置の構成を機能に基づいて階層ごとに示す構成図。
【図8】ロボットシミュレーション装置の外観をロボットの構造とともに示す構成図。
【図9】従来例のロボットシミュレーション装置にて行われるプロセスの推移を示すタイムチャート。
【発明を実施するための形態】
【0036】
以下、本発明のロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラムを具体化した一実施の形態について図1〜図5を参照して説明する。
【0037】
なお、本実施の形態におけるロボットシミュレーション装置の外観は、先の図8に示される外観と同様であって、また、シミュレーションの対象となるロボットの構成も、先の図8に示すロボットと同様の垂直多関節ロボットである。そのため、以下では、これらロボットシミュレーション装置の外観、及びシミュレーションの対象となるロボットの構成に関する説明を割愛する。
【0038】
[ロボットシミュレーション装置]
まず、ロボットシミュレーション装置の構成について図1を参照して説明する。
図1に示されるように、ロボットシミュレーション装置は、プロセッサー11、メモリー12、OS21、アプリケーションプログラム31が搭載された装置本体10に入力部14と表示部13とが接続されたコンピュータである。
【0039】
プロセッサー11には、システムタイマー11aと、割り込みを発生させる割り込み発生部11bと、プロセスが行われた回数をカウントするプロセスカウンター11cとが搭載されている。そして、プロセッサー11は、アプリケーションプログラム31の一つであるロボットシミュレーションプログラム31aを読み出して解釈するととともに、OS21の環境下にて、ロボットコントローラのメモリーアドレスをロボットシミュレーション装置のメモリーアドレスに変換する。これによって、仮想ロボットコントローラが、ロボットシミュレーション装置にて起動する。
【0040】
入力部14には、シミュレーションを開始するための割り込み指令が入力される。また、入力部14には、割り込み間隔Ti、サンプリング時間Tp、ロボットデータ12aなどの各種のデータが入力される。
【0041】
割り込み間隔Tiとは、システムタイマー11aによる最小割り込み間隔以上の時間間隔であって、入力部14は、この条件が満たされる割り込み間隔Tiを装置本体10に入力する。サンプリング時間Tpとは、割り込み間隔Ti以下の時間であって、入力部14は、この条件が満たされるサンプリング時間Tpを装置本体10に入力する。
【0042】
ロボットデータ12aは、例えば、仮想ロボットRの機械的な構造、仮想ロボットRを構成するアクチュエーターの種別、仮想ロボットRを構成する減速機の減速比、ロボット本体部Raの動作の始点と終点などから構成されている。仮想ロボットコントローラは、仮想ロボットRの姿勢や仮想ロボットRの動きを仮想空間で表現するときに、このロボットデータ12aを用いる。
【0043】
表示部13は、ロボットデータ12aを入力するためのデータ入力画面、割り込み間隔Tiやサンプリング時間Tpを入力するための条件入力画面13a(図2参照)、これらを表示する。また、表示部13は、ロボットデータ12aに基づく仮想ロボットRの静止画像を表示したり、ロボットシミュレーションの結果である仮想ロボットRの動きを動画像で表示したりする。
【0044】
プロセッサー11のレジスタには、条件入力画面にて入力された割り込み間隔Tiと、同じく条件入力画面にて入力されたサンプリング時間Tpとが格納されている。さらに、プロセッサー11のレジスタには、割り込み間隔Tiをサンプリング時間Tpで除算した除算結果の整数部が、プロセスの行われる回数の設定値である設定回数Kとして格納されている。一方、メモリー12には、データ入力画面にて入力されたロボットデータ12aが格納されている。
【0045】
そして、プロセッサー11は、メモリー12に格納されたロボットデータ12aを読み出すとともに、ロボット本体部Raの動作の始点とロボット本体部Raの動作の終点とをつなぐ最適な全体軌道を計算する。また、プロセッサー11は、表示部13に仮想ロボットRの画像を表示するとともに、割り込み間隔Tiごとの割り込みを割り込み発生部11bに発生させる。また、割り込み発生部11bにて割り込みが発生するたびに、プロセッサー11は、ロボットシミュレーションプログラム31aに従って、軌道計算プロセスとイベントプロセスとを順に行う。さらに、割り込み発生部11bにて割り込みが発生するたびに、プロセッサー11は、プロセスカウンター11cのカウントした値をリセットするとともに、軌道計算プロセスとイベントプロセスとが行われるたびに、プロセスカウンター11cのカウントした値をインクリメントする。
【0046】
上述したように、軌道計算プロセスでは、まず、所定のサンプリング時間Tpが経過したときのロボット本体部Raの目標位置が、上述した最適な全体軌道上に定められる。そして、軌道計算プロセスが開始されるときのロボット本体部Raの位置である開始位置と該ロボット本体部Raの目標位置とをつなぐ最適な軌道が、今回の軌道計算プロセスにおける目標軌道として計算される。すなわち、仮想ロボットコントローラでは、軌道計算プロセスが行われるたびに、該軌道計算プロセスの開始位置からの微小な軌道が計算されて、こうした軌道の集合として上述した最適な軌道が取り扱われる。
【0047】
また、上述したように、イベントプロセスでは、まず、ワークWがロボットハンドRbにセットされること、ロボット本体部Raが所定の位置に到達することなど、これら仮想ロボットRの周辺部における非定常的及び偶発的な状態がイベントとして取り扱われる。そして、軌道計算プロセスが行われた直後にイベントが補足されるとともに、補足されたイベントに基づいて、イベント駆動のプロセスが続けて行われる。
【0048】
[ロボットシミュレーション方法]
次に、上述したロボットシミュレーション装置の作用をロボットシミュレーション装置にて行われるロボットシミュレーション方法とともに図3と図4とを参照して説明する。まず、ロボットシミュレーション方法の全体におけるプロセスの順序を説明し、次いで、ロボットシミュレーション方法にてシミュレーションの結果を表示する際のプロセスの順序を説明する。
【0049】
ロボットシミュレーションを行うための割り込み指令が入力部14から装置本体10に入力されると、図3に示されるように、プロセッサー11は、割り込み間隔Tiとサンプリング時間Tpとを設定する(ステップS11:時間可変工程)。すなわち、プロセッサー11は、ロボットシミュレーションプログラム31aを構成する割り込み間隔設定プログラムを読み出して解釈する。続いて、プロセッサー11は、割り込み間隔Tiとサンプリング時間Tpとを入力部14が入力するための条件入力画面13aを表示部13に表示する。これによって、割り込み間隔Tiとサンプリング時間Tpとの双方が互いに関わり合うことなく各別に初期値から可変となる。
【0050】
その後、条件入力画面13aに基づいて、入力部14が、割り込み間隔Tiとサンプリング時間Tpとを装置本体10に入力する。そして、プロセッサー11は、入力された割り込み間隔Tiと同じく入力されたサンプリング時間Tpとをレジスタに格納し、これによって、これら割り込み間隔Tiとサンプリング時間Tpとの設定を終了する。
【0051】
次いで、プロセッサー11は、ロボットシミュレーションプログラム31aを構成するコントローラ起動プログラムを読み出して解釈する。そして、プロセッサー11は、ロボットコントローラのメモリーアドレスをロボットシミュレーション装置のメモリーアドレスに変換する。これによって、仮想ロボットコントローラが、ロボットシミュレーション装置にて起動する(ステップS12)。
【0052】
続いて、プロセッサー11は、ロボットシミュレーションプログラム31aを構成するロボットデータ設定プログラムを読み出して解釈する。そして、プロセッサー11は、ロボットデータ12aを入力部14に入力するためのデータ入力画面を表示部13に表示する。その後、データ入力画面にてロボットデータ12aが入力されると、プロセッサー11は、ロボットコントローラのメモリーアドレスに対応するメモリーアドレスにロボットデータ12aを格納してロボットデータ12aの設定を終了する(ステップS13)。
【0053】
このようにして、割り込み間隔Ti、サンプリング時間Tp、及びロボットデータ12aが設定されると、プロセッサー11は、設定されたロボットデータ12aに基づいて、ロボット本体部Raの画像とロボット周辺部の画像とを仮想空間となる表示部13に表示する(ステップS14)。そして、仮想ロボットRの動作を表示するための割り込み指令が入力部14から入力されると、プロセッサー11は、ロボットシミュレーションプログラム31aを構成する動作表示プログラムを読み出して解釈し、これを実行する(ステップS15)。
【0054】
次に、上述した動作表示プログラムにおけるプロセスの順序について以下に説明する。
図4に示されるように、動作表示プログラムでは、まず、プロセッサー11は、プログラムカウンターなどを参照し、実行するべき命令があるか否かを判断する(ステップS21)。そして、実行するべき命令が無い場合には(ステップS21にてNO)、プロセッサー11は、動作表示プログラムを終了し、これに伴ってロボットシミュレーションを終了する。一方、実行するべき命令がある場合には(ステップS21にてYES)、プロセッサー11は、ロボット本体部Raの動作の始点とロボット本体部Raの動作の終点とをロボットデータ12aから読み出し、始点に位置するロボット本体部Raが終点に到達するまでの最適な軌道を計算する(ステップS22)。なお、この際、プロセッサー11は
、ロボット本体部Raが最短の軌道を移動するという条件、ロボット本体部Raの軌道が所定の曲率以上であるという条件など、予め設定された各種の条件に基づいて、始点から終点までの最適な軌道を計算する。そして、プロセッサー11は、割り込み発生部11bにて割り込みが発生するまで待機する(ステップS23にてNO)。
【0055】
次いで、割り込み発生部11bにて割り込みが発生すると(ステップS23にてYES)、プロセッサー11は、プロセスカウンター11cのカウントした値をリセットする。続いて、プロセッサー11は、仮想ロボットコントローラの時間軸を基準としたプロセス時間にサンプリング時間Tpを加算する(ステップS24)。そして、プロセッサー11は、軌道計算プロセスとイベントプロセスとを続けて実行する。
【0056】
すなわち、プロセッサー11は、サンプリング時間Tpが経過したときのロボット本体部Raの位置を上述した最適な軌道上に定める。そして、プロセッサー11は、このように定められた位置を今回の軌道計算プロセスにおける目標位置として取り扱う。続いて、プロセッサー11は、今回の軌道計算プロセスが開始されるときのロボット本体部Raの位置である開始位置を取得する。そして、プロセッサー11は、上述したロボット本体部Raの目標位置と開始位置とをつなぐ最適な軌道を今回の軌道計算プロセスにおける目標軌道として計算する(ステップS25:軌道計算工程)。また、プロセッサー11は、ロボット周辺部の状態をイベントに基づいて把握し、補足されたイベントに基づいてイベント駆動のプロセスを行う(ステップS26)。
【0057】
そして、上記軌道計算プロセスと上記イベントプロセスとが1回ずつ行われると、プロセッサー11は、プロセスカウンター11cのカウントする値をインクリメントする。次いで、プロセッサー11は、プロセスカウンター11cのカウントする値が設定回数Kに到達するまで、上述したサンプリング時間Tpの加算プロセス(ステップS24)、軌道計算プロセス(ステップS25)、イベントプロセス(ステップS26)を順に繰り返す(ステップS27にてNO)。
【0058】
続いて、プロセスカウンター11cのカウントする値が設定回数Kに到達すると(ステップS27にてYES)、プロセッサー11は、各軌道計算プロセスにて計算した目標軌道に基づいて仮想ロボットRの画像を表示部13にて更新する(ステップS28)。そして、プロセッサー11は、ロボット本体部Raが終点に到達したか否かを判断するとともに、ロボット本体部Raが終点に到達していない場合には、次の割り込みが発生するまで待機する(ステップS29にてNO、ステップS23)。一方、ロボット本体部Raが終点に到達した場合には、再び、実行すべき命令があるか否かを判断する(ステップS29にてYES、ステップS21)。
【0059】
[プロセスの推移]
次に、上述したロボットシミュレーション方法にて行われるプロセスの推移について図5を参照して説明する。なお、ロボットシミュレーション方法にて行われるプロセスの推移のうち、1つの割り込み間隔にて行われる軌道計算プロセスとイベントプロセスとの推移を特に説明するため、図5では、割り込み間隔Ti及びサンプリング時間Tpが下記の式(1)及び式(2)を満たす場合が例示されている。
・Ti=2×Ts=16ミリ秒 …式(1)
・Ti=K×Tp (K=4) …式(2)
すなわち、図5には、システムタイマー11aの最小割り込み間隔Tsが8ミリ秒であって、割り込み間隔Tiが最小割り込み間隔Tsの2倍である16ミリ秒となる形態が例示されている。また、図5には、設定回数Kが4回であって、この設定回数Kとサンプリング時間Tpとを乗算した値が上記割り込み間隔Tiとなる形態、すなわちサンプリング時間Tpが4ミリ秒となる形態が例示されている。
【0060】
図5に示されるように、割り込み発生部11bにて割り込みが発生すると、仮想ロボットコントローラでは、それの時間軸であるプロセス時間にサンプリング時間Tpである4ミリ秒が加算されるとともに、1回目の軌道計算プロセスP1と1回目のイベントプロセスP2とが続けて行われる。すなわち、軌道計算プロセスP1では、サンプリング時間Tpである4ミリ秒後の目標軌道が計算されるとともに、実際の時間軸にてサンプリング時間Tpが経過する間に、軌道計算プロセスP1とイベントプロセスP2とが行われる。そして、実際の時間軸にてサンプリング時間Tpが経過すると、仮想ロボットコントローラでは、プロセス時間にサンプリング時間Tpがさらに加算されるとともに、2回目の軌道計算プロセスP1と2回目のイベントプロセスP2とが続けて実行される。以降、サンプリング時間Tpが経過する都度、仮想ロボットコントローラでは、プロセス時間にサンプリング時間Tpが加算されるとともに、軌道計算プロセスP1とイベントプロセスP2とが続けて実行される。
【0061】
ここで、従来のロボットシミュレーション装置のように、最小割り込み間隔Ts(8ミリ秒)ごとに、1回の軌道計算プロセスP1が行われるとする。この場合、実際の時間軸にて最小割り込み間隔Tsが経過する間に、仮想ロボットコントローラ内の時間軸では、サンプリング時間Tpだけしか進まないことになる。すなわち、割り込み処理が発生するたびに、仮想ロボットコントローラ内の時間は、実際の時間よりも4ミリ秒ずつ遅れることとなる。そのため、シミュレーションそのものに必要とされる時間が長くなるうえ、表示部13に表示される仮想ロボットRの動きまでもが遅くなってしまう。ひいては、実際のロボットコントローラによって制御されたロボットの動きとシミュレーションの結果とが大きく異なってしまう。
【0062】
この点、上述したロボットシミュレーション装置では、割り込みが発生するたびに、設定回数Kの軌道計算プロセスP1が行われる。このような構成であれば、割り込み間隔Ti(16ミリ秒)が経過する間に、仮想ロボットコントローラ内の時間軸では、サンプリング時間Tp(4ミリ秒)が設定回数K(4回)だけ加算される。すなわち、実際の時間軸にて16ミリ秒が経過する間に、仮想ロボットコントローラ内の時間軸でも、同じく16ミリ秒が経過することになる。それゆえに、シミュレーションそのものに必要とされる時間が長くなること、表示部13に表示される仮想ロボットRの動きが遅くなること、これらを抑えることが可能である。ひいては、実際のロボットコントローラによって制御されたロボットの動きとシミュレーションの結果とを近づけることが可能となる。
【0063】
しかも、このロボットシミュレーション装置では、上述のようなシミュレーションが、最小割り込み間隔Ts(8ミリ秒)とは互い異なる割り込み間隔Ti(16ミリ秒)で行われる。それゆえに、例えば、他のハードウェア資源による最小割り込み間隔Tsが8ミリ秒よりも長くなる場合であっても、割り込み間隔Tiをそれよりも長くするとともに、該割り込み間隔Tiに合わせてサンプリング時間Tpを長くすることが可能である。また、例えば、他のハードウェア資源による軌道計算の速度が相対的に低い場合には、サンプリング時間Tpを相対的に長くするとともに、最小割り込み間隔Tsとは異なる割り込み間隔Tiをサンプリング時間Tpに合わせてさらに長く設定することが可能でもある。そして、これらによれば、割り込みあたりに必要とされるサンプリング時間Tpの合計と割り込み間隔Tiとの差分を小さくすることが可能である。それゆえに、最小割り込み間隔Tsが8ミリ秒よりも大きくなるハードウェア資源であれ、また、最小割り込み間隔Tsが8ミリ秒よりも小さくなるハードウェア資源であれ、さらには計算の速度が低いハードウェア資源であれ、上述した効果に準じた効果を得ることが可能でもある。
【0064】
以後、軌道計算プロセスP1とイベントプロセスP2とがそれぞれ設定回数Kである4回ずつ行われると、割り込み間隔Tiである16ミリ秒が経過して、割り込み発生部11
bにて次回の割り込みが発生する。そして、割り込み発生部11bにて割り込みが発生すると、仮想ロボットコントローラでは、再び、プロセス時間にサンプリング時間Tpが加算されるとともに、1回目の軌道計算プロセスP1と1回目のイベントプロセスP2とが続けて実行される。
【0065】
以上説明したように、本実施の形態のロボットシミュレーション装置、ロボットシミュレーション方法、及びロボットシミュレーションプログラムによれば、以下に列記する効果が得られる。
【0066】
(1)プロセッサー11は、仮想ロボットRの軌道をサンプリング時間Tpだけサンプリングする。そして、プロセッサー11は、こうした軌道計算プロセスP1を割り込み間隔Tiで行う軌道計算部として機能する。また、装置本体10は、サンプリング時間Tpが割り込み間隔Ti以下となる範囲でサンプリング時間Tpと割り込み間隔Tiとの双方を各別に可変にする時間可変部として機能する。
【0067】
このような構成によれば、例えば、他のハードウェア資源による最小割り込み間隔Tsが相対的に長くなる場合には、その最小割り込み間隔Ts以上に、可変となった割り込み間隔Tiを長くするとともに、該割り込み間隔Tiに合わせて、同じく可変となったサンプリング時間Tpを長くすることが可能である。これによれば、割り込み間隔Tiとサンプリング時間Tpとの差分(Ti―Tp)を短くすることが可能である。
【0068】
(2)また、例えば、他のハードウェア資源による計算の速度が相対的に低くなる場合には、軌道計算が可能な程度にまで可変となったサンプリング時間Tpを長くするとともに、そのサンプリング時間Tp以上に、同じく可変となった割り込み間隔Tiを設定することが可能である。
【0069】
これらの結果、シミュレーションを行うハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることの可能となる。
【0070】
(3)プロセッサー11では、割り込みが発生するたびに、設定回数Kの軌道計算プロセスP1が行われる。この際、割り込み間隔Tiで行われる軌道計算プロセスP1の回数と、割り込み間隔Tiをサンプリング時間Tpで除算した値の整数部(設定回数K)とが同じになるように、軌道計算プロセスP1が行われる。それゆえに、実際の時間軸では、割り込み間隔Tiが経過するとともに、仮想ロボットRの時間軸では、サンプリング時間Tpが設定回数Kだけ加算されることとなる。これによれば、実際の時間軸における経過時間と仮想ロボットの時間軸における経過時間との差分が、サンプリング時間Tpよりも確実に小さくなる。そのため、シミュレーションそのものに必要とされる時間が長くなること、シミュレーションの結果である仮想ロボットRの動きが遅くなること、これらを確実に抑えることが可能である。
【0071】
(4)上述したロボットシミュレーション装置では、割り込みが発生するたびに、実際の時間軸では、割り込み間隔に相当する時間が経過し、また、仮想ロボットRの時間軸では、サンプリング時間Tpが設定回数にわたって加算されることとなる。
【0072】
この際、割り込み間隔Tiがサンプリング時間Tpの整数倍(設定回数K倍)であるため、これら実際の時間軸における経過時間と仮想ロボットRの時間軸における経過時間とが同じとなる。それゆえに、シミュレーションそのものに必要とされる時間が長くなること、シミュレーションの結果である仮想ロボットRの動きが遅くなること、これらをより確実に抑えることが可能である。
【0073】
(5)プロセッサー11は、ロボット周辺部に対する状態の把握をイベントとして軌道計算プロセスP1ごとに処理する。そして、プロセッサー11は、こうしたイベントプロセスP2を該軌道計算プロセスP1に続いて行うイベント処理部として機能する。そのため、サンプリング時間Tpが長くなる場合であっても、該サンプリング時間Tpにて発生したイベントをその後のイベントプロセスP2にて補足することが可能になる。
【0074】
また、一度の割り込みで設定回数Kの軌道計算プロセスP1が行われるため、軌道計算プロセスP1が行われる設定回数Kの分だけ、該軌道計算プロセスP1のサンプリング時間Tpを小さくすることが可能である。そのため、軌道計算プロセスP1のプロセス時間が経過してからサンプリング時間Tpが経過するまでの時間を短くすること、また、この時間に発生するイベントを少なくすることが可能ともなる。それゆえに、軌道計算プロセスP1直後のイベントプロセスP2にて、イベントを補足することがより確実なものとなる。
【0075】
なお、上記実施の形態は、以下のような態様によって実施することも可能である。
・上記実施の形態では、設定回数Kが「4」である場合を例示した。これに限られず、設定回数Kは、「4」以外の整数であってもよい。図6は、上記実施の形態にて説明した図5に対応するタイミングチャートであって、設定回数Kが「1」である場合を示す。
【0076】
図6に示されるように、設定回数Kが「1」である場合であっても、割り込み間隔Tiに合わせてサンプリング時間Tpを長くすることが可能である。また、最小割り込み間隔Tsとは異なる長い割り込み間隔Tiと、その割り込み間隔Tiに合わせたサンプリング時間Tpとを設定することが可能である。このような構成によれば、軌道計算プロセスごとの目標軌道が長くなるものの、ハードウェア資源によってシミュレーションの結果が互いに異なることを抑えてハードウェア資源間でのシミュレーションの結果の差異を少なくすることは可能である。
【0077】
なお、上述した構成では、割り込み間隔Tiが大きくなると、軌道計算プロセスP1に必要なプロセス時間とサンプリング時間Tp(=Ti)との時間差も大きくなる。その結果、軌道計算プロセスP1のプロセス時間が経過してから該軌道計算プロセスP1のサンプリング時間Tpが経過するまでの時間Teも大きくなり、この間に発生するイベント数も多くなる。そのため、軌道計算プロセスP1を行った後に複数回のイベント処理を行う構成が好ましい。
【0078】
・ロボットシミュレーション装置及びプログラムは、入力部14の入力する割り込み間隔Tiを最小割り込み間隔Ts以上の値にする構成であれはよい。また、ロボットシミュレーション装置及びプログラムは、入力部14の入力するサンプリング時間Tpを割り込み間隔Ti以上の値にする構成であればよい。
【0079】
・割り込み間隔Tiは、設定回数Kが可変になることによって、サンプリング時間Tpとは各別に可変になる構成であってもよい。例えば、割り込み間隔Tiは、サンプリング時間Tpと設定回数Kとに基づいてプロセッサー11にて演算される演算値であってもよい。この際、サンプリング時間Tpと設定回数Kとが各別に入力部14から入力されるとともに、プロセッサー11が、入力値であるサンプリング時間Tpと入力値である設定回数Kとを乗算して、その乗算結果を割り込み間隔Tiとしてレジスタに格納する構成であってもよい。
【0080】
・サンプリング時間Tpは、設定回数Kが可変になることによって、割り込み間隔Tiとは各別に可変になる構成であってもよい。例えば、サンプリング時間Tpは、割り込み
間隔Tiと設定回数Kとに基づいてプロセッサー11にて演算される演算値であってもよい。この際、サンプリング時間Tpと設定回数Kとが入力部14から入力されるとともに、プロセッサー11が、入力値である割り込み間隔Tiを入力値である設定回数Kによって除算して、その除算結果をサンプリング時間Tpとしてレジスタに格納する構成であってもよい。
【0081】
・ロボットシミュレーション装置及びプログラムは、入力部14の入力する割り込み間隔Tiが、入力部14の入力するサンプリング時間Tpの整数倍でない場合には、割り込み間隔Tiをサンプリング時間Tpで除算した商の整数部が、設定回数Kとしてプロセッサー11に格納されるという構成であってもよい。また、ロボットシミュレーション装置及びプログラムは、該整数部よりも小さい整数が設定回数Kとして格納されるという構成であってもよい。
【0082】
・イベントプロセスP2は、複数の軌道計算プロセスP1が行われるたびに、プロセッサー11により行われる構成であってもよい。あるいは、イベントプロセスP2は、軌道計算プロセスP1が行われるか否かに関わらず、所定の時間間隔でプロセッサー11により行われる構成であってもよい。さらには、ロボットシミュレーション装置及びプログラムは、イベントプロセスP2を行わない構成であってもよい。
【0083】
・ロボット本体部Raは、例えば、関節にて連結されたアームの他、ロボットハンドRbを有する構成であってもよく、仮想ロボットRのうち、軌道計算の対象となる部分であればよい。また、ロボット周辺部は、例えば、仮想ロボットRの設置される設備において扉の開閉を監視するセンサーであってもよく、仮想ロボットRのうち、ロボット本体部Raの周辺にてロボット本体部Raの動きに関わる情報を出力する部分であればよい。
【0084】
・サンプリング時間Tpが割り込み間隔Ti以下となる範囲でサンプリング時間Tpと割り込み間隔Tiとを各別に可変にするという専用の論理回路が着脱可能なチップとしてロボットシミュレーション装置に搭載される構成であってもよい。すなわち、ロボットシミュレーション装置は、ロボットシミュレーションプログラムが有する上述した機能がハードウェアとして具体化される構成であってもよい。
【符号の説明】
【0085】
Ca…カメラ、K…設定回数、P1…軌道計算プロセス、P2…イベントプロセス、R…仮想ロボット、Ra…ロボット本体部、Rb…ロボットハンド、Se…ロボットセンサー、Ti…割り込み間隔、Tp…サンプリング時間、W…ワーク、10,50a…装置本体10,51…プロセッサー、11a,51a…システムタイマー、11b…割り込み発生部、11c…プロセスカウンター、12,52…メモリー、12a,52a…ロボットデータ、13,53…表示部、13a…条件入力画面、14,54…入力部、21,61…OS、31,71…アプリケーションプログラム、31a,71a…ロボットシミュレーションプログラム、50…ロボットシミュレーション装置、53a…動作表示画面。

【特許請求の範囲】
【請求項1】
仮想ロボットを軌道に沿って動かすロボットシミュレーション装置であって、
前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算部と、
前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変部と
を備えるロボットシミュレーション装置。
【請求項2】
前記時間可変部は、
前記サンプリング時間が前記割り込み間隔の半分以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にするとともに、
前記軌道計算部は、
前記割り込み間隔で行う前記軌道計算プロセスの回数と、前記割り込み間隔を前記サンプリング時間で除算した値の整数部とを同じにする
請求項1に記載のロボットシミュレーション装置。
【請求項3】
前記時間可変部は、
前記割り込み間隔が前記サンプリング時間の整数倍となるように前記サンプリング時間と前記割り込み間隔とを可変にする
請求項2に記載のロボットシミュレーション装置。
【請求項4】
前記仮想ロボットは、
前記軌道計算プロセスの対象であるロボット本体部と、該ロボット本体部の周辺を構成するロボット周辺部とから構成され、
前記ロボット周辺部に対する状態の把握をイベントとして処理するイベントプロセスを前記軌道計算プロセスごとに該軌道計算プロセスに続いて行うイベント処理部をさらに備える
請求項1〜3のいずれか一項に記載のロボットシミュレーション装置。
【請求項5】
前記ロボット本体部が、関節にて連結された複数のアームであり、
前記ロボット周辺部が、前記ロボット本体部の先端に連結されたロボットハンドと、前記ロボットハンドを撮像するカメラと、前記ロボットハンドの位置を検出するセンサーとから構成されている
請求項4に記載のロボットシミュレーション装置。
【請求項6】
仮想ロボットを軌道に沿って動かすロボットシミュレーション方法であって、
前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算工程と、
前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変工程と
を備えるロボットシミュレーション方法。
【請求項7】
仮想ロボットを軌道に沿って動かすコンピュータを、
前記仮想ロボットのサンプリング時間後の軌道を計算する軌道計算プロセスを割り込み間隔で行う軌道計算部、
前記サンプリング時間が前記割り込み間隔以下となる範囲で前記サンプリング時間と前記割り込み間隔との双方を各別に可変にする時間可変部
として機能させるロボットシミュレーションプログラム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図8】
image rotate

【図9】
image rotate

【図1】
image rotate

【図7】
image rotate


【公開番号】特開2012−135821(P2012−135821A)
【公開日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願番号】特願2010−287873(P2010−287873)
【出願日】平成22年12月24日(2010.12.24)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】