(57)【要約】【課題】対象物を安定してロボットに把持させることができるロボット制御装置を提供すること。【解決手段】対象物の表面の三次元形状を表す三次元点群のうち前記対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した前記評価値に基づき前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出し、算出した前記把持部の位置及び姿勢に基づいて前記対象物を前記把持部に把持させる、ロボット制御装置。【選択図】図３
2018051704.tif 000002
【特許請求の範囲】
【請求項１】
対象物の表面の三次元形状を表す三次元点群のうち前記対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した前記評価値に基づき前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出し、算出した前記把持部の位置及び姿勢に基づいて前記対象物を前記把持部に把持させる、
ロボット制御装置。
【請求項２】
前記領域は、前記把持部に対応付けられた１以上の仮想的な点のそれぞれに基づく領域である、
請求項１に記載のロボット制御装置。
【請求項３】
前記部分点群の密度と、前記部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて前記評価値を算出し、算出した前記評価値に基づき前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出する、
請求項１又は２に記載のロボット制御装置。
【請求項４】
前記部分点群に基づいて前記対象物の前記把持部による把持の安定性を表す第１評価値、前記密度、前記値のそれぞれを算出し、算出した前記第１評価値に前記密度及び前記値に基づく重みを乗算した第２評価値を前記評価値として算出し、算出した当該評価値に基づいて、前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出する、
請求項３に記載のロボット制御装置。
【請求項５】
請求項１から４のうちいずれか一項に記載のロボット制御装置に制御される、
ロボット。
【請求項６】
請求項１から４のうちいずれか一項に記載のロボット制御装置と、
前記ロボット制御装置に制御される前記ロボットと、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット制御装置、ロボット、及びロボットシステムに関する。
【背景技術】
【０００２】
ロボットに物体を把持させる動作を含む作業をロボットに行わせる技術の研究や開発が行われている。
【０００３】
これに関し、ロボット装置が具備する複数の腕部の各々について、対象物を把持する把持姿勢もしくは把持姿勢に至るまでの遷移姿勢を取る容易性を定量評価した把持容易性の指標を算出し、各腕部について算出された把持容易性の指標の値に基づいて、実際に対象物を把持するのに用いる腕部を選定するロボット装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１１１７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなロボット装置では、三次元計測機を用いた対象物の三次元位置測定における誤差（不確かさ）が考慮されておらず、対象物の安定した把持を行えない場合があった。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、対象物の表面の三次元形状を表す三次元点群のうち前記対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した前記評価値に基づき前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出し、算出した前記把持部の位置及び姿勢に基づいて前記対象物を前記把持部に把持させる、ロボット制御装置である。
この構成により、ロボット制御装置は、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢を算出し、算出した把持部の位置及び姿勢に基づいて対象物を把持部に把持させる。これにより、ロボット制御装置は、対象物を安定してロボットに把持させることができる。
【０００７】
また、本発明の他の態様は、ロボット制御装置において、前記領域は、前記把持部に対応付けられた１以上の仮想的な点のそれぞれに基づく領域である、構成が用いられてもよい。
この構成により、ロボット制御装置では、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域は、把持部に対応付けられた１以上の仮想的な点のそれぞれに基づく領域である。これにより、ロボット制御装置は、把持部に対応付けられた１以上の仮想的な点のそれぞれに基づく領域に基づいて、対象物を安定してロボットに把持させることができる。
【０００８】
また、本発明の他の態様は、ロボット制御装置において、前記部分点群の密度と、前記部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて前記評価値を算出し、算出した前記評価値に基づき前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出する、構成が用いられてもよい。
この構成により、ロボット制御装置は、部分点群の密度と、当該部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて評価値を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢を算出する。これにより、ロボット制御装置は、部分点群の密度と、当該部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて算出した評価値に基づいて、対象物を安定してロボットに把持させることができる。
【０００９】
また、本発明の他の態様は、ロボット制御装置において、前記部分点群に基づいて前記対象物の前記把持部による把持の安定性を表す第１評価値、前記密度、前記値のそれぞれを算出し、算出した前記第１評価値に前記密度及び前記値に基づく重みを乗算した第２評価値を前記評価値として算出し、算出した当該評価値に基づいて、前記対象物を前記把持部に把持させる際の前記把持部の位置及び姿勢を算出する、構成が用いられてもよい。
この構成により、ロボット制御装置は、部分点群に基づいて対象物の把持部による把持の安定性を表す第１評価値、部分点群の密度、部分点群を構成する点のばらつきを表す値のそれぞれを算出し、算出した第１評価値に当該密度及び当該値に基づく重みを乗算した第２評価値を評価値として算出し、算出した当該評価値に基づいて、対象物を把持部に把持させる際の把持部の位置及び姿勢を算出する。これにより、ロボット制御装置は、第１評価値に部分点群の密度及び部分点群を構成する点のばらつきを表す値に基づく重みを乗算した第２評価値に基づいて、対象物を安定してロボットに把持させることができる。
【００１０】
また、本発明の他の態様は、上記に記載のロボット制御装置に制御される、ロボットである。
この構成により、ロボットは、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値が算出され、算出された評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢が算出され、算出された把持部の位置及び姿勢に基づいて対象物を把持部によって把持する。これにより、ロボットは、対象物を安定して把持することができる。
【００１１】
また、本発明の他の態様は、上記に記載のロボット制御装置と、前記ロボット制御装置に制御される前記ロボットと、を備えるロボットシステムである。
この構成により、ロボットシステムは、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢を算出し、算出した把持部の位置及び姿勢に基づいて対象物を把持部に把持させる。これにより、ロボットシステムは、対象物を安定してロボットに把持させることができる。
【００１２】
以上により、ロボット制御装置、及びロボットシステムは、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢を算出し、算出した把持部の位置及び姿勢に基づいて対象物を把持部に把持させる。これにより、ロボット制御装置、及びロボットシステムは、対象物を安定してロボットに把持させることができる。
また、ロボットは、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域に含まれる部分点群に基づいて評価値が算出され、算出された評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢が算出され、算出された把持部の位置及び姿勢に基づいて対象物を把持部によって把持する。これにより、ロボットは、対象物を安定して把持することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。
【図５】仮想空間ＶＲ内に配置された全周点群の一例を示す図である。
【図６】図５に示した仮想空間ＶＲ内において、ステップＳ１５０において選択された仮想把持位置に仮想把持部ＶＨの位置が一致している様子の一例を示す図である。
【図７】図６に示した仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離がステップＳ１７０において選択された指部間距離と一致している様子の一例を示す図である。
【図８】ステップＳ２５０において算出された把持位置姿勢に把持部Ｈの位置及び姿勢が一致した場合の対象物Ｏの部位であって指部Ｈ１及び指部Ｈ２のそれぞれが対象物Ｏに接触する部位の一例を示す図である。
【発明を実施するための形態】
【００１４】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。
【００１５】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、１以上の撮像部と、ロボット２０と、ロボット制御装置３０を備える。以下では、一例として、ロボットシステム１が４台の撮像部である撮像部１１〜撮像部１４を備える場合について説明する。ただし、図１では、図を簡略化するため、撮像部１１のみを示し、撮像部１２〜撮像部１４のそれぞれを省略している。
【００１６】
撮像部１１〜撮像部１４のそれぞれは、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えたステレオカメラである。この一例において、撮像部１１〜撮像部１４のそれぞれは、図１に示した作業台ＴＢの上面に載置された対象物Ｏを互いに異なる方向からステレオ撮像可能な位置に設置される。撮像部１１〜撮像部１４のそれぞれが対象物Ｏをステレオ撮像する方向は、撮像部１１〜撮像部１４のそれぞれによって対象物Ｏの外から見える表面の一部又は全部がステレオ撮像される方向であれば如何なる方向であってもよい。当該表面は、作業台ＴＢと接面している対象物Ｏの下面を除いた対象物Ｏの表面のことである。以下では、一例として、撮像部１１〜撮像部１４のそれぞれが対象物Ｏをステレオ撮像する方向が、撮像部１１〜撮像部１４のそれぞれによって対象物Ｏの外から見える表面の全部がステレオ撮像される方向である場合について説明する。この場合、作業台ＴＢの上面に載置された対象物Ｏの外から見える表面は、撮像部１１〜撮像部１４のそれぞれによって余すところなくステレオ撮像される。換言すると、作業台ＴＢの上面に載置された対象物Ｏの外から見える表面のうちの一部は、如何なる一部であっても撮像部１１〜撮像部１４のそれぞれがステレオ撮像した撮像画像のいずれかに含まれる。
【００１７】
撮像部１１〜撮像部１４のそれぞれは、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。なお、撮像部１１〜撮像部１４のうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００１８】
ロボット２０は、アームＡと、アームＡを支持する支持台Ｂを備える単腕ロボットである。単腕ロボットは、この一例におけるアームＡのような１本のアーム（腕）を備えるロボットである。なお、ロボット２０は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、２本以上のアーム（例えば、２本以上のアームＡ）を備えるロボットである。なお、複腕ロボットのうち、２本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット２０は、２本のアームを備える双腕ロボットであってもよく、３本以上のアーム（例えば、３本以上のアームＡ）を備える複腕ロボットであってもよい。また、ロボット２０は、スカラロボット、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。直交座標ロボットは、例えば、ガントリロボットである。
【００１９】
アームＡは、エンドエフェクターＥと、マニピュレーターＭを備える。
エンドエフェクターＥは、この一例において、物体を把持可能な指部Ｈ１及び指部Ｈ２を有する把持部Ｈを備えるエンドエフェクターである。指部Ｈ１と指部Ｈ２とは、把持部Ｈが有する面のうちマニピュレーターＭ側の面と反対側の面に設けられている。また、指部Ｈ１と指部Ｈ２とは、当該面に沿って互いに近づく方向又は遠ざかる方向へ移動可能に設けられている。これにより、把持部Ｈは、指部Ｈ１と指部Ｈ２との間の距離を変化させることにより、物体を把持すること（すなわち、掴むこと）ができる。この一例において、把持部Ｈの予め決められた位置には、把持部Ｈとともに動く三次元局所座標系である把持部座標系が対応付けられている。このため、把持部Ｈの位置は、把持部座標系の原点のロボット座標系ＲＣにおける位置によって表される。また、把持部Ｈの姿勢は、把持部座標系における各座標軸のロボット座標系ＲＣにおける方向によって表される。把持部Ｈの予め決められた位置は、例えば、把持部Ｈの重心の位置である。なお、把持部Ｈの予め決められた位置は、これに代えて、把持部Ｈに応じた他の位置であってもよい。なお、エンドエフェクターＥは、把持部Ｈを備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
【００２０】
エンドエフェクターＥは、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、エンドエフェクターＥは、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、エンドエフェクターＥは、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２１】
マニピュレーターＭは、６つの関節を備える。また、当該６つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターＭを備えるアームＡは、６軸垂直多関節型のアームである。アームＡは、支持台Ｂと、エンドエフェクターＥと、マニピュレーターＭと、マニピュレーターＭが備える６つの関節それぞれのアクチュエーターとによる連携した動作によって６軸の自由度の動作を行う。なお、アームＡは、５軸以下の自由度で動作する構成であってもよく、７軸以上の自由度で動作する構成であってもよい。
【００２２】
マニピュレーターＭが備える６つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、マニピュレーターＭを動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、マニピュレーターＭが備える６つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２３】
ロボット制御装置３０は、この一例において、ロボット２０を制御する（動作させる）コントローラーである。ロボット制御装置３０は、ロボット２０を動作させ、ロボット２０に所定の作業を行わせる。
【００２４】
なお、ロボットシステム１が１台の撮像部のみを備える場合、当該撮像部は、作業台ＴＢの上面に載置された対象物Ｏを複数の方向から撮像可能な移動機構を備える。この場合、ロボット制御装置３０は、当該移動機構を制御して当該撮像部を移動させ、複数の方向から対象物Ｏを当該撮像部にステレオ撮像させる。
【００２５】
＜ロボットが行う所定の作業の概要＞
以下、ロボット２０が行う所定の作業の概要について説明する。
【００２６】
この一例において、ロボット２０が作業可能な領域である作業領域には、前述した作業台ＴＢが配置されている。また、作業台ＴＢの上面には、対象物Ｏが載置されている。作業台ＴＢは、例えば、テーブル等の台である。なお、作業台ＴＢは、テーブルに代えて、床面や棚等の対象物Ｏを載置可能な他の物体であってもよい。対象物Ｏは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図１では、図の簡略化のため、対象物Ｏを、エンドエフェクターＥにより把持可能な程度の大きさを有する直方体形状の物体として表している。なお、対象物Ｏは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、対象物Ｏの形状は、直方体形状に代えて、他の形状であってもよい。
【００２７】
ロボット２０は、アームＡを動作させ、対象物Ｏを把持し、把持した対象物Ｏを図示しない給材領域に載置する作業を所定の作業として行う。なお、所定の作業は、これに代えて、対象物Ｏを把持する動作を含む作業であれば如何なる作業であってもよい。
【００２８】
＜ロボット制御装置がロボットに所定の作業を行わせる処理の概要＞
以下、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の概要について説明する。
【００２９】
ロボット制御装置３０は、撮像部１１〜撮像部１４のそれぞれに対象物Ｏをステレオ撮像させる。ロボット制御装置３０は、撮像部１１によりステレオ撮像された撮像画像を撮像部１１から第１撮像画像として取得する。また、ロボット制御装置３０は、撮像部１２によりステレオ撮像された撮像画像を撮像部１２から第２撮像画像として取得する。また、ロボット制御装置３０は、撮像部１３によりステレオ撮像された撮像画像を撮像部１３から第３撮像画像として取得する。また、ロボット制御装置３０は、撮像部１４によりステレオ撮像された撮像画像を撮像部１４から第４撮像画像として取得する。
【００３０】
ロボット制御装置３０は、取得した第１撮像画像〜第４撮像画像に基づいて、当該第１撮像画像〜第４撮像画像のそれぞれに含まれる対象物Ｏの三次元形状を表す三次元点群を生成する。より具体的には、ロボット制御装置３０は、第１撮像画像〜第４撮像画像に基づいて、第１撮像画像〜第４撮像画像のそれぞれに含まれる対象物Ｏの外から見える表面の各点の三次元位置（三次元座標）を検出する。ロボット制御装置３０は、検出した当該三次元位置に基づいて当該表面の三次元形状を表す点群である三次元点群のそれぞれを生成する。すなわち、各三次元点群を構成する各点は、三次元位置を示す。当該三次元位置は、ワールド座標系ＷＣにおける三次元位置であってもよく、ロボット座標系ＲＣにおける三次元位置であってもよく、他の三次元座標系における三次元位置であってもよい。以下では、一例として、ロボット制御装置３０が第１撮像画像〜第４撮像画像のそれぞれに基づいて、第１撮像画像〜第４撮像画像のそれぞれに含まれる対象物Ｏの外から見える表面の各点のロボット座標系ＲＣにおける三次元位置を検出する場合について説明する。なお、ロボット制御装置３０が第１撮像画像〜第４撮像画像のそれぞれから三次元点群を生成する方法は、既知の方法であってもよく、これから開発される方法であってもよい。
【００３１】
ロボット制御装置３０は、生成した４つの三次元点群に基づいて、作業台ＴＢの上面に載置された対象物Ｏの外から見える表面全部の形状を表す三次元点群である全周点群を生成する。互いに異なる一部であって当該表面の一部の形状を表す４つの三次元点群に基づいて、当該表面全部の形状を表す三次元点群を生成する方法は、既知の方法であってもよく、これから開発される方法であってもよい。
【００３２】
ここで、ロボット制御装置３０と異なるロボット制御装置（例えば、従来のロボット制御装置）は、例えば、生成した全周点群が表す対象物Ｏの形状に応じて、把持部Ｈに対象物Ｏを把持させる際の把持部Ｈの位置及び姿勢を算出し、算出した当該位置及び当該姿勢と把持部Ｈの位置及び姿勢を一致させてから対象物Ｏを把持部Ｈに把持させることができる。しかし、対象物Ｏの撮像条件、対象物Ｏの材質等によって撮像部１１〜撮像部１４のそれぞれによりステレオ撮像された第１撮像画像〜第４撮像画像のそれぞれに含まれる対象物Ｏの撮像状態に起因する誤差や、４つの三次元点群に基づいて全周点群を生成する際の誤差等により、全周点群は、対象物Ｏの外から見える表面の三次元形状を精度よく表していない場合がある。このような場合、当該ロボット制御装置は、対象物Ｏの安定した把持をロボット２０に行わせることができないことがあった。対象物Ｏの把持が不安定な場合、把持部Ｈと把持部Ｈにより把持された対象物Ｏとの相対的な位置関係は、例えば、ロボット２０が把持部Ｈにより対象物Ｏを把持してから対象物Ｏを給材領域に載置するまでの間に、ロボット２０の動作に起因する振動等によって変化してしまう場合がある。その結果、当該ロボット制御装置は、ロボット２０に所定の作業を精度よく行わせることができない場合がある。
【００３３】
そこで、この一例におけるロボット制御装置３０は、対象物Ｏの安定した把持をロボット２０に行わせるため、生成した全周点群のうち対象物Ｏを把持するロボット２０の把持部Ｈに対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出し、算出した評価値に基づき対象物Ｏを把持部Ｈに把持させる際の把持部Ｈの位置及び姿勢を算出し、算出した把持部Ｈの位置及び姿勢に基づいて対象物Ｏを把持部Ｈに把持させる。これにより、ロボット制御装置３０は、対象物Ｏを安定してロボット２０に把持させることができる。ここで、対象物Ｏを把持部Ｈに把持させる際の把持部Ｈのある位置及び姿勢の評価値は、当該位置及び当該姿勢に把持部Ｈの位置及び姿勢が一致した場合における把持部Ｈによる対象物Ｏの把持が安定している度合いを表す値である。当該評価値は、高い値であるほど、当該場合においてロボット２０が安定して対象物Ｏを把持することができることを表している。
【００３４】
以下では、ロボット制御装置３０がロボット２０に所定の作業を行う処理のうち、ロボット制御装置３０が生成した全周点群のうち対象物Ｏを把持するロボット２０の把持部Ｈに対応付けられた１以上の領域に含まれる部分点群に基づいて評価値を算出する処理と、評価値に基づき対象物Ｏを把持部Ｈに把持させる際の把持部Ｈの位置及び姿勢を算出する処理とについて詳しく説明する。
【００３５】
＜ロボット制御装置のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。
【００３６】
ロボット制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。また、ロボット制御装置３０は、通信部３４を介して撮像部１１、撮像部１２、撮像部１３、撮像部１４、ロボット２０のそれぞれと通信を行う。
【００３７】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報、各種プログラム、各種画像等を格納する。
【００３８】
入力受付部３３は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部３３は、これらに代えて、表示部３５と一体に構成されたタッチパネルであってもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００３９】
＜ロボット制御装置の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。
【００４０】
ロボット制御装置３０は、記憶部３２と、制御部３６を備える。
【００４１】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、撮像制御部４０と、画像取得部４２と、三次元点群生成部４４と、評価値算出部４６と、把持位置姿勢算出部４８と、ロボット制御部５０を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００４２】
撮像制御部４０は、撮像部１１が撮像可能な範囲を撮像部１１にステレオ撮像させる。また、撮像制御部４０は、撮像部１２が撮像可能な範囲を撮像部１２にステレオ撮像させる。また、撮像制御部４０は、撮像部１３が撮像可能な範囲を撮像部１３にステレオ撮像させる。また、撮像制御部４０は、撮像部１４が撮像可能な範囲を撮像部１４にステレオ撮像させる。
【００４３】
画像取得部４２は、撮像部１１がステレオ撮像した撮像画像を撮像部１１から第１撮像画像として取得する。また、画像取得部４２は、撮像部１２がステレオ撮像した撮像画像を撮像部１２から第２撮像画像として取得する。また、画像取得部４２は、撮像部１３がステレオ撮像した撮像画像を撮像部１３から第３撮像画像として取得する。また、画像取得部４２は、撮像部１４がステレオ撮像した撮像画像を撮像部１４から第４撮像画像として取得する。
【００４４】
三次元点群生成部４４は、画像取得部４２が取得した第１撮像画像に基づいて、第１撮像画像に含まれる対象物Ｏの三次元点群を生成する。また、三次元点群生成部４４は、画像取得部４２が取得した第２撮像画像に基づいて、第２撮像画像に含まれる対象物Ｏの三次元点群を生成する。また、三次元点群生成部４４は、画像取得部４２が取得した第３撮像画像に基づいて、第３撮像画像に含まれる対象物Ｏの三次元点群を生成する。また、三次元点群生成部４４は、画像取得部４２が取得した第４撮像画像に基づいて、第４撮像画像に含まれる対象物Ｏの三次元点群を生成する。また、三次元点群生成部４４は、第１撮像画像〜第４撮像画像のそれぞれに基づいて生成された４つの三次元点群に基づいて、前述の全周点群を生成する。
【００４５】
評価値算出部４６は、三次元点群生成部４４が生成した全周点群に基づく評価値を算出する。
把持位置姿勢算出部４８は、評価値算出部４６が算出した評価値に基づいて、把持部Ｈに対象物Ｏを把持させる際の把持部Ｈの位置及び姿勢である把持位置姿勢を算出する。
ロボット制御部５０は、把持位置姿勢算出部４８が算出した把持位置姿勢に基づいてロボット２０を動作させ、ロボット２０に所定の作業を行わせる。
【００４６】
＜ロボット制御装置がロボットに所定の作業を行わせる処理＞
以下、図４を参照し、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理について説明する。図４は、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。
【００４７】
撮像制御部４０は、撮像部１１〜撮像部１４のそれぞれに対象物Ｏをステレオ撮像させる（ステップＳ１１０）。具体的には、撮像制御部４０は、撮像部１１が撮像可能な範囲を撮像部１１に撮像させる。また、撮像制御部４０は、撮像部１２が撮像可能な範囲を撮像部１２に撮像させる。また、撮像制御部４０は、撮像部１３が撮像可能な範囲を撮像部１３に撮像させる。また、撮像制御部４０は、撮像部１４が撮像可能な範囲を撮像部１４に撮像させる。
【００４８】
次に、画像取得部４２は、ステップＳ１１０において撮像部１１〜撮像部１４のそれぞれがステレオ撮像した撮像画像を撮像部１１〜撮像部１４のそれぞれから取得する（ステップＳ１２０）。具体的には、画像取得部４２は、撮像部１１がステレオ撮像した撮像画像を撮像部１１から第１撮像画像として取得する。また、画像取得部４２は、撮像部１２がステレオ撮像した撮像画像を撮像部１２から第２撮像画像として取得する。また、画像取得部４２は、撮像部１３がステレオ撮像した撮像画像を撮像部１３から第３撮像画像として取得する。また、画像取得部４２は、撮像部１４がステレオ撮像した撮像画像を撮像部１４から第４撮像画像として取得する。
【００４９】
次に、三次元点群生成部４４は、ステップＳ１２０において画像取得部４２が取得した第１撮像画像〜第４撮像画像のそれぞれに基づいて、前述の全周点群を生成する（ステップＳ１４０）。次に、評価値算出部４６は、記憶部３２の記憶領域内に予め生成された仮想空間ＶＲに、ステップＳ１４０において生成された全周点群を配置する（ステップＳ１４３）。この際、評価値算出部４６は、全周点群を構成する各点を、当該各点のロボット座標系ＲＣにおける三次元位置に対応する三次元位置であって仮想空間ＶＲ内の三次元位置に配置する。なお、仮想空間ＶＲ内における三次元位置と、ロボット座標系ＲＣにおける三次元位置とは、キャリブレーションにより予め対応付けられている。
【００５０】
ここで、図５を参照し、仮想空間ＶＲ内に配置された全周点群について説明する。図５は、仮想空間ＶＲ内に配置された全周点群の一例を示す図である。図５に示した全周点群ＶＯは、仮想空間ＶＲ内に配置された全周点群の一例である。仮想空間ＶＲ内に配置された全周点群ＶＯを構成する各点の位置は、図５に示した仮想空間座標系ＶＣにおける座標によって表される。なお、図５では、図を簡略化するため、全周点群のうちの対象物Ｏの上面の形状を表す部分点群を省略してある。
【００５１】
次に、評価値算出部４６は、記憶部３２に予め記憶された把持部情報を記憶部３２から読み出す。把持部情報は、把持部Ｈの形状や大きさ等を示す情報である。評価値算出部４６は、読み出した把持部情報に基づいて仮想的な把持部Ｈである仮想把持部ＶＨを生成する。評価値算出部４６は、生成した仮想把持部ＶＨを仮想空間ＶＲ内における所定位置に配置する（ステップＳ１４５）。この際、評価値算出部４６は、仮想把持部ＶＨの姿勢を所定姿勢と一致させる。仮想空間ＶＲ内における所定位置及び所定姿勢は、仮想空間ＶＲ内における如何なる位置及び姿勢であってもよい。
【００５２】
次に、評価値算出部４６は、仮想空間ＶＲ内において仮想把持部ＶＨの位置を一致させる目標となる１以上の位置である仮想把持位置を特定する（ステップＳ１４７）。ここで、ステップＳ１４７の処理について説明する。仮想把持部ＶＨの予め決められた位置には、仮想把持部ＶＨとともに動く三次元局所座標系である仮想把持部座標系ＨＣが対応付けられている。このため、仮想把持部ＶＨの位置は、仮想把持部座標系ＨＣの原点の仮想空間座標系ＶＣにおける位置によって表される。仮想把持部座標系ＨＣは、前述の把持部座標系に対応する三次元座標系である。このため、仮想把持部ＶＨの予め決められた位置は、把持部Ｈの重心の位置に対応する位置であり、この一例において、仮想把持部ＶＨの重心の位置である。
【００５３】
評価値算出部４６は、仮想把持部ＶＨが有する仮想指部ＶＨ１及び仮想指部ＶＨ２それぞれの位置と、全周点群とに基づいて、仮想空間ＶＲ内において以下に示す所定の領域条件を満たす領域である把持部配置可能領域を特定する。仮想指部ＶＨ１は、把持部Ｈが有する指部Ｈ１に対応する仮想的な指部Ｈ１のことである。また、仮想指部ＶＨ２は、把持部Ｈが有する指部Ｈ２に対応する仮想的な指部Ｈ２のことである。
【００５４】
領域条件は、仮想把持部ＶＨを配置した場合において、仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離を近づけることにより仮想把持部ＶＨが全周点群を仮想的に挟んで掴むこと（挟んで把持すること）が可能な領域であることである。
【００５５】
評価値算出部４６は、上記の領域条件に基づいて特定した把持部配置可能領域を以下に示す所定の分割条件に基づいて複数の分割領域に分割する。
【００５６】
分割条件は、各分割領域の大きさ及び形状が同じであることである。
【００５７】
以下では、一例として、各分割領域の形状が立方体形状である場合について説明する。なお、分割条件は、これに代えて、複数の分割領域のうちの一部又は全部の形状及び大きさが互いに異なること等の他の条件であってもよい。
【００５８】
評価値算出部４６は、分割領域を仮想的に分割している直線同士の交点それぞれを、複数の仮想把持位置として特定する。なお、評価値算出部４６は、他の方法によって仮想把持位置を特定する構成であってもよい。例えば、評価値算出部４６は、ユーザーから受け付けた操作に基づいて、当該操作によって指定された位置であって仮想空間ＶＲ内における１以上の位置を仮想把持位置として特定する構成であってもよい。
【００５９】
次に、評価値算出部４６は、ステップＳ１４７において特定した１以上の仮想把持位置のそれぞれ毎に、ステップＳ１５５〜ステップＳ２４０の処理を繰り返し行う（ステップＳ１５０）。
【００６０】
評価値算出部４６は、記憶部３２に予め記憶された仮想把持姿勢情報を記憶部３２から読み出す。仮想把持姿勢情報は、１以上の仮想把持姿勢のそれぞれを示す情報である。仮想把持姿勢は、各仮想把持位置において仮想把持部ＶＨが取り得る姿勢の中からユーザーが選択した１以上の姿勢のそれぞれである。仮想把持姿勢は、仮想把持部座標系ＨＣにおける各座標軸の仮想空間座標系ＶＣにおける方向によって表される。当該方向は、仮想空間座標系におけるＵ軸、Ｖ軸、Ｗ軸のそれぞれの座標によって表される。当該Ｕ軸は、仮想把持部座標系ＨＣを仮想空間座標系ＶＣにおけるＸ軸周りに回転させた場合の回転角を表す座標軸である。また、当該Ｖ軸は、仮想把持部座標系ＨＣを仮想空間座標系ＶＣにおけるＹ軸周りに回転させた場合の回転角を表す座標軸である。また、当該Ｗ軸は、仮想把持部座標系ＨＣを仮想空間座標系ＶＣにおけるＺ軸周りに回転させた場合の回転角を表す座標軸である。評価値算出部４６は、記憶部３２から読み出した仮想把持姿勢情報が示す１以上の仮想把持姿勢のそれぞれ毎に、ステップＳ１６０〜ステップＳ２４０の処理を繰り返し行う（ステップＳ１５５）。
【００６１】
次に、評価値算出部４６は、仮想空間ＶＲ内において仮想把持部ＶＨを移動させ、仮想把持部ＶＨの位置を、ステップＳ１５０において選択された仮想把持位置に一致させるとともに、仮想把持部ＶＨの姿勢を、ステップＳ１５５において選択された仮想把持姿勢に一致させる（ステップＳ１６０）。ここで、図６を参照し、ステップＳ１６０の処理について説明する。
【００６２】
図６は、図５に示した仮想空間ＶＲ内において、ステップＳ１５０において選択された仮想把持位置に仮想把持部ＶＨの位置が一致している様子の一例を示す図である。図６に示した仮想把持部座標系ＨＣの原点の仮想空間座標系ＶＣにおける位置は、ステップＳ１５０において選択された仮想把持位置の一例である。また、図６において二点鎖線によって示した２つの長方形はそれぞれ、仮想指部ＶＨ１と仮想指部ＶＨ２とのそれぞれを表している。前述した通り、仮想把持位置に仮想把持部ＶＨの位置が一致している場合、仮想把持部ＶＨは、仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離を近づけることにより、全周点群を掴むこと（把持すること）ができる。図６に示した例では、仮想指部ＶＨ１を矢印Ａ１が示す方向へ移動させるとともに、仮想指部ＶＨ２を矢印Ａ２が示す方向へ移動させることにより、仮想指部ＶＨ１と仮想指部ＶＨ２との両方が全周点群の一部に接触する。すなわち、図６に示した仮想把持位置に仮想把持部ＶＨの位置を一致させた場合、仮想把持部ＶＨは、仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離を近づけることにより、全周点群を掴んで把持することができる。前述の通り、全周点群は、作業台ＴＢの上面に載置された対象物Ｏの外から見える表面全部の形状を表す三次元点群である。すなわち、仮想把持部ＶＨが全周点群を掴んで把持することができるということは、仮想空間ＶＲ内において、仮想把持部ＶＨが仮想的な対象物Ｏを掴んで把持することが可能であることを意味している。ここで、矢印Ａ１が示す方向は、矢印Ａ２が示す方向と逆の方向であり、仮想指部ＶＨ１が仮想指部ＶＨ２に近づく方向である。また、矢印Ａ２が示す方向は、矢印Ａ１が示す方向と逆の方向であり、仮想指部ＶＨ２が仮想指部ＶＨ１に近づく方向である。また、図６に示した仮想把持部座標系ＨＣにおける各座標軸の仮想空間座標系ＶＣにおける方向は、ステップＳ１５５において選択された仮想把持姿勢の一例を表している。
【００６３】
ステップＳ１６０の処理が行われた後、評価値算出部４６は、予め決められた１以上の指部間距離のそれぞれ毎に、ステップＳ１８０〜ステップＳ２３０の処理を繰り返し行う（ステップＳ１７０）。ここで、指部間距離は、予め決められた１以上の距離であって仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離を一致させる目標となる距離である。
【００６４】
評価値算出部４６は、仮想指部ＶＨ１を図６に示した矢印Ａ１が示す方向に移動させるとともに、仮想指部ＶＨ２を図６に示した矢印Ａ２が示す方向に移動させることにより、仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離をステップＳ１７０において選択された指部間距離と一致させる（ステップＳ１８０）。
【００６５】
次に、評価値算出部４６は、仮想指部ＶＨ１の輪郭のうち全周点群と接触する可能性のある部分の輪郭の形状を表す１以上の仮想的な点を第１接触点候補として当該輪郭上に生成するとともに、仮想指部ＶＨ２の輪郭のうち全周点群と接触する可能性のある部分の輪郭の形状を表す１以上の仮想的な点を第２接触点候補として当該輪郭上に生成する（ステップＳ１９０）。第１接触点候補、第２接触点候補のそれぞれは、把持部に対応付けられた１以上の仮想的な点の一例である。
【００６６】
ここで、図７を参照し、ステップＳ１８０〜ステップＳ１９０の処理について説明する。
【００６７】
図７は、図６に示した仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離がステップＳ１７０において選択された指部間距離と一致している様子の一例を示す図である。図７に示した仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離は、ステップＳ１７０において選択された指部間距離の一例である。
【００６８】
ステップＳ１８０において仮想指部ＶＨ１と仮想指部ＶＨ２との間の距離をステップＳ１７０において選択された指部間距離と一致させた後、評価値算出部４６は、ユーザーから予め受け付けた操作に基づいて第１接触点候補と第２接触点候補とを生成する。図７に示した７つの第１接触点候補Ｐ１のそれぞれは、評価値算出部４６が生成した第１接触点候補の一例である。また、図７に示した７つの第２接触点候補Ｐ２のそれぞれは、評価値算出部４６が生成した第２接触点候補の一例である。なお、評価値算出部４６は、ユーザーから予め受け付けた操作に基づいて第１接触点候補と第２接触点候補とを生成する構成に代えて、記憶部３２に予め記憶された把持部情報と、全周点群の形状とに基づいて第１接触点候補及び第２接触点候補を生成する構成であってもよい。例えば、評価値算出部４６は、仮想指部ＶＨ１の輪郭の形状を表す所定数の点を第１接触点候補として生成するとともに、仮想指部ＶＨ２の輪郭の形状を表す所定数の点を第２接触点候補として生成する構成であってもよい。
【００６９】
ステップＳ１９０の処理が行われた後、評価値算出部４６は、仮想指部ＶＨ１、仮想指部ＶＨ２のそれぞれ毎に、ステップＳ１９５〜ステップＳ２３０の処理を繰り返し行う（ステップＳ１９３）。
【００７０】
以下ではまず、ステップＳ１９３において仮想指部ＶＨ１が選択された場合について説明する。評価値算出部４６は、ステップＳ１９０において生成された第１接触点候補のそれぞれ毎に、ステップＳ２００〜ステップＳ２３０の処理を繰り返し行う（ステップＳ１９５）。
【００７１】
評価値算出部４６は、ステップＳ１９５において選択された第１接触点候補のレンチを算出する（ステップＳ２００）。レンチは、指部から対象物に対し作用可能な力とモーメントをベクトルで表したものである。ここで、ステップＳ１９３において仮想指部ＶＨ１が選択された場合のステップＳ２００の処理について説明する。
【００７２】
以下、ステップＳ１９３において仮想指部ＶＨ１が選択された場合におけるステップＳ２００〜ステップＳ２３０の処理において評価値算出部４６が処理を行う対象となる第１接触点候補を対象第１接触点候補と称して説明する。また、ステップＳ２００においてレンチを算出する方法は、既知の方法を用いてもよく、これから開発される方法を用いてもよいため要点のみを説明する。
【００７３】
評価値算出部４６は、対象第１接触点候補を中心とした所定半径の第１球形状領域に含まれる複数の点であって全周点群を構成する点に基づいて、当該複数の点に基づく法線ベクトルを算出する。ここで、各第１接触点候補を中心とした第１球形状領域のそれぞれは、ロボットの把持部に対応付けられた１以上の領域の一例である。また、当該第１球形状領域のそれぞれに含まれる複数の点であって全周点群を構成する点は、ロボットの把持部に対応付けられた１以上の領域に含まれる部分点群の一例である。評価値算出部４６は、算出した法線ベクトルを中心軸（摩擦円錐方向）とした対象第１接触点候補における摩擦円錐を算出し、算出した摩擦円錐を多面体に近似する。ここで、指部Ｈ１が対象物Ｏに加える力と、指部Ｈ１と対象物Ｏとの間に発生する摩擦力に係る摩擦係数とは、ユーザーにより予めロボット制御装置３０に入力されている。評価値算出部４６は、摩擦円錐を近似した多面体が有する各稜線（摩擦円錐の頂点から摩擦円錐の底面へ向かう各斜辺）の方向に係るレンチを算出する。ここで、当該レンチは、対象第１接触点候補において指部Ｈ１が対象物Ｏに加える力と、当該力によって対象物Ｏに発生するモーメントとを成分として有するベクトルである。なお、当該モーメントには、スケール変換を行う係数が乗算されていてもよい。
【００７４】
ステップＳ１９３において仮想指部ＶＨ１が選択された場合のステップＳ２００の処理が行われた後、評価値算出部４６は、前述の第１球形状領域に含まれる複数の点であって全周点群を構成する点の密度を算出する（ステップＳ２１０）。ここで、ステップＳ１９３において仮想指部ＶＨ１が選択された場合のステップＳ２１０について説明する。
【００７５】
評価値算出部４６は、全周点群と、第１球形状領域と同じ形状及び大きさの領域とに基づいて、当該領域に全周点群の一部が含まれるように当該領域を全周点群に対して配置した場合において当該領域に含まれる点であって全周点群を構成する点の数が最大となる当該領域の全周点群に対する配置位置を算出する。評価値算出部４６は、算出した配置位置に当該領域が配置されている場合における当該領域に含まれる点であって全周点群を構成する点の数を最大点数として算出する。
【００７６】
また、評価値算出部４６は、前述の第１球形状領域に含まれる点であって全周点群を構成する点の数を対象点数として算出する。そして、評価値算出部４６は、算出した最大点数と、算出した対象点数とに基づいて、第１球形状領域に含まれる複数の点であって全周点群を構成する点の密度を算出する。具体的には、評価値算出部４６は、当該最大点数によって当該対象点数を除した値を当該密度として算出する。
【００７７】
ステップＳ１９３において仮想指部ＶＨ１が選択された場合のステップＳ２１０の処理が行われた後、評価値算出部４６は、第１球形状領域に含まれる複数の点であって全周点群を構成する点のばらつきを表す値を算出する（ステップＳ２２０）。
【００７８】
評価値算出部４６は、第１球形状領域に含まれる複数の点であって全周点群を構成する点に基づいて、前述の矢印Ａ１が示す方向である第１縦方向と、第１縦方向と直交する第１横方向とのそれぞれにおける当該点の分散を算出する。評価値算出部４６は、第１横方向における当該点の分散から第１縦方向における当該点の分散を差し引いた値を、第１横方向における当該点の分散と第１縦方向における当該点の分散との和によって除した値を、当該点のばらつきを表す値として算出する。なお、当該点のばらつきを表す値は、これに代えて、これらの分散に基づく他の値であってもよい。
【００７９】
ステップＳ１９３において仮想指部ＶＨ１が選択された場合のステップＳ２２０の処理が行われた後、評価値算出部４６は、当該場合のステップＳ２００において算出したレンチと、当該場合のステップＳ２１０において算出した密度と、当該場合のステップＳ２２０において算出したばらつきを表す値とを乗じた値を第１評価値として算出する（ステップＳ２３０）。すなわち、当該密度と当該ばらつきを表す値とは、当該レンチに乗じる重みである。当該第１評価値が算出された後、評価値算出部４６は、ステップＳ１９５に遷移し、次の第１接触点候補を選択する。ただし、評価値算出部４６は、ステップＳ１９５において未選択の第１接触点候補が存在しない場合、ステップＳ１９３に遷移し、仮想指部ＶＨ２を選択する。なお、評価値算出部４６は、当該場合のステップＳ２３０において、当該場合のステップＳ２１０において算出した密度と、当該場合のステップＳ２２０において算出したばらつきを表す値とに基づく重みを、当該場合のステップＳ２００において算出したレンチに乗じた値を第１評価値として算出する構成であってもよい。この場合、例えば、評価値算出部４６は、当該密度と当該ばらつきを表す値に何らかの係数を乗じた値を当該重みとして算出し、算出した当該重みを当該レンチに乗じた値を第１評価値として算出する。
【００８０】
ここで、ステップＳ１９３において仮想指部ＶＨ２が選択された場合について説明する。ステップＳ１９５において、評価値算出部４６は、ステップＳ１９０において生成された第２接触点候補のそれぞれ毎に、ステップＳ２００〜ステップＳ２３０の処理を繰り返し行う。
【００８１】
ステップＳ２００において、評価値算出部４６は、ステップＳ１９５において選択された第２接触点候補のレンチを算出する。ここで、ステップＳ１９３において仮想指部ＶＨ２が選択された場合のステップＳ２００の処理について説明する。
【００８２】
以下、ステップＳ１９３において仮想指部ＶＨ２が選択された場合におけるステップＳ２００〜ステップＳ２３０の処理において評価値算出部４６が処理を行う対象となる第２接触点候補を対象第２接触点候補と称して説明する。
【００８３】
評価値算出部４６は、対象第２接触点候補を中心とした所定半径の第２球形状領域に含まれる複数の点であって全周点群を構成する点に基づいて、当該複数の点に基づく法線ベクトルを算出する。ここで、各第２接触点候補を中心とした第２球形状領域のそれぞれは、ロボットの把持部に対応付けられた１以上の領域の一例である。また、当該第２球形状領域のそれぞれに含まれる複数の点であって全周点群を構成する点は、ロボットの把持部に対応付けられた１以上の領域に含まれる部分点群の一例である。評価値算出部４６は、算出した法線ベクトルを中心軸（摩擦円錐方向）とした対象第２接触点候補における摩擦円錐を算出し、算出した摩擦円錐を多面体に近似する。ここで、指部Ｈ２が対象物Ｏに加える力と、指部Ｈ２と対象物Ｏとの間に発生する摩擦力に係る摩擦係数とは、ユーザーにより予めロボット制御装置３０に入力されている。評価値算出部４６は、摩擦円錐を近似した多面体が有する各稜線（摩擦円錐の頂点から摩擦円錐の底面へ向かう各斜辺）の方向に係るレンチを算出する。ここで、当該レンチは、対象第２接触点候補において指部Ｈ２が対象物Ｏに加える力と、当該力によって対象物Ｏに発生するモーメントとを成分として有するベクトルである。なお、当該モーメントには、スケール変換を行う係数が乗算されていてもよい。
【００８４】
ステップＳ１９３において仮想指部ＶＨ２が選択された場合のステップＳ２００の処理が行われた後、当該場合のステップＳ２１０において評価値算出部４６は、前述の第２球形状領域に含まれる複数の点であって全周点群を構成する点の密度を算出する。ここで、当該場合のステップＳ２１０について説明する。
【００８５】
評価値算出部４６は、前述の第２球形状領域に含まれる点であって全周点群を構成する点の数を対象点数として算出する。そして、評価値算出部４６は、前述の最大点数と、算出した対象点数とに基づいて、球形状領域に含まれる複数の点であって全周点群を構成する点の密度を算出する。具体的には、評価値算出部４６は、当該最大点数によって当該対象点数を除した値を当該密度として算出する。
【００８６】
ステップＳ１９３において仮想指部ＶＨ２が選択された場合のステップＳ２１０の処理が行われた後、当該場合のステップＳ２２０において評価値算出部４６は、第２球形状領域に含まれる複数の点であって全周点群を構成する点のばらつきを表す値を算出する。
【００８７】
評価値算出部４６は、第２球形状領域に含まれる複数の点であって全周点群を構成する点に基づいて、前述の矢印Ａ２が示す方向である第２縦方向と、第２縦方向と直交する第２横方向とのそれぞれにおける当該点の分散を算出する。評価値算出部４６は、第２横方向における当該点の分散から第２縦方向における当該点の分散を差し引いた値を、第２横方向における当該点の分散と第２縦方向における当該点の分散との和によって除した値を、当該点のばらつきを表す値として算出する。なお、当該点のばらつきを表す値は、これに代えて、これらの分散に基づく他の値であってもよい。
【００８８】
ステップＳ１９３において仮想指部ＶＨ２が選択された場合のステップＳ２２０の処理が行われた後、当該場合のステップＳ２３０における評価値算出部４６は、当該場合のステップＳ２００において算出したレンチと、当該場合のステップＳ２１０において算出した密度と、当該場合のステップＳ２２０において算出したばらつきを表す値とを乗じた値を第１評価値として算出する。当該第１評価値が算出された後、評価値算出部４６は、ステップＳ１９５に遷移し、次の第２接触点候補を選択する。ただし、評価値算出部４６は、ステップＳ１９５において未選択の第２接触点候補が存在しない場合、ステップＳ１７０に遷移し、次の指部間距離を選択する。なお、評価値算出部４６は、当該場合のステップＳ２３０において、当該場合のステップＳ２１０において算出した密度と、当該場合のステップＳ２２０において算出したばらつきを表す値とに基づく重みを、当該場合のステップＳ２００において算出したレンチに乗じた値を第１評価値として算出する構成であってもよい。この場合、例えば、評価値算出部４６は、当該密度と当該ばらつきを表す値に何らかの係数を乗じた値を当該重みとして算出し、算出した当該重みを当該レンチに乗じた値を第１評価値として算出する。
【００８９】
ステップＳ１７０〜ステップＳ２４０の繰り返し処理を行われた後、評価値算出部４６は、ステップＳ２３０が実行される毎に算出された第１評価値をすべて足し合わせた値を、第１評価値の数によって除した値である第２評価値を前述の評価値として算出する（ステップＳ２４０）。当該評価値は、ステップＳ１５０において選択された仮想把持位置及びステップＳ１５５において選択された仮想把持姿勢に把持部Ｈの位置及び姿勢が一致した場合における把持部Ｈによる対象物Ｏの把持が安定している度合いを表す値である。当該第２評価値が算出された後、評価値算出部４６は、ステップＳ１５５に遷移し、次の仮想把持姿勢を選択する。ただし、評価値算出部４６は、ステップＳ１５５において未選択の仮想把持姿勢が存在しない場合、ステップＳ１５０に遷移し、次の仮想把持位置を選択する。
【００９０】
ステップＳ１５０〜ステップＳ２４０の繰り返し処理が行われた後、把持位置姿勢算出部４８は、ステップＳ２４０において算出された複数の評価値（すなわち、第２評価値）のうちの最大の評価値が算出された場合のステップＳ１５０において選択された仮想把持位置、及び当該場合のステップＳ１５５において選択された仮想把持姿勢を、前述の把持位置姿勢として算出（特定）する（ステップＳ２５０）。
【００９１】
次に、ロボット制御部５０は、ステップＳ２５０において算出（特定）された把持位置姿勢に基づいてアームＡを動作させ、把持部Ｈの位置を当該把持位置姿勢に一致させる。ロボット制御部５０は、把持部Ｈが有する指部Ｈ１と指部Ｈ２との間の距離を近づけて対象物Ｏを把持部Ｈに把持させる。ロボット制御部５０は、ロボット２０を動作させ、把持部Ｈに把持させた対象物Ｏを図示しない給材領域に載置し、処理を終了する。
【００９２】
ここで、図８を参照し、ステップＳ２５０において算出される把持位置姿勢について説明する。図８は、ステップＳ２５０において算出された把持位置姿勢に把持部Ｈの位置及び姿勢が一致した場合の対象物Ｏの部位であって指部Ｈ１及び指部Ｈ２のそれぞれが対象物Ｏに接触する部位の一例を示す図である。図８には、全周点群を構成する複数の点の密度やばらつきを明確に示すため、図５〜図７に示した全周点群とは異なる全周点群の一例である全周点群ＶＯ２が示されている。なお、図８では、図を簡略化するため、全周点群ＶＯ２を構成する部分点群のうち全周点群ＶＯ２が表す形状を有する物体の上面の形状を表す部分点群を省略している。以下、説明の便宜上、当該物体を対象物Ｏ２と称して説明する。
【００９３】
評価値算出部４６は、図４に示したフローチャートの処理によってステップＳ２５０において把持位置姿勢を、指部Ｈ１及び指部Ｈ２のそれぞれが、全周点群ＶＯ２の部位のうち密度が高い部位であり且つ厚みが薄い部位を掴むこと（把持すること）が可能な位置及び姿勢として算出する。図８に示した例では、評価値算出部４６は、全周点群ＶＯ２の部位のうち点線ＲＡ１によって囲まれた領域内の部位と、全周点群ＶＯ２の部位のうち点線ＲＡ２によって囲まれた領域内の部位とを掴むこと（把持すること）が可能な位置及び姿勢を、ステップＳ２５０において把持位置姿勢として算出する。
【００９４】
ステップＳ２５０において算出された把持位置姿勢がこのような特徴を有する理由は、第１評価値を算出する際にレンチに乗じる重みが、第１球形状領域又は第２球形状領域に含まれる複数の点の密度及びばらつきを表す値に基づく値だからである。全周点群ＶＯ２の部位のうち当該密度が高い部位であり且つ当該ばらつきを表す値が小さい部位は、対象物Ｏ２の外から見える表面の形状が精度よく表されている部位である。このため、ロボット制御装置３０は、当該特徴を有する把持位置姿勢をステップＳ２５０において算出することができるため、対象物を安定してロボット２０に把持させることができる。
【００９５】
なお、ロボット制御装置３０は、図４に示したステップＳ１９３において、仮想指部ＶＨ１と仮想指部ＶＨ２とのいずれか一方のみを選択する構成であってもよい。
また、ロボット制御装置３０は、図４に示したステップＳ２４０において、仮想指部ＶＨ１について算出された第１評価値のそれぞれを足し合わせた値と、仮想指部ＶＨ２について算出された第１評価値のそれぞれを足し合わせた値との平均値等のこれらの値に基づく値を第２評価値として算出する構成であってもよい。
【００９６】
以上のように、ロボット制御装置３０は、対象物（この一例において、対象物Ｏ）の表面の三次元形状を表す三次元点群（この一例において、全周点群ＶＯ）のうち対象物を把持するロボット（この一例において、ロボット２０）の把持部（この一例において、把持部Ｈ）に対応付けられた１以上の領域（この一例において、第１球形状領域又は第２球形状領域）に含まれる部分点群に基づいて評価値（この一例において、第２評価値）を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢（この一例において、把持位置姿勢）を算出し、算出した把持部の位置及び姿勢に基づいて対象物を把持部に把持させる。これにより、ロボット制御装置３０は、対象物を安定してロボットに把持させることができる。
【００９７】
また、ロボット制御装置３０では、対象物の表面の三次元形状を表す三次元点群のうち対象物を把持するロボットの把持部に対応付けられた１以上の領域は、把持部に対応付けられた１以上の仮想的な点（この一例において、第１接触点候補又は第２接触点候補）のそれぞれに基づく領域である。これにより、ロボット制御装置３０は、把持部に対応付けられた１以上の仮想的な点のそれぞれに基づく領域に基づいて、対象物を安定してロボットに把持させることができる。
【００９８】
また、ロボット制御装置３０は、部分点群の密度と、当該部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて評価値を算出し、算出した評価値に基づき対象物を把持部に把持させる際の把持部の位置及び姿勢を算出する。これにより、ロボット制御装置３０は、部分点群の密度と、当該部分点群を構成する点のばらつきを表す値との少なくとも一方に基づいて算出した評価値に基づいて、対象物を安定してロボットに把持させることができる。
【００９９】
また、ロボット制御装置３０は、部分点群に基づいて対象物の把持部による把持の安定性を表す第１評価値、部分点群の密度、部分点群を構成する点のばらつきを表す値のそれぞれを算出し、算出した第１評価値に当該密度及び当該値に基づく重みを乗算した第２評価値を評価値として算出し、算出した当該評価値に基づいて、対象物を把持部に把持させる際の把持部の位置及び姿勢を算出する。これにより、ロボット制御装置３０は、第１評価値に部分点群の密度及び部分点群を構成する点のばらつきを表す値に基づく重みを乗算した第２評価値に基づいて、対象物を安定してロボットに把持させることができる。
【０１００】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１０１】
また、以上に説明した装置（例えば、ロボット制御装置３０）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１０２】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１０３】
１…ロボットシステム、１１、１２、１３、１４…撮像部、２０…ロボット、３０…ロボット制御装置、３１…ＣＰＵ、３２…記憶部、３３…入力受付部、３４…通信部、３５…表示部、３６…制御部、４０…撮像制御部、４２…画像取得部、４４…三次元点群生成部、４６…評価値算出部、４８…把持位置姿勢算出部、５０…ロボット制御部
【図１】
2018051704.tif 000003
【図２】
2018051704.tif 000004
【図３】
2018051704.tif 000005
【図４】
2018051704.tif 000006
【図５】
2018051704.tif 000007
【図６】
2018051704.tif 000008
【図７】
2018051704.tif 000009
【図８】
2018051704.tif 000010