以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
[第1実施形態]
図1は、本発明の第1実施形態に係るロボット装置の概略構成を示す説明図である。ロボット装置500は、多関節(2関節以上)のロボット200と、ロボット200の軌道を生成する軌道生成装置100と、生成された軌道に基づきロボット200の動作を制御するロボットコントローラ300と、を備えている。また、ロボット装置500は、作業者(ユーザ)の操作により軌道生成装置100にデータ入力等を行う操作部410と、軌道生成装置100から表示データを入力して画像表示を行う表示部420とを有する操作装置400を備えている。
軌道生成装置100は、演算部であるCPU(Central Processing Unit)101と、種々のデータを格納する記憶部106と、を備えたコンピュータで構成されている。操作装置400の表示部420は、ディスプレイであり、ロボットアーム210や作業空間を3D(3次元)グラフィックス表示して、生成された動作軌道を作業者が視認できるよう構成されている。なお、操作部410と表示部420とが1つの操作装置400に組み込まれている場合について説明するが、操作部410と表示部420とが独立した装置で構成されていてもよい。また、操作部410と表示部420とが別々に構成されている場合について説明するが、操作部410と表示部420とがタッチパネルディスプレイ等の操作及び表示が可能な操作表示部で構成されていてもよい。
CPU101は、後述するプログラムを読み出して実行することにより、キネマティクス計算部31、経路生成部32、経路繋ぎ合せ部33、教示点計算部34及び最適速度計算部35として機能する。
図2は、本発明の第1実施形態に係るロボット装置のロボットを示す模式図である。ロボット200は、多関節(2関節以上、第1実施形態では2関節)のロボットアーム210と、ロボットアーム210の先端に取り付けられたエンドエフェクタ、例えばロボットハンド220とを有している。
ロボットアーム210は、例えば2つの関節(軸)J1,J2とリンク201,202で構成される2自由度のロボットアームである。関節には回転関節や直動関節の他、球体関節などさまざまな種類があるが、第1実施形態では、関節J1,J2は、回転(旋回)関節である。関節の動作はモータ等の動力源で能動的に動作する場合と、動力源を持たずに受動的に動作する場合があるが、第1実施形態では、関節J1,J2は、動力源を有する。ロボットアームは、各関節間がリンクにより結びつけられ、関節とリンクが交互に直列されたシリアルリンク型と、関節とリンクの組合せが並列となったパラレルリンク型などがあるが、第1実施形態では、回転関節を有するシリアルリンク型とする。つまり、ロボットアーム210は、ロボットアーム自体が動作するような動作体として広く観念されるものであればよく、特に限定するものではない。例えば、6軸多関節ロボットアームや直動型のロボットアームを用いてもよい。
ロボットアーム210(ロボット200)の自由度を表すパラメータを関節角度として、ロボットアーム210の2軸J1,J2の関節角度をそれぞれθ1,θ2とする。ロボットアーム210のコンフィグレーションは(θ1,θ2)で表され、関節空間上では、1つの点とみなすことができる。このように、ロボットアーム210の自由度を表すパラメータ(例えば、関節角度や伸縮長さ)を座標軸の値とした場合、ロボットアーム210のコンフィグレーションは関節空間上の点として表現することができる。つまり、関節空間は、ロボットアーム210(ロボット200)の関節角度を座標軸とする空間である。
また、ロボット200の先端、即ちロボットハンド220には、ツールセンターポイント(TCP)が設定されている。TCPは、位置を表す3つのパラメータ(x,y,z)と、姿勢(回転)を表す3つのパラメータ(α,β,γ)、即ち6つのパラメータ(x,y,z,α,β,γ)で表され、タスク空間上では、1つの点としてみなすことができる。つまり、タスク空間は、これら6つの座標軸で規定された空間である。
図3は、本発明の第1実施形態に係る軌道生成装置100の構成を示すブロック図である。図3に示すように、コンピュータで構成されている軌道生成装置100は、演算部としてのCPU101を備えている。また軌道生成装置100は、記憶部106として、ROM(Read Only Memory)102、RAM(Random Access Memory)103及びHDD(Hard Disk Drive)104を備えている。また、軌道生成装置100は、記録ディスクドライブ105及び各種のインタフェース111〜113を備えている。
CPU101には、ROM102、RAM103、HDD104、記録ディスクドライブ105及びインタフェース111〜113が、バス120を介して接続されている。
ROM102には、BIOS等の起動プログラムが格納されている。RAM103は、CPU101の演算処理結果等、各種データを一時的に記憶する。HDD104には、プログラム140が格納(記録)されている。そして、CPU101は、プログラム140を読み出して実行することにより、後述する軌道生成方法の各工程を実行する。つまり、CPU101は、プログラム140を読み出して実行することにより、図1に示す各部31〜35として機能する。記録ディスクドライブ105は、記録ディスク141に記録された各種データやプログラム等を読み出すことができる。
インタフェース111には、上述した操作装置400が接続されている。インタフェース112には、USBメモリ等の書き換え可能な不揮発性メモリ、或いは外付けHDD等の外部記憶装置600が接続されている。インタフェース113には、上述したロボットコントローラ300が接続されている。
図1において、キネマティクス計算部31は、ロボット200(ロボットアーム210)の各関節角度情報から、ロボット200のTCPの位置及び回転(姿勢)を求める順キネマティクスを計算する。また、キネマティクス計算部31は、ロボット200のTCPの位置及び回転(姿勢)から、ロボット200(ロボットアーム210)の各関節角度を計算する逆キネマティクスを計算する。
キネマティクス計算部31は、例えば、教示点として、コンフィグレーション(θ1,θ2)を与えられ、それを基準として直線補間を行う場合、コンフィグレーションを順キネマティクスによりTCPの位置及び回転にする。逆に、キネマティクス計算部31は、教示点として、TCPの位置及び回転を与えられ、関節補間をする場合は、TCPの位置及び回転を逆キネマティクスによりコンフィグレーションにする。
経路生成部32は、教示点間を補間するロボット200の経路(補間経路)を生成する。ロボット200の経路とは、関節空間におけるロボット200のコンフィグレーションの軌跡、もしくはタスク空間におけるロボット200のTCPの軌跡である。換言すれば、ロボット200の経路とは、関節空間又はタスク空間の点(ポーズ)の順序集合である。ロボット200の軌道とは、時間をパラメータとしてポーズ(経路)を表したものであり、第1実施形態では、時刻毎のロボット200の関節の関節指令値(角度指令値)の集合である。ロボット200の関節は複数あるため、各関節で関節指令値の同期がとられる。
教示点間を補間する補間方法としては、Spline補間、B−Spline補間、ベジェ曲線、直線補間、円弧補間、関節補間などがあり、媒介変数sの値により、ロボット200の経路上の位置を示す。つまり、媒介変数sの値にロボット200の位置(補間点)が対応付けられて、これら点の集合で一連の経路が形成される。これら補間方法により、媒介変数sをパラメータとした補間関数が、ロボット200の経路(補間経路)として求められる。
関節加加速度の制約を考慮に入れる場合、媒介変数sに関して経路が3階まで微分した微分値の変化が連続である必要がある。例えば、3次のB−Spline曲線の場合、媒介変数sに対しC3級(3階まで微分した値が連続)になる。
最適速度計算部35は、算出されたロボット200の経路に対し、所定の物理的制約を守りつつ、ロボット200の動作時間を最短にするという最適化問題を解き、ロボット200の最適速度を計算する。所定の物理的制約とは、第1実施形態では、ロボット200の関節トルクの制約、関節角速度の制約、関節角加速度の制約、関節角加加速度の制約、TCP速度の制約及びTCP加速度の制約である。ロボット200のTCP速度の制約とは、ロボット200の先端の速度の制約である。ロボット200のTCP加速度の制約とは、ロボット200の先端の加速度の制約である。
第1実施形態では、所定の物理的制約には、これら全ての制約が含まれる場合について説明するが、これに限定するものではない。所定の物理的制約には、少なくとも、関節角速度の制約及びTCP速度の制約のうち少なくとも1つの制約が含まれている。これに加え、所定の物理的制約には、関節トルクの制約、関節角加速度の制約、関節角加加速度の制約及びTCP加速度の制約のうち少なくとも1つの制約が含まれていればよい。それぞれの制約値の中で、最も高い階数以上の階数を持った経路を生成すれば、計算上の制約値を計算するモデルも連続となり、正確に制約値を計算することができる。
関節トルクの制約、関節角加速度の制約、関節角加加速度の制約及びTCP加速度の制約を条件にロボット200の軌道を求める際には、媒介変数sで経路を1〜3階微分した微分値を用いる。このため、経路は媒介変数sに対し少なくともC3級(3階微分した微分値の変化が連続)である必要がある例について説明する。つまり、所定の物理的制約には、経路を媒介変数sで1〜3階微分した微分値を用いて評価する制約が含まれており、第1実施形態では、関節トルクの制約、関節角加速度の制約、関節角加加速度の制約及びTCP加速度の制約が含まれている。
最適化問題の解き方としては、公知の方法を用いればよく、例えば、パラメータを置き換えて、問題を凸問題化し、ログバリア法とニュートン法を用いて大域的収束解に高速に収束させるといった方法を用いればよい。
経路繋ぎ合せ部33は、2つの補間経路それぞれに繋ぎ合せ区間(重ね合せ区間)を設け、2つの補間経路の繋ぎ合せ区間上の点に重み係数を乗じて足し合せ、2つの補間経路を所定の滑らかさ(ここではC3級の滑らかさ)で繋ぎ合せた経路を生成する。
関節補間及び直線補間でそれぞれ生成された、媒介変数sに関してC3級の2つの補間経路を、経路繋ぎ合せ部33が、媒介変数sに関してC3級の滑らかさを保ち繋ぎ合せる例を以下に説明する。
媒介変数sに関して滑らかに、関節空間で補間した補間経路とタスク空間で補間した補間経路とを繋ぐためには、各補間経路に繋ぎ合せ区間を設け、徐々に関節空間補間経路からタスク空間補間経路に移り変える必要がある。徐々に移り変える際に、繋ぎ合せの重みを徐々に移していくことが、滑らかに繋ぐ上で必須となる。
重み関数の条件として、繋ぎ合せの区間の開始点と終了点で、媒介変数sでの1〜3階の微分値が0になり(0とみなせるものも含む)、かつ媒介変数sに関して少なくともC3級での滑らかさが必要になる。そこで、C∞級であるシグモイド関数を応用して重みづけをすることを考える。
シグモイド関数は、
である。しかし、このままでは、定義域が−∞≦x≦∞となり扱いにくい。そこで、シグモイド関数とtan(x)との合成関数を以下のように考える。
更に、
この重み関数は、aを十分大きくとれば、定義域の開始点と終了点で、1〜3階微分値がほぼ0とみなせるため、異なる補間方法で作成した補間経路を媒介変数sに関してほぼC3級を保ち滑らかに繋ぐ重みづけに利用できる。
図4は、a=5の時の第1重み関数fsig1(x)、第2重み関数fsig2(x)のグラフであり、図4(a)は第1重み関数fsig1(x)のグラフ、図4(b)は第2重み関数fsig2(x)のグラフである。
なお、第1重み関数はxの増加に応じて0から1に順次変化する関数であり、第2重み関数はxの増加に応じて1から0に順次変化する関数であって、同じx値のときの第1重み関数の第1重み係数と、第2重み関数の第2重み係数との合計が1であればよい。このような関数であれば第1重み関数及び第2重み関数は、上記の関数に限定されるものではなく、多項式やその他の関数を用いてもよい。その際、第1重み関数は、媒介変数sの関数であって、所定の階数(例えば3階)まで媒介変数sによる微分で連続な関数であってもよい。また、第2重み関数は、媒介変数sの関数であって、所定の階数(例えば3階)まで媒介変数sによる微分で連続な関数であってもよい。
図5は、第1実施形態におけるタスク空間でのロボットの経路を示す説明図であり、図6は、第1実施形態における関節空間でのロボットの経路を示す説明図である。
但し、図5中のP21,P22は、直線補間経路を生成するための教示点であり、図6中のQ11,Q12は、関節補間経路を生成するための教示点である。また、図6中のQ11,Q12のタスク空間上のTCPの位置及び回転をそれぞれ図5中のP11,P12とする。TCPが図5中のP21,P22の位置及び回転にあるときのロボット200(ロボットアーム210)のコンフィグレーションをそれぞれ図6中のQ21,Q22とする。
また、関節空間上の教示点Q11,Q12により関節補間をした、関節補間経路上のロボット200のコンフィグレーションを図6中のq1(s1)(0≦s1≦1)とする。タスク空間上の教示点P21,P22により直線補間をした、直線補間経路上にTCPを位置付けるロボット200のコンフィグレーションを図6中のq2(s2)(0≦s2≦1)とする。但し、s1、s2は、それぞれ関節補間経路、直線補間経路の媒介変数とする。
また、ロボット200のコンフィグレーションがq1(s1)の時のTCPの位置及び回転を表すベクトルを図5中のp1(s1)とする。ロボット200のコンフィグレーションがq2(s2)の時のTCPの位置及び回転を表すベクトルを図5中のp2(s2)とする。
第1教示点である教示点P11(又は教示点Q11)及び第2教示点である教示点P22(又は教示点Q22)は、ロボット200を通過させる点である。これら2つの教示点P11,P22(又は教示点Q11,Q22)は、ユーザが操作部410を操作して直接、又はユーザが操作部410を操作して記憶部106に記憶させて、CPU101に指定(設定)する。
一方、第1補助点である教示点P12(又は教示点Q12)及び第2補助点である教示点P21(又は教示点Q21)は、ロボット200が通過しない点であって、補助的な点である。第1実施形態では、教示点P12(又は教示点Q12)は、予め設定される点であり、教示点P21(又は教示点Q21)は、演算により求める点である。
今、関節補間により求めた第1補間経路である関節補間経路を、直線補間により求めた第2補間経路である直線補間経路に繋ぎ合せることを考える。そこで、関節補間経路(第1補間経路)上のs1=s1sを繋ぎ合せ区間の開始点とする。このs1=s1sのとき点は、関節補間経路上の途中点(第1途中点)である。また、関節補間経路上のs1=s1eを繋ぎ合せ区間の終了点とする。
また、直線補間経路(第2補間経路)上のs2=s2sを繋ぎ合せ区間の開始点とし、直線補間経路上のs2=s2eを繋ぎ合せ区間の終了点とする。s2=s2eのとき点は、直線補間経路上の途中点(第2途中点)である。今簡単のために各定数を、s1e=1、s2s=0、s2e−s2s=s1e−s1sつまりs2e=1−s1sとする。
ユーザは、各補間経路の繋ぎ合せ区間とそうでない区間の境目となる第1途中点及び第2途中点である教示点P1a,P2a(又は教示点Q1a,Q2a)のうち少なくとも1つの途中点のパラメータ値を設定(指定)する。教示点計算部34は、その点を基に、経路補間に用いる教示点と繋ぎ合せ区間を逆算する。
第1実施形態の繋ぎ合せ区間は、関節補間と直線補間とが繋ぎ合さった繋ぎ合せ経路となるため、直線にはならず、ユーザの意図した動きにならない可能性がある。
そこで、ユーザが、直線補間経路のここからは直進性を確保したいという点を、直線補間経路上から指定(設定)する。その点から、教示点計算部34により、経路補間に用いる適切な教示点と、繋ぎ合せ区間を算出する。
第1実施形態では、直進性を確保できる図5中の教示点P2aをユーザが指示(設定)し、そこから逆算して、教示点P21と、定数s2eを教示点計算部34により逆算を行う。具体的には、直線補間が媒介変数s=s2eの時のTCPの位置及び回転p1(s)が教示点P2aと重なるように、教示点P21と、定数s2eを逆算する。
なお、定数s2eが求まれば、s2e=1−s1sであるので、定数s1sが求まる。
第1実施形態では、直線補間経路の教示点及び繋ぎ合せ区間の調整のみを説明したが、それに限定するものではない。関節補間部分も、ユーザが同様に繋ぎ合せ区間とそうでない区間の境目である教示点P1a(教示点Q1a)を指定(設定)して、関節補間の特性が欲しい区間をユーザが指示できるようにしても良い。
sは、2つの補間経路を繋ぎ合せたロボット200の経路の媒介変数である。この媒介変数sの値にロボット200の経路上の点が対応している。つまり、媒介変数sの値を決めると、その値に対応するロボット200の経路上の点が決まる。第1実施形態では、媒介変数sは、0から1+s1までの範囲の値である。s=0からs=1+s1まで時刻に応じて媒介変数sの値が増加するように変化させることにより、ロボット200のTCPは、教示点P11から教示点P22まで経路上を移動することとなる。
0≦s<s1sの局所区間を関節補間区間、s1s≦s<1の区間を繋ぎ合せ区間、1≦s<1+s1sの局所区間を直線補間区間とする。このときの2つの補間経路を繋ぎ合せたときの関節空間上の経路q(s)は以下のようになる。
ここで、fsig1((s−s1s)/(1−s1s))は第1重み関数、fsig2((s−s1s)/s2e)は第2重み関数である。これら関数のsに数値を代入することで、第1重み係数及び第2重み係数が求まる。
媒介変数sに関してC3級で滑らかさを保つq(s)を用いれば、連続なq’(s),q’’(s),q’’’(s)を求めることが可能となる。また、q(s)を用いれば、最適速度計算(ロボット200の動作時間を最適にする最適化計算)をした後に、それに基づき、一定時間ごとの関節指令値(つまり軌道)を生成することが可能となる。
式(5)に則り、図6における、繋ぎ合せ区間での繋ぎ合せ経路上の点を算出する式は図4のグラフ上の値を用いて以下のように書ける。
ここで、q11,q12,q13,q14,q15は、図6中、第1補間経路である関節補間経路q1(s1)上の教示点Q1aから教示点Q12までの複数の補間点(第1補間点)である。また、q21,q22,q23,q24,q25は、図6中、第2補間経路である直線補間経路q2(s2)上の教示点Q21から教示点Q2aまでの複数の補間点(第2補間点)である。
図7は、第1実施形態に係る軌道生成方法の主要なステップを示すフローチャートである。以下、軌道生成装置100のCPU101により行われるロボット200の軌道生成方法の各工程について説明する。
まず、CPU101は、ロボット200が作業を行う作業空間での、ロボット200のモデル及び制約条件(所定の物理的制約)を記憶部106(例えばHDD104)から読み込む(S101)。
ロボット200のモデルは、ロボット200を構成する部品の設計情報であり、各リンクの慣性モーメント、質量、位置、回転、軸数等である。制約条件は、ロボット200の物理的制約を定義したもので、ロボット200の関節トルクの制約、関節角速度の制約、関節角加速度の制約、関節角加加速度の制約、TCP速度の制約及びTCP加速度の制約である。
次に、CPU101は、ロボット200の教示点及び補間方法を取得する(S102)。例えば、ロボット200の教示点は、TCPの位置及び回転、又は関節角度により決定することができる。教示点と同時に、どういった補間方法で、その教示点まで移動するかの情報を読み込む。
第1実施形態でCPU101が取得する教示点は、第1教示点である教示点P11(又は教示点Q11)、第1補助点である教示点P12(又は教示点Q12)、第2教示点である教示点P22(又は教示点Q22)である。
また、第1実施形態では、ユーザが関節補間と直線補間を指定するので、第1実施形態でCPU101が取得する補間方法は、第1補間方法である関節補間、第2補間方法である直線補間である。これら教示点及び補間方法は、記憶部106(例えばHDD104)に記憶されたロボットプログラムにて指定(設定)されている。
次に、CPU101は、途中点である教示点P1a,P2aのうち、少なくとも一方、第1実施形態では教示点P2aがユーザにより設定(指定)され、繋ぎ合せ区間を設定する(S103:設定工程)。第1実施形態では、関節補間のs1s≦s1<1の区間と、直線補間の0<s2<s2eの区間を繋ぎ合せ区間とする。繋ぎ合せ区間は、任意であるが、ユーザが指定した教示点から直進性を確保する場合、教示点計算部34により、それに合わせて直線補間の経路生成に用いる教示点と繋ぎ合せ区間を調整する。
具体的に説明すると、定数s1eは1に、定数s2sは0に設定される。つまり、これら定数s1e,s2sは、予め記憶部106に記憶されており、CPU101が記憶部106から読み出して設定する。
第2補助点から第2教示点に向かう第2補間経路上の第2途中点である教示点P2a(パラメータ値)は、ユーザが設定(指定)する。これにより、CPU101は、第2補助点である教示点P21及び定数s2e,s1sを演算する。なお、第1実施形態では、第1教示点から第1補助点に向かう第1補間経路上の第1途中点である教示点P1aは、予め記憶部106に記憶されており、CPU101が記憶部106から読み出して設定する。
以上、ステップS103により、繋ぎ合せ区間、つまり定数s1s,s2eが設定(初期化)される。
次に、CPU101は、第1補間経路である関節補間経路と第2補間経路である直線補間経路とを繋ぎ合せたロボット200の経路q(s)を生成する経路生成処理を実行する(S104)。具体的には、図6において、関節補間経路における教示点Q11と教示点Q1aとの間の第1局所経路と、直線補間経路における教示点Q2aと教示点Q22との間の第2局所経路とを、繋ぎ合せ区間の繋ぎ合せ経路で繋ぎ合せた経路q(s)を生成する。ここで、第1局所経路は、q1(s)(但し0≦s<s1s)である。第2局所経路は、q2(s−s1s)(但し1≦s<1+s1s)である。繋ぎ合せ経路は、q1(s)×fsig1((s−s1s)/(1−s1s))+q2(s−s1s)×fsig2((s−s1s)/s2e)(但しs1s≦s<1)である(式(5)参照)。
次に、CPU101は、速度の最適化の対象となる2つの補間経路を繋いだ経路q(s)上の評価点を決定する(S105)。例えば、s=0からs=1+s1sまで、ある一定のΔsずつ等分割したsの列を評価点とする。
次に、CPU101は、補間関数、つまり経路q(s)を使って、媒介変数sに関する数値微分により、評価点におけるq’(s),q’’(s),q’’’(s)を求める(S106)。
次にCPU101は、q’(s),q’’(s),q’’’(s)を用い、関節トルク制約、関節角速度制約、関節角加速度制約、関節角加加速度制約、TCP速度制約及びTCP加速度制約の制約を条件に最短時間で移動する最適速度を計算する(S107)。
次に、CPU101は、式(14)のように、最適速度計算により計算したs(・)(s)から、s(t)を計算し、q(s)から一定時間Δt毎の関節指令値(角度指令値)を求める(S108)。但し、s(0)=0とする。
以上のステップS105〜S108が最適化計算工程である。つまり、ステップS105〜S108により、経路q(s)に対し、所定の物理的制約を守るようロボット200の動作時間を最適化する最適化計算によって、時刻に対応する媒介変数sの値(つまりs(t))を求めて、ロボット200の軌道を求める。
媒介変数sに関してC3級の滑らかさをもつq(s)を用いれば、q’(s)、q’’(s)、q’’’(s)が連続となり、ロボット200への関節指令値を生成する際の誤差を大幅に減らすことができる。
次に、ステップS104の経路生成処理について具体的に説明する。図8は、媒介変数sを入力してコンフィグレーションq(s)を出力する、図7のステップS104における経路生成処理を示すフローチャートである。
まずCPU101は、媒介変数sの数値を取得(入力)する(S201)。CPU101は、入力した媒介変数sの数値で場合分けを行う(S202)。つまり、CPU201は、このステップS202で、媒介変数sの数値の判別を行う。0≦s<s1sの場合は、関節補間区間、s1s≦s<1の場合は、関節補間と直線補間の繋ぎ合せ区間、1≦s<1+s1sの場合は、直線補間区間である。
CPU101は、ステップS202の判別で0≦s<s1sの場合(補間方法が関節補間の場合)、教示点Q11,Q12により関節補間を行い、媒介変数sの関数となる関節補間経路であるq1(s)を求める(S203)。つまりCPU101は、媒介変数sの関数であり、所定の階数(例えば3階)微分した微分値の変化が連続な、教示点Q11から教示点Q12に向かう関節補間経路q1(s)を、関節補間により生成する(第1補間経路生成工程)。0≦s<s1sの区間では、第1補間経路中の教示点Q11と教示点Q1aとの間の第1局所経路q1(s)が、ロボット200の経路であり、q(s)=q1(s)となる。CPU101は、コンフィグレーションq(s)を出力する(S204)。
CPU101は、ステップS202の判別でs1s≦s<1の場合(関節補間と直線補間の繋ぎ合せ区間の場合)、教示点Q11,Q12により関節補間を行い、q1(s)を求める(S205:第1補間経路生成工程)。
CPU101は、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S206)。つまりCPU101は、媒介変数sの関数であり、教示点P21から教示点P22に向かう第2補間経路である直線補間経路p2(s−s1s)を、関節補間により生成する(第2補間経路生成工程)。このステップS206で生成する直線補間経路p2(s−s1s)は、所定の階数(例えば3階)まで媒介変数sにより微分した微分値の変化が連続な、媒介変数sの関数である。
CPU101は、p2(s−s1s)に対し、キネマティクス計算部31により逆キネマティクス計算を行い、コンフィグレーションq2(s−s1s)を求める(S207)。つまり、CPU101は、関節補間経路及び直線補間経路を、タスク空間及び関節空間のうちいずれかの空間(第1実施形態では、関節空間)における経路に統一する。
次に、CPU101は、関節補間したコンフィグレーションq1(s)に重みづけするための第1重み関数fsig1((s−s1s)/(1−s1s))から、第1重み係数を求める(S208)。また、CPU101は、直線補間したコンフィグレーションq2(s)に重みづけするための第2重み関数fsig2((s−s1s)/s2e)から第2重み係数を求める(S209)。
CPU101は、q1(s)にfsig1((s−s1s)/(1−s1s))を掛け、q2(s−s1s)にfsig2((s−s1s)/s2e)を掛けて和をとって、繋ぎ合せ経路q(s)(但しs1s≦s<1)を求める(S210)。
q1(s)(但しs1s≦s<1)は、式(6)〜式(10)に示す第1補間点q11,q12,q13,q14,q15の集合である。CPU101は、各補間点q11,q12,q13,q14,q15に各第1重み係数r11,r12,r13,r14,r15を掛け算する。
同様に、q2(s−s1s)(但しs1s≦s<1)は、式(6)〜式(10)に示す第2補間点q21,q22,q23,q24,q25の集合である。CPU101は、各補間点q21,q22,q23,q24,q25に各第2重み係数r21,r22,r23,r24,r25を掛け算する。ここで、r11+r21=1,r12+r22=1,r13+r23=1,r14+r24=1,r15+r25=1である。
各第1重み係数r11,r12,r13,r14,r15は、媒介変数sが大きくなるに従って1から0に順次遷移する。つまり、r11(=1)>r12>r13>r14>r15(=0)である。
また、各第2重み係数r21,r22,r23,r24,r25は、1から各第1重み係数r11,r12,r13,r14,r15を引いた値となるよう媒介変数sが大きくなるに従って0から1に順次遷移する。つまり、r21(=0)<r22<r23<r24<r25(=1)である。
即ち、CPU101は、ステップS210では、補間点q11,q12,q13,q14,q15に対して、教示点Q11に近い側の補間点から順に、1から0に順次遷移する重み係数r11,r12,r13,r14,r15をかける。また、CPU101は、補間点q21,q22,q23,q24,q25に対して、教示点Q21に近い側の補間点から順に、0から1に順次遷移する重み係数r21,r22,r23,r24,r25をかける。CPU101は、補間点q1n(n=1〜5、以下同じ)に重み係数r1nをかけて求めた点と、補間点q2nに重み係数r2nをかけて求めた点とを足し合わせて、繋ぎ合せ経路q1,q2,q3,q4,q5を生成する(図7、式(6)〜式(10))。
以上のステップS206〜S210により、CPU101は、媒介変数sの関数であって、所定の階数(例えば3階)まで媒介変数sにより微分した微分値の変化が連続な、教示点Q1aから教示点Q2aに向かう繋ぎ合せ経路を生成する(繋ぎ合せ工程)。CPU101は、コンフィグレーションq(s)を出力する(S211)。
なお、重み係数r1n,r2nは、ステップS208,S209で重み関数から求める場合について説明したが、これに限定するものではなく、予め重み係数r1n,r2nを計算しておいて記憶部106に記憶させておいてもよい。その際、CPU101は、ステップS208,S209では、演算を行わずに記憶部106から重み係数r1n,r2nのデータを読み出すだけでよい。
次に、CPU101は、ステップS202の判別で1≦s<1+s1sの場合(補間方法が直線補間の場合)、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S212:第2補間経路生成工程)。
CPU101は、p2(s−s1s)に対し、逆キネマティクス計算を行い、関節空間上のコンフィグレーションであるq2(s−s1s)を求める(S213)。1≦s<1+s1sの区間では、第2補間経路中の教示点Q2aと教示点Q22との間の第2局所経路q2(s−s1s)が、ロボット200の経路であり、q(s)=q2(s−s1s)である。CPU101は、コンフィグレーションq(s)を出力する(S214)。
以上のステップS201〜S214は、媒介変数sの数値を、0から1+s1sまで変化させて繰り返し行う。これらステップS201〜S214により、式(5)に示す、ロボット200の関節空間においてC3級の経路q(s)が求まる。
以上、第1実施形態によれば、ロボット200が関節補間と直線補間という異なる2つの補間経路を繋げ合せた際に、媒介変数sに関してC3級で滑らかなロボット200の関節空間における経路q(s)を生成している。これにより、2つの補間経路を繋げ合せた経路q(s)を辿るロボット200が停止することのない、物理的制約を守った軌道を生成することができる。
特に、ステップS210では、CPU101が、q1n×r1n+q2n×r2n(n=1〜5)を計算して、繋ぎ合せ経路qnを生成している。これにより、繋ぎ合せ経路は、媒介変数sに関してC3級で滑らかな経路として生成される。なお、第1実施形態では、説明の都合上、n=1〜5としたが、これに限定するものではない。nの数は、多ければ多いほど精度が向上するため、繋ぎ合せ経路として、多数の点を生成するのがよい。第1実施形態では、第1及び第2重み関数に基づいて第1及び第2重み係数を計算しているので、予め大量の重み係数のデータを記憶部106に記憶させておく必要がない。よって、記憶部106のメモリ領域が圧迫されることがなく、メモリ領域を有効活用できる。
また、第1実施形態によれば、ユーザが教示点P2a(Q2a)を設定(指定)しているため、経路の繋ぎ合せ区間を意識せずに、直進性が必要な区間をユーザが指定でき、使用性が上がるという効果がある。
[第2実施形態]
本発明の第2実施形態に係る軌道生成方法について説明する。なお、軌道生成装置、即ちロボット装置の構成は、上記第1実施形態と同様であり、説明を省略する。第2実施形態では、上記第1実施形態と異なる補間方法の組み合わせ、即ち円弧補間と直線補間の2種類の補間方法が指定されている。
図9は、第2実施形態におけるタスク空間でのロボットアームの経路を示す説明図であり、図10は、第2実施形態における関節空間でのロボットアームの経路を示す説明図である。
第2実施形態では、第1補間方法を円弧補間とし、第2補間方法を、上記第1実施形態と同様、直線補間としたものである。円弧補間をした時のコンフィグレーションをq1(s)とすると、上記第1実施形態と同様、式(5)により、経路の滑らかさを保った繋ぎ合せが可能となる。式(5)に則り、図10における、繋ぎ合せ区間での繋ぎ合せ経路上の点q1〜q5を算出する式は、上記第1実施形態と同様、式(6)〜式(10)になる。
上記第1実施形態と違い、円弧補間した補間経路は、タスク空間上のTCPの経路となるため、関節空間上で繋ぎ合せるためには、逆キネマティクスを行い、コンフィグレーションを求めて円弧補間経路q1(s)を求める。
以上を考慮にいれ、媒介変数sからコンフィグレーションq(s)を求める流れを説明する。図11は、媒介変数sを入力してコンフィグレーションq(s)を出力する経路生成処理のフローチャートである。なお、第2実施形態では、第1補間方法がタスク空間で補間経路を生成する方法であるため、求めた第1補間経路である円弧補間経路を逆キネマティクス計算により関節空間における経路に変換する点で、上記第1実施形態と異なる。それ以外は、上記第1実施形態と同様であるため、以下、経路生成処理に関する各工程を簡略して説明する。
まずCPU101は、媒介変数sを取得(入力)する(S301)。CPU101は、入力された媒介変数sの区間で場合分けを行う(S302)。0≦s<s1sの場合は、円弧補間区間、s1s≦s<1の場合は、円弧補間と直線補間の繋ぎ合せ区間、1≦s<1+s1sの場合は、直線補間区間である。
CPU101は、ステップS302の判別で0≦s<s1sの場合、教示点P11,P12によりTCPを円弧補間し、p1(s)を求める(S303)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S304)。0≦s<s1sの区間では、第1局所経路q1(s)が、ロボット200の経路であり、q(s)=q1(s)となる。CPU101は、コンフィグレーションq(s)を出力する(S305)。
次に、CPU101は、ステップS302の判別でs1s≦s<1であった場合、まず教示点P11,P12によりTCPを円弧補間し、p1(s)を求める(S306)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S307)。
CPU101は、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S308)。CPU101は、p2(s−s1s)に対し、逆キネマティクス計算を行い、コンフィグレーションq2(s−s1s)を求める(S309)。
CPU101は、円弧補間したコンフィグレーションq1(s)に重みづけするための重み関数fsig1((s−s1s)/(1−s1s))を求める(S310)。CPU101は、直線補間したコンフィグレーションq2(s)に重みづけするための重み関数fsig2((s−s1s)/s2e)を求める(S311)。
CPU101は、q1(s)にfsig1((s−s1s)/(1−s1s))を掛け、q2(s−s1s)にfsig2((s−s1s)/s2e)を掛けて和をとって、q(s)を求める(S312)。CPU101は、コンフィグレーションq(s)を出力する(S313)。
CPU101は、ステップS302の判別で1≦s<1+s1sであった場合、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S314)。CPU101は、p2(s−s1s)に対し、逆キネマティクス計算を行い、関節空間上のコンフィグレーションであるq2(s−s1s)を求める(S315)。1≦s<1+s1sの区間では、第2局所経路q2(s−s1s)が、ロボット200の経路であり、q(s)=q2(s−s1s)である。CPU101は、コンフィグレーションq(s)を出力する(S316)。
以上、円弧補間と直線補間とをC3級を保って繋ぎ合せたコンフィグレーションq(s)が求められるので、上記第1実施形態と同様、図7の流れで、最適速度を計算することができる。
また、図7のステップS103において、ユーザが円弧補間経路の円弧性と、直線補間経路の直進性を確保したい点P1a,P2a(又は点Q1a,Q2a)をそれぞれ指定(設定)する。教示点計算部34として機能するCPU101は、その点P1a,P2a(又は点Q1a,Q2a)を基に、円弧補間及び直線補間の教示点及び繋ぎ合せ区間を逆算する。
繋ぎ合せ区間は、円弧補間と直線補間が繋ぎ合わさった経路となるため、純粋な円弧もしくは直線にはならず、ユーザの意図した動きにならない可能性がある。そこで、ユーザが、ここまでは円弧性を確保し、ここからは、直進性を確保したいという点を指定し、それから、教示点計算部34により適切な教示点P12,P21(又は教示点Q12,Q21)を演算する。
つまり、第2実施形態では、円弧性を確保する図9上の点P1a、直進性を確保できる図9上の点P2aをユーザが指示する。CPU101は、そこから逆算して、それぞれ適当なP12,P21,s1s,s2eを求める。具体的には、円弧補間経路が、s1=s1sのときのTCPの位置及び回転p1(s)が、P1aと重なり、直線補間経路がs2=s2eの時のTCPの位置及び回転p2(s2)が、P21と重なるようにP12,P21,s1s,s2eを逆算する。
以上説明したように、第2実施形態によれば、上記第1実施形態の効果に加えて、教示点に付随する補間方法が、円弧補間から直線補間に切り替わる場合にも、経路の切り替え時に停止せずに、ロボット200の各種物理的制約を守った最適な軌道を生成できる。また、第2実施形態によれば、経路の繋ぎ合せ区間を意識せずに、円弧性及び直進性が必要な区間をユーザが指定できるため、使用性が上がるという効果がある。
[第3実施形態]
本発明の第3実施形態に係る軌道生成方法について説明する。なお、軌道生成装置、即ちロボット装置の構成は、上記第1,第2実施形態と同様であり、説明を省略する。第3実施形態では、上記第1,第2実施形態と異なる補間方法の組み合わせ、即ち円弧補間と関節補間の2種類の補間方法が指定されている。
図12は、第3実施形態におけるタスク空間でのロボットアームの経路を示す説明図であり、図13は、第3実施形態における関節空間でのロボットアームの経路を示す説明図である。
第3実施形態では、第1補間方法を円弧補間、第2補間方法を関節補間としたものである。円弧補間をした時のコンフィグレーション(補間経路)をq1(s)とし、関節補間した時のコンフィグレーション(補間経路)をq2(s)すると、上記第1実施形態と同様、式(5)により、経路の滑らかさを保った繋ぎ合せが可能となる。式(5)に則り、図13における、繋ぎ合せ区間での経路上の点q1〜q5を算出する式は、上記第1実施形態と同様、式(6)〜式(10)になる。
上記第2実施形態と同様、円弧補間した経路は、タスク空間上のTCPの経路となるため、関節空間上で繋ぎ合せるためには、逆キネマティクスを行い、コンフィグレーションを求めて円弧補間経路q1(s)を求める。以上を考慮にいれ、媒介変数sからコンフィグレーションq(s)を求める流れを説明する。
図14は、媒介変数sを入力してコンフィグレーションq(s)を出力する経路生成処理のフローチャートである。なお、第3実施形態では、第2補間方法が関節空間で補間経路を生成する方法であるため、第2補間経路である関節補間経路を関節空間で求める点で、上記第2実施形態と異なる。それ以外は、上記第2実施形態と同様であるため、以下、経路生成処理に関する各工程を簡略して説明する。
まずCPU101は、媒介変数sを取得(入力)する(S401)。CPU101は、入力された媒介変数sの区間で場合分けを行う(S402)。0≦s<s1sの場合は、円弧補間区間、s1s≦s<1の場合は、円弧補間と関節補間の繋ぎ合せ区間、1≦s<1+s1sの場合は、関節補間区間である。
CPU101は、ステップS402の判別で0≦s<s1sの場合、教示点P11,P12によりTCPを円弧補間し、p1(s)を求める(S403)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S404)。0≦s<s1sの区間では、第1局所経路q1(s)が、ロボット200の経路であり、q(s)=q1(s)となる。CPU101は、コンフィグレーションq(s)を出力する(S405)。
次に、CPU101は、ステップS402の判別でs1s≦s<1の場合、まず教示点P11,P12によりTCPを円弧補間し、p1(s)を求める(S406)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S407)。
CPU101は、教示点Q21,Q22により関節補間し、q2(s−s1s)を求める(S408)。
CPU101は、円弧補間したコンフィグレーションq1(s)に重みづけするための重み関数fsig1((s−s1s)/(1−s1s))を求める(S409)。CPU101は、直線補間したコンフィグレーションq2(s)に重みづけするための重み関数fsig2((s−s1s)/s2e)を求める(S410)。
CPU101は、q1(s)にfsig1((s−s1s)/(1−s1s))を掛け、q2(s−s1s)にfsig2((s−s1s)/s2e)を掛けて和をとって、q(s)を求める(S411)。CPU101は、コンフィグレーションq(s)を出力する(S412)。
CPU101は、ステップS402の判別で1≦s<1+s1sの場合、教示点Q21,Q22により関節補間し、q2(s−s1s)を求める(S413)。1≦s<1+s1sの区間では、第2局所経路q2(s−s1s)が、ロボット200の経路であり、q(s)=q2(s−s1s)である。CPU101は、コンフィグレーションq(s)を出力する(S414)。
以上、円弧補間と関節補間とをC3級を保って繋ぎ合せたコンフィグレーションq(s)を求められるので、上記第1実施形態と同様、図7の流れで、最適速度を計算することができる。
また、図7のステップS103において、ユーザが円弧補間経路の円弧性を確保したい点P1a(又は点Q1a)をそれぞれ指定(設定)する。教示点計算部34として機能するCPU101は、その点P1a(又は点Q1a)を基に、円弧補間及び関節補間の教示点及び繋ぎ合せ区間を逆算する。
繋ぎ合せ区間は、円弧補間と関節補間が繋ぎ合わさった経路となるため、純粋な円弧にはならず、ユーザの意図した動きにならない可能性がある。そこで、ユーザが、ここまでは円弧性を確保したいという点を指定する。そこから教示点計算部34により適切な教示点P12(又は教示点Q12)を演算する。
つまり、第3実施形態では、円弧性を確保する図12上の点P1aをユーザが指示する。CPU101は、そこから逆算して、適当なP12とs1sを求める。具体的には、円弧補間経路が、s1=s1sのときのTCPの位置及び回転p1(s1)が、P1aと重なるようにP12、s1sを逆算する。
以上説明したように、第3実施形態によれば、上記第1実施形態の効果に加えて、教示点に付随する補間方法が、円弧補間から関節補間に切り替わる場合にも、経路の切り替え時に停止せずに、ロボット200の各種物理的制約を守った最適な軌道を生成できる。また、第3実施形態によれば、経路の繋ぎ合せ区間を意識せずに、円弧性が必要な区間をユーザが指定できるため、使用性が上がるという効果がある。
[第4実施形態]
本発明の第4実施形態に係る軌道生成方法について説明する。なお、軌道生成装置、即ちロボット装置の構成は、上記第1,第2及び第3実施形態と同様であり、説明を省略する。第4実施形態では、上記第1,第2,第3実施形態と異なる補間方法の組み合わせ、即ち直線補間と直線補間の補間方法が指定されている。
図15は、第4実施形態におけるタスク空間でのロボットアームの経路を示す説明図であり、図16は、第4実施形態における関節空間でのロボットアームの経路を示す説明図である。
第4実施形態では、第1補間方法を第1直線補間、第2補間方法を第2直線補間としたものである。第1直線補間をした時のコンフィグレーションをq1(s)とし、第2直線補間をした時のコンフィグレーションをq2(s)すると、上記第1実施形態と同様、式(5)により、経路の滑らかさを保った繋ぎ合せが可能となる。式(5)に則り、図16における、繋ぎ合せ区間での経路上の点q1〜q5を算出する式は、上記第1実施形態と同様、式(6)〜式(10)になる。
上記第1実施形態と同様、直線補間した経路は、タスク空間上のTCPの経路となるため、関節空間上で繋ぎ合せるためには、逆キネマティクスを行い、コンフィグレーションを求めて直線補間経路q1(s),q2(s−s1s)を求める。
以上を考慮にいれ、媒介変数sからコンフィグレーションq(s)を求める流れを説明する。図17は、媒介変数sを入力してコンフィグレーションq(s)を出力する経路生成処理のフローチャートである。なお、第4実施形態では、第1補間方法がタスク空間で補間経路を生成する方法であるため、求めた第1補間経路である直線補間経路を逆キネマティクス計算により関節空間における経路に変換する点で、上記第1実施形態と異なる。それ以外は、上記第1実施形態と同様であるため、以下、経路生成処理に関する各工程を簡略して説明する。
まずCPU101は、媒介変数sを取得(入力)する(S501)。CPU101は、入力された媒介変数sの区間で場合分けを行う(S502)。0≦s<s1sの場合は、第1直線補間区間、s1s≦s<1の場合は、第1直線補間と第2直線補間の繋ぎ合せ区間、1≦s<1+s1sの場合は、第2直線補間区間である。
CPU101は、ステップS502の判別で0≦s<s1sの場合、教示点P11,P12によりTCPを直線補間し、p1(s)を求める(S503)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S504)。0≦s<s1sの区間では、第1局所経路q1(s)が、ロボット200の経路であり、q(s)=q1(s)となる。CPU101は、コンフィグレーションq(s)を出力する(S505)。
次に、CPU101は、ステップS502の判別でs1s≦s<1の場合、まず教示点P11,P12によりTCPを直線補間し、p1(s)を求める(S506)。CPU101は、p1(s)に対し、逆キネマティクス計算を行い、コンフィグレーションq1(s)を求める(S507)。
CPU101は、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S508)。CPU101は、p2(s−s1s)に対し、逆キネマティクス計算を行い、コンフィグレーションq2(s−s1s)を求める(S509)。
CPU101は、直線補間したコンフィグレーションq1(s)に重みづけするための重み関数fsig1((s−s1s)/(1−s1s))を求める(S510)。CPU101は、直線補間したコンフィグレーションq2(s)に重みづけするための重み関数fsig2((s−s1s)/s2e)を求める(S511)。
CPU101は、q1(s)にfsig1((s−s1s)/(1−s1s))を掛け、q2(s−s1s)にfsig2((s−s1s)/s2e)を掛けて和をとって、q(s)を求める(S512)。CPU101は、コンフィグレーションq(s)を出力する(S513)。
CPU101は、ステップS502の判別で1≦s<1+s1sの場合、教示点P21,P22によりTCPを直線補間し、p2(s−s1s)を求める(S514)。CPU101は、p2(s−s1s)に対し、逆キネマティクス計算を行い、関節空間上のコンフィグレーションであるq2(s−s1s)を求める(S515)。1≦s<1+s1sの区間では、第2局所経路q2(s−s1s)が、ロボット200の経路であり、q(s)=q2(s−s1s)である。CPU101は、コンフィグレーションq(s)を出力する(S516)。
第4実施形態によれば、上記第1実施形態の効果に加えて、教示点に付随する補間方法が、第1直線補間から第2直線補間に切り替わる場合にも、経路の切り替え時に停止せずに、ロボット200の各種物理的制約を守った最適な軌道を生成できる。これは、背景技術で述べた直線補間から直線補間に移る手法と比較して、各種物理的制約を守った最適な軌道を生成できるという点で有利である。また、第4実施形態によれば、経路の繋ぎ合せ区間を意識せずに、直進性が必要な区間をユーザが指定できるため、使用性が上がるという効果がある。
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
なお、上記実施形態では、関節空間での繋ぎ合せで説明したが、それに限定されるものではなく、タスク空間で同様の繋ぎ合せを行ってもよい。例えば、TCPの位置及び回転に対し、同様の重み関数を用いて経路の繋ぎ合せを行ってもよい。この場合、最終的には、タスク空間上の経路を、関節空間上の経路に変換して、軌道を生成すればよい。
また、上記実施形態においては、軌道生成装置100が1つのコンピュータにより構成される場合について説明したが、複数のコンピュータにより構成される場合についても本発明は適用可能である。この場合、複数のCPUで本発明の演算部が構成されていてもよい。また、軌道生成装置100とロボットコントローラ300とが別のコンピュータで構成される場合について説明したが、1つのコンピュータで構成されていてもよい。この場合、該コンピュータのCPUが、ロボットの経路を生成して、生成した経路に従ってロボットの動作を制御することとなる。
上記実施形態の各処理動作は具体的にはCPU101により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を軌道生成装置100に供給し、軌道生成装置100を構成するコンピュータ(CPUやMPU)が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がHDD104であり、HDD104にプログラム140が格納される場合について説明したが、これに限定するものではない。プログラム140は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図3に示すROM102や外部記憶装置600、記録ディスク141等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
また、上記実施形態では、コンピュータが記録媒体や記憶装置に記録されたプログラムを実行することにより、処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をASICやFPGA等の専用LSIで構成してもよい。なお、ASICはApplication Specific Integrated Circuit、FPGAはField-Programmable Gate Arrayの頭字語である。