(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0019】
<第1実施形態>
以下、本発明の第1実施形態について、図面を参照して説明する。
図1は、第1実施形態に係るロボットシステム1の一例を示す構成図である。ロボットシステム1は、ロボット20と、制御装置30を具備する。
【0020】
ロボットシステム1は、ロボット20が把持している物体と、他の物体との相対的な位置及び姿勢に基づいてコンプライアントモーション制御の制御変数を変化させながらロボット20に作業を行わせる。ロボットシステム1は、このような作業の一例として、ロボット20が把持している物体を他の物体に組み付ける組み付け作業をロボット20に行わせる。以下では、説明の便宜上、ロボット20が把持している物体を操作対象Nと称し、他の物体を組付対象Oと称して説明する。なお、操作対象Nは、第1物体の一例であり、組付対象Oは、第2物体の一例であり、操作対象Nと組付対象Oの相対的な位置及び姿勢は、相対位置姿勢の一例である。また、制御変数は、パラメーター値の一例である。
【0021】
また、前述の他の物体は、操作対象Nが組み付けられる組付対象Oに代えて、操作対象Nを移動させる際に障害となる物体や、何らかの治具、壁面、作業台等の位置及び姿勢がロボット20の座標原点の位置及び姿勢に対して変化しないように設置された物体であれば如何なる物体であってもよい。なお、ロボット20の座標原点とは、例えば、ロボット20の支持台の重心の位置及び姿勢等であるが、ロボット20の他の部位の位置及び姿勢等であってもよい。以下では、この組み付け作業を所定の作業と称し、ロボットシステム1がロボット20に所定の作業を行わせる場合について説明する。
【0022】
図1において、組付対象Oは治具Fに支持されているが、この構成に代えて、テーブルや何らかの台等に設置される構成であってもよい。その場合、組付対象Oの位置及び姿勢は、ロボット20の座標原点の位置及び姿勢に対して変化しないように設置されるとする。また、操作対象Nは、ロボット20により把持される物体に代えて、ロボット20のエンドエフェクターENDの所定部位やマニピュレーターMNPの所定部位等であってもよい。
【0023】
図1において点線で示した物体VNは、組付対象Oに組み付けられた状態の操作対象Nを示している。操作対象Nを組付対象Oに組み付けるようにロボット20を制御する際、ロボットシステム1は、前述したようにコンプライアントモーション制御によってロボット20を制御する。また、ロボットシステム1は、コンプライアントモーション制御における制御変数を、操作対象Nと組付対象Oの相対的な位置及び姿勢に応じて変化させる。以下では、コンプライアントモーション制御の一例として、ロボットシステム1がインピーダンス制御によってロボット20を制御する場合について説明する。
【0024】
ここで、操作対象Nの位置及び姿勢は、例えば、操作対象Nの重心の位置及び姿勢によって表されるが、これに代えて、操作対象Nとともに動く他の何らかの点の位置及び姿勢等によって表されてもよい。また、組付対象Oの位置及び姿勢は、例えば、組付対象Oの重心の位置及び姿勢によって表されるが、これに代えて、組付対象Oとともに固定される他の何らかの点の位置及び姿勢等によって表されてもよい。
【0025】
ロボット20は、例えば、物体(この一例では、操作対象N)を把持可能な爪部を備えるエンドエフェクターENDと、マニピュレーターMNPと、力センサー21と、図示しない複数のアクチュエーターを備えた単腕のロボットである。単腕のロボットとは、エンドエフェクターENDとマニピュレーターMNP(又は、マニピュレーターMNPのみ)により構成される1本の腕を有するロボットを示す。
【0026】
なお、ロボット20は、単腕のロボットである構成に代えて、スカラロボット(水平多関節ロボット)や双腕のロボット等であってもよい。スカラロボットとは、マニピュレーターが水平方向にのみ動き、マニピュレーターの先端のスライド軸のみが上下に動くロボットである。また、双腕のロボットとは、エンドエフェクターENDとマニピュレーターMNP(又は、マニピュレーターMNPのみ)によりそれぞれ構成される2本の腕を有するロボットを示す。
【0027】
ロボット20の腕は、6軸垂直多関節型となっており、支持台とマニピュレーターMNPとエンドエフェクターENDとがアクチュエーターによる連携した動作よって6軸の自由度の動作を行うことができる。なお、ロボット20の腕は、5自由度(5軸)以下で動作するものであってもよく、7自由度(7軸)以上で動作するものであってもよい。以下では、エンドエフェクターEND及びマニピュレーターMNPを備えた腕によって行われるロボット20の動作について説明する。
【0028】
力センサー21は、ロボット20のエンドエフェクターENDとマニピュレーターMNPとの間に備えられており、エンドエフェクターEND(あるいは、エンドエフェクターENDに把持された操作対象N)に作用した力やモーメントを検出する。力センサー21は、検出した力やモーメントを示す情報(以下、力センサー情報と称する)を、通信により制御装置30へ出力する。力センサー21により検出された力センサー情報は、例えば、制御装置30によるロボット20のインピーダンス制御に用いられる。なお、この力センサー情報は、他の処理に用いられてもよい。
【0029】
ロボット20は、例えばケーブルによって制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。なお、ロボット20と制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続されてもよい。なお、ロボット20は、
図1に示したようにロボット20の外部に設置された制御装置30と接続される構成とするが、この構成に代えて、制御装置30がロボット20に内蔵される構成であってもよい。
【0030】
ロボット20は、操作対象Nと組付対象Oの相対的な位置及び姿勢と、力センサー21により検出された力センサー情報とに基づいた制御信号を制御装置30から取得し、取得した制御信号に基づいて所定の作業を行う。以下では、説明の便宜上、操作対象Nと組付対象Oの相対的な位置及び姿勢を、単に相対位置姿勢と称して説明する。
【0031】
制御装置30は、予め記憶された組付対象Oの位置及び姿勢と、予め記憶された組付対象Oを含む作業領域を示す情報とに基づいてインピーダンス制御の制御変数を算出する。組付対象Oを含む作業領域とは、例えば、操作対象Nを組付対象Oに組み付けるために操作対象Nの重心が通過する経路を含む平面又は空間の一部又は全部の範囲を示す。以下では、説明の便宜上、組付対象Oを含む作業領域を、単に作業領域と称して説明する。また、作業領域を示す情報とは、例えば、作業領域が長方形状の平面であった場合、その長方形の各頂点を示す座標の組み合わせ等である。
【0032】
また、制御装置30は、ロボット20の力センサー21から力センサー情報を取得する。制御装置30は、算出されたインピーダンス制御の制御変数と、取得された力センサー情報とに基づくインピーダンス制御によって、ロボット20に所定の作業(すなわち、操作対象Nを組付対象Oに組み付ける組み付け作業)を行わせる。
【0033】
なお、以下では、説明を簡略化するため、制御装置30からの制御信号に基づいてロボット20が操作対象Nを組付対象Oに組み付ける際、
図2に示すように組付対象Oを含む二次元平面(xy平面)に沿ってのみロボット20が操作対象Nを移動させる場合について説明するが、これに代えて、ロボット20が操作対象Nを三次元空間を移動させて組付対象Oに組み付ける構成であってもよい。
【0034】
図2は、組付対象Oを含む二次元平面に沿ってロボット20が操作対象Nを移動させて組付対象Oに組み付ける様子の一例を示す図である。
図2に示したx軸及びy軸は、組付対象Oを含む二次元平面(すなわち、作業領域)上の座標軸である。より具体的には、ロボットシステム1は、例えば、エンドエフェクターENDにより把持された操作対象Nを、
図2に示した矢印(前述の経路)に沿って組付対象Oに組み付けるようにロボット20を制御する。
【0035】
この組み付けの際、ロボットシステム1は、
図2に示した座標軸により示される二次元平面に沿ってのみ操作対象Nが移動するようにロボット20を制御する。なお、操作対象Nを移動させる経路(移動経路)は、予め制御装置30に記憶されている構成であるとするが、これに代えて、制御装置30がこの経路を算出する構成であってもよい。制御装置30がこの経路を算出する場合、例えば、ロボットシステム1は、作業領域を含む範囲を撮像可能な撮像部を具備し、撮像部により撮像された撮像画像に基づいてこの経路を算出する。
【0036】
次に、
図3を参照して、制御装置30のハードウェア構成について説明する。
図3は、制御装置30のハードウェア構成の一例を示す図である。制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34を備え、通信部34を介してロボット20と通信を行う。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。CPU31は、記憶部32に格納された各種プログラムを実行する。
【0037】
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)などを含み、制御装置30が処理する各種情報や画像、プログラム、組付対象Oの位置及び姿勢を示す情報、所定の作業を行う際の作業領域を示す情報等を格納する。なお、記憶部32は、制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置でもよい。
【0038】
入力受付部33は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部33は、タッチパネルとして表示部と一体に構成されてもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
【0039】
次に、
図4を参照して、制御装置30の機能構成について説明する。
図4は、制御装置30の機能構成の一例を示す図である。制御装置30は、記憶部32と、制御部36を備える。制御部36が備える機能部のうち一部又は全部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することで実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
【0040】
制御部36は、制御装置30の全体を制御する。制御部36は、可動領域算出部37と、ポテンシャル算出部38と、平滑化処理部39と、ロボット制御部40を備える。
可動領域算出部37は、組付対象Oの位置及び姿勢を示す情報と、作業領域を示す情報とを記憶部32から読み込む。以下では、説明の便宜上、組付対象Oの位置及び姿勢を組付対象位置姿勢と称して説明する。可動領域算出部37は、読み込まれた組付対象位置姿勢を示す情報及び作業領域を示す情報に基づいて、操作対象Nの可動領域を算出する。
【0041】
なお、組付対象位置姿勢を示す情報は、予め記憶部32により記憶されているとするが、これに代えて、ロボットシステム1が撮像部を備え、撮像部により撮像された撮像画像に基づいて検出される構成であってもよい。また、作業領域を示す情報は、予め記憶部32により記憶されているとするが、これに代えて、ロボットシステム1が撮像部を備え、撮像部により撮像された撮像画像に基づいて検出される構成であってもよい。
【0042】
ここで、操作対象Nの可動領域とは、作業領域内の各点において定義される量であり、作業領域内において操作対象Nが組付対象Oと接触せずに動くことができる範囲を定量的に示す量である。この一例において、操作対象Nの可動領域とは、作業領域を表す二次元平面上のある点からこの二次元平面内において組付対象Oと接触せずに操作対象Nがx方向及びy方向に移動可能な距離の総和(以下、並進可動領域と称する)と、その点において組付対象Oと接触せずに正方向(例えば、反時計回り)及び負方向(例えば、時計回り)に回転可能な回転角の総和(以下、回転可動領域と称する)との2つの量によって定義される量であり、その二次元平面上の各点において定義される量である。
【0043】
なお、操作対象Nの可動領域は、作業領域内の各点における操作対象Nに係る他の量によって定義されてもよい。また、操作対象Nの可動領域は、作業領域内の各点において定義される構成に代えて、例えば、作業領域を複数の領域に分割した場合のそれぞれの領域毎に定義される構成であってもよい。また、可動領域算出部37は、並進可動領域と回転可動領域の両方を算出する構成に代えて、並進可動領域と回転可動領域のうちいずれか一方のみを算出する構成(すなわち、操作対象Nの可動領域は、並進可動領域と回転可動領域のうちいずれか一方によって定義される構成)であってもよい。
【0044】
ポテンシャル算出部38は、可動領域算出部37により算出された操作対象Nの可動領域(並進可動領域と回転可動領域のうちいずれか一方又は両方)に基づいて、作業領域内の各点における操作対象Nの動かし難さ(又は、動かし易さ)の指標となる量を算出する。以下では、ポテンシャル算出部38により作業領域内の各点において算出されるこの量を、ポテンシャルと称して説明する。このポテンシャルは、本実施形態において作業領域内の各点において算出されるため、作業領域内の各点を示す座標の関数として表される。
【0045】
なお、このように称する理由は、作業領域の各点における操作対象Nの剛性、すなわちエンドエフェクターENDにより把持された操作対象Nの動かし難さ(もしくは、動かし易さ)の指標となる量を、空間のある点において物体に働く保存力に係るポテンシャルエネルギーになぞらえたためである。また、作業領域内における物体(例えば、操作対象N)の位置及び姿勢は、作業領域内において組付対象Oの位置及び姿勢が変化しないため、操作対象Nと組付対象Oの相対的な位置及び姿勢を表す。従って、これらの説明を換言すると、ポテンシャル算出部38は、操作対象Nと組付対象Oの相対的な位置及び姿勢に応じた操作対象Nの動かし難さの指標となる量を、作業領域内の各点におけるポテンシャルとして算出する。
【0046】
平滑化処理部39は、ポテンシャル算出部38によって算出された作業領域の各点におけるポテンシャルを表す関数に対して、ローパスフィルターを適用し、ポテンシャルを表す関数を平滑化(すなわち、平均化)する。以下では、説明の便宜上、平滑化処理部39がポテンシャルを表す関数をこのように変換することを、滑らかなポテンシャルを生成すると称して説明する。また、以下では、ローパスフィルターを適用する前のポテンシャルを表す関数を、不連続に変化するポテンシャルと称して説明する。不連続に変化するポテンシャルに基づいてロボット20を制御しようとすると、例えば、アクチュエーター等に負担が掛かり、故障の原因となりかねない。そのため、平滑化処理部39は、算出された不連続に変化するポテンシャルにローパスフィルターを適用することで、滑らかなポテンシャルを生成する。
【0047】
ロボット制御部40は、ロボット20のTCPと操作対象Nとの相対的な位置及び姿勢を示す情報と、作業領域を示す情報とを記憶部32から読み込む。ロボット制御部40は、ロボット20が備える各アクチュエーターの回転角と、ロボット20のTCPと操作対象Nとの相対的な位置及び姿勢と、作業領域を示す情報とに基づいて、操作対象Nの作業領域内での位置及び姿勢(すなわち、操作対象Nと組付対象Oの相対的な位置及び姿勢)を算出する。また、ロボット制御部40は、力センサー21から力センサー情報を取得する。ロボット制御部40は、算出された操作対象Nの作業領域内での位置及び姿勢と、平滑化処理部39により生成された滑らかなポテンシャルと、力センサー21から取得した力センサー情報とに基づくインピーダンス制御によってロボット20に所定の作業を行わせる。ここで、ロボット20のTCPと操作対象Nとの相対的な位置及び姿勢を示す情報は、予め記憶部32により記憶されているとするが、これに代えて、ロボットシステム1が撮像部を備え、撮像部により撮像された撮像画像に基づいて算出又は検出される構成であってもよい。
【0048】
以下、
図5を参照して、制御装置30が操作対象Nの可動領域を算出し、所定の作業を行うまでの処理について説明する。
図5は、制御装置30が操作対象Nの可動領域を算出し、所定の作業を行うまでの処理の流れの一例を示すフローチャートである。以下では、一例として、予めロボット20がエンドエフェクターENDにより操作対象Nを把持しているとして説明する。まず、可動領域算出部37は、操作対象Nの可動領域を算出するための可動領域算出処理を行う(ステップS100)。
【0049】
この一例において、可動領域算出処理は、2つの処理で構成され、一方が並進可動領域算出処理であり、他方が回転可動領域算出処理である。並進可動領域算出処理は、作業領域内の各点における操作対象Nの並進可動領域を算出する処理である。また、回転可動領域算出処理は、作業領域内の各点における操作対象Nの回転可動領域を算出する処理である。可動領域算出部37は、ステップS100における可動領域算出処理において、並進可動領域算出処理と回転可動領域算出処理のいずれか一方を先に行ってもよく、両方を同時に行ってもよい。なお、
図4において説明したように、可動領域算出部37は、可動領域算出処理において、並進可動領域算出処理と回転可動領域のうちいずれか一方のみを行う構成であってもよい。
【0050】
次に、ポテンシャル算出部38は、ステップS100で可動領域算出部37により算出された操作対象Nの並進可動領域と回転可動領域のうちいずれか一方又は両方に基づいて、作業領域内の各点におけるポテンシャルを算出するためのポテンシャル算出処理を行う(ステップS110)。本実施形態において、ポテンシャル算出部38は、ポテンシャル算出処理において、操作対象Nの並進可動領域と回転可動領域の両方に基づいて、作業領域内の各点におけるポテンシャルを算出するとして説明する。
【0051】
次に、平滑化処理部39は、ステップS110で算出された不連続に変化するポテンシャルにローパスフィルターを適用することで、滑らかに変化するポテンシャルを生成(平滑化)する(ステップS120)。次に、ロボット制御部40は、ステップS120で平滑化処理部39により生成された滑らかなポテンシャルに基づくインピーダンス制御によってロボット20に所定の作業を行わせるロボット制御処理を行う(ステップS130)。
【0052】
ここで、
図6及び
図7を参照して、
図5に示したステップS100の可動領域算出処理について説明する。
図6は、
図5に示したステップS100の可動領域算出処理における並進可動領域算出処理の流れの一例を示すフローチャートである。まず、可動領域算出部37は、作業領域を示す情報を記憶部32から読み込み、読み込まれた作業領域を示す情報に基づいて作業領域を表す仮想空間を生成する。そして、可動領域算出部37は、生成された仮想空間の各点を示す座標を1つずつ選択し、選択された座標毎に、ステップS210からステップS270までの処理を繰り返し行う(ステップS200)。
【0053】
まず、可動領域算出部37は、ステップS200で選択された座標が示す仮想空間の点に、仮想的に操作対象Nを配置する。この時、可動領域算出部37は、仮想空間の点に操作対象Nの重心の位置が一致するように操作対象Nを配置する。また、可動領域算出部37は、仮想空間の点に配置された操作対象Nの姿勢を、所定の初期姿勢に初期化する(ステップS210)。なお、所定の初期姿勢とは、例えば、予め決められた操作対象Nの重心を通る中心線と、x軸又はy軸との成す角度がゼロ度となるような姿勢であるが、これに限られず、他の姿勢であってもよい。
【0054】
次に、可動領域算出部37は、数値を示す情報を格納可能な変数Dを生成し、変数Dの値をゼロに初期化する(ステップS220)。次に、可動領域算出部37は、ステップS260における操作対象Nの回転に係る回転角の累積値が360°に達したか否かを判定する(ステップS230)。操作対象Nの回転に係る回転角の累積値が360°に達していないと判定した場合(ステップS230−No)、可動領域算出部37は、ステップS200で選択された座標が示す仮想空間の点に配置された操作対象Nがx軸の正方向、x軸の負方向、y軸の正方向、y軸の負方向のそれぞれの方向(以下、4つの方向と称する)への移動可能な距離の和を算出する(ステップS240)。
【0055】
なお、可動領域算出部37により算出されるこれらの移動可能な距離の和は、4つ方向それぞれへの移動可能な距離の和に代えて、4つの方向のうちのいずれか1つへの移動距離であってもよく、4つの方向それぞれへの移動可能な距離の一部の組み合わせの和であってもよく、1以上の他の方向への移動可能な距離の和(他の方向が1つのみの場合、和ではなく、その方向への移動可能な距離)であってもよく、上記の4つの方向それぞれへの移動可能な距離と他の方向への移動可能な距離との和であってもよい。例えば、可動領域算出部37は、操作対象Nが移動可能な距離の和として、1以上の他の方向(例えば、x軸の延伸方向とy軸の延伸方向との間の方向(斜め方向)等)への移動可能な距離の和を算出する場合、それらの方向への距離を三平方の定理等、距離空間において距離を算出する方法によって算出する構成となる。
【0056】
次に、可動領域算出部37は、ステップS240で算出された4つの方向への移動可能な距離の和を、ステップS220で生成された変数Dに格納されている値に加算する(ステップS250)。次に、可動領域算出部37は、ステップS200で選択された座標が示す仮想空間の点に配置された操作対象Nの姿勢を、所定角度だけ回転させる(ステップS260)。なお、所定角度は、その倍数に360°を含む任意の角度であることが望ましく、この一例において、5°や10°等であるとするが、その倍数に360°を含まない他の角度であってもよい。
【0057】
ステップS230からステップS260までの処理をまとめて換言すると、可動領域算出部37は、ステップS200で選択された座標が示す仮想空間の点に配置された操作対象Nの姿勢を所定角度ずつ変化させ、それぞれの姿勢毎に前述の4つの方向への移動可能な距離の和を算出し、算出された姿勢毎の4つの方向への移動可能な距離の和を変数Dに加算する。
【0058】
ここで、
図8を参照して、ステップS230からステップS260までの処理について説明する。
図8は、ステップS100で選択された座標が示す仮想空間の点に配置された操作対象Nの一例を示す図である。
図8において、座標(x,y)を、ステップS200で選択された座標であるとして説明する。点G(x,y)は、座標(x,y)に配置された操作対象Nの重心の位置を示す。また、枠VSは、可動領域算出部37により生成された仮想空間であって作業領域を表す仮想空間を示す。以下、この枠VSによって囲まれた範囲を仮想空間VSと称して説明する。なお、
図8に示した座標軸は、この仮想空間VS上の位置及び姿勢を表す座標軸である。また、
図8において示した操作対象Nの姿勢は、所定の初期姿勢であるとして説明する。
【0059】
可動領域算出部37は、座標(x,y)に配置された操作対象Nを前述の4つの方向のそれぞれに移動させる。この時、可動領域算出部37は、操作対象Nの輪郭が、仮想空間VSの枠や組付対象Oの輪郭と干渉(すなわち、接触)するまで操作対象Nを移動させた時の移動距離を、4つの方向のそれぞれの方向に移動可能な距離として算出する。
図8において、距離D
+xは、x軸の正方向への移動可能な距離であり、距離D
−xは、x軸の負方向への移動可能な距離である。また、
図8において、距離D
+yは、y軸の正方向への移動可能な距離であり、距離D
−yは、y軸の負方向への移動可能な距離である。可動領域算出部37は、これらの距離D
+x、距離D
−x、距離D
+y、距離D
−yの和を変数Dに格納された値に加算する。
【0060】
そして、可動領域算出部37は、操作対象Nの姿勢を所定角度ずつ360°まで変化させ、所定角度変化させる毎にその時の姿勢において、このような4つの方向への移動可能な距離の和を算出し、算出された4つの方向への移動可能な距離の和を変数Dに格納された値に加算していく。この4つの方向への移動可能な距離の和は、操作対象Nの位置及び姿勢に応じて異なる値を取る。従って、変数Dに加算されていく値は、操作対象Nの位置及び姿勢に応じた値となる。このようにして、可動領域算出部37は、ステップS230からステップS260までの処理を行う。
【0061】
一方、ステップS230で操作対象Nの回転に係る回転角の累積値が360°に達していると判定した場合(ステップS230−Yes)、可動領域算出部37は、変数Dに格納された値を、ステップS100で選択された座標における並進可動領域F
tとし(ステップS270)、その後、ステップS200に戻って次の仮想空間の座標を選択する。以下では、仮想空間VS内での各点を示す座標を座標(x,y)とした場合、その座標における並進可動領域F
tの値を並進可動領域F
t(x,y)と表す。なお、仮想空間の各点を示す座標と、作業領域の各点を示す座標とは、キャリブレーション等によって予め対応付けられているとする。そのため、仮想空間VS内の各点は、作業領域内の各点を示す。
【0062】
図7は、
図5に示したステップS100の可動領域算出処理における回転可動領域算出処理の流れの一例を示すフローチャートである。まず、可動領域算出部37は、作業領域を示す情報を記憶部32から読み込み、読み込まれた作業領域を示す情報に基づいて作業領域を表す仮想空間を生成する。そして、可動領域算出部37は、生成された仮想空間の各点を示す座標を1つずつ選択し、選択された座標毎に、ステップS310からステップS360までの処理を繰り返し行う(ステップS300)。なお、可動領域算出部37により回転可動領域算出処理が
図6に示した並進可動領域算出処理の後に(又は並進可動領域算出処理と並列に)行われる場合、すでに仮想空間が生成されているため、ステップS300において新たに仮想空間を生成しなくてもよい。
【0063】
まず、可動領域算出部37は、ステップS300で選択された座標が示す仮想空間の点に、仮想的に操作対象Nを配置する。この時、可動領域算出部37は、仮想空間の点に操作対象Nの重心の位置が一致するように操作対象Nが配置する。また、可動領域算出部37は、仮想空間の点に配置された操作対象Nの姿勢を、前述の所定の初期姿勢に初期化する(ステップS310)。
【0064】
次に、可動領域算出部37は、数値を示す情報を格納可能な変数Eを生成し、変数Eの値をゼロに初期化する(ステップS320)。次に、可動領域算出部37は、現時点においてステップS300で選択された座標が示す仮想空間の点に配置された操作対象Nが、
図8に示した仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)しているか否かを判定する(ステップS330)。
【0065】
操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に接触していないと判定した場合(ステップS330−No)、可動領域算出部37は、ステップS300で選択された座標が示す仮想空間の点に配置された操作対象Nを、例えば、操作対象Nの重心を中心として正方向と負方向のそれぞれに、操作対象Nの輪郭が仮想空間VSの枠や組付対象Oの輪郭に接触するまで回転させる。ただし、操作対象Nの輪郭が仮想空間VSの枠や組付対象Oの輪郭に接触しない場合、正方向と負方向のそれぞれの回転角は、360°であるとする。可動領域算出部37は、正方向への回転角と、負方向への回転角との和を回転可能角度として算出し(ステップS340)、変数Eに格納された値に加算する(ステップS350)。
【0066】
一方、ステップS330で操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)していると判定した場合(ステップS330−Yes)、可動領域算出部37は、変数Eに格納された値を、回転可動領域F
rとし(ステップS360)、その後、ステップS300に戻って次の仮想空間の座標を選択する。以下では、仮想空間VS内での各点を示す座標を座標(x,y)とした場合、その座標における回転可動領域F
rの値を回転可動領域F
r(x,y)と表す。
【0067】
ここで、
図9を参照して、
図5に示したステップS110のポテンシャル算出処理について説明する。
図9は、
図5に示したステップS110のポテンシャル算出処理の流れの一例を示すフローチャートである。まず、ポテンシャル算出部38は、ステップS100で可動領域算出部37により算出された仮想空間VS内の各点(すなわち、作業領域内の各点)における可動領域、すなわち並進可動領域F
t(x,y)及び回転可動領域F
r(x,y)に基づいて、並進可動領域F
t(x,y)の全ての点の中での最大値F
tMAXと、回転可動領域F
r(x,y)の全ての点の中での最大値F
rMAXを検出する(ステップS400)。
【0068】
次に、ポテンシャル算出部38は、ステップS400で検出された並進可動領域F
t(x,y)の最大値F
tMAXと、回転可動領域F
r(x,y)の最大値F
rMAXとに基づいて、作業領域内の各点におけるポテンシャルを算出する(ステップS410)。ここで、このポテンシャルを算出する処理について説明する。ポテンシャル算出部38は、以下に示す式(1)及び式(2)に基づいて作業領域内の各点におけるポテンシャルを算出する。
【0069】
P
t(x,y)=F
tMAX−F
t(x,y) ・・・(1)
【0070】
P
r(x,y)=F
rMAX−F
r(x,y) ・・・(2)
【0071】
ここで、P
t(x,y)は、作業領域内のある点を示す座標(x,y)におけるポテンシャルであり、並進可動領域に基づいて算出されるポテンシャル(以下、並進ポテンシャルと称する)を表す。また、P
r(x,y)は、作業領域内のある点を示す座標(x,y)におけるポテンシャルであり、回転可動領域に基づいて算出されるポテンシャル(以下、回転ポテンシャルと称する)を表す。
【0072】
上記の式(1)は、並進可動領域の最大値F
tMAXから、作業領域内のある点を示す座標(x,y)における並進可動領域F
t(x,y)を減算した値を、座標(x,y)における並進ポテンシャルとして定義する式である。このように並進ポテンシャルを定義することで、作業領域内の点のうち並進ポテンシャルが大きな点では、エンドエフェクターENDにより把持された操作対象Nの剛性が大きい、すなわち操作対象Nを動かしづらい(並進させ難い)ことを表すことができる。
【0073】
また、上記の式(2)は、回転可動領域の最大値F
rMAXから、作業領域内のある点を示す座標(x,y)における回転可動領域F
r(x,y)を減算した値を、座標(x,y)における回転ポテンシャルとして定義する式である。このように回転ポテンシャルを定義することで、作業領域内の点のうち回転ポテンシャルが大きな点では、エンドエフェクターENDにより把持された操作対象Nの剛性が大きい、すなわち操作対象Nを動かし難い(回転させ難い)ことを表すことができる。
【0074】
図10は、このようにして算出された並進ポテンシャルの一例を表すグラフ及び回転ポテンシャルの一例を表すグラフをそれぞれ示す図である。
図10(A)には、並進ポテンシャルの一例を表すグラフを示す。
図10(B)には、回転ポテンシャルの一例を表すグラフを示す。これらのグラフから、ポテンシャル算出部38により算出された並進ポテンシャル及び回転ポテンシャルは、その大きさがそれぞれ不連続に変化することが分かる。
【0075】
ここで、制御装置30が備える制御部36の平滑化処理部39は、
図5に示したステップS120でこれらの不連続に変化するポテンシャルにローパスフィルターを適用することで、
図11に示すような滑らかなポテンシャルを生成する。
図11は、平滑化処理部39により生成された滑らかな回転ポテンシャルの一例を表すグラフを示す図である。平滑化処理部39が
図11に示すような滑らかなポテンシャルを生成するため、ロボット制御部40は、滑らかな並進ポテンシャル及び滑らかな回転ポテンシャルに基づいて、ロボット20に所定の作業を行わせることができ、その結果、マニピュレーターMNPのアクチュエーターに掛かる負荷を抑制しつつ、操作対象Nと組付対象Oの相対的な位置及び姿勢に応じたインピーダンス制御によって良好な組み立て作業を実施することができる。
【0076】
ここで、
図12を参照して、
図5に示したステップS130のロボット制御処理について説明する。
図12は、
図5に示したステップS130のロボット制御処理の流れの一例を示すフローチャートである。まず、ロボット制御部40は、記憶部32から操作対象Nの移動経路を示す情報を読み込む(ステップS500)。操作対象Nの移動経路とは、現在(初期状態)の操作対象Nの位置及び姿勢から、操作対象Nが組付対象Oに組み付けられた場合の組付対象Oの位置及び姿勢に至るまでの操作対象Nの移動経路を示す。なお、移動経路を示す情報は、予め記憶部32により記憶されているとするが、これに代えて、ロボット制御部40により算出される構成であってもよい。
【0077】
次に、ロボット制御部40は、ロボット20が備える複数のアクチュエーターそれぞれの回転角を読み込み、読み込まれた回転角に基づいて順運動学から作業領域内における操作対象Nの位置及び姿勢を算出する(ステップS510)。次に、ロボット制御部40は、力センサー21から力センサー情報を取得する(ステップS520)。次に、ロボット制御部40は、インピーダンス制御の制御変数を読み込む(ステップS530)。なお、インピーダンス制御の制御変数は、予め記憶部32により記憶されているとする。次に、ロボット制御部40は、ステップS510で算出された作業領域内における操作対象Nの位置及び姿勢に基づいて、ステップS530で読み込まれた制御変数を調整するための調整量を算出する(ステップS540)。ここで、インピーダンス制御の制御変数と、その制御変数を調整する調整量について説明する。
【0078】
ロボット制御部40は、操作対象Nを把持するエンドエフェクターENDに外力が加わった際(すなわち、力センサー21により外力が検出された際)、操作対象Nを組付対象Oに組み付けるための移動経路に沿った方向への移動量r
tとは別に、操作対象NやエンドエフェクターENDに過大な力が加わらないように外力を逃がす方向へ操作対象Nを微小移動させる。この時の操作対象Nの微小移動量Δrは、以下の式(3)に示した運動方程式に基づいて算出される。なお、移動量r
t及び微小移動量Δrは、ベクトル量である。
【0080】
ここで、F
extは、ロボット制御部40がステップS520で力センサー21から取得する力センサー情報に含まれる外力を表すベクトルである。また、M,D,Kはそれぞれ順に、慣性行列、粘性行列、スチフネス行列であり、インピーダンス制御の制御変数である。ロボット制御部40は、ステップS530でこれらの制御変数を記憶部32から読み込む。ロボット制御部40は、上記の式(3)を解くことで、微小移動量Δrを算出する。
【0081】
ロボット制御部40がロボット20に所定の作業を行わせるために操作対象Nを移動させる際の移動量rは、ステップS500で読み込まれた移動経路に沿った方向への移動量r
tと、力を逃がす方向への微小移動量Δrとに基づいて、以下の式(4)、式(5)から算出される。なお、移動量rは、ベクトル量である。
【0084】
ここで、Tは、現在の操作対象Nの位置を示す座標(x,y)における並進ポテンシャルP
t(x,y)及び回転ポテンシャルP
r(x,y)に基づいて算出される量であって微小移動量Δrの大きさを調整する調整量である。なお、P
tMAXは、並進ポテンシャルP
t(x,y)が取り得る最大値であり、P
rMAXは、回転ポテンシャルP
r(x,y)が取り得る最大値である。また、上記の式(5)における係数0.45は、ある条件下において実験的に求められたロボット20が良好に制御される最適値の例であり、他の値であってもよい。
【0085】
上記の式(4)のように調整量Tによってインピーダンス制御の制御変数によって算出された微小移動量Δrを調整することは、すなわち間接的にインピーダンス制御の制御変数を調整することに相当する。調整量Tが大きい場合(すなわち、並進ポテンシャルや回転ポテンシャルが小さい場合)、力を逃がす方向への微小移動量は、大きくなる(すなわち、剛性が低い)。一方、調整量Tが小さい場合(すなわち、並進ポテンシャルや回転ポテンシャルが大きい場合)、力を逃がす方向への微小移動量は、小さくなる(すなわち、剛性が高い)。
【0086】
ロボット制御部40は、
図5に示したステップS120で平滑化処理部39により生成された滑らかに変化する並進ポテンシャルP
t(x,y)及び回転ポテンシャルP
r(x,y)と、上記の式(5)とに基づいて調整量Tを算出する。
【0087】
ステップS540で調整量Tを算出した後、ロボット制御部40は、ステップS510で取得された力センサー情報と、ステップS530で読み込まれたインピーダンス制御の制御変数とに基づいて、微小移動量Δrを算出する。ロボット制御部40は、算出された微小移動量Δrと、ステップS500で算出された移動経路と、ステップS540で算出された調整量Tと、上記の式(4)とに基づいて移動量rを算出する。そして、ロボット制御部40は、算出された移動量rに基づいて、操作対象Nを移動させる(ステップS550)。
【0088】
次に、ロボット制御部40は、操作対象Nが組付対象Oに組み付けられたか否かを、ステップS550で移動された後の操作対象Nの位置及び姿勢に基づいて判定する(ステップS560)。ロボット制御部40は、操作対象Nが組付対象Oに組み付けられていないと判定した場合(ステップS560−No)、ステップS510に戻って再び操作対象Nの位置及び姿勢を算出する。一方、ロボット制御部40は、操作対象Nが組付対象Oに組み付けられたと判定した場合(ステップS560−Yes)、処理を終了する。
【0089】
なお、ロボット制御部40は、ステップS540で調整量Tを算出する構成に代えて、
図5に示したステップS120で平滑化処理部39により生成された滑らかに変化する並進ポテンシャルP
t(x,y)及び回転ポテンシャルP
r(x,y)に基づいて、インピーダンス制御の制御変数である慣性行列M、粘性行列D、スチフネス行列Kをそれぞれ算出する構成であってもよい。この場合、ロボット制御部40は、ステップS550で、算出されたインピーダンス制御の制御変数である慣性行列M、粘性行列D、スチフネス行列Kと、上記の式(3)とに基づいて、微小移動量Δrを算出する。そして、ロボット制御部40は、上記の式(5)によって算出される最大の値よりも大きな値をTに代入された上記の式(4)に基づいて移動量rを算出する。なお、式(4)に代入する値は、この一例において、1であるとするが、1以上の値であってもよい。
【0090】
以上説明したように、第1実施形態におけるロボットシステム1は、マニピュレーターMNPとともに動く操作対象Nと、組付対象Oとの相対的な位置及び姿勢に応じて、コンプライアントモーション制御の制御変数を調整(変更)する。これにより、ロボットシステム1は、操作対象Nと組付対象Oの相対的な位置及び姿勢に応じたコンプライアントモーション制御を行うことができる。
【0091】
また、ロボットシステム1は、組付対象Oとの相対位置姿勢に基づく操作対象Nの移動可能な範囲に応じてコンプライアントモーション制御のパラメーター値を変更する。これにより、ロボットシステム1は、操作対象Nと組付対象Oが接触していない場合においても、相対位置姿勢に応じてコンプライアントモーション制御のパラメーター値を変更することができる。
【0092】
ロボットシステム1は、組付対象Oとの相対位置姿勢による操作対象Nの移動可能な範囲に基づいて、操作対象Nと組付対象Oの相対位置姿勢に応じた操作対象Nの動かし難さ又は動かし易さの指標となる量を算出し、算出された指標となる量に基づいてコンプライアントモーション制御のパラメーター値を変更する。これにより、ロボットシステム1は、把持している操作対象Nが動かし難い場合、操作対象Nの剛性を小さくし、把持している操作対象Nを動かし易い場合、操作対象Nの剛性を大きくするように調整することができる。
【0093】
また、ロボットシステム1は、組付対象Oとの相対位置姿勢に基づく操作対象Nの移動可能な範囲に応じた操作対象Nの動かし難さ又は動かし易さの指標となる量を算出し、算出された指標となる量に基づいてコンプライアントモーション制御のパラメーター値を変更する。
【0094】
また、ロボットシステム1は、コンプライアントモーション制御のうちインピーダンス制御の制御変数を調整する。これにより、ロボットシステム1は、操作対象Nと組付対象Oの相対的な位置及び姿勢に応じてインピーダンス制御の制御変数を調整することで、ロボット20が把持する操作対象Nの剛性を調整することができる。
【0095】
<第2実施形態>
以下、本発明の第2実施形態について、図面を参照して説明する。第2実施形態では、制御部36は、可動領域算出部37に代えて、可動領域算出部37aを備える。可動領域算出部37aは、可動領域算出部37によるステップS100の可動領域算出処理に代えて、以下で説明する可動領域算出処理を行う。より具体的には、可動領域算出部37aは、ステップS100において、
図13に示す並進可動領域算出処理と、
図14に示す回転可動領域算出処理とを行う。なお、第2実施形態では、第1の実施形態と同様な構成部には、同じ符号を付してある。
【0096】
以下、
図13を参照して、可動領域算出部37aによる並進可動領域算出処理について説明する。
図13は、可動領域算出部37aによる並進可動領域算出処理の流れの一例を示すフローチャートである。
図13に示した並進可動領域算出処理は、
図6に示した並進可動領域を位置の関数として算出する並進可動領域算出処理と異なり、並進可動領域を位置と姿勢の関数として算出する。まず、可動領域算出部37aは、作業領域を示す情報を記憶部32から読み込み、読み込まれた作業領域を示す情報に基づいて作業領域を表す仮想空間を生成する。そして、可動領域算出部37aは、生成された仮想空間の各点を示す座標を1つずつ選択し、選択された座標毎に、ステップS610からステップS650までの処理を繰り返し行う(ステップS600)。
【0097】
次に、可動領域算出部37aは、ステップS600で選択された座標が示す仮想空間の点に、仮想的に操作対象Nを配置する。この時、可動領域算出部37aは、仮想空間の点に操作対象Nの重心の位置が一致するように操作対象Nが配置する。また、可動領域算出部37aは、仮想空間の点に配置された操作対象Nの姿勢を、所定の初期姿勢となるまで操作対象Nを回転させる。そして、可動領域算出部37aは、操作対象Nの姿勢を所定角度ずつ変え、それぞれの姿勢毎にステップS620からステップS650までの処理を繰り返し行う(ステップS610)。
【0098】
次に、可動領域算出部37aは、数値を示す情報を格納可能な変数Dを生成し、変数Dの値をゼロに初期化する(ステップS620)。次に、可動領域算出部37aは、ステップS600で選択された座標が示す仮想空間の点に、ステップS610で選択された姿勢で配置された操作対象Nが4つの方向(すなわち、x軸の正方向、x軸の負方向、y軸の正方向、y軸の負方向)のそれぞれへの移動可能な距離の和を算出する(ステップS630)。次に、可動領域算出部37aは、ステップS630で算出された4つの方向への移動可能な距離の和を、ステップS620で生成された変数Dに格納されている値に加算する(ステップS640)。
【0099】
以下、
図14を参照して、可動領域算出部37aによる回転可動領域算出処理について説明する。
図14は、可動領域算出部37aによる回転可動領域算出処理の流れの一例を示すフローチャートである。まず、可動領域算出部37aは、作業領域を示す情報を記憶部32から読み込み、読み込まれた作業領域を示す情報に基づいて作業領域を表す仮想空間を生成する。そして、可動領域算出部37aは、生成された仮想空間の各点を示す座標を1つずつ選択し、選択された座標毎に、ステップS710からステップS850までの処理を繰り返し行う(ステップS700)。なお、可動領域算出部37aにより回転可動領域算出処理が
図13に示した並進可動領域算出処理の後に(又は並列に)行われる場合、すでに仮想空間が生成されているため、ステップS700において新たに仮想空間を生成しなくてもよい。
【0100】
次に、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に、仮想的に操作対象Nを配置する。この時、可動領域算出部37aは、仮想空間の点に操作対象Nの重心の位置が一致するように操作対象Nが配置する。また、可動領域算出部37aは、仮想空間の点に配置された操作対象Nの姿勢を、所定の初期姿勢となるまで操作対象Nを回転させる。そして、可動領域算出部37aは、操作対象Nの姿勢を所定角度ずつ変え、それぞれの姿勢毎にステップS720からステップS850までの処理を繰り返し行う(ステップS710)。
【0101】
次に、可動領域算出部37aは、数値を示す情報を格納可能な変数D+を生成し、変数D+の値をゼロに初期化する(ステップS720)。次に、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に配置された操作対象Nであって、現在の姿勢の操作対象Nが、
図8に示した仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)しているか否かを判定する(ステップS730)。
【0102】
操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に接触していないと判定した場合(ステップS730−No)、可動領域算出部37aは、ステップS750における操作対象Nの回転に係る回転角の累積値が360°に達したか否かを判定する(ステップS740)。操作対象Nの回転に係る回転角の累積値が360°に達していないと判定した場合(ステップS740−No)、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に配置された操作対象Nであって、現在の姿勢の操作対象Nを、例えば、操作対象Nの重心を中心として正方向に所定角度だけ回転させ(ステップS750)、再びステップS730の判定を行う。ここで、所定角度は、その倍数に360°を含む任意の角度であることが望ましく、この一例において、5°や10°等であるとするが、その倍数に360°を含まない他の角度であってもよい。一方、操作対象Nの回転に係る回転角の累積値が360°に達していると判定した場合(ステップS740−Yes)、可動領域算出部37aは、ステップS750における操作対象Nの回転に係る回転角の累積値を変数D+に代入する(ステップS760)。
【0103】
一方、ステップS730で操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)していると判定した場合(ステップS730−Yes)、可動領域算出部37aは、ステップS760に遷移し、ステップS750における操作対象Nの回転に係る回転角の累積値を変数D+に代入する。次に、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に配置された操作対象Nの姿勢を、ステップS710で選択された姿勢に戻す(ステップS770)。
【0104】
次に、可動領域算出部37aは、数値を示す情報を格納可能な変数D−を生成し、変数D−の値をゼロに初期化する(ステップS780)。次に、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に配置された操作対象Nであって、現在の姿勢の操作対象Nが、
図8に示した仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)しているか否かを判定する(ステップS790)。
【0105】
操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に接触していないと判定した場合(ステップS790−No)、可動領域算出部37aは、ステップS810における操作対象Nの回転に係る回転角の絶対値の累積値が360°に達したか否かを判定する(ステップS800)。操作対象Nの回転に係る回転角の累積値が360°に達していないと判定した場合(ステップS800−No)、可動領域算出部37aは、ステップS700で選択された座標が示す仮想空間の点に配置された操作対象Nであって、現在の姿勢の操作対象Nを、例えば、操作対象Nの重心を中心として負方向に所定角度だけ回転させ(ステップS810)、再びステップS790の判定を行う。ここで、所定角度は、その倍数に360°を含む任意の角度であることが望ましく、この一例において、5°や10°等であるとするが、その倍数に360°を含まない他の角度であってもよい。一方、操作対象Nの回転に係る回転角の累積値が360°に達していると判定した場合(ステップS800−Yes)、可動領域算出部37aは、ステップS810における操作対象Nの回転に係る回転角の累積値を変数D−に代入する(ステップS820)。
【0106】
一方、ステップS790で操作対象Nが仮想空間VSの枠や組付対象Oの輪郭に干渉(すなわち、接触)していると判定した場合(ステップS790−Yes)、可動領域算出部37aは、ステップS820に遷移し、ステップS810における操作対象Nの回転に係る回転角の累積値を変数D−に代入する。次に、可動領域算出部37aは、変数D+に代入されている値が変数D−に代入されている値未満であるか否かを判定する(ステップS830)。変数D+に代入されている値が変数D−に代入されている値未満であると判定した場合(ステップS830−Yes)、可動領域算出部37aは、変数D+の値を回転可動領域に代入する(ステップS840)。一方、変数D+に代入されている値が変数D−に代入されている値以上であると判定した場合(ステップS830−No)、可動領域算出部37aは、変数D−の値を回転可動領域に代入する(ステップS850)。
【0107】
このように、可動領域算出部37aは、ステップS600からステップS650までの処理と、ステップS700からステップS850までの処理とをそれぞれ繰り返し行うことで、作業領域内の各点における操作対象Nの並進可動領域及び回転可動領域を、操作対象Nの姿勢毎に算出する。これにより、制御部36は、操作対象Nと組付対象Oの相対的な位置及び姿勢に基づくコンプライアントモーション制御の制御変数の調整を、第1実施形態と同様に行うことができる。
【0108】
なお、ステップS730において、可動領域算出部37aは、変数D−に代入されている値が変数D+に代入されている値未満であるか否かを判定する構成であってもよい。また、可動領域算出部37aは、ステップS730からステップS760までの処理と、ステップS780からステップS820までの処理とを逆の順で行う構成であってもよく、同時に行う構成であってもよい。
【0109】
以上説明したように、第2実施形態におけるロボットシステム1は、
図13及び
図14に示した並進可動領域算出処理と及び回転可動領域算出処理を行うことで、第1実施形態と同様の効果を得ることができる。
【0110】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【0111】
また、以上に説明した装置(例えば、ロボットシステム1の制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM:Random Access Memory)のように、一定時間プログラムを保持しているものも含むものとする。
【0112】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。