(57)【特許請求の範囲】
【請求項１】
入力軸および出力軸を有し、基体に固定され、入力軸の回転を減速回転して出力軸に伝達する減速機の、基体を基準としたときの出力軸の回動位置を検出する位置検出装置において、
回転する入力軸に設けた第１のセンサ検知体が通過することを検知してパルス状の計数可能な第１の信号を発生する第１のセンサを基体に設け、前記回転において、回転する入力軸に設けた第２のセンサ検知体が通過することを検知して第１の信号が生成される周期よりも短い周期で、かつ入力軸の回転角度に比例した数のパルス状の計数可能な第２の信号を生成する第２のセンサを基体に設け構成したエンコーダと、
さらに、回転する入力軸に設けた第３のセンサ検知体が通過することを検知してパルス状の計数可能な第３の信号を発生する第３のセンサを出力軸に設け、
該第１の信号、該第２の信号および該第３の信号を計数処理可能な位置演算部を用いて、入力軸を回転させて第１の信号と第３の信号間に発生した第２の信号のパルス数と、設計データとして基体と出力軸との絶対角度があらかじめ測定された状態における第１の信号と第３の信号間に発生した、基準姿勢に対応した第２の信号のパルス数とから、基体と出力軸の絶対角度を算定することを特徴とした、基体からみた出力軸の角度を検出する検出装置。
【請求項２】
入力軸および出力軸を有し、基体に固定され、入力軸の回転を減速回転して出力軸に伝達する減速機の、基体を基準としたときの出力軸の回動位置を検出する位置検出装置において、
回転する入力軸に設けた第１のセンサ検知体が通過することを検知してパルス状の計数可能な第１の信号を発生する第１のセンサを出力軸に設け、前記回転において、回転する入力軸に設けた第２のセンサ検知体が通過することを検知して第１の信号が生成される周期よりも短い周期で、かつ入力軸の回転角度に比例した数のパルス状の計数可能な第２の信号を生成する第２のセンサを出力軸に設け構成したエンコーダと、
さらに、回転する入力軸に設けた第３のセンサ検知体が通過することを検知してパルス状の計数可能な第３の信号を発生する第３のセンサを基体に設け、
該第１の信号、該第２の信号および該第３の信号を計数処理可能な位置演算部を用いて、入力軸を回転させて第１の信号と第３の信号間に発生した第２の信号のパルス数と、設計データとして基体と出力軸との絶対角度があらかじめ測定された状態における第１の信号と第３の信号間に発生した、基準姿勢に対応した第２の信号のパルス数とから、基体と出力軸の絶対角度を算定することを特徴とした、基体からみた出力軸の角度を検出する検出装置。
【請求項３】
請求項１又は２記載の位置検出装置において、前記位置演算部が、前記第１の信号と前記第３の信号のうちの先に生成された一方の信号から後で生成された他方の信号までの間の前記第２の信号の生成回数を計数して計数値を得、該計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであることを特徴とする位置検出装置。
【請求項４】
請求項１又は２記載の位置検出装置において、前記位置検出部が、前記第１の信号の生成タイミングから前記第３の信号の生成タイミングまでの間の前記第２の信号の生成回数を計数して計数値を得る過程を、入力軸が回転した状態で該計数値が変化するまで繰り返し、計数値が変化したタイミングにおける計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであることを特徴とする位置検出装置。
【請求項５】
請求項１又は２記載の位置検出装置において、前記位置検出部が、前記第１の信号と前記第３の信号のうちの先に生成された一方の信号から後で生成された他方の信号までの間の前記第２の信号の生成回数を計数して計数値を得る過程を、入力軸が回転した状態で該計数値が変化するまで繰り返し、計数値が変化したタイミングにおける計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであることを特徴とする位置検出装置。
【請求項６】
請求項４又は５記載の位置検出装置において、前記位置検出部が、前記第２の信号の生成回数の計数値と、基体を基準としたときの出力軸の回動位置を求めるための係数との対応表を記憶しておき、該対応表を参照して、前記計数値が変化したタイミングにおける、該計数値に対応する係数を求め、該係数を用いて、基体を基準としたときの出力軸の回動位置を求めるものであることを特徴とする位置検出装置。
【請求項７】
基体、
前記基体に固定された、該基体に対し回転する回転軸を有するモータ、
前記モータの駆動力により前記基体に対し相対的に動作するアーム、
前記モータの回転軸に連結され該回転軸の回転に伴って回転する入力軸と、前記アームに連結され該アームを駆動する出力軸とを有し、入力軸の回転速度を減速して出力軸に伝達する減速機、および、請求項１記載の位置検出装置を備えたことを特徴とする関節機構。
【請求項８】
基体、
前記基体に固定された、該基体に対し回転する回転軸を有するモータ、
前記モータの駆動力により前記基体に対し相対的に動作するアーム、
前記モータの回転軸に連結され該回転軸の回転に伴って回転する入力軸と、前記アームに連結され該アームを駆動する出力軸とを有し、入力軸の回転速度を減速して出力軸に伝達する減速機、および、請求項２記載の位置検出装置を備えたことを特徴とする関節機構。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばロボットの関節等に用いる減速機の出力軸の回動位置を検出する位置検出装置、およびロボットの関節等に採用される関節機構に関する。
【０００２】
【従来の技術】
従来より、例えば、ロボットのアームとアームとの結合部分である関節には、モータが配置され、そのモータにより、一方のアームを基体とし、もう一方のアームをその基体に対し相対的に動作させる関節機構が採用されている。ロボットの関節に使用されるモータは、それ自身が負荷となることが多く、小型のモータが採用され、一方でトルクが必要なため減速機が採用される。
【０００３】
ここで、例えばそれまで停止していたロボットを稼動させようとする場合、ロボットの姿勢が不明であるため、初期化動作を行なう必要がある。この初期化動作は、例えばアームがある姿勢にまで動いたときにオンとなるセンサを備えておいて、そのアームをそのセンサがオンとなるまで動かしてみることにより行なわれる。こうすることによりそのアームの姿勢が判明し、それ以降その初期化時の姿勢を基準として所望の動作を行なわせることができる。
【０００４】
【発明が解決しようとする課題】
ところが、その初期化動作は、上述したように、そのロボットの現在の姿勢が不明な状態からとりあえず動かしてみてセンサが働く姿勢を見つけるというやり方で行なわれることから、その初期化動作時にアームが大きく動く可能性があり、周囲の障害物にあたってしまう危険性がある。また、例えば人間型のロボットに関し、２本足で立っている状態から各足の関節を初期化しようとしたとき、その初期化動作が大きいと立っているのが不安定となり、転倒してしまう危険性がある。したがってこのような危険を回避するために、アームを大きく動かしても障害物にあたることのないよう広いスペースを確保したり、人間型のロボットでは２本足のほかにロボットの姿勢保持装置を取り付けたりなど無駄が多い。また、このような危険のないロボットの場合であっても、初期化のために大きく動作する必要があると初期化に時間がかかり作業効率が悪いという問題もある。
【０００５】
従来、ロボットの関節等のような、モータと減速機とが組み合わされた回転可動部の位置（角度）を求める方式として、
（１）アブソリュートエンコーダを採用した方式
（２）減速機の出力軸が基体に対しある回動角度になったときにオンになるオンオフセンサを設け、かつ、減速機構の入力軸に、基体に対する入力軸の回転量を検出するインクリメンタル式エンコーダを設ける方式
（３）減速機の出力軸にスリット板を設けるとともにそのスリット板のスリットを検出するセンサを基体に設け、かつ入力軸には、基体に対する入力軸の回転量を検出するインクリメンタル式エンコーダを設け、しかも、上記スリット板のスリットどうしの間隔を入力軸の１回転分に対応する出力軸の動作角の整数倍から僅かにずらした構成とする方式（「日本ロボット学会誌」Ｖｏｌ．１６  Ｎｏ．１  ｐｐ．４８〜４９，１９８９  参照）などが知られている。
【０００６】
上記（１）のアブソリュートエンコーダを用いた方式によれば、常に現在の出力軸の絶対的な回動位置（絶対角度）を知ることができる。したがって、初期化のために大きく動かさなくてもよいという観点からは理想的ではあるが、アブソリュートエンコーダは高価であり小型化も困難であるため、アブソリュートエンコーダを採用することのできるケースは極く限られている。
【０００７】
上記（２）は、前述した、オンオフセンサがオンとなるまでとりあえず動かしてみるという初期化方式であり、大きな初期化動作を必要とし、現在この初期化方式が広く採用されているものの、上述のような様々な問題を伴う初期化方式である。
【０００８】
上記（３）は、初期化動作を小さく抑えるという観点からは１つの有効な方式であるが、エンコーダと同程度に高精度なスリットを形成する必要があり、しかも減速比に応じたスリット間隔のものを作製する必要がある。このように、この方式の場合、高精度かつ減速比に応じたスリットを形成する必要があることから、入力軸側のエンコーダのほかに、もう一台特注のエンコーダを必要とするようなものであり、非常に高価なものとなってしまうという問題がある。
【０００９】
本発明は、上記事情に鑑み、小さな動作を行なうだけで基体を基準としたときの減速機の出力軸の回動位置（角度）を検出することのできる、安価な位置検出装置、およびその位置検出装置を採用した、例えばロボットの関節等に採用される関節機構を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成する本発明の位置検出装置は、基体に対し回転する入力軸の回転速度を減速して出力軸に伝達する減速機の、基体を基準としたときの出力軸の回動位置を検出する位置検出装置において、
回転する入力軸が基体を基準とした所定の位相を通過する毎に第１の信号を生成するとともに、その第１の信号が生成される周期よりも短い周期で、入力軸が基体に対し所定角度回転する毎に第２の信号を生成するエンコーダと、
回転する入力軸が出力軸を基準とした所定の位相を通過する毎に第３の信号を生成するセンサと、
上記エンコーダで生成された第１の信号および第２の信号、および上記センサで生成された第３の信号に基づいて、基体を基準としたときの出力軸の回動位置を求める位置演算部とを備えたことを特徴とする。
【００１１】
本発明の第１の位置検出装置は、基本に対する入力軸の回転量を求めるエンコーダ（インクリメンタル式エンコーダ）を採用した点に関しては従来技術の（２），（３）の方式と同様であるが、本発明の第１の位置検出装置の場合は、入力軸と出力軸との間に上記センサを設けたことに１つの特徴があり、このセンサは、例えば入力軸が一回転したことを検出するスリット板とフォトカプラ程度のもので済み、このスリット板は入力軸が例えば一回転したことを検出すればよいものであるから、円板に一箇所適当な寸法のスリットを設けた程度のもので済み、高精度である必要はなく、このような簡易、安価なセンサを入力軸と出力軸との間に設ける（例えばスリットを入力軸、フォトカプラを出力軸に取り付ける）だけで、詳細は後述するが、出力軸を少し動かすだけで、その間のセンサの出力（第３の信号）とエンコーダ出力（第１の信号および第２の信号）とに基づいて、基体を基準としたときの出力軸の回動位置を検出することができる。
【００１２】
また、上記本発明の位置検出装置の第２の位置検出装置は、基体に対し回転する入力軸の回転速度を減速して出力軸に伝達する減速機の、基体を基準としたときの出力軸の回動位置を検出する位置検出装置において、
回転する入力軸が出力軸を基準とした所定の位相を通過する毎に第１の信号を生成するとともに、その第１の信号が生成される周期よりも短い周期で、入力軸が出力軸に対し所定角度回転する毎に第２の信号を生成するエンコーダと、
回転する入力軸が基体を基準とした所定の位相を通過する毎に第３の信号を生成するセンサと、
上記エンコーダで生成された第１の信号および第２の信号、および上記センサで生成された第３の信号に基づいて、基体を基準としたときの出力軸の回動位置を求める位置演算部とを備えたことを特徴とする。
【００１３】
本発明の第２の位置検出装置は、第1の位値検出装置と比べ、エンコーダとセンサの取付位置を逆にしたもの、すなわち、エンコーダを出力軸に取り付けてその出力軸に対する入力軸の相対的な回転量を検出し、センサを基体と入力軸との間に取り付けて基体に対する入力軸の回転を検出する（例えば一回転に一回のパルスを生成する）ようにしたものであり、詳細は後述するが、この第２の位置検出装置も、第１の位置検出装置と同様、出力軸を少しだけ回動することで、その出力軸の回動位置を知ることができる。
【００１４】
ここで、上記第１の位置検出装置ないし第２の位置検出装置において、上記位置演算部が、上記第１の信号の生成タイミングから上記第３の信号の生成タイミングまでの間の前記第２の信号の生成回数を計数して計数値を得、その計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであってもよい。
【００１５】
この方式は、第１の信号や第３の信号の生成の周期と比べ第２の信号の生成周期が十分に小さいときに有効である。また、この方式は、常に、まず第１の信号の生成を検知してその第１の信号の生成タイミングから第３の信号の生成タイミングまでの間の第２の信号の生成回数を計数するものであり、比較的簡単なアルゴリズムで済む。
【００１６】
あるいは上記第１の位置検出装置ないし第２の位置検出装置において、上記位置演算部は、上記第１の信号と上記第３の信号のうちの先に生成された一方の信号から後で生成された他方の信号までの間の上記第２の信号の生成回数を計数して計数値を得、その計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであってもよい。
【００１７】
この方式も、上記と同様、第１の信号や第３の信号の生成の周期と比べ第２の信号の生成周期が十分に小さいときに有効である。またこの方式は、第１の信号と第３の信号のうちの先の信号から第２の信号を数え始め後の信号で数え終えるようにしたため、アルゴリズムは多少複雑となるが、より小さな動きで出力軸の回動位置を検出することができる。  また、上記第１の位置検出装置ないし第２の位置検出装置において、上記位置検出部は、上記第１の信号の生成タイミングから前記第３の信号の生成タイミングまでの間の上記第２の信号の生成回数を計数して計数値を得る過程を、入力軸が回転した状態でその計数値が変化するまで繰り返し、計数値が変化したタイミングにおける計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであってもよい。
【００１８】
この方式は、減速比が極めて大きく、例えば同一の計数値が何回か続くような場合に有効に作用する。また、この方式は、常に第１の信号が生成されるのを待ってその第１の信号の生成タイミングから第３の信号の生成タイミングまでの間、第２の信号の生成回数を計数するものであり、比較的簡単なアルゴリズムで済む。
【００１９】
あるいは、上記第１の位置検出装置ないし第２の位置検出装置において、上記位置検出部は、上記第１の信号と上記第３の信号のうちの先に生成された一方の信号から後で生成された他方の信号までの間の上記第２の信号の生成回数を計数して計数値を得る過程を、入力軸が回転した状態でその計数値が変化するまで繰り返し、計数値が変化したタイミングにおける計数値に基づいて、基体を基準としたときの出力軸の回動位置を求めるものであってもよい。
【００２０】
この方式も、減速比が極めて大きな場合に有効であり、また第１の信号と第３の信号のうちの先の信号から後の信号までの計数値を得るものであるため、アルゴリズムは多少複雑となるが、より小さな動きで出力軸の回動位置を検出できる可能性がある。
【００２１】
ここで、上記の、計数値を得る過程を複数回繰り返す方式を採用した場合に、さらに、上記位置検出部が、上記第２の信号の生成回数の計測値と、基体を基準としたときの出力軸の回動位置を求めるための係数との対応表を記憶しておき、その対応表を参照して、計数値が変化したタイミングにおけるその計数値に対応する係数を求め、その求めた係数を用いて、基体を基準としたときの出力軸の回動位置を求めるものであることが好ましい。  上述したような、例えば同一の計数値が何回か続くようなケースでは、上記のような対応表を参照しない構成の場合はある程度大きな誤差が残る可能性がある。ただし、この誤差は、計数値が例えばＮからＮ＋１に変化した場合そのＮには依存するが、Ｎが定まれば常に一定である。そこで上記対応表を記憶しておいてその対応表を参照することにより、その誤差分が補正された、出力軸の正確な回動位置を知ることができる。
【００２２】
また、上記目的を達成する本発明の関節機器のうちの第１の関節機構は、本発明の第１の位置検出装置を採用したものであり、
基体、
基体に固定された、基体に対し回転する回転軸を有するモータ、
モータの駆動力により基体に対し相対的に動作するアーム、
モータの回転軸に連結されその回転軸の回転に伴って回転する入力軸と、アームに連結されそのアームを駆動する出力軸とを有し、入力軸の回転速度を減速して出力軸に伝達する減速機、および
回転する入力軸が基体を基準としたときの所定の位相を通過する毎に第１の信号を生成するとともに、その第１の信号が生成される周期よりも短かい周期で、入力軸が基体に対し所定角度回転する毎に第２の信号を生成するエンコーダと、回転する入力軸が出力軸を基準とした所定の位相を通過する毎に第３の信号を生成するセンサと、エンコーダで生成された第１の信号および第２の信号、および上記センサで生成された第３の信号に基づいて基体を基準としたときの出力軸の回動位置を求めることにより、基体を基準としたときのアームの動作位置を求める位置演算部とを有する位置検出装置を備えたことを特徴とする。
【００２３】
本発明の第１の関節機構は、本発明の第１の位置検出装置を採用したことにより、アームを大きくは動かすことなく、そのアームの動作位置を求めることができる。
【００２４】
また、上記目的を達成する本発明の関節機構のうちの第２の関節機構は、本発明の第２の位置検出装置を採用したものであり、
基体、
基体に固定された、基体に対し回転する回転軸を有するモータ、
モータの駆動力により基体に対し相対的に動作するアーム、
モータの回転軸に連結されその回転軸の回転に伴って回転する入力軸と、前記アームに連結されそのアームを駆動する出力軸とを有し、入力軸の回転速度を減速して出力軸に伝達する減速機、および
回転する入力軸が出力軸を基準とした所定の位相を通過する毎に第１の信号を生成するとともに、その第１の信号が生成される周期よりも短かい周期で、入力軸が出力軸に対し所定角度回転する毎に第２の信号を生成するエンコーダと、回転する入力軸が基体を基準としたとき所定の位相を通過する毎に第３の信号を生成するセンサと、エンコーダで生成された第１の信号および第２の信号、および上記センサで生成された第３の信号に基づいて基体を基準としたときの出力軸の回動位置を求めることにより、基体を基準としたときのアームの動作位置を求める位置演算部とを有する位置検出装置を備えたことを特徴とする。
【００２５】
本発明の第２の関節機構は、本発明の第２の位置検出装置を採用したことにより、上記第１の関節機構と同様、アームを大きく動かすことなく、そのアームの動作位置を求めることができる。
【００２６】
【発明の実施の態様】
以下、本発明の実施態様について説明する。
【００２７】
図１は、本発明の一実施形態としての位置検出装置および関節機構を備えたロボットの一例を示す模式図である。この図１に示すロボットは、複数のアームとそれらのアームどうしを連結する関節とから構成されている作業用ロボットである。
【００２８】
ベース１上に複数のアーム２＿１，２＿２，２＿３が各関節３＿１，３＿２，３＿３で順次連結されている。また先端のアーム２＿３にはハンド４が連結されている。ハンド４は、そのハンドを構成する指４ａが自在に開閉して作業対象物を把持したり離したりすることができ、また、各関節３＿１，３＿２，３＿３には、各関節で連結されたアーム２＿１，２＿２，２＿３を自在に回動することができるようにモータや減速機からなる関節機構が配置されている。このような作業ロボットを用いると、先端のハンド４が所定の位置、所定の姿勢となるようにアームを回動させて、例えば作業対象物５を把持して他の位置まで運ぶ等の作業を行なうことができる。
【００２９】
図２は、図１に示す作業ロボットの各関節に配置されるモータ、減速機、および減速機の出力軸の回動位置の演算とモータの回転制御を担う演算制御部を示す模式図である。
【００３０】
ここには、モータ１０と、減速機２０と、エンコーダ３０と、センサ４０と、演算制御部５０が示されている。
【００３１】
モータ１０は、図示しない基体に固定されている。ここでいう基体とは、図１に示す関節３＿１に関してはベース１、関節３＿２に関してはアーム２＿１、関節３＿３に関してはアーム２＿２である。
【００３２】
また、ここでは、減速機２０には、ハーモニックギアが用いられている。ハーモニックギアは大きな減速比を得ることができることで知られており、ロボットの関節等に多用されている。ここではハーモニックギア自体の構造についての説明は省略する。
【００３３】
モータ１０の回転軸１１と減速機２０の入力軸２１は直結されており、モータ１０の回転軸１１、すなわち減速機２０の入力軸２１が回転すると、その入力軸２１の回転は大きな減速比で減速されて出力軸２１に伝達され、入力軸２１が多数回回転すると、出力軸２１は、入力軸２１の回転に伴ってゆっくりと回動する。
【００３４】
減速機２０の出力軸２１にはアームが連結されており（図１の各関節３＿１，３＿２，３＿３に配置された各減速機の出力軸には、それぞれアーム２＿１，２＿２，２＿３が連結されている）、モータ１０が回転して減速機２０の出力軸２２が回動すると、それに伴ってその出力軸２２に連結されたアームが動くことになる。
【００３５】
図１に示すように、各関節３＿１，３＿２，３＿３には図２に示す構造の関節機構がそれぞれ配置されるため、モータ自身がそのロボットの負荷として作用する。そこでモータとしてはできる限り小型、軽量のものを採用し、減速機で大きく減速することでトルクを高めているのである。
【００３６】
図２に示すモータ１０には、ロータリエンコーダ３０が連結されている。このロータリエンコーダ３０は、モータ１０とともに基体に固定されており、またモータ１０の回転軸１１がそのロータリエンコーダ３０の軸（図２には図示せず）に直結されている。このロータリエンコーダ３０は、モータ１０の回転軸１１が一回転する毎にＺ相パルスを出力するとともに、その一回転の間に多数回、互いに位相が９０°ずれたＡ相パルスとＢ相パルスを出力する。
【００３７】
Ａ相パルスとＢ相パルスは互いに位相が９０°ずれており、モータ１０の回転軸１１の回転方向に応じてその位相関係が逆転することから、これらＡ相パルスとＢ相パルスの位相をモニタすることにより、モータ１０の回転軸１１の回転方向を知ることができる。また、これらＡ相パルス、Ｂ相パルスのいずれか一方のパルス信号、あるいはこれらＡ相パルスとＢ相パルスを組み合わせて作ったパルス信号を計数することにより、モータ１０の回転軸１１の、一回転よりも細かな回転角度を知ることができる。ここでは、この計数の対象となるパルス信号を基本パルスと称する。本発明との対比では、Ｚ相パルスが本発明にいう第１の信号に相当し、基本パルスが本発明にいう第２の信号に相当する。
【００３８】
また、図２の右側には、減速機２１の入力軸２１に、オンオフセンサ４０を構成するスリット円板４１が固定されている。このスリット円板４１は、一周の間に１つだけスリットが設けられており、入力軸２１の回転に伴って回転する。また、出力軸２２には、そのスリット円板４１に設けられたスリットを検出するためのフォトカプラ４２が固定されており、入力軸２１が出力軸２２に対して一回転する毎にそのスリットがフォトカプラ４２により検出され、そのフォトカプラ４２からオンオフセンサパルス（本発明にいう第３の信号に相当する）を出力する。
【００３９】
エンコーダ３０から出力されたＺ相、Ａ相、Ｂ相の各パルス信号およびオンオフセンサ４０から出力されたオンオフセンサパルス信号は演算制御部５０に入力される。
【００４０】
尚、ここでは、一般的なエンコーダの説明のため、Ｚ相パルスのほか、Ａ相とＢ相との２つのパルス信号が生成される旨説明したが、モータ１０の回転軸１１の回転方向（正転又は逆転）は、モータを駆動する側で判定することもでき、その場合は、Ａ相、Ｂ相２つのパルス信号は不要であり、Ａ相のみ、あるいはＢ相のみを基本パルスとして演算制御部５０に入力してもよく、あるいはＺ相パルスのほか、もともとＡ相パルスのみあるいはＢ相パルスのみに相当する基本パルスしか生成しないエンコーダを用いてもよい。本実施形態ではＡ相パルスとＢ相パルスの双方を演算制御部５０に入力し、演算制御部５０の内部でそれらＡ相パルスとＢ相パルスから基本パルスを生成しているものとする。
【００４１】
また、オンオフセンサ４０はスリット円板４１とフォトカプラ４２とからなる旨説明したが、この構成に限るものではなく、出力軸を基準としたときの入力軸の一回転を検出することができるセンサであればどのようなものであってもよい。
【００４２】
演算制御部５０は、３つの関節３＿１，３＿２，３＿３のうちのそれぞれ１つの関節の制御を担っており、図１に示すロボット全体の制御を司る図示しない上位の制御装置からの指令を受けて自分が担当する関節を制御する。この制御は、モータ１０の回転軸１１の回転方向および回転量を制御することによって行なわれる。モータ１０を制御してアームを動かすと、その結果は、図示しない上位の制御装置に報告される。
【００４３】
図３は、図２にブロックで示すロータリエンコーダの内部構造を示す模式図である。
【００４４】
基体に固定される固定ベース３１の内部には、ロータリーエンコーダの回転軸３７に固定されたスリット板３２が配置されている。この回転軸３７はモータの回転軸１１（図２参照）に直結されている。スリット板３２は、一周に１つだけ設けられたＺ相検出用のスリット３３と、一周にわたって多数形成されたＡ相、Ｂ相検出用のスリット３４を有している。Ｚ相検出用スリット３３は、固定ベース３１に固定されたＺ相検出センサ３５によって検出され、Ａ相、Ｂ相検出用スリット３４は、固定ベース３１に固定されたＡ相、Ｂ相検出センサ３６によって検出される。ここで、Ａ相、Ｂ相検出センサ３６は、図示は省略するが、Ａ相、Ｂ相検出用スリット３４のピッチに対し互いに位相が９０°異なる位置に配置されたＡ相検出センサとＢ相検出センサとの２つのセンサから成り、スリット板３２の回転方向、すなわちモータの回転軸１１が正転するか逆転するかに応じて、Ａ相、Ｂ相検出用スリット３４を、Ａ相検出センサあるいはＢ相検出センサのいずれかが先に検出し、したがってＡ相パルスとＢ相パルスとのいずれのパルス信号の位相が進んでいるかに応じて、モータの正転と逆転を判定することができる。Ｚ相検出センサ３５で得られたＺ相パルス、およびＡ相、Ｂ相検出センサ３６で得られたＡ相パルスおよびＢ相パルスは、図２に示すように、いずれも演算制御部５０に入力される。
【００４５】
図４は、オンオフセンサ４０の構成を示す模式図である。減速機の入力軸２１には、スリット板４１が固定されており、そのスリット板４１には、一周に１つのみスリット４３が設けられている。このスリット４３は減速機の出力軸２２に固定されたフォトカプラ４２で検出されてオンオフセンサパルスが生成される。この生成されたオンオフセンサパルスも図２に示す演算制御部５０に入力される。
【００４６】
図５は、図２に１つのブロックで示す演算制御部５０の内部構成図である。
【００４７】
ここに示す演算制御部５０は、コンピュータシステムで構成されており、ここには、各種プログラムが実行されるＣＰＵ５１、外部からの各種のデータや指令を入力する入力インターフェース５２、外部に対し各種のデータや指令を出力する出力インターフェース５３、各種プログラムや固定的なデータが記憶されているＲＯＭ５４、プログラム実行時の作業領域として、あるいは外部との間で入出力されるデータの一時保管場所として利用されるＲＡＭ５５、および必要に応じてこの演算制御部５０にマニュアルで指令を与えるための操作部５６が示されており、これらの構成要素はバス５７で相互に接続されている。ＣＰＵ５１では、図１に示す作業ロボットの、初期化動作のためのプログラム、初期化終了後の、実際の作業を行なう際の動作を制御するプログラム、その他上位の制御装置との間でデータを送受信するためのプログラム、操作部５６の操作を認識するプログラム等、多種のプログラムが実行されるが、以下では、本発明の主題である初期化動作に限って説明を続ける。
【００４８】
図６は、各種パルス信号の生成タイミングを示す図である。（Ａ），（Ｂ）および（Ｃ）は、それぞれＺ相パルス、基本パルス、およびオンオフセンサパルスであり、横軸は減速機の入力軸（モータの回転軸）の回転角度である。
【００４９】
エンコーダ３０（図２参照）では、入力軸が一回転するごとに一回Ｚ相パルスが生成され、入力軸の一回の間においても所定の微小回転角度Δθｅ毎に１つずつ基本パルスが生成される。ここでは、Ｚ相パルスが生成されてから次のＺ相パルスが生成されるまでの間、すなわち入力軸の一回転の間に、基本パルスがＰ回生成されるものとする。また、オンオフセンサパルスは、スリット板４１が入力軸に固定されて入力軸の回転に伴って回転するが、そのスリット板４１のスリット４３（図４参照）を検知するフォトカプラ４２が出力軸２２に固定されており、この出力軸２２は、入力軸２１の回転に伴って、減速機２０の減速比に応じた速度でゆっくりと回動するため、Ｚ相パルスからの遅れが順次変化することになる。すなわち図６に示すように、Ｚ相パルスを基準として考えたときのオンオフセンサパルスは、例えば初回は横軸に示したＡの位置で生成され、その次はＢの位置で生成され、さらにその次はＣの位置で生成され、…というようにＺ相パルスを基準としたとき、入力軸の回転角度が順次異なった位置で生成されることになる。尚、オンオフセンサパルスの生成位置がＡ，Ｂ，Ｃ，…の順に変化するときのモータの回転方向を正転とすると、モータが逆転したときは、オンオフセンサパルスの生成位置は、…Ｃ，Ｂ，Ａの順に変化することになる。
【００５０】
ここで、エンコーダ３０やオンオフセンサ４０の加工精度や取付誤差、あるいはその他の要因により、設計上は同一であっても、Ｚ相パルスが生成されてからオンオフセンサパルスが生成されるまでの間の基本パルスの数や、オンオフセンサパルスが生成されたときの、出力軸の回動角度やその出力軸に連結されたアームの角度等は、製作されたロボット一台一台について微妙に異なっており、これを誤差のまま残しておくとそのロボットに高精度の動作を行なわせるのは難しい。そこでロボットを製作した際に通常行なわれるように、ここでも、図示しない三次元測定器等を用いて、ロボットの基準となる姿勢をキャリブレーションしておく。すなわち、ここでは、三次元測定器等を用いて、Ｚ相パルスを基準としオンオフセンサパルスが図６の横軸上の位置Ａで生成されたときの、基体に対する出力軸の絶対角度を求め、かつ、そのときのＺ相パルスからオンオフセンサパルスまでの間に発生した基本パルスのパルス数がＮａパルスであることを求めておく。これらの絶対角度のデータ、およびそのパルス数（Ｎａパルス）は、そのロボットの出荷に先立って、図３に示すＲＯＭ５４に記憶される。あるいは、ＲＡＭ５５が不揮発性メモリの場合はＲＡＭ５５に格納してもよい。あるいは、ロボットの複数の関節３＿１，３＿２，３＿３（図１参照）に関するデータを上位の制御装置に格納しておいて、そのロボットの動作に先立って各関節の制御を担う各演算制御部にそれらのデータをダウンロードして演算制御部のＲＡＭに格納するようにしてもよい。ここでは、それらのキャリブレーションは済んでいるものとして説明を続ける。
【００５１】
初期化動作時に、図２に示すモータ１０の回転軸１１を回転させることによって減速機２０の入力軸２１を回転させ、それに伴ってＺ相パルスが生成され、そのＺ相パルスの生成タイミングから基本パルスを数え始め、オンオフセンサパルスが生成されたタイミングで基本パルスを数えるのを停止したとき、Ｎパルスが計数されたものとする。
【００５２】
図６に示す横軸上のＡ，Ｂ，Ｃ…の各ポイントどうしの間隔、すなわち、その間の出力軸の回動角度やその間に生成される基本パルスの数は、減速機２０の減速比と、基本パルスの周期とから既知であるため、今回、Ｚ相パルスが生成されてからオンオフセンサパルスが生成されるまでの間の基本パルスを数え、その結果がＮパルスであるということから、オンオフセンサパルスが生成された位置、すなわち位置Ｘにおける出力軸の回動位置を求めることができる。
【００５３】
この原理を理論的に説明する。
【００５４】
減速機の減速比をＲとしたとき、ある１つのオンオフセンサパルスが生成されてから次のオンオフセンサパルスが生成されるまでの入力軸の回転角度θｒは、
θｒ＝（３６０×Ｒ）／（Ｒ−１）  ［ｄｅｇ］
であらわされる。
【００５５】
一方Ｚ相のパルス間隔は、入力軸の回転角度で常に３６０［ｄｅｇ］である。
【００５６】
このことから、図６に示すように、Ｚ相のパルス生成位置を基準としたときのオンオフセンサパルスの位置変化を入力軸の回転角度であらわしたものをオンオフセンサパルス変動ステップΔθｚｒ（図６参照）と呼ぶと、そのオンオフセンサパルス変動ステップΔθｚｒは、
Δθｚｒ＝θｒ−３６０＝３６０／（Ｒ−１）  ［ｄｅｇ］
であらわされる。
【００５７】
すなわち、オンオフセンサパルスは、毎回、このオンオフセンサパルス変動ステップΔθｚｒずつＺ相パルス位置からずれていく。この式からわかるようにこの変化分Δθｚｒは、減速機の減速比Ｒで一意に定まる定数である。このΔθｚｒが、エンコーダの基本パルス間隔Δθｅ（図６参照）より大きい場合（小さい場合については後述する）、Ｚ相パルス位置からオンオフセンサパルス位置までの基本パルス数を計数することにより、キャリブレーション位置Ａから、今回のオンオフセンサパルス位置Ｘまでの間に入力軸が何回回転したかが判る。キャリブレーション位置Ａにおける出力軸の絶対角度は前述のように測定されており、したがって今回のオンオフセンサパルス位置Ｘにおける出力軸の絶対角度は計算によって求めることができる。このＺ相パルスとオンオフセンサパルスの検索動作、すなわち初期化動作の入力軸回転量は、Ｚ相パルスよりもオンオフセンサの方が先に生成されるという、最も大きな入力軸回転量を要するケースであっても２θｒで済む。
【００５８】
この間、出力軸は、２×３６０／（Ｒ−１）［ｄｅｇ］しか回動せず、出力軸の絶対角度の算出のための初期化動作はほんの僅かな動作で済むことになる。
【００５９】
以下に、具体的な計算例を示す。
【００６０】
前提条件：
エンコーダ基本パルス数：５００［パルス／回転］
減速比Ｒ：１００
或る位置Ａ（キャリブレーション位置）での出力軸絶対角度θｏ
：１０．０００［ｄｅｇ］
（位置Ａはオンオフセンサパルスが発生した位置であり、絶対角度は別途キャリブレーションで求めたものである）
Ｚ相パルス発生位置から位置Ａまでのエンコーダ基本パルス数Ｎａ
：３５［ｐｕｌｓｅ］
（上記パルス数をカウントしたときの入力軸回転方向を＋方向とする）
エンコーダ基本パルス角度Δθｅ：３６０／５００［ｄｅｇ］
オンオフセンサパルス間隔θｒ：３６０×１００／９９［ｄｅｇ］
オンオフセンサパルス変動ステップΔθｚｒ：３６０／９９［ｄｅｇ］
とする。
【００６１】
任意の点で入力軸を＋方向に回転させて、Ｚ相パルスが発生した後のオンオフセンサパルス発生位置で止める。このときのＺ相パルスが発生した後、オンオフセンサパルス発生まで間の基本パルス数Ｎの計測結果が
Ｎ＝８６［ｐｕｌｓｅ］
であったとする。出力軸の位置Ａからの概算回転角度は
（Ｎ−Ｎａ）×Δθｅ＝（８６−３５）×３６０／５００＝３６．７２［ｄｅｇ］
である。
【００６２】
位置Ａからみたときのオンオフセンサパルスの発生回数を計算すると
３６．７２／Δθｚｒ＝１０．１［回］
現在位置はオンオフセンサパルスが発生した位置にあるので０．１は量子化誤差であり、位置Ａからみて１０回目のオンオフセンサパルスが発生した位置にいるはずである（最も近い整数値を回数として判断する）。
よってＡ点からの入力軸の回転量は
Δθｉ＝１０×（３６０＋Δθｚｒ）＝１０×（３６０＋３６０／９９）
であり出力軸の回転量Δθｏは
Δθｏ＝Δθｉ／Ｒ＝１０×（３６０＋Δθｚｒ）／Ｒ＝１０×（３６０＋３６０／９９）／１００＝３６．３６４［ｄｅｇ］
よって現在の出力軸の絶対角度θは
θ＝θｏ＋Δθｏ＝１０．０００＋３６．３６４＝４６．３６４［ｄｅｇ］
である。
【００６３】
この絶対位置の算出に必要な出力軸の回転角度は出力軸を最も大きく回動させる必要がある場合においても、
２×３６０／（Ｒ−１）＝７．２７［ｄｅｇ］
である。
【００６４】
図７は、以上の原理に基づいて初期化動作を行なう際に演算制御部で実行されるプログラムをあらわしたフローチャートである。
【００６５】
ここでは、先ずカウンタＮがリセットされ（ステップ７＿１）、モータの回転を開始する（ステップ７＿２）。次いで、Ｚ相パルスが出力されるのを待って（ステップ７＿３）、Ｚ相パルスが出力されると、次にオンオフセンサパルスの出力と基本パルスの出力がモニタされ（ステップ７＿４，７＿５）、基本パルスが出力されるとその基本パルスのカウンタNがカウントアップされる（ステップ７＿６）。一方、オンオフセンサパルスが出力されるとステップ７＿７に進み、オーバーラン補正が行なわれる。
【００６６】
ロボットのアームは、ある瞬間に停止しようとしても直ちには停止することはできず慣性力により若干行き過ぎることになる。そこでここでは、モータを、オンオフセンサパルスが出力された後に出力された基本パルス数と同数の基本パルス数が発せられるまで逆回転させることにしたり、行き過ぎ分（オーバーラン）を補正し、オンオフセンサパルスが出力された位置に戻す。その位置でモータを停止し（ステップ７＿８）、減速機の出力軸の回転角度の計算を行なう。このときの計算のアルゴリズムは前述のとおりである。これにより、出力軸の現在の回動角度、すなわちその出力軸に連結されたアームの動作位置が判明し、初期化が行なわれたことになる。
【００６７】
この初期化動作における出力軸の回動角度は、前述のとおり僅かで済み、出力軸を少しだけ回動させるだけで初期化を行なうことができる。
【００６８】
図７に示すプログラムは、Ｚ軸パルスが発生してから基本パルスの計数を始めるプログラムであり、この場合、Ｚ軸パルスよりもオンオフパルスの方が先に発生したときであっても、Ｚ軸パルスが発生するまでモータを回転し続けてＺ軸パルスを得、そのＺ軸パルスを得た時点から基本パルスの計数を始めることになり、最初にオンオフパルスが発生してからＺ軸パルスが発生するまでの間、出力軸は初期化のための演算に寄与することなく回動し続けることになり、その分、初期化に要する出力軸の回動角度が大きくなってしまう結果となる。そこでこれを避けるための一方法として、Ｚ軸パルスよりオンオフセンサパルスの方が先に発生したとき、その時点でモータを逆転させ、Ｚ軸パルスを発生したタイミングでモータをもう一度逆転させ（もともとの正転方向となる）、Ｚ軸パルスの発生タイミングから基本パルスの計数を開始する。こうすることにより、出力軸は正方向と逆方向の双方に回動するが、回動の角度範囲は狭くて済むことになる。
【００６９】
図８は、上記の、オンオフパルスが先に発生したときにはモータを逆転させるというアルゴリズムを実現するプログラムの、図７に示すプログラムからの変更部分を示す部分フローチャートである。
【００７０】
この図８に示す部分フローチャートは、図７のステップ７＿３に代えて、そのステップ７＿３の部分に配置される。
【００７１】
ステップ８＿１，８＿２においてＺ相パルスとオンオフセンサパルスの出力がモニタされ、Ｚ相パルスの方が先に出力されたときは図７の場合と同様であって、図７のステップ７＿４に進む。一方、オンオフセンサパルスの方が先に出力されたときは、モータを逆転し（ステップ８＿３）、Ｚ相パルスの出力をモニタし（ステップ８＿４）、Ｚ相パルスが出力されるとモータを再度逆転（もともとの正転方向）する（ステップ８＿５）。前述したように慣性力により少し行き過ぎることを利用し、ステップ８＿１においてモータをもともとの正転方向に回転したときのＺ軸パルスを検知して、図７に示すステップ７＿４に進む。
【００７２】
このようなアルゴリズムを採用すると、出力軸の回動範囲をより小さく抑えることができる。ただし、慣性力が存在することから、モータを逆転させるにはある程度の長時間を要し、このアルゴリズムはモータを２回にわたって逆転させる必要があることから、初期化動作に時間がかかる結果となる。そこで次に出力軸の回動範囲をより小さく抑え、かつ初期化動作に要する時間も抑えたアルゴリズムを説明する。
【００７３】
図９は、演算制御部で実行される初期化動作プログラムのもう一つの例を示すフローチャートである。
【００７４】
先ず、カウンタＮをＮ＝０にリセットし、モータの回転を開始する（ステップ９＿１，９＿２）。次いで、Ｚ相パルスとオンオフセンサパルスとのいずれかが出力されるのを待つ（ステップ９＿３，９＿４）。Ｚ相パルスの方が先に出力されたときは、フラグＦをＦ＝０にリセットし（ステップ９＿５）、オンオフセンサパルスの方が先に出力されたときはフラグＦをＦ＝１にセットして（ステップ９＿６）、いずれの場合も、ステップ９＿７に進む。ステップ９＿７ではフラグＦがＦ＝０かＦ＝１かが判定され、Ｆ＝０のときはステップ９＿８に進んでオンオフセンサパルスが出力されたか否かが判定され、Ｆ＝１のときはステップ９＿９に進んでＺ相パルスが出力されたが否かが判定される。
【００７５】
ステップ９＿８においてオンオフセンサパルスが出力されていないと判定されたとき、あるいはステップ９＿９においてＺ相パルスが出力されていないと判定されたときは、ステップ９＿１０に進み、基本パルスが出力されたか否かが判定される。基本パルスが出力されていないときはステップ９＿７に戻り、以上のパルス出力のモニタが繰り返される。  ステップ９＿１０において基本パルスの出力が確認されると、ステップ９＿１１に進み、基本パルス数Nがカウントアップされる。
【００７６】
ステップ９＿８においてオンオフセンサパルスの出力が確認されたとき、あるいはステップ９＿９においてＺ相パルスの出力が確認されたときは、ステップ９＿１２に進む。ステップ９＿１２〜ステップ９＿１４の処理は、図７のステップ７＿７〜７＿９の処理と同一であり、説明は省略する。ただしステップ９＿１４における角度計算アルゴリズムは、Ｆ＝０のときは図７のステップ７＿９と同様であり、Ｆ＝１のときは次に説明するアルゴリズムが採用される。
【００７７】
この図９に示すフローは、Ｚ軸パルスとオンオフセンサパルスのうちの先に出力されたパルスから後に出力されたパルスまでの間の基本パルス数を計数し、その計数値に基づいて出力軸の回動角度を計算するようにしたものであり、図７のフローチャートと比べると解るように多少複雑なアルゴリズムとなっているが、モータを逆転させる必要がなく、かつ出力軸の回動範囲をより小さく抑えた初期化を行なうことができる。
【００７８】
Ｆ＝１の場合、すなわちオンオフセンサパルスが先に発生し、その後Ｚ軸パルスが発生した場合の角度計算方法について説明する。
【００７９】
ここでは前述の計算例の場合と同様に、絶対角度をキャリブレーションした位置をオンオフセンサパルス発生位置Ａとする。ここでは、Ｚ相パルスより先に、図６の絶対角度算出位置Ｘでのオンオフセンサパルスが発生したものとし、この場合に、さらに同じ方向に入力軸を回転させてＺ相パルスが発生した位置で停止する。その場合、オンオフセンサパルス発生後に余分に回した入力軸の回転量は（Ｐ−Ｎ）パルス分である。（Ｐ−Ｎ）パルス分の出力軸回転量Δθｐｎは
Δθｐｎ＝（Ｐ−Ｎ）×３６０／Ｒ／Ｐ
で求められるから、前述の具体的な計算例と同じ前提のもとに計算すれば、Ｚ相パルスが発生した時点での出力軸絶対角度θは
θ＝θｏ＋Δθｏ＋Δθｐｎ＝１０．０００＋３６．３６４＋（５００−８６）×３６０／１００／５００＝４９．３４５［ｄｅｇ］
となる。
【００８０】
このように、オンオフセンサパルス発生位置、Ｚ相パルス発生位置における絶対角度は全て算出できるので、停止位置はどちらのパルス位置でも良いことになる。
【００８１】
図１０は、オンオフセンサパルス変動ステップΔθｚｒよりも基本パルス間隔Δθｅの方が大きい場合の、各種パルス信号の生成タイミングを示す図である。図６の場合と同様、（Ａ），（Ｂ），（Ｃ）は、それぞれＺ相パルス、基本パルスおよびオンオフセンサパルスであり、横軸は減速機の入力軸（モータの回転軸）の回転角度である。
【００８２】
ここでは、減速機の減速比が非常に大きく、その結果、図１０に示すように、オンオフセンサパルス変動ステップΔθｚｒよりも基本パルス間隔Δθｅの方が大きく、したがってモータをある一定の方向に回転し続けてＺ軸パルスの発生からオンオフセンサパルスの発生までの間の基本パルスの数の計数を何度か繰り返したときに複数回同じ計数値が得られるような場合の初期化アルゴリズムについて説明する。
【００８３】
この場合、例えばＺ相パルスの発生からオンオフセンサパルスの発生までの間の基本パルスの数を数えてもその基本パルスの計数値によっては出力軸の回動位置を求めることはできない。そこで、ここでは、入力軸を一方向に回転させて、Ｚ相パルスからオンオフセンサパルスまでの間の基本パルスの計数を繰り返し、この計数値が最初に変化したときのオンオフセンサパルス発生位置で出力軸を停止する。この停止位置は、図１０上で、横軸上の位置Ａであるとする。
この停止したとき、すなわち、変化した後の計数値をＮａ＋１（変化前の計数値をＮａ）とする。この停止したときの出力軸の絶対角度θｏ（出力軸に連結されたアームの動作位置）を三次元測定器等を用いて計測する。このような絶対角度θｏの測定を行ない、その測定された絶対角度θｏと、出力軸を停止した時点における、基本パルスの計数値Ｎａ＋１を保有しておく。これらのデータの保有場所は、前述の例と同様、図５に示すＲＯＭ５４あるいはＲＡＭ５５、あるいは、このロボット装置全体の制御を司る図示しない制御装置内であってもよい。
【００８４】
次に、実際の初期化動作を開始し、Ｚ相パルスからオンオフセンサパルスまでの間の基本パルスの計数値を求めたところＮであったとし、さらに入力軸の回転を続けＺ相パルスからオンオフセンサパルスパルスまでの間の基本パルスの計数を続ける。この間、オンオフセンサパルスの発生位置は、図１０の横軸上、位置Ｂ、位置Ｃ、…と進む。
【００８５】
その間、暫らくは計数値Ｎが続き、その計数値が始めてＮａ＋１に変化したときのオンオフセンサパルス出力位置（図１０の位置Ｘ）でモータを停止する。尚ここではオーバランは考えない。
【００８６】
ここでは、このようにして計数値が始めてＮａ＋１となったときの位置Ｘに対応する出力値の絶対角度θを求める。
【００８７】
三次元測定器等を用いて絶対角度θｏを求めた位置Ａと、今回計数値Ｎ＋１を得て停止した位置Ｘとの間の計数値の差は
（Ｎ＋１）−（Ｎａ＋１）＝Ｎ−Ｎａ
であり、この計数値の差（Ｎ−Ｎａ）を角度に換算すると、その差（Ｎ＿Ｎａ）に相当する角度差Δθｏは、
Δθｏ＝Δθｅ×（Ｎ−Ｎａ）
であるから、位置Ｘでの出力軸の絶対角度θは、
θ＝θｏ＋Δθｏ
＝θｏ＋Δθｅ×（Ｎ−Ｎａ）
で求めることができる。
【００８８】
この絶対角度θの算出に伴う出力軸の必要動作範囲の最大値は、基本パルス間隔Δθｅである。
【００８９】
以下に具体的な計算例を示す。
前提条件：
エンコーダ基本パルス数Ｐ：１００［パルス／回転］
減速比Ｒ：５００
或る位置Ａ（キャリブレーション位置）での出力軸絶対角度θｏ：１０．０００［ｄｅｇ］
（位置ＡはＺ相パルス〜オンオフセンサパルス間の基本パルス数が最初に変化したタイミングにおけるオンオフセンサパルス発生位置であって、この位置Ａでは、絶対角度が別途キャリブレーションで求められている。
【００９０】
Ｚ相パルス発生位置から位置Ａまでの基本パルス数Ｎａ：３５［ｐｕｌｓｅ］
（上記パルス数をカウントしたときの入力軸回転方向を＋方向とする）
基本パルス角度Δθｅ；３６０／１００［ｄｅｇ］
オンオフセンサパルス間隔θｒ：３６０×５００／４９９［ｄｅｇ］
オンオフセンサパルス変動ステップΔθｚｒ：３６０／４９９［ｄｅｇ］
とする。
【００９１】
任意の位置から入力軸を＋方向に回転させて、Ｚ相パルスが発生した後、オンオフセンサパルス発生位置までの間の基本パルス数Ｎをカウントする。入力軸をさらに同方向に回し、このＮ値が最初に変化するときのオンオフセンサパルス発生位置Ｘで停止する。Ｚ相パルスが発生した後、オンオフセンサパルスが発生するまでの間の基本パルス数Ｎ＋１の計測結果が
Ｎ＝８６［ｐｕｌｓｅ］
であったとする。出力軸の、位置Ａからの回動角度Δθｏは
（Ｎ−Ｎａ）×Δθｅ＝（８６．３５）×３６０／１００＝１８３．６［ｄｅｇ］
である。
よって現在の出力軸の絶対角度θは
θ＝θｏ＋Δθｏ＝１０．０００＋１８３．６＝１９３．６［ｄｅｇ］
である。
【００９２】
この絶対位置の算出に必要な出力軸の回転角度は、出力軸は最を大きく動かす必要のあるケースであっても、
Δθｅ＝３．６［ｄｅｇ］
である。
【００９３】
図１０を参照して説明している、オンオフセンサパルス変動ステップΔθｚｒよりも基本パルス間隔Δθｅの方が大きい場合における、上記の絶対角度θを求めるアルゴリズムの場合、算出できる絶対角度の精度はΔθｚｒであり、減速比が５００のシステムにおいても
Δθｚｒ＝３６０／４９９＝０．７２１［ｄｅｇ］
程度であり、高精度な絶対角度を必要とするシステムには適用できない。この精度を上げるには、絶対角度をキャリブレーションした位置Ａから現在位置までの間にオンオフセンサパルスが何回出るのか知っていればよい。そこで、事前に行うキャリブレーションにて、Ｚ相パルス〜オンオフセンサパルス間における基本パルス数がＮａからＮａ＋１に変化する位置Ａにおける絶対角度θｏを求めておく他に、減速機の入力軸を順次回転させて、Ｚ相パルス〜オンオフセンサパルス間の基本パルス数が変化するすべての位置に関し、それらの位置それぞれと位置Ａとの間で発生する、オンオフセンサパルスの各発生数を対応表として保管しておく。実際の運用時には、基本パルス数がＮからＮ＋１に変化した位置Ｘに停止させたとき、基本パルス数がＮからＮ＋１に変化した場合の、位置Ａからのオンオフセンサパルス数Ｋをその対応表から求め、出力軸の絶対角度θを
θ＝θｏ＋Ｋ×θｚｒ
として求めることにより、絶対角度θをより正確に求めることができる。
【００９４】
図１１、図１２は、以上の原理に基づいて初期化動作を行なう際に、演算制御部で実行されるプログラムをあらわしたフローチャートの、それぞれ前半部分、後半部分である。  ここでは、先ずカウンタＮとＺがＮ＝Ｚ＝０にリセットされ（ステップ１１＿１）、モータの回転が開始される（ステップ１１＿２）。次いで、Ｚ相パルスが出力されるのを待って（ステップ１１＿３）、Ｚ相パルスが出力されるとＺ相パルス数Ｚをカウントアップし（ステップ１１＿４）、オンオフセンサパルスの出力と基本パルスの出力がモニタされ（ステップ１１＿５、１１＿６）、基本パルスが出力されるとその基本パルス数Ｎをカウントアップする（ステップ１１＿７）。
【００９５】
ステップ１１＿５、１１＿６、１１＿７を繰り返し、今度はオンオフセンサパルスが出力されると、そのときの基本パルスの計数値ＮがＮ＿Ｎｅｗに記憶される（ステップ１１＿８）。
【００９６】
ステップ１１＿９では、Ｚ＞１か否か、すなわちＺ＝１であるか、それともＺ≧２であるかが判定される。Ｚは、Ｚ相パルスの計数値であり、ここでは、基本パルスの計数値どうしの比較のために基本パルスの計数を最低２回行なう必要があるため、Ｚ＞１であるか否かを判定することにより初回（Ｚ＝１）であるか２回目以降（Ｚ＞１）であるかを判定しているのである。
【００９７】
初回は、Ｚ＝１であり、ステップ１１＿９のあと直接にステップ１１＿１１に進んで基本パルスの計数値ＮがＮ＿Ｏ１ｄに格納され、ステップ１１＿３に戻って次のＺ相パルスの出現を待つ。
【００９８】
２回目以降（Ｚ＞１）のときは、ステップ１１＿９のあとステップ１１＿１０に進み、Ｎ＿Ｏ１ｄとＮ＿Ｎｅｗとの比較が行なわれる。それらが一致している（Ｎ＿Ｏｌｄ＝Ｎ＿Ｎｅｗ）ときは、ステップ１１＿１１に進み、今日求めた計数値ＮがＮ＿Ｏｌｄに格納される。一方ステップ１１＿１０でＮ＿Ｏｌｄ＝Ｎ＿Ｎｅｗではない。すなわち、今日初めて、前回の計数値Ｎ＿Ｏｌｄと今回の計数値Ｎ＿Ｎｅｗが相違していたときは、図１２のステップ１２＿１に進む。図１２のステップ１２＿１におけるオーバーラン補正、ステップ１２＿２におけるモータストップ、ステップ１２＿３における角度計算の各ステップは、図７における各ステップ７＿７，７＿８，７＿９と基本的には同一であり、詳細説明は省略するが、ステップ１２＿３の角度計算ステップでは、図１０を参照して説明した計算アルゴリズムが採用されて角度計算が行なわれる。図１０を参照した説明では対応表を保有しておいてその対応表を参照する計算アルゴリズムと対応表は不用のアルゴリズムとの２種類のアルゴリズムについて説明したが、ここではいずれのアルゴリズムを採用してもよい。
【００９９】
図１３は、基本パルスの計数値Ｎと図１０に示す位置Ａからのオンオフセンサパルスのパルス数Ｋとの対応表の概念図である。
【０１００】
図１２のステップ１２＿３において対応表を参照した角度計算が行なわれるときは、今回最初に変化した基本パルスの計数値Ｎに対応するオンオフセンサパルスのパルス数Ｋを知り、前掲の式
θ＝θｏ＋Ｋ×θｚｒ
により、出力軸の回動位置θが求められる。
【０１０１】
尚、図７のフローチャートのステップ７＿３に代えて図８の部分フローを採用すると、モータを逆転させることにより初期化動作のための出力軸の回動範囲を狭めることができる旨説明したが、この図１１に示すフローチャートのステップ１１＿３に代え、図８の部分フローを採用してもよい。この場合も、モータの逆回転により、初期化動作のための出力軸の回動範囲を狭めたフローが実現する。
【０１０２】
図１４は、初期化動作を行なうにあたり演算制御部で実行されるプログラムのもう一つの例を示すフローチャートの前半部分である。このフローの後半部分は、図１２に示す部分フローと同一であり、図示は省略する。
【０１０３】
この図１４に示すフローは、図１０を参照して説明した、オンオフセンサパルス変動ステップΔθｚｒよりも基本パルス間隔Δθｅの方が大きい場合に適合するフローであるが、図１１、図１２に示すフローとは異なり、基本パルスとオンオフセンサパルスのいずれが先に発生してもよいように工夫されたフローである。
【０１０４】
ここでは、先ず、カウンタＮとＺがＮ＝Ｚ＝０にリセットされ（ステップ１４＿１）、モータの回転が開始される（ステップ１４＿２）。次いでＺ相パルスとオンオフセンサパルスとのいずれかが出力されるのを待つ（ステップ１４＿３，１４＿４）。Ｚ相パルスの方が先に出力されたときはフラグＦをＦ＝０にリセット（ステップ１４＿５）。オンオフセンサパルスの方が先に出力されたときはフラグＦをＦ＝１にセットし（ステップ１４＿６）、さらにいずれの場合もカウンタＺをインクリメントし（ステップ１４＿７，１４＿８）、ステップ１４＿９に進む。ステップ１４＿９では、フラグＦがＦ＝０かＦ＝１かが判定され、Ｆ＝０のときはステップ１４＿１０に進んでＺ相パルスが出力されたか否かが判定され、一方Ｆ＝１のときはステップ１４＿１１に進んでＺ相パルスが出力されたか否かが判定される。
【０１０５】
ステップ１４＿１０においてオンオフセンサパルスが出力されていないと判定されたとき、あるいはステップ１４＿１１においてＺ相パルスが出力されていないと判定されたときは、ステップ１４＿１２に進み、基本パルスが出力されたか否かが判定される。基本パルスが出力されていないときは、ステップ１４＿９に戻り、以上のパルス出力のモニタが繰り返される。
【０１０６】
ステップ１４＿１２において基本パルスの出力が確認されると、ステップ１４＿１３に進み、基本パルスカウント数がカウントアップされる。
【０１０７】
ステップ１４＿１０においてオンオフセンサパルスの出力が確認されたとき、あるいは、ステップ１４＿１１においてＺ相パルスの出力が確認されたときはステップ１４＿１４に進む。ステップ１４＿１４では、そのときの基本パルスの計数値ＮがＮ＿Ｎｅｗに記憶される。
【０１０８】
ステップ１４＿１５では、Ｚ＞１か否か、すなわち、今回が初回であるか２回目以降であるかが判定される。ここでは計数値どうしの比較を行なう必要があり、したがって基本パルスの計数を最低２回行なう必要があるためである。
【０１０９】
初回はＺ＝１であり、ステップ１４＿１５のあと直接にステップ１４＿１７に進んで基本パルスの計数値ＮがＮ＿Ｏｌｄに格納され、ステップ１４＿１８に進んだ後、Ｆ＝０にあるかＦ＝１であるかに応じてそれぞれステップ１４＿１７、ステップ１４＿２０に進み、それぞれ、Ｚ相パルスの出力、オンオフセンサパルスの出力を待ってそれぞれステップ１４＿７，１４＿８に戻る。
【０１１０】
２回目以降の場合（Ｚ＞２の場合）は、ステップ１４＿１５のあとステップ１４＿１６に進み、Ｎ＿ＯｌｄとＮ＿Ｎｅｗとの比較が行なわれる。それらが一致している（Ｎ＿Ｏｌｄ＝Ｎ＿Ｎｅｗ）ときは、ステップ１４＿１７に進み、今回求められた計数値ＮがＮ＿Ｏｌｄに格納される。一方、ステップ１４＿１６でＮ＿Ｏｌｄ＝Ｎ＿Ｎｅｗではない、すなわち、今回初めて、前回の計数値Ｎ＿Ｏｌｄと今回の計数値Ｎ＿Ｎｅｗが相違していたときは、図１２のステップ１２＿１に進む。
【０１１１】
図１２については説明済であり、重複説明は省略するが、図１２のステップ１２＿３における角度計算は、Ｆ＝０のときは、図１１のフローから図１２のフローに移ったときと同じアルゴリズムに基づいて行なわれ、一方、Ｆ＝１のときは、オンオフセンサパルスか発生が先であって、基本パルスの発生が後であるため、それに対応した計算アルゴリズムが採用される。この計算アルゴリズムの詳細は省略する。
【０１１２】
また、対応表を用いる場合は、Ｆ＝０に対応する対応表とＦ＝１に対応する対応表との双方があらかじめ用意される。
【０１１３】
次に本発明のもう１つの実施形態について説明する。
【０１１４】
図１５は、図２に示す位置検出装置に代えて採用することのできる位置検出装置を備えた関節機構を示す図である。図２に示す関節機構との相違点について説明する。
【０１１５】
図２に示す関節機構においては、ロータリエンコーダ３０は、モータ１０とともに基体に固定されていたが、図１５に示す関節機構では、ロータリエンコーダ３０は、減速機２０の出力軸２２に固定され、減速機２０の出力軸２２を基準としたときの入力軸２１の相対的な回転角度に応じたＺ相パルスおよびＡ相、Ｂ相パルスが出力される。
【０１１６】
また、オンオフセンサ４０を構成するスリット板４１は、モータ１０の回転軸１１に取り付けられている。この点、取付位置は異なるが、図２に示すオンオフセンサ４０のスリット板４１が入力軸２１に取り付けられていることと共通する。ただし、オンオフセンサ４０を構成するフォトカプラ４２は、図２に示す関節機構の場合は出力軸２２に固定されていたが、図１５に示す関節機構の場合はモータ１１に固定されている。このモータ１１は、図２の場合と同様基体に固定されているため、結局フォトカプラ４２は基体に固定されていることになる。
【０１１７】
すなわち、図１５に示す関節機構の場合、図２に示す関節機構と比べ、エンコーダ３０とオンオフセンサ４０の取付位置が逆になっている。この場合も、エンコーダ３０のＺ相パルスとオンオフセンサ４０のオンオフセンサパルスは出力軸の回動に伴なって相対的にずれるため、角度計算プログラムを若干変更するだけで、図２に示す関節機構の場合と同様な初期化動作、角度計算を行なうことができる。
【０１１８】
図１６は、各種パルスの生成タイミングを表す図である。図６の場合と同様、（Ａ），（Ｂ），（Ｃ）は、それぞれ、Ｚ相パルス、基本パルス、およびオンオフセンサパルスであり、横軸は減速機の入力軸（モータの回転軸）の回転角度である。
【０１１９】
図１６の、図６との主な相違点は、オンオフセンサパルスの横軸の位置Ａ、位置Ｂ、…、位置Ｘの表示が、図６のそれとは逆になっている点である。
【０１２０】
図２に示す関節機構の場合、モータ１０の回転軸１１を回転させたとき、オンオフセンサパルスの発生位置が、図６に示すＡ，Ｂ，Ｃ，…のように変化する場合、図１５に示す関節機構では、エンコーダ３０とオンオフセンサ４０の取付位置の違いから、モータの回転方向が同一ならばオンオフセンサパルスの発生位置は、図１６に示すＡ，Ｂ，Ｃ，…のように変化する。
【０１２１】
ここで、減速機の減速比がＲのとき、Ｚ相パルスの間隔を入力軸の回転角度であらわしたものをθｒとすれば
θｒ＝（３６０×Ｒ）／（Ｒ−１）［ｄｅｇ］
また、エンコーダの基本パルス間隔Δθｅを入力軸の回転角度で示すと
Δθｅ＝θｒ／Ｐ［ｄｅｇ］    （Ｐ：基本パルス数）
である。
【０１２２】
一方、オンオフセンサパルスどうしの間隔は常に入力軸の回転角度にて３６０［ｄｅｇ］である。このことから、図１６に示すようにＺ相パルスの発生位置を基準としてオンオフセンサパルスの位置変化を入力軸の回転角度であらわしたオンオフセンサパルス変動ステップΔθｚｒは、
Δθｚｒ＝３６０−θｒ＝−３６０／（Ｒ−１）［ｄｅｇ］
となる。すなわち、入力軸の回転に伴い、Ｚ相パルスとオンオフセンサパルスとの間隔は、毎回このΔθｚｒずつずれていく。式から分かるように、この変化分Δθｚｒは減速機の減速比Ｒで一意に定まる定数である。このΔθｚｒが、基本パルス間隔Δθｅ（図１６参照）より大きい場合、Ｚ相パルスの発生位置からの基本パルス数を計数することにより、オンオフセンサの、あるパルスが発生した位置Ａ（図１６参照）から、別のオンオフセンサパルスが発生した位置Ｘまでの入力軸の回転角度を知ることができる。すなわち、この或る位置Ａにおいて出力軸の絶対角度θｏを事前に専用の測定器でキャリブレーションしておけば、このキャリブレーション時と同じ方向に入力軸を回して、Ｚ相パルス発生後の、オンオフセンサパルスが発生した位置での出力軸の絶対角度を計算によって求めることができる。このＺ相パルスとオンオフセンサパルスの探索動作の入力軸回転量はオンオフセンサパルスが先に発生した場合を想定した最大の回転量の場合でも２０θｒで良い。すなわち、出力軸は２×３６０／（Ｒ−１）［ｄｅｇ］しか回転しないため、絶対位置を算出するための初期化の動作は局所的な微小回転領域だけで可能となる。
【０１２３】
以下に基本的な計算例を示す。
【０１２４】
前提条件：
基本パルス数Ｐ：５００［パルス／回転］
減速比  Ｒ：１００
或る位置Ａ（キャリブレーション位置）での出力軸絶対角度θｏ：１０．０００［ｄｅｇ］
（位置Ａはオンオフセンサパルスが発生した位置であり、この位置Ａにおける絶対角度は別途キャリアブレーションで求められている）
Ｚ相パルス発生から位置Ａまでの基本パルス数Ｎａ：８６［ｐｕｌｓｅ］
（上記パルス数をカウントしたときの入力軸回転方向を＋方向とする）
基本パルス角度
Δθｅ：３６０×１００／９９／５００［ｄｅｇ］
Ｚ相パルス間隔  θｒ：３６０×１００／９９［ｄｅｇ］
オンオフセンサパルス変動ステップΔθｚｒ：３６０／９９［ｄｅｇ］
（Ｚ相パルス位置を基準としたとき）
とする。
【０１２５】
任意の位置から入力軸を＋方向に回転させてＺ相パルスが発生した後のオンオフセンサパルス発生位置で止める。このときのＺ相パルスが発生した後、オンオフセンサパルス発生するまでの間の基本パルス数Ｎの計測結果が
Ｎ＝３５［ｐｕｌｓｅ］
であったとする。出力軸の、位置Ａからの概算回転角度は
0003967014.tif 000002
である。
【０１２６】
位置Ａからみたときのオンオフセンサパルスの発生回数を計算すると
−３７．０９／Δθｚｒ＝１０．２  ［回］
現在位置はオンオフセンサパルスが発生した位置にあるので０．２は量子化誤差であり位置Ａからみて１０回目のオンオフセンサパルスが発生した位置にいるはずである（最も近い整数値を回数として判断する）。
【０１２７】
よって位置Ａからの入力軸の回転量は
Δθｉ＝１０×３６０
であり出力軸の回転量Δθｏは
0003967014.tif 000003
よって現在の出力軸の絶対角度θは
θ＝θｏ＋Δθｏ＝１０．０００＋３６．０＝４６．０［ｄｅｇ］
である。
【０１２８】
ここでは図示は省略するが、図２に示す関節機構に関し図１０を参照して説明したように、Ｚ相パルスからのオンオフセンサパルスの発生位置の変動がエンコーダの基本パルスの間隔より小さい場合は、基本パルスの計数値ではその変動は識別できない。そこで、さらに入力軸を回転させてＺ相パルス〜オンオフセンサパルス間の基本パルス数を複数回求め、この基本パルスの計数値が最初に変化した時のオンオフセンサパルス発生位置で出力軸を停止する。図１０を参照して説明した場合と同様に、事前に行うキャリブレーションも、この基本パルス数が最初に変化した時のオンオフセンサパルス発生位置で出力軸を停止して行い、その時の出力軸の絶対角度θｏとＺ相パルス発生位置〜オンオフセンサパルス発生位置間の基本パルス数を保有しておき、その場で求めたＺ相パルス発生位置〜オンオフセンサパルス発生位置間の基本パルス数との差を求める。このパルス数の差（Ｎａ−Ｎ）を角度に変換すると
Δθｏ＝Δθｅ×（Ｎａ−Ｎ）
であるから現時点での出力軸の絶対角度は
θ＝θｏ＋Δθｏ＝θｏ＋Δθｅ×（Ｎａ−Ｎ）
である。ここで、Δθｅは、基本パルスの発生間隔を出力軸の角度であらわしたものであり、図１５に示す実施形態の場合エンコーダが出力軸に付いているため、図２に示す実施形態と比べ、この出力軸の回転分だけ異なる。この出力軸の回転分を加味したΔθｅは本説明ですでに示した式
θｒ＝（３６０×Ｒ）／（Ｒ−１）  ［ｄｅｇ］
Δθｅ＝θｒ／Ｐ  ［ｄｅｇ］
で求めることができる。
【０１２９】
以下に具体的な計算例を示す。
【０１３０】
前提条件：
エンコーダ基本パルス数  Ｐ：１００［パルス／回転］
減速比  Ｒ：５００
或る位置Ａ（キャリブレーション位置）での出力軸絶対角度θｏ：１０．０００［ｄｅｇ］
（位置ＡはＺ相パルス〜オンオフセンサパルス間の基本パルス数が最初に変化したタイミングにおけるオンオフセンサパルス発生位置であって、この位置Ａの絶対角度はキャリブレーションで別途求められている。）
Ｎａ−Ｎ＝５１  ［パルス］
とする。
【０１３１】
0003967014.tif 000004
したがって出力軸絶対角度θは、
0003967014.tif 000005
となる。
【０１３２】
尚、ここには、図１５に示す実施形態については、オンオフセンサパルスよりもＺ相パルスの方が先に発生した場合の角度計算アルゴリズムについて説明したが、オンオフセンサパルスの方が先行した場合も若干異なる計算アルゴリズムを採用し、出力軸の角度計算を行なうことができる。
【０１３３】
また、図１５に示す実施形態における演算制御部５０では、これまで説明してきた、図２に示す演算制御部５０で実行される初期化のためのプログラムをそのまま採用することができる。但し角度計算アルゴリズムは、エンコーダ３０とオンオフセンサ４０の取付位置が逆になっていることに伴って変更された角度計算アルゴリズムが採用される。
【０１３４】
【発明の効果】
以上説明したように、本発明によれば、安価な装置で、出力軸を僅かに回動させるだけで基体に対する出力軸の回動角度を検出することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態としての位置検出装置および関節機構を備えたロボットの一例を示す模式図である。
【図２】図１に示す作業ロボットの各関節に配置されるモータ、減速機、および、減速機の出力軸の回動位置の演算とモータの回転制御を担う演算制御部を示す模式図である。
【図３】図２にブロックで示すロータリエンコーダの内部構造を示す模式図である。
【図４】オンオフセンサの構成を示す模式図である。
【図５】図２に１つのブロックで示す演算制御部の内部構成図である。
【図６】各種パルス信号の生成タイミングを示す図である。
【図７】初期化動作を行なう際に演算処理部で実行されるプログラムをあらわしたフローチャートである。
【図８】オンオフパルスが先に発生したときにはモータを逆転させるというアルゴリズムを実現するプログラムの、図７に示すプログラムからの変更部分を示す部分フローチャートである。
【図９】演算制御部で実行される初期化動作プログラムのもう一つの例を示すフローチャートである。
【図１０】オンオフセンサパルス変動ステップΔθｚｒよりも基本パルス間隔Δθｅの方が大きい場合の、各種パルス信号の生成タイミングを示す図である。
【図１１】演算制御部で実行されるプログラムをあらわしたフローチャートの前半部分である。
【図１２】演算制御部で実行されるプログラムをあらわしたフローチャートの後半部分である。
【図１３】基本パルスの計数値Ｎと図１０に示す位置Ａからのオンオフセンサパルスのパルス数Ｋとの対応表の概念図である。
【図１４】初期化動作を行なうにあたり演算制御部で実行されるプログラムのもう一つの例を示すフローチャートの前半部分である。
【図１５】図２に示す位置検出装置に代えて採用することのできる位置検出装置を備えた関節機構を示す図である。
【図１６】各種パルスの生成タイミングを表す図である。
【符号の説明】
１  ベース
２＿１，２＿２，２＿３  アーム
３＿１，３＿２，３＿３  関節
４  ハンド
５  作業対象物
１０  モータ
１１  回転軸
２０  減速機
２１  入力軸
２２  出力軸
３０  エンコーダ
３１  固定ベース
３２  スリット板
３３,３４  スリット
３５  Ｚ相検出センサ
３６  Ａ相、Ｂ相検出センサ
４０  オンオフセンサ
４１  スリット板
４２  フォトカプラ
４３  スリット
５０  演算制御部
５１  ＣＰＵ
５２  入力インターフェース
５３  出力インターフェース
５４  ＲＯＭ
５５  ＲＡＭ
５６  操作部
【図１】
0003967014.tif 000006
【図２】
0003967014.tif 000007
【図３】
0003967014.tif 000008
【図４】
0003967014.tif 000009
【図５】
0003967014.tif 000010
【図６】
0003967014.tif 000011
【図７】
0003967014.tif 000012
【図８】
0003967014.tif 000013
【図９】
0003967014.tif 000014
【図１０】
0003967014.tif 000015
【図１１】
0003967014.tif 000016
【図１２】
0003967014.tif 000017
【図１３】
0003967014.tif 000018
【図１４】
0003967014.tif 000019
【図１５】
0003967014.tif 000020
【図１６】
0003967014.tif 000021