(57)【特許請求の範囲】
【請求項１】
制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置であって、
前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する制御点座標系挿入部と、
前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部と、
前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部と、
前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部と、
前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部と、
前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、
前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、
前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える制御装置。
【請求項２】
制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置であって、
前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる制御点座標系挿入部と、
前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部と、
前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部と、
前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部と、
前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部と、
前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、
前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、
前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える制御装置。
【請求項３】
前記機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含
むことができる、請求項１又は２のいずれか１項に記載の制御装置。
【請求項４】
ユーザが記述したスクリプトを解析することにより、前記ユニットを定義し、定義され
た前記ユニットを前記機械構成のグラフの構成要素として含むことができる、請求項３に
記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に関する。
【背景技術】
【０００２】
通常、工作機械やロボットを制御する制御装置においては、工作機械やロボットに含まれる制御対象となる制御点に対して、プログラム上で指令値を用いることにより制御する。例えば、工作機械においては、通常、工具根元位置が制御点とされている。一方で、工具長補正機能を用いたり、工具先端点制御を実施したりする場合には、工具先端位置が制御点とされる。そして、これらの制御点が、指令値により指定した座標値に移動するように、制御が実行される。【０００３】
しかし、実際の機械においては、工具先端点の位置や、工具根元位置、工具の姿勢等を示す数値には誤差が存在することが多い。そのため、この誤差に起因して、工具先端点位置や工具姿勢が指令値通りの軌道にならないことがある。【０００４】
この点、誤差を補正する技術として、直進軸の運動に依存する並進誤差及び姿勢誤差と、回転軸の運動に依存する並進誤差と姿勢誤差による影響を補正して高精度な加工を実現するため、直進軸と回転軸とを有する工作機械を制御する数値制御装置であって、直進軸の運動に依存する並進誤差と姿勢誤差とから直進軸の位置補正量を計算する直進軸依存位置補正量計算手段と、回転軸の運動に依存する並進誤差と姿勢誤差とから直進軸の位置補正量を計算する回転軸依存位置補正量計算手段と、直進軸の運動に依存する姿勢誤差の一部と回転軸の運動に依存する姿勢誤差の一部とから回転軸の角度補正量を計算する回転軸角度補正量計算手段と、回転軸補正量に対応する直進軸の位置補正量を計算する位置加算補正量計算手段とを有する数値制御装置に係る技術が知られている（例えば、特許文献１参照）。【０００５】
一方で、制御対象となる産業機械の機械構成を、構成要素をノードとするグラフ形式で表現し、このグラフに基づくことにより、任意の機械構成を有する産業機械を制御する技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５１０５０２４号公報
【特許文献２】特許第６５４９６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
通常の誤差補正技術は、任意の機械構成を有する工作機械には対応していないため、例えば上記のような、構成要素をノードとするグラフを用いる制御技術を、誤差補正に適用する手段が考えられる。しかし、従来の構成要素をノードとするグラフを用いる制御技術を、そのまま誤差補正に適用することは困難であった。【０００８】
構成要素をノードとするグラフを用いることにより、任意の機械構成を有する工作機械における誤差を補正する技術が望まれている。
【課題を解決するための手段】
【０００９】
本開示の一態様は、制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置であって、前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する制御点座標系挿入部と、前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部と、前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部と、前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部と、前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部と、前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える制御装置である。【００１０】
本開示の一態様は、制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置であって、前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる制御点座標系挿入部と、前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部と、前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部と、前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部と、前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部と、前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える制御装置である。
【発明の効果】
【００１１】
本発明によれば、構成要素をノードとするグラフを用いることにより、任意の機械構成を有する工作機械における誤差を補正することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る制御装置の構成を示す図である。
【図２】本発明の実施形態に係る制御装置に備わるＣＭＯＳメモリの機能を示すブロック図である。
【図３】本発明の実施形態に係る制御装置に備わるＣＰＵの機能を示すブロック図である。
【図４】本発明の実施形態に係る移動指令部のＣＰＵの機能を示すブロック図である。
【図５】本発明の実施形態に係る機械構成木を生成する対象となる機械の例を示す図である。
【図６】本発明の実施形態に係る機械構成木の生成方法を示す図である。
【図７】本発明の実施形態に係る機械構成木の生成方法を示す図である。
【図８】本発明の実施形態において生成された機械構成木の生成動作を示す図である。
【図９Ａ】本発明の実施形態に係る機械構成の親子関係の例を示す図である。
【図９Ｂ】本発明の実施形態に係る機械構成の親子関係の例を示す図である。
【図１０Ａ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１０Ｂ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１０Ｃ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１１】本発明の実施形態に係る機械構成の例を示す図である。
【図１２Ａ】本発明の実施形態に係る機械構成に含まれるユニットの定義方法を示す図である。
【図１２Ｂ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１３Ａ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１３Ｂ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１３Ｃ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１３Ｄ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１４】通常のテーブルに設置されたワークに対する指令の例を示す図である。
【図１５】本発明の実施形態に係る数値制御装置による指令の例を示す図である。
【図１６Ａ】機械構成木の生成対象となる機械の例を示す図である。
【図１６Ｂ】機械構成木の生成対象となる機械に対応する機械構成木の例を示す図である。
【図１７】本発明の実施形態において、機械の各ノードに座標系及び制御点が挿入された例を示す図である。
【図１８】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図１９Ａ】本発明の実施形態において、各ノードにオフセット及び姿勢マトリクスが挿入される機械の例を示す図である。
【図１９Ｂ】本発明の実施形態において、機械の各ノードにオフセット及び姿勢マトリクスが挿入された例を示す図である。
【図２０】本発明の実施形態において、機械構成木に制御点を挿入する生成動作を示す図である。
【図２１】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図２２】本発明の実施形態における、機械構成木の例を示す図である。
【図２３】本発明の実施形態における、機械座標系の機械原点に対する制御点位置ベクトル及び制御点姿勢マトリクスを示す図である。
【図２４】本発明の実施形態における、機械座標系の機械原点に対する指令値位置ベクトル及び指令値姿勢マトリクスを示す図である。
【図２５】本発明の実施形態における、プログラムの例を示す図である。
【図２６】本発明の実施形態における、プログラムの例を示す図である。
【図２７】本発明の実施形態における、プログラムの例を示す図である。
【図２８】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図２９】本発明の実施形態における、プログラムの例を示す図である。
【図３０】本発明の実施形態における、プログラムの例を示す図である。
【図３１】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３２】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３３】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３４】本発明の実施形態における、プログラムの例を示す図である。
【図３５】工作機械における誤差の実測方法についての説明図である。
【図３６】工作機械に設置されたミラーの誤差としてのオフセットについての説明図である。
【図３７】工作機械に設置されたミラーの誤差としてのロール、ピッチ、及びヨーについての説明図である。
【図３８】工作機械における誤差オフセットベクトルについての説明図である。
【図３９】本発明の実施形態における機械構成木において、誤差ノードの挿入箇所を示す図である。
【図４０】本発明の実施形態において、異なる座標系の間で並進誤差と回転誤差とを変換する方法を示す図である。
【図４１】本発明の実施形態における、機械構成木の例を示す図である。
【図４２】工作機械におけるミラーオフセットについての説明図である。
【図４３】本発明の実施形態における、機械構成木の例を示す図である。
【図４４】工作機械における直角度誤差についての説明図である。
【図４５】本発明の実施形態における、機械構成木の例を示す図である。
【図４６】計測用の基準形状を有する人工物であるアーティファクトの構成例を示す図である。
【図４７】本発明の実施形態において、アーティファクトの設置例を示す図である。
【図４８】本発明の実施形態における、機械構成木の例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について、図１〜図４８を参照しながら詳述する。まず、本発明の実施形態に係る制御装置の構成について説明する。
【００１４】
〔１．発明の構成〕
図１には、本発明の実施形態に係る制御装置１００の構成例が示されている。制御装置１００は、主として、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＣＭＯＳ１４と、インタフェース１５、１８、１９と、ＰＭＣ（プログラマブル・マシン・コントローラ）１６と、Ｉ／Ｏユニット１７と、軸制御回路３０〜３４と、サーボアンプ４０〜４４と、スピンドル制御回路６０と、スピンドルアンプ６１とを備える。
【００１５】
ＣＰＵ１１は制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムを、バス２０を介して読み出し、該システムプログラムに従って制御装置１００の全体を制御する。
【００１６】
ＲＡＭ１３には、一時的な計算データや表示データ、及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。
【００１７】
ＣＭＯＳメモリ１４は、図示しないバッテリでバックアップされ、制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インタフェース１５を介して読み込まれた加工プログラムや、表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。
【００１８】
なお、本実施形態において、ＲＯＭ１２は、機械構成グラフ記憶部１４１と、誤差情報記憶部１４２とを備える。図２は、ＲＯＭ１２の構成を示す。
【００１９】
機械構成グラフ記憶部１４１は、後述のグラフ生成部１１１によって生成されるグラフ形式の機械構成、すなわち本実施形態における「機械構成木」を記憶する。
【００２０】
誤差情報記憶部１４２は、制御対象としての産業機械における、機械誤差に係る情報と、機械誤差を観測した座標系に割り当てられた識別子とを記憶する。なお、この識別子は、後述の識別子割り当て部１１４により割り当てられたものである。
なお、誤差情報記憶部１４２と、ＣＰＵ１１に備わる他の構成要素との情報の入出力に係る機能については、ＣＰＵ１１に係る説明の中で後述する。
【００２１】
ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムが、予め書き込まれている。
【００２２】
本発明を実行する加工プログラム等の各種加工プログラムは、インタフェース１５や表示器／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００２３】
インタフェース１５は、制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。
【００２４】
ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、制御装置１００に内蔵されたシーケンスプログラムで、産業機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力して制御する。また、産業機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、信号をＣＰＵ１１に渡す。
【００２５】
表示器／ＭＤＩユニット７０は、ディスプレイやキーボード等を備えた手動データ入力装置である。インタフェース１８は、表示器／ＭＤＩユニット７０のキーボードからの指令やデータを受けて、これらをＣＰＵ１１に渡す。インタフェース１９は、手動パルス発生器等を備えた操作盤７１に接続されている。
【００２６】
各軸の軸制御回路３０〜３４は、ＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。
【００２７】
サーボアンプ４０〜４４は、この指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は、位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、ブロック図では、位置・速度のフィードバックについては省略している。
【００２８】
スピンドル制御回路６０は、産業機械への主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１は、このスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。
【００２９】
スピンドルモータ６２には、歯車あるいはベルト等でパルスエンコーダ６３が結合されている。パルスエンコーダ６３は、主軸の回転に同期して帰還パルスを出力する。その帰還パルスは、バス２０を経由してＣＰＵ１１によって読み取られる。
【００３０】
なお、図３１に示す制御装置１００の構成例では、軸制御回路３０〜３４の５つの軸制御回路と、サーボモータ５０〜５４の５つのサーボモータが示されている。しかし、本発明は、これには限定されず、任意の個数の軸制御回路及びサーボモータを備えることが可能である。
【００３１】
図４３は、上記のＣＰＵ１１が、ＲＯＭ１２に格納されたシステムプログラム及びアプリケーションプログラムを、バス２０を介して読み出し、該システムプログラム及びアプリケーションプログラムに従って実現する機能を示す機能ブロック図である。ＣＰＵ１１は、グラフ生成部１１１と、制御点座標系挿入部１１３と、識別子割り当て部１１４と、誤差ノード生成部１１５と、制御点座標系指定部１１６と、指令値判断部１１７と、移動指令部１１８とを備える。
【００３２】
グラフ生成部１１１は、制御対象の機械構成をグラフ形式で生成する。その詳細な動作については、以下の「２．機械構成木の生成」で詳述する。
【００３３】
また、グラフ生成部１１１は、誤差ノード追加部１１２を備える。誤差ノード追加部１１２の機能については、後述する。
【００３４】
制御点座標系挿入部１１３は、機械構成のグラフに対し、制御点及び座標系を挿入する。
識別子割り当て部１１４は、制御点及び座標系のそれぞれに識別子を割り当てる。
制御点座標系挿入部１１３及び識別子割り当て部１１４の詳細な動作については、以下の「３．指令アドレスの抽象化」〜「８．機械構成木からの座標系の導出」で詳述する。
【００３５】
誤差ノード生成部１１５は、誤差情報記憶部１４２に記憶された機械誤差を、誤差ノード挿入位置からの相対的な値に変換する。
誤差ノード生成部１１５によって変換された誤差ノードは、誤差ノード追加部１１２によって、機械構成をグラフ形式で生成された機械構成、すなわち本実施形態における「機械構成木」に追加される。
【００３６】
誤差情報記憶部１４２、誤差ノード生成部１１５、及び誤差ノード追加部１１２の機能の具体例については、以下の「１０．実施例」において説明する。
【００３７】
制御点座標系指定部１１６は、上記の識別子により、上記の制御点及び座標系を指定する。具体的には、制御点座標系指定部１１６は、例えば、プログラム中の指令、パラメータ設定、画面操作、及び制御装置１００への入力手段からの入力値のいずれかにより、上記の制御点及び座標系を指定する。
指令値判断部１１７は、プログラム中の指令値が、どの制御点に対するどの座標系上の座標値か判断する。
制御点座標系指定部１１６及び指令値判断部１１７の詳細な動作については、以下の「３．指令アドレスの抽象化」〜「８．機械構成木からの座標系の導出」で詳述する。
【００３８】
移動指令部１１８は、制御点の座標値がプログラム中の指令値となるように、制御点の移動を指令する。移動指令部１１８の詳細な動作については、以下の「９．移動パルス生成方法」で詳述する。また、図４は移動指令部１１８の構成例を示す。
【００３９】
図４に示すように、移動指令部１１８は、連立方程式生成部１８１と、連立方程式求解部１８２と、移動パルス生成部１８３とを備える。
【００４０】
連立方程式生成部１８１は、以下の「９．移動パルス生成方法」に記載の方法により、指定された座標系と機械構成のグラフとから、指令値の第１座標変換式を求め、また、指定された制御点と機械構成のグラフとから、制御点の第２座標変換式を求め、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を生成する。
【００４１】
連立方程式求解部１８２は、上記の多元多次連立方程式の解を求める。
移動パルス生成部１８３は、連立方程式求解部１８２が生成した解を用いて、移動指令に用いる移動パルスを生成する。
【００４２】
〔２．機械構成木の生成〕
本発明の実施形態に係る制御装置１００は、最初に、機械構成を表すグラフを生成する。グラフの一例として機械構成木を生成する生成方法について、図５〜図８を参照しながら詳述する。
【００４３】
例として、図５に示す機械の構成を表現する機械構成木の生成方法について説明する。図５の機械においては、Ｚ軸に対して垂直にＸ軸が設定され、Ｘ軸には工具１が設置され、Ｚ軸には工具２が設置されているとする。一方で、Ｙ軸上にＢ軸が設定され、Ｂ軸上にＣ軸が設定され、Ｃ軸にはワーク１とワーク２が設置されているとする。この機械構成を機械構成木として表現する方法は、以下の通りである。
【００４４】
まず、図６に示すように、原点２０１とノード２０２Ａ〜２０２Ｇのみを配置する。この段階では、原点２０１とノード２０２、及びノード２０２間でのつながりは持たず、原点及びノードの各々の名称も設定されていない。
【００４５】
次に、各軸の軸名称（軸型）、各工具の名称、各ワークの名称、各原点の名称、各軸の物理軸番号（軸型）を設定する。次に、各軸の親ノード（軸型）、各工具の親ノード、各ワークの親ノードを設定する。最後に、各軸の交叉オフセット（軸型）、各工具の交叉オフセット、各ワークの交叉オフセットを設定する。その結果、図７に示す機械構成木が生成される。
【００４６】
なお、機械構成木の各ノードは、上記の各情報に限られず、例えば、識別子（名称）、自身の親ノードの識別子、自身を親とする全ての子ノードの識別子、親ノードに対する相対オフセット（交叉オフセット）、親ノードに対する相対座標値、親ノードに対する相対移動方向（単位ベクトル）、ノード種別（直線軸／回転軸／ユニット（後述）／制御点／座標系／原点等）、物理軸番号、直交座標系と物理座標系の変換式に係る情報を有してもよく、あるいは、有さなくてもよい。
【００４７】
また、機械構成木の各ノードは、ノード自身が制御点あるいは座標系であるために必要な情報を有してもよく、有さなくてもよい。制御点あるいは座標系であるために必要な情報としては、詳しくは後述するが、例えばオフセット、姿勢マトリクス、移動やオフセットを加味するか/しないかという情報であり、これらを含んでもよく、含まなくてもよい。このとき、ノード自身が制御点あるいは座標系であるために必要な情報を有するか有さないかによって、後述の制御点座標系指定部の実施形態が異なる。また、必要な情報を有しない場合は、後述の制御点座標系挿入部及び制御点座標系識別子割当て部により必要な情報をノードに付与することもできる。
【００４８】
このように各ノードに値を設定していくことにより、制御装置１００内に機械構成木状のデータ構造を有するデータを生成する。更に、別の機械（又はロボット）を追加する場合も、原点を追加し、更にノードを追加することができる。
【００４９】
上記の機械構成木生成方法、とりわけ各ノードへの各値の設定方法を一般化したフローチャートを図８に示す。
【００５０】
ステップＳ１１において、グラフ生成部１１１は、ノードに対して設定するパラメータの値を受け取る。
ステップＳ１２において、設定されたパラメータの項目が「自身の親ノード」の場合（Ｓ１２：ＹＥＳ）には、処理はステップＳ１３に移行する。「自身の親ノード」ではない場合（Ｓ１２：ＮＯ）には、処理はステップＳ１７に移行する。
【００５１】
ステップＳ１３において、パラメータが設定されるノードに、既に親ノードが設定されている場合（Ｓ１３：ＹＥＳ）には、処理はステップＳ１４に移行する。親ノードが設定されていない場合（Ｓ１３：ＮＯ）には、処理はステップＳ１５に移行する。
【００５２】
ステップＳ１４において、グラフ生成部１１１は、パラメータが設定されるノードの、現在の親ノードが持つ「子ノード」の項目から、自身の識別子を削除し、機械構成木を更新する。
【００５３】
ステップＳ１５において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定する。
【００５４】
ステップＳ１６において、グラフ生成部１１１は、親ノードに対し、「子ノード」の項目に自身の識別子を追加し、機械構成木を更新した後、フローを終了する。
【００５５】
ステップＳ１７において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定した後、フローを終了する。
【００５６】
上記の機械構成木状のデータ構造を有するデータの生成方法を用いることにより、機械の構成要素同士の親子関係を設定することが可能である。
ここで親子関係とは、例えば図９Ａのように、２つの回転軸ノード１０４、１０５があったとき、一方のノード１０４の座標値の変化が、他方のノード１０５の幾何的状態（典型的には、位置・姿勢）に対して一方的に影響を及ぼすような関係のことである。この場合ノード１０４、１０５は親子関係にあると呼び、ノード１０４を親、ノード１０５を子と呼ぶ。
しかし、例えば図９Ｂに示すように、２つの直線軸ノード１０２、１０３と４つのフリージョイント１０１により構成された機械構成においては、ノード１０２、１０３の一方の座標値（長さ）が変わることにより、他方の幾何的状態だけでなく、自身の幾何的状態も変わるような、相互に影響を及ぼす機構が存在する。このような場合は、互いに親であり子、すなわち親子関係が双方向であるとみなすことができる。
【００５７】
このように、あるノードの変化が他のノードに互いに影響し合うような機構については、利便性の観点から、１つのユニットとして捉え、このユニットを機械構成木に挿入することにより全体の機械構成木を生成する。ユニットは、図１０Ａのように二つの接続点１１０及び接続点１２０を持っており、ユニットが図１０Ｂのように機械構成木に挿入された場合、図１０Ｃのように、親ノードは接続点１２０に接続され、また、子ノードは接続点１１０に対して接続される。また、ユニットは、接続点１２０から接続点１１０への変換マトリクスを持っている。この変換マトリクスは、ユニットに含まれる各ノードの座標値によって表される。例えば図１１のような機械構成の場合、接続点１２０における位置・姿勢を表す同次マトリクスをＭＡとし、接続点１１０における位置・姿勢を表す同次マトリクスをＭＢとすると、それらのマトリクス間の変換式はユニットに含まれる各直線軸ノードの座標値ｘ１、ｘ２を用いて以下のように表される。
【数１】
0006940724.tif 000002
【００５８】
この機械構成を表すユニットは上記の［数１］の数式中のＴのような同次変換マトリクスを持つ。同次マトリクスとは、以下の［数２］の数式のように位置・姿勢をまとめて表現できる４×４マトリクスのことである。
【数２】
0006940724.tif 000003
【００５９】
また、親子関係が相互でない場合であっても、計算処理や設定を簡単にするために、ある複数のノードを予め１つにまとめたユニットを定義し、機械構成木中に構成してもよい。
【００６０】
また、このようなユニットは、予め数値制御装置に定義されていてもよいし、ユーザが独自に記述したスクリプトを数値制御装置が読み込んでもよい。
図１２Ａは、ユーザが独自に記述したスクリプトを数値制御装置が読み込む際のフローの例を示す。
ステップＳ２１において、制御装置１００が、ユーザによって定義されたスクリプトを読み込む。
ステップＳ２２において、制御装置１００が、読み込んだスクリプトの内容を解析し、ユニットを新たに定義する。
ステップＳ２３において、制御装置１００が、新たに定義したユニットを、機械構成グラフに挿入可能な構成要素として、新たに登録する。
その結果、ステップＳ２４において、ユーザは登録された独自ユニット（図１２Ｂの例においては、ＭｙＵｎｉｔ）を機械構成木に挿入することが可能となる。
【００６１】
すなわち、ユーザが独自に記述したスクリプトを数値制御装置が読み込み、その内容を解析することで、ユニットを新たに定義し、これを用いて、機械構成木中に構成することができてもよい。
図１２Ｂは、図１２Ａに記載のスクリプトにより、新たに定義された独自ユニットＭｙＵｎｉｔが機械構成木に挿入された例を示す。これにより、ユーザの所望の形式のユニットが数値制御装置に予め定義されていなくても、ユーザが独自に定義を追加できるため、利便性が向上する。
【００６２】
上記のように、本実施形態においては、機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含むことができる。
【００６３】
なお、上記の機械構成木は、図１３Ａのように表示器７０にグラフィカルに表示すること、及び、表示器７０上でグラフィカル・ユーザ・インタフェース（ＧＵＩ）を用いて簡単に設定することが可能である。例えば、図１３Ｂのようにドラッグアンドドロップ操作でノードを配置でき、図１３Ｃのようにドラッグ操作でノード同士の親子関係を設定でき、図１３Ｄのようにマウスクリック操作で設定用メニューを開いてノードの属性を設定することができたりする。
【００６４】
工作機械等の産業機械は多様な機械構成を持つため構成要素同士の親子関係もまた多様であるが、通常、数値制御装置においては、構成要素同士の親子関係に関する情報を持っていないため、そのような情報が必要な制御はできない。しかし、数値制御装置は、上記の機械構成木、あるいは、機械構成木状のデータ構造を有するデータの生成方法を用いることにより、多様な機械構成を持つ工作機械やロボットを制御できるようになり、利便性が向上する。また、ユーザは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を用いることにより、直感的に機械構成木を数値制御装置に設定することが可能となる。
【００６５】
〔３．指令アドレスの抽象化〕
上記のように、機械構成木を生成する際には、個々の軸に軸名称を付ける。通常、数値制御装置で使用される加工プログラムにおいては、軸名称と移動先の座標値又は移動量を意味する数値との組み合わせを用いて、移動を指令する。
【００６６】
しかし、軸名称を任意に設定できても、機械の軸構成が異なる場合には、個々の軸名称にて指令を行う限り、プログラムは異ならざるをえない。例えば、図１４に示すように、ワーク２１２に対して工具２１３を用いて加工を行う場合、（ａ）のようにワークが回転テーブル２１４に載っている場合と、（ｂ）のように直動テーブル２１１上に載っている場合とでは、ワーク２１２に対する工具２１３の所望の相対加工経路２１５が同じであったとしても、それを実現する指令は、（ａ）の場合には２１６であり、（ｂ）の場合には２１７であるように、プログラムが異なってしまう。具体的には、２１６の場合には、回転テーブルの回転軸Ｃを１８０度移動させることで円弧経路を実現するが、２１７の場合には、直線軸ＸＹにより円弧補間指令を行うことで円弧経路を実現するといったように、プログラムが異なる。
【００６７】
また、従来はＧコードモーダル毎に指令可能なアドレスは決まっており、モーダルが変わった場合には、それに合わせて指令アドレスを変える必要があった。例えば、工具先端点制御において工具の姿勢を表すには、タイプ１モード中であれば各回転軸アドレス（例えばアドレスＡ，Ｂ，Ｃ）で指令し、タイプ２モード中であれば工具姿勢ベクトル（アドレスＩ，Ｊ，Ｋ）で指令するといったように、それぞれのモード中に指令可能なアドレスが決まっている。そのため、例えばタイプ１モード中にアドレスＩ，Ｊ，Ｋで指令をしたり、逆にタイプ２モード中に回転軸アドレスＡ，Ｂ，Ｃで指令をしたりすることはできなかった。
【００６８】
そこで、本発明においては、軸名称ではなく、ある座標系における、ある制御点の位置や姿勢等を定義する抽象的アドレスを用いる。具体的には、まず、アドレスを定義するために図１５の２１８のように指令を行う。２１８では、機械構成中の実際の軸名称とは無関係に予め定義された識別子（第一直線軸位置を表す識別子Ｌ１や第二直線軸位置を表す識別子Ｌ２）に対して好適なアドレスα、βを代入することにより、直交座標系の第一直線軸位置としてアドレスαを、直交座標系の第二直線軸位置としてアドレスβを定義する。同様にして、実際の軸名称とは無関係に予め定義された工具姿勢ベクトルを表す識別子Ｖ１，Ｖ２，Ｖ３に対して好適なアドレスを代入して、工具姿勢ベクトルを表す各アドレスを定義してもよい。あるいは、実際の軸名称とは無関係に予め定義された第一・第二回転軸位置を表す識別子Ｒ１，Ｒ２に対して好適なアドレスを代入して、各回転軸位置を表すアドレスを定義してもよい。プログラム中でこれらが定義されない場合は、制御装置１００にパラメータで設定されたデフォルトのアドレスが第一直線軸位置・第二直線軸位置等各々の抽象的意味を表すアドレスとして定義される。そして、以降は図１５の２１９に示すように、これらα、βをプログラムで用いることにより、どのような機械構成でも、また、実際の軸名称が異なる機械同士でも、共通の形式でプログラムを記述できるようになる。また、同じ制御点に対する指令でも、図１５の２２０のようにアドレスを変えるだけで、例えばあるブロックでは工具方向を決めるためにベクトルで指令したり、あるブロックでは回転軸角度で指令したりと、その都度プログラム作成者にとって好適な様々な指令方法を使うことが可能になる。
【００６９】
上記のように、本実施形態においては、指令値として、機械構成のグラフに含まれる軸名称とは無関係に、意味毎に予め定義された識別子に対して割り当てた、任意のアドレスを用いることができる。なお、上記の「意味」は、制御点の位置、制御点の姿勢、及び、姿勢を決定する回転軸の角度位置を含む。
【００７０】
〔４．制御点と座標値の自動挿入〕
「２．機械構成木の生成」にて述べたように、機械構成グラフの各ノードは、自身が制御点あるいは座標系となるために必要な情報を持つことができるが、持たないこともできる。ノードが制御点あるいは座標系となるために必要な情報を持たない場合には、機械構成上の様々な位置を、制御点として指定すると共に、機械構成上の様々な箇所の座標系を設定するため、上記の「２．機械構成木の生成」で生成された機械構成木を用いて、以下の方法を実施する。
【００７１】
例えば、図１６Ａに示すロータリインデックスマシン３００においては、Ｚ１軸に対して垂直にＸ１軸が設定され、Ｘ１軸に工具１が設置されている。また、Ｚ２軸に対して垂直にＸ２軸が設定され、Ｘ２軸上に工具２が設置されている。更に、テーブルにおいては、Ｃ軸上にＣ１軸とＣ２軸が並列に設定され、Ｃ１軸とＣ２軸の各々にワーク１とワーク２が設置されているとする。この機械構成を機械構成木で表わすと、図１６Ｂに示す機械構成木となる。
【００７２】
各ワークから機械原点に連なる一連のノードを例に取ると、図１７に示すように、機械原点、Ｃ軸、Ｃ１軸、Ｃ２軸、ワーク１、ワーク２の各々に座標系と制御点を自動挿入する。これを、テーブルに対してのみならず、各工具から機械原点に連なる一連のノード、すなわちＸ１軸、Ｘ２軸、Ｚ１軸、Ｚ２軸、工具１、工具２のすべてに対して実施する。その結果、図１８に示すように、機械構成木を構成するすべてのノードに対して、各々に対応する制御点と座標系が自動挿入される。通常、加工を行う場合にはワークに座標系、工具を制御点として指定する。これにより、例えば、ワーク自身を所定の位置へ移動させるために、ワークに制御点を指定したい場合や、ある工具で別の工具を研磨するために、工具自身に座標系を設定したい場合といった様々な場合に対応することも可能となる。
【００７３】
また、図１９Ａに示すように、各制御点及び座標系は、オフセットを有する。そのため、ノード中心から離れた点を制御点や座標系原点にすることも可能である。更に、各制御点及び座標系は姿勢マトリクスを持つ。この姿勢マトリクスは、制御点の姿勢マトリクスである場合、制御点の姿勢（向き、傾き）を表し、座標系の姿勢マトリクスの場合、座標系の姿勢を表わす。図１９Ｂに示す機械構成木においては、オフセット及び姿勢マトリクスは、各々が対応するノードに紐づく形で表現される。更に、各制御点及び座標系は、機械構成木のルートまでの経路上に存在するノードの「移動」及び「交叉オフセット」それぞれを加味するか／しないかの情報を持っており、それらを設定できる。
【００７４】
上記の制御点の自動挿入方法を一般化したフローチャートを図２０に示す。このフローチャートは、詳細には、チャートＡとチャートＢとを含み、後述のように、チャートＡの途中でチャートＢが実行されるという構成となっている。
【００７５】
まず、チャートＡについて説明する。
ステップＳ３１において、グラフ生成部１１１は、機械構成木を設定する。
ステップＳ３２において、チャートＢを実行し、チャートＡのフローを終了する。
【００７６】
次に、チャートＢについて説明する。
チャートＢのステップＳ４１において、ノードは制御点・座標系を挿入済である場合（Ｓ４１：ＹＥＳ）には、フローを終了する。ノードに制御点・座標系を挿入済でない場合（Ｓ４１：ＮＯ）には、処理はステップＳ４２に移行する。
【００７７】
ステップＳ４２において、制御点座標系挿入部１１３は、ノードに制御点・座標系を挿入し、変数ｎを１つスタックする。また、ｎ＝１とする。
【００７８】
ステップＳ４３において、ノードにｎ番目の子ノードが存在する場合（Ｓ４３：ＹＥＳ）には、処理はステップＳ４４に移行する。ノードにｎ番目の子ノードが存在しない場合（Ｓ４３：ＮＯ）には、処理はステップＳ４６に移行する。
【００７９】
ステップＳ４４において、ｎ番目の子ノードについて、チャートＢ自身を再帰的に実行する。
【００８０】
ステップＳ４５において、ｎを１だけインクリメントする。すなわちｎ＝ｎ＋１とし、処理はステップＳ４３に戻る。
【００８１】
ステップＳ４６において、変数ｎを１つポップし、チャートＢのフローを終了する。
【００８２】
上記の方法により、制御点座標系挿入部１１３は、機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する。なお、上記では、制御点及び座標系をノードとして追加する場合の実施例を示したが、図２１に示すように、制御点座標系挿入部１１３は、機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる実施形態も同様に可能である。また、「２．機械構成木の生成」でも述べたように、グラフ生成部が図２２に示すような機械構成木（各ノードが制御点あるいは座標系であるために必要な情報を持っている機械構成木）を生成することも可能である。この場合、機械構成木は既に制御点あるいは座標系としての情報を持っているため、制御点座標系挿入部は必ずしも必要ではない。
【００８３】
〔５．制御点位置及び制御点姿勢の計算方法〕
図２３に示すように、機械構成木のルートに対する、機械構成木中のある制御点の位置・姿勢を表す同次マトリクスをＭＣとした場合、これは以下のように求められる。
【００８４】
まず、機械構成木中のあるノードからあるノードまでの間に存在するノードを並べたものを経路と定義する。例えば、図１７においてノードＺ１から制御点[工具１]までの経路ｐ１は以下のように表される。
【数３】
0006940724.tif 000004
【００８５】
機械構成木中のルートからある制御点までの経路ｐ２が以下のようであるとする。
【数４】
0006940724.tif 000005
【００８６】
上記経路中の始点ｘ１がルートである。この経路によって表される制御点の、ルートに対する位置姿勢の同次マトリクスＭＣは、
【数５】
0006940724.tif 000006
により、算出される。ただし、記号の意味は、以下の通りである。
Ｓ：各ノードによる同次変換マトリクス；
Ｎ：機械構成木のルートから制御点まで連なる一連のノード個数；
Ｍ［ｃｔｒｌ］：制御点の親ノードに対する相対オフセット・姿勢の同次マトリクスであり、制御点に定義されたオフセットベクトル・姿勢マトリクスから［数２］の数式に従って定義される；
ａｘｉ：ノードｘｉの交叉オフセットを加味する（１）、加味しない（０）；
ｂｘｉ：ノードｘｉの移動を加味する（１）、加味しない（０）；
ここで、ａｘｉ、ｂｘｉは制御点を指定する際に指定することもできる情報で、詳細については後述の〔８．機械構成木から導出した座標系のカスタマイズ〕において説明する。
【００８７】
また、同次変換マトリクスＳはノードの種別（直線軸／回転軸／ユニット／制御点／座標系等）によって変わり、以下のように表される。
直線軸の場合
【数６】
0006940724.tif 000007
により、算出される。ただし、記号の意味は、以下の通りである。
ｘｉ：ノードｘｉの座標値；
ｏｆｓｘｉ：ノードｘｉの親ノードに対する相対オフセットベクトル；
ｖｘｉ：ノードｘｉの移動方向ベクトル；
回転軸の場合
【数７】
0006940724.tif 000008
により、算出される。ただし、記号の意味は、以下の通りである。
ｖ１：ノードｘｉの回転軸方向ベクトルの第１成分；
ｖ２：ノードｘｉの回転軸方向ベクトルの第２成分；
ｖ３：ノードｘｉの回転軸方向ベクトルの第３成分；
ユニットの場合
【数８】
0006940724.tif 000009
により、算出される。ただし、記号の意味は、以下の通りである。
Ｔ（０）：単位行列（無変換行列）；
Ｔ（１）：ユニットノードに定義された接続点１２０から接続点１１０への同次変換マトリクス；
ユニットの変換同次マトリクスについては、先述した通り例えば［数１］の数式中のＴのようなユニット毎に定義された同次変換マトリクスである。
また、特に規定が無い場合、同次変換マトリクスＳは単位行列とする。
【００８８】
〔６．指令点位置及び指令点姿勢の計算方法〕
図２４に示すように、ある指定座標系上の指令値として、指令位置ベクトルｐｏｓＷ、指令姿勢マトリクスｍａｔＷが指定されている場合、この指令値の、機械構成木のルートに対する位置姿勢を表す同次マトリクスＭＭは、以下の式により求められる。
【００８９】
まず、指令値の同次マトリクスＭｗを以下のように定義する。
【数９】
0006940724.tif 000010
また、制御点の場合と同様に考え、機械構成木中のルートからある座標系までの経路ｐ３が以下のようであるとする。
【数１０】
0006940724.tif 000011
これにより、同次マトリクスＭＭは
【数１１】
0006940724.tif 000012
により、算出される。ただし、記号の意味は、以下の通りである。
Ｓ：各ノードによる同次変換マトリクス；
Ｌ：機械構成木のルートから座標系まで連なる一連のノード個数；
Ｍ［ｃｏｏｒｄ］：座標系の親ノードに対する相対オフセット・姿勢の同次マトリクスであり、座標系に定義されたオフセットベクトル・姿勢マトリクスから［数２］の数式に従って定義される；
ａｘｉ：ノードｘｉの交叉オフセットを加味する（１）、加味しない（０）；
ｂｘｉ：ノードｘｉの移動を加味する（１）、加味しない（０）；
ａｘｉ、ｂｘｉは座標系を指定する際に指定することのできる情報で、詳細については後述の〔８．機械構成木から導出した座標系のカスタマイズ〕において説明する。
また、同次変換マトリクスＳは［数６］〜［数８］の数式を用いて説明したものと同様である。
【００９０】
〔７．プログラム内における制御点及び座標系の指定方法〕
まず、上記の「２．機械構成木の生成」において、各ノードが制御点あるいは座標系であるために必要な情報を持つように機械構成木が生成された場合に、各ノードを制御点あるいは座標系としてプログラム内で指定する方法の一例を、図２５に示す。
【００９１】
図２５に例示するコマンドは、前半部が座標系を指定する文例であり、後半部が制御点を指定する文例である。以下、図２５の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【００９２】
１行目の「Ｇ５４．９  Ｐ＜ワーク１＞；」により、ノード「ワーク１」を座標系として指定する。
２行目の「Ｇ５４．８  Ｐ＜ワーク１＞＜ＷＯＲＫ１＞；」により、ノード「ワーク１」に“ＷＯＲＫ１”という別の識別子を設定する。
３行目の「Ｇ５４．９  Ｐ＜ＷＯＲＫ１＞；」により、「ＷＯＲＫ１」という別の識別子により、ノード「ワーク１」を座標系として指定する。
４行目の「Ｇ５４．７  Ｐ＜Ｃ１＞  Ｘ＿Ｙ＿Ｚ＿；」により、ノード「Ｃ１」の座標系交叉オフセットを設定する。
５行目の「Ｇ５４．６  Ｐ＜Ｃ１＞  Ｉ＿Ｊ＿Ｋ＿；」により、ノード「Ｃ１」の座標系姿勢マトリクスをＲｏｌｌ／Ｐｉｔｃｈ／Ｙａｗで設定する。
６行目の「Ｇ５４．９  Ｐ＜Ｃ１＞；」により、ノード「Ｃ１」を座標系として指定すると共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
７行目の「Ｇ４３．９  ＜工具１＞；」により、ノード「工具１」を制御点として指定する。
８行目の「Ｇ４３．８  Ｐ＜工具１＞＜ＴＯＯＬ１＞；」により、ノード「工具１」に「ＴＯＯＬ１」という別の識別子を設定する。
９行目の「Ｇ４３．９  Ｐ＜ＴＯＯＬ１＞；」により、「ＴＯＯＬ１」という別の識別子により、ノード「工具１」を制御点として指定する。
１０行目の「Ｇ４３．７  Ｐ＜Ｂ１＞  Ｘ＿Ｙ＿Ｚ＿；」により、ノード「Ｂ１」の制御点交叉オフセットを設定する。
１１行目の「Ｇ４３．６  Ｐ＜Ｂ１＞  Ｉ＿Ｊ＿Ｋ＿；」により、ノード「Ｂ１」の制御点姿勢マトリクスをＲｏｌl／Ｐｉｔｃｈ／Ｙａｗで設定する。
１２行目の「Ｇ４３．９  Ｐ＜Ｂ１＞；」により、ノード「Ｂ１」を制御点として指定する共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
【００９３】
次に、上記の「４．制御点と座標系の自動挿入」により、機械構成木に対して挿入された制御点と座標系を、プログラム内で指定する方法の一例を、図２６に示す。
【００９４】
図２６に例示するコマンドは、前半部が座標系を指定する文例であり、後半部が制御点を指定する文例である。以下、図２６の記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【００９５】
１行目の「Ｇ５４．９  ＜座標系[ワーク１]＞；」により、座標系［ワーク１］を指定する。
２行目の「Ｇ５４．８  Ｐ＜座標系[ワーク１]＞＜ＷＯＲＫ１＞；」により、座標系［ワーク１］に“ＷＯＲＫ１”という識別子を設定する。
３行目の「Ｇ５４．９  Ｐ＜ＷＯＲＫ１＞；」により、“ＷＯＲＫ１”という別の識別子により、座標系［ワーク１］を指定する。
４行目の「Ｇ５４．７  Ｐ＜座標系[Ｃ１]＞  Ｘ＿Ｙ＿Ｚ＿；」により、座標系［Ｃ１］の交叉オフセットを設定する。
５行目の「Ｇ５４．６  Ｐ＜座標系[Ｃ１]＞  Ｉ＿Ｊ＿Ｋ＿；」により、座標系［Ｃ１］の姿勢マトリクスをＲｏｌｌ／Ｐｉｔｃｈ／Ｙａｗで設定する。
６行目の「Ｇ５４．９  Ｐ＜座標系[Ｃ１]＞；」により、座標系［Ｃ１］を指定すると共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
７行目の「Ｇ５４．９  ＜制御点[工具１]＞；」により、制御点［工具１］を指定する。
８行目の「Ｇ５４．８  Ｐ＜制御点[工具１]＞＜ＴＯＯＬ１＞；」により、制御点［工具１］に“ＴＯＯＬ１”という識別子を設定する。
９行目の「Ｇ５４．９  Ｐ＜ＴＯＯＬ１＞；」により、“ＴＯＯＬ１”という別の識別子により、制御点［工具１］を指定する。
１０行目の「Ｇ５４．７  Ｐ＜制御点[Ｂ１]＞  Ｘ＿Ｙ＿Ｚ＿；」により、制御点［Ｂ１］の交叉オフセットを設定する。
１１行目の「Ｇ５４．６  Ｐ＜制御点[Ｂ１]＞  Ｉ＿Ｊ＿Ｋ＿；」により、制御点［Ｂ１］の姿勢マトリクスをＲｏｌl／Ｐｉｔｃｈ／Ｙａｗで設定する。
１２行目の「Ｇ５４．９  Ｐ＜制御点[Ｂ１]＞；」により、制御点［Ｂ１］を指定する共に、上記の交叉オフセットが加味される。
【００９６】
このように、各ノードが制御点あるいは座標系であるために必要な情報を持つにせよ、持たないにせよ、機械構成木中の適切な箇所を制御点あるいは座標系として指定することが可能である。図２５においては、制御点と座標系を指定する各々のＧコードは番号が分かれているが、図２６においては、制御点と座標系を指定する各々のＧコードは共通にすることもできる。このように、座標系制御点挿入部及び識別子割り当て部は本発明の実施上不可欠なものではないが、導入してもよい。
【００９７】
〔８．機械構成木から導出した座標系のカスタマイズ〕
上述の通り、機械構成木中の好適な座標系をプログラム指令により選択することができ、選択された座標系上の指令値は、［数９］〜［数１１］の数式を用いて説明したように機械座標値に変換することができる。この変換において、経路ｐ３中の各ノードに対応する一連のａｘｉ、ｂｘｉは基本的には以下のように全て１として計算される。
【数１２】
0006940724.tif 000013
この場合、一連のノードの交差オフセット及び移動は全て加味される。
【００９８】
ここで、ａｐ３及びｂｐ３は経路ｐ３の各要素に対応する要素を持ち、随伴する経路のように見ることができる。そこでこれらをｐ３の随伴経路ａｐ３、ｂｐ３と呼ぶことにする。
【００９９】
ところで、［発明が解決しようとする課題］で先述したように、特定の軸に対してのみ座標系が連れ回らない方が好適な場合もある。例えば図１９Ａ及び図１９Ｂにおいて以下の経路ｐ４にて定義される座標系上でＣ１軸により旋削加工を行いたい場合は、Ｃ１軸に連れ回らない方が使いやすい。
【数１３】
0006940724.tif 000014
【０１００】
この場合、以下のように随伴経路ａｐ４，ｂｐ４を指定すれば、Ｃ１軸にのみ連れ回らないように座標系をカスタマイズすることができる。
【数１４】
0006940724.tif 000015
【０１０１】
このように、指定した座標系に対し随伴経路を適宜指定することで、使い方に応じて好適なように座標系をカスタマイズすることができる。随伴経路は、図２７に示すようにプログラム指令により指定できる。プログラムの内容を説明すると、Ｇ２５４．９Ｐ＜ワーク１＞Ｑ＜Ｃ１＞０指令により、ワーク１に挿入された座標系のａｃ１を０に指定できる。
【０１０２】
また、Ｇ１５４．９Ｐ＜ワーク１＞Ｑ＜Ｃ１＞０指令により、ワーク１に挿入された座標系のｂｃ１を０に指定できる。
【０１０３】
そしてＧ５４．９Ｐ＜ワーク１＞指令により、ａｃ１＝０，ｂｃ１＝０としてカスタマイズされた座標系［ワーク１］を指定することができる。
【０１０４】
また、座標系だけでなく制御点にも同様に随伴経路が存在するため、これも同様に好適なように随伴経路をプログラムで指定することで、カスタマイズされた制御点を使うことができる。
【０１０５】
上記のように、本実施形態においては、座標系及び制御点を規定するための情報を変更することにより、座標系及び制御点は、任意のカスタマイズをすることが可能である。
とりわけ、座標系及び制御点は、特定のノードの影響、具体的には、特定のノードの移動及びオフセットによる影響を除くことが可能である。
【０１０６】
〔９．移動パルス生成方法〕
次に、本発明の実施形態に係る制御装置１００は、〔３．指令アドレスの抽象化〕の方法により指令されたプログラム内の指令値を、〔７．プログラム内における制御点及び座標系の指定方法〕及び〔８．機械構成木から導出した座標系のカスタマイズ〕の方法により指定された座標系上の座標値と解釈し、指定された制御点の座標値が、この指令値となるように制御点を移動させるために必要な移動パルスを生成する。
【０１０７】
具体的には、まず、指定された座標系と機械構成木とから、〔６．指令点位置及び指令点姿勢の計算方法〕の方法により指令値の第１座標変換式を求める。次に、指定された制御点と機械構成木とから、〔５．制御点位置及び制御点姿勢の計算方法〕の方法により制御点の第２座標変換式を求める。次に、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を求める。最後に、例えばグレブナー基底を用いて算出した、上記の多元多次連立方程式の解を用いて、移動指令に用いる移動パルスを生成する。
【０１０８】
例えば、図２８に示すように、軸ｘ１の上に軸ｘ２が設定され、軸ｘ２の上に軸ｘ３が設定され、以下同様にＮ個のノードが連なり、その末端が軸ｘＮであるとする。更に、軸ｘＮ上に制御点が設置されているとする。同様に、軸ｙ１の上に軸ｙ２が設定され、軸ｙ２の上に軸ｙ３が設定され、以下同様にＬ個のノードが連なり、その末端が軸ｙＬであるとする。更に、軸ｙＬ上にワークが設置されているとする。ここで、ｘｉ，ｙｊはノード名称だが、同時に各ノードの座標値も表わすこととする。
【０１０９】
また、図２９に示すように、プログラムにより直交座標位置を表すアドレスＸ，Ｙ，Ｚと工具姿勢を表すアドレスＩ，Ｊ，Ｋが指定されており、これらのアドレスにより指令値として位置ｐｏｓｗ＝（ＸＷ，ＹＷ，ＺＷ）と、工具方向ベクトルｖｅｃｗ＝（ＩＷ，ＪＷ，ＫＷ）が与えられているとする。また、図３０に示すように、プログラムにより制御点[ｘＮ]と座標系[ｙＭ]が指定されているとする。
【０１１０】
このとき、ここで指定された制御点の機械構成木ルートからの経路ｐｃｔｒｌ及び座標系の機械構成木ルートからの経路ｐｃｏｏｒｄは以下［数１５］のようになる。
【数１５】
0006940724.tif 000016
【０１１１】
また、制御点及び座標系の随伴経路については特にプログラムによる指定が無いため、それぞれの経路の随伴経路ａｐｃｔｒｌ，ｂｐｃｔｒｌ，ａｐｃｏｏｒｄ，ｂｐｃｏｏｒｄの要素は以下［数１６］の数式のように全て１となる。
【数１６】
0006940724.tif 000017
【０１１２】
更に、各ノードには図２８に示すオフセット、ノード種別（直線／回転／ユニット／制御点／座標系）、軸方向、姿勢マトリクス、座標値が与えられているとする。
【０１１３】
この時、図３１に示すように、ルート（機械原点）に対する制御点の現在位置・姿勢を表す同次マトリクスＭｃは、以下の式で求められる。
【数１７】
0006940724.tif 000018
ただし、記号の意味は、〔５．制御点位置及び制御点姿勢の計算方法〕で説明した通りなので割愛する。
また、指定座標系上における制御点の現在位置・姿勢を表す同次マトリクスＭｃｗは、Ｍｃを用いて以下の式で求められる。
【数１８】
0006940724.tif 000019
ここから、指定座標系上における制御点の現在位置ベクトルｐｏｓｃｗは以下のように求められる。
【数１９】
0006940724.tif 000020
【０１１４】
次に、図３２に示すように、指定座標系における次の補間位置ベクトルｐｏｓｗ’は、ｐｏｓｃｗを用いて、以下の式で求められる。
【数２０】
0006940724.tif 000021
ただし、ここでＦとは、補間周期毎の指定移動速度のことである。こうすることで、指定座標系における現在位置・指令点位置とを結ぶ直線上の、補間周期毎の位置を求めることができる。
【０１１５】
一方、指定座標系上における制御点の現在工具方向ベクトルｖｅｃｃｗは工具基準方向ベクトルを（０、０、１、０）と仮定すると以下のように求められる。
【数２１】
0006940724.tif 000022
なお、工具基準方向ベクトルは上記に限定されるものではなく、指令やパラメータ設定等により変えてもよい。
【０１１６】
よって、図３３に示すような、指定座標系上における制御点の次の補間工具方向ベクトルｖｅｃ’は、以下の式で求められる。
【数２２】
0006940724.tif 000023
ただし、記号の説明は以下の通りである。
Ｒｏｔ（θ’,ａｘｉｓ）：ベクトルａｘｉｓ方向回りにθ’だけ回転する回転行列。［数７］にて説明した行列Ｒと同様のもの。
【０１１７】
以上のように次の補間位置ベクトルｐｏｓｗ’と、次の補間工具方向ベクトルｖｅｃｗ’を求めたら、制御点の位置及び姿勢それぞれについて、以下の連立方程式を立てる。
【数２３】
0006940724.tif 000024
この連立方程式を、各ｘｉ，ｙｉに関して解くことにより、各軸の次の補間位置が求まる。
【０１１８】
なお、連立方程式を解く際は、例えばグレブナー基底を用いて解を算出することが可能である。具体的には、辞書式順序ｘ１＞ｘ２＞・・・＞ｘＮ＞ｙ１＞ｙ２＞・・・ｙＭに基づき、例えば、Ｂｕｃｈｂｕｒｇｅｒアルゴリズム等を用いて、上記連立方程式のグレブナー基底を求めると、最下位順序ｙＭについての一元多次方程式が求まる。これを解けばｙＭの解が求められ、この解を用いて他のグレブナー基底についても式を順番に解くことで、上記連立方程式を各ｘｉ，ｙｉに関して解を求めることができる。
【０１１９】
このようにして求めた各解ｘｉ’，ｙｉ’を用いて各軸に対してΔｘｉ’＝ｘｉ’−ｘｉ，Δｙｉ’＝ｙｉ’−ｙｉなる移動量を出力することで、指定座標系上における指定速度での移動を実現できる。
【０１２０】
なお、機械構成の自由度が冗長な場合は、例えば、いくつかの軸は移動させなかったり、いくつかの軸に対して直接指令値を与えたりといった拘束条件を適宜［数２３］の数式に追加して連立することによって、対処することができる。又は、いくつかの軸に対しては通常は移動しない補助軸という属性を持たせておき、特異点近辺でのみ特異点回避動作のためにだけ移動させる方法によって対処することができる。あるいは、補助制御点を追加し、それに対しても指令することにより、対処することが可能である。
【０１２１】
また、機械構成の自由度が冗長でない場合であっても、いくつかの軸に対して直接指令値を与えることによって、連立方程式の式連立を省略することもできる。例えば、座標値が変化することにより、指定座標系に対する制御点の工具方向が変化するような回転軸を、工具方向の変化に寄与しない回転軸と区別するために、工具変化回転軸と呼ぶことにし、機械構成木の各ノードは工具変化回転軸であるか否かの情報を持つとする。また、ルートから制御点・座標系への各経路が［数１５］の数式で表され、各経路に含まれる工具変化回転軸ノードの一覧が［数２４］の数式であるとする。
【数２４】
0006940724.tif 000025
【０１２２】
また、制御点側の工具変化回転軸のうち、ルートから遠いものから順に第一、第二と順序を付け、その後座標系側の工具変化回転軸のうちルートから遠いものから順に第三、第四、と順序を付けることで、いかなる機械構成木に対しても厳密に工具変化回転軸の順序を定義できる。これに従い、ｘｎを第一工具変化回転軸、ｙｍを第二工具変化回転軸と呼ぶことにする。ここで、第一工具変化回転軸を表す識別子Ｒ１、第二工具変化回転軸を表す識別子Ｒ２を用いて、図３４のように指令する。このように指定されたアドレスＡ、Ｂを用いることで、工具方向ベクトルではなく、工具変化回転軸の角度値を直接指令することができる。
【０１２３】
この場合、第一工具変化回転軸、第二工具変化回転軸の次の補間位置ｘｎ’，ｙｎ’は以下の式で求めることができる。
【数２５】
0006940724.tif 000026
これにより、第一工具変化回転軸、第二工具変化回転軸のノード座標値は決まるため、工具方向ベクトルも決まる。そうすると、工具方向ベクトルに関して連立方程式を解く必要は無くなるため、以下の指令位置に関する連立方程式を解くだけでよくなる。
【０１２４】
【数２６】
0006940724.tif 000027
ただし、上式中において、ノードｘｎ，ｙｎの座標値は上記で求めた値を代入し、定数とみなして解く。
【０１２５】
上記のように、プログラム中の指令値として、特定のノードの座標値を直接指定できる。これにより、連立式の個数を減らすことが可能となる。
【０１２６】
〔１０．実施例〕
〔１０．１  実施例１〕
以下、図３５〜図４１を参照することにより、実施例１について説明する。実施例１は、機械構成木において、３次元の回転誤差に係る誤差ノードを機械原点の隣りに挿入する実施例である。
【０１２７】
図３５は、工作機械６５における誤差の実測方法について説明する図である。図３５に示すように、工作機械６５の工具６６の先端にミラー６７を設置し、レーザー干渉計（不図示）でレーザーをミラー６７に照射することにより、ミラー６７の位置の誤差を実測する。
【０１２８】
ミラー６７の位置の誤差は、並進誤差と回転誤差からなる。並進誤差は、図３６に示すように、ミラー６７の中心位置のズレに係る誤差であり、中心位置のオフセットとして実測される。一方で、回転誤差は、図３７に示すように、ミラー６７の姿勢に係る誤差であり、Ｘ軸回りの回転角、Ｙ軸回りの回転角、Ｚ軸回りの回転角として実測される。また、前記並進誤差と前記回転誤差は機械座標系上の差分値とする。
【０１２９】
ミラー６７の並進誤差を表す並進誤差ベクトルは、ミラー６７のオフセットの実測値（ｘ，ｙ,ｚ）＝（Ｔｘ，Ｔｙ，Ｔｚ）を用いることにより、以下の数式で求めることができる。
【数２７】
0006940724.tif 000028
【０１３０】
一方、ミラー６７の回転誤差を表す回転誤差行列は、ミラー６７のＸ軸回りの回転角ａ、Ｙ軸回りの回転角ｂ、Ｚ軸回りの回転角ｃを用いることにより、回転角ａ，ｂ，ｃが小さい場合には近似的に以下の数式で求めることができる。
【数２８】
0006940724.tif 000029
【０１３１】
これら、並進誤差ベクトルと回転誤差行列は、誤差情報として、誤差情報記憶部１４２に記憶される。また、機械座標系が誤差を観測した座標系として、誤差情報記憶部１４２に記憶される。
【０１３２】
次に、誤差情報記憶部１４２に記憶されているミラー位置での誤差を、誤差ノード生成部１１５により、誤差ノード挿入位置での誤差に変換する。なお、ここでは例として、工作機械６５の機械原点６８での誤差に変換するものとする。
【０１３３】
図３８に示すように、機械原点６８からミラー６７の位置までのベクトルを、ここでは「誤差オフセットベクトル」と呼称する。前記誤差オフセットベクトルは機械構成木から計算可能である。このとき、図３９に示す機械構成木において、ミラーに対応するノード３５２から、誤差オフセットベクトル分だけ離れたノードを、機械原点に対応するノード３５３の隣りに、誤差ノード３５４として追加することを想定する。
【０１３４】
図４０に示すように、ミラー位置における並進誤差を、
【数２９】
0006940724.tif 000030
ミラー位置における回転誤差を
【数３０】
0006940724.tif 000031
機械原点位置における並進誤差を
【数３１】
0006940724.tif 000032
機械原点位置における回転誤差を
【数３２】
0006940724.tif 000033
誤差オフセットベクトルを
【数３３】
0006940724.tif 000034
とすると、誤差ノード生成部１１５は、以下の式を用いることにより、ミラー位置での誤差を、機械原点での誤差に変換し、機械原点での誤差に対応する誤差ノードを生成する。
【数３４】
0006940724.tif 000035
【０１３５】
上記の式は、機械構成木のノードに格納される位置・姿勢のうち、順キネマティクス変換において、座標値に位置の移動が先に計算される場合の式である。姿勢の回転が先に計算される場合の式へは
【数３５】
0006940724.tif 000036
で変換可能である。
【０１３６】
次に、誤差ノード追加部１１２は、機械構成木に対して、誤差ノード生成部１１５によって生成された誤差ノード３５４を、機械原点に対応するノード３５３の隣りに追加する。図４１は、誤差ノード３５４が追加された後の、機械構成木を示す。
【０１３７】
最後に、制御装置１００は、誤差ノード３５４が追加された機械構成木を用いて、モータ指令値を算出する。
【０１３８】
実施例１は、測定される誤差の原因が、軸毎に分離できない場合にでも誤差の補正を行うことが可能である。
【０１３９】
〔１０．２  実施例２〕
以下、図４２及び図４３を参照することにより、実施例２について説明する。実施例２は、機械構成木において、３次元の回転誤差に係る誤差ノードをミラー位置に挿入する実施例である。
【０１４０】
まず、実施例２においても、実施例１と同様に、並進誤差ベクトルと回転誤差行列とを、誤差情報として誤差情報記憶部１４２に記憶すると共に、誤差情報記憶部１４２に記憶されているミラー位置での誤差を、誤差ノード生成部１１５により誤差ノード挿入位置での誤差に変換する。
【０１４１】
実施例２においては、これと並行して、誤差ノード生成部１１５により、ミラーオフセットに対応する２つのノードである
【数３６】
0006940724.tif 000037
及び
【数３７】
0006940724.tif 000038
を生成する。
【０１４２】
ここで、「ミラーオフセット」とは、図４２に示すようにミラー６７の中心位置から工具６６の根元位置までのベクトルのことである。すなわち、誤差を測定した位置から誤差ノードを挿入するまでベクトルであり、上記の「実施例１」の誤差オフセットベクトルに相当する。
【０１４３】
次に、誤差ノード追加部１１２は、機械構成木に対して、誤差ノード生成部１１５によって生成された誤差ノード３５４と、２つのミラーオフセットノード３５５Ａ及び３５５Ｂを追加する。より詳細には、図４３に示すように、２つのミラーオフセットノード３５５Ａ及び３５５Ｂを、工具に対応するノード３５６の隣りに追加し、２つのミラーオフセットノード３５５Ａ及び３５５Ｂの間に、誤差ノード３５４を追加する。
これら、３５５Ａ、３５４、３５５Ｂを結合したノードは、誤差ノード挿入位置３５７Ｚでの誤差に相当する。
【０１４４】
最後に、制御装置１００は、誤差ノード３５４と２つのミラーオフセットノード３５５Ａ及び３５５Ｂが追加された機械構成木を用いて、モータ指令値を算出する。
【０１４５】
実施例２においては、測定した誤差を誤差ノード挿入位置からの相対値に変換する必要が無いため、手間が減る。それは、３５５Ａ及び３５５Ｂを機械構成木に追加することにより、前記「実施例１」の数３３に相当する計算が移動指令部で行われるからである。
【０１４６】
〔１０．３  実施例３〕
以下、図４４及び図４５を参照することにより、実施例３について説明する。実施例３は、機械構成木において、各軸の直角度誤差に対応する誤差ノードを、各軸に対応する誤差ノードの１つ機械原点側に挿入する実施例である。
【０１４７】
一般的な手法として、ボールバー（ｂａｌｌ  ｂａｒ）を用いてＺ−Ｘ軸周りの直角度誤差であるＷｚｘ、Ｙ−Ｚ軸周りの直角度誤差であるＷｙｚ、Ｘ−Ｙ軸周りの直角度誤差であるＷｘｙを測定することができる。測定した情報を誤差情報として、誤差情報記憶部１４２に記憶する。
なお、ボールバーとは、変位計を内蔵した伸縮自在な棒の両端に取り付けた二つの球の間の相対変位を測定する測定器である。図４４は各軸周りの直角度誤差を示す。
【０１４８】
次に、誤差ノード生成部１１５で、誤差情報記憶部１４２に記憶された各直角度誤差を、以下の数式を用いることにより、各軸の直角度誤差行列に変換する。
【数３８】
0006940724.tif 000039
【０１４９】
次に、誤差ノード追加部１１２は、機械構成木に対して、誤差ノード生成部１１５によって生成された直角度誤差行列である誤差ノード３５４Ａ〜３５４Ｃを追加する。より詳細には、図４５に示すように、誤差ノード追加部１１２は、機械構成木において、
【数３９】
0006940724.tif 000040
に対応する誤差ノード３５４Ａを、機械原点から見て、Ｚ軸に対応するノード３５７Ｚの手前に追加する。同様に、誤差ノード追加部１１２は、機械構成木において、
【数４０】
0006940724.tif 000041
に対応する誤差ノード３５４Ｂを、機械原点から見て、Ｙ軸に対応するノード３５７Ｙの手前に追加する。同様に、誤差ノード追加部１１２は、機械構成木において、
【数４１】
0006940724.tif 000042
に対応する誤差ノード３５４Ｃを、機械原点から見て、Ｘ軸に対応するノード３５７Ｘの手前に追加する。
【０１５０】
最後に、制御装置１００は、誤差ノード３５４Ａ〜３５４Ｃが追加された機械構成木を用いて、モータ指令値を算出する。
【０１５１】
実施例３においては、誤差の原因となる軸の直前に誤差ノード３５４を挿入するため、実際の工作機械を、最も忠実に再現した機械構成木を生成することが可能となる。
【０１５２】
〔１０．４  実施例４〕
以下、図４６〜図４８を参照することにより、実施例４について説明する。実施例４は、機械構成木に対して、工作機械の機上で測定した誤差に係る誤差ノードを挿入する実施例である。
【０１５３】
まず、図４６に示すようなアーティファクト７５を準備する。ここで、「アーティファクト（ａｒｔｉｆａｃｔ）」とは、計測用の基準形状を有する人工物のことである。図４６に示す例において、アーティファクト７５は、球７６〜球７９の４つの球の各々が三角錐の頂点となる形状を有する。また、球７６から球７７へのベクトルのＣ軸ノード上の座標系での真値を、
【数４２】
0006940724.tif 000043
球７６から球７８へのベクトルのＣ軸ノード上の座標系での真値を、
【数４３】
0006940724.tif 000044
球７６から球７９へのベクトルのＣ軸ノード上の座標系での真値を、
【数４４】
0006940724.tif 000045
とする。
【０１５４】
次に、図４７に示すように、アーティファクト７５を、工作機械が備えるテーブル８０の上に設置して、工作機械の工具先端に取り付けたプローブ９０で、球７６〜７９の座標と測定する。ここで、「プローブ」とは、テーブル８０に設置されるワークの原点、位置、姿勢等を測定する測定器のことである。また、テーブル８０の中心軸を、ここではＣ軸とする。
球７６〜７９の座標の測定値から得られる、球７６から球７７へのベクトルの測定値を、
【数４５】
0006940724.tif 000046
球７６から球７８へのベクトルのＣ軸ノード上の座標系での測定値を、
【数４６】
0006940724.tif 000047
球７６から球７９へのベクトルのＣ軸ノード上の座標系での測定値を、
【数４７】
0006940724.tif 000048
とする。
【０１５５】
誤差情報記憶部１４２は、誤差情報として、これらの真値及び測定値を記憶する。
【０１５６】
次に、誤差ノード生成部１１５は、以下の数式を用いることにより、誤差情報記憶部１４２に記憶された各測定値を真値に変換する行列
【数４８】
0006940724.tif 000049
を求め、これに対応する誤差ノード３５４を生成する。
【数４９】
0006940724.tif 000050
【０１５７】
次に、誤差ノード追加部１１２は、機械構成木に対して、誤差ノード生成部１１５によって生成された誤差ノード３５４を追加する。より詳細には、図４８に示すように、誤差ノード追加部１１２は、ワークに対応するノード３５９とＣ軸に対応するノード３６０との間に、
【数５０】
0006940724.tif 000051
に対応する誤差ノード３５４を追加する。
【０１５８】
最後に、制御装置１００は、誤差ノード３５４が追加された機械構成木を用いて、モータ指令値を算出する。
【０１５９】
実施例４は、テーブル座標系での誤差を測定するものであり、工具の代わりに接触プローブを取り付けることにより誤差測定が可能である。このため、レーザー干渉計のような高価なセンサは必要ではない。また、アーティファクトは真値が分かるものであれば形状は問わないため、ユーザが加工したワークを３次元座標測定機で測定して、それを真値として補正する、すなわち、検査工程の結果を加工工程にフィードバックしたり、あるいは、ワークの設置位置誤差を測定し補正したりする等の使い方も可能である。
【０１６０】
〔１１．本実施形態が奏する効果〕
本実施形態に係る制御装置は、制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置（例えば、上記の「制御装置１００」）であって、前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する制御点座標系挿入部（例えば、上記の「制御点座標系挿入部１１３」）と、前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部（例えば、上記の「識別子割り当て部１１４」）と、前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部（例えば、上記の「誤差情報記憶部１４２」）と、前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部（例えば、上記の「誤差ノード生成部１１５」）と、前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部（例えば、上記の「誤差ノード追加部１１２」）と、前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部（例えば、上記の「制御点座標系指定部１１６」」）と、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部（例えば、上記の「移動指令部１１８」）と、を備える。
【０１６１】
あるいは、本実施形態に係る制御装置１００は、制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置（例えば、上記の「制御装置１００」）であって、前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる制御点座標系挿入部（例えば、上記の「制御点座標系挿入部１１３」）と、前記挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部（例えば、上記の「識別子割り当て部１１４」）と、前記制御対象における機械誤差に係る情報と、前記機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部（例えば、上記の「誤差情報記憶部１４２」）と、前記機械誤差を等価な誤差ノードに変換する誤差ノード生成部（例えば、上記の「誤差ノード生成部１１５」）と、前記機械構成のグラフにおいて、前記誤差ノードを追加する誤差ノード追加部（例えば、上記の「誤差ノード追加部１１２」）と、前記機械構成のグラフに対し、前記識別子により制御点及び座標系を１組以上指定する制御点座標系指定部（例えば、上記の「制御点座標系指定部１１６」」）と、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部（例えば、上記の「移動指令部１１８」）と、を備える。
【０１６２】
これらにより、構成要素をノードとするグラフを用いることで、任意の機械構成を有する工作機械における誤差を補正することが可能となる。
【０１６３】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【０１６４】
制御装置１００による制御方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（制御装置１００）にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。更に、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータ（制御装置１００）に提供されてもよい。
【符号の説明】
【０１６５】
１１  ＣＰＵ
１００  数値制御装置
１１１  グラフ生成部
１１２  誤差ノード追加部
１１３  制御点座標系挿入部
１１４  識別子割り当て部
１１５  誤差ノード生成部
１１６  制御点座標系指定部
１１７  指令値判断部
１１８  移動指令部
１４１  機械構成グラフ記憶部
１４２  誤差情報記憶部
１８１  連立方程式生成部
１８２  連立方程式求解部
１８３  移動パルス生成部
【要約】
構成要素をノードとするグラフを用いることにより、任意の機械構成を有する工作機械における誤差を補正する。制御装置は、機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する制御点座標系挿入部と、挿入された制御点及び座標系に識別子を割り当てる識別子割り当て部と、制御対象における機械誤差に係る情報と、機械誤差を観測した座標系に割り当てられた識別子とを記憶する誤差情報記憶部と、機械誤差を等価な誤差ノードに変換する誤差ノード生成部と、機械構成のグラフにおいて、誤差ノードを追加する誤差ノード追加部とを備える。【図１】
0006940724.tif 000052
【図２】
0006940724.tif 000053
【図３】
0006940724.tif 000054
【図４】
0006940724.tif 000055
【図５】
0006940724.tif 000056
【図６】
0006940724.tif 000057
【図７】
0006940724.tif 000058
【図８】
0006940724.tif 000059
【図９Ａ】
0006940724.tif 000060
【図９Ｂ】
0006940724.tif 000061
【図１０Ａ】
0006940724.tif 000062
【図１０Ｂ】
0006940724.tif 000063
【図１０Ｃ】
0006940724.tif 000064
【図１１】
0006940724.tif 000065
【図１２Ａ】
0006940724.tif 000066
【図１２Ｂ】
0006940724.tif 000067
【図１３Ａ】
0006940724.tif 000068
【図１３Ｂ】
0006940724.tif 000069
【図１３Ｃ】
0006940724.tif 000070
【図１３Ｄ】
0006940724.tif 000071
【図１４】
0006940724.tif 000072
【図１５】
0006940724.tif 000073
【図１６Ａ】
0006940724.tif 000074
【図１６Ｂ】
0006940724.tif 000075
【図１７】
0006940724.tif 000076
【図１８】
0006940724.tif 000077
【図１９Ａ】
0006940724.tif 000078
【図１９Ｂ】
0006940724.tif 000079
【図２０】
0006940724.tif 000080
【図２１】
0006940724.tif 000081
【図２２】
0006940724.tif 000082
【図２３】
0006940724.tif 000083
【図２４】
0006940724.tif 000084
【図２５】
0006940724.tif 000085
【図２６】
0006940724.tif 000086
【図２７】
0006940724.tif 000087
【図２８】
0006940724.tif 000088
【図２９】
0006940724.tif 000089
【図３０】
0006940724.tif 000090
【図３１】
0006940724.tif 000091
【図３２】
0006940724.tif 000092
【図３３】
0006940724.tif 000093
【図３４】
0006940724.tif 000094
【図３５】
0006940724.tif 000095
【図３６】
0006940724.tif 000096
【図３７】
0006940724.tif 000097
【図３８】
0006940724.tif 000098
【図３９】
0006940724.tif 000099
【図４０】
0006940724.tif 000100
【図４１】
0006940724.tif 000101
【図４２】
0006940724.tif 000102
【図４３】
0006940724.tif 000103
【図４４】
0006940724.tif 000104
【図４５】
0006940724.tif 000105
【図４６】
0006940724.tif 000106
【図４７】
0006940724.tif 000107
【図４８】
0006940724.tif 000108