(57)【特許請求の範囲】
【請求項１】
複数の物体の画像を取得する取得手段と、
物体の把持順の決定において基準とする方向を設定する設定手段と、
前記画像における、前記方向側から見て最も近い物体上の点を含む一部の画像領域を、物体の位置姿勢の認識を行う画像領域として求め、該画像領域に含まれるそれぞれの物体の位置姿勢を認識する認識手段と、
前記画像領域に含まれるそれぞれの物体の把持順を、該物体の位置姿勢と、前記方向と、に基づいて決定する決定手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記方向の側により近い物体をより先に把持するよう前記把持順を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記物体を把持した状態の把持部の姿勢を求め、該求めた姿勢と前記方向とに基づいて、把持対象から除外する物体を決定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記認識手段は、前記画像に対応する撮像範囲内の各点の３次元座標を取得し、前記方向を方向ベクトルとする直線上に該各点の３次元座標を投影し、該投影した各点の３次元座標のうち前記方向側から見て最も近い３次元座標の点を決定し、前記画像において該決定した点に対応する位置を含む領域を前記画像領域として求める、ことを特徴とする請求項１ないし３の何れか１項に記載の情報処理装置。
【請求項５】
複数の物体の画像を取得する手段と、
前記画像に基づいて前記物体の位置姿勢を取得する取得手段と、
前記位置姿勢と、設定された方向と、に基づいて、物体の把持順を決定する決定手段と
を備え、
前記決定手段は、前記方向に基づいて物体同士の重なりの度合いを求め、該重なりの度合いに基づいて、把持対象から除外する物体を決定することを特徴とする情報処理装置。
【請求項６】
前記設定手段は、ユーザ操作に応じて前記方向を設定することを特徴とする請求項１ないし４の何れか１項に記載の情報処理装置。
【請求項７】
前記設定手段は、前記方向として、物体を把持する把持部の教示位置として取得した２つの位置の一方の位置から他方の位置に向かう方向、該把持部の教示位置として取得した３点の張る平面の法線、の何れかを設定することを特徴とする請求項１ないし４の何れか１項に記載の情報処理装置。
【請求項８】
前記設定手段は、前記画像の部分領域内の各画素に対応する３次元点に基づいて、該３次元点による概平面を求め、該概平面の法線方向を前記方向として設定することを特徴とする請求項１ないし４の何れか１項に記載の情報処理装置。
【請求項９】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の取得手段が、複数の物体の画像を取得する取得工程と、
前記情報処理装置の設定手段が、物体の把持順の決定において基準とする方向を設定する設定工程と、
前記情報処理装置の認識手段が、前記画像における、前記方向側から見て最も近い物体上の点を含む一部の画像領域を、物体の位置姿勢の認識を行う画像領域として求め、該画像領域に含まれるそれぞれの物体の位置姿勢を認識する認識工程と、
前記情報処理装置の決定手段が、前記画像領域に含まれるそれぞれの物体の把持順を、該物体の位置姿勢と、前記方向と、に基づいて決定する決定工程と
を備えることを特徴とする情報処理方法。
【請求項１０】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の画像を取得する手段が、複数の物体の画像を取得する工程と、
前記情報処理装置の取得手段が、前記画像に基づいて前記物体の位置姿勢を取得する取得工程と、
前記情報処理装置の決定手段が、前記位置姿勢と、設定された方向と、に基づいて、物体の把持順を決定する決定工程と
を備え、
前記決定工程では、前記方向に基づいて物体同士の重なりの度合いを求め、該重なりの度合いに基づいて、把持対象から除外する物体を決定することを特徴とする情報処理方法。
【請求項１１】
コンピュータを、請求項１乃至８の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物体を把持するための技術に関するものである。
【背景技術】
【０００２】
従来より、部品をバラ積みした状態からロボットを使って自動的に部品をピッキングするロボットピッキングシステムが存在した。このシステムでは先ず、パレットに対象物体である部品が複数個ランダムに配置されている状態を、パレット上方に設置したカメラで撮像する、または３次元計測装置で計測する。その撮像結果、もしくは計測結果を用いて、把持対象となる部品の位置・姿勢を求め、ロボットハンドを用いて把持対象部品を把持する。
【０００３】
その際、出来るだけロボットハンドが他の物体と衝突することなく動作するために、通常、パレット中の高い位置にある部品を優先的に把持候補として導き出してロボットハンドで把持する。また、特許文献１にあるように、一番高い位置にある部品が所定の閾値を超えて他の部品より高い位置にある場合は、把持せずに位置をずらす動作をさせることでより確実に把持できるようにする工夫がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２‐１３５８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術には以下のような課題が存在した。ピッキングシステムにおける“高い方向”が“重力方向と逆方向”であることが暗黙の前提としてあり、その前提を元にカメラ、または計測装置を配置し、どの物体を優先的に把持するのかを決定する把持順決定等の情報処理を実施していた。ところが、必ずしも把持順決定において基準とする方向が“重力方向と逆方向”とはならない場合があり、このようなケースに従来のピッキングシステムでは対応することが出来なかった。
【０００６】
本発明はこのような問題に鑑みてなされたものであり、複数の物体に対して任意の方向から物体の把持を行うための把持順を決定するための技術を提供する。
【課題を解決するための手段】
【０００７】
本発明の一様態は、複数の物体の画像を取得する取得手段と、
物体の把持順の決定において基準とする方向を設定する設定手段と、
前記画像における、前記方向側から見て最も近い物体上の点を含む一部の画像領域を、物体の位置姿勢の認識を行う画像領域として求め、該画像領域に含まれるそれぞれの物体の位置姿勢を認識する認識手段と、
前記画像領域に含まれるそれぞれの物体の把持順を、該物体の位置姿勢と、前記方向と、に基づいて決定する決定手段と
を備えることを特徴とする。
【発明の効果】
【０００８】
本発明の構成により、複数の物体に対して任意の方向から物体の把持を行うための把持順を決定することができる。
【図面の簡単な説明】
【０００９】
【図１】ピッキングシステムが行う処理のフローチャート。
【図２】情報処理装置のハードウェア構成例を示すブロック図。
【図３】ピッキングシステムの一例を示す図。
【図４】ピッキングシステムの一例を示す図。
【図５】撮像装置４０２の撮像範囲内の様子の一例を示す図。
【図６】チェックステップ１０９を説明する図。
【図７】判定ステップ１１４を説明する図。
【図８】設定ステップ１０３を説明する図。
【図９】第２の実施形態に係る優先方向１０４の設定方法を説明する図。
【図１０】第３の実施形態に係る優先方向１０４の設定方法を説明する図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１１】
［第１の実施形態］
先ず、従来技術における問題について、図３の物体を把持（ピッキング）するピッキングシステムを例にとり説明する。図３において、３０１が撮像装置、３０２がロボット（ロボットアーム）、３０３がパレット、３０４が物体で、３０５が撮像装置３０１のZ方向、３０６がロボット３０２のZ方向である。以下の説明で、Z方向とはXYZ座標系のZ軸プラスの方向を意味する。３０５は撮像装置３０１の座標系Z軸プラスの方向で、３０６はロボット３０２の座標系Z軸プラスの方向を意味する。
【００１２】
上記の通り、どの物体を優先的に把持するのかを決定する把持順決定において基準とする方向（把持の優先方向）が鉛直下方向とは異なる方向、例えばパレット３０３とロボット３０２との位置関係からして図３のように方向３０７となる場合がある。この方向３０７は、パレット３０３の開口部の方向（すなわちパレット３０３の底面の法線ベクトルの方向）、撮像装置３０１のZ方向３０５、ロボット３０２のZ方向３０６、のどれとも平行でない。通常のピッキングシステムでは、把持の優先方向と撮像装置のZ方向とが平行になるように撮像装置を配置していた。しかしながら、ロボットの可動範囲などのシステム制約条件が理由で撮像装置を自由な位置・方向で配置できない場合がある。図３で示した例がそのような例であり、従来のピッキングシステムでは所望の把持優先方向を指定できないという課題があった。
【００１３】
また、従来より、パレット内の“高い場所”を選んで、その中で物体を検出・認識し、ロボットで把持する機能を有するロボットピッキングシステムがあった。この機能も従来では暗黙に撮像装置・計測装置のＺ方向３０５を基準に実施していた。よって同様に、従来のシステムでは図３で示したような撮像装置３０１のＺ方向３０５と全く関係のない方向を基準に“高い場所”を物体検出・認識領域として選ぶことができないという課題もあった。
【００１４】
また、従来より物体を把持する際に、把持姿勢の角度をチェックする機能を有するロボットピッキングシステムがあった。この機能も従来は暗黙に重力方向を基準にその角度を計算していた。よって同様に、従来のシステムでは図３で示したような重力方向とは全く関係のない方向を基準に把持姿勢の角度チェックを実施することができないという課題もあった。
【００１５】
また、従来より物体の重なりを計算して、重なりが所定量を超えた物体は把持をしないようにする重なりチェック機能を有するロボットピッキングシステムがあった。この機能は従来は暗黙に撮像装置・計測装置のＺ方向３０５を基準に実施していた。よって同様に、従来のシステムでは図３で示したような撮像装置のＺ方向３０５と全く関係のない方向を基準に重なりチェックを実施することができないという課題もあった。
【００１６】
本実施形態に係る情報処理装置は、このような課題に鑑み、複数の物体の画像を取得し、該画像に基づいて物体の位置姿勢を取得し、該位置姿勢と、設定された方向と、に基づいて、物体の把持順を決定する。以下では、このような情報処理装置の一例について説明する。先ず、本実施形態に係る情報処理装置のハードウェア構成例について、図２のブロック図を用いて説明する。
【００１７】
ＣＰＵ２０１は、ＲＯＭ２０２やＲＡＭ２０３に格納されているコンピュータプログラムやデータを用いて処理を実行することで、情報処理装置全体の動作制御を行うと共に、情報処理装置が行うものとして後述する各処理を実行若しくは制御する。
【００１８】
ＲＯＭ２０２には、ブートプログラムや設定データなどが格納されている。ＲＡＭ２０３は、ＲＯＭ２０２や２次記憶装置２０４からロードされたコンピュータプログラムやデータ、Ｉ／Ｏデバイス２０９から入力されたデータ、等を格納するためのエリアを有する。更に、ＲＡＭ２０３は、ＣＰＵ２０１が各種の処理を実行する際に用いるワークエリアを有する。このように、ＲＡＭ２０３は、各種のエリアを適宜提供することができる。
【００１９】
２次記憶装置２０４は、ハードディスクドライブ装置などの大容量情報記憶装置である。２次記憶装置２０４には、ＯＳ（オペレーティングシステム）２１１や、情報処理装置が行うものとして後述する各処理をＣＰＵ２０１に実行させるためのコンピュータプログラムやデータが保存されている。このコンピュータプログラムには、モジュール２１３やアプリケーション２１２などが含まれる。また、このデータには、データ２１４が含まれている。また、２次記憶装置２０４には、以下の説明において既知の情報として取り扱う情報も保存されている。２次記憶装置２０４に保存されているコンピュータプログラムやデータは、ＣＰＵ２０１による制御に従って適宜ＲＡＭ２０３にロードされ、ＣＰＵ２０１による処理対象となる。
【００２０】
ディスプレイ２０６は、ＣＲＴや液晶画面等により構成されており、ＣＰＵ２０１による処理結果を画像や文字などでもって表示することができる装置である。なお、ディスプレイ２０６の代わりに、プロジェクタなど、ＣＰＵ２０１による処理結果を画像や文字として投影する装置を用いても構わない。
【００２１】
キーボード２０７やマウス２０８は、情報処理装置の操作者が操作することで各種の指示をＣＰＵ２０１に対して入力することができる、ユーザインターフェースとして機能する装置である。なお、ディスプレイ２０６、キーボード２０７、マウス２０８の代わりに若しくは加えてタッチパネル画面を設けても良く、該タッチパネル画面によって、ユーザ入力を受け付けると共に、ＣＰＵ２０１による処理結果を表示するようにしても良い。
【００２２】
Ｉ／Ｏデバイス２０９は、情報処理装置に対して様々な情報を入力する機器、様々な情報を情報処理装置から外部の装置に対して出力する機器、を含むものである。本実施形態では、Ｉ／Ｏデバイス２０９は、少なくとも、物体を含む画像を取得可能な機器を含んでいる。このような機器には例えば各画素の画素値が輝度値を表す２次元撮像画像を撮像する撮像装置、各画素の画素値が該機器の距離計測範囲内の各位置までの３次元距離を表す距離画像を撮像する機器（例えばＴＯＦセンサ装置等の３次元入力装置）が適用可能である。
【００２３】
また例えば、Ｉ／Ｏデバイス２０９に、２台のステレオカメラを適用しても良い。その場合、該２台のステレオカメラのそれぞれは物体を含む撮像画像を撮像し、ＣＰＵ２０１は該２台のステレオカメラのそれぞれによる撮像画像を用いて三角測量技術を適用することで、該撮像画像に写っている空間の各位置までの３次元距離を求める。これにより、距離画像を生成することができる。
【００２４】
また例えば、Ｉ／Ｏデバイス２０９として１台のパターン光投影装置（プロジェクタ）と１台以上の撮像装置とを適用しても良い。その場合、パターン光投影装置は、投影パターン（例えば、空間符号化画像や位相シフト法に用いられる空間的三角関数画像）を物体に投影する。撮像装置は該投影パターンが投影された物体の画像を撮像し、ＣＰＵ２０１は該画像を用いて周知の技術を適用することで、物体までの距離の計測を行うことができる。これにより、距離画像を生成することができる。また、同様の目的のために、パターン光投影装置でランダムドットパターンを物体に投影し、該物体を２台の撮像装置で撮影する方法もある。また、同様の目的のために、レーザースリット光を用いた光切断法を用いても良い。
【００２５】
また、Ｉ／Ｏデバイス２０９は、情報処理装置が後述する各処理により求めた様々な情報（例えば物体の属性や位置）を、該物体を把持するためのロボット等の外部の機器に対して送出する機器をも含む。本実施形態では、Ｉ／Ｏデバイス２０９に含まれる該機器には、物体を把持するロボット（ロボットアーム）が接続されているものとして説明する。ロボットアームは、情報処理装置からの制御に応じてその位置姿勢を変更したり、物体を把持したりする。
【００２６】
ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、２次記憶装置２０４、ディスプレイ２０６、キーボード２０７、マウス２０８、Ｉ／Ｏデバイス２０９、は何れも、バス２０５に接続されている。
【００２７】
なお、図２に示した構成を有する機器としては、ＰＣ（パーソナルコンピュータ）や、スマートフォンやタブレット端末装置などの携帯端末装置、等が適用可能である。また、図２の構成は、組み込みデバイス、デジタルカメラ、ネットワークを介した分散システム上で実行されてもよい。
【００２８】
上記のような構成を有する情報処理装置を含む、物体のピッキングシステムについて、図３，４を用いて説明する。図３，４では説明上、情報処理装置の図示は省略しているが、図３では撮像装置３０１はＩ／Ｏデバイス２０９に対応しており、ロボット３０２はＩ／Ｏデバイス２０９に接続されている。また、図４では撮像装置４０２はＩ／Ｏデバイス２０９に対応しており、ロボット４０４はＩ／Ｏデバイス２０９に接続されている。
【００２９】
先ず、図３のピッキングシステムについて説明する。撮像装置３０１は、Ｉ／Ｏデバイス２０９の一例であり、鉛直下向き（重力方向）を撮像方向とするように設置されている。この場合、撮像装置３０１を基準とする座標系においてそのＺ方向３０５は、鉛直下向き方向となる。
【００３０】
ロボット３０２は、情報処理装置に接続されており、該情報処理装置によってその動作が制御される。その一例としてロボット３０２は、情報処理装置による制御に従ってその位置姿勢を変更し、パレット３０３に積載されている物体３０４を把持する。ロボット３０２を基準とする座標系においてそのＺ方向３０６は、鉛直上向きとなる。
【００３１】
パレット３０３には複数個の物体３０４がバラ積み状態で積載されており、且つ該パレット３０３は地面に対して傾けて（図３の場合は時計回りにある角度だけ傾けて）設置されている。このようにパレット３０３を傾けて設置することで、ロボット３０２がパレット３０３に積載されている物体をより把持しやすい状況を作り出すことが出来る。この時、積載された物体群の表面は水平面より傾くが、パレット３０３の底面の傾きよりは角度が浅い傾きとなる。なぜなら、重力の影響で、ある程度、物体が下（図３の右）方向へ流れるが、物体間の摩擦があり液体のように完全には流れ落ちることはないからである。ここで、図３のようなバラ積み物体群を表層から順番にロボット３０２によって把持しようとする場合、パレット３０３の底面の法線方向とは異なる方向３０７を、どの物体を優先的に把持するのかを決定する際の基準となる方向とするのが好ましい。
【００３２】
次に、図４のピッキングシステムについて説明する。撮像装置４０２は、Ｉ／Ｏデバイス２０９の一例であり、鉛直下向き（重力方向）を撮像方向とするように天井４０１に取り付けられている。この場合、撮像装置４０２を基準とする座標系においてそのＺ方向４０３は、鉛直下向き方向となる。
【００３３】
ロボット４０４は、撮像装置４０２と同様に天井４０１に取り付けられている。また、ロボット４０４は、情報処理装置に接続されており、該情報処理装置によってその動作が制御される。その一例としてロボット４０４は、情報処理装置による制御に従ってその位置姿勢を変更し、パレットに積載されている物体４０５を把持して取り出し、該取り出した物体４０５を作業台４０７へ置き、そこで加工する。図４では、作業台４０７には既に取り出された物体４０８が置かれている。
【００３４】
パレットには複数個の物体４０５がバラ積み状態で積載されている。装置４０６は、新たな物体をパレットに供給する。図４のような積載状態のバラ積み物体群を表層から順番にロボット４０４によって把持しようとする場合、「できるだけ表層から且つできるだけ作業台４０７に近い方から」という条件の下で物体の把持を行うのが好ましい。そこで、パレットの底面の法線方向とは異なる方向４０９を、どの物体を優先的に把持するのかを決定する際の基準となる方向とするのが好ましい。
【００３５】
以上説明してきた図３や図４のようなピッキングシステムの設計をすると、これまでにない利便性が実現できる。具体的には、図３のようなピッキングシステムを設計すると、従来ではパレットの隅まで届くような長いアームを持つ大型ロボットを準備しなければいけない所が、それより小型のロボットでピッキングシステムを組むことができるようになる。また、図４のようなピッキングシステムを設計すると、従来では物体を補充する際に、一旦システムを止めてパレットを交換する必要があった所を、システム停止・パレット交換なしに連続してピッキングを続けられるようになる。しかしながら、従来の物体認識技術では、把持の優先方向が暗黙に鉛直方向に設定されていたので、図３や図４のような柔軟なシステム運用が不可能であった。本実施形態では、把持の優先方向を柔軟に設定できることを可能にし、図３や図４のような柔軟なシステム設計を実現できるようになる。
【００３６】
パレットにバラ積み状態で積載されている物体群のうち１つをロボット（図３のロボット３０２、図４のロボット４０４を含む）に把持させるためにピッキングシステムが行う処理について、図１のフローチャートを用いて説明する。図１はシステムの動作を記述したデータフローダイアグラムであり、実線で囲った処理と点線で囲ったデータとからなる。
【００３７】
＜計測ステップ１０１＞
Ｉ／Ｏデバイス２０９は、パレットにバラ積み状態で積載されている物体群（全体でも良いし一部でも良い）を撮像若しくは計測し、その結果を計測情報１０２として出力する。この計測情報１０２は上記の通り、各画素の画素値が輝度値を表す２次元撮像画像、各画素の画素値が距離計測範囲内の各位置までの３次元距離を表す距離画像、ステレオカメラによる撮像画像、投影パターンが投影された物体の撮像画像等である。すなわち、計測情報１０２は、物体の位置姿勢を認識するために必要な情報である。
【００３８】
＜設定ステップ１０３＞
ユーザはキーボード２０７やマウス２０８を操作して、上記の把持の優先方向１０４を設定するので、ＣＰＵ２０１は該設定された優先方向１０４を取得する。図３の場合、ＣＰＵ２０１は、方向３０７を優先方向１０４として取得する。また、図４の場合、ＣＰＵ２０１は、方向４０９を優先方向１０４として取得する。設定ステップ１０３は、ＣＰＵ２０１が後述する決定ステップ１０５を実行する前に実行されていれば、設定ステップ１０３の実行タイミングは計測ステップ１０１の後に限るものではない。
【００３９】
＜決定ステップ１０５＞
ＣＰＵ２０１は、計測情報１０２及び優先方向１０４を用いて、「優先方向１０４側から見て最も近い物体上の点を含む周辺領域」を認識領域１０６として求める。積載されている物体群から把持対象となる物体を認識する際に、予め物体認識を実施する領域を決定することが良い場合が多い。
【００４０】
図４を例にとると、鉛直方向に沿って地面からの距離を考える場合（鉛直方向を基準とした場合）、地面から最も離れている物体上の１点は、○で示した点４１０となる。一方、方向４０９に沿って地面からの距離を考える場合（方向４０９を基準とした場合）、地面から最も離れている物体上の１点は、○で示した点４１１となる。然るにこの場合、本実施形態では、点４１１を含む周辺領域を認識領域１０６として設定する。例えば、撮像装置４０２の撮像範囲内の様子が図５に示したようなものであった場合、点４１１を含む周辺領域５０３を認識領域１０６として設定する。結果として、図５に示すようにバラ積み中央より少し右側のロボット４０４に近い位置に認識領域１０６が設定されることになる。なお、図５では周辺領域５０３の形状は矩形であるが、その形状は矩形に限るものではなく、矩形を平面に射影した台形、楕円、一般の閉曲線で囲まれた領域でも良い。また、物体が大きく撮像範囲若しくは計測範囲の大部分を覆うような場合は、認識領域１０６は撮像範囲若しくは計測範囲全体としても良い。そして後述する認識ステップ１０７では、この認識領域１０６内で物体の認識（その位置姿勢の認識も含む）を行う。
【００４１】
なお、認識領域１０６の求め方については、例えば次のような方法が考えられる。計測情報１０２を用いれば、上記の通り、Ｉ／Ｏデバイス２０９の撮像範囲若しくは計測範囲内の各点（３次元点）における３次元座標（Ｉ／Ｏデバイス２０９を原点とする座標系における３次元座標）を得ることができる。然るに、優先方向１０４を方向ベクトルとする直線上に該各点の３次元座標を投影する。そして、該投影した各点の３次元座標のうち優先方向１０４（図４の場合は右上方向）において端部に位置する３次元座標の点を決定し、該決定した点を含む周辺領域を認識領域１０６として設定する。また、優先方向１０４を基準にして物体の存在する領域に概略高さマップ（優先方向１０４を法線とする面上のマップ）を作成し、該概略高さマップにおいて最も高い領域に認識領域１０６を設けても良い。
【００４２】
＜認識ステップ１０７＞
ＣＰＵ２０１は、計測情報１０２を用いて、認識領域１０６内にある物体の認識（物体の位置姿勢の認識を含む）を行い、認識領域１０６内にあるそれぞれの物体について、該物体の認識した位置姿勢を登録したリスト１０８を作成する。計測情報１０２を用いて物体の位置姿勢を認識する技術については周知であるため、これに係る説明は省略する。ここで、物体の位置とは、物体を代表する点の３次元座標を意味し、例えば物体の重心位置の３次元座標であったり、物体の設計におけるＣＡＤ原点の３次元座標であったりする。
【００４３】
＜決定ステップ１０９＞
ＣＰＵ２０１は、リスト１０８に登録されている各物体の位置姿勢を、より優先方向１０４側の物体の位置姿勢から、より優先方向１０４とは逆側の物体の位置姿勢へと並ぶようにソートし、ソート済みのリスト１１０を生成する。例えば、リスト１０８に登録されている各３次元座標を、優先方向１０４を方向ベクトルとする直線上に投影する。そして、投影した３次元座標が優先方向１０４において端部となる物体の位置姿勢から、投影した３次元座標が優先方向１０４とは逆の方向において端部となる物体の位置姿勢へと並ぶように、リスト１０８中の各物体の位置姿勢をソートする。
【００４４】
＜チェックステップ１１２＞
ＣＰＵ２０１は、リスト１１０に登録されているそれぞれの物体の位置姿勢について、該位置姿勢の物体をロボットが把持可能であるか否かをチェックする。このチェックの方法には様々なものがあり、物体やロボットに応じた様々なものが考えられる。ここではその一例について、図６を用いて説明する。
【００４５】
ロボットが有するアーム６０２の先端部には吸着ハンド６０３が取り付けられており、図６（ａ）に示す如く、この吸着ハンド６０３でもって物体６０１を吸着して移動させることができる。ここで、アーム６０２の先端（フランジ）に原点６０４、そこからアーム先端方向へ延びるベクトル６０５を規定する。
【００４６】
認識ステップ１０７において、図６（ｂ）に示す如く物体６０６及び６０７を認識したとする。情報処理装置の２次記憶装置２０４には予め、物体の位置姿勢が与えられた場合に、該位置姿勢を有する物体をロボットが把持するために必要な情報（ロボットのアームの位置や姿勢など）が把持教示情報１１１として保存されている。然るに物体６０６の位置姿勢を認識すると、ＣＰＵ２０１はこの把持教示情報１１１を用いて、該位置姿勢を有する物体６０６を吸着ハンド６０３でもって吸着するためにアーム６０２の位置姿勢をどのような位置姿勢とするのかを特定する。これは、物体６０７についても同様である。図６（ｂ）では、認識した物体６０６の位置姿勢と把持教示情報１１１とに基づいて求めたアーム６０２の位置姿勢、認識した物体６０７の位置姿勢と把持教示情報１１１とに基づいて求めたアーム６０２の位置姿勢、が示されている。従来の鉛直上方向から物体を把持することを前提にしたシステムでは、この２つの物体は同程度の把持困難さと考えられる。一方、図３のようにロボットが図中右側に配置されていたとすると、ロボットがアームを伸ばしやすい物体は物体６０６よりも物体６０７となる。また、物体６０６はアームの可動範囲から考えて、把持不可となる可能性もある。
【００４７】
然るに図６の場合、ＣＰＵ２０１は、吸着ハンド６０３によって物体６０６を吸着可能か否かを判断するためには、ベクトル６０８と優先方向６１０との内積値の絶対値を求め、該絶対値が正の閾値以上であるか否かを判断する。ベクトル６０８は、認識した物体６０６の位置姿勢と把持教示情報１１１とに基づいて求めたアーム６０２の姿勢成分を表すベクトル（アーム先端方向へ延びるベクトル）である。この判断の結果、該絶対値が正の閾値以上であれば、物体６０６が吸着ハンド６０３によって吸着可能（吸着ハンド６０３が物体６０６を吸着できるようにアーム６０２の位置姿勢を制御可能）と判断する。一方、該絶対値が正の閾値未満であれば、物体６０６が吸着ハンド６０３によって吸着不可能（吸着ハンド６０３が物体６０６を吸着できるようにアーム６０２の位置姿勢を制御不可能）と判断する。同様に、吸着ハンド６０３によって物体６０７を吸着可能か否かを判断するためには、ベクトル６０９と優先方向６１０との内積値の絶対値を求め、該絶対値が正の閾値以上であるか否かを判断する。ベクトル６０９は、認識した物体６０７の位置姿勢と把持教示情報１１１とに基づいて求めたアーム６０２の姿勢成分を表すベクトル（アーム先端方向へ延びるベクトル）である。この判断の結果、該絶対値が正の閾値以上であれば、物体６０７が吸着ハンド６０３によって吸着可能（吸着ハンド６０３が物体６０７を吸着できるようにアーム６０２の位置姿勢を制御可能）と判断する。一方、該絶対値が正の閾値未満であれば、物体６０７が吸着ハンド６０３によって吸着不可能（吸着ハンド６０３が物体６０７を吸着できるようにアーム６０２の位置姿勢を制御不可能）と判断する。
【００４８】
なお、上記の説明では、図６に示された吸着ハンドによる物体把持を例にとり、認識したそれぞれの物体が把持可能であるか否かを判断する処理について説明した。しかし、物体の把持方法（把持部）はこれに限るものではないため、認識したそれぞれの物体が把持可能であるか否かを判断する処理もまた、上記の処理に限るものではない。例えば、物体の把持が開閉ハンドで物体をつかむような構成によるものであっても良いし、磁石を用いた物体把持構成によるものであっても良い。
【００４９】
また、優先方向１０４との内積を計算する対象となるベクトルは、フランジからアーム先端方向に伸びたベクトルに限らない。例えば、物体を把持するエンドイフェクタが図６（ａ）に示した吸着ハンドでない場合、優先方向１０４との内積を計算する対象となるベクトルは、フランジからアーム先端方向に伸びたベクトルではなく、他のベクトルとなる。一般的に言うと、優先方向１０４との内積を計算する対象となるベクトルは、把持する際にアームがアプローチする方向のベクトルであれば、如何なるベクトルであっても良い。
【００５０】
このようにしてＣＰＵ２０１は、リスト１１０に登録されているそれぞれの物体の位置姿勢について、該位置姿勢の物体をロボットが把持可能であるか否かをチェックし、把持不可能と判断した物体の位置姿勢をリスト１１０から削除する。つまり、把持対象から除外する物体を決定してリスト１１０から削除する。リスト１１３は、リスト１１０から、把持不可能と判断した物体の位置姿勢を削除することで得られるリストである。然るに、把持不可能と判断した物体が無ければ、リスト１１３はリスト１１０と同じものである。
【００５１】
＜判定ステップ１１４＞
ＣＰＵ２０１は、リスト１１３に位置姿勢が登録されているそれぞれの物体について、該物体と他物体との重なりの度合いを判定し、その判定結果に応じて、該物体がロボットによって把持可能であるのか否かを判断する。この判定処理について、図７を例にとり説明する。図７では、何れの物体も板状の物体であるものとしているが、物体は板状の物体に限らず、他の形状の物体であっても良い。
【００５２】
図７（ａ）、（ｃ）、（ｅ）は何れも、物体７０１の一部に物体７０２の一部が重なっており、物体７０３の一部に物体７０４の一部が重なっている、物体７０１〜７０４の積載状態を上方から見下ろしている状態を示している。また、図７（ｂ）、（ｄ）、（ｆ）はそれぞれ、図７（ａ）、（ｃ）、（ｅ）の状態を側面から見た場合の断面図である。図３の撮像装置３０１や図４の撮像装置４０２からは図７（ａ）のように観察される。ここで、物体同士の重なりの部分について考える。
【００５３】
従来では、物体同士の重なりは図７（ｄ）に示す如く、鉛直方向について求めていた。そのため、物体７０１と物体７０２との間の重なりは部分７０５となり、物体７０３と物体７０４との間の重なりは部分７０６となり、物体同士の重なり部分の面積はどちらの物体でも同程度となる。然るに、仮に、物体７０１と物体７０３とを認識していた場合、物体７０１と物体７０３とで把持容易さは同程度と判断していた。
【００５４】
一方、本実施形態では、物体同士の重なりは、優先方向１０４について求める。例えば、図７（ｆ）に示す如く、優先方向１０４が方向７０９であるとすると、この方向７０９についての物体７０１と物体７０２との間の重なりは図７（ｅ）に示す如く部分７０７となる。また、方向７０９についての物体７０３と物体７０４との間の重なりは図７（ｅ）に示す如く部分７０８となる。このように、方向７０９について物体同士の重なりを求めた場合、物体７０１と物体７０２との間の重なりの部分の面積、物体７０３と物体７０４との間の重なりの部分の面積はそれぞれ異なり、部分７０８の面積＞部分７０７の面積となる。然るに、仮に、物体７０１と物体７０３とを認識していた場合、物体７０３と比べて物体７０１の方が大幅に把持が容易となる。
【００５５】
本ステップでは、例えば、図７を例にとると、認識した物体（ここでは物体７０１及び物体７０３とする）のモデルを該物体の認識した位置姿勢で配置し、該配置したモデルを方向７０９に並進移動した時に生成される柱状の３次元領域を求める。そして、該３次元領域において、他の物体の領域（ここではそれぞれ物体７０２及び物体７０４）と重複する領域を求める（ここではそれぞれ部分７０７及び部分７０８）。そして、認識した物体について求めた３次元領域における重複領域の面積が正の閾値以上であれば、該物体は把持不可能と判断し、該面積が正の閾値未満であれば、該物体は把持可能と判断する。なお、本ステップでは、単に面積と閾値との比較によるものに限らず、認識した物体の面積に対する重複領域の割合が閾値以上であれば該物体は把持不可能と判断し、閾値未満であれば該物体は把持可能と判断するようにしても良い。
【００５６】
また、本ステップでは、同様の目的を達成することができるのであれば、他の方法を用いて判定処理を行っても良い。例えば、物体上の３次元点群（計測情報１０２によって求められる）を優先方向と逆方向に射影した時に認識した物体と衝突する３次元点の個数を上記の「重複領域の面積」として取り扱っても良い。
【００５７】
そしてＣＰＵ２０１は、リスト１１３に登録されているそれぞれの物体の位置姿勢のうち、把持不可能と判断された位置姿勢を削除することで、新たなリスト１１５を生成する。つまり、把持対象から除外する物体を決定してリスト１１３から削除する。
【００５８】
そしてＣＰＵ２０１は、リスト１１５に登録されている物体の位置姿勢を用いて、該物体をロボットに把持させるべく該ロボットのアームの位置姿勢を制御するための制御信号を生成して、Ｉ／Ｏデバイス２０９を介してロボットに対して出力する。上記の通り、リスト１１５には、より優先方向１０４側の物体から、より優先方向１０４とは逆側の物体の順に、その位置姿勢が登録されているので、ロボットは、より優先方向１０４側の物体から順に把持することになる。
【００５９】
次に、上記の設定ステップ１０３について、図８を用いて説明する。図８は、ユーザが優先方向１０４を設定するために使用するＧＵＩ（グラフィカルユーザインターフェース）の一例を示すものであり、このＧＵＩはディスプレイ２０６に表示される。以降、このＧＵＩの表示制御や、ＧＵＩに対するユーザ操作に応じた処理は何れも、ＣＰＵ２０１が行う。
【００６０】
領域８０１には、優先方向１０４を規定する方向ベクトル成分が、ビジョン座標系におけるものとするのか、それともロボット座標系におけるものとするのかを選択するためのラジオボタンが設けられている。ここで、ビジョン座標系とは、Ｉ／Ｏデバイス２０９（図３では撮像装置３０１、図４では撮像装置４０２）を基準とする座標系であり、通常は、Ｚ軸プラス方向が図３のＺ方向３０５や図４のＺ方向４０３となる。ロボット座標系とは、ロボット（図３ではロボット３０２、図４ではロボット４０４）を基準とする座標系である。ユーザがキーボード２０７やマウス２０８を操作して上側のラジオボタンをチェックすると、ビジョン座標系が選択され、下側のラジオボタンをチェックすると、ロボット座標系が選択される。図８では上側のラジオボタンがチェックされている。
【００６１】
領域８０２には、優先方向１０４を規定する方向ベクトルのｘ成分、ｙ成分、ｚ成分を入力するためのボックスが設けられている。図８では、ｘ成分として「１」、ｙ成分として「０」、ｚ成分として「０」が入力されている。このようにして設定される各成分は、領域８０１においてラジオボタンの選択により設定される座標系におけるものであるから、これを例えば世界座標系におけるものとする為には適宜変換が必要である。ここで、世界座標系とは、実空間中の１点を原点とし、該原点で直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系である。
【００６２】
そしてユーザがキーボード２０７やマウス２０８を操作してＯＫボタン８０３を指示すると、領域８０６には、領域８０２内の各ボックスに入力した成分を有する方向ベクトル、即ち優先方向１０４を表すオブジェクト８０８が表示される。領域８０６内には更に、パレットを表すオブジェクト８０７も表示される。領域８０６内には、現在設定されている視点の位置姿勢に応じて、パレットのオブジェクト８０７及び優先方向１０４のオブジェクト８０８が配置された仮想の空間の画像が表示される。オブジェクト８０８はベクトルの方向を円盤とそれに針状の物体が取り付けられた形状を有する（針の根元から先端へ向けたベクトル）。オブジェクト８０８の向きは、領域８０１内で指定した座標系における「領域８０２内で指定した成分」を、オブジェクト８０７と同じ座標系における成分に変換した方向である。
【００６３】
また、ユーザはキーボード２０７やマウス２０８を操作して、例えば領域８０６内をドラッグ操作するなどして、自由に視点の位置姿勢を変更することができ、領域８０６内の表示は、視点の位置姿勢の変更に応じて変わる。なお、優先方向１０４を表すオブジェクトの形状は上記の形状に限るものではない。また、優先方向１０４の表現方法はオブジェクトを用いた表現方法に限るものではない。また、図８では、パレットのオブジェクト８０７と優先方向１０４のオブジェクト８０８とを表示することで３次元座標における位置関係を表示しているが、計測した３次元点群とベクトルを表す３次元図形を表示してもよい。
【００６４】
また、ユーザがキーボード２０７やマウス２０８を操作してキャンセルボタン８０４を指示すると、ＣＰＵ２０１はＧＵＩを用いて設定した内容は破棄する。なお、優先方向１０４を設定しない場合は、予め設定されて２次記憶装置２０４に保存されているデフォルトの優先方向１０４を用いても良い。
【００６５】
ユーザがキーボード２０７やマウス２０８を操作してＯＫボタン８０３を指示しても、キャンセルボタン８０４を指示しても、ＣＰＵ２０１は図８のＧＵＩをディスプレイ２０６から消去する。
【００６６】
［第２の実施形態］
以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。本実施形態では、優先方向１０４の設定方法が第１の実施形態とは異なる。以下では、本実施形態に係る優先方向１０４の設定方法について、図９を用いて説明する。図９では、図８と同じように、パレットのオブジェクト９０１と優先方向１０４を表すオブジェクト９０２とを使って説明する。
【００６７】
図９（ａ）は、優先方向の始点９０３と終点９０４とをロボットで教示する例を示している。通常、ロボットアームの先端（フランジ）を始点に移動させて教示した後で終点に移動させて教示するか、逆に、終点に移動させて教示した後で始点に移動させて教示する。ロボットによる把持操作をティーチングで行う際に、このプロトコルを使って教示すると便利である。ロボットアームを移動させて優先方向１０４の始点や終点を教示するたびに、ＣＰＵ２０１はその教示位置をロボットから取得し、始点の教示位置から終点の教示位置に向かうベクトルを優先方向１０４の方向ベクトルとして求める。
【００６８】
一方、図３で示すように、物体群がなす表層面を指定して把持の優先方向を設定する場合は図９（ｂ）や図９（ｃ）で示す方法が便利である。図９（ｂ）では３次元空間上の３点（点９０５〜９０７）をロボットアームで教示する。ＣＰＵ２０１は、この３点の３次元位置を取得すると、該３点の張る平面の法線を優先方向を表すベクトルとして求める。ベクトルの向きは、３点の教示順序で決定することができ、予め右手座標系か左手座標系かを決めておく。ベクトルの向きを別に指定する例としては図９（ｃ）にあるように、平面を規定する３点（点９０５〜９０７）とその平面から離れた１点９０８を指定する方法がある。この場合、該３点の張る平面から点９０８に向かう方向が法線方向となる。
【００６９】
なお、ロボットアームを用いて位置を教示し、該教示した位置に基づいて優先方向を指定する上記の方法は、上記の設定ステップ１０３において実行される。なお、ロボットアームを用いて優先方向１０４を決定する方法には上記の方法以外にも様々な方法が考えられる。
【００７０】
［第３の実施形態］
以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。本実施形態では、優先方向１０４の設定方法が第１の実施形態とは異なる。以下では、本実施形態に係る優先方向１０４の設定方法について、図１０を用いて説明する。
【００７１】
Ｉ／Ｏデバイス２０９により、図１０（ａ）に例示する画像を撮像したとする。図１０（ａ）の画像には、パレット１００１内に積載された物体１００２が含まれている。図１０（ａ）の画像を撮像したときのパレットの断面を図１０（ｂ）に示す。図３の設置状況の説明でも記述したように、積載された物体群の表面は、水平面より傾くが、パレット底面の傾きよりは角度が浅い傾きとなる。この状況で、把持の優先方向としては、物体群の表面が形作る概平面の法線方向が適切となる。そして、本実施形態ではこの平面および法線方向を簡易に設定する方法を提供する。
【００７２】
まず、図１０（ａ）の画像をディスプレイ２０６に表示し、ユーザがキーボード２０７やマウス２０８を操作して部分領域を指定する。図１０（ａ）では１００３で示す矩形領域が指定されている。そして、矩形領域１００３内の各画素に対応する３次元点の３次元座標を用いて、例えば最小２乗法を用いて平面フィッティングを行って、矩形領域１００３内の各画素に対応する３次元点による概平面１００４を求める。そして、該求めた概平面１００４の法線１００５を把持の優先方向として設定する。なお、図１０ではユーザが指定する部分領域は矩形領域としたが、部分領域は矩形領域に限るものではなく、楕円や自由曲線で囲った部分を部分領域としても良い。また、第１〜３の実施形態やその変形例については、その一部若しくは全部を適宜組み合わせて使用しても構わないし、選択的に使用しても構わない。
【００７３】
上記の実施例では、バラ積みされた物体を把持する場合の例を説明したが、適用はこれに限られない。例えば、パレットの中の敷居に配置された物体を把持するような場合にも適用可能であるし、ハンガーのようにつるされた状態の物体を把持するような場合にも適用可能である。
【００７４】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７５】
２０１：ＣＰＵ  ２０９：Ｉ／Ｏデバイス
【図１】
0006744709.tif 000002
【図２】
0006744709.tif 000003
【図３】
0006744709.tif 000004
【図４】
0006744709.tif 000005
【図５】
0006744709.tif 000006
【図６】
0006744709.tif 000007
【図７】
0006744709.tif 000008
【図８】
0006744709.tif 000009
【図９】
0006744709.tif 000010
【図１０】
0006744709.tif 000011