(57)【要約】【課題】ロボットが作業対象にアプローチできるかどうかの確認を効率的に行えるように支援する。【解決手段】情報処理装置は、仮想空間Ｒに配置された仮想ロボット６００Ｉの動作をシミュレーション可能なＣＰＵを有する。ＣＰＵは、仮想空間Ｒにおいて複数の仮想点Ｐを生成する。ＣＰＵは、複数の仮想点Ｐの各々について、仮想ロボット６００Ｉが仮想点Ｐにアプローチ可能な、仮想点Ｐにおける仮想ロボット６００Ｉの姿勢の範囲を算出する。【選択図】図５
2020175471.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間に配置された仮想ロボットの動作をシミュレーション可能な処理部を有し、
前記処理部は、
前記仮想空間において仮想点を生成し、
前記仮想ロボットが前記仮想点にアプローチ可能な、前記仮想点における前記仮想ロボットの姿勢の範囲を算出することを特徴とする情報処理装置。
【請求項２】
前記仮想ロボットの姿勢は、前記仮想ロボットの先端部の姿勢であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、
前記仮想点にアプローチ可能かどうかを試行する前記仮想ロボットの動作の起点を、前記仮想点における前記仮想ロボットの複数の姿勢の各々に対応して算出し、各前記起点から前記仮想点へアプローチ可能かどうかを判定することで、前記姿勢の範囲を算出することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記処理部は、
前記仮想点から所定距離以上離れるように前記起点を算出することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記所定距離は、仮想ワークのサイズに応じて決定されることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記処理部は、
前記仮想空間において前記仮想点を複数生成することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記処理部は、
前記仮想空間における第１領域の指定を受け、前記第１領域内で前記複数の仮想点を生成することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記処理部は、
前記複数の仮想点の各々について算出した各々の前記姿勢の範囲を指標化して、前記複数の仮想点の各々に対応付けられた各々の指標値を算出することを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
前記処理部は、
前記複数の仮想点のうち２つ以上の仮想点の指定を受け、
前記２つ以上の仮想点に対応付けられた２つ以上の前記指標値の平均値を算出することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記処理部は、
前記仮想空間において、前記複数の仮想点のうち２つ以上の仮想点を包含する第２領域の指定を受け、
前記２つ以上の仮想点に対応付けられた２つ以上の前記指標値の平均値を算出することを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記処理部は、
前記仮想空間において２つ以上の仮想点を包含する第２領域を設定し、
前記２つ以上の仮想点に対応付けられた２つ以上の前記指標値の平均値を算出することを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記処理部は、
前記第２領域の位置及び／又はサイズを変更して、前記第２領域の位置及び／又はサイズに対応した複数の前記平均値を算出することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
画像を表示する表示部を更に有し、
前記処理部は、
前記仮想点及び前記指標値を表す画像を、前記表示部に表示させることを特徴とする請求項８乃至１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記処理部は、前記仮想点の３次元的な配置を３次元画像で前記表示部に表示させるとともに、前記３次元画像において前記仮想点の表示形態を前記指標値の大小に応じて異ならせることを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
画像を表示する表示部を更に有し、
前記処理部は、
前記平均値を表す画像を、前記表示部に表示させることを特徴とする請求項９乃至１２のいずれか１項に記載の情報処理装置。
【請求項１６】
画像を表示する表示部を更に有し、
前記処理部は、
前記第２領域の３次元的な配置を３次元画像で前記表示部に表示させるとともに、前記３次元画像において前記第２領域の表示形態を前記平均値の大小に応じて異ならせることを特徴とする請求項１０乃至１２のいずれか１項に記載の情報処理装置。
【請求項１７】
処理部が、仮想空間に配置された仮想ロボットの動作をシミュレーション可能な情報処理方法であって、
前記処理部が、前記仮想空間において仮想点を生成し、前記仮想ロボットが前記仮想点にアプローチ可能な、前記仮想点における前記仮想ロボットの姿勢の範囲を算出することを特徴とする情報処理方法。
【請求項１８】
請求項１７に記載の情報処理方法をコンピュータに実行させるプログラム。
【請求項１９】
請求項１８に記載のプログラムを記録した、コンピュータによって読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのシミュレーションに関する。
【背景技術】
【０００２】
ロボットを有するロボットシステムの設計においては、情報処理装置を用いたオフラインプログラミングの手法が広く用いられている。オフラインプログラミングにおいては、ロボットや周辺物のモデルを仮想空間に配置し、仮想的なロボットシステムを構築することで、実際のロボットを用いることなくロボットの動作プログラムを作成するものである。この際、仮想空間でロボットの動作をシミュレーションし、ロボットが所望の教示点へ動作可能かどうかの確認も行われる。確認の結果、動作できない場合は、教示点、ロボット又は周辺物の配置を変更するなどして、ロボットが動作可能なようにする。
【０００３】
一方、視覚センサといったセンシング手段を用いて、作業対象の位置及び姿勢を計測することにより、教示点を補正し、ロボットの動作を動的に変更することが提案されている。引用文献１には、トレイにバラ積みされたワークの位置及び姿勢を、センサを用いて計測することで、ロボットがワークを取得するロボットシステムが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−７１７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ロボットをラインに据え付けた後、実際にロボットを動作させたときに、ロボットが特異点へ侵入したり、ロボットが可動範囲を逸脱したりするなどの理由で、ロボットがワークなどの作業対象にアプローチできない場合があった。このような場合、従来は、作業対象へのアプローチが成功する割合が高くなるよう、例えばワークが載置されるトレイとロボットとの配置関係を手探りで調整していた。このような作業は、多大な労力と時間を必要とし、場合によっては部品の追加工や製作が必要となるなどの問題があった。
【０００６】
そこで、本発明は、ロボットが作業対象にアプローチできるかどうかの確認を効率的に行えるように支援することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、仮想空間に配置された仮想ロボットの動作をシミュレーション可能な処理部を有し、前記処理部は、前記仮想空間において仮想点を生成し、前記仮想ロボットが前記仮想点にアプローチ可能な、前記仮想点における前記仮想ロボットの姿勢の範囲を算出することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ロボットが作業対象にアプローチできるかどうかの確認を効率的に行えるように支援することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る情報処理装置を含むロボットシステムの説明図である。
【図２】第１実施形態に係る情報処理装置のブロック図である。
【図３】第１実施形態に係る情報処理方法のフローチャートである。
【図４】第１実施形態に係る情報処理方法のフローチャートである。
【図５】第１実施形態における情報処理方法の説明図である。
【図６】（ａ）、（ｂ）及び（ｃ）は、第１実施形態における処理を説明するための模式図である。
【図７】（ａ）及び（ｂ）は、第１実施形態における処理を説明するための模式図である。
【図８】第１実施形態における処理を説明するための模式図である。
【図９】（ａ）、（ｂ）及び（ｃ）は、第１実施形態において、仮想ロボットがアプローチ可能かどうかを試行する姿勢の範囲を示す模式図である。
【図１０】第１実施形態における情報処理方法の説明図である。
【図１１】（ａ）及び（ｂ）は、第１実施形態において、表示部が表示する画像の一例を示す説明図である。
【図１２】（ａ）及び（ｂ）は、表示部が表示する画像の変形例を示す説明図である。
【図１３】第２実施形態に係る情報処理方法のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
［第１実施形態］
図１は、第１実施形態に係る情報処理装置を含むロボットシステムの説明図である。ロボットシステム５００は、ロボット６００と、制御装置７００と、視覚センサの一例であるカメラ８００と、画像処理装置９００と、を備える。更に、ロボットシステム５００は、情報処理装置１００を備えている。ロボット６００の周囲には、複数のワークＷがバラ積みされたトレイ５５０が配置されている。ロボット６００と制御装置７００とは、配線で接続されている。制御装置７００と画像処理装置９００とは、配線で接続されている。カメラ８００と画像処理装置９００とは、配線で接続されている。
【００１１】
ロボット６００は、垂直多関節のロボットアーム６０１と、エンドエフェクタの一例であるロボットハンド６０２とを有する。ロボット６００の先端部は、本実施形態ではロボットハンド６０２である。即ち、ロボットハンド６０２は、ロボットアーム６０１の先端に取り付けられている。ロボットハンド６０２は、ワークＷを把持可能に構成されている。カメラ８００は、ロボットアーム６０１に取り付けられている。なお、カメラ８００は、ロボットハンド６０２に取り付けられていてもよいし、ロボット６００とは別のところに配置されていてもよい。また、ロボットアーム６０１が、垂直多関節のロボットアームであるが、これに限定するものではない。ロボットアーム６０１が、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームであってもよい。
【００１２】
カメラ８００は、ＣＭＯＳイメージセンサ又はＣＣＤイメージセンサ等の撮像素子を有するデジタルカメラである。カメラ８００は、撮像によって得られた画像のデータを画像処理装置９００へ送信する。
【００１３】
画像処理装置９００は、カメラ８００より得られた画像データに対して画像処理を行う。例えば、画像処理装置９００は、画像処理によってワークＷの位置及び姿勢を算出する。制御装置７００は、画像処理装置９００により画像処理された結果に基づき、ロボット６００の動作を制御する。
【００１４】
本実施形態では、ロボット６００は、トレイ５５０にバラ積みされたワークＷを把持し、所定の位置へ搬送する動作を繰り返す。そのため、画像処理装置９００は、カメラ８００を用いてワークＷの位置及び姿勢を計測する。制御装置７００は、この計測結果を用いて教示点を補正し、ロボット６００の動作を動的に変更する。教示点は、ロボット６００の先端部、即ちロボットハンド６０２の位置及び姿勢を示すパラメータで構成され、予め制御装置７００に与えられている。制御装置７００は、変更した教示点に基づいて、ロボットの軌道データを生成し、軌道データに従ってロボット６００を制御することにより、ロボット６００にワークＷを取得させる。
【００１５】
トレイ５５０内には、複数のワークＷがバラ積みされているため、中にはロボットにより取得できない位置又は姿勢のものが存在する。このようなワークＷがトレイ５５０内に多数存在すると、生産性が低下する。このような場合、生産性が向上するようにトレイ５５０の配置位置を調整する作業が必要となるが、この作業を手探りで行うのは、多大な労力と時間を必要とする。
【００１６】
そこで、本実施形態では、ロボット６００の実機で検証するのではなく、情報処理装置１００においてシミュレーションにより検証する。情報処理装置１００は、コンピュータで構成され、ロボットに相当する仮想ロボットを仮想空間において動作させる演算を行うシミュレータとして機能する。なお、図１には、情報処理装置１００として、ラップトップ型のコンピュータを例示しているが、これに限定するものではない。例えば、情報処理装置１００は、デスクトップ型、又はタブレット型のコンピュータなど、いかなるコンピュータであってもよい。
【００１７】
図２は、第１実施形態に係る情報処理装置１００のブロック図である。情報処理装置１００は、本体１１０と、本体１１０に接続された入力部１２１及び表示部１２２を有する。本体１１０は、処理部としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１を備えている。また、情報処理装置１００は、記憶部として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３、及びＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０４を備えている。また、情報処理装置１００は、入力インタフェース（入力ＩＦ）１０６、及び出力インタフェース（出力ＩＦ）１０７を備えている。ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、ＨＤＤ１０４、入力ＩＦ１０６、及び出力ＩＦ１０７は、互いに通信可能にバス（ＢＵＳ）１０５を介して接続されている。
【００１８】
ＲＯＭ１０３には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ１０２は、ＣＰＵ１０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。ＨＤＤ１０４には、ＣＰＵ１０１の演算処理結果や外部から取得した各種データ等が記録され、またＣＰＵ１０１に、後述する各種処理を実行させるためのプログラム１２０が記録されている。ＣＰＵ１０１は、ＨＤＤ１０４に記録（格納）されたプログラム１２０を実行することでシミュレータとして機能し、仮想空間に配置された仮想ロボットの動作をシミュレーション可能となる。
【００１９】
また、入力ＩＦ１０６には入力部１２１が接続され、出力ＩＦ１０７には表示部１２２が接続されている。入力部１２１は、例えばタッチパッドやマウスなどのポインティングデバイス、及びキーボードなどによって構成された、ＣＰＵ１０１へ指示を入力するためのデバイスである。表示部１２２は、例えば液晶表示パネル（ＬＣＤ）等から構成されるディスプレイであって、ＣＰＵ１０１に制御されることにより、ＣＰＵ１０１の演算結果などの画像を表示する。
【００２０】
なお、第１実施形態では、コンピュータによって読取可能な記録媒体がＨＤＤ１０４であり、ＨＤＤ１０４にプログラム１２０が格納される場合について説明するが、これに限定するものではない。プログラム１２０は、コンピュータによって読取可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム１２０を格納するための記録媒体としては、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性メモリ等を用いることができる。光ディスクは、例えばＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒである。不揮発性メモリは、例えばＵＳＢメモリ、メモリカード、ＲＯＭである。
【００２１】
図３及び図４は、第１実施形態に係る情報処理方法のフローチャートである。以下、図３および図４に示すフローチャートを、図１及び図２を参照しながら説明する。なお、以下のシミュレーションでは、オフラインティーチングと同様に、仮想ロボットの姿勢として、仮想ロボットの先端部の姿勢について演算する。先端部の姿勢とは、本実施形態では、先端部又は先端部近傍に設定した点であって先端部と同期して動く点、いわゆるツールセンターポイント（ＴＣＰ）の姿勢成分である。
【００２２】
ＣＰＵ１０１は、シミュレーションの条件の指定を受ける（Ｓ１０１）。条件は、後述する、仮想点を生成する条件、目標点を生成する条件、および、仮想点を生成する第１領域を示す条件などである。条件は、ＨＤＤ１０４に記録されていてもよいし、入力部１２１によりユーザが入力するようにしてもよい。
【００２３】
次に、ＣＰＵ１０１は、仮想空間において仮想ロボットの動作をシミュレーションする（Ｓ１０２）。図５は、第１実施形態における情報処理方法の説明図である。図５には、ＣＰＵ１０１によって演算される仮想空間Ｒを図示している。仮想空間Ｒには、仮想ロボット６００Ｉが配置される。仮想ロボット６００Ｉは、仮想アーム６０１Ｉと、仮想ハンド６０２Ｉとを含んでいる。本実施形態では、仮想ロボット６００Ｉの先端部は、仮想ハンド６０２Ｉである。仮想空間Ｒを規定する座標系をＸＹＺの直交座標系とする。
【００２４】
仮想ロボット６００Ｉは、例えばロボットのＣＡＤデータなどの３次元データに基づき、コンピュータ内で演算により求められる仮想的なモデルである。ＣＰＵ１０１は、仮想ロボット６００Ｉを仮想空間Ｒ内で動作させる演算処理を行う。なお、ロボットの周辺に部材が配置される場合には、その部材に対応する仮想部材も、仮想空間Ｒにおいて仮想ロボット６００Ｉの周辺に配置するようにしてもよい。
【００２５】
図４は、ステップＳ１０２のシミュレーションの処理を示すフローチャートである。以下、図４に示すフローチャートについて詳細に説明する。まず、ＣＰＵ１０１は、仮想ロボット６００Ｉが配置される仮想空間Ｒにおいて仮想点Ｐを生成する（Ｓ２００）。
【００２６】
仮想点Ｐの数は１つの場合であってもよいが複数の場合が好ましく、本実施形態では、ＣＰＵ１０１は、入力された条件に従い、仮想ロボット６００Ｉが配置される仮想空間Ｒにおいて複数の仮想点Ｐを生成する。仮想点Ｐを構成する要素は、例えば（Ｘ，Ｙ，Ｚ）といった３次元の位置データである。仮想点Ｐは、現実のロボット６００において、作業を行わせる可能性のある位置（作業位置）の候補、即ちＴＣＰの移動位置の候補を示している。例えば、ランダムピッキングでは、ワークＷが存在する可能性がある位置の候補、またはワークＷを把持する位置の候補ということになる。
【００２７】
具体的に説明すると、ＣＰＵ１０１は、図３に示すステップＳ１０１において、第１領域である領域Ｒ１の指定を受け、図４に示すステップＳ２００において、第１領域内である領域Ｒ１内で複数の仮想点Ｐを生成する。図５には、領域Ｒ１として直方体の領域を例示している。ＣＰＵ１０１は、図５に示すように、領域Ｒ１をＸＹＺ軸方向に等分した格子点（ノード）を、仮想点Ｐとして生成する。
【００２８】
本実施形態では、ＣＰＵ１０１は、領域Ｒ１の条件として、２つの点ＰＡ（ｘＡ，ｙＡ，ｚＡ）および点ＰＢ（ｘＢ，ｙＢ，ｚＢ）の指定を受ける。領域Ｒ１は、仮想空間Ｒを規定する座標系において、点ＰＡ（ｘＡ，ｙＡ，ｚＡ）および点ＰＢ（ｘＢ，ｙＢ，ｚＢ）の２点を対角の頂点とする直方体の領域である。Ｘ軸方向の格子点の数をＬ、Ｙ軸方向の格子点の数をＭ、Ｚ軸方向の格子点の数をＮとする。仮想点を生成する条件は、（Ｌ，Ｍ，Ｎ）のパラメータで指定される。本実施形態では、ＣＰＵ１０１は、領域Ｒ１に含まれる、Ｌ×Ｍ×Ｎ個の仮想点Ｐを生成する。なお、点ＰＡ及び点ＰＢは、ユーザが図２に示す入力部１２１により指定されるようにしてもよいし、予めＨＤＤ１０４に格納されていてもよい。
【００２９】
条件（Ｌ，Ｍ，Ｎ）は、格子点の間隔が作業対象の寸法、例えば作業対象の最小の辺と同程度、又は小さい値となるようにするのがよい。また、仮想点Ｐは、ロボット６００に動作させる可能性のある位置の候補であることから、格子点の間隔は、必要とされる精度に応じた値とするのがよい。
【００３０】
ＣＰＵ１０１は、ステップＳ２００で生成した複数の仮想点Ｐの中から１つを選択し（Ｓ２０１）、目標点を生成する（Ｓ２０２）。図６（ａ）、図６（ｂ）、及び図６（ｃ）は、第１実施形態における処理を説明するための模式図である。各図６（ａ）、図６（ｂ）、及び図６（ｃ）には、選択した仮想点から目標点を生成する処理を模式的に表している。
【００３１】
図６（ａ）に示すように、ステップＳ２０１において選択された仮想点Ｐの座標値を（ｘ１，ｙ１，ｚ１）とする。ステップＳ２０２において、ＣＰＵ１０１は、入力された、目標点を生成する条件に基づき、選択した１つの仮想点Ｐに対して、図６（ｃ）に示すような２つの目標点（到着点及び起点）Ｏｉ（１），Ｏｉ（２）からなる組Ｑｉを、複数生成する。なお、ｉは、生成される目標点の組を区別するために各組に付した通し番号を示す表記である。よって、Ｑｉは、ｉ番目の目標点の組であることを示している。図６（ｃ）には、複数ある組Ｑｉのうち、１組のみ図示している。
【００３２】
目標点Ｏｉ（１）は、仮想ロボット６００Ｉの到着点である。目標点Ｏｉ（２）は、仮想ロボット６００Ｉが目標点Ｏｉ（１）へアプローチする起点である。目標点Ｏｉ（１），Ｏｉ（２）は、３次元空間の位置及び姿勢のパラメータによって表現される。例えば、姿勢のパラメータの表現に、ＺＹＸ系のオイラー角を用い、（Ｘ，Ｙ，Ｚ，ＲＸ，ＲＹ，ＲＺ）といったような６次元のデータとして取り扱う。ＲＸ、ＲＹ、ＲＺは、それぞれＺＹＸ系のオイラー角におけるＸ軸、Ｙ軸、Ｚ軸回りの回転角である。つまり、姿勢成分（ＲＸ、ＲＹ、ＲＺ）は、仮想空間Ｒにおける仮想ロボット６００Ｉの姿勢、具体的には仮想ロボット６００Ｉの先端部である仮想ハンド６０２Ｉの姿勢を示している。
【００３３】
ステップＳ２０２の処理について具体的に説明する。まず、ＣＰＵ１０１は、仮想ロボット６００Ｉが仮想点Ｐへアプローチできるかどうかを試行する姿勢成分（ｒｘ１，ｒｙ１，ｒｚ１）を生成し、生成した姿勢成分（ｒｘ１，ｒｙ１，ｒｚ１）を仮想点Ｐに付加することで、目標点Ｏｉ（１）を生成する。図６（ｂ）に示すように、目標点Ｏｉ（１）は、６つのパラメータ（ｘ１，ｙ１，ｚ１，ｒｘ１，ｒｙ１，ｒｚ１）で表現される。
【００３４】
次に、ＣＰＵ１０１は、目標点Ｏｉ（１）を基準とし、目標点Ｏｉ（１）に、所定の演算を施すことで、図６（ｃ）に示すように目標点Ｏｉ（２）を算出する。所定の演算は、例えば、ベクトル又は同次変換行列などを用いて座標変換を施す演算である。このベクトル又は同次変換行列は、目標点を生成する条件として与えられる。なお、この演算を施して目標点Ｏｉ（２）を算出できたとしても、目標点Ｏｉ（２）から目標点Ｏｉ（１）へ仮想ロボット６００Ｉを動作させることができるとは限らない。
【００３５】
図７（ａ）及び図７（ｂ）は、第１実施形態における処理を説明するための模式図である。以下、ベクトルを用いて目標点Ｏｉ（１）を座標変換することで目標点Ｏｉ（２）を求める場合を例に説明する。ここで、目標点Ｏｉ（２）は、目標点Ｏｉ（１）へロボット６００が作業を行う仮想的な起点であるから、目的とする作業に支障がないように条件が与えられることが好ましい。例えば、ランダムピッキングにおいて条件Ｖａと条件ＶｂがＣＰＵ１０１に与えられた場合を考える。条件Ｖａおよび条件Ｖｂは目標点Ｏｉ（１）から目標点Ｏｉ（２）に向かうベクトルである。ベクトルのノルムは｜Ｖａ｜＜｜Ｖｂ｜の関係とする。
【００３６】
図７（ａ）は、条件ＶａがＣＰＵ１０１に与えられた際に算出される、ある目標点Ｏｉ（１）および目標点Ｏｉ（２）と、現実のワークＷおよびロボットハンド６０２との対応関係を示す模式図である。図７（ｂ）は、条件ＶｂがＣＰＵ１０１に与えられた際に算出される、ある目標点Ｏｉ（１）および目標点Ｏｉ（２）と、現実のワークＷおよびロボットハンド６０２との対応関係を示す模式図である。目標点Ｏｉ（１）はロボットハンド６０２がワークＷを把持する点に対応させており、目標点Ｏｉ（２）はワークＷを把持するためのアプローチの起点に対応させている。また、ＴＣＰはロボットハンド６０２の先端に設定されているものとし、ＴＣＰと目標点Ｏｉ（２）が一致するように図示している。
【００３７】
図７（ａ）に示すように、条件Ｖａではロボットハンド６０２の先端がワークＷを覆うような状態となっている。このような条件は、目標点Ｏｉ（２）へ移動する過程でワークＷとロボットハンド６０２が干渉する可能性が高い。したがって、ロボットハンド６０２とワークＷとがぶつからないよう、ロボットハンド６０２とワークＷとの距離を十分取った条件Ｖｂの方が好ましい。具体的には、条件Ｖｂのノルムは、ロボットハンド６０２がワークＷを把持する際のロボットハンド６０２の掴み代以上、すなわちワークＷとロボットハンド６０２の重なり合う部分の距離以上であるのが好ましい。この所定距離以上のノルムを持つベクトルが条件ＶｂとしてＣＰＵ１０１に与えられることになる。なお、目標点Ｏｉ（２）を算出する所定の演算のアルゴリズムは、ワークＷの把持条件から自動的又は半自動的に決定されるようにしてもよい。
【００３８】
図８は、第１実施形態における処理を説明するための模式図である。具体的には、図８は、仮想空間Ｒ´で把持条件、すなわちワークを把持する際の仮想ワークＷＩと仮想ハンド６０２Ｉの位置関係を側面から示した模式図である。仮想ワークＷＩは、ＣＰＵ１０１が、ＣＡＤデータなどの３次元データに基づき生成した仮想的なワークである。図８に示す距離Ｄは、本実施形態では所定距離である。距離Ｄは、例えば仮想ワークＷＩと仮想ハンド６０２Ｉの先端とが重なり合う部分の距離である。このように、距離Ｄは、仮想ワークＷＩのサイズ、即ちワークＷのサイズに応じて決定される。距離Ｄは、ユーザが決定してもよいし、ＣＰＵ１０１が自動で決定してもよい。例えば、ユーザが図２に示す入力部１２１により仮想ワークＷＩ及び仮想ハンド６０２Ｉのデータを入力し、ＣＰＵ１０１が入力を受けた仮想ワークＷＩ及び仮想ハンド６０２Ｉのデータに基づいて距離Ｄを算出してもよい。ＣＰＵ１０１は、この距離Ｄに基づき、距離Ｄ以上のノルムを持つベクトルを生成し、このベクトルを用いて目標点Ｏｉ（２）を算出する所定の演算を行う。即ち、ＣＰＵ１０１は、目標点Ｏｉ（１）から距離Ｄ以上離れるように目標点Ｏｉ（２）を算出する。なお、所定距離を、距離ＤにマージンＭＡを加えたノルムとしてもよく、ＣＰＵ１０１は、このノルムを持つベクトルを生成し、このベクトルを用いて所定の演算を行うようにしてもよい。なお、エンドエフェクタがロボットハンド６０２の場合について説明したが、これに限定するものではない。例えば、エンドエフェクタが吸着ハンドである場合は、所定距離として、距離Ｄに変えて、吸着パッドの厚みとしてもよい。
【００３９】
本実施形態では、図６（ｂ）に示す６つのパラメータ（ｘ１，ｙ１，ｚ１，ｒｘ１，ｒｙ１，ｒｚ１）のうち、位置成分（ｘ１，ｙ１，ｚ１）の値を同一とし姿勢成分（ｒｘ１，ｒｙ１，ｒｚ１）の値が互いに異なる複数の目標点Ｏｉ（１）を生成する。
【００４０】
姿勢成分（ｒｘ１，ｒｙ１，ｒｚ１）の各値は、姿勢成分の各軸周りの回転角の範囲（試行しようとする範囲）を等分割することで生成する。オイラー角には表現上の特異点が存在する、すなわち、ある条件下では値が不連続になり等分割が難しい場合があるため、一度クォータニオン等に変換してから等分割してもよい。本実施形態では、説明を簡単にするため、オイラー角を用いる。姿勢成分の各軸周りの回転角の範囲と、この範囲の分割数は、目標点を生成する条件として与えられる。
【００４１】
図９（ａ）、図９（ｂ）、及び図９（ｃ）は、第１実施形態において、仮想ロボットがアプローチ可能かどうかを試行する姿勢の範囲を示す模式図である。図９（ａ）にはＸ軸まわりの角度の範囲、図９（ｂ）にはＹ軸まわりの角度の範囲、図９（ｃ）にはＺ軸まわりの角度の範囲を図示している。図９（ａ）に示すＲｘｌｏｗｅｒ、Ｒｘｕｐｐｅｒ、Ｒｘｎｕｍは、Ｘ軸周りの回転角の範囲の最小値、範囲の最大値、範囲を分割して得られるノード数をそれぞれ示している。図９（ｂ）に示すＲｙｌｏｗｅｒ、Ｒｙｕｐｐｅｒ、Ｒｙｎｕｍは、Ｙ軸周りの回転角の範囲の最小値、範囲の最大値、範囲を分割して得られるノード数をそれぞれ示している。図９（ｃ）に示すＲｚｌｏｗｅｒ、Ｒｚｕｐｐｅｒ、Ｒｚｎｕｍは、Ｚ軸周りの回転角の範囲の最小値、範囲の最大値、範囲を分割して得られるノード数をそれぞれ示している。
【００４２】
このように、本実施形態では、離散的に生成した軸毎の姿勢成分を組み合わせることにより、Ｒｘｎｕｍ×Ｒｙｎｕｍ×Ｒｚｎｕｍ（＝Ｏｎｕｍ）個の姿勢成分が生成される。つまり、１つの仮想点Ｐに対して、２つの目標点Ｏｉ（１），Ｏｉ（２）からなる組Ｑｉが、Ｏｎｕｍ個、生成される。
【００４３】
図４に示すステップＳ２０２の次に、ＣＰＵ１０１は、仮想ロボット６００Ｉが目標点Ｏｉ（２）から目標点Ｏｉ（１）へアプローチ可能かどうかを、全ての組Ｑｉについてそれぞれ判定する（Ｓ２０３）。目標点Ｏｉ（２）から目標点Ｏｉ（１）へ仮想ロボット６００Ｉがアプローチ可能かどうかは、例えば目標点Ｏｉ（２）において、仮想ロボット６００Ｉが特異点へ侵入するかどうか、仮想ロボット６００Ｉが可動範囲を逸脱するかどうかなどを判定すればよい。アプローチ可能と判定された仮想ロボット６００Ｉの姿勢を示す点の集合が、仮想ロボット６００Ｉが仮想点Ｐにアプローチ可能な、仮想点Ｐにおける仮想ロボット６００Ｉの姿勢の範囲となる。なお、本実施形態では、仮想点Ｐにおける仮想ロボット６００Ｉの姿勢の範囲は、離散的な点の集合であるが、これに限定するものではない。姿勢を示す隣り合う２つの点の間も、アプローチ可能な姿勢の範囲としてもよい。
【００４４】
以上、ＣＰＵ１０１は、ステップＳ２０２において、仮想点Ｐにアプローチ可能かどうかを試行する仮想ロボット６００Ｉの動作の起点となる目標点Ｏｉ（２）を、仮想点Ｐにおける仮想ロボット６００Ｉの複数の姿勢の各々に対応して算出する。ＣＰＵ１０１は、ステップＳ２０３において、各目標点Ｏｉ（２）から仮想点Ｐへアプローチ可能かどうかを、仮想点Ｐにおける複数の姿勢の各々について判定することで、アプローチ可能な仮想ロボット６００Ｉの姿勢の範囲を算出する。
【００４５】
尚ステップＳ２０３の処理でＣＰＵ１０１は、２つの目標点Ｏｉ（１），Ｏｉ（２）間を所定の補間方法で補間することで仮想ロボット６００Ｉの軌道を生成し、軌道に従って仮想ロボット６００Ｉを動作させることでアプローチ可能か否かを判定してもよい。この場合、補間方法は、条件としてステップＳ１０１においてＣＰＵ１０１へ入力されるように構成しておけばよい。
【００４６】
次に、ＣＰＵ１０１は、仮想点Ｐについて算出した姿勢の範囲を指標化して、仮想点Ｐに対応付けられた指標値ｆ（Ｐ）を算出する（Ｓ２０４）。１つの仮想点Ｐに対する指標値ｆ（Ｐ）は、例えば、次式によって算出される評価値である。
【数１】
2020175471.tif 000003
【００４７】
Ｏｎｕｍは組Ｑｉの総数である。ｒｅａｃｈａｂｌｅ（Ｏｉ）は、組Ｑｉにおいてアプローチ可能なら１を、そうでなければ０を与える式である。
【００４８】
ＣＰＵ１０１は、仮想空間Ｒにおける全ての仮想点Ｐを選択したかどうかを判断する（Ｓ２０５）。全ての仮想点Ｐを選択していない場合（Ｓ２０５：Ｎｏ）、ＣＰＵ１０１は、複数の仮想点Ｐの中から選択済みでない次の仮想点Ｐを１つ選択する（Ｓ２０６）。その後、ステップＳ２０２の処理へ戻り、上述の処理を繰り返す。ＣＰＵ１０１は、上記処理を繰り返すことで、複数の仮想点Ｐの各々について算出した各々の姿勢の範囲を指標化して、複数の仮想点Ｐの各々に対応付けられた各々の指標値を算出する。
【００４９】
全ての仮想点Ｐを選択し終えた場合（Ｓ２０５：Ｙｅｓ）、ＣＰＵ１０１は、次のステップＳ２０７の処理をする。図１０は、第１実施形態における情報処理方法の説明図である。図１０には、仮想空間Ｒにおいて指定された第２領域である領域Ｒ２を図示している。領域Ｒ２は、図３に示すステップＳ１０１において領域Ｒ１の範囲内で指定される。領域Ｒ２は、領域Ｒ１と同様の方法により指定される。例えば、領域Ｒ２は、ユーザが図２の入力部１２１を操作することにより指定されようにしてもよいし、ＨＤＤ１０４に格納されたデータにより指定されるようにしてもよい。
【００５０】
ＣＰＵ１０１は、ステップＳ１０１で指定を受けた領域Ｒ２に包含される２つ以上の仮想点Ｐに対応付けられた２つ以上の指標値ｆ（Ｐ）の平均値Ａｖを算出する（Ｓ２０７）。ＣＰＵ１０１は、領域Ｒ２が複数指定されている場合は、複数の領域Ｒ２の各々に対して、平均値Ａｖを算出する。したがって、領域Ｒ２が複数の場合は、平均値Ａｖが複数算出される。平均値Ａｖは、領域Ｒ２に包含される仮想点Ｐの指標値ｆ（Ｐ）に基づき、次式によって算出される。
【数２】
2020175471.tif 000004
【００５１】
ここで、Ｓは領域Ｒ２に包含される仮想点Ｐの集合を表す。なお、ユーザが、平均値Ａｖの演算に用いる２つ以上の仮想点Ｐを、領域Ｒ２に包含させることで指定する場合について説明したが、これに限定するものではない。例えば、ユーザが仮想点Ｐを１つ１つ選択することで２つ以上の仮想点Ｐを指定するようにしてもよい。
【００５２】
ＣＰＵ１０１は、シミュレーションの処理の終了後、図３に示す次のステップＳ１０３の処理を行う。ステップＳ１０３において、ＣＰＵ１０１は、算出した指標値ｆ（Ｐ）および平均値Ａｖを示す画像を、表示部１２２へ表示させる。本実施形態では、ＣＰＵ１０１は、算出した指標値ｆ（Ｐ）および平均値Ａｖを示す画像として、数値のリスト（表）の画像を表示部１２２へ表示させる。
【００５３】
図１１（ａ）及び図１１（ｂ）は、第１実施形態において、表示部１２２が表示する画像の一例を示す説明図である。図１１（ａ）に示す「領域ＩＤ」は、領域Ｒ２に付与されたＩＤである。「点数」は、領域Ｒ２に包含される仮想点Ｐの数である。「合計値」は、領域Ｒ２に含まれる２以上の仮想点Ｐに対応する２以上の指標値ｆ（Ｐ）の合計値である。「平均値」は、平均値Ａｖを示している。このとき、平均値Ａｖが高いものから降順にソートして表示してもよい。このようにすれば、候補として複数の領域Ｒ２がある場合に、最も動作の余裕がある領域が容易に特定できるようになる。
【００５４】
図１１（ｂ）は、領域ＩＤがＡ−００１の領域Ｒ２に含まれる各仮想点Ｐに対応する各指標値ｆ（Ｐ）のリストを示す。図１１（ａ）及び図１１（ｂ）に示すように表示部１２２にリストが表示されることで、ユーザは、定量的に値を比較することが可能となる。
【００５５】
以上、第１実施形態によれば、ユーザが、情報処理装置１００による演算結果を参照することで、仮想ロボット６００Ｉの姿勢の範囲に基づきトレイ５５０の位置を決めることができる。例えば、ユーザが、仮想ロボット６００Ｉの姿勢の範囲が相対的に広いと判断すれば、その位置にトレイ５５０を配置することができる。このように、第１実施形態の情報処理装置１００によれば、ロボット６００が作業対象であるワークＷにアプローチできるかどうかの確認をユーザが効率的に行えるように支援することができる。これにより、ユーザは、ロボットシステム５００の設計、例えばトレイ５５０の配置の設計を効率的に行うことができる。
【００５６】
また、仮想ロボット６００Ｉの姿勢の範囲を指標化した指標値ｆ（Ｐ）を用いることで、ロボット６００が作業対象にアプローチできるかどうかを、指標値ｆ（Ｐ）の大小で、ユーザが簡単に比較することができる。
【００５７】
さらに、ユーザが指定した領域Ｒ２に含まれる２つ以上の仮想点Ｐに対応付けられた２つ以上の指標値ｆ（Ｐ）の平均値Ａｖにより、より効率的に、ロボット６００が作業対象であるワークＷにアプローチできるかどうかを定量的に確認することができる。そして、ユーザは、これら指標値ｆ（Ｐ）又は平均値Ａｖを、表示部１２２に表示された画像で確認することができる。
【００５８】
特に、ランダムピッキングを行うロボットシステム５００では、ワークＷの状態に応じて種々様々な位置姿勢へロボット６００を動作させる必要があるため、十分に動作の余裕が確保されるよう、トレイ５５０の配置を設計することができる。
【００５９】
［変形例］
ＣＰＵ１０１が表示部１２２に表示させる仮想点Ｐ及び指標値ｆ（Ｐ）を表す画像が、数値リストの画像である場合について説明したが、これに限定するものではない。図１２（ａ）及び図１２（ｂ）は、表示部１２２が表示する画像の変形例を示す説明図である。
【００６０】
ＣＰＵ１０１は、図１２（ａ）に示すように、仮想点Ｐの３次元的な配置を３次元画像１３０で表示部１２２に表示させる。仮想点Ｐは、図１２（ａ）において、表示部１２２に例えば円形の画像１４０で表示される。ＣＰＵ１０１は、この３次元画像１３０において仮想点Ｐの表示形態、例えば色、濃淡（例えばグレースケール）、パターンなどを、指標値ｆ（Ｐ）の大小に応じて異ならせる。図１２（ａ）においては、仮想点Ｐを示す円形の画像１４０の内部を指標値ｆ（Ｐ）の大小に応じて異ならせたハッチングパターンとしたものを例示している。このように、指標値ｆ（Ｐ）の大小に応じて仮想点Ｐの表示形態を異ならせることで、ユーザは、指標値ｆ（Ｐ）の大小関係を、視覚的に容易に確認することができる。
【００６１】
また、ＣＰＵ１０１は、領域Ｒ２の３次元的な配置を３次元画像１３０で表示部１２２に表示させる。図１２（ａ）において、領域Ｒ２に対応する画像１４１を、点線で図示している。このように、ユーザは、領域Ｒ２を視覚的に確認することができる。したがって、ユーザは、表示部１２２を見ながら、相対的に大きい指標値のところに領域Ｒ２を指定することもできる。なお、平均値Ａｖを求めるのに用いられる２つ以上の仮想点Ｐを、図１２（ａ）において、ポインティングデバイスを用いて、２つ以上の仮想点Ｐの画像１４０をユーザが１つ１つ選択することにより指定するようにしてもよい。
【００６２】
また、ＣＰＵ１０１は、図１２（ｂ）に示すように、３次元画像１３０において領域Ｒ２の表示形態を平均値Ａｖの大小に応じて異ならせてもよい。図１２（ｂ）においては、２つの領域Ｒ２に対応する２つの画像１４１１，１４１２を例示している。そして、画像１４１１，１４１２の内部を平均値Ａｖの大小に応じて異ならせたハッチングパターンとしたものを例示している。
【００６３】
このように、ユーザは、領域Ｒ２における平均値Ａｖを視覚的に確認することができる。したがって、ユーザは、表示部１２２を見ながら、相対的に大きい平均値のところに領域Ｒ２を指定することができる。また、複数の領域Ｒ２に対応する画像を表示部１２２に表示させることで、どの領域において指標値の平均値が大きいかを、視覚的に容易に確認することができる。つまり、複数の領域Ｒ２それぞれに対応する画像のパターンを比較することにより、ロボットの動作に余裕がある領域を視覚的に確認することができる。よって、ランダムピッキングを行うロボットシステム５００では、トレイ５５０の配置候補が複数ある場合、複数の候補でロボットの動作の余裕を容易に比較することができる。
【００６４】
以上、表示部１２２に画像を表示させる場合について説明したが、これに限定するものではない。上述のシミュレーションにより得られたデータを、メモリや他のコンピュータ等の装置に出力するようにしてもよい。
【００６５】
［第２実施形態］
第２実施形態に係るシミュレーションについて説明する。なお、第２実施形態において、システムの構成は、第１実施形態で説明した図１及び図２と同様であり、説明を省略する。図１３は、第２実施形態に係る情報処理方法のフローチャートである。第１実施形態では、領域Ｒ２を、ユーザが入力部１２１を操作することにより、又はＨＤＤ１０４に格納されたデータにより指定する場合について説明したが、第２実施形態では、予め決められた手順に従い、領域Ｒ２をＣＰＵ１０１が自動で設定する。そして、第２実施形態では、ＣＰＵ１０１は、領域Ｒ２の位置及び／又はサイズを変更して、指標値ｆ（Ｐ）の平均値Ａｖが所定値以上となる領域Ｒ２を探索する。
【００６６】
図１３において、ステップＳ３００〜Ｓ３０６の処理は、図４に示すステップＳ２００〜２０６の処理と同様であるため、説明を省略する。ＣＰＵ１０１は、全ての仮想点Ｐに対応する指標値ｆ（Ｐ）を求めた場合（Ｓ３０５：Ｙｅｓ）、第２領域である領域Ｒ２を設定する（Ｓ３０７）。ＣＰＵ１０１は、ステップＳ３０７で設定した領域Ｒ２に包含される２つ以上の仮想点Ｐに対応付けられた２つ以上の指標値ｆ（Ｐ）の平均値Ａｖを算出する（Ｓ３０８）。次に、ＣＰＵ１０１は、図５に示す領域Ｒ１内で探索が終了したかどうかを判断し（Ｓ３０９）、探索が終了していなければ（Ｓ３０９：Ｎｏ）、位置及び／又はサイズの異なる次の領域Ｒ２を設定する（Ｓ３１０）。このように、ＣＰＵ１０１は、領域Ｒ２の位置及び／又はサイズを変更して、領域Ｒ２の位置及び／又はサイズに対応した複数の平均値Ａを算出する。即ち、ＣＰＵ１０１は、位置及び／又はサイズの異なる複数の領域Ｒ２を設定し、複数の領域Ｒ２に対応した複数の平均値Ａｖを算出する。ＣＰＵ１０１は、探索が終了したならば（Ｓ３０９：Ｙｅｓ）、図３に示すステップＳ１０３において、平均値Ａｖが所定値以上となる領域Ｒ２を示す画像を、表示部１２２に表示させる。平均値Ａｖが所定値以上となる領域Ｒ２を示す画像は、例えば第１実施形態及びその変形例で説明したようなリスト画像や３次元的な画像である。
【００６７】
以上、第２実施形態によれば、例えばトレイ５５０を配置する候補が情報処理装置１００によって自動で求められるので、より効率的に、ロボットシステムの設計、即ちトレイ５５０の配置の設計をより効率的に行うことができる。
【００６８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【００６９】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７０】
１００…情報処理装置、１０１…ＣＰＵ（処理部）、６００Ｉ…仮想ロボット
【図１】
2020175471.tif 000005
【図２】
2020175471.tif 000006
【図３】
2020175471.tif 000007
【図４】
2020175471.tif 000008
【図５】
2020175471.tif 000009
【図６】
2020175471.tif 000010
【図７】
2020175471.tif 000011
【図８】
2020175471.tif 000012
【図９】
2020175471.tif 000013
【図１０】
2020175471.tif 000014
【図１１】
2020175471.tif 000015
【図１２】
2020175471.tif 000016
【図１３】
2020175471.tif 000017