(57)【要約】【課題】複数の部品Ｐを順番に運搬する場合において、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各部品Ｐを運搬するハンド２５の軌跡を適切に算出することを可能とする技術を提供する。【解決手段】運搬対象部品Ｐ(n)に対して運搬作業を実行するにあたって障害物となる部品Ｐの配置を示す障害物配置情報Ｉoに基づいて、障害物との衝突を回避しつつ複数の部品Ｐに対して順番に運搬作業を実行するハンド２５の動作がシミュレーションされて、ハンド２５の運搬軌道が算出される（軌道シミュレーション）。運搬作業によって生じる部品Ｐの配置の変化に応じて障害物配置情報Ｉoを更新しつつ、軌道シミュレーションが実行される。よって、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各部品Ｐを運搬するハンド２５の軌跡を適切に算出することができる。【選択図】図１１
2014100780.tif 000002
【特許請求の範囲】
【請求項１】
複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となる前記ワークの配置を示す障害物配置情報を記憶する記憶手段と、
前記障害物との衝突を回避しつつ前記複数のワークに対して順番に前記運搬作業を実行する前記把持機構の動作を前記障害物配置情報に基づいてシミュレーションして前記把持機構の運搬軌道を算出する軌道シミュレーションを、前記運搬作業によって生じる前記ワークの配置の変化に応じて前記障害物配置情報を更新しつつ実行する軌道演算手段と
を備えたことを特徴とする把持機構の軌道生成装置。
【請求項２】
前記軌道演算手段は、前記軌道シミュレーションにおける前記運搬作業の完了の度に、前記運搬作業により運搬された前記ワークの運搬後の配置を前記障害物配置情報に登録する請求項１に記載の把持機構の軌道生成装置。
【請求項３】
前記軌道演算手段は、前記軌道シミュレーションにおける前記各運搬作業の開始の前に運搬前の位置にある前記運搬対象ワーク以外の前記ワークの配置を前記障害物配置情報に登録する請求項１または２に記載の把持機構の軌道生成装置。
【請求項４】
前記軌道演算手段は、前記軌道シミュレーションにおける前記各運搬作業の開始の前に運搬前の前記運搬対象ワークの配置を前記障害物配置情報から削除する請求項３に記載の把持機構の軌道生成装置。
【請求項５】
複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となる前記ワークの配置を示す障害物配置情報に基づいて、前記障害物との衝突を回避しつつ前記複数のワークに対して順番に前記運搬作業を実行する前記把持機構の動作をシミュレーションして前記把持機構の運搬軌道を算出する軌道シミュレーションを、前記運搬作業によって生じる前記ワークの配置の変化に応じて前記障害物配置情報を更新しつつ実行する把持機構の軌道生成方法。
【請求項６】
複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となる前記ワークの配置を示す障害物配置情報を記憶する記憶手段、および
前記障害物との衝突を回避しつつ前記複数のワークに対して順番に前記運搬作業を実行する前記把持機構の動作を前記障害物配置情報に基づいてシミュレーションして前記把持機構の運搬軌道を算出する軌道シミュレーションを、前記運搬作業によって生じる前記ワークの配置の変化に応じて前記障害物配置情報を更新しつつ実行する軌道演算手段
としてコンピュータを機能させることを特徴とする把持機構の軌道生成プログラム。
【請求項７】
請求項６に記載された把持機構の軌道生成プログラムがコンピュータにより読み出し可能に記録されたことを特徴とする記録媒体。
【請求項８】
把持機構を用いてワークを運搬するロボットの制御をコンピュータに実行させるロボットプログラムを作成するロボットプログラム作成装置において、
複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となる前記ワークの配置を示す障害物配置情報を記憶する記憶手段と、
前記障害物との衝突を回避しつつ前記複数のワークに対して順番に前記運搬作業を実行する前記把持機構の動作を前記障害物配置情報に基づいてシミュレーションして前記把持機構の運搬軌道を算出する軌道シミュレーションを、前記運搬作業によって生じる前記ワークの配置の変化に応じて前記障害物配置情報を更新しつつ実行する軌道演算手段と、
前記軌道演算手段が算出した前記運搬軌道を前記把持機構が通るように、前記ロボットプログラムを作成するプログラム作成手段と
を備えたことを特徴とするロボットプログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、把持機構を用いてワークを運搬する技術に関し、特にワークの運搬のために把持機構を移動させる軌道を生成する技術に関する。
【背景技術】
【０００２】
従来、ワークに対して所定作業を実行するロボットが知られている。また、特許文献１、２等に記載のように、所定作業をワークに実行するために必要となるロボットの動作をシミュレーションにより求める技術も種々提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１３５２７８号公報
【特許文献２】特開２００２−２７３６７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ロボットが具備するハンド等の把持機構を用いて複数のワークを順番に運搬して、例えばこれらを組み立てるといった作業を実行することができる。この際、複数のワークを順番に運搬する把持機構の軌跡を算出できれば、例えばオフラインのコンピュータ等で把持機構の軌跡を生成して把持機構の制御に用いることができ好適である。
【０００５】
しかしながら、複数のワークを順番に運搬する場合、ワークの運搬に対して障害となる障害物の配置状況は、ワークの運搬の度に変化する。具体例としては、運搬対象となるワークの周囲に存在する他のワークを挙げることができる。つまり、運搬対象となるワークの運搬に対して、周囲のワークは障害物となり得る。しかも、ワークが運搬される度に、各ワークの配置状況、換言すれば障害物の配置状況が変化する。そこで、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各ワークを運搬する把持機構の軌跡を適切に算出する技術が望まれていた。
【０００６】
この発明は上記課題に鑑みなされたものであり、複数のワークを順番に運搬する場合において、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各ワークを運搬する把持機構の軌跡を適切に算出することを可能とする技術の提供を目的とする。
【課題を解決するための手段】
【０００７】
この発明にかかる把持機構の軌道生成装置は、上記目的を達成するために、複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となるワークの配置を示す障害物配置情報を記憶する記憶手段と、障害物との衝突を回避しつつ複数のワークに対して順番に運搬作業を実行する把持機構の動作を障害物配置情報に基づいてシミュレーションして把持機構の運搬軌道を算出する軌道シミュレーションを、運搬作業によって生じるワークの配置の変化に応じて障害物配置情報を更新しつつ実行する軌道演算手段とを備えたことを特徴とする。
【０００８】
この発明にかかる把持機構の軌道生成方法は、上記目的を達成するために、複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となるワークの配置を示す障害物配置情報に基づいて、障害物との衝突を回避しつつ複数のワークに対して順番に運搬作業を実行する把持機構の動作をシミュレーションして把持機構の運搬軌道を算出する軌道シミュレーションを、運搬作業によって生じるワークの配置の変化に応じて障害物配置情報を更新しつつ実行することを特徴とする。
【０００９】
この発明にかかる把持機構の軌道生成プログラムは、上記目的を達成するために、複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となるワークの配置を示す障害物配置情報を記憶する記憶手段、および障害物との衝突を回避しつつ複数のワークに対して順番に運搬作業を実行する把持機構の動作を障害物配置情報に基づいてシミュレーションして把持機構の運搬軌道を算出する軌道シミュレーションを、運搬作業によって生じるワークの配置の変化に応じて障害物配置情報を更新しつつ実行する軌道演算手段としてコンピュータを機能させることを特徴とする。
【００１０】
この発明にかかる記録媒体は、上記目的を達成するために、上記の把持機構の軌道生成プログラムがコンピュータにより読み出し可能に記録されたことを特徴としている。
【００１１】
この発明にかかるロボットプログラム作成装置は、上記目的を達成するために、把持機構を用いてワークを運搬するロボットの制御をコンピュータに実行させるロボットプログラムを作成するロボットプログラム作成装置において、複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を把持機構が実行するにあたって障害物となるワークの配置を示す障害物配置情報を記憶する記憶手段と、障害物との衝突を回避しつつ複数のワークに対して順番に運搬作業を実行する把持機構の動作を障害物配置情報に基づいてシミュレーションして把持機構の運搬軌道を算出する軌道シミュレーションを、運搬作業によって生じるワークの配置の変化に応じて障害物配置情報を更新しつつ実行する軌道演算手段と、軌道演算手段が算出した運搬軌道を把持機構が通るように、ロボットプログラムを作成するプログラム作成手段とを備えたことを特徴とする。
【００１２】
このように構成された発明（把持機構の軌道生成装置、把持機構の軌道生成方法、把持機構の軌道生成プログラム、記録媒体、ロボットプログラム作成装置）では、複数のワークのうち運搬対象となる運搬対象ワークを運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を実行する把持機構の運搬軌道が算出される。より詳しくは、運搬対象ワークに対して運搬作業を実行するにあたって障害物となるワークの配置を示す障害物配置情報に基づいて、障害物との衝突を回避しつつ複数のワークに対して順番に運搬作業を実行する把持機構の動作がシミュレーションされて、把持機構の運搬軌道が算出される（軌道シミュレーション）。ただし、上述したように、複数のワークを順番に運搬する場合においては、障害物の配置状況が変化する中で、把持機構の運搬軌道を求める必要がある。これに対して、この発明では、運搬作業によって生じるワークの配置の変化に応じて障害物配置情報を更新しつつ、軌道シミュレーションが実行されて、把持機構の運搬軌道が算出される。これによって、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各ワークを運搬する把持機構の軌跡を適切に算出することが可能となっている。
【００１３】
また、軌道演算手段は、軌道シミュレーションにおける運搬作業の完了の度に、運搬作業により運搬されたワークの運搬後の配置を障害物配置情報に登録するように、把持機構の軌道生成装置を構成しても良い。このような構成では、運搬作業によって運搬されたワーク配置の変化を障害物配置情報に的確に反映して、運搬作業による運搬後のワークとの衝突を確実に回避可能な把持機構の運搬軌道を適切に算出することができる。
【００１４】
また、軌道演算手段は、軌道シミュレーションにおける各運搬作業の開始の前に運搬前の位置にある運搬対象ワーク以外のワークの配置を障害物配置情報に登録するように、把持機構の軌道生成装置を構成しても良い。このような構成では、運搬後のワークのみならず運搬前のワークとの衝突も確実に回避可能な把持機構の運搬軌道を適切に算出することができる。
【００１５】
ちなみに、複数のワークに対して順番に運搬作業を行う構成で上記のように運搬前のワークの配置を障害物配置情報に登録する場合、軌道シミュレーションにおいて運搬作業の対象となる運搬前のワーク（運搬対象ワーク）は先のワークに対する運搬作業の開始前に障害物配置情報に登録されている。そこで、軌道シミュレーションにおいて運搬前のワークに対して運搬作業を開始するにあたっては、この運搬作業の対象となる運搬前のワーク（運搬対象ワーク）を障害物配置情報から外しておいても良い。具体的には、軌道演算手段は、軌道シミュレーションにおける各運搬作業の開始の前に運搬前の運搬対象ワークの配置を障害物配置情報から削除するように、把持機構の軌道生成装置を構成しても良い。これによって、運搬作業による運搬の前後で変化するワークの配置を的確に障害物配置情報に反映させつつ、把持機構の運搬軌道を算出することができる。
【発明の効果】
【００１６】
複数のワークを順番に運搬する場合において、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各ワークを運搬する把持機構の軌跡を適切に算出することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明により作成したロボットプログラムに基づいて制御可能なロボットの一例を模式的に示す斜視図である。
【図２】図１に示すロボットを制御する電気的構成を模式的に示すブロック線図である。
【図３】図１のロボットが備えるハンドの把持動作を模式的に示す図である。
【図４】部品の把持点とツールのＴＣＰの位置合わせの一例を模式的に示す図である。
【図５】ロボットプログラム作成装置の電気的構成の一例を模式的に示すブロック線図である。
【図６】ロボットプログラムを作成するフローチャートの一例を示す図である。
【図７】図６のフローチャートで実行される作業の一例を模式的に示す斜視図である。
【図８】図６に示す初期設定で実行される動作の一例を示すフローチャートである。
【図９】組立前後における基準点等のリストの一例を表で示す図である。
【図１０】障害物配置情報の一例を表として示す図である。
【図１１】図６に示す軌道シミュレーションで実行される動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
図１は、本発明により作成したロボットプログラムに基づいて制御可能なロボットの一例を模式的に示す斜視図である。なお、図１では、ロボット２を制御するコンピュータ３がロボット２の他に併記されている。図２は、図１に示すロボットを制御する電気的構成を模式的に示すブロック線図である。図１および以下に示す図では、鉛直方向をｚ軸方向とするｘｙｚ直交座標軸を適宜示すこととする。
【００１９】
図１に示すロボット２は、胴体部２１に２本のアーム２２を取り付けた概略構成を備えた双腕ロボットである。各アーム２２は、駆動モータＭ23に接続された肩関節２３を介して取り付けられている。したがって、駆動モータＭ23で肩関節２３を回転させて、アーム２２を動かすことができる。また、各アーム２２の先端には、手首関節２４を介してハンド２５が取り付けられている。この手首関節２４には駆動モータＭ24が接続されている。したがって、駆動モータＭ24で手首関節２４を回転させることで、ハンド２５の向きを変えることができる。さらに、ハンド２５には駆動モータＭ25が接続されている。したがって、駆動モータＭ25によってハンド２５を開閉させることができる。
【００２０】
このようなロボット２の動作は、コンピュータ３によって制御される。コンピュータ３は、ＣＰＵ(Central Processing Unit)やメモリーで構成された主制御部３１を備える。そして、主制御部３１は駆動モータＭ23〜Ｍ25を制御することで、ハンド２５で部品Ｐ（機械部品、電子部品）を掴んだり、部品Ｐを掴んだハンド２５を移動させたり、ハンド２５を回転させて部品Ｐの姿勢を変えたり、ハンド２５から部品Ｐを放したりといった基本動作を、ロボット２に実行させることができる。
【００２１】
特に、コンピュータ３には、ロボット２に所定手順を実行させるために作成されたロボットプログラム４がインストールされている。つまり、主制御部３１はロボットプログラム４に従って駆動モータＭ23〜Ｍ25を制御することで、ロボットプログラム４に規定された手順をロボット２に実行させる。具体的には、この実施形態で説明するロボットプログラム４は、複数の部品Ｐの組み立てをロボット２に実行させるものである。つまり、ハンド２５は、ロボットプログラム４に従って、部品Ｐを初期位置で把持して組立位置まで移動させる運搬作業を複数の部品Ｐそれぞれについて実行して、複数の部品Ｐを組み立てる。なお、このような部品Ｐの組み立てを実行するためには、ハンド２５によって部品Ｐを的確に把持する必要がある。そこで、ロボットプログラム４は、ハンド２５に対して設定されたＴＣＰ(Tool Center Point)を基準に、ハンド２５に部品Ｐの把持動作を実行させる。
【００２２】
図３は、図１のロボットが備えるハンドの把持動作を模式的に示す図である。図３では、初期位置にある部品Ｐへ向けて移動するハンド２５が破線で示され、初期位置で部品Ｐを把持するハンド２５が実線で示されている。図３に示すように、ハンド２５に対しては、仮想的な点であるＴＣＰ６が設定されている。ハンド２５とＴＣＰ６との位置関係は固定されており、ハンド２５はＴＣＰ６を伴って移動する。そして、部品ＰとＴＣＰ６とが所定の位置関係を満たす状態で、ハンド２５を作動させる（閉じる）ことで、部品Ｐをハンド２５で把持することができる。具体的には、例えば図４に示すように、部品Ｐに対して設定された適当な代表点とＴＣＰ６とが一致した状態で、部品Ｐをハンド２５で把持できるように構成することができる。
【００２３】
図４は、部品の把持点とツールのＴＣＰの位置合わせの一例を模式的に示す図である。同図において、「移動」の欄ではハンド２５が初期位置の部品Ｐへ向けて移動する様子が示され、「把持」の欄ではハンド２５が初期位置で部品Ｐを把持する様子が示されている。同図に示す例では、ハンド２５のみならず、部品Ｐに対してもＴＣＰ７（代表点）が付されている。この部品側ＴＣＰ７は、部品Ｐの把持態様に適した位置に設定することができる。そして、部品Ｐまでハンド２５を移動させて、部品側ＴＣＰ７にハンド側ＴＣＰ６を一致させた状態でハンド２５を作動させることで、部品Ｐをハンド２５で把持することができる。この際、部品Ｐの把持態様のバリエーションに応じて複数の部品側ＴＣＰ７を設定しておき、部品Ｐの把持態様に応じて選択された一の部品側ＴＣＰ７を基準に、部品Ｐとハンド２５の位置合わせを行なうように構成することもできる。
【００２４】
このようなハンド２５の動作は、上述のとおりロボットプログラム４に基づいて制御される。続いては、このロボットプログラム４を作成する構成および動作の一例について説明する。図５は、ロボットプログラム作成装置の電気的構成の一例を模式的に示すブロック線図である。なお、図５では、ロボットプログラム作成装置１００の他に、ロボットプログラム作成用の作成プログラム２００を記録した記録媒体３００およびシミュレータ４００が併記されている。
【００２５】
ロボットプログラム作成装置１００は、ＣＰＵやメモリーで構成された主制御部１１０を具備するコンピュータである。さらに、ロボットプログラム作成装置１００は、外部とのデータの入出力を制御する入出力部１２０、メモリーやハードディスクで構成された記憶部１３０、キーボードやマウスで構成された入力機器１４０、およびディスプレイ１５０を具備する。なお、ディスプレイ１５０としては、タッチパネル型のように入力機能を有するものを用いても良い。
【００２６】
かかる構成を具備するロボットプログラム作成装置１００は、記憶部１３０に読み込んだ作成プログラム２００に基づいてロボットプログラム４を作成する。作成プログラム２００は、例えばロボットプログラム作成装置１００により読み取りが可能な記録媒体３００に記録された状態で供給される。このような記録媒体３００としては、例えば、ＣＤ(Compact Disc)、ＤＶＤ(Digital Versatile Disc)、ＵＳＢ(Universal Serial Bus)メモリー等の種々のものが挙げられる。
【００２７】
ちなみに、ロボットプログラム４の制御対象であるハンド２５は、複数の部品Ｐのうち運搬対象となる運搬対象部品を運搬前の位置（初期位置）で掴んで運搬後の位置（組立位置）まで運搬する運搬作業を、複数の部品Ｐに対して（組立順序で）順番に実行する。この運搬作業は、障害物との衝突（具体的には、ハンド２５およびハンド２５が把持する運搬対象部品と障害物との衝突）を回避しつつ実行される必要がある。
【００２８】
そこで、ロボットプログラム作成装置１００では、運搬作業をハンド２５が実行するにあたって障害物となる部品Ｐの配置が障害物配置情報Ｉoとして記憶部１３０に記憶される。そして、障害物との衝突を回避しつつ複数の部品Ｐに対して順番に運搬作業を実行するハンド２５の動作が、障害物配置情報Ｉoに基づいてシミュレーションされて、ハンド２５の運搬軌道が算出される（軌道シミュレーション）。特に、軌道シミュレーションは、当該軌道シミュレーションにおいて仮想的に実行される運搬作業によって生じる部品Ｐの配置の変化に応じて障害物配置情報Ｉoを更新しつつ実行される。そして、ロボットプログラム作成装置１００は、こうして求めた運搬軌道をハンド２５が通るように、ロボットプログラム４を作成する。具体的には、作成プログラム２００には、図６に示すフローチャートが組み込まれており、ロボットプログラム作成装置１００は、同フローチャートを実行することでロボットプログラム４を作成する。
【００２９】
図６は、ロボットプログラムを作成するフローチャートの一例を示す図である。図７は、図６のフローチャートで実行される作業の一例を模式的に示す斜視図である。図７では、平面視において略台形状の部品Ｐaの上に平面視において略矩形状の部品Ｐbを重ねて、２本のネジ状の部品Ｐc、Ｐdで部品Ｐa、Ｐbを相互に固定することで、部品Ｐ（Ｐa〜Ｐd）を組み立てる例が示されており、複数の部品Ｐa〜Ｐdの組立前における状態が「組立前」の欄に示され、複数の部品Ｐa〜Ｐdの組立後における状態が「組立後」の欄に示されている。
【００３０】
図６のフローチャートは、初期設定を行うステップＳ１００、当該初期設定に基づいて軌道シミュレーションを行ってハンド２５の軌道を生成するステップＳ２００、および当該軌道をハンド２５が通過するようにロボットプログラム４を作成するステップＳ３００で構成される。これらの詳細は次のとおりである。
【００３１】
図８は、図６に示す初期設定で実行される動作の一例を示すフローチャートである。ロボットプログラム４の作成が開始すると、ステップＳ１０１において、組立対象である複数の部品Ｐa〜ＰdのＣＡＤ(computer aided design)データが、外部の三次元ＣＡＤツールから入出力部１２０を介して記憶部１３０に読み込まれる。続くステップＳ１０２では、主制御部１１０が、複数の部品Ｐa〜Ｐdの組立後における状態を示す組み図を、読み込んだＣＡＤデータに基づいて仮想空間上に再現する。
【００３２】
この際、組み図の作成は、外部の三次元ＣＡＤツールで行なっても良いし、三次元ＣＡＤソフトを用いてロボットプログラム作成装置１００で行なっても良い。前者の例では、ロボットプログラム作成装置１００は、外部の三次元ＣＡＤツールで作成された組み図をそのまま再現すれば良い。後者の例では、ロボットプログラム作成装置１００は、外部の三次元ＣＡＤツールが読み込んだ個々の部品ＰのＣＡＤデータに基づいて組み図を作成して、これを再現すれば良い。
【００３３】
ステップＳ１０３では、作成された組み図に基づいて、組立後における各部品Ｐa〜Ｐdの運搬後基準点８a〜８dが記憶部１３０に設定される。具体的には図７の「組立後」の欄に示すように、これら運搬後基準点８（８a〜８d）は、組立位置にある運搬後の部品Ｐ（Ｐa〜Ｐd）を把持するハンド２５のＴＣＰ６の位置に設定され、三次元の仮想空間における点（ｘ，ｙ，ｚ）として表される。この運搬後基準点８は、運搬後における部品Ｐの部品側ＴＣＰ７に相当する。
【００３４】
また、ステップＳ１０３では、運搬後の部品Ｐ（Ｐa〜Ｐd）を把持するハンド２５の姿勢（Ｒx、Ｒy、Ｒz）が設定される。さらに、ステップＳ１０３では、組立位置に部品Ｐ（Ｐa〜Ｐd）を運搬するにあたって、ハンド２５のＴＣＰ６が運搬後基準点８（８a〜８d）に接近する際のアプローチ方向（Ｄx、Ｄy、Ｄz）が設定される。ここで、ハンド２５の姿勢（Ｒx、Ｒy、Ｒz）は、ハンド２５の姿勢をオイラー角あるいはロール・ピッチ・ヨー角で示したものである。また、ハンド２５のアプローチ方向（Ｄx、Ｄy、Ｄz）は、ハンド２５のアプローチ方向を三次元ベクトルで示したものである。
【００３５】
これら運搬後基準点８、ハンド２５の姿勢（Ｒx、Ｒy、Ｒz）およびアプローチ方向（Ｄx、Ｄy、Ｄz）等の各値の設定は、ユーザが仮想空間上で再現された組み図をディスプレイ１５０で確認しながら、入力機器１４０等を操作することで実行できる。特に運搬後基準点８の設定態様については、次のように構成しても良い。
【００３６】
すなわち、ディスプレイ１５０に表示された運搬後の部品Ｐの適当な箇所に、マウスで操作可能なカーソルを合わせることでユーザが指定した位置に、運搬後基準点８を設定するように構成しても良い。あるいは、タッチパネル型のディスプレイ１５０を用いた場合は、ディスプレイ１５０を押すことでユーザが指定した位置に、運搬後基準点８を設定するように構成しても良い。これらの構成例では、部品Ｐa〜Ｐdの状態を仮想空間上で表示するディスプレイ１５０上でユーザにより指定された位置が、運搬後基準点８として設定される。なお、ユーザの指定位置が適当でない場合は、その旨をディスプレイ１５０に表示して指定位置の変更をユーザに促したり、主制御部１１０がユーザの指定位置から修正した位置を運搬後基準点８として設定したりするように、構成することもできる。
【００３７】
続くステップＳ１０４では、主制御部１１０が、複数の部品Ｐa〜Ｐdの組立前における状態を示す初期配置図をＣＡＤデータに基づいて仮想空間上に再現する。具体例を挙げて説明すると、実作業空間における組立前の部品Ｐa〜Ｐbをカメラで撮像した結果から、部品Ｐa〜Ｐbの初期位置を示す初期位置情報を予め取得しておき、個々の部品ＰのＣＡＤデータを初期位置情報の示す位置に配置することで、初期配置図が作成される。
【００３８】
ステップＳ１０５では、作成した初期配置図に基づいて、組立前における各部品Ｐa〜Ｐdの運搬前基準点９a〜９dが記憶部１３０に設定される。具体的には図７の「組立前」の欄に示すように、これら運搬前基準点９（９a〜９d）は、初期位置にある運搬前の部品Ｐ（Ｐa〜Ｐd）を把持するハンド２５のＴＣＰ６の位置に設定され、三次元の仮想空間における点（ｘ，ｙ，ｚ）として表される。この運搬前基準点９は、運搬前における部品Ｐの部品側ＴＣＰ７に相当する。
【００３９】
この際、運搬前基準点９a〜９dの設定は、運搬後基準点８a〜８dの設定と同様にして、ディスプレイ１５０上でのユーザの指定に基づいて実行することができる。あるいは、運搬前基準点９a〜９dの設定は、初期配置図と運搬後基準点８a〜８dの設定結果に基づいて主制御部１１０が演算により自動的に実行しても良い。つまり、運搬前基準点９a〜９dと部品Ｐa〜Ｐdの位置関係と、運搬後基準点８a〜８dと部品Ｐa〜Ｐdの位置関係とは互いに同一である。したがって、先のステップＳ１０３で設定済みの運搬後基準点８a〜８dと部品Ｐa〜Ｐdの位置関係を参照することで、初期配置図における各部品Ｐa〜Ｐdの位置から、運搬前基準点９a〜９dを演算によって自動的に求められる。
【００４０】
また、ステップＳ１０５では、運搬前の部品Ｐ（Ｐa〜Ｐd）を把持するハンド２５の姿勢（Ｒx、Ｒy、Ｒz）が設定される。さらに、ステップＳ１０５では、初期位置にある部品Ｐ（Ｐa〜Ｐd）を把持しに行くために、ハンド２５のＴＣＰ６が運搬前基準点９（９a〜９d）に接近する際のアプローチ方向（Ｄx、Ｄy、Ｄz）が設定される。これらハンド２５の姿勢（Ｒx、Ｒy、Ｒz）およびアプローチ方向（Ｄx、Ｄy、Ｄz）等の各値の設定は、ユーザが仮想空間上で再現された組み図をディスプレイ１５０で確認しながら、入力機器１４０等を操作することで実行できる。
【００４１】
ステップＳ１０６では、先のステップＳ１０３、Ｓ１０５での設定結果に基づいて、主制御部１１０が組立前後の基準点８、９等のリスト（図９）を作成して、記憶部１３０に記憶する。ここで、図９は、組立前後における基準点等のリストの一例を表で示す図である。図９に示すように、組立前と組立後それぞれにおける基準点、姿勢およびアプローチ方向が、部品Ｐa〜Ｐdのそれぞれについて求められる。
【００４２】
ステップＳ１０７では、軌道演算部１１１は、部品Ｐa〜Ｐdを組立順序ｎでラベルする。この実施形態で示す例では、部品Ｐa、Ｐb、Ｐc、Ｐdの順番に運搬作業が実行されて組立が実行されるため、部品Ｐa〜Ｐdの順番に１〜４の組立順序ｎがラベルされる。これに対応して以下では、部品Ｐa〜ＰdをそれぞれＰ(1)〜Ｐ(4)と適宜表記する。ステップＳ１０８では、軌道演算部１１１は、最初に運搬作業が実行される部品Ｐaを認識して、部品Ｐaを除く部品Ｐb〜Ｐdの運搬前の配置を障害物配置情報Ｉoに登録する（図１０）。
【００４３】
図１０は、障害物配置情報の一例を表として示す図である。同図に示すように、障害物配置情報Ｉoとしては、ハンド２５が運搬対象部品に対する運搬作業を実行するにあたって障害物となる部品の配置が登録されており、より具体的には、障害物となる部品の位置、姿勢および高さが部品の配置を表すものとして登録されている。ちなみに、以後に実行される軌道シミュレーションにおいて最初に運搬対象部品となるのは部品Ｐaであるため、ステップＳ１０８では、運搬対象部品Ｐa以外の部品Ｐb〜Ｐdが障害物配置情報Ｉoに登録される。また、図１０には表れていないが、部品Ｐ以外に障害物が存在する場合には、これらの配置も障害物配置情報Ｉoに併せて登録される。こうして、初期設定が終了すると、主制御部１１０に構成された軌道演算部１１１が、図６に示したステップＳ２００の軌道シミュレーションを実行する。
【００４４】
図１１は、図６に示す軌道シミュレーションで実行される動作の一例を示すフローチャートである。この軌道シミュレーションは、複数の部品Ｐに対して順番に運搬作業を実行するハンド２５の動作を仮想空間でシミュレーションして、ハンド２５の軌道を算出するものである。まず、ステップＳ２０１では、組立順序ｎに「１」が代入される。続いて、運搬前の初期位置にある部品Ｐ(n)のＴＣＰ９aにハンド２５のＴＣＰ６を移動させることで、ハンド２５を部品Ｐ(n)の把持点に移動させて（ステップＳ２０２）、ハンド２５に部品Ｐ(n)を把持させる（ステップＳ２０３）。
【００４５】
ステップＳ２０４では、部品Ｐ(n)を把持するハンド２５が、部品Ｐ(n)を運搬前の初期位置から運搬後の組立位置まで運搬するための運搬軌道が算出される。特にこの実施形態では、障害物との衝突を回避しつつハンド２５が部品Ｐ(n)の運搬作業を実行可能な運搬軌道を求めるために、ハンド２５の運搬軌道は、障害物配置情報Ｉoに基づき算出される。具体的には、障害物配置情報Ｉoに登録された障害物との衝突を回避しつつ、ハンド２５のＴＣＰ６が運搬対象である部品Ｐ(n)の運搬前基準点９から運搬後基準点８まで移動するといった条件を満たすように、ハンド２５の運搬軌道が算出される。このような軌道算出は、出発地（運搬前基準点９）から目的地（運搬後基準点）までの経路を探索する経路探索技術を用いて行うことができる。
【００４６】
この際、ステップＳ２０４では、さらに次の条件
・運搬対象である部品Ｐ(n)について設定された組立前のアプローチ方向から、ハンド２５のＴＣＰ６が当該部品Ｐ(n)の運搬前基準点９へ接近する
・ハンド２５のＴＣＰ６が運搬対象である部品Ｐ(n)の運搬前基準点９にあるとき、ハンド２５が当該部品Ｐ(n)について設定された運搬前の姿勢を取る
・運搬対象である部品Ｐ(n)について設定された組立後のアプローチ方向から、ハンド２５のＴＣＰ６が当該部品Ｐ(n)の運搬後基準点８へ接近する
・ハンド２５のＴＣＰ６が運搬対象である部品Ｐ(n)の運搬後基準点８にあるとき、ハンド２５が当該部品Ｐ(n)について設定された運搬後の姿勢を取る
を満たすように、ハンド２５の軌道を算出しても良い。このような条件も満たすようにハンド２５の軌道シミュレーションを行うことで、より適切な軌道を算出することが可能となる。
【００４７】
ちなみに、ステップＳ２０４では、ハンド２５の軌道の候補を複数求めても良い。この場合、複数の候補のうちから例えば運搬時間が最短となる候補をハンド２５の軌道として選出することができ、より適切なハンド２５の軌道を算出することができる。続くステップＳ２０５では、運搬後の組立位置にある部品Ｐ(n)のＴＣＰ８aにハンド２５のＴＣＰ６を移動させることで、ハンド２５を部品Ｐ(n)の運搬後の組立位置に移動させる。このように、ステップＳ２０３〜２０５を実行することで、部品Ｐ(n)の運搬作業を実行するハンド２５の動作がシミュレーションされて、ハンド２５の運搬軌道が算出される。
【００４８】
ステップＳ２０６では、部品Ｐ(n)に実行された運搬作業によって生じる部品Ｐ(n)の配置の変化を反映させるために、障害物配置情報Ｉoが更新される。つまり、当該運搬作業により運搬された部品Ｐ(n)の運搬後の配置が障害物配置情報Ｉoに追加される。さらに、次の運搬作業の運搬対象部品Ｐ(n+1)（ここでは、部品Ｐ(b)）の配置が障害物配置情報から削除される。これによって、既に運搬作業が完了した部品Ｐ(n)の運搬後の配置と、次に実行する運搬作業の運搬対象部品Ｐ(n+1)以外の運搬前の部品Ｐ（Ｐc、Ｐd）が障害物配置情報Ｉoに登録されることとなる。
【００４９】
ステップＳ２０７では、全ての部品Ｐ(1)〜Ｐ(4)について軌道算出が完了したかが判断される。完了していない場合（ステップＳ２０７で「ＮＯ」の場合）には、ステップＳ２０８に進んで組立順序ｎを「１」だけインクリメントした後にステップＳ２０２に戻って、全ての部品Ｐ(1)〜Ｐ(4)について軌道が算出されるまで、ステップＳ２０２〜Ｓ２０８が繰り返し実行される。一方、完了している場合（ステップＳ２０７で「ＹＥＳ」の場合）には、軌道シミュレーションが終了する。こうして、部品Ｐ(1)〜Ｐ(4)、すなわち部品Ｐa〜Ｐdそれぞれについて、ハンド２５の運搬軌道が算出される。
【００５０】
なお、ロボットプログラム作成装置１００は、上述した軌道シミュレーションをノンストップで実行して、算出したハンド２５の運搬軌道を出力することができる。具体的には、主制御部１１０は、軌道シミュレーションを開始するための開始ボタンをディスプレイ１５０に表示する。そして、初期設定（ステップＳ１００）が完了した後にユーザが開始ボタンを選択（マウスによるクリックあるいはタッチパネルをタッチ）すると、ロボットプログラム作成装置１００が軌道シミュレーション（ステップＳ２００）を開始する。開始された軌道シミュレーションは、全ての部品Ｐa〜Ｐdについて運搬軌道を算出し終えるまで中断することなく実行される。こうして、軌道シミュレーションは、ユーザによる操作を要することなく、その開始から終了までをノンストップで実行することができる。
【００５１】
軌道シミュレーションが終了すると、軌道演算部１１１は、主制御部１１０に構成されたプログラム作成部１１２に、算出した運搬軌道を出力する。そして、プログラム作成部１１２が図６に示したステップＳ３００を実行する。具体的には、プログラム作成部１１２は、部品Ｐa〜Ｐdそれぞれについて生成された軌道を通ってハンド２５が当該部品Ｐa〜Ｐdを運搬するようにロボット２を制御する運搬プログラムを、部品Ｐa〜Ｐd毎に生成する。
【００５２】
ちなみに、実際の組立作業では、部品Ｐを運搬する以外の目的で、部品Ｐの姿勢等を調整する必要が生じることがある。例えばネジ等の部品は、ネジ止めを行う方向に合わせてその姿勢を調整する必要がある。このような場合には、運搬途中において部品Ｐの姿勢を調整するといったことが行われる。そこで、プログラム作成部１１２は、このような姿勢調整を行う姿勢調整プログラムも作成する。
【００５３】
さらに、実際の作業空間では、組立前において部品Ｐが決められた初期位置から多少ずれて配置されることがある。このような場合、初期位置からずれた部品Ｐを適切に把持するためには、部品Ｐa〜Ｐdの実際の位置をカメラで認識した結果に基づいて、ハンド２５の位置を補正するといったことが行われる。そこで、プログラム作成部１１２は、このような位置補正を行う位置補正プログラムも作成する。そして、プログラム作成部１１２は、運搬プログラム、姿勢調整プログラムおよび位置補正プログラムを組み合わせて、ロボットプログラム４を作成する。こうして、ロボットプログラム４の作成が終了する。
【００５４】
この際、ロボットプログラム作成装置１００が作成したロボットプログラム４は、シミュレータ４００によって検証することができる。具体的には、シミュレータ４００は、パーソナルコンピュータ等で構成されており、ロボットプログラム４に従ってロボット２を動作させたシミュレーションの結果を出力することができる。したがって、ユーザは、このシミュレーション結果に基づいて、ロボットプログラム４の適否を判断できる。
【００５５】
以上に説明したように、この実施形態では、複数の部品Ｐのうち運搬対象となる運搬対象部品Ｐ(n)を運搬前の位置で掴んで運搬後の位置まで運搬する運搬作業を実行するハンド２５の運搬軌道が算出される。より詳しくは、運搬対象部品Ｐ(n)に対して運搬作業を実行するにあたって障害物となる部品Ｐの配置を示す障害物配置情報Ｉoに基づいて、障害物との衝突を回避しつつ複数の部品Ｐに対して順番に運搬作業を実行するハンド２５の動作がシミュレーションされて、ハンド２５の運搬軌道が算出される（軌道シミュレーション）。ただし、複数の部品Ｐを順番に運搬する場合においては、障害物の配置状況が変化する中で、ハンド２５の運搬軌道を求める必要がある。これに対して、この実施形態では、運搬作業によって生じる部品Ｐの配置の変化に応じて障害物配置情報Ｉoを更新しつつ、軌道シミュレーションが実行されて、ハンド２５の運搬軌道が算出される。これによって、障害物の配置状況が変化する中で、障害物との衝突を回避しつつ各部品Ｐを運搬するハンド２５の軌跡を適切に算出することが可能となっている。
【００５６】
また、この実施形態では、軌道シミュレーションにおける運搬作業の完了の度に、運搬作業により運搬された部品Ｐ(n)の運搬後の配置が障害物配置情報Ｉoに登録される。このような構成では、運搬作業によって運搬された部品配置の変化を障害物配置情報Ｉoに的確に反映して、運搬作業による運搬後の部品Ｐとの衝突を確実に回避可能なハンド２５の運搬軌道を適切に算出することができる。
【００５７】
また、この実施形態では、軌道シミュレーションにおける各運搬作業の開始の前に運搬前の位置にある運搬対象部品Ｐ(n)以外の部品Ｐの配置が、障害物配置情報Ｉoに登録される。このような構成では、運搬後の部品Ｐのみならず運搬前の部品Ｐとの衝突も確実に回避可能なハンド２５の運搬軌道を適切に算出することができる。
【００５８】
ちなみに、複数の部品Ｐに対して順番に運搬作業を行う構成で上記のように運搬前の部品Ｐの配置を障害物配置情報Ｉoに登録する場合、軌道シミュレーションにおいて運搬作業の対象となる運搬前の部品Ｐ(n)（運搬対象部品）は先の部品Ｐに対する運搬作業の開始前に障害物配置情報Ｉoに登録されている。そこで、この実施形態では、軌道シミュレーションにおいて運搬前の部品Ｐ(n)に対して運搬作業を開始するにあたっては、この運搬作業の対象となる運搬前の部品Ｐ(n)（運搬対象部品）が障害物配置情報Ｉoから外される。すなわち、軌道シミュレーションにおける各運搬作業の開始の前に運搬前の運搬対象部品Ｐ(n)の配置が障害物配置情報Ｉoから削除される。これによって、運搬作業による運搬の前後で変化する部品Ｐの配置を的確に障害物配置情報Ｉoに反映させつつ、ハンド２５の運搬軌道を算出することができる。
【００５９】
このように、上記実施形態では、ロボットプログラム作成装置１００が本発明の「把持機構の軌道生成装置」あるいは「ロボットプログラム作成装置」の一例に相当し、作成プログラム２００が本発明の「把持機構の軌道生成プログラム」の一例に相当し、記録媒体３００が本発明の「記録媒体」の一例に相当する。また、記憶部１３０が本発明の「記憶手段」の一例に相当し、軌道演算部１１１が本発明の「軌道演算手段」の一例に相当し、プログラム作成部１１２が本発明の「プログラム作成手段」の一例に相当し、障害物配置情報Ｉoが本発明の「障害物配置情報」の一例に相当し、部品Ｐが本発明の「ワーク」の一例に相当し、ハンド２５が本発明の「把持機構」の一例に相当し、ステップＳ２００が本発明の「軌道シミュレーション」の一例に相当し、ロボットプログラム作成装置１００が本発明の「コンピュータ」の一例に相当する。
【００６０】
なお、本発明は上記した実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したもの以外に種々の変更を行うことが可能である。そこで、障害物配置情報Ｉoに登録する内容を上記のものから適宜変更しても構わない。例えば上記実施形態の軌道シミュレーションでは、運搬対象部品Ｐ(n)以外の全部品Ｐが障害物配置情報Ｉoに登録されていた。しかしながら、運搬対象部品Ｐ(n)の運搬作業において衝突を起こす可能性が低い部品Ｐ、具体的には所定の閾値よりも高さの低い部品Ｐなどについては、障害物配置情報Ｉoに登録しないように構成することもできる。
【００６１】
また、障害物配置情報Ｉoを更新するタイミングや、更新する内容についても、適宜変更することができる。
【００６２】
また、上記実施系チアでは、ユーザによる開始ボタンの選択をきっかけに軌道シミュレーションが開始すると説明した。しかしながら、ロボットプログラム作成装置１００の主制御部１００が初期設定の完了を検知して自動的に軌道シミュレーションを開始するように構成しても良い。
【００６３】
また、上記実施形態では、ハンド２５のＴＣＰ６が運搬対象である部品Ｐ(n)の運搬前基準点９から運搬後基準点８まで移動するように、ハンド２５の運搬軌道が算出されていた。しかしながら、ハンド２５の運搬軌道を算出するための具体的手法はこれに限られず、適宜変更しても構わない。
【００６４】
また、軌道演算部１１１が生成した軌道をディスプレイ１５０（軌道表示部）に表示するように、ロボットプログラム作成装置１００を構成しても良い。このような構成では、ユーザは、生成された軌道をディスプレイ１５０で確認しながらその適否を判断でき、ユーザにとっての操作性が向上する。さらに、この際、ディスプレイ１５０には、軌道を移動するハンド２５の様子を動画で表示しても構わない。
【００６５】
また、上記実施形態においてハンド２５の軌道生成のために設定された条件についても適宜変更可能である。具体的には、上記条件のうち、アプローチ方向やハンド２５の姿勢に関する条件については、適宜削除しても構わない。あるいは、上記条件以外の条件をさらに満たすように、ハンド２５の軌道を生成することも可能である。
【００６６】
また、ロボットプログラム作成装置１００に対して、各種の機能を追加するような変形も可能である。具体例を挙げれば、上記のシミュレータ４００が有するシミュレーション機能を、ロボットプログラム作成装置１００に持たせても良い。
【００６７】
また、上記実施形態で示した例では、ハンド２５が有する複数のフィンガーの略中心にＴＣＰ６が設定されていた。しかしながら、ＴＣＰ６の設定箇所は、適宜変更しても構わない。
【００６８】
また、上記実施形態では、運搬前・運搬後基準点９、８、ハンド２５の姿勢（Ｒx、Ｒy、Ｒz）およびアプローチ方向（Ｄx、Ｄy、Ｄz）等の設定は、ユーザによって実行されていた。しかしながら、これらの設定を例えば主制御部１１０が自動的に行うように構成しても良い。
【００６９】
また、ハンド２５により組み立てる部品Ｐの形状、個数および組立態様等が上記の例に限られないことは、言うまでもない。
【００７０】
また、上記実施形態では、把持機構の一例として、対象物（部品Ｐ）を掴むことで把持動作を実行するハンド２５が挙げられていた。しかしながら、把持機構の具体的構成はこれに限られず、例えば対象物を吸着して把持するものであっても良い。
【産業上の利用可能性】
【００７１】
この発明は、ワークを運搬する把持機構の軌道を求める技術全般に対して適用可能であり、特に、部品をロボットのハンドで運搬して組み立てる技術に好適に適用可能である。
【符号の説明】
【００７２】
１００…ロボットプログラム作成装置
１１０…主制御部
１１１…軌道演算部
１１２…プログラム作成部
１２０…入出力部
１３０…記憶部
１４０…入力機器
１５０…ディスプレイ
２００…作成プログラム
３００…記録媒体
２５…ハンド（把持機構）
４…ロボットプログラム
６…ＴＣＰ
７…ＴＣＰ
８a，８b，８c，８d…運搬後基準点
９a，９b，９c，９d…運搬前基準点
Ｉo…障害物配置情報
Ｐa，Ｐb，Ｐc，Ｐd，Ｐ…部品（ワーク）
Ｐ(1)，Ｐ(2)，Ｐ(3)，Ｐ(4)，Ｐ(n)…部品（ワーク）
【図１】
2014100780.tif 000003
【図２】
2014100780.tif 000004
【図３】
2014100780.tif 000005
【図４】
2014100780.tif 000006
【図５】
2014100780.tif 000007
【図６】
2014100780.tif 000008
【図７】
2014100780.tif 000009
【図８】
2014100780.tif 000010
【図９】
2014100780.tif 000011
【図１０】
2014100780.tif 000012
【図１１】
2014100780.tif 000013