(57)【要約】【課題】  設定された作業内容に基づいてワークを把持する場合に、次の動作の障害等にならないような把持手法を決定可能なロボット制御装置及びロボットシステム等を提供すること。【解決手段】  ロボット制御装置は動作指示情報を受け付ける入力部（外部Ｉ／Ｆ部１６０）と、把持パターン情報を記憶するデータベース（記憶部１１０）と、入力部からの情報とデータベースからの情報に基づいて制御処理を行う処理部１２０とを含み、入力部は動作指示情報として一連の第１〜第Ｎの動作指示を受け付け、処理部１２０は第ｉの動作指示を実行可能な第ｉの把持パターン情報をデータベースから読み出すとともに、第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報をデータベースから読み出し、第ｉの把持パターン情報と第ｊの把持パターン情報とに基づき制御処理を行う。【選択図】      図２
2012206219.tif 000002
【特許請求の範囲】
【請求項１】
ワークを把持することが可能なハンドを備えるアームを有するロボットの制御装置であって、
前記ロボットの動作を指示する情報である動作指示情報を受け付ける入力部と、
前記ハンドが前記ワークを把持する際の動作パターンを記述した情報である把持パターン情報を記憶するデータベースと、
前記入力部からの情報と、前記データベースからの情報に基づいて、前記ロボットの制御処理を行う処理部と、
を含み、
前記入力部は、
前記動作指示情報として第１〜第Ｎ（Ｎは２以上の整数）の動作指示を受け付け、
前記処理部は、
前記第１〜第Ｎの動作指示のうちの第ｉ（ｉは１以上Ｎ−１以下の整数）の動作指示を実行可能な第ｉの把持パターン情報を前記データベースから読み出すとともに、前記第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報を前記データベースから読み出し、前記第ｉの把持パターン情報と前記第ｊの把持パターン情報とに基づいて前記ロボットの制御処理を行うことを特徴とするロボット制御装置。
【請求項２】
請求項１において、
前記処理部は、
前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群の中から、前記第ｉの動作指示及び前記第ｊの動作指示を順次実行可能な把持パターンの組み合わせを選択することで、前記ロボットの制御処理を行うことを特徴とするロボット制御装置。
【請求項３】
請求項１又は２において、
前記第ｉの動作指示は、
前記ワークの把持を指示する動作指示であり、
前記第ｊの動作指示は、
把持した前記ワークを移動させる動作指示及び前記ワークの姿勢を変える動作指示の少なくとも一方の動作指示であり、
前記処理部は、
前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群のうちの一致するものを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットに行わせる制御処理を行うことを特徴とするロボット制御装置。
【請求項４】
請求項３において、
把持を行う前の前記ワークの状態を第１の状態とし、移動及び姿勢変更の少なくとも一方が行われた後の前記ワークの状態を第２の状態とした場合に、
前記第ｉの把持パターン群は、
前記第１の状態の前記ワークを把持する把持パターン群であり、
前記第ｊの把持パターン群は、
前記第２の状態の前記ワークを把持する把持パターン群であり、
前記処理部は、
前記第ｉの把持パターン群と前記第ｊの把持パターン群のうちの一致するものを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットに行わせる制御処理を行うことを特徴とするロボット制御装置。
【請求項５】
請求項１又は２において、
前記第ｉの動作指示は、
前記ロボットの第１のハンドと第２のハンドのいずれか一方で前記ワークを把持することを指示する動作指示であり、
前記第ｊの動作指示は、
前記ワークの持ち替え動作を行い、前記第１のハンドと前記第２のハンドのうちの他方のハンドで前記ワークを把持することを指示する動作指示であり、
前記処理部は、
前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群のうちの、前記第１のハンド及び前記第２のハンドの両方のハンドで同時に把持可能なパターンを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットの行わせる制御処理を行うことを特徴とするロボット制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記データベースは、
前記把持パターン情報として、把持する方向と把持する面を特定するパターンの情報を記憶することを特徴とするロボット制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記データベースは、
前記ハンドを特定する情報であるハンド特定情報及び前記前記ワークを特定する情報であるワーク特定情報を記憶し、
前記処理部は、
前記ハンド特定情報及び前記ワーク特定情報に基づいて前記ロボットの制御処理を行うことを特徴とするロボット制御装置。
【請求項８】
請求項７において、
前記処理部は、
前記ハンド特定情報及び前記ワーク特定情報と、前記動作指示情報とに基づいて、前記動作指示情報により特定される前記動作指示を実行可能な把持パターン情報を前記データベースから取得することを特徴とするロボット制御装置。
【請求項９】
請求項７又は８において、
前記データベースは、
前記ハンド特定情報として、ハンドサイズ情報及びハンド姿勢情報の少なくとも一方の情報を記憶し、前記ワーク特定情報として、ワークサイズ情報及びワーク姿勢情報の少なくとも一方の情報を記憶することを特徴とするロボット制御装置。
【請求項１０】
請求項７乃至９のいずれかにおいて、
前記データベースは、
前記アームを特定する情報であるアーム特定情報を記憶し、
前記処理部は、
前記ハンド特定情報、前記ワーク特定情報及び前記アーム特定情報に基づいて前記ロボットの制御処理を行うことを特徴とするロボット制御装置。
【請求項１１】
請求項１０において、
前記データベースは、
前記アーム特定情報として、前記アームの長さ情報及び前記アームの回転情報の少なくとも一方の情報を記憶することを特徴とするロボット制御装置。
【請求項１２】
請求項１乃至１１のいずれかにおいて、
前記ワークの姿勢情報を検出する姿勢情報検出部を含み、
前記処理部は、
前記姿勢情報に基づいて前記ロボットの制御処理を行うことを特徴とするロボット制御装置。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
前記処理部は、
前記第１〜第Ｎの動作指示に対応する動作を前記ロボットに行わせる把持パターンとして、複数の把持パターンが選択された場合に、選択された把持パターンをユーザーに提示する処理を行うことを特徴とするロボット制御装置。
【請求項１４】
請求項１乃至１３のいずれかに記載のロボット制御装置と、
前記ワークを把持する前記ハンドを備える前記アームを有するロボットと、
を含むことを特徴とするロボットシステム。
【請求項１５】
ワークを把持することが可能なハンドを備えるアームを有するロボットと、
前記ロボットの動作を指示する情報である動作指示情報を受け付ける入力部と、
前記ハンドが前記ワークを把持する際の動作パターンを記述した情報である把持パターン情報を記憶するデータベースと、
前記入力部からの情報と、前記データベースからの情報に基づいて、前記ロボットの制御処理を行う処理部と、
を含み、
前記入力部は、
前記動作指示情報として第１〜第Ｎ（Ｎは２以上の整数）の動作指示を受け付け、
前記処理部は、
前記第１〜第Ｎの動作指示のうちの第ｉ（ｉは１以上Ｎ−１以下の整数）の動作指示を実行可能な第ｉの把持パターン情報を前記データベースから読み出すとともに、前記第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報を前記データベースから読み出し、前記第ｉの把持パターン情報と前記第ｊの把持パターン情報とに基づいて前記ロボットの制御処理を行うことを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置及びロボットシステム等に関する。
【背景技術】
【０００２】
産業用ロボットとしてアーム及びハンドを有するロボットが広く用いられている。このような産業用ロボットではアーム及びハンドを用いて、ワークを把持したり、ワークに対して処理を行うことが可能である。
【０００３】
産業用ロボットに対してユーザーの意図通りの動作を行わせるために、ロボットに実行させる作業内容を教示することが必要となる。特許文献１では、対象となるワークに適用可能な把持手法をユーザーに提示し、ユーザーに対して適切な把持手法の選択を促す手法が提案されている。この特許文献１の手法では、周囲の障害物等も考慮した上で複数の把持手法を提示する。特に、ワークの撮影画像にハンド把持モデル画像を重ねて表示することで視覚的にわかりやすい形で適用可能な把持手法を提示する。
【０００４】
また特許文献２では、居住空間内において物を移動させるときに、持ち替えをしないで済むような把持位置を決定する手法が提案されている。特に、ロボットからユーザーにワークを渡す際に、ユーザーがつかむ部分を把持しないようにすることで、ユーザーが持ちやすいようにする手法となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２１４２１２号公報
【特許文献２】特開２００４−２６８１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の手法では、ワークに適用可能な把持手法を提示するものの、最終的な選択はユーザーにゆだねられてしまっている。また、特許文献２の手法では、ワークを受け渡す際の持ち替えを避ける手法に限定されており、他の状況に置ける効率的な把持手法を提案するものではない。
【０００７】
本発明の目的は、設定された作業内容に基づいてワークを把持する場合に、次の動作の障害等にならないような把持手法を決定可能なロボット制御装置及びロボットシステム等を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様は、ワークを把持することが可能なハンドを備えるアームを有するロボットの制御装置であって、前記ロボットの動作を指示する情報である動作指示情報を受け付ける入力部と、前記ハンドが前記ワークを把持する際の動作パターンを記述した情報である把持パターン情報を記憶するデータベースと、前記入力部からの情報と、前記データベースからの情報に基づいて、前記ロボットの制御処理を行う処理部と、を含み、前記入力部は、前記動作指示情報として第１〜第Ｎ（Ｎは２以上の整数）の動作指示を受け付け、前記処理部は、前記第１〜第Ｎの動作指示のうちの第ｉ（ｉは１以上Ｎ−１以下の整数）の動作指示を実行可能な第ｉの把持パターン情報を前記データベースから読み出すとともに、前記第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報を前記データベースから読み出し、前記第ｉの把持パターン情報と前記第ｊの把持パターン情報とに基づいて前記ロボットの制御処理を行うロボット制御装置に関係する。
【０００９】
本発明の一態様では、第ｉの動作指示を実行可能な第ｉの把持パターン情報と、第ｊの動作指示を実行可能な第ｊの把持パターン情報とに基づいてロボットの制御処理を行う。よって、現状態の情報だけでなく次状態の情報を用いて制御処理を行うため、次の動作の障害等にならない把持手法を決定すること等が可能になる。
【００１０】
また、本発明の一態様では、前記処理部は、前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群の中から、前記第ｉの動作指示及び前記第ｊの動作指示を順次実行可能な把持パターンの組み合わせを選択することで、前記ロボットの制御処理を行ってもよい。
【００１１】
これにより、把持パターン情報を用いた制御処理として、第ｉの動作指示と第ｊの動作指示を順次実行可能な把持パターンの組み合わせを選択することになるため、次の動作の障害等にならない把持手法を決定すること等が可能になる。
【００１２】
また、本発明の一態様では、前記第ｉの動作指示は、前記ワークの把持を指示する動作指示であり、前記第ｊの動作指示は、把持した前記ワークを移動させる動作指示及び前記ワークの姿勢を変える動作指示の少なくとも一方の動作指示であり、前記処理部は、前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群のうちの一致するものを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットに行わせる制御処理を行ってもよい。
【００１３】
これにより、単腕ロボットの場合は、一致する把持パターンを選択することで、次の動作の障害等にならない把持手法を決定すること等が可能になる。
【００１４】
また、本発明の一態様では、把持を行う前の前記ワークの状態を第１の状態とし、移動及び姿勢変更の少なくとも一方が行われた後の前記ワークの状態を第２の状態とした場合に、前記第ｉの把持パターン群は、前記第１の状態の前記ワークを把持する把持パターン群であり、前記第ｊの把持パターン群は、前記第２の状態の前記ワークを把持する把持パターン群であり、前記処理部は、前記第ｉの把持パターン群と前記第ｊの把持パターン群のうちの一致するものを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットに行わせる制御処理を行ってもよい。
【００１５】
これにより、各把持パターン情報がどの状態のワークを把持する際の情報であるかを明確にすることが可能になる。
【００１６】
また、本発明の一態様では、前記第ｉの動作指示は、前記ロボットの第１のハンドと第２のハンドのいずれか一方で前記ワークを把持することを指示する動作指示であり、前記第ｊの動作指示は、前記ワークの持ち替え動作を行い、前記第１のハンドと前記第２のハンドのうちの他方のハンドで前記ワークを把持することを指示する動作指示であり、前記処理部は、前記第ｉの把持パターン情報により表される第ｉの把持パターン群と、前記第ｊの把持パターン情報により表される第ｊの把持パターン群のうちの、前記第１のハンド及び前記第２のハンドの両方のハンドで同時に把持可能なパターンを選択することで、前記第ｉの動作指示及び前記第ｊの動作指示に対応する動作を前記ロボットの行わせる制御処理を行ってもよい。
【００１７】
これにより、いわゆる双腕ロボットの場合は、２つのハンドの両方で同時に把持できる把持パターンを選択することで、次の動作の障害等にならない把持手法を決定すること等が可能になる。なお、ロボットのアームは３本以上あってもかまわない。
【００１８】
また、本発明の一態様では、前記データベースは、前記把持パターン情報として、把持する方向と把持する面を特定するパターンの情報を記憶してもよい。
【００１９】
これにより、把持パターン情報として把持する方向と、把持する面というシンプルな情報を記憶することができるため、処理負荷の軽減等が可能になる。
【００２０】
また、本発明の一態様では、前記データベースは、前記ハンドを特定する情報であるハンド特定情報及び前記前記ワークを特定する情報であるワーク特定情報を記憶し、前記処理部は、前記ハンド特定情報及び前記ワーク特定情報に基づいて前記ロボットの制御処理を行ってもよい。
【００２１】
これにより、ハンドに関する情報及びワークに関する情報を用いた制御処理が可能になる。
【００２２】
また、本発明の一態様では、前記処理部は、前記ハンド特定情報及び前記ワーク特定情報と、前記動作指示情報とに基づいて、前記動作指示情報により特定される前記動作指示を実行可能な把持パターン情報を前記データベースから取得してもよい。
【００２３】
これにより、ハンド特定情報、ワーク特定情報及び動作指示情報から、動作指示を実行可能な把持パターン情報を取得することが可能になる。
【００２４】
また、本発明の一態様では、前記データベースは、前記ハンド特定情報として、ハンドサイズ情報及びハンド姿勢情報の少なくとも一方の情報を記憶し、前記ワーク特定情報として、ワークサイズ情報及びワーク姿勢情報の少なくとも一方の情報を記憶してもよい。
【００２５】
これにより、ハンド特定情報としてハンドのサイズ情報及び姿勢情報を記憶することが可能になり、ワーク特定情報としてワークのサイズ情報及び姿勢情報を記憶することが可能になる。
【００２６】
また、本発明の一態様では、前記データベースは、前記アームを特定する情報であるアーム特定情報を記憶し、前記処理部は、前記ハンド特定情報、前記ワーク特定情報及び前記アーム特定情報に基づいて前記ロボットの制御処理を行ってもよい。
【００２７】
これにより、ハンドに関する情報及びワークに関する情報に加えて、アームに関する情報を用いた制御処理が可能になる。
【００２８】
また、本発明の一態様では、前記データベースは、前記アーム特定情報として、前記アームの長さ情報及び前記アームの回転情報の少なくとも一方の情報を記憶してもよい。
【００２９】
これにより、アーム特定情報としてアームの長さ情報及び回転情報を記憶することが可能になる。
【００３０】
また、本発明の一態様では、前記ワークの姿勢情報を検出する姿勢情報検出部を含み、前記処理部は、前記姿勢情報に基づいて前記ロボットの制御処理を行ってもよい。
【００３１】
これにより、ワークの姿勢情報を検出することができるため、ワークの適切な部分に対して処理を行うこと等が可能になる。
【００３２】
また、本発明の一態様では、前記処理部は、前記第１〜第Ｎの動作指示に対応する動作を前記ロボットに行わせる把持パターンとして、複数の把持パターンが選択された場合に、選択された把持パターンをユーザーに提示する処理を行ってもよい。
【００３３】
これにより、選択された複数の把持パターンをユーザーに対して提示すること等が可能になる。
【００３４】
また、本発明の他の態様は、請求項１乃至１３のいずれかに記載のロボット制御装置と、前記ワークを把持する前記ハンドを備える前記アームを有するロボットと、を含むロボットシステムに関係する。
【００３５】
また、本発明の他の態様は、ワークを把持することが可能なハンドを備えるアームを有するロボットと、前記ロボットの動作を指示する情報である動作指示情報を受け付ける入力部と、前記ハンドが前記ワークを把持する際の動作パターンを記述した情報である把持パターン情報を記憶するデータベースと、前記入力部からの情報と、前記データベースからの情報に基づいて、前記ロボットの制御処理を行う処理部と、を含み、前記入力部は、前記動作指示情報として第１〜第Ｎ（Ｎは２以上の整数）の動作指示を受け付け、前記処理部は、前記第１〜第Ｎの動作指示のうちの第ｉ（ｉは１以上Ｎ−１以下の整数）の動作指示を実行可能な第ｉの把持パターン情報を前記データベースから読み出すとともに、前記第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報を前記データベースから読み出し、前記第ｉの把持パターン情報と前記第ｊの把持パターン情報とに基づいて前記ロボットの制御処理を行うロボットシステムに関係する。
【図面の簡単な説明】
【００３６】
【図１】本実施形態のシステム構成例。
【図２】本実施形態の詳細なシステム構成例。
【図３】データベースに記憶されるデータ構造の例。
【図４】本実施形態の処理を説明するためのフローチャート。
【図５】フローチャートの説明に用いられる状況の具体例。
【図６】２ステップの動作の把持パターンを決定する手法を説明する図。
【図７】図７（Ａ）、図７（Ｂ）は直方体のワークを把持する手法を説明する図。
【図８】３ステップの動作の把持パターンを決定する手法を説明する図
【図９】現状態を考慮しない場合の、次状態の動作指示を実行可能な把持パターン群。
【図１０】２つのハンドでワークを同時に把持することが可能な把持パターンの例。
【図１１】２つのハンド同士の衝突を考慮して把持パターンを決定する手法を説明する図。
【図１２】図１２（Ａ）、図１２（Ｂ）はアーム長の制約により把持パターンが限定される例。
【図１３】アームに対して設定される座標系の例。
【図１４】図１４（Ａ）〜図１４（Ｃ）はアームの回転可能範囲の制約により把持パターンが限定される例。
【図１５】図１５（Ａ）、図１５（Ｂ）はハンド自身の制約により把持パターンが限定される例。
【図１６】図１６（Ａ）〜図１６（Ｇ）はワークを把持する際に可能なパターンと不可能なパターンの例を説明する図。
【発明を実施するための形態】
【００３７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３８】
１．本実施形態の手法
まず本実施形態の手法について説明する。図１を用いて後述するように、本実施形態はアーム及びアームの先端に設けられるハンド（把持部）を有するロボットの制御装置等に関する。このような産業用ロボットでは、アーム及びハンドを操作することにより、パレット等に載せられたワーク（処理の対象となる物体）に対して処理を行う。処理の具体例としては、把持する、加工する、向きを変える、移動させる等が考えられる。
【００３９】
産業用ロボットに処理を行わせる際には、一連の作業内容（以下、適宜シナリオと表記する）を設定する必要がある。シナリオの例としては、図６に後述するようにワークを把持してから特定の面を下にして置くという例が考えられる。その他にも、右手でワークを把持した後、左手に持ち替えて、右手でワークの特定位置に部品を取り付ける、といったシナリオが想定される。
【００４０】
しかし、シナリオが設定されたとしてもロボットに対して効率的に処理を行わせることは容易ではない。例えば上述したシナリオ例の一部として、右手でワークを把持するという作業内容が規定された場合にも、ワークの把持手法は様々な手法が考え得るからである。例を図１６（Ａ）〜図１６（Ｇ）に示す。図１６（Ａ）のように横から把持してもよいし、図１６（Ｂ）のように上から把持してもよい。さらに、上から把持する場合にも、真ん中を把持してもよいし、左端或いは右端を把持してもよい。なお、図１６（Ｅ）、図１６（Ｆ）は指ではなく手のひらのようなハンドを用いる例である。また、図１６（Ｃ）、図１６（Ｄ）、図１６（Ｇ）は床面が障害となったり、指を広げた長さがワークより短かったりすることにより、把持が不可能な例を示している。
【００４１】
また、効率的にワークに対して処理を行うためには、これら複数通りの把持パターン（特定の動作指示を実行可能なハンドの動作パターンを指すものとする）の中から適切なものを選択する必要がある。つまり、シナリオに沿って第１の動作指示から第２の動作指示へ移行する場合に、第１の動作指示を実行可能な把持パターンの中には、第２の動作指示を実行するにあたって障害となってしまうものが存在しうるということである。
【００４２】
ワークを把持した上で別の面を下にして置くシナリオを用いて具体例を示す。この例では上述したように第１の動作指示（ワークを把持する）に対しては把持方向（横、上）及び把持位置（中央、左端、右端）の組み合わせで複数通りの実行可能な把持パターンがある。しかし元状態において上を向いていた面を下にする例を考えると、上から把持していたのでは把持しているハンドが障害となり、次の動作指示を実行することができない。つまり、この例では、第１の動作指示を実行可能な複数の把持パターンのうち、上から把持するパターンは第２の動作指示の実行にあたって効率的な動作を妨げる要因となる。具体的には、上から把持した後、上面を下にして置く前に、他方の手で（双腕ロボットを想定）横或いは下から把持し直すというステップを挿入する必要が生じてしまう。これでは設定されたシナリオを変更することにもつながり好ましくない。
【００４３】
そこで本出願人は、シナリオに従って次に動作の障害にならないような把持手法を決定する手法を提案する。上述の例で言えば、第２の動作指示を考慮した上で、当該第２の動作指示を実行する際の障害となる把持パターン（上から把持する）を特定する。そして、第１の動作指示を実行可能な把持パターンの全てを採用するのではなく、障害となると判定されたパターンを除いたものを採用するようにする。つまり上述の例では横から把持する把持パターンが選択される。このようにすることで、持ち替え等の動作を挿入するようなシナリオの変更を行うことなく、効率的にシナリオに従ってロボットに動作を行わせることが可能になる。
【００４４】
以下、システム構成例を説明し、把持手法の決定手法をデータベースの構造例とフローチャートを用いて説明する。その後、具体的な手法を説明し、最後に選択された把持パターンの提示手法について説明する。
【００４５】
２．システム構成例
本実施形態に係るロボット制御装置を含むロボットシステムの構成例を図１を用いて説明する。ロボットシステムは、情報処理装置１０と、撮像装置２０と、ロボット３０とを含む。ただし、ロボットシステムは図１の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。ロボット３０は、アーム３２０及びハンド３３０を有し、情報処理装置１０からの動作指示に従い処理を行う。例えばパレット４０に載せられたワークに対して処理を行う。撮像装置２０は、例えばワークを撮影可能な位置（パレットの直上でもよいし、ロボット３０のハンド３３０に取り付けられてもよい）に設けられ、主にワークの撮影を行う。そして、撮像画像の情報からワークの位置や姿勢等に関する情報を検出する。検出した情報は例えば情報処理装置１０等に送られてもよいし、直接ロボット３０に送られてもよい。また、ワークの位置や姿勢等に関する情報を検出できればよいため、撮像装置２０による撮像画像の取得以外の手法（例えばレーザー等を用いた３次元スキャン）を用いてもよい。
【００４６】
具体的な構成について図２を用いて説明する。情報処理装置１０は、記憶部１１０と、処理部１２０と、表示部１５０と、外部Ｉ／Ｆ部１６０を含む。
【００４７】
記憶部１１０は、データベースを記憶したり、処理部１２０等のワーク領域となるもので、その機能はＲＡＭ等のメモリーやＨＤＤ（ハードディスクドライブ）などにより実現できる。記憶部１１０は、ワークデータベース１１２（以下データベースを適宜ＤＢと表記する）と、ロボットＤＢ１１４とを含み、ロボットＤＢ１１４は、アームＤＢ１１６と、ハンドＤＢ１１８を含む。当該ロボットが複数のアームを備える場合は、アームＤＢ１１６とハンドＤＢ１１８は複数個であってもよい。ワークＤＢ１１２は、ワークの大きさ、形状、姿勢等の情報を記憶する。ロボットＤＢ１１４はロボットに関するデータを記憶する。具体的にはアームＤＢ１１６でアームの形状、可動範囲等を記憶し、ハンドＤＢ１１８でハンドの形状、大きさ等の情報を記憶する。ただし、記憶部１１０は図２の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００４８】
処理部１２０は、記憶部１１０からのデータや、外部Ｉ／Ｆ部１６０において受信した撮像装置或いはロボットからの情報等に基づいて種々の処理を行う。この処理部１２０の機能は、各種プロセッサ（ＣＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムなどにより実現できる。
【００４９】
処理部１２０は、ワーク位置演算部１２２と、画像処理部１２６と、把持パターン情報取得部１２８とを含む。処理部１２０は図２の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。ワーク位置演算部１２２は、ワークの位置を演算する。例えば外部Ｉ／Ｆ部１６０において撮像装置２０から取得したデータを用いてワーク位置を演算する。画像処理部１２６は、撮像装置２０からの撮像画像情報を取得し、種々の画像処理を行う。なお、ここでは画像処理部１２６は、情報処理装置１０の処理部１２０に設けられるものとしたがこれに限定されるものではない。画像処理部は撮像装置２０に内蔵されてもよい。把持パターン情報取得部１２８は、記憶部１１０のデータベースに記憶された情報に基づいて、動作指示を実行可能な把持パターン情報を取得する。具体的に取得される把持パターン群については後述する。
【００５０】
表示部１５０は、各種の表示画面を表示するためのものであり、例えば液晶ディスプレイや有機ＥＬディスプレイなどにより実現できる。
【００５１】
外部Ｉ／Ｆ部１６０は、情報処理装置１０に対するユーザーからの入力等を行ったり、撮像装置２０やロボット３０からの情報を受け付けるためのインターフェースである。ユーザーからの入力等に関しては、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。
【００５２】
撮像装置２０は、上述したように、例えばワークを撮影可能な位置に設けられ、主にワークの撮影を行う。本実施形態においては撮像画像情報をそのまま情報処理装置１０に送信するものとするが、これに限定されるものではない。例えば、情報処理装置１０の処理部１２０の一部（例えば画像処理部１２６等）を撮像装置２０に持たせてもよい。その場合、撮像画像に対して画像処理が施された後の情報が出力されることになる。
【００５３】
また、ロボット３０は、アーム３２０及びハンド３３０の他に制御部３１０を含む。制御部３１０は、情報処理装置１０からの情報を受け付けロボットの各部（アーム３２０及びハンド３３０等）の制御を行う。
【００５４】
３．把持手法の決定手法
次に、把持手法（把持パターン）の決定手法について説明する。具体的には、記憶部１１０に記憶されるデータベースのデータ構造例を示した後、フローチャートを用いて処理の流れを説明する。
【００５５】
３．１  データベース例
記憶部１１０に記憶されるデータベースのデータ構造例について図３を用いて説明する。ここではデータベースは６つのテーブルを含むものとするが、これに限定されるものではない。例えば、ここではアームに関する情報を記載していないが、図２で説明したようにアームＤＢ（データベース）１１６を含んでもよい。
【００５６】
テーブルは、図３に示したように、ハンドテーブル、ハンド状態テーブル、ワークテーブル、ワーク状態テーブル、把持パターンテーブル、実行可能把持パターンテーブルを含む。ハンドテーブルは、ハンドＩＤと、ハンド形状を含み、ハンドＩＤが主キーとなる。ハンド状態テーブルは、ハンド状態ＩＤ、ハンドＩＤ、ハンド姿勢を含み、ハンド状態ＩＤが主キーとなる。ワークテーブルは、ワークＩＤと、ワーク形状を含み、ワークＩＤが主キーとなる。ワーク状態テーブルは、ワーク状態ＩＤ、ワークＩＤ、ワーク姿勢を含み、ワーク状態ＩＤが主キーとなる。把持パターンテーブルは、把持パターンＩＤ、ワーク状態ＩＤ、ハンド状態ＩＤを含み、把持パターンＩＤが主キーとなる。実行可能把持パターンテーブルは、実行可能把持パターンＩＤ、把持パターンＩＤ１、把持パターンＩＤ２を含み、実行可能把持パターンＩＤが主キーとなる。
【００５７】
続いて各テーブルについて説明する。ハンドテーブルはハンドの大きさ、形状、可動範囲、可搬重量等に関する情報を保持するものである。ここでは簡単のため、形状情報のみとしているが、ハンドを決定した際に一意に決められる情報を追加してもよい。ハンド状態テーブルは、ハンドの状態に関する情報を保持するものである。ここでは簡単のため姿勢情報に統一しているが、姿勢をさらに細かく分類してもよい。姿勢情報の中で代表的なものが、ハンド自体の位置および向き、ならびにハンドの開閉状態である。どのハンドがどのようなハンド姿勢にあるかが、ハンド状態テーブルによりわかることになる。
【００５８】
また、ワークテーブルはワークの大きさ形状等に関する情報を保持するものである。詳細については基本的にはハンドテーブルに準ずるが、重量や表面の摩擦係数等、当該ハンドで把持することが可能であるかを判断するための情報も必要である。本実施例では簡単のため、大きさと形状のみとする。ワーク状態テーブルは、処理対象のワークの状態に関する情報を保持するものである。どのワークがどのような姿勢で把持されているか、或いは置かれているか等がわかる。
【００５９】
把持パターンテーブルは、ある動作指示に対応する把持パターンを規定するものである。把持パターンとは、上述したように特定の動作指示を実行可能なハンドの動作パターンを指すものであるが、ハンドの動作パターンの記述手法は種々考えられる。ここではハンドの姿勢情報により動作パターンを記述するものとして説明する。姿勢情報とは例えば、ハンドの代表位置座標と、基準姿勢からの回転角度等の情報である。或いは、図６を用いて後述するように把持方向と把持面に関する情報であってもよい。また、動作指示に対応する情報としてワーク状態情報を用いる。つまり、動作指示とは例えば、「面Ａを下にして置かれているワークを把持し」、「面Ｃを下にして置く」といった指示であるから、動作指示が決定されれば、「面Ａを下に置かれている」或いは「面Ｃを下にして置かれている」といったようにワークの状態が決定できることになる。以上のことから、ワーク状態ＩＤとハンド状態ＩＤとを結びつけることにより、把持パターンを記述することが可能になると言える。具体的にはどのハンドを用い、どのワークを、どのようなハンド姿勢及びワーク姿勢により把持できるか、という情報を保持することになる。
【００６０】
把持パターンテーブルは、特定の動作指示（具体的には動作指示に対応するワーク状態）と、その動作指示を実行可能なハンド姿勢を保持するものである。よって、それだけでは次の動作を妨げないような把持パターンを選択するという本実施形態の手法は実現できない。そこで、実行可能把持パターンテーブルを用意する。実行可能把持パターンテーブルは、第ｉの動作指示に対応する把持パターン（把持パターンＩＤ１に対応）と、第ｉの次の動作指示である第ｊの動作指示に対応する把持パターン（把持パターンＩＤ２に対応）とを結びつけるテーブルである。把持パターンＩＤ１により決定される第ｉのハンド状態及びワーク状態から、把持パターンＩＤ２により決定される第ｊのハンド状態及びワーク状態へスムーズに移行可能な組み合わせのものが、このテーブルの要素として記憶されることになる。
【００６１】
なお、データベースのデータ構造例がこれに限定されないのは上述したとおりである。例えば上述の例では、動作指示に関する情報をワーク状態により規定するものとしたが、動作指示テーブルを用意して独自に扱ってもよい。
【００６２】
３．２  フローチャート
図４のフローチャートを用いて処理の詳細について説明する。なお、具体例として図５に示したように、場所Ｐ１にあるワークを、面Ｃを下にして場所Ｐ２に移動する単腕ロボットの例を用いるが、図４のフローチャートの処理はこの具体例に限定される物ではない。
【００６３】
この処理が開始されると、まずユーザーからの入力を受け付ける（Ｓ４０１）。具体的には例えば、「場所Ｐ１にあるワークを、面Ｃを下にして場所Ｐ２に置く」といった入力が考えられる。そして、入力に応じてシナリオの作成処理を開始し（Ｓ４０２）、作成が可能であるかの判定を行う（Ｓ４０３）。シナリオは例えば、（１）ワークの状況を確認する（２）ハンドでワークを把持する（３）ワークの面Ｃを下にしてＰ２に置く、といったシナリオが考えられる。Ｓ４０３で作成が不可能であった場合には、エラーを表示して処理を終了する（Ｓ４１０）。
【００６４】
Ｓ４０３でシナリオが作成可能であった場合には、単位動作に分解した上で分析し（Ｓ４０４）、動作可能かの判定を行う（Ｓ４０５）。具体的には、上述（２）のハンドでワークを把持する、というステップに関しては、場所Ｐ１がアームの可動範囲内であるか、ハンド及びワークの形状、大きさから考えて把持可能であるか等の判定が行われる。そして、全ての単位動作の分析が完了したかの判定が行われ（Ｓ４１１）、完了していなければ次の単位動作の分析を行い、完了した場合にはＳ４０６に移行する。また、Ｓ４０５において、動作不可能と判定された場合には、Ｓ４０２に戻ってシナリオを再作成する。
【００６５】
次に全動作の分析が行われ、動作の流れに不都合がないか確認する（Ｓ４０６）。動作可能であればＳ４０８へ移行し、不可能であればＳ４０２に戻ってシナリオを再作成する。Ｓ４０８では、複数の把持パターンの候補が残った場合に、提示する把持パターンの選択を行う。そして、ロボット３０への命令を作成し送信する（Ｓ４０９）。
【００６６】
なお、Ｓ４０５において単位動作分析の結果動作不可能とされた場合の対処例について説明する。例えば、場所Ｐ１或いはＰ２が遠いため、アームが届かないということであれば、双腕ロボットの場合もう一方のハンドを用いるシナリオに変更する。また、右手だけ或いは左手だけでは、Ｐ１とＰ２の両方に届かないという場合には、途中で持ち替えをするシナリオに変更する。ワークが大きく片手で把持できない場合には、両手のひらで挟んで持ち上げるシナリオに変更すればよい。
【００６７】
４．具体的な手法
続いて具体的な手法について説明する。ここでは６つの例について説明するが、この内容に限定されないことは言うまでもない。
【００６８】
４．１  ２ステップの例
まず、シナリオが２ステップで実行される例として、直方体を把持し違う面を下にして置く例について図６を用いて説明する。この場合、（１）状態１のワークを把持する（２）把持したワークの向きを変え面Ｃ’を下にしておく、という２つのステップから構成されるシナリオとなる。
【００６９】
ここでは簡単のために、ハンドの大きさに対してワークの大きさは同程度に小さいものとする。つまり、図７（Ａ）のように面Ａ側からＢ−Ｂ’を把持する場合に、中央、左端及び右端のように、持つ位置を複数通り考えるようなことはしない。
【００７０】
以上の条件では、状態１（面Ａ’を下にして置かれている）で実行可能な把持パターン群は、図６に示したように面ＡからＢ−Ｂ’を把持するパターン（図７（Ａ））、面ＡからＣ−Ｃ’を把持するパターン、面ＢからＣ−Ｃ’を把持するパターン、面ＣからＢ−Ｂ’を把持するパターン（図７（Ｂ））、面Ｂ’からＣ−Ｃ’を把持するパターン及び面Ｃ’からＢ−Ｂ’を把持するパターンの６通りとなる。つまり、面Ａ’側にハンドが来てしまうようなパターンは除外される。
【００７１】
同様に、状態２（面Ｃ’を下にして置かれている）で実行可能なパターンは、図６に示したように面ＡからＢ−Ｂ’を把持するパターン、面ＢからＡ−Ａ’を把持するパターン、面Ａ’からＢ−Ｂ’を把持するパターン、面Ｂ’からＡ−Ａ’を把持するパターン、面ＣからＢ−Ｂ’を把持するパターン及び面ＣからＡ−Ａ’を把持するパターンの６通りとなる。つまり、面Ｃ’側にハンドが来てしまうようなパターンは除外される。
【００７２】
実際に採用される把持パターン群は、状態１で把持することが可能であり、かつ、状態２で把持することが可能なものである。つまり、状態１で実行可能な把持パターン群と状態２で実行可能な把持パターン群とで共通して現れるものを選択すればよいことになる。具体的には、面ＡからＢ−Ｂ’を把持するパターンと、面ＣからＢ−Ｂ’を把持するパターンになる。
【００７３】
なお、上述したように選択可能な把持パターンが複数通り考えられるケースがある。その場合には、選択可能な把持手法をユーザーに提示しユーザーに選択させてもよいし、制御システムが選択可能な把持手法の中から任意の把持手法を選択し実行しても良い。
【００７４】
４．２  ３ステップの例
次に、シナリオが３ステップで実行される例として、直方体を右手で把持し、左手に持ち替えて向きを変えておく例を説明する。
【００７５】
ここでは簡単のために、ハンドの大きさに対してワークの大きさは同程度に小さいものとし、一方の手で把持している面に他方の手を入れる余裕はないものとして説明する。つまり、図７（Ａ）のように面ＡからＢ−Ｂ’を右手で把持しているときに、同時に面ＣからＢ−Ｂ’（或いはＡ−Ａ’）を左手で把持することはできないものとする。
【００７６】
以上の条件では、状態１で実行可能な把持パターン群は、２ステップの例と同様であり、６通りとなる。また、状態３で実行可能な把持パターン群も、２ステップの例と同様であり、図８に示した６通りとなる。
【００７７】
ここで、状態２で実行可能な把持パターン群を考える。仮に既に右手で把持していることを考慮しないとすると、図９に示したように、把持方向となる面が６通り、各方向に対して把持面が２通りの計１２通りの把持パターン群が考えられる。しかしながら上述したように、既に右手で把持しているため、右手が障害となり全てのパターンをとることはできない。具体的には、図１０に示したように、右手で面ＡからＢ−Ｂ’を把持している場合には、左手ではＡ’からＣ−Ｃ’を把持する１通りしか実行可能な把持パターンは存在しない。つまり、状態１及び状態２の両方で実行可能な把持パターン群は、図８に示した６通りに限定されることになる。この６通りと状態３で実行可能な把持パターン群の６通りとの共通パターンを選択することで、効率的な３ステップ動作が可能になる。
【００７８】
なお、共通パターンの選択は、状態１及び状態２で実行可能な把持パターンのうちの状態２に対応する部分と、状態３で実行可能な把持パターンとの比較により行うものである。例えば、状態１及び２の把持パターンの３番目（Ｂ，Ｃ−Ｃ’，Ｂ’，Ａ−Ａ’）のうちの（Ｂ’，Ａ−Ａ’）の部分と、状態３の把持パターンの４番目（Ｂ’，Ａ−Ａ’）とが共通であるということを判定する。この結果、例えば状態１では右手で面ＢからＣ−Ｃ’を把持し、状態２で面Ｂ’からＡ−Ａ’に持ち替えて、状態３でそのまま面Ｃ’を下にして置くという動作を選択することになる。
【００７９】
上述したように、一方の手から他方の手への持ち替えを行う場合には、状態１と状態２で共通の把持パターンを選択するのではなく、２つのハンドで同時に把持が可能な把持パターンを選択することになる。それに対して、一方の手で把持したままのケース（例えば把持した後に違う面を下にして置く等）の場合には、共通する把持パターンを選択することになる。
【００８０】
なお、ステップ数が４以上になった場合も同様に処理可能である。その場合に、状態１の把持パターン群を取得した後、状態１を考慮した上で状態２の把持パターン群を選択し、状態２を考慮した上で状態３の把持パターン群を選択すると言ったように、状態１から順に処理してもよい。また、最後の状態を取得し、そこから逆順に後ろの状態を考慮した上で前の状態の把持パターン群を選択していってもよい。
【００８１】
３ステップの場合においても、上述したように選択可能な把持パターンが複数通り考えられるケースがある。その場合には、選択可能な把持手法をユーザーに提示しユーザーに選択させてもよいし、制御システムが選択可能な把持手法の中から任意の把持手法を選択し実行しても良い。
【００８２】
４．３  ハンドが衝突しないための手法
次に、ハンドが衝突しないための手法について図１１を用いて説明する。図１１に示したように、双腕ロボットでは、一方の手で把持しているワークを他方の手に持ち替える動作を行うことがある。
【００８３】
ここで、上述の例と異なり、ハンドの大きさに比べてワークが大きいものとすると、ワークの把持位置は中央と一端、他端といったように、複数通り考えられる。つまり、複数のハンドでの持ち替えを行う場合には、次のことを考慮する必要がある。
【００８４】
（１）データベースからハンドのサイズ、可動範囲、可能な動作等の情報を取得する。
【００８５】
（２）データベースからワークのサイズ、可能な把持方法等の情報を取得する。
【００８６】
（３）撮像装置２０からの撮像画像に基づいて現在の状態情報を取得する。
【００８７】
（４）（１）〜（３）の情報に基づいて可能な把持方法を決定する。
【００８８】
上述の（４）においては、具体的には把持方向及び把持面を維持したままハンドの位置を変えることが可能であるか、その場合に他のハンドが把持する際の障害とならないか等を、ワークの形状、重心位置等の情報に基づいて検討する必要がある。
【００８９】
このようにすることで、例えば図１１に示したように、ハンド１で把持している場合には、ハンド１の近くは把持できないが、ワークの他方側は把持可能であるといった判断を行うことが可能になる。
【００９０】
４．４  アーム長による制限
次に、アーム長の制限による把持パターンの限定について図１２（Ａ）、図１２（Ｂ）を用いて説明する。図１２（Ａ）、図１２（Ｂ）のように領域Ａのワークを把持し、領域Ｂに置くという動作を考える。この場合、把持した後に加工等を行ってもよいが、ここでは特に言及しない。また、領域Ｂに置くときに置く向き及び位置は決まっているものとする。
【００９１】
以上の条件では、領域Ａのワークを把持する際の把持パターンは複数考えられる。このとき図１２（Ａ）、図１２（Ｂ）のような位置関係にあれば、図１２（Ａ）に示したように、領域Ａにおいて近距離にある点を把持することが自然である。しかしながら、その状態で領域Ｂに移動させようとすると、図１２（Ａ）に示したように領域Ｂに置いたときのロボットの設置位置からの距離が遠くなってしまう。場合によっては、ロボット３０のアーム３２０の長さの限界からワークを規定の向きに置くことが不可能になってしまうことも考えられる。そのため、領域Ａでの把持においては不利に感じられる図１２（Ｂ）のような点を把持する。そうすることで、領域Ｂにおいて結果として近い位置を把持することになり、アーム長の制約を受けずに動作を行うことが可能になる。つまり、実行可能な把持パターン群を制限する要素として、ワーク及びハンド３３０だけでなく、アーム３２０についても考慮する必要がある。
【００９２】
つまり、本実施形態の手法によれば、ある状態における把持パターンとしては一見不合理に思える手法でワークを把持することが可能になる。上述の例で言えば領域Ａのワークを把持するにあたり、ロボットから遠い位置を把持することができる。通常、次状態を考慮しない手法においては、現状態において適切と思われる把持パターンを選択することが想定される。そのため、複数通りの把持パターンが選択可能である場合に、例えばロボットのアーム（或いはハンド）の移動距離や回転角度が小さくなる把持パターンを優先的に選択する（選択の優先度は移動距離等から決定する手法に限定されるものではない）。
【００９３】
逆に言えば、従来の手法では現状態において不合理に思える把持パターンを選択することは困難である。そのため、図１２（Ｂ）に示した把持パターンを選択することができず、結果として図１２（Ａ）に示したように、次状態におけるハンド・アームが不自然な形になる（場合によっては実現不可能になる）。つまり、従来の手法では局所的な最適解は得られるものの、前後の流れを考慮するとそれが最適でないというケースが多々あり得た。本実施形態の手法では、局所的な最適解にとらわれることなく、前後の流れの中での最適な把持パターンを選択することになるため、その点で従来手法に比べ優位であると言える。
【００９４】
４．５  アームの回転による制限
次に、アームの回転による制限について説明する。図１３に示したように、アーム３２０の座標系を設定し、図１３の状態を０°、矢印の方向を正方向の回転とし、アーム３２０の回転角度を−１８０°〜１８０°であるとする。そして、図１４（Ａ）〜図１４（Ｃ）に示したように、直方体のワークを面ＣからＡ−Ａ’を把持して、アームの向きから見て時計回りに（正方向に）１８０°回転させる動作を考える。
【００９５】
この場合、初期状態のワークを把持するためには、アーム３２０を＋９０°或いは−９０°回転させてから把持する必要がある。しかし、＋９０°回転させて把持した場合には、そこから９０°回転させたところで限界値に達してしまい、プラス方向に１８０°回転させることは不可能になってしまう。そのため、初期状態での把持方法は２通り考えられたとしても、アーム３２０の回転角度の制約から−９０°回転させて把持する必要がある。このように、アーム３２０による制約には、アーム長の制約の他に回転角度も考慮する必要があることがわかる。
【００９６】
本実施形態の手法によれば、現状態だけ考慮した場合に同じ優先度となる把持パターン群に対して、異なる優先度を割り振ることが可能になると言える。上述の例で言えば、初期状態だけを考慮した場合、把持パターンは＋９０°も−９０°もアームの回転角としては９０°であり、回転角度の大きさ等の基準で判定しても、どちらがより適切かは決定できない。しかし、本実施形態の手法により、次状態も考慮することにより、−９０°の方が＋９０°よりも適切であると明確に決定することができる。
【００９７】
４．６  ハンド自身による制限
また、ハンド自身が障害となるケースもある。例えば図１５（Ａ）に示したように、後の工程で上面を加工するという場合に、上から把持したのではハンドが障害となり加工ができない。そのような場合には横面から把持する。
【００９８】
また、図１５（Ｂ）に示したように、ワーク１の穴に棒状の部品ワーク２を差し込む場合には、ワーク２の中央部を把持したのではハンド自体がワーク１にあたってしまい差し込むことができない。そのような場合にはワーク２の端部を把持する。
【００９９】
この場合も、上述したように現状態だけを考慮した場合には一見不合理に思える手法を選択することが可能になっていると言える。図１５（Ａ）の場合、上面から把持する場合に比べて、横面から把持する場合には重心の位置との関係から、バランスが悪くなり把持する力を大きくしなくてはならない。従来手法ではそのような把持パターンを敢えて選択することは困難であったが、本実施形態の手法ではそれが可能となる。また、図１５（Ｂ）でも、端部の把持は重心から離れた位置を把持することになり、同様に把持する力を大きくする必要があるため、このような把持パターンを採用するためには本実施形態の手法を用いる必要がある。
【０１００】
５．提示手法
上述した把持パターン群の選択手法では、最終的に複数の把持パターンが選択される可能性がある。そのような場合には、例えばアーム３２０の動作に基づいて最適なものを選択する手法が考えられる。具体的には、動きが少なくて済むように近い位置を把持するパターン、或いは関節の動く角度が少ないパターンを選択する。或いは、アームに無駄な力がかからない姿勢や、動作精度の高い姿勢を用いるパターンを選択してもよい。
【０１０１】
また、結果として動作可能な把持パターンがなかったときには、例えばユーザーにエラーを返す。その上で、持ち替えを増やす、別の手で把持する等、シナリオの変更を提案してもよい。また、その際のシナリオ変更はユーザーに通知後、自動的に行われてもよい。
【０１０２】
以上の本実施形態では、ロボット制御装置は、図２に示したように、動作指示情報を受け付ける入力部（外部Ｉ／Ｆ部１６０）と、把持パターン情報を記憶するデータベース（記憶部１１０）と、入力部からの情報とデータベースからの情報に基づいてロボット３０の制御処理を行う処理部１２０を含む。入力部は動作指示情報として一連の第１〜第Ｎの動作指示を受け付ける。処理部１２０は第１〜第Ｎの動作指示のうちの第ｉの動作指示を実行可能な第ｉの把持パターン情報（把持パターン情報群）をデータベースから読み出すとともに、第ｉの動作指示の次の動作指示である第ｊの動作指示を実行可能な第ｊの把持パターン情報をデータベースから読み出す。そして、処理部１２０は第ｉの把持パターン情報と第ｊの把持パターン情報とに基づいて制御処理を行う。
【０１０３】
ここで、動作指示情報とは、ロボット３０の動作を指示する情報のことであり、例えば「場所Ｐ１にあるワークを把持し、面Ｃを下にして場所Ｐ２に置く」といった指示が考えられる。動作指示情報は上述したように一連の第１〜第Ｎの動作指示に分解されてもよい。上述の例で言えば（１）ワークの置かれた状況を確認する（２）ハンドでワークを把持する（３）ワークの面Ｃを下にして場所Ｐ２に置く、といった３つの動作指示になる。また、把持パターン情報とは、ハンド３３０がワークを把持する際の動作パターンを記述した情報である。例えば図６に示したように「面ＡからＢ−Ｂ’を把持する」といった具体的な把持パターンを表す情報であってもよいし、把持パターンに準ずる情報であってもよい。なお、特定の動作指示が与えられた場合に、実行可能な把持パターンが複数考えられることがある。よって、動作指示から決定される把持パターンに関する情報を把持パターン情報と呼ぶことにする。図６の例で言えば、表にある６通りの把持パターンを表す情報が把持パターン情報である。把持パターン情報により特定される把持パターンは、１通りであってもよいし、複数通り（把持パターン群）であってもよい。
【０１０４】
これにより、動作指示情報（特に一連の動作指示の流れ、つまりはシナリオ）が与えられた場合に、単位動作ごとに実行可能な把持パターン情報を取得した上で、現状態の把持パターン情報と、次状態の把持パターン情報とに基づいて制御処理を行うことが可能になる。よって、現在の状態だけでなく、次状態も考慮した上で制御処理が行われるため、次の動作の障害とならないような把持手法を決定することができる。
【０１０５】
また、処理部１２０は、第ｉの把持パターン情報により表される第ｉの把持パターン群と、第ｊの把持パターン情報により表される第ｊの把持パターン群の中から、第ｉの動作指示及び第ｊの動作指示を順次実行するための把持パターンの組み合わせを選択することで、ロボット３０の制御処理を行ってもよい。
【０１０６】
これにより、第ｉの把持パターン情報と第ｊの把持パターン情報とに基づく制御処理の具体的な手法として、第ｉの把持パターン群と第ｊの把持パターン群の中から、第ｉと第ｊの動作指示を順次実行可能な把持パターンの組み合わせの選択を行うことが可能になる。具体的には後述するように、第ｉの把持パターン群と第ｊの把持パターン群の中から一致するものを選択することが考えられる。このようにすることで、現状態の動作を実行した上で次状態の動作を実行することができる把持パターンの組み合わせを選択することになるため、現状態の動作指示及び次状態の動作指示をスムーズに実行可能な把持手法を決定することができる。
【０１０７】
また、第ｉの動作指示がワークの把持を指示する動作指示であり、第ｊの動作指示が把持したワークを移動させる動作指示及び把持したワークの姿勢を変える動作指示の少なくとも一方の動作指示であってもよい。このとき、処理部１２０は第ｉの把持パターン群と第ｊの把持パターン群のうちの一致するものを選択することで、ロボットの制御処理を行ってもよい。
【０１０８】
ここで、一致するものを選択するとは図６の例で言えば、状態１の表の６通りと状態２の表の６通りで把持方向と把持面の両方が一致するものを選択することになる。具体的には、面ＡからＢ−Ｂ’を把持する把持パターンと、面ＣからＢ−Ｂ’を把持する把持パターンが選択される。
【０１０９】
これにより、単腕での効率的な把持手法を決定することが可能になる。単腕で処理を行うとは、具体的には上述したように１つのハンドで把持し、当該ハンドで把持したまま移動や姿勢変更等を行う場合に相当する（移動または姿勢変更後、リリース動作を行ってワークを置いてもよいし、置かなくてもよい）。ロボットは手の中でワークを持ち替える動作を行えないため、ワークを一度把持した場合、把持面や把持方向を変更することができない。つまり、単腕ロボットで一度把持動作を行ったら、リリース動作を挟まない限り同一の把持位置のまま作業が行われる。ここではこの特性に鑑みれば、単腕での作業指示が続く場合には、現状態と次状態で同一の把持パターンが続くことを考慮して、第ｉの把持パターン群と第ｊの把持パターン群のうちの一致するものを選択することとしている。
【０１１０】
また、把持を行う前のワークの状態を第１の状態とし、移動および姿勢変更の少なくとも一方が行われた後のワークの状態を第２の状態とする。この場合、第ｉの把持パターン群は、第１の状態にあるワークを把持する把持パターンであり、第ｊの把持パターン群は第２の状態にあるワークを把持する把持パターンであってもよい。そして、処理部１２０は第ｉの把持パターン群と第ｊの把持パターン群のうちの一致するものを選択することで制御処理を行う。
【０１１１】
これにより、第ｉの把持パターン群と第ｊの把持パターン群を明確化することが可能になる。例えば、置いてあるワークを把持し、別の面を下にして置くシナリオでは、把持した後ワークを回転させてからリリース動作を行う。よって、特に第ｊの把持パターン群が、どの状態のワークを把持する把持パターンを指すのか（回転前なのか回転後なのか）、不明確となる可能性があった。ここでは、第ｉの動作指示と第ｊの動作指示が行われた場合には、第ｉの動作指示が行われる前、及び、第ｊの動作指示が行われた後を基準にワークの状態を決定し、決定した状態のワークを把持するパターンを把持パターンとして選択する。
【０１１２】
また、第ｉの動作指示が第１のハンドと第２のハンドのいずれか一方のハンドでワークの把持を指示する動作指示であり、第ｊの動作指示が持ち替え動作を行い第１のハンドと第２のハンドのうちの他方のハンドでワークを把持することを指示する動作指示であってもよい。このとき、処理部１２０は第ｉの把持パターン群と第ｊの把持パターン群のうちの、前記第１のハンドと第２のハンドの両方のハンドで同時に把持可能なパターンを選択することで、ロボットの制御処理を行ってもよい。
【０１１３】
これにより、双腕での効率的な把持手法を決定することが可能になる。双腕で処理を行うとは、具体的には上述したように一方のハンドで把持していたワークを他方のハンドに持ち替える動作が考えられる。どちらのハンドもワークを把持していない状態があると、ワークが落下することになるため、そのような状況は考えにくい。そのため、持ち替え動作を行うには第１のハンドと第２のハンドの両方で同時に把持動作が行われている必要がある。よってそのような動作が可能なパターンを選択することで、持ち替え動作等をスムーズに行う把持パターンを決定することができる。具体的には、図１０で示したような把持パターンが考えられる。
【０１１４】
また、データベースは把持パターン情報として把持する方向と、把持する面を特定するパターンの情報を記憶してもよい。
【０１１５】
これにより、把持パターンの具体例として、図６の表に示したようなデータを用いることが可能になる。ここでは複数の指を有し、指でワークを挟んで把持するロボットを想定している。この場合、把持する方向（どの面から把持するか）及び把持する面（指が接触する面）を決定することで把持パターンを記述することができる。２つの要素で把持パターンを記述できるため、データ構造及び処理をシンプルなものにすることが可能になる。
【０１１６】
また、データベースはハンドを特定する情報であるハンド特定情報と、ワークを特定する情報であるワーク特定情報を記憶してもよい。そして、処理部１２０はハンド特定情報及びワーク特定情報に基づいてロボット３０の制御処理を行う。ここで、ハンド特定情報とは、ハンドのサイズ情報及びハンドの姿勢情報の少なくとも一方の情報であり、ワーク特定情報とは、ワークのサイズ情報及びワークの姿勢情報の少なくとも一方の情報である。
【０１１７】
これにより、ハンドに関する情報及びワークに関する情報を用いてロボット３０の制御処理を行うことが可能になる。なお、ハンド特定情報をハンドのサイズ情報及び姿勢情報の少なくとも一方としたが、サイズ情報は大きさそのものの情報の他に形状に関する情報を含んでもよいし、姿勢情報もさらに複数の角度情報等に細分化されてもよい。ワーク特定情報も同様である。また、ハンド特定情報及びワーク特定情報は、サイズ情報及び姿勢情報以外の情報を含んでもよい。これらの情報は例えば図１のハンドＤＢ１１８、ワークＤＢ１１２等に記憶される。
【０１１８】
また、処理部１２０はハンド特定情報及びワーク特定情報と、動作指示情報とに基づいて、動作指示情報により特定される動作指示を実行可能な把持パターン情報をデータベースから取得してもよい。
【０１１９】
これにより、ハンドに関する情報とワークに関する情報、及び、動作指示情報に基づいてデータベースから把持パターン情報を取得することが可能になる。つまり、どのようなハンドを用い、どのようなワークに対して、どのような動作を行うか、という情報が決まれば、可能な把持パターン情報を決定できることになる。
【０１２０】
また、データベースはアーム３２０を特定する情報であるアーム特定情報を記憶してもよい。そして、処理部１２０はハンド特定情報、ワーク特定情報及びアーム特定情報に基づいてロボット３０の制御処理を行う。ここで、アーム特定情報とは、アームの長さ情報及びアームの回転情報の少なくとも一方の情報である。
【０１２１】
これにより、ハンドに関する情報、ワークに関する情報に加えて、アームに関する情報を用いてロボット３０の制御処理を行うことが可能になる。例えば図１２（Ａ）、図１２（Ｂ）に示したように、アームの長さによる制約により効率的な把持手法が限定される例や、図１４（Ａ）〜図１４（Ｃ）に示したように、アームの回転可能範囲による制約により効率的な把持手法が限定される例に対処することができる。なお、アーム特定情報はアームに関する情報であり、把持パターン情報の決定に関わる要素を含むことができ、長さ情報及び回転情報に限定されるものではない。
【０１２２】
また、ワークの姿勢を検出する姿勢検出部（例えば撮像装置２０からの情報を処理する画像処理部１２６等）を含んでもよい。そして処理部１２０は、ワークの姿勢情報に基づいてロボット３０の制御処理を行う。
【０１２３】
これにより、ワークの姿勢情報を用いた制御処理が可能になる。図１に示したように例えばパレット４０に載せられたワークに対して処理を行うことが考えられるが、その場合にもワークが一定の向きに置かれているとは限らない。ロボット３０はワークの特定の位置に対して処理を行うことが想定される以上、ワークの姿勢情報を検出し、ワークの適切な部分に対して処理を行うことは非常に有用である。
【０１２４】
また、処理部１２０は第１〜第Ｎの動作指示に対応する動作をロボット３０に行わせる把持パターンとして、複数の把持パターンが選択された場合には、選択された把持パターンを提示する処理を行ってもよい。
【０１２５】
これにより、適切な把持パターンとして複数の把持パターンが残った場合にも、ユーザーに対して提示することが可能になる。具体的には、動きが少なくて済むように近い位置を把持するパターン、或いは関節の動く角度が少ないパターン、アームに無駄な力がかからない姿勢や、動作精度の高い姿勢を用いるパターンを選択することが考えられる。
【０１２６】
また、本実施形態は上述のロボット制御装置と、ハンドを備えるアームを有するロボットとを含むロボットシステムに関係する。
【０１２７】
これにより、上述してきたロボット制御装置がロボット３０を制御することにより、連係して動作を行うロボットシステムを実現することが可能になる。
【０１２８】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またロボット制御装置及びロボットシステム等の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１２９】
１０  情報処理装置、２０  撮像装置、３０  ロボット、４０  パレット、
１１０  記憶部、１１２  ワークＤＢ、１１４  ロボットＤＢ、１１６  アームＤＢ、
１１８  ハンドＤＢ、１２０  処理部、１２２  ワーク位置演算部、
１２６  画像処理部、１２８  把持パターン情報取得部、１５０  表示部、
１６０  外部Ｉ／Ｆ部、３１０  制御部、３２０  アーム、３３０  ハンド
【図１】
2012206219.tif 000003
【図２】
2012206219.tif 000004
【図３】
2012206219.tif 000005
【図４】
2012206219.tif 000006
【図５】
2012206219.tif 000007
【図６】
2012206219.tif 000008
【図７】
2012206219.tif 000009
【図８】
2012206219.tif 000010
【図９】
2012206219.tif 000011
【図１０】
2012206219.tif 000012
【図１１】
2012206219.tif 000013
【図１２】
2012206219.tif 000014
【図１３】
2012206219.tif 000015
【図１４】
2012206219.tif 000016
【図１５】
2012206219.tif 000017
【図１６】
2012206219.tif 000018