(57)【要約】【課題】適確にロボットを制御することができるロボット制御装置、ロボットおよびロボットシステムを提供すること。【解決手段】ロボットを制御するロボット制御装置であって、対象物を撮像して得られた画像を受け付ける画像受付部と、前記画像に含まれる第１の直線と前記画像の座標系における座標軸に沿った第２の直線との間の角度を計算する角度計算部と、複数のモードのうち所定のモードの選択を受け付けるモード受付部と、を備え、前記複数のモードは、前記第２の直線との間に所定の角度を有する第３の直線と前記第１の直線との間の第１角度を算出し、前記第１角度の絶対値が最も小さい前記第１の直線と前記第２の直線との間の角度を前記第１の直線の検出角度とするように前記角度計算部に計算させる第１モードを含むことを特徴とするロボット制御装置。【選択図】図１
2019115950.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを制御するロボット制御装置であって、
対象物を撮像して得られた画像を受け付ける画像受付部と、
前記画像に含まれる第１の直線と前記画像の座標系における座標軸に沿った第２の直線との間の角度を計算する角度計算部と、
複数のモードのうち所定のモードの選択を受け付けるモード受付部と、
を備え、
前記複数のモードは、前記第２の直線との間に所定の角度を有する第３の直線と前記第１の直線との間の第１角度を算出し、前記第１角度の絶対値が最も小さい前記第１の直線と前記第２の直線との間の角度を前記第１の直線の検出角度とするように前記角度計算部に計算させる第１モードを含むことを特徴とするロボット制御装置。
【請求項２】
前記複数のモードは、前記第１の直線と前記第２の直線との間の角度に対して１８０°減算または加算した修正角度が所定の範囲内にある場合、前記修正角度を前記検出角度とする第２モードを含む請求項１に記載のロボット制御装置。
【請求項３】
前記所定の範囲が０°以上１８０°未満、または−９０°以上９０°未満である請求項２に記載のロボット制御装置。
【請求項４】
前記第１モードでは、前記角度計算部は、前記第１角度の絶対値が所定の範囲内にある場合、前記第１角度の絶対値の算出に使用した前記第１の直線と前記第２の直線との間の角度を前記検出角度とする請求項１に記載のロボット制御装置。
【請求項５】
前記第１モードでは、前記角度計算部は、前記第１角度の絶対値が所定の範囲内にない場合、前記第１角度の絶対値の算出に使用した前記第１の直線と前記第２の直線との間の角度に対して３６０°減算または加算した修正角度を前記検出角度とする請求項１または４に記載のロボット制御装置。
【請求項６】
ロボットアームを有し、
請求項１ないし５のいずれか１項に記載のロボット制御装置により制御されることを特徴とするロボット。
【請求項７】
ロボットアームを有するロボットと、
対象物を撮像する撮像部と、
前記ロボットを制御する請求項１ないし５のいずれか１項に記載のロボット制御装置と、を備えることを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、ロボットおよびロボットシステムに関するものである。
【背景技術】
【０００２】
基台と、複数のアーム（リンク）を有するロボットアームとを備えるロボットが知られている。ロボットアームの隣り合う２つのアームのうちの一方のアームは、関節部を介して、他方のアームに回動可能に連結され、最も基端側（最も上流側）のアームは、関節部を介して、基台に回動可能に連結されている。関節部はモーターにより駆動され、その関節部の駆動により、アームが回動する。また、最も先端側（最も下流側）のアームには、エンドエフェクターとして、例えば、着脱可能にハンドが装着される。そして、ロボットは、例えば、ハンドで対象物を把持し、その対象物を所定の場所へ移動させ、組立等の所定の作業を行う。また、このようなロボットの動作（駆動）は、ロボット制御装置により制御される。
【０００３】
また、撮像部により撮像を行い、得られた画像に基づいて、ロボットを動作させ、ロボットの動作プログラムを作成する場合がある。ロボットが作業を行う際は、撮像部により撮像を行い、得られた画像に基づいてロボット制御装置がロボットを制御する。この場合、例えば、画像中の対象物のエッジである直線の画像内の座標系における座標軸に沿った直線との間の角度を検出し、その角度に応じてロボットを動作させる。
【０００４】
また、特許文献１には、画像処理装置が開示されている。この画像処理装置では、画像における対象物のエッジの角度は、０°〜３６０°の範囲で得られる。また、同じ方向に延びている２つのエッジについては、向きが異なる場合と向きが同じ場合とを区別し、向きが異なる場合は、２つのエッジの角度は、１８０°異なる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−９７４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、画像における対象物の同じ方向に延びている２つのエッジについては、向きが異なる場合と向きが同じ場合とが混同され易い。このため、作業者は、特許文献１に記載の画像処理装置により検出された直線と画像座標系の基準となる直線との間の角度を、１８０°異なる角度として把握する虞があり、その情報に基づいてロボットアームの先端部を回動させると、不本意に、ロボットアームの先端部を１８０°大きい角度で回動してしまう虞がある。これにより、ロボットアームに設けられているケーブルを損傷することがある。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００８】
本発明のロボット制御装置は、ロボットを制御するロボット制御装置であって、
対象物を撮像して得られた画像を受け付ける画像受付部と、
前記画像に含まれる第１の直線と前記画像の座標系における座標軸に沿った第２の直線との間の角度を計算する角度計算部と、
複数のモードのうち所定のモードの選択を受け付けるモード受付部と、
を備え、
前記複数のモードは、前記第２の直線との間に所定の角度を有する第３の直線と前記第１の直線との間の第１角度を算出し、前記第１角度の絶対値が最も小さい前記第１の直線と前記第２の直線との間の角度を前記第１の直線の検出角度とするように前記角度計算部に計算させる第１モードを含むことを特徴とする。
【０００９】
このようなロボット制御装置によれば、適確にロボットを制御することができる。これにより、ロボットのロボットアームの先端部が大きい角度、回動してロボットアームに設けられているケーブルを損傷することを抑制することができる。
【００１０】
本発明のロボット制御装置では、前記複数のモードは、前記第１の直線と前記第２の直線との間の角度に対して１８０°減算または加算した修正角度が所定の範囲内にある場合、前記修正角度を前記検出角度とする第２モードを含むことが好ましい。
【００１１】
これにより、第２モードでは、前記第１の直線の向きが所定の方向に対して逆向きの場合を区別することなく、前記第１の直線と前記第２の直線との間の角度を計算するので、ロボットのロボットアームの先端部が大きい角度、回動してロボットアームに設けられているケーブルを損傷することを抑制することができる。
【００１２】
本発明のロボット制御装置では、前記所定の範囲が０°以上１８０°未満、または−９０°以上９０°未満であることが好ましい。
【００１３】
これにより、第２モードでは、前記第１の直線の向きが所定の方向に対して逆向きの場合を区別することなく、前記第１の直線と前記第２の直線との間の角度を計算するので、ロボットのロボットアームの先端部が大きい角度、回動してロボットアームに設けられているケーブルを損傷することを抑制することができる。
【００１４】
本発明のロボット制御装置では、前記第１モードでは、前記角度計算部は、前記第１角度の絶対値が所定の範囲内にある場合、前記第１角度の絶対値の算出に使用した前記第１の直線と前記第２の直線との間の角度を前記検出角度とすることが好ましい。
【００１５】
これにより、前記第２の直線との間に所定の角度を有する第３の直線と前記第１の直線との間の第１角度の絶対値が最も小さい前記第１の直線と前記第２の直線との間の角度を容易かつ迅速に求めることができる。
【００１６】
本発明のロボット制御装置では、前記第１モードでは、前記角度計算部は、前記第１角度の絶対値が所定の範囲内にない場合、前記第１角度の絶対値の算出に使用した前記第１の直線と前記第２の直線との間の角度に対して３６０°減算または加算した修正角度を前記検出角度とすることが好ましい。
【００１７】
これにより、前記第２の直線との間に所定の角度を有する第３の直線と前記第１の直線との間の第１角度の絶対値が最も小さい前記第１の直線と前記第２の直線との間の角度を容易かつ迅速に求めることができる。
【００１８】
本発明のロボットは、ロボットアームを有し、
請求項１ないし５のいずれか１項に記載のロボット制御装置により制御されることを特徴とする。
【００１９】
このようなロボットによれば、ロボット制御装置の制御により、適切な動作を行うことができる。
【００２０】
本発明のロボットシステムは、ロボットアームを有するロボットと、
対象物を撮像する撮像部と、
前記ロボットを制御する請求項１ないし５のいずれか１項に記載のロボット制御装置と、を備えることを特徴とする。
【００２１】
このようなロボットシステムによれば、適確にロボットを制御することができる。これにより、ロボットのロボットアームの先端部が大きい角度、回動してロボットアームに設けられているケーブルを損傷することを抑制することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明のロボットシステムの実施形態を示す図である。
【図２】図１に示すロボットシステムのブロック図である。
【図３】図１に示すロボットシステムの作業を説明するための平面図である。
【図４】図１に示すロボットシステムの表示装置に表示される画面の１例を示す図である。
【図５】図１に示すロボットシステムの直線検出を説明するための図である。
【図６】図１に示すロボットシステムの直線検出のプロパティーの具体例を示す図である。
【図７】図１に示すロボットシステムの直線検出を説明するための図である。
【図８】図１に示すロボットシステムの直線検出を説明するための図である。
【図９】図１に示すロボットシステムの直線検出を説明するための図である。
【図１０】図１に示すロボットシステムの直線検出を説明するための図である。
【図１１】図１に示すロボットシステムの直線検出を説明するための図である。
【図１２】図１に示すロボットシステムの直線検出を説明するための図である。
【図１３】図１に示すロボットシステムの直線検出を説明するための図である。
【図１４】実施形態についてハードウェア（プロセッサー）を中心として説明するためのブロック図である。
【図１５】本発明のロボットシステムの他の例１（変形例１）を示すブロック図である。
【図１６】本発明のロボットシステムの他の例２（変形例２）を示すブロック図である。
【発明を実施するための形態】
【００２３】
以下、本発明のロボット制御装置、ロボットおよびロボットシステムを添付図面に示す実施形態に基づいて詳細に説明する。
【００２４】
＜実施形態＞
≪ロボットシステム≫
図１は、本発明のロボットシステムの実施形態を示す図である。図２は、図１に示すロボットシステムのブロック図である。図３は、図１に示すロボットシステムの作業を説明するための平面図である。図４は、図１に示すロボットシステムの表示装置に表示される画面の１例を示す図である。図５は、図１に示すロボットシステムの直線検出を説明するための図である。図６は、図１に示すロボットシステムの直線検出のプロパティーの具体例を示す図である。図７〜図１３は、それぞれ、図１に示すロボットシステムの直線検出を説明するための図である。図１４は、実施形態についてハードウェア（プロセッサー）を中心として説明するためのブロック図である。図１５は、本発明のロボットシステムの他の例１（変形例１）を示すブロック図である。図１６は、本発明のロボットシステムの他の例２（変形例２）を示すブロック図である。
【００２５】
また、図１には、互いに直交する３つの軸としてｘｒ軸、ｙｒ軸およびｚｒ軸が図示されており、各軸を示す矢印の先端側を「＋（正）」、基端側を「−（負）」とする。また、図１中のｚｒ軸方向を「鉛直方向」とし、ｘｒ−ｙｒ平面に沿った方向を「水平方向」とする。また、＋ｚｒ軸側を「上方」とし、−ｚｒ軸側を「下方」とする。また、ｘｒ軸の方向を「ｘｒ方向」、ｙｒ軸の方向を「ｙｒ方向」、ｚｒ軸の方向を「ｚｒ方向」と言う。
【００２６】
また、以下では、説明の都合上、図１中の上側を「上」または「上方」、下側を「下」または「下方」と言う。また、図１中の基台側を「基端」または「上流」、その反対側を「先端」または「下流」と言う。また、図１中の上下方向が鉛直方向である。
【００２７】
また、本明細書において、「水平」とは、完全に水平な場合のみならず、水平に対して±５°以内で傾斜している場合も含む。同様に、本明細書において、「鉛直」とは、完全に鉛直な場合のみならず、鉛直に対して±５°以内で傾斜している場合も含む。また、本明細書において、「平行」とは、２つの線（軸を含む）または面が、互いに完全な平行である場合のみならず、±５°以内で傾斜している場合も含む。また、本明細書において、「直交」とは、２つの線（軸を含む）または面が、互いに完全な直交である場合のみならず、±５°以内で傾斜している場合も含む。
【００２８】
図１に示すロボットシステム１００は、ロボット１と、エンドエフェクター１９（ツール）と、撮像部４１と、画像処理装置４２と、ロボット１等の動作（駆動）を制御するロボット制御装置２と、ロボット制御装置２および画像処理装置と通信可能なコンピューター５と、を有する。
【００２９】
以下、ロボットシステム１００が有する各部を順次説明する。
〈ロボット〉
ロボット１は、いわゆる６軸の垂直多関節ロボットであり、例えば、精密機器等を製造する製造工程等で用いられ、精密機器や部品等の対象物（図示せず）の保持や搬送等の種々の作業を行う。ロボット１は、基台１１０と、基台１１０に接続されたロボットアーム１０（可動部）とを有する。なお、対象物としては、ロボット１が行う作業で用いられるものであればよく、特に限定されない。
【００３０】
基台１１０は、ロボット１を例えば床等の任意の設置箇所７０に取り付ける部分である。ロボットアーム１０は、アーム１１（第１アーム）、アーム１２（第２アーム）、アーム１３（第３アーム）、アーム１４（第４アーム）、アーム１５（第５アーム）およびアーム１６（第６アーム）を有する。また、アーム１５およびアーム１６によりリストが構成されている。また、アーム１６は、円盤状をなしており、そのアーム１６には、エンドエフェクター１９（ツール）を着脱可能に設ける（取り付ける）ことが可能になっている。これらアーム１１〜１６は、基台１１０側からエンドエフェクター１９側に向かってこの順に連結されている。また、各アーム１１〜１６は、隣り合うアームまたは基台１１０に対して図示しない所定の回動軸（第１回動軸〜第６回動軸）周りに回動可能になっている。すなわち、基台１１０とアーム１１とは、関節１７１（ジョイント）を介して連結されている。また、アーム１１とアーム１２とは、関節１７２（ジョイント）を介して連結されている。また、アーム１２とアーム１３とは、関節１７３（ジョイント）を介して連結されている。また、アーム１３とアーム１４とは、関節１７４（ジョイント）を介して連結されている。また、アーム１４とアーム１５とは、関節１７５（ジョイント）を介して連結されている。また、アーム１５とアーム１６とは、関節１７６（ジョイント）を介して連結されている。
【００３１】
エンドエフェクター１９としては、特に限定されないが、本実施形態では、対象物を吸着（保持）、解放することが可能な吸着ヘッド（吸着装置）が用いられている。また、エンドエフェクター１９の他の構成例としては、例えば、対象物を把持（保持）、解放することが可能なハンド等が挙げられる。また、対象物を保持するとは、対象物を移動または対象物の姿勢を変更させることが可能なように、対象物を持つことであり、例えば、把持（掴む）、吸着、載置等が含まれる。また、エンドエフェクター１９の先端中心をツールセンターポイントＰという。
【００３２】
また、エンドエフェクター１９、ロボット１の構成要素ではないものとして捉えてもよく、また、ロボット１の構成要素として捉えてもよい。
【００３３】
また、図２に示すように、ロボット１は、一方のアームを他方のアーム（または基台１１０）に対して回動させるモーターおよび減速機等を備える駆動部１３０を有する。モーターとしては、例えば、ＡＣサーボモーター、ＤＣサーボモーター等のサーボモーターを用いることができる。減速機としては、例えば、遊星ギア型の減速機、波動歯車装置等を用いることができる。なお、減速機は省略されていてもよい。また、ロボット１は、モーターまたは減速機の回転軸の回転角度を検出する角度センサー１４０を有する。角度センサー１４０としては、例えば、ロータリーエンコーダー等を用いることができる。また、駆動部１３０および角度センサー１４０は、各アーム１１〜１６に対応して設けられており、本実施形態では、ロボット１は、６つの駆動部１３０および６つの角度センサー１４０を有する。
【００３４】
また、各駆動部１３０は、図示はしないが、例えば図１に示す基台１１０に内蔵されたモータードライバーと電気的に接続（以下、単に「接続」とも言う）されている。各駆動部１３０は、対応するモータードライバーを介してロボット制御装置２により制御される。また、各角度センサー１４０は、ロボット制御装置２に電気的に接続されている。また、エンドエフェクター１９を駆動する駆動部（図示せず）は、ロボット制御装置２により制御される。
【００３５】
以上、ロボット１の構成について簡単に説明した。このようなロボット１は、後述するロボット制御装置２によって制御される。これにより、ロボット１は、適切な動作を行うことができる。
【００３６】
なお、ロボット１は、図示はしないが、例えばエンドエフェクター１９に加わる力（モーメントを含む）を検出する６軸力覚センサー等で構成された力検出装置（力検出部）を備えていてもよい。力検出装置は、例えば、アーム１６とエンドエフェクター１９との間に配置され、ロボット制御装置２に電気的に接続される。力検出装置を設けることにより、例えば、インピーダンス制御等の力制御を行うことが可能になる。
【００３７】
〈ロボット制御装置〉
ロボット制御装置２は、ロボット１の動作を制御する。このロボット制御装置２は、ロボット１が有する各部の機能をつかさどるロボットコントローラーで構成されており、ロボット１、コンピューター５および画像処理装置４２に対して通信可能に接続されている。
【００３８】
ロボット制御装置２とロボット１とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。また、ロボット制御装置２は、ロボット１と別体であってもよく、また、ロボット１（例えば、基台１１０等）にその一部または全部が内蔵されていてもよい。
【００３９】
また、ロボット制御装置２とコンピューター５とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。
【００４０】
また、ロボット制御装置２と画像処理装置４２とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。
【００４１】
図２に示すように、ロボット制御装置２は、プロセッサーを備える制御部２１と、制御部２１に通信可能に接続されたメモリー等を備える記憶部２２と、外部インターフェース（Ｉ／Ｆ）を備える外部入出力部２３（受付部）と、を含む。外部入出力部２３は、ロボット制御装置２の受付部の１例である。ロボット制御装置２の各構成要素は、種々のバスを介して相互通信可能に接続されている。
【００４２】
制御部２１は、記憶部２２に記憶された各種プログラム等を実行する。これにより、ロボット１の動作の制御や各種演算および判断等の処理を実現できる。
【００４３】
記憶部２２には、制御部２１により実行可能な各種プログラムが保存（記憶）されている。また、記憶部２２には、外部入出力部２３で受け付けた各種データの保存が可能である。記憶部２２は、例えばＲＡＭ（Random Access Memory）等の揮発性メモリーや、ＲＯＭ（Read Only Memory）等の不揮発性メモリー等を含んで構成されている。なお、記憶部２２は、非着脱式に限らず、着脱式の外部記憶装置（図示せず）を有する構成であってもよい。
【００４４】
各種プログラムとしては、コンピューター５から出力された動作プログラムや、動作プログラムの修正や変更をするプログラム等が挙げられる。各種データとしては、例えば、ツールセンターポイントＰの位置姿勢、各アーム１１〜１６の回動角度等に関するデータ等が挙げられる。
【００４５】
外部入出力部２３は、外部インターフェース（Ｉ／Ｆ）を備え、ロボット１、コンピューター５および画像処理装置４２の各接続のために用いられる。
【００４６】
このようなロボット制御装置２は、例えばコンピューター５で作成した動作プログラムに基づいて（を用いて）ロボット１を制御する。これにより、コンピューター５で作成した動作プログラムを用いて、ロボット１に適切な動作を行わせることができる。
【００４７】
なお、ロボット制御装置２は、前述した構成に加えて、さらに他の構成が付加されていてもよい。また、ロボット制御装置２には、ディスプレイ等を有する表示装置や、例えばマウスやキーボード等の入力装置が接続されていてもよい。また、記憶部２２に保存されている各種プログラムやデータ等は、予め記憶部２２に記憶されたものであってもよいし、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供されたものでもよいし、ネットワーク等を介して提供されたものであってもよい。
【００４８】
ここで、本発明のロボット制御装置は、本実施形態では、ロボット制御装置２とコンピューター５と画像処理装置４２とで構成されている。また、本発明のロボット制御装置の制御部は、本実施形態では、ロボット制御装置２の制御部２１とコンピューター５の制御部５１と画像処理装置４２の角度計算部４２１とで構成されている。
【００４９】
〈コンピューター〉
図２に示すコンピューター５としては、例えばＰＣ（Personal Computer）等の種々のコンピューターを用いることが可能であり、ロボット制御装置２および画像処理装置４２に対して通信可能に接続されている。
【００５０】
コンピューター５は、プロセッサーを備える制御部５１と、制御部５１に通信可能に接続されたメモリー等を備える記憶部５２と、外部Ｉ／Ｆ（インターフェース）を備える外部入出力部５３（受付部）と、を含む。外部入出力部５３は、コンピューター５の受付部の１例である。コンピューター５の各構成要素は、種々のバスを介して相互通信可能に接続されている。
【００５１】
また、コンピューター５と画像処理装置４２とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。
【００５２】
制御部５１は、記憶部５２に記憶された各種プログラム等を実行する。これにより、画像処理装置４２等の制御や各種演算および判断等の処理を実現できる。
【００５３】
記憶部５２には、制御部５１により実行可能な各種プログラムが保存されている。また、記憶部５２には、外部入出力部５３で受け付けた各種データの保存が可能である。記憶部５２は、例えばＲＡＭ（Random Access Memory）等の揮発性メモリーや、ＲＯＭ（Read Only Memory）等の不揮発性メモリー等を含んで構成されている。なお、記憶部５２は、非着脱式に限らず、着脱式の外部記憶装置（図示せず）を有する構成であってもよい。
【００５４】
外部入出力部５３は、外部Ｉ／Ｆ（インターフェース）を備え、ロボット制御装置２、画像処理装置４２、表示装置３１および入力装置３２との各接続のために用いられる。したがって、外部入出力部５３は、作業者（ユーザー）による入力装置３２の操作（指令）を受け付ける受付部としての機能を有する。また、外部入出力部５３は、複数のモードのうち所定のモードの選択を受け付けるモード受付部としての機能を有する。また、外部入出力部５３は、表示装置３１のモニターに各種画面に関する信号を出力する出力部としての機能を有する。
【００５５】
また、コンピューター５は、前述した構成に加えて、さらに他の構成が付加されていてもよい。また、記憶部５２に保存されている各種プログラムやデータ等は、予め記憶部５２に記憶されたものであってもよいし、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供されたものでもよいし、ネットワーク等を介して提供されたものであってもよい。
【００５６】
〈撮像部〉
撮像部４１は、撮像素子（図示しない）およびレンズ群（図示せず）等を有している。また、撮像部４１は、ロボット１以外の（ロボット１とは異なる）任意の設置個所、例えば、床等の任意の設置箇所に取り付けられており（固定されており）、上方を撮像可能になっている（上方を向いている）。また、撮像素子としては、特に限定されず、例えば、ＣＣＤイメージセンサー、ＣＭＯＳイメージセンサー等が挙げられる。この撮像部４１は、撮像を行って、画像（画像データ）を生成する。
【００５７】
〈画像処理装置〉
画像処理装置４２は、撮像部４１で撮像して得られた画像（画像データ）に対して各種の画像処理を行う。なお、画像処理には、例えば、直線間の角度の計算等も含まれる。この画像処理装置４２は、撮像部４１に対して通信可能に接続されている。
【００５８】
画像処理装置４２は、プロセッサーを備える角度計算部４２１と、角度計算部４２１に通信可能に接続されたメモリー等を備える記憶部４２２と、外部Ｉ／Ｆ（インターフェース）を備える外部入出力部４２３（受付部）と、を含む。外部入出力部４２３は、画像処理装置４２の受付部の１例である。画像処理装置４２の各構成要素は、種々のバスを介して相互通信可能に接続されている。
【００５９】
また、画像処理装置４２と撮像部４１とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。
【００６０】
角度計算部４２１は、記憶部４２２に記憶された各種プログラム等を実行する。これにより、直線間の角度の計算等を実現できる。すなわち、角度計算部４２１は、撮像部４１により対象物を撮像して得られた画像に含まれる直線間の角度を計算する機能を有する。
【００６１】
記憶部４２２には、角度計算部４２１により実行可能な各種プログラムが保存されている。また、記憶部４２２には、外部入出力部４２３で受け付けた各種データの保存が可能である。記憶部４２２は、例えばＲＡＭ（Random Access Memory）等の揮発性メモリーや、ＲＯＭ（Read Only Memory）等の不揮発性メモリー等を含んで構成されている。なお、記憶部４２２は、非着脱式に限らず、着脱式の外部記憶装置（図示せず）を有する構成であってもよい。
【００６２】
外部入出力部４２３は、外部Ｉ／Ｆ（インターフェース）を備え、撮像部４１、ロボット制御装置２およびコンピューター５との各接続のために用いられる。この外部入出力部４２３は、撮像部４１により対象物を撮像して得られた画像（画像データ）を受け付ける画像受付部としての機能を有する。
【００６３】
また、画像処理装置４２は、前述した構成に加えて、さらに他の構成が付加されていてもよい。また、記憶部４２２に保存されている各種プログラムやデータ等は、予め記憶部４２２に記憶されたものであってもよいし、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供されたものでもよいし、ネットワーク等を介して提供されたものであってもよい。
【００６４】
〈表示装置および入力装置〉
図２に示す表示装置３１（表示部）は、ディスプレイを備えており、例えば各種画面を表示する機能を有する。また、表示装置３１としては、特に限定されず、例えば、液晶表示装置、有機ＥＬ表示装置等の直視型の表示装置、プロジェクター等の投射型表示装置等が挙げられる。この表示装置３１は、コンピューター５に接続されているが、ロボット制御装置２に接続することもできる。また、２つの表示装置３１を用意し、その表示装置３１をコンピューター５およびロボット制御装置２に接続することもできる。ここでは、表示装置３１がコンピューター５に接続されている場合を例に挙げて説明する。
【００６５】
入力装置３２（入力部）は、例えばマウスやキーボード等を含んで構成されている。この入力装置３２は、コンピューター５に接続されているが、ロボット制御装置２に接続することもできる。また、２つの入力装置３２を用意し、その入力装置３２をコンピューター５およびロボット制御装置２に接続することもできる。ここでは、入力装置３２がコンピューター５に接続されている場合を例に挙げて説明する。作業者は、入力装置３２を操作することで、コンピューター５に対して各種の処理等の指示（入力）を行うことができる。
【００６６】
具体的には、作業者は、表示装置３１に表示される各種画面（ウィンドウ等）に対して入力装置３２のマウスでクリックする操作や、入力装置３２のキーボードで文字や数字等を入力する操作により、コンピューター５に対する指示を行うことができる。以下、この作業者による入力装置３２を用いた指示（入力装置３２による入力）を「操作指示」とも言う。この操作指示は、入力装置３２により、表示装置３１に表示された内容から所望の内容を選択する選択操作や、入力装置３２により、文字や数字等を入力する入力指示等を含む。また、入力には、選択も含まれる。
【００６７】
なお、コンピューター５には、表示装置３１および入力装置３２がそれぞれ１つ接続されていてもよいし、それぞれ複数接続されていてもよい。また、表示装置３１および入力装置３２の代わりに、表示装置３１および入力装置３２の機能を兼ね備えた表示入力装置（図示せず）を用いてもよい。表示入力装置としては、例えばタッチパネル等を用いることができる。
以上、ロボットシステム１００の基本的な構成について簡単に説明した。
【００６８】
≪ロボットシステムの動作等≫
次に、作業者が行う作業の手順と、ロボットシステム１００の動作について説明する。
【００６９】
また、図３に示すように、ロボット１が行う作業としては、エンドエフェクター１９により対象物７１を吸着（保持）し、その対象物７１を所定の位置に移動させ、対象物７２の穴７２１に挿入する作業を例に挙げて説明する。なお、対象物７１、７２は、それぞれ、特に限定されないが、対象物７１の形状および対象物７２の穴７２１の形状は、それぞれ、本実施形態では、長方形（四角形）をなしている。なお、ロボット１が行う作業は、前記のものには限定されない。
【００７０】
また、ロボット１には、互いに直交する３軸を有する複数のツール座標系（ロボット座標系）が設定されており、各ツール座標系は、互いに対応付けがなされている。そのツール座標系の１例としては、図１に示すｘｒ軸、ｙｒ軸およびｚｒ軸を有する３次元座標系、エンドエフェクター１９の先端（ツールセンターポイントＰ）を原点とする３次元座標系等が挙げられる。
【００７１】
また、撮像部４１（撮像部４１の視野）（撮像部４１で撮像して得られる画像）には、互いに直交する２軸を有する撮像部座標系（画像座標系）が設定されている。そして、撮像部４１のキャリブレーションは、終了しているものする。すなわち、所定のツール座標系、本実施形態では、ツールセンターポイントＰを原点とするツール座標系（図示せず）と、撮像部座標系（図示せず）との対応付けがなされているものとする。これにより、撮像部４１が撮像して得られた画像（撮像画像）における各部（各点）の位置の情報は、ツール座標系における座標（ロボット座標）として取得することが可能である。
【００７２】
〈量産時のロボットの動作（作業）〉
図３に示すように、ロボット１は、エンドエフェクター１９により、対象物供給部７７から供給される対象物７１を吸着する。なお、エンドエフェクター１９に吸着された対象物７１の位置、姿勢は、多少ばらつく。
【００７３】
一方、対象物７２は、コンベア７６（対象物搬送部）により搬送される。そして、対象物７２は、穴７２１に対象物７１が挿入される作業が行われる位置（以下、「組み付け位置」とも言う）で、ロック機構７６１により停止する。すなわち、対象物７２は、ロック機構７６１により、穴７２１が一定の位置で、一定の姿勢（角度）になるように位置決めされる。
【００７４】
次に、ロボット１は、対象物７１を撮像部４１上の所定の位置（一定の位置）に移動させ、撮像部４１により、対象物７１を下方から撮像する。そして、ロボット制御装置２および画像処理装置４２は、得られた画像から、互いに直交する２軸方向（ｘｒ方向、ｙｒ方向）およびｚｒ軸周りの回転方向のずれを求め、そのずれを補正し、ロボット１の動作を制御する。ロボット１は、対象物７１を組み付け位置に移動させ、対象物７２の穴７２１に挿入する。
【００７５】
〈画像処理〉
まず、表示装置３１に、図４に示す画面ＷＤ１が表示される。
【００７６】
また、撮像部４１は、対象物７１を上方から見た場合と上下方向がほぼ一致するように設置されている。この場合、撮像部４１により撮像して得られた対象物７１の画像（図４参照）は、対象物７１を上方から見た場合に対して、図４中における左右が逆になっている。
【００７７】
この画像処理シーケンスでは、対象物７１の４つの辺についての直線検出と幾何学的な計算とを組み合わせて、対象物７１（矩形）の中心の互いに直交する２軸方向の位置（ＣＸ、ＣＹ）を求める。直線検出では、図４および図５に示す枠部８を用いて、対象物７１の辺、すなわち、第１の直線を検出し、この第１の直線と画像上の撮像部座標系（画像座標系）における座標軸に沿った第２の直線との間の角度を求める。このとき、前記撮像部座標系（画像座標系）における座標軸はｘ軸であっても、ｙ軸であってもよい。また、対象物７１の角度として、前記直線検出における前記撮像部座標系（画像座標系）における前記第１の直線と前記第２の直線との間の１つの角度（Ａ）を用いる。
【００７８】
なお、前述したように、撮像部４１が撮像して得られた画像における各部（各点）の位置の情報は、ロボット座標として取得することが可能である。また、ＣＸ、ＣＹは、ロボット座標での値（単位：ｍｍ）に換算可能であり、本実施形態では、図１に示すｘｒ軸、ｙｒ軸およびｚｒ軸を有する３次元座標系での座標である。また、Ａは、画像上で前記撮像部座標系（画像座標系）におけるｘ軸に沿った第２直線に対して、前記第１直線との間を反時計回りに測った角度（単位：°）である。また、Aは、前記撮像部座標系（画像座標系）において前記第２直線と前記第１直線との間を時計回りに測った角度であってもよい。また、Aは互いに直交する３軸を有するツール座標系（ロボット座標系）における任意の平面との間の角度であってもよい。
【００７９】
〈ずれの調整のための準備〉
量産前の調整時に、以下のステップを実行する。
【００８０】
１．コンベア７６上でロック機構７６１により停止している対象物７２の穴７２１に、対象物７１を手作業で挿入する。
【００８１】
２．ロボット１を、エンドエフェクター１９が対象物７１の中心に位置するように動作させ、エンドエフェクター１９により対象物７１を吸着する。このときのロボット１のロボットアーム１０の姿勢Ｐ１を記憶する。
【００８２】
３．ロボット１を、対象物７１が撮像部４１の視野の中央付近に位置するように動作させる。このときのロボット１のロボットアーム１０の姿勢Ｐ２を記憶する。
【００８３】
４．撮像部４１により対象物７１を撮像し、画像処理装置４２の角度計算部４２１は、得られた画像（画像データ）を用いて画像処理を行ない、対象物７１の中心のロボット座標ＣＸ０、ＣＹ０と、画像上で対象物７１の４つの辺の少なくとも１つの辺に対応した直線と画像座標系におけるｘ軸に沿った直線との間を反時計回りに測った角度Ａ０とを求める。このＣＸ０、ＣＹ０、Ａ０が対象物７１の基準位置および基準角度である。なお、ＣＸ０、ＣＹ０は、図１に示すｘｒ軸、ｙｒ軸およびｚｒ軸を有する３次元座標系での座標である。
【００８４】
〈量産時のずれの調整〉
量産時のずれの調整は、以下のステップを実行する。
【００８５】
１．ロボット１のエンドエフェクター１９により対象物７１を吸着し、その対象物７１を撮像部４１の視野内に移動する。このときのロボット１のロボットアーム１０の姿勢は、前記姿勢Ｐ２となるようにする。
【００８６】
２．撮像部４１により対象物７１を撮像し、画像処理装置４２の角度計算部４２１は、得られた画像（画像データ）を用いて画像処理を行ない、対象物７１の中心のロボット座標ＣＸ１、ＣＹ１と、画像上で対象物７１の４つの辺の少なくとも１つの辺に対応した直線と画像座標系におけるｘ軸に沿った直線との間を反時計回りに測った角度Ａ１とを求める。このＣＸ１、ＣＹ１、Ａ１が対象物７１の現在位置および現在角度である。なお、ＣＸ１、ＣＹ１は、図１に示すｘｒ軸、ｙｒ軸およびｚｒ軸を有する３次元座標系での座標である。
【００８７】
対象物７１の基準位置および基準角度に対する現在位置および現在角度のずれは、下記（１）式、（２）式、（３）式で示される。
【００８８】
ΔＸ１＝ＣＸ１−ＣＸ０  ・・・（１）
ΔＹ１＝ＣＹ１−ＣＹ０  ・・・（２）
ΔＡ＝Ａ１−Ａ０  ・・・（３）
量産時には、まず、以上の動作を行う。
【００８９】
ここで、画像上の角度のずれであるΔＡは、ロボット座標での角度のずれにすると、正負が逆である。このため、ロボット１のエンドエフェクター１９をΔＡの角度、回転すると、対象物７１の角度（姿勢）は、対象物７１の基準位置での角度（姿勢）と同一になる。しかし、対象物７１の中心は、下記（４）式、（５）式で示されるΔＸ２、ΔＹ２、移動してしまう。
【００９０】
ΔＸ２＝ｃｏｓ（ΔＡ）＊ΔＸ１−ｓｉｎ（ΔＡ）＊ΔＹ１  ・・・（４）
ΔＹ２＝ｓｉｎ（ΔＡ）＊ΔＸ１＋ｃｏｓ（ΔＡ）＊ΔＹ１  ・・・（５）
ΔＸ＝ΔＸ１＋ΔＸ２  ・・・（６）
ΔＹ＝ΔＹ１＋ΔＹ２  ・・・（７）
【００９１】
このため、ロボット１を、上記（６）式、（７）式で示される対象物７１の中心のΔＸ、ΔＹのずれをキャンセルするように動作させれば、対象物７１が基準位置に一致するように補正を行うことができる。そのためには、ロボット１のエンドエフェクター１９（対象物７１）を−ΔＸ、−ΔＹ、移動させればよい。
【００９２】
３．量産時には、ロボット制御装置２は、ΔＸ、ΔＹおよびΔＡを求め、ロボット１が対象物７１を組み付け位置に移動させるまでの間に、ロボットアーム１０の姿勢Ｐ１に対して前記と同様の補正「（−ΔＸ、−ΔＹ）およびΔＡ」を行って、対象物７１を対象物７２の穴７２１に挿入する。
なお、量産前の調整時は、コンピューター５がΔＸ、ΔＹおよびΔＡを求める。
【００９３】
〈直線検出に用いる枠部〉
次に、対象物７１の直線２６の検出（直線検出）を行う際に検出領域を示す枠部８について説明する。
【００９４】
図５に示すように、撮像部４１（撮像部４１の視野）（撮像部４１で撮像して得られる画像）には、互いに直交するｘ軸、ｙ軸（２軸）を有する撮像部座標系２５（画像座標系）が設定されている。
【００９５】
また、対象物７１の形状は、特に限定されないが、本実施形態では、長方形（四角形）をなしている。また、対象物７１の内側の領域を「暗（暗い領域）」、対象物７１の外側の領域を「明（明るい領域）」と言う。なお、この例では、対象物７１の所定の長辺を検出対象の直線２６とする。
【００９６】
また、枠部８は、「ラインファインダー」とも呼ばれており、本実施形態では、長方形（四角形）の枠８１と、枠８１内に配置された複数の矢印８２（エッジ検出ライン）とを有している。また、枠８１の短辺８５、８６、それぞれ、矢印８２（エッジ検出ライン）を兼ねている。そして、各矢印８２は、等間隔で、短辺８５、８６と平行に配置され、長辺８４側（同一の方向）を向いている。なお、枠部８は、他の構成であってもよい。
【００９７】
また、直線検出を行う際は、枠部８は、各矢印８２が検出対象の直線２６と交差するように配置される。また、枠部８は、本実施形態では、各矢印８２が「明」から「暗」の方向に向くように配置される。なお、枠部８は、各矢印８２が「暗」から「明」の方向に向くように配置されてもよい。
【００９８】
また、直線２６と短辺８５との交点を始点２７、直線２６と短辺８６との交点を終点２８とし、始点２７から終点２８に向う矢印２９を想定する。この矢印２９は、直線２６の方向および向きを示している。そして、直線２６とｘ軸に沿った直線との間を反時計回りに測った角度θを求める。
【００９９】
〈画像処理のプロパティー（パラメーター）設定〉
直線検出のプロパティーの中には、「Ｄｉｒｅｃｔｅｄ」と、「ＡｎｇｌｅＴｙｐｅ」とが含まれている。この「Ｄｉｒｅｃｔｅｄプロパティー」と、「ＡｎｇｌｅＴｙｐｅプロパティー」とが、ロボットシステム１００における「角度の表現方法の指定」に相当する。）
【０１００】
（１）ＤｉｒｅｃｔｅｄプロパティーによるＡｎｇｌｅリザルトの角度表現
Ｄｉｒｅｃｔｅｄプロパティーの値には、「Ｔｒｕｅ」と、「Ｆａｌｓｅ」とがある。Ｄｉｒｅｃｔｅｄを「Ｔｒｕｅ」に設定した場合を第２モードとし、Ｄｉｒｅｃｔｅｄを「Ｆａｌｓｅ」に設定した場合を第３モードとする。本実施形態では、検出角度を求めるためのモードとして、前記第２モードおよび第３モードを含む複数のモードを有している。
【０１０１】
Ｔｒｕｅに設定されている第２モードの場合は、画像上で検出される直線は向きがあるものとし、画像処理装置４２の角度計算部４２１は、直線の検出角度として、３６０°の範囲（例えば、０°以上３６０°未満）で返す。例えば、同一方向で、向きが異なる２つの直線２６１、２６２とｘ軸に沿った直線との間の角度を反時計まわりに測った角度θが、３３０°（図７参照）と、１５０°（図８参照）である場合、３３０°と、１５０°とを区別する。すなわち、図７に示す直線２６１の検出角度は、３３０°と表現され、図８に示す直線２６２の検出角度は、１５０°と表現される。
【０１０２】
Ｆａｌｓｅに設定されている第３モードの場合は、画像上で検出される直線は向きがないものとし、角度計算部４２１は、直線と画像座標系におけるｘ軸に沿った直線との間を反時計まわりに測った検出角度として、１８０°の範囲（例えば、０°以上１８０°未満、または−９０°以上９０°未満）で返す。この設定にしておけば、枠部８を画像上で１８０度回転させて長方形（四角形）である対象物７１の対辺に移動させて、画像上で検出される直線と画像座標系におけるｘ軸に沿った直線との間を反時計まわりに測った角度を検出させるようにしても、同じ角度で検出されるようになる。これにより、その場合にでもロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１０３】
すなわち、画像上で検出される直線と画像座標系におけるｘ軸に沿った直線との間を反時計まわりに測った角度が所定の範囲内にある場合、その角度を検出角度とする。また、前記直線の前記角度が所定の範囲内にない場合は、前記直線の前記角度に対して１８０°減算または加算した修正角度が所定の範囲内にある場合、修正角度を検出角度とする。また、前記所定の範囲は、特に限定されないが、０°以上１８０°未満、または−９０°以上９０°未満であることが好ましい。
【０１０４】
例えば、同一方向で、向きが異なる２つの直線２６１、２６２と画像座標系におけるｘ軸に沿った直線との間を反時計まわりに測った角度θが、それぞれ、３３０°（図７参照）と、１５０°（図８参照）である場合、３３０°と、１５０°とを区別しない。すなわち、直線２６１の検出角度および直線２６２の検出角度は、いずれも３３０°（図９、図１０参照）または１５０°（図１１、図１２参照）と表現される。
【０１０５】
ここで、直線検出のモードを設定する際は、作業者は、入力装置３２を用い、図４に示す画面ＤＷ１において、Ｄｉｒｅｃｔｅｄプロパティーの値の選択、後述するＡｎｇｌｅＴｙｐｅプロパティーの値の選択等の所定の操作指示を行う。コンピューター５の外部入出力部５３が前記操作指示を受け付けると、制御部５１は、直線検出のモードを指示されたモードに設定する。
【０１０６】
（２）ＡｎｇｌｅＴｙｐｅプロパティーによるＡｎｇｌｅリザルトの角度表現
ＡｎｇｌｅＴｙｐｅプロパティーの値には、「Ａｂｓｏｌｕｔｅ」と、「Ｎｅａｒｅｓｔ」とがある。ＡｎｇｌｅＴｙｐｅを「Ｎｅａｒｅｓｔ」に設定した場合を第１モードとし、ＡｎｇｌｅＴｙｐｅを「Ａｂｓｏｌｕｔｅ」に設定した場合を第４モードとする。
【０１０７】
Ａｂｓｏｌｕｔｅに設定されている第４モードの場合は、角度計算部４２１は、直線の検出角度として、０°以上３６０°未満の範囲で返す。
【０１０８】
Ｎｅａｒｅｓｔに設定されている第１モードの場合は、角度計算部４２１は、直線の検出角度として、後述するＡｎｇｌｅＳｔａｒｔプロパティーに設定されている角度（所定の角度）に最も近い角度を返す。
【０１０９】
すなわち、角度計算部４２１は、撮像部座標系２５（画像座標系）におけるｘ軸に沿った直線との間に所定の角度を有する直線と、画像上で検出される直線との間の角度の絶対値が最も小さいとき、画像上で検出される直線の角度をその直線の検出角度とする。これにより、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１１０】
実際には、所定の角度に最も近い角度を求めるには、以下のようにする。
まず、角度計算部４２１は、画像上で検出される直線２６と、画像座標系におけるｘ軸に沿った直線との間に所定の角度を有する直線との間の角度の絶対値が所定の範囲内にある場合、その直線２６と画像座標系におけるｘ軸に沿った直線との間の角度を検出角度とする。また、角度計算部４２１は、直線２６と、画像座標系におけるｘ軸に沿った直線との間に所定の角度を有する直線との間の角度の絶対値が所定の範囲内にない場合、その直線２６と画像座標系におけるｘ軸に沿った直線との間の角度に対して３６０°減算または加算した修正角度を検出角度とする。これにより、画像座標系におけるｘ軸に沿った直線との間に所定の角度を有する直線との間の角度の絶対値が最も小さい直線２６と画像座標系におけるｘ軸に沿った直線との間の角度を容易かつ迅速に求めることができる。
【０１１１】
ここで、前記所定の範囲の下限値、上限値は、特に限定されず、例えば、−５０°、１８０°等が挙げられる。
【０１１２】
例えば、図１３に示すように、直線２６と画像座標系におけるｘ軸に沿った直線との間の角度、すなわち、Ｄｉｒｅｃｔｅｄが「Ｔｒｕｅ」で「３３０°」の角度θ１（図１３参照）は、ＡｎｇｌｅＳｔａｒｔが「０°」であれば、画像座標系におけるｘ軸に沿った直線から時計回りの角度θ２、すなわち、「−３０°」と表現され、ＡｎｇｌｅＳｔａｒｔが「１８０°」であれば、画像座標系におけるｘ軸に沿った直線から反時計回りの角度θ１、すなわち、「３３０°」と表現される。
【０１１３】
ここで、例えば、直線検出のプロパティーであるＤｉｒｅｃｔｅｄを「Ｆａｌｓｅ」、ＡｎｇｌｅＴｙｐｅを「Ｎｅａｒｅｓｔ」、ＡｎｇｌｅＳｔａｒｔを「０°」、ＡｎｇｌｅＲａｎｇｅを「３０°」に設定する。なお、ＡｎｇｌｅＲａｎｇｅは、直線の角度の検出範囲であり、「３０°」は、「±３０°」のことである。
【０１１４】
この設定で画像処理シーケンスを実行し、対象物７１の中心点の座標と、対象物７１の４つの辺の少なくとも１つの辺に対応した直線と画像座標系におけるｘ軸に沿った直線との間の角度を求め、前記量産時のずれの調整を行う。ＡｎｇｌｅＴｙｐｅを「Ａｂｓｏｌｕｔｅ」として、前記量産時のずれの調整を行うと、ロボットアーム１０の先端部が３６０°近く回動してしまうことがあるが、前記の設定では、そのような回動を抑制することができる。
【０１１５】
また、以下に、直線検出のプロパティーの具体例を示す。
例えば、図６に示すように、Ｐｒｏｐｅｒｔｙを「Ｖａｌｕｅ」、ＡｎｇｌｅＴｙｐｅを「Ａｂｓｏｌｕｔｅ」、ＡｎｇｌｅＳｔａｒｔを「０」、ＡｎｇｌｅＲａｎｇｅを「１８０」、Ｄｉｒｅｃｔｅｄを「Ｆａｌｓｅ」、ＮｕｍｂｅｒＯｆＥｄｇｅｓを「５」、Ｐｏｌａｒｉｔｙを「ＬｉｇｈｔＴｏＤａｒｋ」、ＳｅａｒｃｈＷｉｄｔｈを「３」に設定する。
【０１１６】
ＡｎｇｌｅＴｙｐｅは、「角度表現を選択」である。また、ＡｎｇｌｅＳｔａｒｔは、「所定の角度」である。また、ＡｎｇｌｅＲａｎｇｅは、「角度検出の範囲」である。また、Ｄｉｒｅｃｔｅｄは、「向きの有無」である。また、ＮｕｍｂｅｒＯｆＥｄｇｅｓは、「エッジ検出ラインの本数」である。また、Ｐｏｌａｒｉｔｙは、「検出するエッジ明暗の向き」であり、例えば、「明から暗」と「暗から明」とがある。また、ＳｅａｒｃｈＷｉｄｔｈは、「エッジ検出ラインの幅」である。この幅の中で明暗を平均化した上で、エッジ検出される。
【０１１７】
〈パラメーターの組み合わせの説明〉
前述したように、角度表現には、Ｄｉｒｅｃｔｅｄと、ＡｎｇｌｅＴｙｐｅとがあるが、Ｄｉｒｅｃｔｅｄのパラメーターと、ＡｎｇｌｅＴｙｐｅのパラメーターとを組み合わせることも可能である。
【０１１８】
この場合、Ｄｉｒｅｃｔｅｄを「Ｔｒｕｅ」、ＡｎｇｌｅＴｙｐｅを「Ａｂｓｏｌｕｔｅ」に設定する場合と、Ｄｉｒｅｃｔｅｄを「Ｔｒｕｅ」、ＡｎｇｌｅＴｙｐｅを「Ｎｅａｒｅｓｔ」に設定する場合と、Ｄｉｒｅｃｔｅｄを「Ｆａｌｓｅ」、ＡｎｇｌｅＴｙｐｅを「Ａｂｓｏｌｕｔｅ」に設定する場合と、Ｄｉｒｅｃｔｅｄを「Ｆａｌｓｅ」、ＡｎｇｌｅＴｙｐｅを「Ｎｅａｒｅｓｔ」に設定する場合の４つの組み合わせがある。
【０１１９】
以上説明したように、ロボットシステム１００によれば、適確にロボット１を制御し、ロボット１を動作させることができる。これにより、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１２０】
以上説明したように、ロボット制御装置２、コンピューター５および画像処理装置４２で構成されるロボット制御装置は、ロボット１を制御する装置であり、対象物７１を撮像して得られた画像を受け付ける外部入出力部４２３（画像受付部）と、画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を計算する角度計算部４２１と、複数のモードのうち所定のモードの選択を受け付ける外部入出力部５３（モード受付部）と、を備えている。また、複数のモードは、画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間に所定の角度を有する直線との間の第１角度の絶対値が最も小さいとき、直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を直線２６の検出角度とするように角度計算部４２１に計算させる第１モードを含む。
【０１２１】
このようなロボット制御装置によれば、適確にロボット１を制御することができる。これにより、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１２２】
また、複数のモードは、画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度に対して１８０°減算または加算した修正角度が所定の範囲内にある場合、修正角度を検出角度とする第２モードを含む。これにより、第２モードでは、画像に含まれる直線２６の向きが所定の方向に対して逆向きの場合を区別することなく、画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を計算するので、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１２３】
また、所定の範囲が０°以上１８０°未満、または−９０°以上９０°未満であることが好ましい。これにより、第２モードでは、画像に含まれる直線２６の向きが所定の方向に対して逆向きの場合を区別することなく、画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を計算するので、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１２４】
また、第１モードでは、角度計算部４２１は、画像に含まれる直線２６と、撮像部座標系２５（画像座標系）における座標軸に沿った直線との間に所定の角度を有する直線との間の第１角度の絶対値が所定の範囲内にある場合、その第１角度の絶対値の算出に使用した画像に含まれる直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を検出角度とする。これにより、撮像部座標系２５（画像座標系）における座標軸に沿った直線との間に所定の角度を有する直線との間の第１角度の絶対値が最も小さい直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を容易かつ迅速に求めることができる。
【０１２５】
また、第１モードでは、角度計算部４２１は、像部座標系２５（画像座標系）における座標軸に沿った直線との間に所定の角度を有する直線との間の第１角度の絶対値が所定の範囲内にない場合、その第１角度の絶対値の算出に使用した直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度に対して３６０°減算または加算した修正角度を検出角度とする。これにより、撮像部座標系２５における座標軸に沿った直線との間に所定の角度を有する直線との間の第１角度の絶対値が最も小さい直線２６と撮像部座標系２５（画像座標系）における座標軸に沿った直線との間の角度を容易かつ迅速に求めることができる。
【０１２６】
また、ロボット１は、ロボットアーム１０を有し、ロボット制御装置２、コンピューター５および画像処理装置４２で構成されるロボット制御装置により制御される。
【０１２７】
このようなロボット１によれば、ロボット制御装置の制御により、適切な動作を行うことができる。
【０１２８】
また、ロボットシステム１００は、ロボットアーム１０を有するロボット１と、対象物７１を撮像する撮像部４１と、ロボット１を制御するロボット制御装置２、コンピューター５および画像処理装置４２で構成されるロボット制御装置と、を備える。
【０１２９】
このようなロボットシステム１００によれば、適確にロボット１を制御することができる。これにより、ロボット１のロボットアーム１０の先端部が大きい角度、回動してロボットアーム１０に設けられているケーブルを損傷することを抑制することができる。
【０１３０】
図１４は、実施形態についてハードウェア（プロセッサー）を中心として説明するためのブロック図である。
【０１３１】
図１４には、ロボット１とコントローラー６１とコンピューター６２が接続されたロボットシステム１００Ａの全体構成が示されている。ロボット１の制御はコントローラー６１にあるプロセッサーによりメモリーにある指令を読みだして実行されてもよいし、コンピューター６２に存在するプロセッサーによりメモリーにある指令を読みだしてコントローラー６１を介して実行されてもよい。
【０１３２】
＜変形例１＞
図１５は、本発明のロボットシステムの他の例１（変形例１）を示すブロック図である。
【０１３３】
図１５には、ロボット１に直接コンピューター６３が接続されたロボットシステム１００Ｂの全体構成が示されている。ロボット１の制御はコンピューター６３に存在するプロセッサーによりメモリーにある指令を読みだして直接実行される。
【０１３４】
＜変形例２＞
図１６は、本発明のロボットシステムの他の例２（変形例２）を示すブロック図である。
【０１３５】
図１６には、コントローラー６１が内蔵されたロボット１とコンピューター６６が接続され、コンピューター６６がＬＡＮ等のネットワーク６５を介してクラウド６４に接続されているロボットシステム１００Ｃの全体構成が示されている。ロボット１の制御はコンピューター６６に存在するプロセッサーによりメモリーにある指令を読みだして実行されてもよいし、クラウド６４上に存在するプロセッサーによりコンピューター６６を介してメモリーにある指令を読みだして実行されてもよい。
【０１３６】
また、ロボットシステム１００Ａ、１００Ｂ、１００Ｃでは、各プロセッサーは、それぞれ、１つの装置で構成されていてもよく、また、複数の装置で構成されていてもよい、すなわち、複数の単位プロセッサーに分かれていてもよい。
【０１３７】
以上、本発明のロボット制御装置、ロボットおよびロボットシステムを図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物が付加されていてもよい。
【０１３８】
また、前述した実施形態では、ロボットとして、６軸の垂直多関節ロボットを例示したが、当該ロボットは、これに限らず、例えば、スカラーロボット等の水平多関節ロボット、脚部を有する脚式歩行（走行）ロボット等の他の形態のロボットであってもよい。また、当該ロボットは、単腕ロボットに限定されず、例えば、双腕ロボット等の他のロボットであってもよい。したがって、ロボットアーム（可動部）の数は、１つに限定されず、２つ以上であってもよい。また、ロボットアーム（可動部）が有するアームの数は、前述した実施形態では、６つであるが、１つ〜５つまたは７つ以上であってもよい。
【符号の説明】
【０１３９】
１…ロボット、２…ロボット制御装置、５…コンピューター、８…枠部、１０…ロボットアーム、１１…アーム、１２…アーム、１３…アーム、１４…アーム、１５…アーム、１６…アーム、１９…エンドエフェクター、２１…制御部、２２…記憶部、２３…外部入出力部、２５…撮像部座標系、２６…直線、２７…始点、２８…終点、２９…矢印、３１…表示装置、３２…入力装置、４１…撮像部、４２…画像処理装置、５１…制御部、５２…記憶部、５３…外部入出力部、６１…コントローラー、６２…コンピューター、６３…コンピューター、６４…クラウド、６５…ネットワーク、６６…コンピューター、７０…設置箇所、７１…対象物、７２…対象物、７６…コンベア、７７…対象物供給部、８１…枠、８２…矢印、８３…長辺、８４…長辺、８５…短辺、８６…短辺１００…ロボットシステム、１００Ａ…ロボットシステム、１００Ｂ…ロボットシステム、１００Ｃ…ロボットシステム、１１０…基台、１３０…駆動部、１４０…角度センサー、１７１…関節、１７２…関節、１７３…関節、１７４…関節、１７５…関節、１７６…関節、２６１…直線、２６２…直線、４２１…角度計算部、４２２…記憶部、４２３…外部入出力部、７２１…穴、７６１…ロック機構、Ａ０…角度、Ａ１…角度、ＣＸ０…ロボット座標、ＣＸ１…ロボット座標、ＤＷ１…画面、Ｐ…ツールセンターポイント、Ｐ１…姿勢、Ｐ２…姿勢、
ＷＤ１…画面、θ…角度、θ１…角度、θ２…角度
【図１】
2019115950.tif 000003
【図２】
2019115950.tif 000004
【図３】
2019115950.tif 000005
【図４】
2019115950.tif 000006
【図５】
2019115950.tif 000007
【図６】
2019115950.tif 000008
【図７】
2019115950.tif 000009
【図８】
2019115950.tif 000010
【図９】
2019115950.tif 000011
【図１０】
2019115950.tif 000012
【図１１】
2019115950.tif 000013
【図１２】
2019115950.tif 000014
【図１３】
2019115950.tif 000015
【図１４】
2019115950.tif 000016
【図１５】
2019115950.tif 000017
【図１６】
2019115950.tif 000018