(57)【特許請求の範囲】
【請求項１】
斜面から鉛直方向に離れた第１ポイントから当該斜面上の第２ポイントに対しての処理を開始するロボットであって、
前記第２ポイントに対する作業を行う作業ツールと、
前記作業ツールを移動及び姿勢変更する移動手段と、
前記斜面上の任意の３点の座標を求めるために前記任意の３点に前記作業ツールの先端を接触させる操作を受け付ける操作手段と、
前記任意の３点の座標に基づき、前記作業ツールが前記第１ポイントから前記第２ポイントへ向く方向を演算する演算手段と、
少なくとも前記第１ポイントに前記作業ツールを移動させ、前記演算手段の演算結果に従って前記作業ツールの姿勢を前記第２ポイントへ向け、前記作業ツールに前記第１ポイントへの処理を開始させる制御手段と、
を備え、
前記任意の３点は、同一直線上にないこと、
を特徴とするロボット。
【請求項２】
斜面から鉛直方向に離れた第１ポイントから当該斜面上の第２ポイントに対しての処理を開始するロボットであって、
前記第２ポイントに対する作業を行う作業ツールと、
前記作業ツールを移動及び姿勢変更する移動手段と、
前記斜面上の任意の２点の座標を求めるために前記任意の２点に前記作業ツールの先端を接触させる操作を受け付ける操作手段と、
前記任意の２点の座標に基づき、前記作業ツールが前記第１ポイントから前記第２ポイントへ向く方向を演算する演算手段と、
少なくとも前記第１ポイントに前記作業ツールを移動させ、前記演算手段の演算結果に従って前記作業ツールの姿勢を前記第２ポイントへ向け、前記作業ツールに前記第１ポイントへの処理を開始させる制御手段と、
を備え、
前記斜面は、前記座標の基準となるＸ軸、Ｙ軸、Ｚ軸のいずれかに対して平行であること、
を特徴とするロボット。
【請求項３】
前記第１ポイントと前記第２ポイントの離間距離を記憶するデータ記憶手段を備え、
前記操作手段は、
前記第２ポイントの座標を求めるために前記第２ポイントに前記作業ツールの先端を接触させる操作を受け付け、
前記演算手段は、
前記第２ポイントの座標、前記任意の３点の座標及び前記離間距離に基づき、前記第１ポイントの座標を演算し、
前記制御手段は、
前記演算手段の演算結果に従って前記作業ツールを前記第１ポイントに移動させること、
を特徴とする請求項１記載のロボット。
【請求項４】
前記第１ポイントと前記第２ポイントの離間距離を記憶するデータ記憶手段を備え、
前記操作手段は、
前記第２ポイントの座標を求めるために前記第２ポイントに前記作業ツールの先端を接触させる操作を受け付け、
前記演算手段は、
前記第２ポイントの座標、前記任意の２点の座標及び前記離間距離に基づき、前記第１ポイントの座標を演算し、
前記制御手段は、
前記演算手段の演算結果に従って前記作業ツールを前記第１ポイントに移動させること、
を特徴とする請求項２記載のロボット。
【請求項５】
前記作業ツールの各ポイントに対して命令を関連付ける記述様式の制御プログラムを記憶する記憶手段を備え、
前記制御手段は、前記記憶手段の制御プログラムが示す各ポイントに関連して、前記命令を呼び出して前記移動手段と前記作業ツールを制御すること、
を特徴とする請求項１乃至４のいずれかに記載のロボット。
【請求項６】
前記記憶手段は、
前記第２ポイントに対して、前記第１ポイントの座標を演算する演算命令と、前記演算命令により得られる前記第１ポイントの座標へ前記作業ツールを移動させる移動命令と、前記作業ツールの動作命令とを関連付けた前記制御プログラムを記憶すること、
を特徴とする請求項５記載のロボット。
【請求項７】
前記制御手段は、
ティーチングモードの際に、前記操作手段が受け付けた操作に従って、前記演算手段が演算した向きの順方向及び逆方向に前記作業ツールを移動させること、
を特徴とする請求項１乃至４のいずれかに記載のロボット。
【請求項８】
前記制御手段は、
ティーチングモードの際に、前記操作手段の受け付けた操作に従って、前記演算手段が演算した向きと直交する前記斜面に沿って前記作業ツールを移動させること、
を特徴とする請求項１乃至４のいずれかに記載のロボット。
【請求項９】
前記操作手段は、
ティーチングモードの際に、前記演算手段が演算した向きを一軸とする直交座標系に切り替える切替手段を含み、
前記制御手段は、
ティーチングモードの際に、前記切替手段の前記直交座標系への切り替えによって、前記演算手段が演算した向きを一軸とする直交座標系で前記操作手段の操作を受け付けること、
を特徴とする請求項１乃至４のいずれかに記載のロボット。
【請求項１０】
前記制御手段は、
前記ティーチングモードの際に、前記切替手段の前記直交座標系への切り替えによって、前記操作手段の操作に従って、前記作業ツールの先端を中心にして前記作業ツールを回転させること、
を特徴とする請求項９記載のロボット。
【請求項１１】
前記作業ツールは、電動のネジ締めドライバであり、
前記第２ポイントは、ネジの着座点であり、
前記第１ポイントは、ネジ締め開始時に前記ネジ締めドライバを存在させる位置であること、
を特徴とする請求項１乃至４のいずれかに記載のロボット。
【請求項１２】
前記第１ポイントは、ネジ締め長に予めセットされたバッファ分と押付け量を加えた距離だけ、前記第２ポイントから斜面鉛直方向に離された位置であること、
を特徴とする請求項１１記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ティーチングによりポイント指定されて動作可能なロボットに関する。
【背景技術】
【０００２】
ワークに対するネジ締め、溶接、塗装、ワークの搬送、ワークへの部品の取り付け、半田付け等の各種産業用ロボットは、例えば垂直多関節型の移動手段を有し、コンピュータによるプログラム制御下で、移動手段に装備された作業ツールを所定ポイントに移動させ、所定姿勢に変位させ、作業ツールを駆動する。
【０００３】
ロボットに対する制御プログラムは、ＳＬＩＭ（Ｓｔａｎｄａｒｄ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｉｎｄｕｓｔｒｉａｌ  Ｍａｎｉｐｕｌａｔｏｒｓ）やスーパーＳＥＬ言語等の各種のロボット言語により記述される。プログラミングは、キーボードやＧＵＩを用いたコードの入力や関数の呼び出し等のコンピュータツールとの対面処理が主であるが、ポイントや姿勢の記録についてはティーチングに依る場合が多い。
【０００４】
ティーチングの過程では、ティーチング技術者がシミュレータ、エミュレータ又は実際上のロボットを、コンピュータツール或いはティーチングペンダントを用いて操作する。ティーチング技術者は、作業ツールを所望ポイントにＪＯＧ移動させ、また作業ツールに所望姿勢を採らせ、そのポイント及び姿勢をポイントデータとして記録させる。ポイントデータは、プログラムの実行の際に呼び出される。この過程で、ロボットのコントローラは、例えばロボット言語がＳＬＩＭ準拠であれば、移動手段の動きを追跡して、ポイントのＸＹＺ座標や作業ツールの姿勢を示す２軸等の各回転角度を解析し、Ｍｏｖｅ命令等に付帯させる変数に関連付けて解析結果を記録する。
【０００５】
例えば、ネジ締め作業のロボットの場合、ティーチング技術者は、着座点に対する鉛直方向に少なくともネジ締め長分離れたネジ締め開始ポイントをティーチングする。ティーチング技術者は、着座点を基準に目視で作業ツールをＸＹＺ軸方向への移動、水平面に平行な回転及び垂直面に平行な回転をさせながらネジ締め開始ポイントに合わせる。
【０００６】
着座点がワークの水平面に存在する場合、ティーチング技術者は、作業ツールの水平面移動に最大の注意を払えばよい。高さ方向及び作業ツールの姿勢については数値に合致した単純操作で足りる。例えば、＋Ｚ方向ボタンの押下を１回すれば１ｍｍ分だけ作業ツールが上昇する場合、ネジ締め長が９ｍｍであれば、着座点に作業ツールを位置させてから９回分の＋Ｚ方向ボタンを押下することで高さ方向の指定が完了するし、垂直面に平行な回転の角度については作業ツールを真下等の初期値に復帰させれば足りる。
【０００７】
従って、ネジ締め開始ポイントは、それ自体を表す目印の無い空中に存在するが、そのティーチングは比較的容易に高精度に指定することができた。ネジ締めに限らず、作業ポイントと作業ツールを位置させるポイントが異なり、作業ツールを位置させるポイントが明確な目印の無い空中に存在する場合があるが、その場合であっても、作業ポイントが水平面や垂直面に存在する場合は、そのティーチングは比較的容易且つ高精度を達成できた。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平７−６４６１９号公報
【特許文献２】特開平５−２５７５２２号公報
【特許文献３】特許４２２２８２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
近年、各種傾斜角の斜面を各種方位角に向けた多面的な立体ワークに対して、ロボットによりネジ締め等の作業を行う要望が高まっている。プログラミングの際には、斜面に有するネジ締めポイント等の作業ポイントから鉛直な方向にネジ締め長分等の適正距離離れた位置に、ネジ締め開始ポイント等の作業ツールを作業ポイントに向けるティーチングが必要となる。
【００１０】
このティーチングでは、作業ツールを作業ポイントに精度よく向けるために、目視にてワークの斜面を計測し、作業ツールと作業ポイントを結び、且つ斜面と鉛直な仮想線を的確にイメージしなくてはならない。また、作業ツールと作業ポイントとの距離を適正化すべく、三角関数等の数学的手法を駆使しながら、ＸＹＺ各軸の移動量を的確に把握しなくてはならない。
【００１１】
更に、作業ツールの姿勢決定及び位置決定のティーチングは、一体的であり、互いに影響を及ぼす。例えば、距離が適正化されても、姿勢変更のために作業ツールをモータ軸中心に回転させれば、適正化されたはずの距離が変化してしまう。
【００１２】
このティーチングの作業において作業ツールの的確な位置を教示し、的確な姿勢を教示できなければ、ネジの角度が着座点と微妙にずれたり、ネジ締め量が足りなかったりして、ネジ締めの確度に影響を及ぼす等、ロボットの作業に対する品質に影響を及ぼす。従って、作業ポイントが斜面に存在すると、ティーチング技術者にとっては非常に根気のいるティーチング作業となってしまう。
【００１３】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、斜面から鉛直方向に離れた第１ポイントから当該斜面上の第２ポイントに対しての処理を開始させるティーチングの労力を低減させつつ高精度に達成できるロボットを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために、本発明に係るロボットは、斜面から鉛直方向に離れた第１ポイントから当該斜面上の第２ポイントに対しての処理を開始するロボットであって、前記第２ポイントに対する作業を行う作業ツールと、前記作業ツールを移動及び姿勢変更する移動手段と、前記斜面上の任意の３点の座標を求めるために前記任意の３点に前記作業ツールの先端を接触させる操作を受け付ける操作手段と、前記任意の３点の座標に基づき、前記作業ツールが前記第１ポイントから前記第２ポイントへ向く方向を演算する演算手段と、少なくとも前記第１ポイントに前記作業ツールを移動させ、前記演算手段の演算に従って前記作業ツールの姿勢を前記第２ポイントへ向け、前記作業ツールに前記第１ポイントへの処理を開始させる制御手段と、を備え、前記任意の３点は、同一直線上にないこと、を特徴とする。また、本発明に係るロボットは、斜面から鉛直方向に離れた第１ポイントから当該斜面上の第２ポイントに対しての処理を開始するロボットであって、前記第２ポイントに対する作業を行う作業ツールと、前記作業ツールを移動及び姿勢変更する移動手段と、前記斜面上の任意の２点の座標を求めるために前記任意の２点に前記作業ツールの先端を接触させる操作を受け付ける操作手段と、前記任意の２点の座標に基づき、前記作業ツールが前記第１ポイントから前記第２ポイントへ向く方向を演算する演算手段と、少なくとも前記第１ポイントに前記作業ツールを移動させ、前記演算手段の演算結果に従って前記作業ツールの姿勢を前記第２ポイントへ向け、前記作業ツールに前記第１ポイントへの処理を開始させる制御手段と、を備え、前記斜面は、前記座標の基準となるＸ軸、Ｙ軸、Ｚ軸のいずれかに対して平行であること、を特徴とする。
【００１５】
前記第１ポイントと前記第２ポイントの離間距離を記憶するデータ記憶手段を備え、前記操作手段は、前記第２ポイントの座標を求めるために前記第２ポイントに前記作業ツールの先端を接触させる操作を受け付け、前記演算手段は、前記第２ポイントの座標、前記任意の３点の座標及び前記離間距離に基づき、前記第１ポイントの座標を演算し、前記制御手段は、前記演算手段の演算結果に従って前記作業ツールを前記第１ポイントに移動させるようにしてもよい。また、前記第１ポイントと前記第２ポイントの離間距離を記憶するデータ記憶手段を備え、前記操作手段は、前記第２ポイントの座標を求めるために前記第２ポイントに前記作業ツールの先端を接触させる操作を受け付け、前記演算手段は、前記第２ポイントの座標、前記任意の２点の座標及び前記離間距離に基づき、前記第１ポイントの座標を演算し、前記制御手段は、前記演算手段の演算結果に従って前記作業ツールを前記第１ポイントに移動させるようにしてもよい。
【００１６】
前記作業ツールの各ポイントに対して命令を関連付ける記述様式の制御プログラムを記憶する記憶手段を備え、前記制御手段は、前記記憶手段の制御プログラムが示す各ポイントに関連して、前記命令を呼び出して前記移動手段と前記作業ツールを制御するようにしてもよい。
【００１７】
前記記憶手段は、前記第２ポイントに対して、前記第１ポイントの座標を演算する演算命令と、前記演算命令により得られる前記第１ポイントの座標へ前記作業ツールを移動させる移動命令と、前記作業ツールの動作命令とを関連付けた前記制御プログラムを記憶するようにしてもよい。
【００１８】
前記制御手段は、ティーチングモードの際に、前記操作手段が受け付けた操作に従って、前記演算手段が演算した向きの順方向及び逆方向に前記作業ツールを移動させるようにしてもよい。
【００１９】
前記制御手段は、ティーチングモードの際に、前記操作手段の受け付けた操作に従って、前記演算手段が演算した向きと直交する前記斜面に沿って前記作業ツールを移動させるようにしてもよい。
【００２０】
前記操作手段は、ティーチングモードの際に、前記演算手段が演算した向きを一軸とする直交座標系に切り替える切替手段を含み、前記制御手段は、ティーチングモードの際に、前記切替手段の前記直交座標系への切り替えによって、前記演算手段が演算した向きを一軸とする直交座標系で前記操作手段の操作を受け付けるようにしてもよい。
【００２１】
前記制御手段は、前記ティーチングモードの際に、前記切替手段の前記直交座標系への切り替えによって、前記操作手段の操作に従って、前記作業ツールの先端を中心にして前記作業ツールを回転させるようにしてもよい。
【００２２】
前記作業ツールは、電動のネジ締めドライバであり、前記第２ポイントは、ネジの着座点であり、前記第１ポイントは、ネジ締め開始時に前記ネジ締めドライバを存在させる位置であるようにしてもよい。
【００２３】
前記第１ポイントは、ネジ締め長に予めセットされたバッファ分と押付け量を加えた距離だけ、前記第２ポイントから斜面鉛直方向に離された位置であるようにしてもよい。
【発明の効果】
【００２４】
本発明によれば、作業ポイントが斜面に位置していても、その作業ポイントに対して作業ツールを位置させる作業開始ポイントの指定にかかる労力を低減でき、作業ポイントに対する作業の確度も向上する。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係るロボットの全体構成図である。
【図２】本発明の第１の実施形態に係る作業ツールを示す拡大図である。
【図３】本発明の第１の実施形態に係るコントローラの構成図である。
【図４】本発明の第１の実施形態に係るコントローラの運転モードにおける機能ブロック図である。
【図５】本発明の第１の実施形態に係るコントローラのプログラミングモードにおける機能ブロック図である。
【図６】本発明の第１の実施形態に係るティーチングペンダントを示す模式図である。
【図７】本発明の第１の実施形態に係るネジ締めに必要なパラメータを示す説明図である。
【図８】本発明の第１の実施形態に係る斜面及び其の周囲に設定される各特徴を示す模式図である。
【図９】本発明の第１の実施形態に係るロボットの作業開始ポイントＰｂの登録動作を示すフローチャートである。
【図１０】本発明の第１の実施形態に係るロボットのネジ締め動作を示すフローチャートである。
【図１１】本発明の第２の実施形態に係るワークの模式図である。
【図１２】本発明の第３の実施形態に係る制御プログラムを示す構造図である。
【図１３】本発明の第３の実施形態に係るコントローラの機能ブロック図である。
【図１４】本発明の第４の実施形態に係る制御プログラムの作業命令を示す構造図である。
【図１５】制御プログラムの構造に係り、（ａ）は第３の実施形態に係る制御プログラム、（ｂ）は第４の実施形態に係る制御プログラムを示す。
【図１６】本発明の第５の実施形態に係る作業ツールの移動方向を示す模式図である。
【図１７】本発明の第６の実施形態に係る作業ツールの回転及び移動を示す模式図である。
【発明を実施するための形態】
【００２６】
（第１の実施形態）
以下、本発明に係るロボット１の第１の実施形態について図面を参照しつつ詳細に説明する。図１は、本実施形態のロボット１の全体構成図である。図２は、作業ツール４を示す拡大図であり、（ａ）は真上からＸＹ平面方向の平面図、（ｂ）は真横からＸＺ平面方向の側面図である。図１に示すように、ロボット１は、大別して移動手段２とコントローラ３を備え、ワークの斜面Ｐｃに存在する作業ポイントＰａに対する作業を作業開始ポイントＰｂから開始する。移動手段２には、作業ツール４が装着される。移動手段２は、指定されたポイントに作業ツール４が位置し、指定された姿勢を作業ツール４が採るように、作業ツール４をＸ方向、Ｙ方向及びＺ方向に移動させ、作業ツール４に方位角φを変化させるＲ回転及び迎角θを変化させるＰ回転をさせる。
【００２７】
作業ポイントＰａは、作業ツール４により作業が施される箇所である。作業開始ポイントＰｂは、作業ツール４を位置させて作業ポイントＰａに対する作業を開始させる箇所である。作業ツール４は、例えば電動のネジ締めドライバ、溶接機、塗装ガン、ハンドラ等であり、ロボット１の作業内容に依る。Ｘ軸方向は、水平面と平行な１軸方向、Ｙ軸方向は、水平面と平行でＸ軸と直交する他軸方向、Ｚ軸方向は高さ方向である。Ｒ回転は、水平を維持した方位角φを変動させる回転であり、Ｐ回転は、垂直を維持した迎角θを変動させる回転である。
【００２８】
この移動手段２は、作業ツール４をＸ軸方向に移動させるＸリニアスライダ２１、作業ツール４をＹ軸方向に移動させるＹリニアスライダ２２、作業ツール４をＺ軸方向にリニアに移動させ、また作業ツール４をＲ回転させるＺＲ機構２３、及び作業ツール４をＰ回転させるＰ回転機構２４を備える。
【００２９】
Ｘリニアスライダ２１は、Ｘ軸方向に延設されたレール上にＹリニアスライダ２２を摺設し、Ｘ軸方向に走行する無端ベルトにＹリニアスライダ２２を直交させて固定してなり、無端ベルトをＸ軸モータで走行させ、Ｙリニアスライダ２２をＸ軸に沿って移動させる。
【００３０】
Ｙリニアスライダ２２は、Ｙ軸方向に延設されたレール上にＺＲ機構２３を摺設し、Ｙ軸方向に走行する無端ベルトにＺＲ機構２３を固定してなり、無端ベルトをＹ軸モータで走行させ、ＺＲ機構２３をＹ軸に沿って移動させる。Ｘリニアスライダ２１及びＹリニアスライダ２２の伝動機構としては、無端ベルトの他、シリンダ、リードスクリュー等の各種アクチュエータを挙げることができる。
【００３１】
ＺＲ機構２３は、例えばラックアンドピニオン機構を有し、ラックをＺ軸方向に延設し、当該ラックにＲ回転軸２３１を回転可能に保持する軸受けを固定してなる。Ｚ軸モータによりピニオンを回転させることで、軸受けごとＲ回転軸２３１をＺ軸方向に移動させ、Ｒ回転モータを回転させることで、Ｒ回転軸２３１をＲ回転させる。このＺＲ機構２３により作業ツール４は、Ｚ軸方向の移動と方位角φを変更するＲ回転を行う。
【００３２】
Ｐ回転機構２４は、Ｒ回転軸２３１の先にブラケットを介して取り付けられており、Ｐ回転軸２４１を有し、Ｐ回転軸２４１の先に作業ツール４を装着している。ブラケットは、Ｒ回転軸２３１に固定され、Ｒ回転軸２３１と従動する。Ｐ回転軸２４１は、ブラケットを軸受けとして、水平方向に延設され、Ｐ回転モータに接続されている。このＰ回転機構２４により作業ツール４は、迎角θを変更するＰ回転を行う。
【００３３】
図３は、コントローラ３の構成図である。コントローラ３は、所謂コンピュータであり、プログラムに従って演算処理及び周辺機器へ指令信号を出力するＣＰＵ３１と、ＨＤＤ等のプログラムを記憶するストレージ３２と、プログラムが展開され、ＣＰＵ３１の演算結果が一時記憶されるメモリ３３と、周辺機器で構成される。周辺機器は、指令信号に従って各モータに電力パルスを供給するモータドライバ３４、並びに液晶ディスプレイ等の表示部３５２、及びマウスやキーボードやティーチングペンダント３５１等の操作手段３５である。
【００３４】
このコントローラ３は、移動手段２及び作業ツール４の制御プログラム３２１に従う運転モードと、移動手段２及び作業ツール４の制御プログラム３２１及び作業ポイントＰａや作業開始ポイントＰｂのポイントデータ３２２を入力するプログラミングモードを有する。ポイントデータ３２２は、作業開始ポイントＰｂや作業ポイントＰａのＸＹＺの座標位置とＲ回転の方位角φとＰ回転の迎角θを含んでなる。プログラミングモードには、ティーチングモードが含まれている。
【００３５】
図４は、コントローラ３の機能を示す機能ブロック図である。運転モードの場合、ストレージ３２又はメモリ３３は制御プログラム３２１を記憶するプログラム記憶部５１、及びポイントデータ３２２を記憶するポイントデータ記憶部５２となり、ＣＰＵ３１は、制御手段５３として、ポイントデータ記憶部５２に記憶されたポイントデータ３２２を適宜読み出し、プログラム記憶部５１に記憶された制御プログラム３２１に従って、演算処理及び周辺機器へ指令信号を出力する。
【００３６】
例えばＳＬＩＭ言語の制御プログラム３２１は、ＭＯＶＥ命令、作業ツール４の駆動命令、制御文等の命令を主体にして記述される。ポイントデータ記憶部５２には、ポイントデータ３２２がポイント識別情報に関連付けられて記憶されている。ＣＰＵ３１は、制御プログラム３２１に従い、ＭＯＶＥ命令に対しては、ＭＯＶＥ命令に付帯するポイント識別情報に対応してポイントデータ３２２を読み出し、ポイントデータ３２２が示す位置及び姿勢に作業ツール４を動かす。すなわち、制御プログラム３２１に従うＣＰＵ３１は、作業ツール４を移動及び姿勢変位させ、作業ツール４に作業させる制御手段５３となる。
【００３７】
プログラミングモードの場合、ＣＰＵ３１は、図５に示すように、制御プログラム生成手段５４及びポイントデータ生成手段５５となる。制御プログラム生成手段５４は、ティーチングペンダント３５１やマウスやキーボード等の操作手段３５への入力に従って、制御プログラム３２１のコードを追加、削除、又は修正等し、制御プログラム３２１を編集する。
【００３８】
ポイントデータ生成手段５５は、ティーチングモードにおいて、ポイント及び姿勢を演算し、ポイントデータ記憶部５２に記憶させる。このポイントデータ生成手段５５は、ＪＯＧ制御手段５５１、ガイダンス手段５５２及び演算手段５５３を備える。ＪＯＧ制御手段５５１は、ティーチングペンダント３５１の操作に応答して移動手段２を制御し、作業ツール４を移動及び姿勢変位させる。
【００３９】
図６は、ティーチングペンダント３５１を示す模式図である。図６に示すように、ティーチングペンダント３５１には、＋Ｘ方向へ１ｍｍ等の所定距離移動させるためのボタン、−Ｘ方向へ１ｍｍ等の所定距離移動させるためのボタン、＋Ｙ方向へ１ｍｍ等の所定距離移動させるためのボタン、−Ｙ方向へ１ｍｍ等の所定距離移動させるためのボタン、＋Ｚ方向へ１ｍｍ等の所定距離移動させるためのボタン、−Ｚ方向へ１ｍｍ等の所定距離移動させるためのボタンが用意されている。
【００４０】
またティーチングペンダント３５１には、水平に順方向に方位角φを１度等の所定角度だけＲ回転させるためのボタン、水平に逆方向に方位角φを１度等の所定角度だけＲ回転させるためのボタン、垂直に順方向に迎角θを１度等の所定角度だけＰ回転させるためのボタン、垂直に逆方向に迎角θを１度等の所定角度だけＰ回転させるためのボタンが用意されている。
【００４１】
例えば、＋Ｘ方向へ１ｍｍ等の所定距離移動させるためのボタンが１度押下されると、当該ボタンが押下されたことを示す入力信号がティーチングペンダント３５１から発生し、ＣＰＵ３１に入力される。ＣＰＵ３１は、ＪＯＧ制御手段５５１として、この入力信号を受けて、１ｍｍ等の所定距離に合致したモータの回転角を算出し、その算出した回転角を示す指令信号をモータドライバ３４に出力する。モータドライバ３４は、指令信号を受けて、回転角をパルス信号に変換し、Ｘリニアスライダ２１のＸ軸モータに供給する。
【００４２】
ガイダンス手段５５２は、ポイント及び姿勢を演算するために必要な情報が入力されるように、ティーチング技術者を誘導する。ＣＰＵ３１は、ガイダンス手段５５２として、ティーチングペンダント３５１の表示部３５２に、作業ポイントＰａが存在する斜面Ｐｃ上の作業ポイントＰａと任意の３点を指定するＪＯＧ操作を促すメッセージと、作業ツール４と作業ポイントＰａとを離す離間距離を決定するための入力操作を促すメッセージを表示させる。尚、任意の３点には、作業ポイントＰａも含むことができる。
【００４３】
ネジ締め作業の場合、表示部３５２に、ネジ締め長と押付け量を入力するエリアを表示させる。押付け量は、ネジを回転させずに着座点のネジ孔にネジを突っ込む長さである。ネジ締め長は、呼び長さから押付け量を差し引いた長さであり、ネジを回転させながら着座点のネジ孔に挿入する長さである。
【００４４】
図７は、その他、ネジ締めに関して入力可能な情報を示している。図７に示すように、ネジ締めに関しては、直線送り量、送り速度、ネジ締め完了待ち時間、ネジ締め後戻し量、戻し速度が入力される。直線送り量は、ネジ長と押付け量にバッファ分を加えた距離である。ネジ締め完了待ち時間は、ネジ締めが完了したことを示す信号を待つタイムアウト時間である。ネジ締め後戻し量は、ネジを作業ツール４のドライバから離脱させるために、作業ツールを後退させる距離である。
【００４５】
ティーチング技術者は、表示に従って、ティーチングペンダント３５１を操作し、図８に示すように、斜面Ｐｃ上の作業ポイントＰａと任意の３点Ｑ１、Ｑ２、Ｑ３に作業ツール４の先端を接触させればよい。また、ティーチング技術者は、表示に従って、キーボードやティーチングポイントの数字キーを操作し、ネジ締め長と押付け量を入力すればよい。
【００４６】
演算手段５５３としてのＣＰＵ３１は、作業ポイントＰａが存在する斜面Ｐｃと鉛直な方向を任意の３点Ｑ１、Ｑ２、Ｑ３の座標から演算する。図８に示すように、この鉛直な方向は、Ｒ回転の方位角φとＰ回転の迎角θとして演算される。そして、Ｒ回転の方位角φとＰ回転の迎角θを、作業ツール４の姿勢としてポイントデータ３２２に含めてポイントデータ記憶部５２に記憶させる。
【００４７】
また、図８に示すように、演算手段５５３としてのＣＰＵ３１は、作業ツール４と作業ポイントＰａとを離す離間距離Ｌ、斜面Ｐｃと鉛直な方向、及び作業ポイントＰａの座標から、作業開始ポイントＰｂの座標を演算する。そして、作業開始ポイントＰｂの座標をポイントデータ３２２に含めてポイントデータ記憶部５２に記憶させる。
【００４８】
演算手段５５３の鉛直方向の算出及び作業開始ポイントＰｂの位置座標の算出方法について説明する。鉛直方向の算出については、斜面Ｐｃと同一平面の方程式を求め、その方程式が示す平面と直交する直線を求めればよい。斜面Ｐｃの方程式は、ベクトルの外積と法線ベクトルを用いる方法、連立方程式を解く方法、ベクトル方程式を解く方法等の何れを用いてもよい。本実施形態では、連立方程式を解く方法について説明する。
【００４９】
直交する直線は、斜面Ｐｃの方程式が示す平面とＸＹ平面との交差線の傾き、当該平面とＸＹ平面とがなす角度を導く方法、及び斜面Ｐｃの方程式内の任意の３点Ｑ１、Ｑ２、Ｑ３が造る２つのベクトルと直交するベクトルを導く方法等の何れを用いてもよい。本実施形態では、前者について説明する。
【００５０】
まず、図８に示すように、斜面Ｐｃ上の直線上に無い適当な３点を指示する。この３点は、一本の直線に並ばなければ、任意でよい。この３点の座標を、Ｑ１（Ｘ１，Ｙ１，Ｚ１）、Ｑ２（Ｘ２，Ｙ２，Ｚ２）、Ｑ３（Ｘ３、Ｙ３、Ｚ３）とする。斜面Ｐｃの方程式は、この３点Ｑ１（Ｘ１，Ｙ１，Ｚ１）、Ｑ２（Ｘ２，Ｙ２，Ｚ２）、Ｑ３（Ｘ３、Ｙ３、Ｚ３）を通る平面の方程式を求める。
【００５１】
斜面Ｐｃと同一平面の方程式を以下式（１）とする。
ＡＸ＋ＢＹ＋ＣＺ＋Ｄ＝０      ・・・（１）
【００５２】
３点Ｑ１、Ｑ１、Ｑ３は、この斜面Ｐｃ上に存在することから、上式（１）のＸＹＺにＱ１、Ｑ２、Ｑ３の座標を入力して、以下式（２）乃至（４）の連立方程式を導く。
ＡＸ１＋ＢＹ１＋ＣＺ１＋Ｄ＝０      ・・・（２）
ＡＸ２＋ＢＹ２＋ＣＺ２＋Ｄ＝０      ・・・（３）
ＡＸ３＋ＢＹ３＋ＣＺ３＋Ｄ＝０      ・・・（４）
【００５３】
ここで、Ｄを定数とした上で式（１）乃至（４）の式を連立させ、Ａ、Ｂ、Ｃ、Ｄについて解くと、以下式（５）乃至（８）となる。
Ａ=＋Ｙ１*Ｚ２−Ｙ１*Ｚ３−Ｙ２*Ｚ１＋Ｙ２*Ｚ３＋Ｙ３*Ｚ１−Ｙ３*Ｚ２      ・・・（５）
Ｂ=−Ｘ１*Ｚ２＋Ｘ１*Ｚ３＋Ｘ２*Ｚ１−Ｘ２*Ｚ３−Ｘ３*Ｚ１＋Ｘ３*Ｚ２      ・・・（６）
Ｃ=＋Ｘ１*Ｙ２−Ｘ１*Ｙ３−Ｘ２*Ｙ１＋Ｘ２*Ｙ３＋Ｘ３*Ｙ１−Ｘ３*Ｙ２      ・・・（７）
Ｄ=−Ｘ１*Ｙ２*Ｚ３＋Ｘ１*Ｙ３*Ｚ２＋Ｘ２*Ｙ１*Ｚ３−Ｘ２*Ｙ３*Ｚ１−Ｘ３*Ｙ１*Ｚ２＋Ｘ３*Ｙ２*Ｚ１      ・・・（８）
【００５４】
斜面Ｐｃと平行で、原点を通る平面は、Ｄ＝０であるから、この平面がＸＹ平面と交差してできる直線はＺ＝０のＸＹ平面と連立させて、以下式（９）となる。
Ｙ＝−（Ａ／Ｂ）Ｘ      ・・・（９）
【００５５】
この直線とＸ軸とのなす角をαとすれば、以下の式（１０）が導かれる。
ｔａｎ（α）＝−（Ａ／Ｂ）      ・・・（１０）
【００５６】
また、斜面Ｐｃと平行な平面とＸＹ平面とがなす角をβとすると、公式より以下の式（１１）が導かれる。
ｃｏｓ（β）＝±Ｃ／ｓｑｒｔ（Ａ２＋Ｂ２＋Ｃ２）      ・・・（１１）
【００５７】
この角度αが、斜面Ｐｃと鉛直方向に作業ツール４を向けるためのＲ回転軸２３１の方位角φとなる。また、この角度βが、斜面Ｐｃと鉛直方向に作業ツール４を向けるためのＰ回転軸２４１の迎角θとなる。演算手段５５３は、この演算結果である角度αと角度θをＲ回転軸２３１の方位角φとＰ回転軸２４１の迎角θとして、作業開始ポイントＰｂのポイントデータ３２２に含めてポイントデータ記憶部５２に記憶させる。
【００５８】
また、作業開始ポイントＰｂの座標ＸＹＺは、作業ポイントＰａを基準に、以下式（１２）乃至（１４）を演算して求める。式中、Ｌは、作業ポイントＰａから離す離間距離である。演算手段５５３は、例えば、ネジが斜面Ｐｃを引っ掻かないように、入力されたネジ締め長Ｌａに予めセットされたバッファ分Ｌｂと押付け量Ｌｃを加えた値Ｌａ＋Ｌｂ＋Ｌｃを離間距離として演算しておく。
Ｘａ＝Ｌ＊ｓｉｎ（θ）＊ｓｉｎ（φ）      ・・・（１２）
Ｙａ＝Ｌ＊ｓｉｎ（θ）＊ｃｏｓ（φ）      ・・・（１３）
Ｚａ＝Ｌ＊ｃｏｓ（θ）                    ・・・（１４）
【００５９】
演算手段５５３は、このＸａ、Ｙａ、Ｚａの値を作業開始ポイントＰｂのポイントデータ３２２に含めてポイントデータ記憶部５２に記憶させる。
【００６０】
このロボット１の動作について、斜面Ｐｃの上の着座点である作業ポイントＰａに対する作業開始ポイントＰｂであるネジ締め開始ポイントを入力する動作を例に説明する。図９は、作業開始ポイントＰｂの入力動作を示すフローチャートである。
【００６１】
まず、ティーチング技術者によりティーチングペンダント３５１が操作されて、コントローラ３の機能がプログラミングモード（ステップＳ０１）及びティーチングモードに切り替えられる（ステップＳ０２）。
【００６２】
ティーチングモードにおいて、制御手段５３は、ティーチングペンダント３５１が操作されると、操作に従って移動手段２を移動させ、操作に従って斜面Ｐｃ上の任意の３点に作業ツール４を順次接触させる（ステップＳ０３）。このとき、制御手段５３は、作業ツール４のＸＹＺ軸方向の動き量をエンコーダ等で解析し、任意の３点の座標情報をメモリ３３に記憶させておく。
【００６３】
斜面Ｐｃ上の３点の座標情報が解析されると、演算手段５５３は、３点の座標情報から斜面Ｐｃと鉛直な方向を示す方位角φと迎角θの成分を演算する（ステップＳ０４）。演算結果である方位角φと迎角θは、ネジ締め開始ポイントとして宣言しておいた変数名で示されるポイントデータ３２２内に姿勢情報として記録される（ステップＳ０５）。
【００６４】
更に、演算手段５５３は、ティーチングペンダント３５１が操作されてネジ締め長と押付け量とが入力されると（ステップＳ０６）、ネジ締め長と押付け量の情報をメモリ３３に記憶させておく。
【００６５】
また、制御手段５３は、ティーチングペンダント３５１が操作されると、操作に従って移動手段２を移動させ、操作に従って斜面Ｐｃ上の着座点に作業ツール４を位置させる（ステップＳ０７）。このとき、制御手段５３は、作業ツール４のＸＹＺ軸方向の動き量をエンコーダで解析し、着座点の座標情報をメモリ３３に記憶させておく（ステップＳ０８）。
【００６６】
そして、演算手段５５３は、ネジ締め長にバッファ分を加えた長さ、ネジの着座点を示す座標情報、斜面Ｐｃと鉛直な方向を示す方位角φと迎角θとにより、ネジ締め開始ポイントの座標を演算する（ステップＳ０９）。演算結果であるネジ締め開始ポイントの座標は、ネジ締め開始ポイントとして宣言された変数名で示されるポイントデータ３２２に記録される（ステップＳ１０）。
【００６７】
以上により、斜面Ｐｃ上の着座点にネジ締めする際のネジ締め開始ポイントの座標と作業ツール４の姿勢がポイントデータ３２２として記録される。このように、作業ツール４と移動手段２とコントローラ３を備えるロボット１は、ティーチングモード時に、斜面Ｐｃ上の任意の３点の座標指定の操作を受け付ける操作手段３５と、任意の３点の座標に基づき、作業開始ポイントＰｂから作業ポイントＰａへ向く方向を演算する演算手段５５３を備え、少なくとも作業ポイントＰａに作業ツール４を移動させ、演算手段５５３の演算に従って作業ツール４の姿勢を作業ポイントＰａへ向け、作業ツール４に作業ポイントＰａへの処理を開始させるようにした。
【００６８】
これにより、作業ツール４を作業ポイントＰａに向けるために、斜面Ｐｃと作業ツール４を見比べながら試行錯誤するティーチングは必要なく、斜面Ｐｃ上の任意の３点を指定するだけで、作業ツール４を作業ポイントＰａに精度よく向けることができる。すなわち、作業ツール４の姿勢を直接指定するティーチングを排除でき、ティーチング技術者の労力を低減させるとともに、作業ポイントＰａに対する作業の確度も向上する。
【００６９】
また、このロボット１では、作業開始ポイントＰｂと作業ポイントＰａとの離間距離を記憶しておき、斜面Ｐｃ上の作業ポイントＰａの座標教示の操作を操作手段３５にて受け付けると、作業ポイントＰａの座標、任意の３点の座標及び離間距離に基づき、作業開始ポイントＰｂの座標を演算するようにした。
【００７０】
これにより、作業ツール４を作業ポイントＰａと鉛直な位置に所定距離だけ離したポイントを探索するために、作業ポイントＰａと作業ツール４を見比べながら試行錯誤するティーチングは必要なく、明快な作業ポイントＰａを指定し、離間距離を数値入力するだけでよい。すなわち、作業開始ポイントＰｂを直接指定するティーチングを排除でき、また作業ポイントＰａに対して作業ツール４を精度よく鉛直方向に位置させ、的確な距離だけ離すことができるため、ティーチング技術者の労力を低減させるとともに、作業ポイントＰａに対する作業の確度も向上する。
【００７１】
次に、このロボット１の制御プログラム３２１に従ったネジ締め動作について説明する。図１０は、このロボット１の制御プログラム３２１に従ったネジ締め動作を示すフローチャートである。まず、ティーチング技術者によりティーチングペンダント３５１が操作されて、コントローラ３の機能が運転モードに切り替えられる（ステップＳ１１）。
【００７２】
運転モードでは、コントローラ３のＣＰＵ３１は、制御プログラム３２１に従って、作業ツール４をネジ締め開始ポイントに位置させ（ステップＳ１２）、着座点に向ける（ステップＳ１３）。このとき、作業ツール４と着座点との距離は、ネジ締め長と押付け量とバッファ分を加えた離間距離となる。
【００７３】
次に、ＣＰＵ３１は、作業ツール４を着座点に向けてバッファ分だけ移動させる（ステップＳ１４）。このとき、ネジ先端は着座点のネジ孔に到達する。更に、ＣＰＵ３１は、作業ツール４を着座点に向けて押付け量だけ移動させる（ステップＳ１５）。このとき、ネジは、着座点にネジ孔に押し込まれる。
【００７４】
そして、ＣＰＵ３１は、作業ツール４のドライバを回転させながら（ステップＳ１６）、作業ツール４を着座点に向けてネジ締め長分だけ移動させる（ステップＳ１７）。この前進移動は、送り速度とする。その後は、トルクアップを検知するとネジ締めを完了とし、作業ツール４をネジ締め後戻し量分だけ後退させる。この後退移動は、ネジ締め後戻し量とする。ネジ締め完了待ち時間の間にトルクアップを検知できなければ、エラーとする。
【００７５】
これにより、ネジは、斜面Ｐｃに形成されたネジ孔に着座する。着座点が複数存在する場合は、コントローラ３は、制御プログラム３２１に従って、各着座点と鉛直な方向に作業ツール４を位置させ、各着座点に作業ツール４を向け、バッファ分の移動、押付け量分の移動、更にはドライバ回転を伴いながらネジ締め長分の移動を各着座点に対して行うこととなる。
【００７６】
このように、このロボット１において、例えば、作業ツール４はネジ締めドライバであり、作業ポイントＰａはネジの着座点であり、作業開始ポイントＰｂは、ネジ締め開始時にネジ締めドライバを存在させる位置として、作業開始ポイントＰｂは、ネジ締め長に予めセットされたバッファ分と押付け量を加えた距離だけ、ネジの着座点から離された位置である。
【００７７】
このネジ締め作業の場合、ネジ締め長とバッファ分と押付け量とを加えた離間距離は、ネジの呼び長さともネジの全体長とも異なり、明確な物差しもない。従って、このロボット１によれば、斜面Ｐｃに対するネジ締め作業が断然高精度となり、また作業開始ポイントＰｂの入力も飛躍的な労力低減をもたらすことになる。
【００７８】
（第２の実施形態）
次に、本発明に係るロボット１の第２の実施形態について図面を参照しつつ詳細に説明する。第１の実施形態と同一構成、同一機能に関しては同一符号を付して詳細な説明を省略する。
【００７９】
図１１は、本実施形態のロボット１が作業するワークの模式図である。図１に示すように、ワークの載置態様やワークの形状によっては、作業ポイントＰａがＹ軸に対して平行な斜面Ｐｃ又はＸ軸に対して平行な斜面Ｐｃに存在する場合もある。このＹ軸に対して平行な斜面Ｐｃと鉛直な方向、及びＸ軸に対して平行な斜面Ｐｃと鉛直な方向は、方位角φが０度、９０度、１８０度又は２７０度の何れかに定まっており、ティーチング作業者の目視により正確な方位角φの決定が可能である。ティーチング作業者にとっては、設定しづらい残項目は迎角θである。
【００８０】
作業ポイントＰａがＹ軸に対して平行な斜面Ｐｃ又はＸ軸に対して平行な斜面Ｐｃに存在する場合、ロボット１の演算手段５５３は、斜面Ｐｃ上の任意の２点の座標から斜面Ｐｃと鉛直な方向の迎角θを算出する。操作手段３５は、ティーチング技術者による方位角φの入力、及び移動手段２のＪＯＧ操作を受け付ける。ガイダンス手段５５２は、任意の２点を斜面Ｐｃ上の高さが異なる位置とするようにメッセージを表示させる。制御手段５３は、ＪＯＧ操作に応答して、作業ツール４を斜面Ｐｃ上の任意の２点に移動させ、任意の２点の座標を出力する。演算手段５５３は、斜面Ｐｃ上の任意の２点の座標から迎角θを算出し、方位角φとともにポイントデータ３２２に記録する。
【００８１】
演算手段５５３による演算は、幾何学的な数学手法、ベクトル手法等のいずれを用いても良い。一例としては、斜面ＰｃがＹ軸と平行に沿っているのであれば、任意の２点のＺ軸座標の差分ΔＺと、任意の２点のＸ軸座標の差分ΔＸを算出し、以下式（１５）を演算する。
θ＝π／２−ａｒｃｔａｎ（ΔＺ／ΔＸ）      ・・・（１５）
【００８２】
また、一例としては、斜面ＰｃがＸ軸と平行に沿っているのであれば、任意の２点のＺ軸座標の差分ΔＺと、任意の２点のＹ軸座標の差分ΔＹを算出し、以下式（１６）を演算する。
θ＝π／２−ａｒｃｔａｎ（ΔＺ／ΔＹ）      ・・・（１６）
【００８３】
以上のように、方位角φを的確に見当付けられる斜面Ｐｃに作業ポイントＰａを有する場合には、操作手段３５により、斜面Ｐｃ上の任意の２点の座標指定の操作を受け付け、演算手段５５３で、任意の２点の座標に基づき、作業開始ポイントＰｂから作業ポイントＰａへ向く方向を演算するようにしてもよい。これにより、斜面Ｐｃ上に指定する点の数も減らすことができ、ティーチング技術者の労力を更に低減させることができる。
【００８４】
尚、斜面Ｐｃが垂直に立設し、Ｘ軸とＹ軸に斜交する場合は、迎角θは真横に決定しているので、斜面Ｐｃ上の横方向に異なる位置に任意の２点を指定し、方位角φを演算するようにすればよい。
【００８５】
（第３の実施形態）
次に、本発明に係るロボット１の第３の実施形態について図面を参照しつつ詳細に説明する。第１の実施形態と同一構成、同一機能に関しては同一符号を付して詳細な説明を省略する。
【００８６】
ＳＬＩＭ等のプログラム言語は、一般的にロボット１に対するＭＯＶＥ命令等の命令を主体として記述される。作業開始ポイントＰｂや作業ポイントＰａは、ＭＯＶＥ命令等の命令に対する単なる定数や変数と扱われ、ポイント識別情報やポイントデータ３２２の内容は、プログラム中に埋没してしまっている。
【００８７】
そこで、第３の実施形態のロボット１において、ＣＰＵ３１は、制御プログラム生成手段５４として、位置を主体とした記述様式の制御プログラム３２１を生成する。図１２は、この制御プログラム３２１を示す模式図である。図１２に示すように、この制御プログラム３２１は、ポイント番号６１に対して、ポイント種別情報６２とポイントデータ３２２が付加するように記述される。
【００８８】
ポイント番号６１は、作業開始ポイントＰｂや作業ポイントＰａを識別する。ポイント種別情報６２は、ポイント番号６１で示されるポイントで実行する処理プログラムの関数名である。ポイントデータ３２２は、ポイント番号６１で示されるポイントの位置及び作業ツール４の姿勢を示すＸ座標、Ｙ座標、Ｚ座標、Ｒ回転の方位角φ、Ｐ回転の迎角θを含む。
【００８９】
制御プログラム生成手段５４は、操作手段３５の操作に従って、ポイント番号６１を登録させ、ポイント番号６１に付加するポイントデータ３２２の識別情報を入力させ、ティーチングモードや数値入力によって其の識別情報のポイントデータ３２２を記憶し、ポイント番号６１に付加するポイント種別情報６２を登録させる。また、制御プログラム生成手段５４は、キーボード等の入力に応答して、ポイント種別情報６２が示す作業命令６３を編集する。
【００９０】
すなわち、ＨＤＤ等のプログラム記憶部５１は、図１３に示すように、この制御プログラム３２１を記憶するポイント列記憶部５６、ポイントデータ３２２を記憶するポイントデータ記憶部５２、ポイント種別情報６２が示す作業命令６３のコードを記憶する作業命令記憶部５７とに大別される。
【００９１】
ＣＰＵ３１は、制御手段５３として、ポイント列記憶部５６のポイント番号６１順にポイント番号６１に付加されたポイントデータ３２２と作業命令６３を呼び出し、処理プログラム内の引数にポイントデータ３２２の各内容を適宜代入しながら、移動手段２や作業ツール４の制御を行う。
【００９２】
このように、この制御プログラム３２１は、作業開始ポイントＰｂや作業ポイントＰａを代表するポイント番号６１を登録し、そのポイント番号６１にポイントデータ３２２やポイント種別情報６２を付加させる。すなわち、ＳＬＩＭ言語のように、「やること」を基準に「どこで」を付帯させるのではなく、この制御プログラム３２１は、「どこで」を基準に「やること」を付帯させる記述態様を採っており、ロボット１を動かす際の技術者の思考の仕方に沿っており、非常にプログラムし易いという利点を有する。
【００９３】
但し、この制御プログラム３２１は、「どこで」を基準にして記述するため、作業開始ポイントＰｂや作業ポイントＰａ、すなわちネジ締めの場合はネジ締め開始ポイントと着座点のポイントを入力しなくてはならない。従って、斜面Ｐｃ上に作業ポイントＰａを有し、作業ポイントＰａの鉛直方向の空中に作業開始ポイントＰｂが存在する場合、この制御プログラム３２１はプログラミング時の煩雑さを増すこととなっていた。
【００９４】
しかしながら、この実施形態に係るロボット１は、ティーチングモード時に、斜面Ｐｃ上の任意の２点又は３点の座標指定の操作を受け付け、任意の２点又は３点の座標に基づき、作業ツール４が作業ポイントＰａへ向く方向を演算する。また、ティーチングモード時に、斜面Ｐｃ上の作業ポイントＰａの座標教示の操作を受け付け、作業ポイントＰａの座標、任意の２点又は３点の座標、作業開始ポイントＰｂと作業ポイントＰａとの離間距離に基づく、作業開始ポイントＰｂの座標を演算する。
【００９５】
そのため、この制御プログラム３２１を採用する場合には、ティーチング技術者の労力を飛躍的に低減させることができる。
【００９６】
（第４の実施形態）
次に、本発明に係るロボット１の第４の実施形態について図面を参照しつつ詳細に説明する。第１の実施形態及び第３の実施形態と同一構成、同一機能に関しては同一符号を付して詳細な説明を省略する。
【００９７】
図１４は、制御プログラム生成手段５４が生成する作業命令６３を示している。位置を主体とした記述様式の制御プログラム３２１に含まれている。この作業命令６３は、ネジの着座点である作業ポイントＰａを示すポイント番号６１に付帯する作業命令６３であり、ポイント番号６１に付帯するポイント種別情報６２で識別される。この作業命令６３は、ポイント種別情報６２としてネジ締め点、換言すると着座点に付帯させる内容が記述される。
【００９８】
図１４に示すように、着座点に付帯させる内容には、移動前作業の命令列６３１と移動後作業の命令列６３２とが記述される。移動前作業の命令列６３１は、制御手段５３としてＣＰＵ３１により、着座点への移動前に処理される。移動前作業の命令列６３１には、まず００２行目に、「ｃａｌｌＰｏｉｎｔｓ  Ｆｅｅｄｅｒ」のように、フィーダねじ取り動作の命令が記述される。この命令により、ネジの着座点である作業ポイントＰａに対する作業として、制御手段５３は、移動手段２を制御してフィーダからネジを取る。
【００９９】
次に、００３行目以降、作業開始ポイントＰｂの座標演算と作業ツール４の向き演算の命令が記述される。すなわち、演算手段５５３は、運転モードにおいて、移動手段２と作業ツール４を制御する制御プログラム３２１を実行したＣＰＵ３１により実現される。
【０１００】
一例を示すと、００３行目〜００Ｘ行目までの間にＲ回転の方位角φとＰ回転の迎角θを演算しておく。そして、（００Ｘ＋１）行目以降、演算手段５５３は、Ｒ回転の方位角φとＰ回転の迎角θを返すシステム変数である＃ｐｏｉｎｔ＿Ｒと＃ｐｏｉｎｔ＿Ｐをｄｅｇｒａｄ関数でラジアンに変換し、ｌｅｔ  ｔｈｅｔａ＝ｄｅｇｒａｄ（＃ｐｏｉｎｔ＿Ｐ）とｌｅｔ  ｐｈｉ＝ｄｅｇｒａｄ（＃ｐｏｉｎｔ＿Ｒ）によって、ｔｈｅｔａとｐｈｉというローカル変数に代入しておく。
【０１０１】
そして、次の３行の命令により、演算手段５５３は、作業ツール４の位置を示す座標ＸＹＺを演算し、＃ｊｏｂＳｔａｒｔＸ、＃ｊｏｂＳｔａｒｔＹ、＃ｊｏｂＳｔａｒｔＺという特殊なシステム変数に代入する。Ｌは、作業開始ポイントＰｂと作業ポイントＰａとの離間距離である。
＃ｊｏｂＳｔａｒｔＸ＝Ｌ＊ｓｉｎ（θ）＊ｓｉｎ（φ）
＃ｊｏｂＳｔａｒｔＹ＝Ｌ＊ｓｉｎ（θ）＊ｃｏｓ（φ）
＃ｊｏｂＳｔａｒｔＺ＝Ｌ＊ｃｏｓ（θ）
【０１０２】
この＃ｊｏｂＳｔａｒｔＸ、＃ｊｏｂＳｔａｒｔＹ、＃ｊｏｂＳｔａｒｔＺという特殊なシステム変数は、作業ポイントＰａに移動する前に参照され、このシステム変数の値だけオフセットした座標へ移動するための値である。すなわち、制御手段５３は、移動手段２の制御により、ネジの着座点に対する作業として、ネジ締め開始ポイントに作業ツール４を移動させる。すなわち、制御手段５３は、作業ポイントＰａに対する作業として作業開始ポイントＰｂに移動させる。
【０１０３】
次に、移動後作業の命令列６３２、すなわち、ネジ締め開始ポイントに作業ツール４が移動した後に実行する命令列には、まず００４行目に、ネジ長にバッファ分を加えたｄＳｃｒｅｗＬｉｎｅに押付け量であるｄＳｃｒｅｗＰｒｅｓｓを加算して離間距離ｄＬを算出する演算内容が記述される。更に、００５行目〜００７行目に、作業ツール４が位置するポイントから作業ポイントＰａまでのＸ軸、Ｙ軸及びＺ軸方向の各移動量ｄＸ、ｄＹ、ｄＺの演算内容が記述される。演算手段５５３は、これら命令を実行して、作業ポイントＰａまでの移動量を演算する。
【０１０４】
更に、００８行目と００９行目を実行する演算手段５５３は、バッファ分と押付け量分の移動時間を算出し、０１０行目を実行する制御手段５３は、作業ツール４の位置するポイントから作業ポイントＰａへ向けてバッファ分と押付け量分移動させる。
【０１０５】
そして、０１１行目の「ｌｉｎｅＭｏｖｅ（ｄＳｃｒｅｗＳｐｅｅｄ，ｄＸ，ｄＹ，ｄＺ，０，０）」の命令を実行する制御手段５３は、ｄＳｃｒｅｗＳｐｅｅｄに代入された回転速度でネジ締めドライバを回転させながら、作業ポイントＰａまでの距離を示すｄＸ、ｄＹ、ｄＺ分だけＸＹＺ軸方向に作業ツール４を移動させる。最後に、０１２行目を実行する制御手段５３は、ネジ締めの完了を示すトルクアップ信号を受け、作業ポイントＰａへの作業ツール４の移動と駆動を停止させる。
【０１０６】
ここで、この記述様式のプログラミングにおいては、作業ポイントＰａで何をするかが意識される。そのため、作業ポイントＰａに付随して作業開始ポイントＰｂに関する記述があれば其のコードの意味を理解可能であるが、作業ポイントＰａと関係なく作業開始ポイントＰｂのコードが登場すれば、その内容を理解するのに非常に手間がかかる。
【０１０７】
しかし、制御プログラム生成手段５４は、図１５の（ａ）に示す制御プログラムと異なり、図１５の（ｂ）に示すように、作業ポイントＰａに対して、作業開始ポイントＰｂの座標を演算する演算命令６３３と、演算命令６３３の処理により得られる作業ポイントＰａの座標へ作業ツール４を移動させる移動命令６３４と、作業ツール４の駆動命令６３５を付帯させて、制御プログラム３２１を生成するようにした。
【０１０８】
この制御プログラム生成手段５４によって生成された制御プログラム３２１によれば、実際に作業が施される着座点に関するコードの記述のみに見え、作業開始ポイントＰｂという作業に直接的でないポイントを意識する必要はなくなる。従って、この記述様式の制御プログラム３２１の作成が更に容易になり、プログラミングの際の労力が更に低減する。
【０１０９】
具体的には、ネジ締め作業のためのプログラム作成時、作成者はネジ孔が存在する着座点の数だけポイント番号６１を指定すればよく、作業ツール４を位置させる別のポイントのポイント番号６１を指定する必要はない。そして、指定したポイント番号６１に対して、１つのネジ締めのプログラム種別情報を付帯させればよく、ネジ締めを開始させるためにドライバの回転を開始させるプログラムを付帯させたり、ネジ締めを終了させるためのドライバの回転を回転させるプログラムを付帯させたりする必要はない。
【０１１０】
（第５の実施形態）
次に、本発明に係るロボット１の第５の実施形態について図面を参照しつつ詳細に説明する。第１の実施形態乃至第４の実施形態と同一構成、同一機能に関しては同一符号を付して詳細な説明を省略する。
【０１１１】
図６は、ティーチングペンダント３５１の構成を示す図である。図６に示すように、ティーチングペンダント３５１は、向き方向進行ボタン３５３と、逆向き方向後退ボタン３５４と、座標系切替ボタン３５５を備えている。
【０１１２】
向き方向進行ボタン３５３と逆向き方向後退ボタン３５４の押下に対して、ＪＯＧ制御手段５５１は、１ピッチの移動量Ｌと方位角φａと迎角θａの情報より、以下式（１７）乃至（１９）を演算する。φａは、現在の作業ツール４の向きを示す方位角であり、θａは現在の作業ツール４の向きを示す迎角である。
Ｘａ＝Ｌｃｏｓφａ      ・・・（１７）
Ｙａ＝Ｌｓｉｎφａ      ・・・（１８）
Ｚａ＝Ｌｓｉｎθａ      ・・・（１９）
【０１１３】
ＪＯＧ制御手段５５１は、移動量Ｘａ、移動量Ｙｂ及び移動量Ｚａが求まると、Ｘリニアスライダ２１に対して移動量Ｘａ分移動をさせる指令信号を出力し、Ｙリニアスライダ２２に対して移動量Ｙａ分移動をさせる指令信号を出力し、ＺＲ機構２３に対して移動量Ｚａ分移動させる指令信号を出力する。
【０１１４】
すなわち、向き方向進行ボタン３５３の押下によって、ＪＯＧ制御手段５５１は、図１６に示すように、作業ツール４の向きと平行な順方向に作業ツール４を移動させる。逆向き方向後退ボタン３５４の押下によって、作業ツール４の向きと平行な逆方向に作業ツール４を移動させる。順方向は、作業ツール４の後端から先端への方向、逆方向は、作業ツール４の先端から後端への方向である。
【０１１５】
斜面Ｐｃ上の任意の２点又は３点の指定によって、作業ツール４が作業ポイントＰａが存在する斜面Ｐｃと鉛直な方向に向いている場合は、ＪＯＧ制御手段５５１は、作業ツール４を斜面Ｐｃと鉛直な方向に移動させることになる。
【０１１６】
次に、座標系切替ボタン３５５の押下に対して、ＪＯＧ制御手段５５１は、Ｘ軸、Ｙ軸及びＺ軸を、Ｘリニアスライダ２１、Ｙリニアスライダ２２及びＲ回転軸２３１の延びる方向によって規定される座標系から、作業ポイントＰａが存在する斜面Ｐｃと其の斜面Ｐｃと鉛直な方向によって規定される座標系に切り替える。この切り替えにより、図１６に示すように、斜面Ｐｃと鉛直な方向をＺ軸となり、互いの直交しつつ、Ｚ軸とも直交する２軸をＸ軸、Ｙ軸となる。
【０１１７】
このＪＯＧ制御手段５５１は、斜面Ｐｃ上の任意の２点又は３点の指定により求められた方位角φと迎角θとによって座標系を変換しておく。そして、座標系切り替えボタンの押下後、ＪＯＧ制御手段５５１は、ティーチングペンダント３５１のＸ軸方向、Ｙ軸方向の移動を操作するボタンの押下に対して、作業ツール４を斜面Ｐｃと平行に移動させる。
【０１１８】
以上のように、このロボット１では、ティーチングモードの際に、操作手段３５が受け付けた操作に従って、演算手段５５３が演算した向きの順方向及び逆方向に作業ツール４を移動させるようにした。また、ティーチングモードの際に、演算手段５５３が演算した向きを一軸とする直交座標系に切り替え、操作手段３５の受け付けた操作に従って、演算手段５５３が演算した向きと直交する斜面Ｐｃに沿って作業ツール４を移動させるようにした。
【０１１９】
これにより、斜面Ｐｃ上の任意の２点又は３点の指定によって、作業ツール４の向きが斜面Ｐｃと鉛直な方向に変更された後、作業ポイントＰａのティーチングが容易となり、ティーチング技術者の労力が更に低減するとともに、作業ポイントＰａのティーチング精度が上がり、作業の確度が向上する。
【０１２０】
（第６の実施形態）
次に、本発明に係るロボット１の第６の実施形態について図面を参照しつつ詳細に説明する。第５の実施形態と同一構成、同一機能に関しては同一符号を付して詳細な説明を省略する。
【０１２１】
このロボット１において、ＪＯＧ制御手段５５１は、Ｒ回転及びＰ回転の操作がされた場合、図１７に示すように、作業ツール４の先端の位置は固定のまま、この先端を中心にして作業ツール４を回転させるように、移動手段２を制御する。ＪＯＧ制御手段５５１は、ストレージ３２には作業ツール４のツールセンターポイント設定値が予め記憶されている。
【０１２２】
ツールセンターポイント設定値は作業ツール４の装着情報である。このツールセンターポイント設定値は、作業ツール４を真下に向けた方位角φが０及び迎角θが０の状態における、Ｒ回転軸２３１とＰ回転軸２４１との交差点のＸＹＺ座標値、当該交差点から作業ツール４の先端までの距離を示すＸ軸成分ＬｘとＹ軸成分Ｌｙ、更に作業ツール４の先端を通ってＰ回転軸２４１の延長線と直交する仮想線とＰ回転軸２４１との直交点から作業ツール４の先端までの距離Ｌｄである。
【０１２３】
このとき、作業ツール４の先端の座標（Ｘｔ，Ｙｔ，Ｚｔ）は、以下式（２０）乃至（２２）で表される。
Ｘｔ＝Ｘ０＋Ｌｘ＊ｃｏｓ（φ）＋Ｌｙ＊ｓｉｎ（φ）＋Ｌｄ＊ｓｉｎ（θ）＊ｃｏｓ（φ）      ・・・（２０）
Ｙｔ＝Ｙ０＋Ｌｘ＊ｓｉｎ（φ）＋Ｌｙ＊ｃｏｓ（φ）＋Ｌｄ＊ｓｉｎ（θ）＊ｓｉｎ（φ）      ・・・（２１）
Ｚｔ＝Ｚ０＋Ｌｄ＊ｃｏｓ（θ）      ・・・（２２）
【０１２４】
例えば方位角φをφ１からφ２に動かす操作、又は迎角θをθ１からθ２に動かす操作がなされた場合、上記式（２０）乃至（２２）により、作業ツール４先端は、Ｔ１（Ｘｔ１，Ｙｔ１，Ｚｔ１）からＴ２（Ｘｔ２，Ｙｔ２，Ｚｔ２）に移動しようとする。ＪＯＧ制御手段５５１は、Ｘリニアスライダ２１、Ｙリニアスライダ２２、及びＺＲ機構２３を制御して、Ｔ２（Ｘｔ２，Ｙｔ２，Ｚｔ２）からＴ１（Ｘｔ１，Ｙｔ１，Ｚｔ１）に移動するように、Ｘ軸、Ｙ軸及びＺ軸方向に作業ツール４を移動させる。
【０１２５】
このように、このロボット１は、回転による作業ツール４の先端位置の変動を相殺するように、作業ツール４をＸ軸、Ｙ軸及びＺ軸方向に移動させる。すなわち、ティーチングモードの際に、操作手段３５の操作に従って、作業ツール４の先端を中心にして作業ツール４を回転させるようにした。
【０１２６】
作業ポイントＰａが最大の関心事項である一方で、その作業ポイントＰａから離れた位置に例えばレーザーマーキングを施したい等の要請もある。この場合、斜面Ｐｃと鉛直な方向から作業ポイントＰａに向けた作業ツール４の向き角度を変更すると、作業ツール４の先端の位置も変動してしまい、微調整が煩雑となる虞がある。しかしながら、このロボット１によれば、作業ツール４の向き角度を変更しても、作業ツール４の先端の位置は不動であるので、ティーチング技術者の労力が飛躍的に減少し、更にティーチングの精度が飛躍的に向上する。
【０１２７】
（他の実施形態）
以上のように本発明の実施形態を説明したが、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。そして、この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１２８】
例えば、ロボット１に対するポイントデータ３２２の登録を含むプログラミングを直接ロボット１に対して行う例を示したが、これに限らず、ロボット１とは別のコンピュータ等のプログラミングツールで行うようにし、制御プログラム３２１とポイントデータ３２２をロボット１にロードするようにしてもよい。
【符号の説明】
【０１２９】
１  ロボット
２  移動手段
２１  Ｘリニアスライダ
２２  Ｙリニアスライダ
２３  ＺＲ機構
２３１  Ｒ回転軸
２４  Ｐ回転機構
２４１  Ｐ回転軸
３  コントローラ
３１  ＣＰＵ
３２  ストレージ
３２１  制御プログラム
３２２  ポイントデータ
３３  メモリ
３４  モータドライバ
３５  操作手段
３５１  ティーチングペンダント
３５２  表示部
３５３  向き方向進行ボタン
３５４  逆向き方向後退ボタン
３５５  座標系切替ボタン
４  作業ツール
５１  プログラム記憶部
５２  ポイントデータ記憶部
５３  制御手段
５４  制御プログラム生成手段
５５  ポイントデータ生成手段
５５１  ＪＯＧ制御手段
５５２  ガイダンス手段
５５３  演算手段
５６  ポイント列記憶部
５７  作業命令記憶部
６１  ポイント番号
６２  ポイント種別情報
６３  作業命令
６３１  移動前作業の命令列
６３２  移動後作業の命令列
６３３  演算命令
６３４  移動命令
６３５  駆動命令
Ｐａ  作業ポイント
Ｐｂ  作業開始ポイント
Ｐｃ  斜面
【図１】
0006698268.tif 000002
【図２】
0006698268.tif 000003
【図３】
0006698268.tif 000004
【図４】
0006698268.tif 000005
【図５】
0006698268.tif 000006
【図６】
0006698268.tif 000007
【図７】
0006698268.tif 000008
【図８】
0006698268.tif 000009
【図９】
0006698268.tif 000010
【図１０】
0006698268.tif 000011
【図１１】
0006698268.tif 000012
【図１２】
0006698268.tif 000013
【図１３】
0006698268.tif 000014
【図１４】
0006698268.tif 000015
【図１５】
0006698268.tif 000016
【図１６】
0006698268.tif 000017
【図１７】
0006698268.tif 000018