(57)【要約】【課題】様々なタイプの機械において共通の計算を行え、計算量の少ない制御方法等を提供する。【解決手段】互いに相対的に移動可能な主軸頭２及びテーブル３を備えた機械において、幾何学的な誤差を補償するための補償値が適用された複数の指令値を用いてこれらの移動を制御するにあたり、主軸頭２側における回転軸の有無ないし有る場合のつながり順番を示す第１インデックスと、テーブル３側における回転軸の有無ないし有る場合のつながり順番を示す第２インデックスとを有し、第１インデックスの示す回転軸の有無ないしつながり順番に従ってテーブル３の座標系における指令値をマトリックス演算して第１ベクトルを求めると共に、第２インデックスの示す回転軸の有無ないしつながり順番に従って主軸頭２の基準ベクトルをマトリックス演算して第２ベクトルを求め、第１ベクトルと第２ベクトルを合算する。【選択図】図１
2013065254.tif 000002
【特許請求の範囲】
【請求項１】
互いに相対的に移動可能な第１移動部及び第２移動部を備えた機械において、これらのうちの何れかに、少なくとも２つの並進軸と、少なくとも１つの回転軸がそれぞれ配置され、前記機械の幾何学的な誤差を補償するための補償値が適用された複数の指令値を用いて前記第１移動部及び／又は第２移動部の移動を制御する制御方法であって、
第１移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第１インデックスと、
第２移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第２インデックスとを有し、
前記第１インデックスの示す前記回転軸の有無ないしつながり順番に従って、第２移動部の座標系における前記指令値をマトリックス演算して第１ベクトルを求めると共に、
前記第２インデックスの示す前記回転軸の有無ないしつながり順番に従って、第１移動部の基準ベクトルをマトリックス演算して第２ベクトルを求め、
前記第１ベクトルと前記第２ベクトルを合算することで前記補償値が適用された前記指令値とする
ことを特徴とする機械の移動部の制御方法。
【請求項２】
前記並進軸が直交していない場合に、前記並進軸の相対角度を表すマトリックスを、前記補償値が適用された前記指令値に対して乗算し、前記補償値が適用された指令値を更新することを特徴とする請求項１に記載の機械の移動部の制御方法。
【請求項３】
互いに相対的に移動可能な第１移動部及び第２移動部を備えた機械において、これらのうちの何れかに、少なくとも２つの並進軸と、少なくとも１つの回転軸がそれぞれ配置され、前記機械の幾何学的な誤差を補償するための補償値が適用された複数の指令値を用いて前記第１移動部及び／又は第２移動部の移動を制御する制御方法であって、
第１移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第１インデックスと、
第２移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第２インデックスとを有し、
前記第１インデックスの要素毎に計算処理を場合分けし、前記第１インデックスの回転軸の有無ないしつながり順番に従って、第２移動部の座標系における前記指令値に対して前記場合分けされた計算処理を行って第１ベクトルを求めると共に、
前記第２インデックスの要素毎に計算処理を場合分けし、前記第２インデックスの回転軸の有無ないしつながり順番に従って、第１移動部の基準ベクトルに対して前記場合分けされた計算処理を行って第２ベクトルを求め、
前記第１ベクトルと前記第２ベクトルを合算することで前記補償値が適用された前記指令値とする
ことを特徴とする機械の移動部の制御方法。
【請求項４】
前記並進軸が直交していない場合に、前記並進軸の相対角度を用いて前記補償値が適用された前記指令値を変換して更新することを特徴とする請求項３に記載の機械の移動部の制御方法。
【請求項５】
機械は工作機械であり、
第１移動部は工具を装着可能な主軸であり、
第２移動部はワークを載置可能なテーブルである
ことを特徴とする請求項１ないし請求項４の何れかに記載の機械の移動部の制御方法。
【請求項６】
請求項１ないし請求項５の何れかに記載の機械の移動部の制御方法を、コンピュータに実行させるための機械の移動部の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並進あるいは回転運動可能な移動部を有する機械における当該移動体の移動制御にあって、機械の幾何学的な誤差を補償した指令値を演算する方法ないしプログラムに関するものである。
【背景技術】
【０００２】
図１は当該工作機械の一例である、３つの並進軸と２つの回転軸を有する工作機械（５軸制御マシニングセンタ、５軸機）の模式図である。主軸頭２は、互いに直交する２つの並進軸（Ｘ軸・Ｚ軸）によって、ベッド１に対して並進２自由度の運動が可能である。テーブル３は、２つの回転軸（Ａ軸・Ｃ軸）及び１つの並進軸（Ｙ軸）を含むトラニオンユニット４によって、回転２自由度及び並進１自由度の運動が可能である。Ａ軸及びＣ軸は互いに直交し、Ｙ軸はＸ軸及びＺ軸に直交する。各軸は数値制御装置により制御されるサーボモータ（図示せず）により駆動され、この５軸機では、このような各軸の駆動により、主軸頭２に装着される工具を用いて、テーブル３に固定される被加工物（ワーク）を任意の形状に加工することが可能である。
【０００３】
前記５軸機の動作指令方法として、各駆動軸の指令値を与える方法がある。この方法では、回転軸によりワークを回転させた場合、ワーク上の加工点も回転することから、実用的な加工精度を確保するには、この回転を考慮した並進軸の指令値が必要になる。このような並進軸の指令値を求めるためには、座標変換等の複雑な計算を要するため、一般的にはＣＡＭ等によって指令値を計算させて用いている。
【０００４】
別の動作指令方法としては、前記工具の先端点と傾きを指令値として与える方法がある。数値制御装置が前記工具先端点と傾きを各駆動軸指令値に変換する、いわゆる工具先端点制御であるが、この指令方法を用いれば、複雑な座標変換等の計算を数値制御装置が行うため、指令値を簡単に作成できる。
【０００５】
一方、前記５軸機の運動精度、及び運動精度が転写されるワークの形状精度に影響を及ぼす要因の一つとして、例えば、回転軸と並進軸の平行度や各回転軸間の回転中心の不一致等、５軸機の製造・組立により発生する各軸間の幾何学的な誤差（以下「幾何誤差」と呼ぶ）が大きな割合を占める場合がある。この幾何誤差を製造上無くすことは非常に困難であり、この幾何誤差を補償する手段として、特許文献１のような制御方法が提案されている。即ち、工具とワークの相対関係が誤差のない機械と同じになるような各軸の誤差補償指令値を、回転軸の中心ズレや傾き誤差を考慮して、工具先端点と傾きの指令値からマトリックスを用いた計算により求め、この誤差補償指令値により各軸を駆動することで幾何誤差を補償している。
【０００６】
この誤差補償指令値を計算する方法において、５軸機の軸構成の違いによって、テーブル回転型、主軸回転型、主軸・テーブル混合型と３タイプに分けて各機械タイプについてそれぞれ計算式を用意している。テーブル回転型は、テーブル側に回転軸を２軸有するタイプであり、図１の形態の５軸制御工作機械がその一例である。主軸回転型は、主軸側に回転軸を２軸有するタイプである。
【０００７】
図２は主軸回転型５軸機の一例の模式図である。主軸頭１２は、並進軸であり互いに直交するＹ軸・Ｚ軸によってベッド１１に対して並進２自由度の運動が可能であり、更にユニバーサルヘッド１４に内蔵され互いに直交した回転軸であるＢ軸・Ｃ軸によって回転２自由度の運動が可能である。一方、テーブル１３は、並進軸でありＹ軸・Ｚ軸に直交するＸ軸により、ベッド１１に対して並進１自由度の運動が可能である。各軸は、ＮＣ装置により制御されるサーボモータ（図示せず）により駆動され、主軸回転型５軸機では、このような駆動により、主軸頭１２に装着される工具を用いて、テーブル１３に固定されるワークを任意の形状に加工することができる。
【０００８】
図３は主軸・テーブル混合型５軸機の一例の模式図である。主軸・テーブル混合型は主軸側、回転軸側にそれぞれ回転軸を１軸ずつ有するタイプである。主軸頭２２は、並進軸であるＸ軸・Ｙ軸・Ｚ軸によって、ベッド２１に対して並進３自由度の運動が可能であり、更に旋回ヘッド２４に内蔵された回転軸であるＢ軸によって、回転１自由度の運動が可能である。一方、テーブル２３は、ベッド２１に取り付けられている回転軸（Ｃ軸）の周りで回転１自由度の運動が可能である。各軸はＮＣ装置により制御されるサーボモータ（図示せず）により駆動され、主軸・テーブル混合型５軸機では、主軸頭２２に装着される工具を用いて、テーブル２３に固定されるワークを任意の形状に加工することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−２７２８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１のものでは、前記各機械タイプによって計算式を用意する必要があることから、汎用性がなく、機械タイプ毎に異なる実装や管理を施さなければならず、煩わしい。
【００１１】
更に、それぞれの計算においては、次に示す［数１］のように、４行４列のマトリックスと４行１列のマトリックスの乗算を行っているが、この計算では、加算を１２回、乗算を１６回行う必要があり、計算量が非常に多いものとなっている。
【００１２】
【数１】
2013065254.tif 000003
【００１３】
しかも、このような計算は、実際に必要な最小限の計算に比べて多大なものとなっている。即ち、実際の計算において、例えば並進運動のマトリックス計算を行う場合、次の［数２］のように加算３回のみを行うだけで良い。従って、このような計算は、無駄な加算・乗算を行う非常に効率の悪いものであり、処理能力の高いＣＰＵを必要とする等コスト高となり処理速度の低下を招くという課題がある。
【００１４】
【数２】
2013065254.tif 000004
【００１５】
そこで、本発明のうち、請求項１〜５，６に記載のものでは、５軸機（工作機械）を始めとする機械において、様々なタイプの機械において共通の計算を行えると共に、計算量を少なくでき、効率の良い計算が可能である制御方法，プログラムを提供することを目的とする。なお、特に請求項２，４に記載の発明では、更に並進軸が互いに直交していなくても指令値の計算を可能とすることも目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、請求項１に記載の発明は、互いに相対的に移動可能な第１移動部及び第２移動部を備えた機械において、これらのうちの何れかに、少なくとも２つの並進軸と、少なくとも１つの回転軸がそれぞれ配置され、前記機械の幾何学的な誤差を補償するための補償値が適用された複数の指令値を用いて前記第１移動部及び／又は第２移動部の移動を制御する制御方法であって、第１移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第１インデックスと、第２移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第２インデックスとを有し、前記第１インデックスの示す前記回転軸の有無ないしつながり順番に従って、第２移動部の座標系における前記指令値をマトリックス演算して第１ベクトルを求めると共に、前記第２インデックスの示す前記回転軸の有無ないしつながり順番に従って、第１移動部の基準ベクトルをマトリックス演算して第２ベクトルを求め、前記第１ベクトルと前記第２ベクトルを合算することで前記補償値が適用された前記指令値とすることを特徴とするものである。
【００１７】
請求項２に記載の発明は、上記発明にあって、前記並進軸が直交していない場合に、前記並進軸の相対角度を表すマトリックスを、前記補償値が適用された前記指令値に対して乗算し、前記補償値が適用された指令値を更新することを特徴とするものである。
【００１８】
請求項３に記載の発明は、互いに相対的に移動可能な第１移動部及び第２移動部を備えた機械において、これらのうちの何れかに、少なくとも２つの並進軸と、少なくとも１つの回転軸がそれぞれ配置され、前記機械の幾何学的な誤差を補償するための補償値が適用された複数の指令値を用いて前記第１移動部及び／又は第２移動部の移動を制御する制御方法であって、第１移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第１インデックスと、第２移動部側における前記回転軸の有無ないし有る場合のつながり順番を示す第２インデックスとを有し、前記第１インデックスの要素毎に計算処理を場合分けし、前記第１インデックスの回転軸の有無ないしつながり順番に従って、第２移動部の座標系における前記指令値に対して前記場合分けされた計算処理を行って第１ベクトルを求めると共に、前記第２インデックスの要素毎に計算処理を場合分けし、前記第２インデックスの回転軸の有無ないしつながり順番に従って、第１移動部の基準ベクトルに対して前記場合分けされた計算処理を行って第２ベクトルを求め、前記第１ベクトルと前記第２ベクトルを合算することで前記補償値が適用された前記指令値とすることを特徴とするものである。
【００１９】
請求項４に記載の発明は、上記発明にあって、前記並進軸が直交していない場合に、前記並進軸の相対角度を用いて前記補償値が適用された前記指令値を変換して更新することを特徴とするものである。
【００２０】
請求項５に記載の発明は、上記発明にあって、機械は工作機械であり、第１移動部は工具を装着可能な主軸であり、第２移動部はワークを載置可能なテーブルであることを特徴とするものである。
【００２１】
上記目的を達成するために、請求項６に記載の発明は、上記の機械の移動部の制御方法をコンピュータに実行させるための機械の移動部制御プログラムであることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、様々なタイプの工作機械において共通の計算を行え、タイプ毎に計算式を用意する必要がなくなり汎用的にでき、用意していないタイプの機械にも対応できるようになって、導入や管理を容易に行える。又、並進軸が互いに直交していなくても指令値の計算が可能となるし、計算量を少なくでき、効率の良い計算が可能になり、処理能力が低く安価なＣＰＵを採用することができるようになる。
【図面の簡単な説明】
【００２３】
【図１】テーブル回転型５軸機の模式図である。
【図２】主軸回転型５軸機の模式図である。
【図３】主軸・テーブル混合型５軸機の模式図である。
【図４】軸の関係を示す模式図である。
【図５】図１の機械に対応するリンクの記憶状況（回転軸のつながり）を表す模式図である。
【図６】図２の機械に対応するリンクの記憶状況（回転軸のつながり）を表す模式図である。
【図７】機械座標系のＸ，Ｙ，Ｚ軸周りの順番で回転させる場合におけるリンク（ワーク基準座標系の回転順番を示すＯリンク）の記憶状況を表す模式図である。
【図８】第２形態に係る誤差補償指令値の計算に関するフローチャートである。
【図９】図８のステップＳ１の詳細（Ｏリンクに従ったワーク基準座標系の回転計算処理）を表すフローチャートである。
【図１０】図８のステップＳ２の詳細（Ｐｗｌ’の計算処理）を表すフローチャートである。
【図１１】図８のステップＳ４の詳細（Ｐｔｌ’の計算処理）を表すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明に係る実施の形態の例として、３つの並進軸（Ｘ軸・Ｙ軸・Ｚ軸）と２つの回転軸（Ｒ１軸・Ｒ２軸）を有する５軸機について説明する（第１形態及び第２形態）。このような５軸機は、第１移動部としての主軸（頭）と、第２移動部としてのテーブルを有し、主軸やテーブルは、当該並進軸や回転軸が適宜配置されることにより、並進移動や回転移動をする。又、このような５軸機にあっては、図１〜３で示す各種のタイプが存在する。図１で示すタイプは、Ｒ１軸・Ｒ２軸としてテーブル側のＣ軸・Ａ軸が相当し、図２で示すタイプは、Ｒ１軸・Ｒ２軸として主軸側のＢ軸・Ｃ軸が相当し、図３で示すタイプは、Ｒ１軸・Ｒ２軸として主軸側のＢ軸・テーブル側のＣ軸が相当する。
【００２５】
これら工作機械は、それぞれ図示しない制御装置（コンピュータ）を有しており、当該制御装置が出力する各種指令値に応じて対応する軸が駆動される。制御装置は、記憶手段を含んでおり、当該記憶手段は、揮発性若しくは不揮発性のメモリ、又はこれらの組合せ等により構成される。記憶手段には、指令値の適切な計算等を行うためのプログラムが格納されている。なお、工作機械として、３つの並進軸と２つの回転軸を有する５軸機以外の５軸機を用いても良いし、５軸以外の機械を用いても良い。又、工作機械として、マシニングセンタ（図１〜３）に代えて、旋盤、複合加工機、研削盤等を採用することができる。更に、工作機械に限らず、ロボット、産業機械、建築機械等の各種機械に適用しても良い。
【００２６】
［第１形態］
ワークとテーブルの間に配置される回転軸の種類につきワーク側から並べた組をＷリンクと呼ぶことにする。換言すれば、Ｗリンクは、ワークからテーブル側への回転軸へのつながり順番を表す（第１インデックス）。例えば、回転軸がテーブル側に２軸ともあり、ワーク、Ｒ１軸、Ｒ２軸の順番である場合、Ｗリンクは［Ｒ１，Ｒ２］となり、Ｗリンクの要素はＲ１及びＲ２となる。一方、回転軸がテーブル側にＲ１軸だけの場合、Ｗリンクは［Ｒ１］となり、Ｗリンクの要素はＲ１となる。他方、テーブル側に回転軸がない場合、Ｗリンクは０となり、Ｗリンクの要素はなしとなる。
【００２７】
一方、主軸と機械本体の間に配置される回転軸の種類につき主軸側から並べた組をＴリンクと呼ぶことにする。換言すれば、Ｔリンクは、主軸からの回転軸のつながり順番を表す（第２インデックス）。例えば、回転軸が主軸側に２軸ともあり、主軸、Ｒ１軸、Ｒ２軸の順番である場合、Ｔリンクは［Ｒ１，Ｒ２］となり、Ｔリンクの要素はＲ１及びＲ２となる。一方、回転軸が主軸側にＲ２軸だけの場合、Ｔリンクは［Ｒ２］となり、Ｔリンクの要素はＲ２となる。他方、主軸側に回転軸がない場合、Ｔリンクは０となり、Ｔリンクの要素はなしとなる。
【００２８】
前記機械に幾何誤差がない場合について説明する。工具先端点座標指令値をＰ（ｘ，ｙ，ｚ）とし、工具の傾き指令値を回転軸の指令値で表すこととして、各回転軸の指令値をＲ１軸につきｒ１、Ｒ２軸につきｒ２とする。一方、Ｗリンクの要素がＲ１及びＲ２の場合、Ｗリンクに従った変換行列Ｍｗｌは次の［数３］となる。Ｗリンクに従うことは、換言すれば、Ｗリンクの要素の順番通り、Ｒ１に関する行列（Ｒ１に対応する回転変換行列、後述）をまず演算対象とし、次いでＲ２に関する行列（Ｒ２に対応する回転変換行列、後述）をＲ１に関する行列とにおいて演算するために、Ｒ２を前側に配置して被乗算行列として、行列の乗算を行うことを意味し、式での順番はＷリンクの要素の順番と逆となる。なお、回転軸が３つ以上の場合でも、ここでの場合と同様に、式での順番を丁度逆にする（式の右から辿るとＷリンクの要素の順序と同じとなる）。
【００２９】
【数３】
2013065254.tif 000005
【００３０】
ここで、変換行列Ｍ１ｏｉとＭ２ｏｉはそれぞれ、機械座標系におけるＲ１軸，Ｒ２軸の回転中心位置Ｄ１（ｘ１，ｙ１，ｚ１），Ｄ２（ｘ２，ｙ２，ｚ２）を考慮した回転変換行列であり、下記［数４］，［数５］から求めることができる。
【００３１】
【数４】
2013065254.tif 000006
【数５】
2013065254.tif 000007
【００３２】
［数４］，［数５］における変換行列Ｍ１，Ｍ２は、回転軸Ｒ１、Ｒ２がＸ，Ｙ，Ｚ軸と平行なＡ，Ｂ，Ｃ軸周りの回転行列の何れかであり、それぞれの回転軸指令値をａ，ｂ，ｃとすると、次の［数６］の変換行列Ｍａ，Ｍｂ，Ｍｃの何れかを選択する。
【００３３】
【数６】
2013065254.tif 000008
【００３４】
若しくは、回転軸の回転軸ベクトルをＲｖ（λ，μ，ν）とし、回転軸の指令値をθとした場合、次の［数７］の変換行列Ｍωを選択する。
【００３５】
【数７】
2013065254.tif 000009
【００３６】
要素がＲ１のみ若しくはＲ２のみの場合、変換行列ＭｗｌはＭ１ｏｉ若しくはＭ２ｏｉとなり、Ｗリンクの要素がない場合は単位行列Ｉとなる。
【００３７】
一方、Ｔリンクの要素がＲ１及びＲ２の場合、Ｔリンクに従った変換行列Ｍｔｌは次の［数８］となる。Ｔリンク［Ｒ１，Ｒ２］に従うので、変換行列Ｍｔｌは、Ｒ２に係る変換行列とＲ１に係る変換行列をこの順で乗算して算出されるものとなる。
【００３８】
【数８】
2013065254.tif 000010
【００３９】
ここで、変換行列Ｍ１ｏとＭ２ｏはそれぞれ、下記［数９］，［数１０］から求めることができる。
【００４０】
【数９】
2013065254.tif 000011
【数１０】
2013065254.tif 000012
【００４１】
一方、Ｔリンクの要素がＲ１のみ若しくはＲ２のみの場合、変換行列Ｍｔｌは、Ｍ１ｏ若しくはＭ２ｏとなり、要素がない場合は単位行列Ｉとなる。
【００４２】
各駆動軸の基準となる機械座標系に対するワークの基準座標系の原点をＰｗ（ｘｗ，ｙｗ，ｚｗ）とし、ワーク基準座標系を機械座標系のＸ，Ｙ，Ｚ軸に対してそれぞれａｗ、ｂｗ、ｃｗだけ回転させるとすると、機械座標系上の先端点指令値Ｐｏ’は次の［数１１］となる。
【００４３】
【数１１】
2013065254.tif 000013
【００４４】
ここで、変換行列Ｍｗは、下記［数１２］で求めることができる。ただしＭａｗ，Ｍｂｗ，Ｍｃｗの掛け合わせる順番を変更しても良い。
【００４５】
【数１２】
2013065254.tif 000014
【００４６】
更に、テーブル側回転軸により回転された機械座標系上の先端点指令値Ｐｗｌは、次の［数１３］となる。
【００４７】
【数１３】
2013065254.tif 000015
【００４８】
一方、工具長をｔとすると、主軸側回転軸により回転された回転軸基準点Ｐｔｌは次の［数１４］となる。
【００４９】
【数１４】
2013065254.tif 000016
【００５０】
次に、機械座標系でのＸ，Ｙ，Ｚ軸の指令値Ｐｍ（ｘｍ，ｙｍ，ｚｍ）は、下記［数１５］から求めることができる。
【００５１】
【数１５】
2013065254.tif 000017
【００５２】
更に、Ｘ，Ｙ，Ｚ軸の指令値Ｐｎ（Ｘ，Ｙ，Ｚ）は、次の［数１６］から求める。
【００５３】
【数１６】
2013065254.tif 000018
【００５４】
ここで、τは並進軸の関係を表すものであり、各並進軸が直交している場合は単位行列Ｉとなる。図３の機械の場合、Ｘ軸とＹ軸は直交しておらず、図４に示すようにθだけ傾いている。この場合のτは下記［数１７］となる。
【００５５】
【数１７】
2013065254.tif 000019
【００５６】
次に、機械に幾何誤差が存在する場合について説明する。幾何誤差としては、主軸（工具）の傾き誤差ωｔ（αｔ，βｔ，γｔ）、主軸（工具）の位置誤差δｔ（δｘｔ，δｙｔ，δｚｔ）、各回転軸の中心位置誤差δ１（δｘ１，δｙ１，δｚ１）、δ２（δｘ２，δｙ２，δｚ２）、各回転軸の回転軸ベクトル傾き誤差ω１（α１，β１，γ１）、ω２(α２，β２，γ２)を考えることにする。Ｗリンクの要素がＲ１、Ｒ２の場合、Ｗリンク（の要素の順番）に従った幾何誤差を考慮した変換行列Ｍｗｌ’は下記［数１８］となる。
【００５７】
【数１８】
2013065254.tif 000020
【００５８】
ここで、変換行列Ｍ１ｏｉ’とＭ２ｏｉ’はそれぞれ、次に示す［数１９］，［数２０］から求めることができる。
【００５９】
【数１９】
2013065254.tif 000021
【数２０】
2013065254.tif 000022
【００６０】
変換行列Ｍ１’は下記［数２１］の変換行列Ｍａ１，Ｍｂ１，Ｍｃ１、変換行列Ｍ２’は［数２２］の変換行列Ｍａ２，Ｍｂ２，Ｍｃ２のいずれかを選択する。
【００６１】
【数２１】
2013065254.tif 000023
【数２２】
2013065254.tif 000024
【００６２】
若しくは、回転軸の傾き誤差ω１、ω２の代わりに、傾き誤差を含んだ回転軸の回転軸ベクトルＲｖ’（λ’，μ’，ν’)を用いて、下記［数２３］の変換行列Ｍω’を選択する。
【００６３】
【数２３】
2013065254.tif 000025
【００６４】
一方、Ｔリンクの要素がＲ１及びＲ２の場合、Ｔリンクに従った幾何誤差を考慮した変換行列Ｍｔｌ’は次の［数２４］となる。
【００６５】
【数２４】
2013065254.tif 000026
【００６６】
ここで、変換行列Ｍ１ｏ’とＭ２ｏ’はそれぞれ、下記［数２５］，［数２６］から求めることができる。
【００６７】
【数２５】
2013065254.tif 000027
【数２６】
2013065254.tif 000028
【００６８】
以上から、幾何誤差を考慮してテーブル側回転軸により回転された機械座標系上の先端点指令値Ｐｗｌ’（第１ベクトル）は、下記［数２７］から求めることができる。
【００６９】
【数２７】
2013065254.tif 000029
【００７０】
一方、主軸の傾き誤差（αｓ，βｓ，γｓ）、位置誤差（δｘｓ，δｙｓ，δｚｓ）がある場合の回転軸基準点Ｐｔ’（回転軸基準ベクトル）は下記［数２８］となる。回転軸基準点Ｐｔ’は、下記［数２８］の演算により、主軸の各種幾何的誤差を打ち消した基準点となり、当該幾何学的誤差の補償を適用したものとなる。
【００７１】
【数２８】
2013065254.tif 000030
【００７２】
更に、幾何誤差を考慮して主軸側回転軸により回転された回転軸基準点Ｐｔｌ’（第２ベクトル）は次の［数２９］となる。
【００７３】
【数２９】
2013065254.tif 000031
【００７４】
従って、幾何誤差を考慮したＸ，Ｙ，Ｚ軸の指令値Ｐｎ’(Ｘ’，Ｙ’，Ｚ’）は、下記［数３０］から求めることができる。
【００７５】
【数３０】
2013065254.tif 000032
【００７６】
［第２形態］
第１形態において、Ｗリンク及びＴリンクの各要素に従いマトリックス（行列）乗算を行っているが、このマトリックス乗算に代えて、以下に説明するような、当該要素毎に分類し場合分けした計算を行う。従って、本形態において、マトリックス計算は行われない。
【００７７】
まず作動前の予備状態につき説明する。図１の５軸機のように２つの回転軸が何れもテーブル側にある場合、テーブル側の１番目の回転軸をＲ１、２番目の回転軸をＲ２とすると、Ｗリンクは、図５のように制御装置の記憶手段に記憶されている。又、主軸側に回転軸がない場合でもあるため、Ｔリンクには回転軸がないことを示す記号（図中では模式的に「−」で示す）が記録される。
【００７８】
一方、図２の５軸機のように２つの回転軸が何れも主軸側にある場合、主軸側の１番目の回転軸をＲ１、２番目の回転軸をＲ２とすると、Ｔリンクは図６のように記録される。又、テーブル側に回転軸がない場合でもあるため、Ｗリンクには回転軸がないことを示す記号（図中では模式的に「−」で示す）が記録される。
【００７９】
又、ワーク基準座標系の回転順番、回転角や原点は、予め記憶手段に記憶しておく。例えば、機械座標系のＸ，Ｙ，Ｚ軸周りの順番で回転させる場合、回転順番を示すＯリンクの要素は、図７に示すように記録される。ここで、Ｗａ，Ｗｂ，ＷｃはそれぞれＸ，Ｙ，Ｚ軸周りのワーク基準座標系回転変換を示す。又、各回転角における三角関数（ｃｏｓ，ｓｉｎ）の値を予め計算して、回転角と関数値とで関係づけた状態で記憶手段に記憶しておく。
【００８０】
これらの、機械タイプに合わせて記憶手段に記録されているＷリンク・Ｔリンクの要素や、Ｏリンクないし三角関数値を、制御装置のプログラム（機械タイプにかかわらず共通）において読み込んでおく。
【００８１】
そして、主に図８に示すように、誤差補償指令値の計算を行う。なお、ステップＳ１等を単にＳ１等という。
【００８２】
始めに、ワーク基準座標系の並進・回転によりワーク基準座標系上の点である工具先端点指令値から機械座標系上の点Ｐｏ’を求める（Ｓ１）。この計算の詳細な手順につき図９を用いて説明する。
【００８３】
工具先端点指令値ＰｏをＰｗｌ’（ｘｗｌ，ｙｗｌ，ｚｗｌ）に代入する（Ｓ１１）。次にＯリンクの要素数の回数だけ要素の順番に従って要素毎に以下の計算を行い、ワーク基準座標系の回転を行う。即ち、制御装置は、Ｏリンクの記憶（要素数や記憶順）により、その要素数や順序について把握することができるところ、まずＳ１２でカウンタｉの初期化をする。次いで、Ｓ１３でカウンタｉが要素数を超えていないか判断する。超えていなければ、Ｓ１３でＹｅｓであるから、Ｓ１４に移行し要素の種類に応じて計算処理をＳ１５〜Ｓ１７の何れかに振り分ける。制御装置は、何れかの計算処理後、カウンタｉを１増加すると共に（Ｓ１８）、Ｓ１３に戻って適宜処理を繰り返す。一方、Ｓ１３でＮｏとなると、指令値の更新をして（Ｓ１９）、処理を一旦終了する。なお、処理の繰り返しにつきカウンタを用いずフラグを用いるものとする等、各種処理を形式の異なるものに変更することができる。
【００８４】
上記の例では、まずＷａの場合、Ｐｗｌ’のＹ，Ｚ成分であるｙｗｌ，ｚｗｌに対して加算２回、乗算４回を、Ｓ１５において下記［数３１］のように行う。
【００８５】
【数３１】
2013065254.tif 000033
【００８６】
次いでＷｂの場合、Ｐｗｌ’のＺ，Ｘ成分であるｚｗｌ，ｘｗｌに対して、加算２回、乗算４回を、Ｓ１６において下記［数３２］のように行う。
【００８７】
【数３２】
2013065254.tif 000034
【００８８】
続いて、Ｗｃの場合、Ｐｗｌ’のＸ，Ｙ成分であるｘｗｌ，ｙｗｌに対して加算２回、乗算４回を、Ｓ１７において下記［数３３］のように行う。
【００８９】
【数３３】
2013065254.tif 000035
【００９０】
更に、ワーク基準座標系の原点オフセットを［数３４］で計算する。この計算は、Ｓ１５〜Ｓ１７のそれぞれに含まれる。
【００９１】
【数３４】
2013065254.tif 000036
【００９２】
次に、制御装置は、Ｓ２（図８）に処理を移し、Ｗリンクに従ってＰｗｌ’を順次計算・更新していく。
【００９３】
この処理の詳細につき、Ｗリンクの１番目の要素がＲ１、２番目の要素がＲ２である場合を例に、図１０に従って説明する。前述のワーク基準座標系計算（図８のＳ１，図９）と同様に、Ｗリンクの要素数分だけ処理を繰り返すように、カウンタｉが初期設定され（Ｓ２１）、カウンタｉに基づく判断がなされる（Ｓ２２）。
【００９４】
当初（ｉ＝０の場合）、テーブル側１番目の誤差を含んだ回転軸の中心位置Ｄｗ１’（ｘｗ１’，ｙｗ１’，ｚｗ１’）を、下記［数３５］で示すように、先に計算してきたＰｗｌ’に対して減算して更新する（Ｓ２３）。
【００９５】
【数３５】
2013065254.tif 000037
【００９６】
更に、Ｗリンク１番目の要素Ｒ１によって以下の３つの計算から選択して（Ｓ２４）計算を行う（Ｓ２５〜Ｓ２７）。ここで、回転軸の傾き誤差をωｗ１（αｗ１，βｗ１，γｗ１）とする。
【００９７】
Ｗリンク１番目の要素Ｒ１がＡの場合、下記［数３６］のようにＣａ，Ｓａ，Ｕ，Ｕｂ，Ｕｃ，Ｓｂ，Ｓｃを計算した後に、下記［数３７］のようにｘｗｌ，ｙｗｌ，ｚｗｌを計算・更新する（Ｓ２５）。
【００９８】
【数３６】
2013065254.tif 000038
【数３７】
2013065254.tif 000039
【００９９】
Ｗリンク１番目の要素Ｒ１がＢの場合、下記［数３８］のようにＣｂ，Ｓｂ，Ｕ，Ｕａ，Ｕｃ，Ｓａ，Ｓｃを計算した後に、下記［数３９］のようにｘｗｌ，ｙｗｌ，ｚｗｌを計算・更新する（Ｓ２６）。
【０１００】
【数３８】
2013065254.tif 000040
【数３９】
2013065254.tif 000041
【０１０１】
Ｗリンク１番目の要素Ｒ１がＣの場合、下記［数４０］のようにＣｃ，Ｓｃ，Ｕ，Ｕａ，Ｕｃ，Ｓａ，Ｓｂを計算した後に、下記［数４１］のようにｘｗｌ，ｙｗｌ，ｚｗｌを計算・更新する（Ｓ２７）。
【０１０２】
【数４０】
2013065254.tif 000042
【数４１】
2013065254.tif 000043
【０１０３】
このような振り分けによるＡｉ〜Ｃｉの何れかの回転とＰｗｌ’の更新後、テーブル側１番目の誤差を含んだ回転軸の中心位置Ｄｗ１’（ｘｗ１’，ｙｗ１’，ｚｗ１’）を、下記［数４２］のようにＰｗｌ’に対して加算して更新する（Ｓ２８）。
【０１０４】
【数４２】
2013065254.tif 000044
【０１０５】
この後、制御装置は、Ｓ２９でカウンタｉを更新してＳ２２の判定に戻ることで、Ｗリンクの２番目以降の要素が存在するか否かの判定（Ｓ２４）、ないし当該要素が存在する場合のその種類に基づく更新（Ｓ２５〜Ｓ２７の何れか）を順次行う。例えば、Ｗリンクの２番目の要素にＲ２が存在する場合、テーブル側２番目の誤差を含んだ回転軸の中心位置Ｄｗ２’（ｘｗ２’, ｙｗ２’, ｚｗ２’）、回転軸傾き誤差ωｗ２（αｗ２，βｗ２，γｗ２）を用いて、１番目の要素の計算と同様に、Ｐｗｌ’に対して計算・更新を行っていく。
【０１０６】
続いて、Ｐｔｌ’についての計算を行う（図８のＳ４，図１１）。Ｓ４の前段階として、工具長ｔを含んだ基準点Ｐｔ’をＰｔｌ’に代入する（Ｓ３）。
【０１０７】
次いで、主軸の傾き誤差ωｓ（αｓ，βｓ，γｓ）、並進誤差δｓ（ｘｓ，ｙｓ，ｚｓ）を用いて下記［数４３］の計算を行い、Ｐｔｌ’を更新する。
【０１０８】
【数４３】
2013065254.tif 000045
【０１０９】
次に、Ｔリンクに従ってＰｔｌ’を順次計算・更新していく。この計算や更新について、主に図１１に基づいて説明する。この計算は、基本的にはＷリンクに従って行ったＰｗｌ’の計算（図１０等）と同じである。
【０１１０】
カウンタｉを用いてＴリンクの要素数だけ処理を繰り返す（Ｓ３１，Ｓ３２）。Ｔリンクの１番目の要素にＲ１が存在する場合、主軸側１番目の誤差を含んだ回転軸の中心位置Ｄｔ１’（ｘｔ１’，ｙｔ１’，ｚｔ１’）をＰｔｌ’に対して減算・更新する（Ｓ３３）。更に、Ｔリンク１番目の要素Ｒ１によってＷリンクと同様に、［数３６］・［数３７］，［数３８］・［数３９］，［数４０］・［数４１］の３組の計算の何れかから選択して計算を行う（Ｓ３４，Ｓ３５〜３７の何れか）。ここで、回転軸の傾き誤差をωｔ１（αｔ１，βｔ１，γｔ１）とする。ただし、この回転の方向は、Ｐｗｌ’の計算が逆回転であり、Ｐｔｌ’の計算は正回転であるため、［数３６］，［数３８］，［数４０］のＳａ，Ｓｂ，Ｓｃは、それぞれ順に下記［数４４］，［数４５］，［数４６］として計算する。
【０１１１】
【数４４】
2013065254.tif 000046
【数４５】
2013065254.tif 000047
【数４６】
2013065254.tif 000048
【０１１２】
更に、主軸側１番目の誤差を含んだ回転軸の中心位置Ｄｔ１’（ｘｔ１’, ｙｔ１’, ｚｔ１’）をＰｔｌ’に対して加算して更新する（Ｓ３８）。処理繰り返し後（Ｓ３９，Ｓ３２以降）、Ｔリンクの２番目の要素にＲ２が存在する場合、主軸側２番目の誤差を含んだ回転軸の中心位置Ｄｔ２’（ｘｔ２’, ｙｔ２’, ｚｔ２’）、回転軸傾き誤差ωｔ２（αｔ２，βｔ２，γｔ２）を用いて、１番目の要素の計算と同様にＰｔｌ’に対して計算・更新を行っていく（Ｓ３３，Ｓ３４，Ｓ３６，Ｓ３８・・・）。以上で求めたＰｗｌ’とＰｔｌ’を下記［数４７］で示すように足し合わせて、Ｐｎ’ (ｘｎ，ｙｎ，ｚｎ)を求める。並進軸が直交の場合、Ｐｎ’が幾何誤差を考慮した指令値となる。
【０１１３】
【数４７】
2013065254.tif 000049
【０１１４】
一方、並進軸が直交していない場合、その関係から場合分けして計算を行い、Ｐｎ’を更新する。更新後のＰｎ’が、当該場合の幾何誤差を考慮した指令値である。例えば、図３の形態の場合は次の［数４８］の計算を行い、ｘｎ，ｙｎを更新する。
【０１１５】
【数４８】
2013065254.tif 000050
【符号の説明】
【０１１６】
１，１１，２１  ベッド
２，１２，２２  主軸頭
３，１３，２３  テーブル
４，１４，２４  トラニオンユニット
【図１】
2013065254.tif 000051
【図２】
2013065254.tif 000052
【図３】
2013065254.tif 000053
【図４】
2013065254.tif 000054
【図５】
2013065254.tif 000055
【図６】
2013065254.tif 000056
【図７】
2013065254.tif 000057
【図８】
2013065254.tif 000058
【図９】
2013065254.tif 000059
【図１０】
2013065254.tif 000060
【図１１】
2013065254.tif 000061