添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。また、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。さらに、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。
[第1実施形態]
まず、図1及び図2を参照しながら、本発明の第1実施形態に係るロボットシステムについて説明する。図1は、本実施形態に係るロボットシステム1の構成の一例を示す図である。同図に示すように、ロボットシステム1は、演算装置10とロボット20とを備える。また、ロボットシステム1は、図1や図2に示すように、撮像装置30、角度検出装置40、入力装置50、出力装置60等を備えてもよい。
演算装置10は、初期姿勢と目標姿勢に基づいて、ロボット20が初期姿勢から目標姿勢に移動する経路を演算する装置である。本実施形態において、演算された経路は、ロボット20に対して出力される。ここでは、演算装置10をロボット20と別体として構成する例を示すが、これに限られず、演算装置10とロボット20が一体化された構成としてもよい。なお、演算結果としての経路は、必ずしも実在のロボット20に対して出力されなくてもよく、例えば、シミュレータに対して出力されるものとしてもよい。一例として、後述する出力装置60に対して、ロボット20の仮想的なモデルと、演算結果としての経路とを出力し、当該出力装置60でロボット20の動作を再現するようにしてもよい。
なお、演算装置10は、後述する、経路の生成及び出力に関する演算処理を実行する演算部、当該演算処理を実行させるための情報(プログラム、条件等を含む)を記憶する揮発性及び/又は不揮発性の記憶装置(記憶部、メモリ等を含む)、当該情報を取得するとともに演算処理の結果を出力するためのインタフェース、を少なくとも備えていればよい。すなわち、演算装置10は、上述の各演算処理を実行する専用又は汎用の情報処理装置であれば足りる。また、ロボットシステム1は、演算装置10に相当する構成を含むものであるから、上述の各演算処理を実行する構成を備える専用又は汎用の情報処理システムであれば足りる。
ロボット20は、例えば、六軸垂直多関節ロボットである。ロボット20は、図1の例に示すように、台座21と、第1リンク22と、第2リンク23と、第3リンク24と、第4リンク25と、第5リンク26と、第6リンク27と、エンドエフェクタ28とを備える。ロボット20は、それぞれのリンクを回転運動させる可動軸(駆動用モータ)を備えている。これにより、ロボット20は、台座21及び複数のリンクが、駆動用モータを介して互いに接続されて構成されている。
台座21は、ロボット20が設置される構造物に取り付けられる。台座21は、上面と垂直な可動軸により第1リンク22と接続されている。第1リンク22は、台座21に対し、この可動軸を中心として回転することができる。
第1リンク22は、台座21の側の一端が互いに接続されている二枚の板状部材である。第1リンク22の二枚の板状部材は、互いに接続されている。第1リンク22の二枚の板状部材は、台座21と反対の方向へ延びており、互いに対向している。第1リンク22は、二枚の板状部材により第2リンク23の一端を挟んでいる。第1リンク22は、二枚の板状部材の互いに対向している面と垂直な可動軸により第2リンク23と接続されている。第2リンク23は、第1リンク22に対し、この可動軸を中心として回転することができる。
第2リンク23は、第1リンク22の側の一端が互いに接続されている二枚の板状部材である。第2リンク23の二枚の板状部材は、互いに対向している。第2リンク23は、二枚の板状部材により第3リンク24を挟んでいる。第2リンク23は、二枚の板状部材の互いに対向している面と垂直な可動軸により第3リンク24と接続されている。第3リンク24は、第2リンク23に対し、この可動軸を中心として回転することができる。
第3リンク24は、第2リンク23の二枚の板状部材の互いに対向している面と平行な面内に位置する可動軸により第4リンク25と接続されている部材である。第4リンク25は、第3リンク24に対し、この可動軸を中心として回転することができる。
第4リンク25は、第3リンク24の側の一端が互いに接続されている二枚の板状部材である。第4リンク25の二枚の板状部材は、互いに対向している。第4リンク25は、二枚の板状部材により第5リンク26を挟んでいる。第4リンク25は、二枚の板状部材の互いに対向している面と垂直な可動軸により第5リンク26と接続されている。第5リンク26は、第4リンク25に対し、この可動軸を中心として回転することができる。
第5リンク26は、第4リンク25の二枚の板状部材の互いに対向している面と垂直な可動軸により第6リンク27と接続される部材である。第6リンク27は、可動軸を介して第5リンク26と接続される部材である。本実施形態では、第5リンク26と第6リンク27は、円筒状に構成されている。また、第5リンク26と第6リンク27とは、共通する中心軸を有し、第6リンク27は第5リンク26に対し、可動軸を中心として回転する。第6リンク27は、第5リンク26が接続される端部とは反対側の端部に、エンドエフェクタ28を直接的、または、接続部材(アタッチメント)を介して間接的に取りつけるための接続構造を有し、当該接続構造を介してエンドエフェクタ28と接続される部材である。
図1の例に示すように、エンドエフェクタ28は、対象物Wを把持する機構である。この機構は、対象物Wを把持することができればよく、特に限定されない。また、エンドエフェクタ28は、対象物Wを把持する代わりに、対象物Wを吸着する機構でもよい。エンドエフェクタ28は、第4リンク25の二枚の板状部材の互いに対向している面と平行な面内に位置する可動軸により第5リンク26と接続されている。エンドエフェクタ28は、第5リンク26に対し、この可動軸を中心として回転することができる。なお、エンドエフェクタ28は、対象物を把持する機構に限定されない。例えば、エンドエフェクタ28として、対象物Wを吸着して保持する吸着パッドを用いてもよい。また、エンドエフェクタ28として、対象物Wを載置する平面を有する平板状部材を用いてもよい。
エンドエフェクタ28は、対象物Wを吊り下げた状態で把持してもよい。これにより、ロボット20は、対象物Wを初期位置から目標位置に搬送する間、対象物Wの姿勢を保持することができる。
なお、エンドエフェクタ28は、後述する記憶部12に含まれる初期条件記憶部121が記憶している搬送条件を満たすように対象物Wを把持する機構を有していてもよい。また、エンドエフェクタ28は、初期条件記憶部121が記憶している搬送条件をユーザ又は演算装置10が任意に変更した条件を満たすように対象物Wを把持する機構を有していてもよい。
ここで、搬送条件とは、ロボット20が対象物Wを第1の位置から第2の位置に搬送するときの条件であり、対象物Wの姿勢に関する第1の条件を含む。本実施形態において、演算装置10は、搬送条件に基づいてロボット20の経路を生成又は修正する。なお、搬送条件には、ロボット20が配置される環境に関する第2の条件を含んでいてもよい。第2の条件とは、例えば、ロボット20の周辺物(障害物)が存在する領域に関する条件であって、ロボット20の進入が禁止される領域に関する条件である。なお、対象物Wの姿勢に関する条件は、対象物Wの姿勢を、水平方向に対して、所定の角度範囲未満に保持するための条件であることが好ましい。これによれば、対象物Wが第1の位置から第2の位置に搬送されるときに、天地逆転することを抑制できる。また、搬送条件は、第1の条件及び第2の条件に限定されず、例えば、ロボット20が対象物Wを第1の位置から第2の位置に搬送するときの速度に関する条件を含んでいてもよい。なお、第1の位置、及び、第2の位置は、それぞれ、対象物Wの保持を開始する所定の位置、及び、保持した対象物を移動させた後に対象物の保持を終了する所定の位置、に限定されない。例えば、対象物Wの保持を開始してから、対象物Wの保持を終了するまでの間に含まれる任意のいずれかの位置であってよい。
上述の例に示したとおり、台座21、第1リンク22、第2リンク23、第3リンク24、第4リンク25、第5リンク26、第6リンク27、及びエンドエフェクタ28は、可動軸により一列に接続され、六軸垂直多関節ロボットを構成する。なお、ロボット20は、六軸垂直多関節ロボットに限定されるものではなく、二つ以上の可動軸を有していればよい。ロボット20は、例えば、五軸垂直多関節ロボット又は七軸垂直多関節ロボットでもよい。また、上述したとおり、ロボット20はハードウェアで構成される実在のロボットに限らず、シミュレータなどの、仮想的に構成されるロボットでもよい。
撮像装置30は、エンドエフェクタ28に把持される対象物Wの画像を撮像するための装置である。撮像装置30は、例えば、カメラである。撮像装置30は、エンドエフェクタ28に把持される対象物Wの画像を演算装置10へ送信し、演算装置10において対象物Wの初期位置や目標位置を算出する。或いは、撮像装置30は、自身が有するプロセッサを使用してエンドエフェクタ28に把持される対象物Wの画像に画像処理を施すことにより対象物Wの初期位置や目標位置を算出し、演算装置10へ送信してもよい。初期位置は、ロボット20により搬送される始点における対象物Wの位置である。目標位置は、ロボット20により搬送される終点における対象物Wの位置である。
なお、初期位置及び目標位置は、それぞれ対象物Wの姿勢に関する情報を含んでいてよい。また、初期位置及び目標位置は、それぞれ、対象物Wを把持するエンドエフェクタ28の位置と姿勢との少なくともいずれかの情報を含んでいてよい。
なお、ロボットシステム1は、角度検出装置40を、撮像装置30に換えて、又は、撮像装置30に加えて有していてもよい。角度検出装置40は、エンドエフェクタ28に把持されている対象物Wの角度を検出する。角度検出装置40は、例えば、加速度センサ、ジャイロセンサである。これらは、例えば、エンドエフェクタ28に取り付けられる。エンドエフェクタ28は、対象物Wを堅く把持している。このため、角度検出装置40は、エンドエフェクタ28の角度を検出することにより、対象物Wの角度を検出することができる。角度検出装置40は、計測した対象物Wの角度を演算装置10へ送信する。なお、角度検出装置40が検出する対象物Wの角度の基準は、特に限定されない。角度検出装置40は、例えば、鉛直方向を基準にする場合、鉛直方向に対するエンドエフェクタ28の角度に基づいて、対象物Wの角度を検出する。
なお、角度検出装置40は、対象物Wに取り付けられていてもよい。また、角度検出装置40は、第1リンク22、第2リンク23、第3リンク24、第4リンク25、第5リンク26、第6リンク27、及びエンドエフェクタ28の少なくとも一つに取り付けられていてもよい。具体的には、角度検出装置40は、第4リンク25、第5リンク26及びエンドエフェクタ28各々に取り付けられていてもよい。この場合、角度検出装置40は、例えば、第4リンク25の第3リンク24に対する回転角度、第5リンク26の第4リンク25に対する回転角度及びエンドエフェクタ28の第5リンク26に対する回転角度を計測し、所定の演算処理(例えば、順運動学による演算)を行うことにより、エンドエフェクタ28に把持されている対象物Wの角度を検出する。
図2は、本実施形態における演算装置10のハードウェア構成の一例を示すブロック図である。演算装置10は、ロボット20の経路を演算する装置であり、同図に示すとおり、本実施形態では、外部インタフェース11と、記憶部12と、演算部15とを備える。また、演算装置10は、ドライブ13を備えてもよい。
外部インタフェース11は、外部機器を演算装置10に接続するためのインタフェースである。図2に示す例において、外部インタフェース11は、ロボット20、撮像装置30、角度検出装置40、入力装置50及び出力装置60と、演算装置10とを電気通信かつ情報通信可能に接続する。外部インタフェース11は、対象物Wの初期位置及び目標位置を取得するための取得部としての機能を有する。外部インタフェース11は、例えば、ユーザが入力装置50を使用して入力した対象物Wの初期位置及び目標位置を取得する。或いは、外部インタフェース11は、撮像装置30からエンドエフェクタ28に把持された対象物Wの画像を取得する。演算部15は、記憶部12に格納された画像処理プログラムに基づいて、取得した画像から、対象物Wの初期位置及び目標位置を算出する。或いは、外部インタフェース11は、撮像装置30が算出した初期位置及び目標位置を取得する。
外部インタフェース11は、初期位置とともに、又は、初期位置に加えて、初期位置に置かれている対象物Wを掴む際のロボット20の姿勢を取得してもよい。以下の説明では、この姿勢を初期姿勢と呼ぶ。また、外部インタフェース11は、目標位置とともに、又は、目標位置に加えて、対象物Wを目標位置に置く際のロボット20の姿勢を取得してもよい。以下の説明では、この姿勢を目標姿勢と呼ぶ。また、外部インタフェース11は、角度検出装置40から計測した対象物Wの角度を取得し、記憶部12に格納してもよい。また、外部インタフェース11は、さらに、ロボット20の現在の姿勢(現在姿勢)を取得するように構成されていてもよい。なお、外部インタフェース11が取得するロボット20の姿勢とは、ロボット20の複数の可動軸に対応して設けられ、ロボット20の可動軸の回転角度に関する情報を検出するエンコーダ値であってよい。
一般に、ロボットの姿勢は、コンフィギュレーション空間(Configuration Space)内の点として表現することができる。コンフィギュレーション空間とは、経路計画を行う際に使用されるベクトル空間である。コンフィギュレーション空間に点を置くことをサンプリングということもある。経路計画とは、障害物の位置、スタート及びゴールが与えられたコンフィギュレーション空間内において、スタートからゴールまでを結ぶ経路を生成することである。コンフィギュレーション空間は、ロボットが有する可動軸の数と同数の次元を持つ。コンフィギュレーション空間のある一点は、ロボットが有する可動軸の個数と同じ個数の値により定義され、各可動軸の値は、ロボットの各可動軸周りの回転角度を表す。なお、コンフィギュレーション空間は、ロボットの経路計画の分野においては、関節空間と呼ばれることがある。なお、経路計画を行う空間として実空間に基づく絶対座標空間を用いてもよい。
本実施形態のように、ロボット20として六軸垂直多関節ロボットを用いる場合、コンフィギュレーション空間は、六次元ベクトル空間となる。ロボット20のコンフィギュレーション空間の各可動軸の値は、それぞれ第1リンク22の台座21に対する回転角度、第2リンク23の第1リンク22に対する回転角度、第3リンク24の第2リンク23に対する回転角度、第4リンク25の第3リンク24に対する回転角度、第5リンク26の第4リンク25に対する回転角度及び第6リンク27の第5リンク26に対する回転角度を表す。演算部15は、経路を生成する演算処理において、各可動軸の回転角度に関するデータ(ロボット20に設けられたエンコーダの検出値)を、外部インタフェースを用いて取得し、順運動学に基づいて、ロボット20又はその仮想モデルの位置、姿勢を演算する。また、演算部15は、コンフィギュレーション空間を用いて、ロボット20の初期姿勢を決定する点の各座標の値及びロボット20の目標姿勢を決定する点の各座標の値を演算してよい。なお、演算部15は、外部インタフェース11の取得部としての機能を用いて、コンフィギュレーション空間におけるロボット20の初期姿勢及び/又は目標姿勢を決定するための点の各座標の値を取得してもよい。
また、外部インタフェース11は、後述する経路生成手順記憶部122及び経路修正手順記憶部123によって生成された経路をロボット20又は出力装置60へ出力するための出力部としての機能を有する。
記憶部12は、例えば、揮発性メモリ、不揮発性メモリ、ハードディスクドライブ(Hard Disc Drive:HDD)によって構成される。本実施形態において、記憶部12は、初期条件記憶部121と、経路生成手順記憶部122と、経路修正手順記憶部123と、経路記憶部124と、経路出力手順記憶部125とを備える。
初期条件記憶部121は、搬送条件の初期値を格納するものであり、例えば、記憶部12の内部に設けられた所定の記憶領域により構成される。ここで、搬送条件とは、上述の第2の条件、すなわち、ロボット20が配置される周辺の環境に関する条件を含んでいてよい。ここで、第2の条件の初期値は、例えば、障害物領域Coである。障害物領域Coとは、コンフィギュレーション空間内において、ロボット20及び対象物Wの少なくとも一方が周囲の障害物に衝突するようなロボット20の姿勢を与える点が存在する領域である。なお、以下の説明では、「ロボット20が障害物に衝突する」とは、ロボット20が把持する対象物Wが障害物に衝突する場合も含むものとする。また、ここでは、ロボット20の周辺環境に関する情報を「周辺環境情報」といい、障害物領域Coは、周辺環境情報の一例である。また、搬送条件は、ロボットが、対象物Wを第1の位置から第2の位置に搬送するときの、対象物Wの姿勢に関する第1の条件を含んでいてよい。例えば、対象物Wの姿勢に関する第1の条件の初期値は、角度不適合領域Cpを含んでもよい。角度不適合領域Cpとは、コンフィギュレーション空間内において、対象物Wの姿勢が所定の条件に適合しないロボット20の姿勢を与える点が存在する領域である。対象物Wはエンドエフェクタ28によって把持されて、初期姿勢から目標姿勢まで搬送されるので、角度不適合領域Cpは、コンフィギュレーション空間内における所定の領域として表すことができる。角度不適合領域Cpは、対象物Wの姿勢に関する条件に基づいて決定されるものであり、その条件としては、例えば、搬送中に対象物Wが天地逆転しないとか、搬送中の対象物Wの角度を鉛直方向に対して所定の範囲内に保つ等である。なお、障害物領域と角度不適合領域とは、重複することもある。これらの搬送条件は、ユーザが任意に設定又は変更することができる。例えば、搬送条件は、ユーザが入力装置50を用いて入力してもよい。このとき、演算装置10は、外部インタフェース11を介して、入力された条件を取得する。取得された条件は、初期条件記憶部121の初期値又は上書値として、記憶部12に格納されてもよい。また、搬送条件は、例えば、ロボット20の周辺環境を取得する不図示のセンサやCADのデータ、予め定められた値等に基づいて、演算装置10が任意に設定又は変更するものとしてもよい。例えば、演算装置10は、ロボット20の周辺環境を取得するセンサから取得された値に基づいて、障害物領域Coを更新し、かつ、障害物領域Coの更新に伴って、増減する角度不適合領域Cpを更新する演算処理を実行する。
なお、初期条件記憶部121は、経路を使用するロボット20に関する条件を記憶していてもよい。すなわち、ロボット20は、前述のように、台座及び複数のリンクのそれぞれを可動軸により互いに接続して構成される。したがって、初期条件記憶部121は、台座及び各リンクの形状に関する情報、可動軸に関する情報(例えば、回転可能な角度、速度、加速度に関する情報)を、ロボット20に関する条件として記憶してもよい。これによれば、例えば、演算装置10でロボット20の経路を演算することができ、また、仮想空間上に、当該経路を使用した、ロボット20の動作を再現させることができる。なお、初期条件記憶部121は、ロボット20の動作の再現を容易にするため、ロボット20の近似モデルを、ロボット20に関する条件として記憶していてもよい。また、初期条件記憶部121は、エンドエフェクタ28及び/又は対象物Wの初期位置及び目標位置を記憶しておいてもよい。なお、初期条件記憶部121に記憶される条件は、様々な形式で表現されてよく、例えば、条件を満たすか否かを判別するための所定の関数によって表現されてもよい。
経路生成手順記憶部122は、例えば、記憶部12の内部に設けられた所定の記憶領域により構成される。経路生成手順記憶部122は、ロボット20が対象物Wを初期位置から目標位置に搬送するときの経路を生成するための演算処理を、演算部15に実行させるためのプログラムを格納する。例えば、記憶部12の経路生成手順記憶部122に保存されたソフトウェアプログラムが演算部15に読み出されて実行されることによって、経路の生成に関する演算処理が実行される。演算部15は、経路生成手順記憶部122に格納されたプログラムに基づき、搬送条件を、演算装置10の外部から取得、又は、初期条件記憶部121から呼び出す。演算部15は、取得又は呼び出した条件に基づいて、ロボット20が、対象物Wを初期位置から目標位置に搬送する経路の全体にわたり、当該搬送条件を満たす経路を生成する。例えば、搬送条件が、対象物Wを搬送する際の角度を所定の範囲内に収めるというものである場合、演算部15は、ロボット20が対象物Wを初期位置から目標位置まで搬送する間、対象物Wの角度が所定の範囲内に収まるような経路を生成する。
本実施形態において、経路生成手順記憶部122は、ロボット20が周辺環境に設置された障害物と干渉することなく、かつ、搬送中の対象物Wの姿勢に関する条件を満たすような経路を生成するための、プログラムを格納している。なお、生成される経路は、コンフィギュレーション空間上で初期姿勢を示す点Sから目標姿勢を示す点Gまでを結ぶ複数の点Niの列Tとして表すことができる。演算部15により実行される経路生成処理の手法としては、ポテンシャル法、ロードマップ法、最適化法などを含む任意の手法を用いることができる。それぞれの手法による経路生成処理については後述する。
経路修正手順記憶部123は、例えば、記憶部12の内部に設けられた所定の記憶領域により構成される。経路修正手順記憶部123は、経路生成手順記憶部122に格納されたプログラムに基づいて生成された経路を修正するための演算処理を、演算部15に実行させるためのプログラムを格納する。本実施形態において、経路修正手順記憶部123に格納されるプログラムは、ロボット20が周辺環境に設置された障害物と干渉することなく、かつ、搬送中の対象物Wの姿勢に関する条件を満たすように、経路を修正する処理を実行するためのプログラムである。経路修正手順記憶部123に格納されるプログラムは、経路生成手順記憶部122が生成した経路を平滑化する処理を実行するためのものでもよい。また、経路生成手順記憶部122に格納されたプログラムに基づいて生成された経路のショートカットを探索する処理を実行するためのものでもよい。また、ゴールまでの経路長、角速度、計算時間、移動予測時間の少なくともいずれかに基づく評価関数を定め、評価関数の値が最大化するように経路を修正する処理を実行するためのものでもよい。なお、経路生成手順記憶部122に格納されたプログラムに基づく演算処理によって複数の経路が生成される場合には、所定の評価関数により各経路を評価して、複数の経路の中から最適な経路が選択されるようにしてもよい。なお、ロボット20と周辺環境に設置された障害物との干渉を回避するように経路を修正するためのプログラムと、搬送中の対象物Wの姿勢に関する条件を満たすように経路を修正するプログラムとは、別々に格納されていてよい。
経路記憶部124は、経路生成手順記憶部122や経路修正手順記憶部123に格納されたプログラムを実行することによって生成又は修正された経路(以下、単に「生成された経路」ともいう。)を記憶するものであり、例えば、記憶部12の内部に設けられた記憶領域により構成される。経路生成手順記憶部122に格納されたプログラムに基づく演算処理は、経路を生成又は修正するときの条件に変わりがない場合に、経路記憶部124が記憶している経路を読みだすことによって、行われてもよい。例えば、演算部15は、すでに生成された経路における対象物Wの初期位置と目標位置とに変わりがない場合や、ロボット20の周囲にある障害物等の環境、すなわち周辺環境情報に変わりがない場合には、経路記憶部124が記憶している経路を読み出すことによって、経路を生成又は修正してもよい。これにより、演算部15は、迅速に適切な経路を生成することができる。なお、経路記憶部124は、経路生成手順記憶部122や経路修正手順記憶部123に格納されたプログラムを実行することによって生成された経路を、経路を生成又は修正したときに考慮した条件と紐づけて、記憶しておくことが好ましい。
経路出力手順記憶部125は、例えば、記憶部12の内部に設けられた所定の記憶領域により構成される。経路出力手順記憶部125は、経路生成手順記憶部122や経路修正手順記憶部123に格納されたプログラムを実行することによって生成された経路、又は、経路記憶部124に記憶された経路を、外部インタフェース11を介してロボット20に出力するためのプログラムを格納する。経路出力手順記憶部125に保存されたソフトウェアプログラムが演算部15に読み出されて実行されることによって、経路が外部インタフェース11を介して外部に出力される。
なお、経路生成手順記憶部122、経路修正手順記憶部123及び経路出力手順記憶部125は、それぞれ区別されなくてもよい。例えば、経路生成手順記憶部122に格納されたプログラムにより実行される処理と、経路修正手順記憶部123に格納されたプログラムにより実行される処理と、経路出力手順記憶部125に格納されたプログラムにより実行される処理とは、一体的に行われてもよい。
ドライブ13は、演算装置10に挿入された記憶媒体14を駆動する。記憶媒体14に対象物Wの初期位置及び目標位置が記憶されている場合、演算装置10は、記憶媒体14から対象物Wの初期位置及び目標位置を取得してもよい。このとき、ドライブ13は、対象物Wの初期位置及び目標位置を取得するための取得部として機能する。また、演算装置10は、経路生成手順記憶部122及び経路修正手順記憶部123によって生成された経路を記憶媒体14に出力してもよい。このとき、ドライブ13は、生成された経路を記憶媒体14へ出力するための出力部として機能する。
記憶媒体14は、記憶部12の代わりに、初期条件記憶部121及び経路記憶部124に格納されたデータを記憶する媒体として用いることができる。また、記憶媒体14は、記憶部12の代わりに、経路生成手順記憶部122及び経路修正手順記憶部123の少なくともいずれか一つに格納されたソフトウェアプログラムを記憶することができる。記憶媒体14は、例えば、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW、DVD−RAM、LD、光磁気ディスク、メモリーカードである。
演算部15は、ハードウェアプロセッサとしてのCPU(Central Processing Unit)151と、RAM(Random Access Memory)152と、ROM(Read Only Memory)153とを備える。
CPU151は、記憶部12の経路生成手順記憶部122、経路修正手順記憶部123、及び経路出力手順記憶部125の少なくともいずれか一つに格納されたソフトウェアプログラムを読み出して実行するプロセッサである。CPU151は、例えば、記憶部12の経路生成手順記憶部122、経路修正手順記憶部123、及び経路出力手順記憶部125の少なくともいずれか一つに格納されたプログラムを読み出し、これらのプログラムをRAM(Random Access Memory)152に格納し、これらのプログラムを実行する。
入力装置50は、ロボットシステム1へ指示や設定を入力するための装置であり、例えば、マウスやキーボードによって構成される。ユーザが入力装置50に対して入力した指示や設定は、演算装置10の演算部15へ送信される。
出力装置60は、例えば、ディスプレイであり、経路生成手順記憶部122及び/又は経路修正手順記憶部123が生成した経路をユーザに対して出力する。
なお、演算装置10は、演算処理の結果に基づいて、搬送条件を満たす経路を生成するように構成されていればよい。したがって、演算装置10は、搬送条件を満たす経路を生成する処理を実行するハードウェアプロセッサと、ハードウェアプロセッサに対して、搬送条件を満たす経路を生成する処理を実行させるためのソフトウェアプログラムを格納する揮発性メモリ及び不揮発性メモリの少なくともいずれか一方と、搬送条件を外部から取得するための外部インタフェースと、を少なくとも備えてればよい。
次に、図3を参照しながら、本実施形態における経路出力処理の流れについて説明する。図3は、演算装置10における経路出力処理のフローチャートの一例である。
まず、演算部15は、外部インタフェース11を用いて、ロボット20の初期姿勢及び目標姿勢を取得する(ステップS31)。具体的には、外部インタフェース11は、ユーザが入力装置50から入力した初期姿勢と目標姿勢を取得する。また、外部インタフェース11は、撮像装置30や角度検出装置40から得られた情報に基づいて算出された初期姿勢と目標姿勢との少なくともいずれかを取得してもよく、撮像装置30や角度検出装置40から得られる情報を取得して初期姿勢と目標姿勢との少なくともいずれかを算出してもよい。さらに、外部インタフェース11は、ロボット20が有する可動軸の角度を検出するセンサ(エンコーダ)の検出値に基づいて算出された、ロボット20の現在の姿勢を初期姿勢として取得してもよい。また、演算部15は、外部インタフェース11を用いて、ロボット20が有する可動軸の角度を検出するセンサ(エンコーダ)の検出値を取得して、ロボット20の現在の姿勢を算出し、これを初期姿勢としてもよい。
また、演算部15は、S31の処理と並行して、又は、S31の処理の前後で、ロボット20が対象物Wを搬送するときの搬送条件を取得する(ステップS32)。演算部15は、ユーザが入力装置50から入力した搬送条件を、外部インタフェース11を介して取得してもよいし、或いは、予め初期条件記憶部121に記憶された搬送条件を取得してもよい。演算部15が取得する搬送条件は任意であるが、例えば、搬送中の対象物Wの姿勢に関する条件やロボット20が配置される周辺の環境に関する条件などが取得される。なお、図3においては、ステップS31の後にステップS32が実行される形で図示されているが、これは一例にすぎない。上述のとおり、ステップS31とS32は並行して実行されてもよく、また、ステップS32の後にステップS31が実行されてもよい。演算部15は、外部インタフェース11を用いて取得した情報、及び、算出した情報を、初期条件記憶部121に格納、又は、上書きして、保存する。
なお、ステップS31とステップS32との少なくともいずれかの処理は、後述する経路を生成する処理(ステップS33)、および、経路を修正する処理(ステップS34)の事前処理として実行することができる。この事前処理は、例えば、ロボット20を用いた作業工程の設置や立ち上げを行うときに実行することができる。
このとき、演算部15は、ステップS31において取得する初期位置と目標位置とが、ステップS32において取得する搬送条件を満足するかを判定する処理と、取得した初期位置と目標位置との少なくともいずれか一方が搬送条件を満たさなかった場合に、その旨をユーザに通知するための情報を、外部インタフェース11を介して外部(例えば、出力装置60)に出力する処理と、を実行してもよい。これによれば、ロボット20を用いた作業工程の設置や立ち上げを行うときに、ユーザが誤って初期位置や目標位置を入力した場合に、その誤りを認識することができる。その結果、ユーザが意図せず設定した搬送条件に基づいてロボット20の経路が生成されることを防止できる。
なお、この事前処理は、対象物Wを搬送する始点(初期位置)と終点(目標位置)とが、対象物Wに応じて変動しない、または、変動が少ない場合に好適である。例えば、パーツフィーダ等により、予め定められた位置及び姿勢に保持された対象物Wを、所定のボックスに収納する工程に好適である。これによれば、事前処理のステップで設定した搬送条件を用いて繰り返し経路を生成および修正できるので、経路を算出して出力するまでの時間を短縮することができる。
次に、演算部15は、経路生成手順記憶部122に格納されたプログラムに基づいて、経路生成処理を実行する(ステップS33)。演算部15は、経路生成手順記憶部122に格納されたプログラムに基づいて、コンフィギュレーション空間内に初期姿勢を表す点Sと目標姿勢を表す点Gを配置し、コンフィギュレーション空間において、障害物領域Coと角度不適合領域Cpを除く空間内で経路を生成する。具体的な経路生成処理の手法については後述する。
その後、演算部15は、経路生成手順記憶部122に格納されたプログラムに基づいて生成された経路に対して、経路修正手順記憶部123が格納するプログラムを呼び出して、平滑化やショートカット等の、経路を修正する処理を実行する(ステップS34)。演算部15は、経路生成手順記憶部122が格納するプログラムに基づいて生成した経路に対して、コンフィギュレーション空間において、障害物領域Coと角度不適合領域Cpを除く空間内で、経路を修正する。なお、経路を修正する処理は必須ではなく、必要に応じて任意に実行すればよい。
演算部15は、経路出力手順記憶部125に格納されたプログラムに基づいて、生成された経路(修正された経路を含む)を、外部インタフェース11を介してロボット20に出力する(ステップS35)。ロボット20は、演算装置10から受信した経路に従って動作し、初期位置から目標位置まで対象物Wを搬送する。なお、経路は、必ずしもロボット20に対して出力されなくてもよい。例えば、演算部15は、ディスプレイ等の出力装置60に対して、ロボット20の近似モデルと経路とを出力し、出力装置60上で、ロボット20の動作を再現するようにしてもよい。
なお、ここでは、経路生成手順記憶部122に格納されたプログラムに基づく経路生成処理(ステップS33)と経路修正手順記憶部123に格納されたプログラムに基づく経路修正処理(ステップS34)を分けて説明したが、経路修正処理を経路生成処理に含めてもよい。
以下、経路生成処理について具体的に説明する。これらの処理は、対象物Wを搬送する始点(初期位置)と終点(目標位置)との少なくともいずれかが、対象物W毎に異なる場合により好適である。例えば、ベルトコンベアに不規則に配置された複数の対象物Wを、対象物Wの種別ごとに設定された複数のボックスに仕分ける工程に好適である。なお、以下の各実施例においては、経路生成手順記憶部122に格納されたソフトウェアプログラムが演算部15に読み出されて実行されることによって、演算部15が、経路の生成に関する各種の演算処理を実行するものとして説明する。
<実施例1>
実施例1では、ランダムサンプリング法の一つであるRRT(Rapidly-Exploring Random Tree)に基づく経路生成処理について説明する。本実施例において、演算部15は、コンフィギュレーション空間内に点を一つ配置し、当該点と、既にコンフィギュレーション空間内に配置されている点とを結ぶ処理を繰り返すことにより経路を生成する。
図4は、RRTに基づく経路生成処理のフローチャートの一例である。図5は、RRTに基づく経路生成処理におけるコンフィギュレーション空間の一例を示す図である。本実施例では、ロボット20が配置される周辺の環境に関する搬送条件(第2の条件)を満足するか否かの判定に障害物領域Coを利用し、ロボット20が、対象物Wを第1の位置から第2の位置に搬送するときの、対象物の姿勢に関する搬送条件(第1の条件)を満足するか否かの判定に角度不適合領域Cpを利用する。なお、第1の条件および第2の条件を満足するか否かの判定には、必ずしも、領域を利用しなくてもよい。例えば、ロボット20の姿勢を示すコンフィギュレーション空間の点を、順運動学に基づく演算によって所定の形式に変換し、この変換値とユーザが指定した搬送条件とを比較して、搬送条件を満たすか否かを判定してもよい。
演算部15は、コンフィギュレーション空間上にロボット20の初期姿勢を表す点Sと目標姿勢を表す点Gを配置し(ステップS101)、点Sと点Gとを結ぶことができるか否かを判定する(ステップS102)。具体的には、演算部15は、点Sと点Gとを結ぶ線分が障害物領域Co及び角度不適合領域Cpと重複していない場合、これら二つの点を結ぶことができるものと判定する。演算部15は、点Sと点Gとを結ぶ線分が障害物領域Co及び角度不適合領域Cpの少なくとも一方と重複する部分がある場合、これら二つの点を結ぶことができないものと判定する。そのような場合、ロボット20が障害物に衝突したり、対象物Wの姿勢に関する条件が満たされないからである。
演算部15は、点Sと点Gとを結ぶことができるものと判定した場合(ステップS102:Yes)、処理をステップS103へ進める。他方、演算部15は、点Sと点Gとを結ぶことができないものと判定した場合(ステップS102:No)、処理をステップS104へ進める。
演算部15は、点Sと点Gとを結び、経路を生成し、処理を終了させる(ステップS103)。
演算部15は、コンフィギュレーション空間内に点Niを一つ配置(サンプリング)する(ステップS104)。この点は、点S及び点Gとは異なる点であり、ロボット20の姿勢、すなわち、複数の可動軸を有する多関節ロボットであるロボット20における、所定の姿勢の一つを表している。この姿勢は、初期位置(姿勢)と目標位置(姿勢)との間に設けられる中継位置(姿勢)の候補である。
演算部15は、ステップS104で配置した点により表されるロボット20の姿勢により、ロボット20が周囲の障害物と衝突するか否かを判定する(ステップS105)。具体的には、演算部15は、ステップS104で配置した点が障害物領域Co内に存在する場合(例えば、図5の点Nb,Nd)、ロボット20が周囲の障害物と衝突するものと判定する。他方、演算部15は、ステップS104で配置した点が障害物領域Co内に存在しない場合(例えば、図5の点N1〜N5,Na,Nc)、ロボット20が周囲の障害物と衝突しないものと判定する。
演算部15は、ステップS105でロボット20が周囲の障害物と衝突すると判定した場合(ステップS105:Yes)、ステップS104で配置した点Niをコンフィギュレーション空間内から削除し(ステップS110)、処理をステップS104へ戻す。他方、演算部15は、ステップS105でロボット20が周囲の障害物と衝突しないものと判定した場合(ステップS105:No)、処理をステップS107へ進める。
演算部15は、ロボット20が把持する対象物Wが姿勢に関する条件を満たすか否かを判定する(ステップS107)。
具体的には、演算部15は、ステップS104で配置した点が、対象物Wの姿勢に関する条件に基づいて求められる角度不適合領域Cp内に存在する場合(例えば、図5の点Na,Nc)、当該点によって表されるロボット20の姿勢により把持される対象物Wの姿勢が条件を満たさないものと判定する。また、演算部15は、ステップS104で配置した点が、角度不適合領域Cp内に存在しない場合(例えば、図5の点N1〜N5)、当該点によって表されるロボット20の姿勢により把持される対象物Wの姿勢が条件を満たすものと判定する。
演算部15は、ステップS104で配置した点が角度不適合領域Cp内に存在する、すなわち、対象物Wの姿勢が当該姿勢に関する条件を満たさないものと判定した場合(ステップS107:Yes)、ステップS104で配置した点Niをコンフィギュレーション空間内から削除し(ステップS110)、処理をステップS104へ戻す。他方、演算部15は、対象物Wの姿勢が条件を満たすものと判定した場合(ステップS107:No)、処理をステップS109へ進める。
演算部15は、ステップS104で配置した点Niと、初期姿勢を表す点S及び既に配置された点の中で、点Niの最近傍に配置された点Ni−nearestとを結ぶことができるか否かを判定する(ステップS109)。具体的には、演算部15は、ステップS104で配置した点Niと、これまでに配置された点N0,・・・,Ni−1(点Sは点N0とする)の中で、点Niの最近傍に配置されている点Ni−nearestとを結ぶ線分が、障害物領域Co及び角度不適合領域Cpのいずれとも重複していない場合、これら二つの点を結ぶことができるものと判定する。
演算部15は、ステップS104で配置した点Niと、点Ni−nearestとを結ぶことができないものと判定した場合(ステップS109:No)、ステップS104で配置した点Niをコンフィギュレーション空間内から削除し(ステップS110)、処理をステップS104へ戻す。他方、演算部15は、ステップS104で配置した点Niと、点Ni−nearestとを結ぶことができるものと判定した場合(ステップS109:Yes)、処理をステップS111へ進める。
演算部15は、ステップS104で配置した点Niと、前回配置された点Ni−nearestとを結ぶ(ステップS111)。
演算部15は、点Niと、目標姿勢を表す点Gとを結ぶことができるか否かを判定する(ステップS112)。具体的には、演算部15は、点Niと点Gとを結ぶ線分が、障害物領域Co及び角度不適合領域Cpのいずれとも重複していない場合、これら二つの点を結ぶことができるものと判定する。
演算部15は、点Niと点Gとを結ぶことができないものと判定した場合(ステップS112:No)、iの値に1を加えた上で処理をステップS104へ戻し、新たな点Ni+1をサンプリングする。他方、演算部15は、点Niと点Gとを結ぶことができるものと判定した場合(ステップS112:Yes)、処理をステップS113へ進める。このように、ステップS104からステップS112までの処理を、点Gまで結ぶことができるまで繰り返し実行する。
演算部15は、点Niと点Gとを結び、経路を生成する(ステップS113)。
このように、演算部15は、対象物Wを初期位置(点S)から中継位置(点N1,N2,・・・)を経由して目標位置(点G)に搬送する経路(点列T=(S,N1,N2,・・・,G))を生成する。図5では、点列T=(S,N1,N2,N3,N5,N6,G)が経路として生成される。
なお、ステップS110の処理は、点Niをコンフィギュレーション空間内から単純に削除する処理に限られない。例えば、点Niを基準とした所定の領域を設定し、S104において、設定した当該領域の中で点Niをサンプリングすることで、当該領域内で点Niを探索することができる。また、例えば、点Niを基準とした所定の領域を設定し、S104において、設定した当該領域の外で点Niをサンプリングすることで、当該領域外で点Niを探索することができる。
なお、上記の経路生成処理では、初期位置(点S)から目標位置(点G)へ、一方通行で点を配置して接続していく処理を記載したが、初期位置(点S)と目標位置(点G)との双方から点Niを配置してもよい。すなわち、初期位置(点S)から順に配置する点をNsiとし、目標位置(点G)から順に配置する点をNgiとして、点Sと点Gとの双方から順に点を配置し、経路計画を行う所定の空間(コンフィギュレーション空間)で、点Nsiと点Ngiとを接続することで、点Sと点Gとを接続する経路を設計してもよい。
<実施例2>
実施例2では、ロードマップ法の一つである確率的ロードマップ(Probabilistic Road Map:PRM)に基づく経路生成処理について説明する。本実施例において、演算部15は、複数の点をコンフィギュレーション空間内にランダムに配置し、これらの点の中から障害物領域Co及び角度不適合領域Cpの外にある点を抽出し、これらの点を結ぶことにより初期姿勢から目標姿勢までの経路を生成する。
図6は、PRMに基づく経路生成処理のフローチャートの一例である。図7は、PRMに基づく経路生成処理におけるコンフィギュレーション空間の一例を示す図である。本実施例では、ロボット20が配置される周辺の環境に関する搬送条件(第2の条件)を満足するか否かの判定に障害物領域Coを利用し、ロボット20が、対象物Wを第1の位置から第2の位置に搬送するときの、対象物の姿勢に関する搬送条件(第1の条件)を満足するか否かの判定に角度不適合領域Cpを利用する。なお、第1の条件および第2の条件を満足するか否かの判定には、必ずしも、領域を利用しなくてもよい。例えば、ロボット20の姿勢を示すコンフィギュレーション空間の点を、順運動学に基づく演算によって所定の形式に変換し、この変換値とユーザが指定した搬送条件とを比較して、搬送条件を満たすか否かを判定してもよい。
演算部15は、コンフィギュレーション空間上にロボット20の初期姿勢を表す点Sと目標姿勢を表す点Gを配置する(ステップS201)。
演算部15は、コンフィギュレーション空間内に複数の点Niをランダムに配置する(ステップS202)。
演算部15は、ステップS202で配置した点Niの中から、障害物領域Coの中に含まれる点を棄却し、障害物領域Coの外にある点を抽出する(ステップS203)。図7では、障害物領域Coの中に含まれる点NbとNdが棄却される。
続いて、演算部15は、角度不適合領域Cpの中に含まれる点を棄却し、角度不適合領域Cpの外にある点を抽出する(ステップS204)。図7では、角度不適合領域Cpの中に含まれる点NaとNcが棄却され、残りの点N1〜N8が抽出される。
演算部15は、ステップS204で抽出した点をもとに、初期姿勢を表す点Sから目標姿勢を表す点Gを結ぶ経路を生成する(ステップS205)。具体的には、演算部15は、これらの点を障害物領域及び角度不適合領域のいずれとも重複しない線分で互いに結ぶことにより、経路を生成する。また、ある点から他の点に結ぶ際、点間の距離が所定の範囲内にある点を結ぶものとしてもよい。例えば、図7において、点N1は、点N1の近傍にある点S,N2,N3,N7と結ばれる。図7では、点間が互いに結ばれることを、実線又は破線で表している。
抽出された点から複数の経路が生成されるとき、演算部15は、所定の基準に基づく評価関数を用いて最適な経路を選択する(ステップS206)。例えば、評価関数は、点Sから点Gまでの経路長が最も短くなる経路を選択するための評価関数としてもよい。図7では、例えば、実線で結ばれる点列T=(S,N1,N3,N4,N6,G)が経路として選択される。なお、評価関数は、経路長に限られず、他の基準に基づいて経路を選択するものとしてもよい。
なお、ステップS203、S204の処理は、それぞれの領域に含まれる点を棄却する処理に限られない。例えば、点Niを基準とした所定の領域を設定し、S202に戻り、当該領域の中で、点Niをさらに複数配置することができる。また、例えば、点Niを基準とした所定の領域を設定し、S202に戻り、設定した当該領域の外で点Niをさらに複数配置することができる。さらに、例えば、点Niを棄却した後、S202に戻り、コンフィギュレーション空間内に新たに別の点Niを再付与するようにしてもよい。これによれば、点Niが棄却された場合でも、経路生成の候補となる点Niの数を担保することができ、障害物などが多く、経路生成の条件が厳しい場合でも、経路生成処理が不能となることを抑制できる。
<実施例3>
実施例3では、ポテンシャル法(Artificial Potential Method)に基づく経路生成処理について説明する。本実施例において、演算部15は、ロボット20及び対象物Wが位置し得る領域内のポテンシャルを算出し、ポテンシャルに基づいて経路を生成する。演算部15は、例えば、評価関数を使用することにより、ロボット20及び対象物Wが位置し得る領域内のポテンシャルを算出する。
評価関数とは、コンフィギュレーション空間において、ロボット20の初期姿勢を表す点S、障害物領域Co及び角度不適合領域Cpに斥力が設定され、ロボット20の目標姿勢を表す点Gに引力が設定されるように、ロボット20及び対象物Wが位置し得る領域内を評価する関数である。すなわち、ロボット20の周囲に存在する障害物や対象物Wの姿勢に関する条件は、評価関数に基づいて定義される。また、演算部15は、例えば、第4リンク25の第3リンク24に対する回転角度、第5リンク26の第4リンク25に対する回転角度及びエンドエフェクタ28の第5リンク26に対する回転角度それぞれを所定の範囲内に制限した評価関数を使用してもよい。
図8は、ポテンシャル法に基づく経路生成処理のフローチャートの一例である。図9は、ポテンシャル法に基づく経路生成処理におけるコンフィギュレーション空間の一例を示す図である。
まず、演算部15は、障害物との距離に応じてコストが変化する評価関数により、コンフィギュレーション空間内のフィールドを重み付けする(ステップS301)。例えば、コンフィギュレーション空間において、障害物領域Coに斥力が設定されるように、障害物領域Coからの距離が離れるにつれてポテンシャル値が低くなる評価関数によりフィールドが評価される。
次に、演算部15は、対象物Wの姿勢に応じてコストが変化する評価関数により、コンフィギュレーション空間内のフィールドを重み付する(ステップS302)。例えば、コンフィギュレーション空間において、角度不適合領域Cpに斥力が設定されるように、角度不適合領域Cpからの距離が離れるにつれてポテンシャル値が低くなる評価関数によりフィールドが評価される。
このように、演算部15は、障害物領域Coと角度不適合領域Cpとに基づいて、コンフィギュレーション空間内のフィールドが評価される。この処理は、事前に行われることが好ましいが、この限りではない。なお、障害物との距離に応じてコストが変化する評価関数と、対象物Wの姿勢に応じてコストが変化する評価関数と、は単一の関数として表現されていてもよい。
演算部15は、外部インタフェース11を介して入力された、又は、初期条件記憶部121に記憶された、ロボット20の初期姿勢と目標姿勢とに基づいて、初期姿勢を表す点S及び目標姿勢を表す点Gとの距離に応じてコストが変化する評価関数により、コンフィギュレーション空間内のフィールドを重み付けする(ステップS303)。例えば、コンフィギュレーション空間において、点Sに斥力が設定され、点Gに引力が設定されるように、点Sからの距離が近いほどポテンシャル値が高く、かつ、点Gからの距離が近いほどポテンシャル値が低くなる評価関数により、フィールドが評価される。
演算部15は、障害物との距離、対象物Wの姿勢、点Sと点Gとの距離に基づいて、コンフィギュレーション空間内の各位置におけるポテンシャル値を算出し、算出されたポテンシャル値に基づいて経路を生成する(ステップS304)。例えば、ステップS301〜S303の各ステップにおいて評価した値を足し合わせたり掛け合わせたりして、フィールドのポテンシャルを評価する。図9に図示された矢印は、評価されたポテンシャルのベクトルを示すものである。演算部15は、算出したポテンシャルに基づいて、点Sから点Gまでの経路のコストが最小となる経路を生成する。この経路は、実施例1や実施例2で生成される経路と異なり、連続的なものとなることが多い。
<実施例4>
実施例4では、軌道最適化(Trajectory Optimization)に基づく経路生成処理について説明する。本実施例において、演算部15は、コンフィギュレーション空間内における点の配置に関するコスト関数の最適化問題を解くことにより、ロボット20の経路を生成する。コスト関数とは、例えば、ロボット20又は対象物Wと障害物との距離、コンフィギュレーション空間内における経路の滑らかさ、ロボット20のトルクの最大値、第1リンク22、第2リンク23、第3リンク24、第4リンク25、第5リンク26又はエンドエフェクタ28の回転角度等に基づいて設定される関数である。また、ロボット20又は対象物Wと障害物との距離に関するコストは、両者の距離に応じて変化させてもよい。軌道最適化の具体的な手法としては、例えば、STOMP(Stochastic Trajectory Optimization for Motion Planning)、CHOMP(Covariant Hamiltonian Optimization for Motion Planning)等が挙げられる。
図10は、軌道最適化に基づく経路生成処理のフローチャートである。図11は、軌道最適化に基づく経路生成処理におけるコンフィギュレーション空間の一例を示す図である。経路最適化においては、コンフィギュレーション空間内に配置された複数の点において、初期姿勢を表す点Sから、複数の点N1,N2,・・・を経由して目標姿勢を表す点Gまで結ばれているとき、これらの点及び隣接する点を結んでいる線分が障害物領域Co及び角度不適合領域Cpのいずれとも重複しないように点Niを移動させることにより経路を生成する。
まず、演算部15は、コンフィギュレーション空間内において、初期姿勢を表す点Sと目標姿勢を表す点Gを配置し、これらを結ぶ線分上に複数の点Niを配置する(ステップS401)。例えば、点Sと点Gを結ぶ線分を等間隔にN分割し、N−1個の点Ni(i=1,2,・・・,N−1)を配置する。図11では、点Sと点Gを結ぶ線分上に、4つの点N1〜N4が配置されている。
次に、演算部15は、点Sと点Gを結ぶ線分上に配置された複数の点Niのうち、障害物領域Coの中にある点Niを抽出し、障害物領域Coの外に移動させる(ステップS402)。このとき、コスト関数が最小化する位置に点Niを移動させることが好ましい。図11では、点N4が障害物領域Coに含まれているので、障害物領域Coの外の点N4’に移動される。なお、コスト関数は、その出力値が大きいほど最適であるように設計をしてもよい。
さらに、演算部15は、複数の点Niのうち、角度不適合領域Cpの中にある点Niを抽出し、角度不適合領域Cpの外に移動させる(ステップS403)。このとき、コスト関数が最小化する位置に点Niを移動させることが好ましい。図11では、点N1とN2が角度不適合領域Cpに含まれているので、角度不適合領域Cpの外の点N1’とN2’に移動される。
演算部15は、移動後の点Ni間を障害物領域Co及び角度不適合領域Cpと重複することなく結ぶことができるか否かを判定する(ステップS404)。重複する部分なくすべての点を結ぶことができれば(ステップS404:Yes)、移動後の点列Tを経路として生成する(ステップS405)。図11では、点列T=(S,N1’,N2’,N3,N4’,G)が経路として生成される。
他方、ステップS404において、少なくとも一つの点間を結ぶ線分が障害物領域Co又は角度不適合領域Cpと重複する部分がある場合(ステップS404:No)、ステップS401に戻り、演算部15は、点Niを別の位置に移動させる等して、再度経路探索を行う。また、点Niを別の位置に移動させても経路を生成できない場合、演算部15は、点Sと点Gを結ぶ線分上に配置する点の数を変えて、経路探索してもよい。なお、ステップS402の演算処理とステップS403と演算処理とは、順序を入れ替えて実行されてもよい。また、ステップS402の演算処理とステップS403と演算処理とは、所定のコスト関数に基づいて、同時に行われてもよい。
なお、上記各実施例において、演算部15は、初期位置(初期姿勢)として与えられる点Sと目標位置(目標姿勢)として与えられる点Gとの少なくともいずれかが、ステップS32において取得される搬送条件を満足するかを判定するステップ(図示せず)を実行してもよい。このとき、演算部15は、さらに、点Sと点Gとの少なくともいずれかが搬送条件を満たさない場合には、搬送条件を満たす点Sまたは点Gを再設定するステップ(図示せず)を実行してもよい。これらのステップは、点Sと点Gとを接続する経路を生成または修正する処理の前に行われることが好ましい。
なお、これらのステップを含む経路生成処理は、例えば、バラ積みピッキングに適用すると好適である。すなわち、バラ積みピッキングにおいては、複数の対象物Wが、位置と姿勢とが不規則な状態でボックスに格納されているから、このステップを実行することにより、条件を満たす対象物Wを自動的に判別してピッキングすることができる。
<実施例5>
実施例5では、搬送条件に基づく経路生成処理について説明する。搬送条件は、例えば、対象物Wの取り得る姿勢を制約するための条件と、対象物Wの周辺環境情報に関する条件とを含む。対象物Wの取り得る姿勢を制約するための条件の一例として、ワーク座標系における軸回りの回転角度(例えば、ロール角、ピッチ角、ヨー角)の制限に関わる条件を挙げることができる。対象物Wの周辺環境情報に関する条件の一例として、対象物Wがその周辺の障害物と干渉しないための条件を挙げることができる。
なお、本実施例において、「コンフィギュレーション空間」とは、ロボット20の動作の自由度によって定まる空間を意味し、対象物Wが存在する「実空間」とは区別する。また、本実施例では、説明の便宜上、対象物Wが存在する実空間内における対象物Wの取り得る姿勢を制約するための条件を「第1の条件」と呼び、ロボットの周辺環境情報に関する条件を「第2の条件」と呼ぶ。また、「第1の位置」として、点S(初期位置)を例示し、「第2の位置」として、点G(目標位置)を例示するが、これに限られるものではない。
図12は、第1の位置(点S)及び第2の位置(点G)の計算を説明する説明図である。演算部15は、コンフィギュレーション空間中の第1の位置(点S)と第2の位置(点G)との間に第1の条件を満たす経路Rが存在する可能性を高くするように、コンフィギュレーション空間中の第1の位置(点S)及び第2の位置(点G)を実空間の上の第1の位置、第2の位置から計算する。演算部15は、例えば、コンフィギュレーション空間中の第1の位置(点S)及び第2の位置(点G)の距離が短くなる逆運動学の解の組み合わせを選択する。このような計算により、例えば、第1の位置(点S)及び第2の位置(点G)が第1の条件を満たしていても、第1の位置(点S)と第2の位置(点G)との間の如何なる経路も第1の条件を満たさないことがあるという不都合を解消できる。このような不都合が生じる原因は、実空間上の第1の位置(点S)及び第2の位置(点G)をコンフィギュレーション空間へ写像するための逆運動学の解が複数存在し得ることによる。このような場合、第1の位置(点S)と第2の位置(点G)との間に第1の条件を満たす経路を探しても解を求めることができない。なお、図12に示すコンフィギュレーション空間は、J1〜J6の6自由度を有する場合を示している。
図13は、一つ以上の中間点qn,qn+1の計算を説明する説明図である。第1の位置(点S)から第2の位置(点G)へ至る経路上のn番目の中間点qnは、実空間の基準座標系に対するワーク座標系の相対座標として、または実空間の基準座標系に対するツール座標系の相対座標として、中間位置に関わる情報(x,y,z)と、中間姿勢に関わる情報(α,β,γ)とを有する。例えば、ワーク座標系においては、中間点は、第1の位置(点S)から第2の位置(点G)へ至る経路上の対象物Wの中間位置及び中間姿勢に関わる情報を有する。ここで、ワーク座標系における中間位置とは、中間点qnにおける対象物Wの座標位置を示し、中間姿勢とは、中間点qnにおける対象物Wの傾き(例えば、ロール角、ピッチ角、ヨー角)を示す。また、例えば、ツール座標系においては、中間点は、第1の位置(点S)から第2の位置(点G)へ至る経路上のロボット20の手先(例えば、エンドエフェクタ28)の中間位置及び中間姿勢に関わる情報を有する。ここで、ツール座標系における中間位置とは、中間点qnにおけるロボット20の手先(例えば、エンドエフェクタ28)の座標位置を示し、中間姿勢とは、中間点qnにおけるロボット20の手先(例えば、エンドエフェクタ28)の傾き(例えば、ロール角、ピッチ角、ヨー角)を示す。ワーク座標系またはツール座標系の中間位置と中間姿勢の情報は、変換行列を用いることによって、基準座標系の中間位置と中間姿勢として表現する事も可能である。また、ロボット20の手先(例えば、エンドエフェクタ28)の中間位置及び中間姿勢は、対象物Wの中間位置及び中間姿勢から計算により求めることができる。演算部15は、第1の位置(点S)と第2の位置(点G)との間を接続する一つ以上の中間点(qn,qn+1)であって、第1の条件に加えて、第2の条件を満たす一つ以上の中間点(qn,qn+1)を実空間内に計算する。コンフィギュレーション空間内に中間点を確率的に生成すると、実空間の第1の条件を満たさない中間点が生成される可能性が高い。このため、第1の条件を満たす中間点を実空間内で生成し、その生成された中間点が第2の条件をも満たしている場合に、これをコンフィギュレーション空間内の中間点として用いることにより、第1の条件及び第2の条件を満たす中間点を効率よく探索することができる。
演算部15は、例えば、第1の条件を満たすある一つの中間点qnの中間姿勢に関わる情報(α,β,γ)を変更することなく、中間位置に関わる情報(x,y,z)を変更することにより、第1の条件を満たすもう一つの中間点qn+1を実空間内に計算してもよい。このとき、中間点qn+1は、実空間の座標系を基準にした中間位置に関わる情報(x+a,y+b,z+c)と、中間姿勢に関わる情報(α,β,γ)とを有する。このような計算方法によれば、第1の条件を満たすある一つの中間点qnから、第1の条件を満たすもう一つの中間点qn+1を簡単な計算で求めることができる。演算部15は、例えば、x,y,zのそれぞれに乱数a,b,cを加算することにより、ある一つの中間点の中間位置に関わる情報(x,y,z)から、もう一つの中間点qn+1の中間位置に関わる情報(x+a,y+b,z+c)を計算してもよい。演算部15は、加算に替えて減算、除算、乗算、或いは関数演算を用いてもよい。なお、このようにして求めたもう一つの中間点qn+1が第2の条件を満たさない場合には、これを、第2の条件を満たす拘束空間へ射影してもよい。
演算部15は、第1の位置(点S)から一つ以上の中間点(qn,qn+1)を経由して第2の位置(点G)に至る経路を生成する。演算部15は、このようにして生成された経路を、外部インタフェース11を通じてロボット20に出力する。
図14は、中間点の生成処理のフローチャートの一例である。
まず、演算部15は、第1の位置(点S)の位置情報(例えば、初期位置の情報)及び姿勢情報(例えば、初期姿勢の情報)を経路情報に登録する(ステップS501)。ここで、経路情報は、第1の位置(点S)から一つ以上の中間点(qn,qn+1)を経由して第2の位置(点G)に至る経路の情報を意味する。
演算部15は、ステップS501において経路情報に登録された位置情報及び姿勢情報を有する点を注視点として設定する(ステップS502)。「注視点」とは、後述のステップS503で生成される中間点の一つ前の中間点と同義である。ステップS503で生成される中間点が、例えば、qn+1である場合には、中間点qnが注視点として設定される。また、ステップS503で生成される中間点が、例えば、q1である場合には、第1の位置(点S)が注視点として設定される。
演算部15は、注視点の位置情報(x,y,z)のx,y,zのそれぞれにa,b,cを加算し、位置情報(x+a,y+b,z+c)と姿勢情報(α,β,γ)とを有する中間点を生成する(ステップS503)。この姿勢情報(α,β,γ)は、注視点の姿勢情報(α,β,γ)と同じであるものとする。
演算部15は、ステップS503で生成された中間点が第1の条件に加えて第2の条件をも満たすようにその位置情報又は姿勢情報を補正する(ステップS504)。
演算部15は、ステップS504で補正された中間点について逆運動学計算を行い、中間点の姿勢を計算する(ステップS505)。
演算部15は、ステップS505における逆運動学計算が解を有するか否かを判定する(ステップS506)。
ステップS506の判定結果が「肯定判定」である場合には、演算部15は、ステップS502で設定される注視点とステップS503で生成される中間点との間の経路が第1の条件及び第2の条件を満たすか否かを判定する(ステップS507)。
ステップS507の判定結果が「肯定判定」である場合には、演算部15は、ステップS503で生成される中間点の位置情報及び姿勢情報を経路情報に登録する(ステップS508)。
ステップS508の登録処理の後に、演算部15は、ステップS503で生成される中間点の位置情報及び姿勢情報が、第2の位置(点G)の位置情報(例えば、目標位置の情報)及び姿勢情報(例えば、目標姿勢の情報)に一致するか否かを判定する(ステップS509)。ステップS509の判定結果が「否定判定」である場合には、第1の位置(点S)から第2の位置(点G)に至る経路上の中間点の生成が不足しているため、演算部15は、ステップS502の処理に戻る。
なお、ステップS506又はS507の判定結果が「否定判定」である場合には、演算部15は、ステップS503の処理に戻る。
ロボット20の効率的な経路計画を実現するために、演算部15は、中間点(qn,qn+1)を、第1の位置(点S)から第2の位置(点G)へ向かう方向に沿って計算してもよい。例えば、x,y,zのそれぞれにa,b,cを加算することにより、ある一つの中間点qnの中間位置に関わる情報(x,y,z)から、もう一つの中間点qn+1の中間位置に関わる情報(x+a,y+b,z+c)を計算する場合には、中間点qn+1が第2の位置(点G)へ向かうように、a,b,cの値を調整すればよい。このように、もう一つの中間点qn+1の中間位置が第2の位置(点G)へ向かうように、ある一つの中間点qnの中間位置に関わる情報を変更する演算処理を、本明細書では、「バイアス処理」と呼ぶ。
図15は、バイアス処理の一例を示す説明図である。ここでは、実施例3のポテンシャル法と同様に評価関数を用いる。この評価関数は、中間点からの第1の位置(点S)、第2の位置(点G)、及び障害物71,72までのそれぞれの距離に応じてポテンシャル値が変化する。例えば、第1の位置(点S)及び障害物71,72に斥力を設定し、第2の位置(点G)に引力を設定する。これにより、第1の位置(点S)又は障害物71,72からの距離が近いほど、評価関数のポテンシャル値は高くなり、第2の位置(点G)からの距離が近いほど評価関数のポテンシャル値は低くなる。演算部15は、このような評価関数を用いて、評価関数のポテンシャル値が低くなるように、バイアス処理を行う。これにより、障害物71,72から離れて第2の位置(点G)へ向かうように、バイアス処理を行うことができる。
図16は、バイアス処理の他の例を示す説明図である。この例では、障害物71,72の間の空間を任意の立体形状(例えば、立方体、直方体、球体など)に分割し、分割された立体形状を、第2の位置(点G)に向かう有向グラフ80で連結する。演算部15は、有向グラフ80の向きに沿って中間点qn+1が生成されるようにバイアス処理を行う。これにより、障害物71,72に干渉せずに第2の位置(点G)へ向かうように、バイアス処理を行うことができる。なお、立体形状の種類やサイズは必ずしも同一である必要はなく、障害物71,72の形状に適合するように様々な種類又はサイズの立体形状を組み合わせてもよい。
なお、説明の便宜上、図面上は、中間点の個数が二つの場合を図示しているが、中間点の個数は三つ以上でもよい。
以上のとおり、本発明の所定の実施形態において、演算装置10は、コンフィギュレーション空間全域から障害物領域Coだけでなく角度不適合領域Cpを除いた領域内でロボット20の経路を生成する。これにより、演算装置10は、ロボット20が対象物Wを初期姿勢から目標姿勢まで搬送するとき、障害物との干渉を回避しつつ、対象物Wの姿勢に関する条件を満たす経路でロボット20を動作させることができる。したがって、演算装置10は、ロボット20が初期位置から目標位置まで搬送した対象物Wを次の工程で円滑に使用させることができる。実施例1、2及び4において、演算装置10は、対象物Wの姿勢に関する条件を満たす中継位置を探索し、対象物Wを初期位置から中継位置を経由して目標位置に搬送する経路を生成する。実施例3及び4において、演算装置10は、ロボット20の周辺に存在する障害物に関する条件と対象物Wの姿勢に関する条件とを満たす所定の関数(評価関数やコスト関数等)を用いて、対象物Wを初期位置から目標位置に搬送する経路を生成する。
対象物Wの姿勢に関する条件は、ユーザが任意に設定又は変更可能である。これにより、演算装置10は、ユーザの要望に応じた経路を生成することができる。
記憶部12は、対象物Wの姿勢に関する条件の初期値を記憶しており、演算装置10は、この初期値を対象物Wの姿勢に関する条件として取得してもよい。これにより、演算装置10は、ロボット20及び対象物Wが位置し得る領域内の環境及びロボット20により初期位置から目標位置まで搬送される対象物Wの姿勢が満たすべき条件を満たす経路を生成することができる。
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
少なくとも一つのハードウェアプロセッサによって、
複数の可動軸を有するロボットが、対象物を第1の位置から第2の位置に搬送する際の前記第1の位置及び前記第2の位置を取得するステップと、
前記ロボットが前記対象物を前記第1の位置から前記第2の位置に搬送するときの、前記対象物の姿勢に関する第1の条件を取得するステップと、
前記ロボットが前記対象物を前記第1の位置から前記第2の位置に搬送する経路を生成するステップであって、当該経路の全体にわたり、前記対象物の姿勢が前記取得された第1の条件を満たす経路を生成するステップと、
前記生成された経路を出力するステップと、
を実行する経路出力方法。
(付記2)
少なくとも一つのハードウェアプロセッサを備え、
複数の可動軸を有するロボットが、対象物を第1の位置から第2の位置に搬送する際の経路を出力するシステムであって、
前記ハードウェアプロセッサは、
前記第1の位置及び前記第2の位置と、前記ロボットが前記対象物を前記第1の位置から前記第2の位置に搬送するときの、前記対象物の姿勢に関する条件と、を取得し、
前記ロボットが前記対象物を前記第1の位置から前記第2の位置に搬送する経路であって、当該経路の全体にわたり、前記対象物の姿勢が前記取得された条件を満たす経路を生成し、
前記生成された経路を外部へ出力する、経路出力システム。