(57)【要約】【課題】停止せずに一連の動きとして測定動作を継続することができる形状測定装置の制御方法を提供する。【解決手段】倣い経路を所定数のセグメントごとに分割して、所定数のセグメントごとにひとまとまりの測定指令Ｃｉとし、測定指令Ｃｉを実行している間に、その次の測定指令Ｃｉ＋１の速度パターン計画を作成する。このとき、測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と、測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度と、が同じになるように計画する。測定指令Ｃｉを実行している間に、現在時刻からこの測定指令Ｃｉの終了予定時刻までのギャップタイムを時々刻々算出し、ギャップタイムが計画演算時間Ｔｐよりも長い場合には測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度を測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と同じにする。【選択図】図１９
2018087743.tif 000002
【特許請求の範囲】
【請求項１】
先端に測定子を有するプローブと、
前記プローブを移動させる移動機構と、を備え、
前記測定子とワーク表面との接触を検知して前記ワークの形状を測定する形状測定装置の制御方法であって、
前記ワークの設計データに基づいて前記測定子を移動させる倣い経路を求め、前記プローブの前記ワークへの押込み量を基準押込み量に保つように制御しながら前記測定子を前記倣い経路に沿って移動させるにあたって、
前記倣い経路を所定数のセグメントごとに分割して、前記所定数のセグメントごとにひとまとまりの測定指令Ｃｉ（ｉは１からｎ＋１の整数）とし、
測定指令Ｃｉを実行している間に、その次の測定指令Ｃｉ＋１の速度パターン計画を作成し、
このとき、前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度と、が同じになるように計画し、
前記測定指令Ｃｉの最後と前記測定指令Ｃｉ＋１の最初とを連続させて、前記プローブを停止させずに移動させる
ことを特徴とする形状測定装置の制御方法。
ただし、前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度と、は０ｍｍ／ｓｅｃではない
【請求項２】
請求項１に記載の形状測定装置の制御方法において、
前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度は、１ｍｍ／ｓｅｃ〜５ｍｍ／ｓｅｃの低速に設定される
ことを特徴とする形状測定装置の制御方法。
【請求項３】
請求項１または請求項２に記載の形状測定装置の制御方法において、
一の測定指令Ｃｉに対応した速度パターン計画を生成するのに要する時間を計画演算時間Ｔｐとするとき、
測定指令Ｃｉを実行している間に、現在時刻からこの測定指令Ｃｉの終了予定時刻までのギャップタイムを時々刻々算出し、
前記ギャップタイムが前記計画演算時間Ｔｐよりも長い場合には、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度を前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と同じにする連結用速度計画を生成し、
前記ギャップタイムが前記計画演算時間Ｔｐよりも短い場合には、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度はゼロとする個別用速度計画を生成する
ことを特徴とする形状測定装置の制御方法。
【請求項４】
請求項１から請求項３のいずれかに記載の形状測定装置の制御方法において、
前記測定指令Ｃｎに含まれるセグメントの数と前記測定指令Ｃｎ＋１に含まれるセグメントの数とを平均化する
ことを特徴とする形状測定装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、形状測定装置の制御方法に関する。
【背景技術】
【０００２】
測定対象物の表面に沿って測定子を倣い移動させることで測定対象物の形状を測定する形状測定装置が知られている（例えば、特許文献１、２、３参照）。
倣い測定にあたっては、倣い測定の経路を生成しておく必要がある。
特許文献１に記載の装置では、ＣＡＤデータ等に基づいた設計値（例えばＮＵＲＢＳ（Ｎｏｎ−ＵｎｉｆｏｒｍＲａｔｉｏｎａｌＢ−Ｓｐｌｉｎｅ：非一様有理Ｂスプライン）データ）を所定次数の多項式曲線群に変換する。
【０００３】
この手順を簡単に説明すると、まず、外部のＣＡＤシステム等から経路情報を含んだＣＡＤデータ（例えばＮＵＲＢＳデータ）を受け取り、このＣＡＤデータを点群のデータに変換する。各点のデータは、座標値（ｘ、ｙ、ｚ）と法線方向（Ｐ、Ｑ、Ｒ）とを組み合わせたデータである（つまり、（ｘ、ｙ、ｚ、Ｐ、Ｑ、Ｒ）である。）本明細書では、以後の説明のため、（ｘ、ｙ、ｚ、Ｐ、Ｑ、Ｒ）の情報をもつ点群のデータを輪郭点データと称することにする。
【０００４】
次に、各点の座標値を法線方向に所定量だけオフセットする。（所定量とは、具体的には、測定子半径ｒ―基準押込み量Ｅ０である。）このようにして求めた点群データをオフセット済み輪郭点データと称することにする。
【０００５】
そして、オフセット済み輪郭点データを所定次数の多項式曲線群に変換する。
ここでは、多項式として三次関数を用い、ＰＣＣ曲線群（Ｐａｒａｍｅｔｒｉｃ  Ｃｕｂｉｃ  Ｃｕｒｖｅｓ）とする。このＰＣＣ曲線を元にワークを測定する経路を生成する。さらに、ＰＣＣ曲線を分割して分割ＰＣＣ曲線群とする。
【０００６】
分割ＰＣＣ曲線群から速度曲線を算出してプローブの移動速度（移動ベクトル）を算出する。（例えば分割ＰＣＣ曲線群の各セグメントの曲率などに基づいてプローブの移動速度（移動ベクトル）を設定する。）
このように算出された移動速度に基づいてプローブを移動させ、測定対象物の表面に倣って測定子を移動させる（パッシブ設計値倣い測定）。
【０００７】
さらに、プローブの押し込み量を一定にするように押込み修正ベクトルを時々刻々算出して、軌道修正しながら倣い測定する方法も知られている（特許文献２）。ここでは、このような設計値倣いを「アクティブ設計値倣い測定」と称することにする。
【０００８】
特許文献２（特開２０１３−２３８５７３号公報）に開示された「アクティブ設計値倣い測定」を簡単に紹介する。
「アクティブ設計値倣い測定」では、次の（式１）で表わされる合成ベクトルＶをプローブの移動指令とする。プローブが合成ベクトルＶに基づく移動を行うと、プローブ（測定子）はＰＣＣ曲線に沿うように移動しつつ、押込み量を一定としたワーク表面倣い測定、つまり、「アクティブ設計値倣い測定」が実現される。
【０００９】
Ｖ＝Ｇｆ×Ｖｆ＋Ｇｅ×Ｖｅ＋Ｇｃ×Ｖｃ  ・・・（式１）
【００１０】
図１を参照しながら式の意味を簡単に説明する。
図１において、設計データ（輪郭点データ）から所定量（測定子半径ｒ―基準押込み量Ｅ０）オフセットしたところにＰＣＣ曲線（つまり、倣い経路）がある。
また、図１においては、実際のワークが設計データから少しずれている。
【００１１】
ベクトルＶｆは経路速度ベクトルである。
経路速度ベクトルＶｆは、ＰＣＣ曲線上の補間点（ｉ）から次の補間点（ｉ＋１）に向かう方向をもつ。なお、経路速度ベクトルＶｆの大きさは、例えば、補間点（ｉ）におけるＰＣＣ曲線の曲率に基づいて決定される（例えば特許文献３）。
【００１２】
ベクトルＶｅは、押込み量修正ベクトルであり、プローブの押込み量Ｅｐが所定の基準押込み量Ｅ０（例えば０．３ｍｍ）になるようにするためのベクトルである。（押込み量修正ベクトルＶｅは、必然的に、ワーク表面の法線に平行となる。）
【００１３】
ベクトルＶｃは、軌道修正ベクトルである。軌道修正ベクトルは、プローブ位置からＰＣＣ曲線に下ろした垂線に平行である。Ｇｆ、Ｇｅ、Ｇｃはそれぞれ倣い駆動ゲイン、押込み方向修正ゲイン、軌道修正ゲインである。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００８−２４１４２０号公報
【特許文献２】特開２０１３−２３８５７３号公報
【特許文献３】特開２０１４−２１００４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
ＰＣＣ曲線を図２に例示する。
点Ｐ１から点Ｐ７まで一続きのＰＣＣ曲線Ｌ＿ＰＣＣがあり、このＰＣＣ曲線Ｌ＿ＰＣＣは、点Ｐにより複数のセグメントに分割されている。（各セグメントもＰＣＣ曲線である。）各セグメントの終了点は、次のセグメント（ＰＣＣ曲線）の開始点となっている。セグメントの開始点の座標を（ＫＸ０、ＫＹ０、ＫＺ０）と表わし、そのＰＣＣ曲線における始点と終点との間の直線の長さをＤとする。このように定義すると、ＰＣＣ曲線上の任意の位置における座標｛Ｘ（Ｓ）、Ｙ（Ｓ）、Ｚ（Ｓ）｝は、３次曲線を表わすための係数（ＫＸ３、ＫＸ２・・・・ＫＺ１、ＫＺ０）を用い、次の式で表される。
【００１６】
Ｘ（Ｓ）＝ＫＸ３Ｓ３＋ＫＸ２Ｓ２＋ＫＸ１Ｓ＋ＫＸ０
Ｙ（Ｓ）＝ＫＹ３Ｓ３＋ＫＹ２Ｓ２＋ＫＹ１Ｓ＋ＫＹ０
Ｚ（Ｓ）＝ＫＺ３Ｓ３＋ＫＺ２Ｓ２＋ＫＺ１Ｓ＋ＫＺ０
【００１７】
ワークが平面や曲率一定の円で構成されているような単純形状であれば、倣い測定の経路も直線や円といった単純形状でよく、ＰＣＣ曲線を数多くのセグメントに分割する必要はない。
しかし、ワークの測定部位が複雑な形状をしており、かつ、このような測定部位に精度良く追随しながら高精度の倣い測定を行うためには、ＰＣＣ曲線を細かく分割してセグメント数を増やさなければならない。例えば、図３のような曲線の輪郭形状を倣い測定するとなると、図４に例示するように例えば曲率が変化するところでセグメントに分割しなければならない。
この場合、次のような問題が生じていた。
【００１８】
セグメント数が増えれば、それだけ測定命令に含まれるパラメータ（ＰＣＣ曲線の係数）が膨大になってくる。
形状測定機の制御装置（モーションコントローラ）の記憶容量にも上限があり、一続きの倣い測定経路であったとしても、膨大な情報（係数）が含まれた測定指令をまとめて一回で受け取れないし、処理もできない。したがって、制御装置（モーションコントローラ）の記憶容量を超えないように測定指令を分割しなければならない。
【００１９】
例えば、制御装置（モーションコントローラ）の記憶容量として、いま８つのセグメントの係数情報（測定指定）まで記憶できるとする。（実際のマシンでは、数千（例えば２０００個分）のセグメントを記憶できるが、ここは分かりやすく数字を小さくしている。）すると、図５に例示するように、測定指令は分割されることになる。測定指令Ｃ１には８つ分のセグメントの情報が含まれ、その次の測定指令Ｃ２にも８つ分のセグメントの情報が含まれる。
【００２０】
現状、分割された個々の測定指令は分断され、関連の無い別々の測定指令（測定部位）として処理されることになる。測定指令ごとに分離したイメージを図６に例示する。（測定指令Ｃ１と測定指令Ｃ２との間に繋がりが無くなる。）
【００２１】
一の測定指令（測定コマンド）は「アプローチ→倣い測定→停止→リトラクション」となっているので、一の測定指令と次の測定指令との間に、「停止→リトラクション→アプローチ」という動作が発生する。図７には測定指令Ｃごとの速度計画を例示している。この図７に例示するように、測定指令Ｃ１の最後でプローブの移動速度はゼロになって停止し、リトラクションし、次にアプローチを行って測定指令Ｃ２に移行する。
【００２２】
しかも、「リトラクション」してから次の「アプローチ」が開始するまでの時間が結構ある。
リトラクションしたあとで制御装置が次の測定指令を受け取り、それから、各セグメントの曲率に応じて速度計画を作成する。この演算時間が待ち時間となっている。
制御装置（モーションコントローラ）の記憶容量の上限に近い大きなデータを受け取ったり演算したりするとなると、待ち時間がかなり長くなる。
【００２３】
一連であるはずの測定動作の途中で形状測定機が完全に停止してしまうと、ユーザとしてみれば不安を感じる可能性がある。また、データ処理としては、一連の測定経路のはずなので、分割した測定指令で得たサンプリングデータを最終的には繋ぎ合わせる処理が発生することになる。
しかし、このような繋ぎ合わせの処理は煩雑な処理である。また、停止処理が間に入ると、減速や加速の影響を受け、測定精度が低下する要因となる。
【００２４】
本発明の目的は、仮に倣い測定経路が複雑であったとしても、停止せずに一連の動きとして測定動作を継続することができる形状測定装置の制御方法を提供することにある。
【課題を解決するための手段】
【００２５】
本発明の形状測定装置の制御方法は、
先端に測定子を有するプローブと、
前記プローブを移動させる移動機構と、を備え、
前記測定子とワーク表面との接触を検知して前記ワークの形状を測定する形状測定装置の制御方法であって、
前記ワークの設計データに基づいて前記測定子を移動させる倣い経路を求め、前記プローブの前記ワークへの押込み量を基準押込み量に保つように制御しながら前記測定子を前記倣い経路に沿って移動させるにあたって、
前記倣い経路を所定数のセグメントごとに分割して、前記所定数のセグメントごとにひとまとまりの測定指令Ｃｉ（ｉは１からｎ＋１の整数）とし、
測定指令Ｃｉを実行している間に、その次の測定指令Ｃｉ＋１の速度パターン計画を作成し、
このとき、前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度と、が同じになるように計画し、
前記測定指令Ｃｉの最後と前記測定指令Ｃｉ＋１の最初とを連続させて、前記プローブを停止させずに移動させる
ことを特徴とする。
ただし、前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度と、は０ｍｍ／ｓｅｃではない。
【００２６】
本発明の一実施形態では、
前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度は、１ｍｍ／ｓｅｃ〜５ｍｍ／ｓｅｃの低速に設定される
ことが好ましい。
【００２７】
本発明の一実施形態では、
一の測定指令Ｃｉに対応した速度パターン計画を生成するのに要する時間を計画演算時間Ｔｐとするとき、
測定指令Ｃｉを実行している間に、現在時刻からこの測定指令Ｃｉの終了予定時刻までのギャップタイムを時々刻々算出し、
前記ギャップタイムが前記計画演算時間Ｔｐよりも長い場合には、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度を前記測定指令Ｃｉの速度パターン計画Ｐｖｉの終速度と同じにする連結用速度計画を生成し、
前記ギャップタイムが前記計画演算時間Ｔｐよりも短い場合には、前記測定指令Ｃｉ＋１の速度パターン計画Ｐｖｉ＋１の初速度はゼロとする個別用速度計画を生成する
ことが好ましい。
【００２８】
本発明の一実施形態では、
前記測定指令Ｃｎに含まれるセグメントの数と前記測定指令Ｃｎ＋１に含まれるセグメントの数とを平均化する
ことが好ましい。
【図面の簡単な説明】
【００２９】
【図１】設計データ（輪郭点データ）と、ＰＣＣ曲線と、合成ベクトルＶと、の関係を模式的に示す図である。
【図２】ＰＣＣ曲線を例示する図である。
【図３】複雑な倣い測定経路（ＰＣＣ曲線）を例示する図である。
【図４】ＰＣＣ曲線をセグメントに分割した例を示す図である。
【図５】分割した測定指令を例示する図である。
【図６】分割した測定指令を例示する図である。
【図７】測定指令Ｃごとの速度計画を例示した図である。
【図８】形状測定システムの全体構成を示す図である。
【図９】モーションコントローラおよびホストコンピュータの機能ブロック図である。
【図１０】測定指令取得部の構成を示す図である。
【図１１】移動指令生成部の構成を示す図である。
【図１２】第１バッファと第２バッファとに測定指令Ｃｉ、Ｃｉ＋１が格納された状態を模式的に表わす図である。
【図１３】ホストコンピュータ５００からモーションコントローラに測定指令を与える動作を説明するためのフローチャートである。
【図１４】分割した測定指令（分割測定指令）Ｃｉを生成する手順を示すフローチャートである。
【図１５】ＰＣＣ曲線を４つのセグメントごとに分割した例を示す図である。
【図１６】第１バッファと第２バッファとに交互に測定指令を格納する動作を説明するためのフローチャートである。
【図１７】バッファ３２１、３２２に格納された測定指令Ｃｉに基づいて速度パターンを作成する手順を示すフローチャートである。
【図１８】個別用速度計画を例示する図である。
【図１９】連結用速度計画を例示する図である。
【図２０】測定指令Ｃｉと速度パターン計画Ｐｖｉとに基づき、プローブを倣い移動させる手順を示すフローチャートである。
【図２１】測定指令Ｃｉと速度パターン計画Ｐｖｉとに基づき、プローブを倣い移動させる手順を示すフローチャートである。
【図２２】連結判定の手順を示すフローチャートである。
【発明を実施するための形態】
【００３０】
本発明の実施形態を図示するとともに図中の各要素に付した符号を参照して説明する。
（第１実施形態）
図８は、形状測定システム１００の全体構成を示す図である。
形状測定システム１００は、三次元測定機２００と、三次元測定機２００の駆動を制御するモーションコントローラ３００と、モーションコントローラ３００を制御すると共に必要なデータ処理を実行するホストコンピュータ５００と、を備える。
【００３１】
三次元測定機２００は、定盤２１０と、移動機構２２０と、プローブ２３０と、を備える。
【００３２】
移動機構２２０は、定盤２１０上をＹ方向にスライド可能に設けられた門型のＹスライダ２２１と、Ｙスライダ２２１のＸ方向のビームに沿ってスライドするＸスライダ２２２と、Ｘスライダ２２２に固定されたＺ軸コラム２２３と、Ｚ軸コラム２２３内をＺ方向に昇降するＺスピンドル２２４と、を備える。
【００３３】
Ｙスライダ２２１、Ｘスライダ２２２およびＺスピンドル２２４には、それぞれ駆動モータ（不図示）とエンコーダ（不図示）とが付設されている。
モーションコントローラ３００からの駆動制御信号によって各駆動モータが駆動制御される。
エンコーダは、Ｙスライダ２２１、Ｘスライダ２２２およびＺスピンドル２２４それぞれの移動量を検出し、検出値をモーションコントローラ３００に出力する。
Ｚスピンドル２２４の下端にプローブ２３０が取り付けられている。
【００３４】
プローブ２３０は、測定子２３２を先端側（−Ｚ軸方向側）に有するスタイラス２３１と、スタイラス２３１の基端側（＋Ｚ軸方向側）を支持する支持部２３３と、を備える。測定子２３２は、球状であって、測定対象物Ｗに接触する。
【００３５】
支持部２３３は、スタイラス２３１に外力が加わった場合、すなわち測定子２３２が測定対象物に当接した場合にはスタイラス２３１が一定の範囲内でＸ、Ｙ、Ｚ軸の各軸方向に移動可能となるようにスタイラス２３１を支持している。
さらに、支持部２３３は、スタイラス２３１の各軸方向の位置をそれぞれ検出するためのプローブセンサー（不図示）を備える。
プローブセンサは検出値をモーションコントローラ３００に出力する。
【００３６】
（モーションコントローラ３００の構成）
図９は、モーションコントローラ３００およびホストコンピュータ５００の機能ブロック図である。
モーションコントローラ３００は、測定指令取得部３１０と、カウンタ部３３０と、移動指令生成部３４０と、駆動制御部３５０と、を備える。
【００３７】
測定指令取得部３１０は、ホストコンピュータ５００からＰＣＣ曲線データを取得する。
測定指令取得部３１０の構成を図１０に示す。
測定指令取得部３１０は、メモリコントローラ３１１と、第１バッファ３２１と、第２バッファ３２２と、メモリフラグ情報格納部３１２と、を有する。
測定指令取得部３１０は、メモリ装置なのであるが、敢えて、メモリを複数（ここでは２つ）に分離している。測定指令取得部３１０の全容量として、例えば、セグメント２０００個分の測定指令を格納できるとすると、第１バッファ３２１と第２バッファ３２２とはそれぞれセグメント１０００個分ずつの測定指令を格納できる。
図１２は、第１バッファ３２１と第２バッファ３２２とに測定指令Ｃｉ、Ｃｉ＋１が格納された状態を模式的に表わす図である。
【００３８】
本実施形態の説明を分かりやすくするため、数字を小さくして、測定指令取得部３１０の全容量としてセグメント８個分の測定指令を格納でき、それを第１バッファと第２バッファとに振り分け、第１バッファと第２バッファとはそれぞれセグメント４個分ずつの測定指令を格納できるとする。
後の説明のため、一のバッファに格納できるセグメント数の最大値をＰとおく。
【００３９】
測定指令取得部３１０には、メモリフラグ情報格納部３１２が付設されている。
メモリフラグ情報格納部３１２には、バッファ識別フラグＢと、バッファステータスフラグＳＢ（１）、ＳＢ（２）と、が格納される。
バッファ識別フラグＢは、第１バッファ３２１と第２バッファと３２２を交互に使用するため、次に使用するバッファを示すフラグであって、値が１と２とで交互に切り替わる。
【００４０】
バッファステータスフラグＳＢ（１）、ＳＢ（２）としては、
第１バッファ３２１のステータスフラグである第１ステータスフラグＳＢ（１）と、
第２バッファ３２２のステータスフラグである第２ステータスフラグＳＢ（２）と、がある。
第１ステータスフラグＳＢ（１）も第２ステータスフラグＳＢ（２）も値が０と１とで交互に切り替わる。本実施形態では、"０"は書き込み可能状態を表わし、"１"は書き込み不可状態を表わすとする。
【００４１】
カウンタ部３３０は、エンコーダから出力される検出信号をカウントして各スライダの変位量を計測するとともに、プローブセンサから出力される検出信号をカウントしてプローブ２３０（スタイラス２３１）の変位量を計測する。
計測されたスライダおよびプローブ２３０の変位から測定子２３２の座標位置ＰＰ（以下、プローブ位置ＰＰ）が得られる。また、カウンタ部３３０にて計測されたスタイラス２３１の変位（プローブセンサの検出値（Ｐｘ，Ｐｙ，Ｐｚ））から、測定子２３２の押込み量（ベクトルＥｐの絶対値）が得られる。
【００４２】
移動指令生成部３４０は、プローブ２３０（測定子２３２）で測定対象物表面を測定するためのプローブ２３０（測定子２３２）の移動経路を算出し、その移動経路に沿った速度ベクトルを算出する。
移動指令生成部３４０の構成を図１１に示す。
移動指令生成部３４０は、速度パターン計画部３４１と、ベクトル指令生成部３４４と、連結判定部３４５と、中央処理装置（ＣＰＵ）３４８と、を備える。また、連結判定部３４５には、連結判定フラグ格納部３４６と、時間計測部３４７と、が付設されている。
各機能部の動作についてはフローチャートを参照しながら後述する。
【００４３】
駆動制御部３５０は、移動指令生成部３４０にて算出された移動ベクトルに基づいて、各スライダを駆動制御する。
【００４４】
なお、モーションコントローラ３００には、手動コントローラ４００が接続されている。
手動コントローラ４００は、ジョイスティックおよび各種ボタンを有し、ユーザからの手動入力操作を受け付け、ユーザの操作指令をモーションコントローラ３００に送る。
この場合、モーションコントローラ３００（駆動制御部３５０）は、ユーザの操作指令に応じて各スライダを駆動制御する。
【００４５】
（ホストコンピュータ５００の構成）
ホストコンピュータ５００は、ＣＰＵ５１１（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）やメモリ等を備えて構成され、モーションコントローラ３００を介して三次元測定機２００を制御する。
ホストコンピュータ５００は、さらに、記憶部５２０と、形状解析部５３０と、を備える。
記憶部５２０は、測定対象物（ワーク）Ｗの形状に関する設計データ（ＣＡＤデータや、ＮＵＲＢＳデータ等）、測定で得られた測定データ、および、測定動作全体を制御する測定制御プログラムを格納する。
【００４６】
形状解析部５３０は、モーションコントローラ３００から出力された測定データに基づいて測定対象物の表面形状データを算出し、算出した測定対象物の表面形状データの誤差や歪み等を求める形状解析を行う。
また、形状解析部５３０は、設計データ（ＣＡＤデータや、ＮＵＲＢＳデータ等）からＰＣＣ曲線への変換等の演算処理も担う。
【００４７】
ＣＰＵ５１１（中央処理装置）で測定制御プログラムを実行することにより本実施形態の測定動作が実現される。
【００４８】
ホストコンピュータ５００には、必要に応じて、出力装置（ディスプレイやプリンタ）および入力装置（キーボードやマウス）が接続されている。
【００４９】
フローチャートを参照しながら本実施形態に係る形状測定装置の制御方法を説明する。
図１３および図１４を参照しながら、ホストコンピュータ５００の動作を説明する。図１３および図１４の動作は、記憶部５２０に格納された制御プログラムおよび形状解析部５３０により実現されるものである。
【００５０】
図１３は、ホストコンピュータ５００からモーションコントローラ３００に測定指令を与える動作を説明するためのフローチャートである。
まず、形状解析部５３０が外部から与えられたＣＡＤデータ等を利用して倣い測定経路となるＰＣＣ曲線を生成する（ＳＴ１１０）。この動作については背景技術で説明済みである。（例えば、図１−図３を参照されたい。）
さらに、ＰＣＣ曲線の全セグメント数をＭとおく（ＳＴ１２０）。
【００５１】
さて、モーションコントローラ３００の測定指令取得部３１０は第１バッファ３２１と第２バッファ３２２とを有し、各バッファが受領できるセグメント数の最大値をＰとした。したがって、もしＰＣＣ曲線の全セグメント数ＭがＰ以下であれば（ＳＴ１３０：ＮＯ）、一続きのＰＣＣ曲線に含まれる全セグメントの係数情報を１つの測定指令として測定指令取得部３１０は受領できる。
この場合、形状解析部５３０は、全セグメントの係数情報を１つの測定指令Ｃ１として生成し（ＳＴ１３１）、モーションコントローラ３００の測定指令取得部３１０に送信する（ＳＴ１３２）。
この動作自体は従来技術と同じである。
【００５２】
一方、ＰＣＣ曲線の全セグメント数ＭがＰを超えてしまっていると（ＳＴ１３０：ＹＥＳ）、全セグメントの係数情報を１つの測定指令として測定指令取得部は受け取れない。本実施形態では、意図的に測定指令取得部３１０を２つのバッファに分割して一度に受領できるセグメント数（Ｐ）を小さくしているので、全セグメント数ＭがＰを超える可能性が高い。
【００５３】
この場合、形状解析部５３０は、分割した測定指令Ｃｉを生成する（ＳＴ１４０）。
基本的には、従来と同じように、１つの測定指令に含まれるセグメント数がバッファの容量以下になるようにすればよい。
本実施形態では、さらに、各測定指令に含まれるセグメント数が平均化するように工夫も加えているので、図１４で順を追って紹介する。
【００５４】
図１４は、分割した測定指令（分割測定指令）Ｃｉを生成する手順を示すフローチャートである。
まず、全セグメント数Ｍとバッファ容量Ｐとの関係から、分割数（ｎ＋１）を決定する（ＳＴ１４１）。つまり、Ｍ＝Ｐ×ｎ＋ｍを満たす最大の商ｎを決定し、残りを余りｍとする。
【００５５】
単純にＰＣＣ曲線をＰ個のセグメントごとに分割して（ｎ＋１）個の測定指令を生成してもよいが、最後の余りｍの部分を少し考慮して各測定指令Ｃｉに含まれるセグメント数を平均化するようにする。すなわち、余りｍが（Ｐ／４）よりも小さい場合には（ＳＴ１４２：ＹＥＳ）、最後の測定指令Ｃｎ＋１だけが極端に情報量が少ない。そこで、測定指令Ｃ１から測定指令Ｃｎ−１については従来通りセグメント数をバッファ容量の最大値に合わせてＰとするが、最後のところで、測定指令Ｃｎと測定指令Ｃｎ＋１とについては平均化して｛（Ｐ＋ｍ）／２｝とする（ＳＴ１４３）。
【００５６】
いま、ＰＣＣ曲線を４つのセグメントごとに分割した例を図１５に示した。
ここでは、最後の余りｍが"１"であり、これは、Ｐ／４＝１であるので（ＳＴ１４２：ＮＯ）、平均化処理（ＳＴ１４３）はせずに（ＳＴ１４４）、Ｐ（＝４）ずつにＰＣＣ曲線を分割して、最後の測定指令Ｃｎ＋１のセグメント数は１である。
なお、図１４中では、Ｎｓ（Ｃｉ）は、測定指令Ｃｉに含まれるセグメント数Ｎｓを表わすと解釈されたい。
【００５７】
このようにして、測定指令Ｃｉ（ｉ＝１〜ｎ＋１）が生成される。
【００５８】
図１３に戻って、以後、ホストコンピュータ５００は、測定指令取得部３１０のバッファ３２１、３２２のいずれかが受信可能な態勢になると（ＳＴ１６０：ＹＥＳ）、測定指令Ｃ１から順番にモーションコントローラ３００の測定指令取得部３１０に向けて測定指令Ｃｉを送信する（ＳＴ１７０）。
測定指令取得部３１０のバッファ３２１、３２２が受信可能か否かはバッファステータスフラグＳＢ（１）、ＳＢ（２）の値（"０"か"１"か）で表わされ、ホストコンピュータ５００は常にバッファステータスフラグＳＢ（１）、ＳＢ（２）をモニタしている。
バッファステータスフラグＳＢ（１）、ＳＢ（２）の値がどういうタイミングで更新されるかについては、後述する（図１６のＳＴ２１４、ＳＴ２２４、図２０のＳＴ４４１）。
【００５９】
次にモーションコントローラ側の動作を説明していく。
図１６は、測定指令取得部３１０の第１バッファ３２１と第２バッファ３２２とに交互に測定指令を格納する動作を説明するためのフローチャートである。
図１６の制御動作はメモリコントローラ３１１によって実行される。
メモリコントローラ３１１は、メモリフラグ情報格納部３１２に格納されているバッファ識別フラグＢ、および、バッファステータスフラグＳＢ（１）、ＳＢ（２）の状態を参照することによってどちらのバッファにいつデータを格納するかを判断する。
【００６０】
まず、メモリコントローラ３１１は、バッファ識別フラグＢの状態を確認する（ＳＴ２１０）。
バッファ識別フラグＢの値は"１"と"２"とで交互に切り替わるのであるが、どのタイミングで切り替わるかについては後述する（図２０のＳＴ４０２）。
【００６１】
バッファ識別フラグＢの値が"１"ならば（ＳＴ２１０：ＹＥＳ）、第１バッファ３２１を使用する番であり、第１バッファ３２１のステータスを示す第１ステータスフラグＳＢ（１）を確認する（ＳＴ２１１）。
ステータスフラグＳＢ（１）、ＳＢ（２）は、バッファに書き込み可能なステータスならば"０"であり、バッファに書き込みできないステータスであれば"１"である。
（ステータスフラグＳＢ（１）、ＳＢ（２）がどのタイミングで"０"に更新されるかについては後述する（図１６のＳＴ２１４、ＳＴ２２４、図２０のＳＴ４４１）。）
【００６２】
第１バッファ３２１のステータスフラグＳＢ（１）が"０"（＝書き込み可能状態）であれば（ＳＴ２１１：ＹＥＳ）、第１バッファ３２１が書き込み可能になっているということである（ＳＴ２１２）。
【００６３】
第１バッファ３２１が書き込み可能になったら（ＳＴ２１２）、ホストコンピュータ５００から測定指令取得部３１０に向けて測定指令Ｃｉを送信可能になったということなので（図１３のＳＴ１６０：ＹＥＳ）、ホストコンピュータ５００から測定指令取得部３１０に向けて測定指令Ｃｉが送信される。
このように送信された測定指令Ｃｉは、メモリコントローラ３１１により第１バッファ３２１に格納される（ＳＴ２１３）。
メモリコントローラ３１１は、第１バッファ３２１に測定指令Ｃｉが新たに格納されたら、第１バッファ３２１のステータスフラグＳＢ（１）を"１"（＝書き込み不可）に更新しておく。
【００６４】
一方、ＳＴ２１０においてバッファ識別フラグＢが"２"であれば、第２バッファ３２２を使用する番ということなので、メモリコントローラ３１１は、第２バッファ３２２のステータスを示す第２ステータスフラグＳＢ（２）を確認しにいく（ＳＴ２２１）。
このあとの動作は、第１バッファ３２１にデータを書き込む動作に対応しているので、冗長な説明は割愛する。
【００６５】
このようにして、第１バッファ３２１と第２バッファ３２２とに交互に測定指令が順番に格納されていく（例えば図１２参照）。
【００６６】
次に、図１７は、測定指令取得部３１０の各バッファ３２１、３２２に格納された測定指令Ｃｉに基づいて速度パターンを作成する手順を示すフローチャートである。
速度パターン計画部３４１は、測定指令取得部３１０の各バッファ３２１、３２２に格納された測定指令Ｃｉを順次読み出し、その測定指令Ｃｉに合った速度パターンを生成する。速度パターンの一例は例えば背景技術の図７を参照されたい。
速度パターンは、例えば、ＰＣＣ曲線（セグメント）の各点における曲率や、要求されている測定精度、許容される測定時間などを考慮して適切に生成される。与えられた各ＰＣＣ曲線（セグメント）に合った個々の速度パターンを作成すること自体は既知である。
【００６７】
速度パターン計画部３４１は、常にバッファステータスフラグＳＢ（１）、ＳＢ（２）をモニタしている（ＳＴ３１０）。
ＳＢ（Ｂ）の"Ｂ"は、そのときのバッファ識別フラグＢの値（"１"か"２"）のことである。したがって、詳しく言うと、速度パターン計画部３４１は、まずバッファ識別フラグＢの値（１か２か）を確認し、続いて、バッファ識別フラグＢが示すバッファ３２１、３２２のステータス（ＳＢ（Ｂ））を確認する。
【００６８】
そして、バッファステータスフラグＳＢ（Ｂ）が"１"になるのを待ち（ＳＴ３１０：ＮＯ）、バッファステータスフラグＳＢ（Ｂ）が"１"になったら（ＳＴ３１０：ＹＥＳ）、速度パターン計画部３４１は、第Ｂバッファ（３２１、３２２）に格納されている測定指令Ｃｉを読み出す（ＳＴ３２０）。
バッファステータスフラグＳＢ（Ｂ）が"１"になるタイミングについては図１６で説明した通り、第Ｂバッファ３２１、３２２に新たに測定指令Ｃｉが格納されたらバッファステータスフラグＳＢ（Ｂ）は"１"になる（ＳＴ２１４、ＳＴ２２４）。
【００６９】
速度パターン計画部３４１は、新たに測定指令Ｃｉを読み出したら（ＳＴ３２０）、連結判定フラグＬＦを確認しにいく（ＳＴ３３０）。
連結判定フラグＬＦは、連結判定フラグ格納部３４６に格納されたフラグＬＦであり、実行中の測定指令Ｃｉ−１とその次の測定指令Ｃｉとを連続して実行できるか否かを示すフラグＬＦである。
連結判定フラグＬＦは連結判定部３４５の判断によって随時更新されるものであるが、連結判定部３４５がどのような判断で連結判定フラグＬＦの値（１か０か）を決定するかは図２２のフローチャートを参照しながら後ほど詳述する。
ここでは、連結判定フラグＬＦの値が"１"のときには「実行中の測定指令Ｃｉ−１とその次の測定指令Ｃｉとが連結可能」と判断されており、逆に、連結判定フラグＬＦの値が"０"のときには「実行中の測定指令Ｃｉ−１とその次の測定指令Ｃｉとが連結できない」と判断されている、として次の説明に進む。
【００７０】
さて、速度パターン計画部３４１が連結判定フラグＬＦを確認したところ（ＳＴ３３０）、連結判定フラグＬＦの値が"０"であったとする（ＳＴ３４０：ＮＯ）。つまり、「実行中の測定指令Ｃｉ−１とその次の測定指令Ｃｉとが連結できない」と判定されていることになる。
この場合、速度パターン計画部３４１は、測定指令Ｃｉに基づき、「個別用速度計画」を作成する。
個別用速度計画というのは、一点を除けば、従来の速度計画と同じである。
【００７１】
いま、図１５に例示したように、測定指令Ｃｉは４つのセグメントごとに分割されている。そして、例えば、測定指令Ｃｉに対して図１８に例示するような個別用速度計画を生成するとする。
測定指令Ｃｉは、その前の測定指令Ｃｉ−１と連結せず、個別に処理される。
この場合、測定指令Ｃｉを実行する速度パターンは、測定開始点にアプローチし、測定開始点で速度ゼロからスタートである。そして、最初のセグメントからはじまって各セグメントの曲率等に応じて各セグメント（ＰＣＣ曲線）を倣い移動する移動速度を決定していく。
ここまでの処理は従来通りである。
【００７２】
ただし、本実施形態の特徴として、速度パターンの最後の終端部分において移動速度をゼロに落とすのではなく、極低速度（例えば３ｍｍ／ｓｅｃ）の移動領域（低速移動領域Ｌ）を設定する。
低速移動領域の長さ（Ｌ）は例えば３ｍｍ程度にする。
仮に測定指令Ｃｉの最後のセグメントが３ｍｍに満たない場合には、その前方のセグメントへ順次遡って低速移動領域を確保する。
仮に測定指令Ｃｉの全長が３ｍｍに満たなければ、「低速移動領域」を適用しない。
【００７３】
したがって、測定指令Ｃｉに対応する個別用速度計画の生成にあたっては、測定指令Ｃｉの最後部から低速移動領域の長さＬの分を引き、残った部分に対し、初速度が０ｍｍ／ｓｅｃ、終速度が３ｍｍ／ｓｅｃとする速度パターンを生成する。そして、最後の部分は、低速移動領域で３ｍｍ／ｓｅｃで一定である。
作成された速度パターン計画ＰＶｉは、速度パターン格納部３４３に格納される（ＳＴ３７０）。
【００７４】
測定指令Ｃｉに対して速度パターン計画が作成されると、自動的にこの測定指令Ｃｉを実行する開始（予定）時刻ｔｓｉと終了（予定）時刻ｔｅｉとが決まる。
後の説明のため、速度パターン計画ＰＶｉに基づき測定指令Ｃｉを実行する開始時刻を"ｔｓｉ"で表わし、終了時刻ｔｅｉで表わすこととする。
【００７５】
また、一の測定指令Ｃｉに含まれるセグメント数は決まっているので、一の測定指令に対応した速度パターン計画を生成するのに要する時間はほぼ一定である。
後の説明のため、一の測定指令に対応した速度パターン計画を生成するのに要する時間を計画演算時間Ｔｐで表わす。
計画演算時間Ｔｐとしては、速度パターン計画を生成するのに必要な正味の時間に設定してもよいが、少し余裕をみて、その１．３倍ぐらいを計画演算時間Ｔｐに設定しておくとよい。
【００７６】
次に、図１７のＳＴ３４０に戻って、連結判定フラグＬＦの値が"１"であったとする（ＳＴ３４０：ＹＥＳ）。つまり、「実行中の測定指令Ｃｉ−１とその次の測定指令Ｃｉとが連結できる」と判定されていることになる。
この場合、速度パターン計画部３４１は、連結用速度計画を作成する。
【００７７】
連結用速度計画が個別用速度計画と異なるのは一点だけである。
測定指令Ｃｉに対応する連結用速度計画の生成にあたっては、初速度を３ｍｍ／ｓｅｃとする（図１９参照）。
【００７８】
測定指令Ｃｉの１つ前の速度計画が個別用速度計画であっても連結用速度計画であっても最後の部分は低速移動領域で３ｍｍ／ｓｅｃになっているはずである。そこで、測定指令Ｃｉの実行処理にあたって、プローブの初速度が３ｍｍ／ｓｅｃに設定されていれば、１つ前の測定指令Ｃｉ−１の最後と次の測定指令Ｃｉの最初とでプローブの移動速度が同じになる。
したがって、測定指令Ｃｉ−１の最後に続いて、間髪入れずにすぐに測定指令Ｃｉの先頭に移行すれば、プローブ２３０は止まることなく連続して移動できることになる。そして、連結用速度計画が作成される場合（つまり連結判定フラグＬＦの値が"１"である場合（ＳＴ３４０：ＹＥＳ））、測定指令Ｃｉ−１の最後に続けて測定指令Ｃｉの先頭に移行することが必ずできる。
その理由は、図２２のフローチャートの説明のなかで明らかになる。
【００７９】
作成された速度パターン計画ＰＶｉは、速度パターン格納部３４３に格納される（ＳＴ３７０）。
【００８０】
ここで、測定指令Ｃｉに対して連結用速度計画が作成されると、この測定指令Ｃｉを実行する開始（予定）時刻ｔｓｉと終了（予定）時刻ｔｅｉとが決まるのは個別用速度計画の場合と同じであるが、連結用速度計画の場合、測定指令Ｃｉを実行する開始時刻ｔｓｉというのは、その１つ前の測定指令Ｃｉ−１の終了時刻ｔｅｉ−１と同じである。
【００８１】
では次に、図２０−図２２を参照してプローブ移動制御について説明する。
図２０−図２２は、測定指令Ｃｉと速度パターン計画Ｐｖｉとに基づき、プローブ２３０を倣い移動させる手順を示すフローチャートである。
また、このなかでバッファ識別フラグＢおよびバッファステータスフラグＳＢ（１）、ＳＢ（２）がプローブ移動制御の進行に連動して更新されることも説明する。
図２０−図２２の制御動作は、移動指令生成部３４０、より具体的には、移動指令生成部３４０のＣＰＵ３４８、ベクトル指令生成部３４４および連結判定部３４５の協働で実行される。
順を追って説明していく。
【００８２】
なお、起動後に少し待ち時間を置き、図２０のプローブ移動制御の最初の開始までに最初の測定指令Ｃ１に対応する速度パターン計画（図１７）が既にできているようにする。
その後は、図２０−図２２のフローチャートに従って動作を進めていけばよい。
【００８３】
まず、ＳＴ４０１において、移動指令生成部３４０は、バッファフラグ情報格納部３１２から現在のバッファ識別フラグＢの値（１か２）を取り出し、これをパラメータｋに保存しておく。このように現在のバッファ識別フラグＢの値を取り出したら（ＳＴ４０１）、バッファ識別フラグＢの値を更新する（ＳＴ４０２）。つまり、移動指令生成部３４０は、バッファフラグ情報格納部３１２にアクセスして、バッファ識別フラグＢの値を１→２か、あるいは、２→１に更新する。
【００８４】
移動指令生成部３４０がプローブ移動制御のためにこれからアクセスするバッファ（１か２）に格納されている測定指令Ｃｉはこれから使用されるのであるから、ホストコンピュータ５００からの測定指令Ｃｉ＋１で上書きされてはいけない。
その一方、移動指令生成部３４０がアクセスしない方のバッファ（２か１）は、待機状態にある。
したがって、この待機状態にあるバッファ（２か１）に次の測定指令Ｃｉ＋１を受け入れてしまい、速度パターン計画部３４１によって速度パターンの生成をやってしまえばよいのである。そこで、バッファ識別フラグＢの値を更新（１→２か、あるいは、２→１）しておき、前述のメモリ制御動作（図１６）により待機状態のバッファの方に次の測定指令Ｃｉ＋１を受け入れるようにする（ＳＴ２１３、ＳＴ２２３）。
【００８５】
移動指令生成部３４０は、速度パターン格納部３４３に格納されている速度計画Ｐｖｉを読み出す（ＳＴ４０３）。
ここから、測定指令Ｃｉを先頭から順番に処理してプローブ２３０の倣い移動制御を実行していくのであるが、その前に、時間計測部３４７の内部時刻ｔに測定指令Ｃｉの実行開始時間ｔｓｉを入れる（ＳＴ４０４）。
以後、時間計測部３４７は１制御周期ごとに内部時刻ｔに制御周期（Δｔ）を加算していき（ＳＴ４２０）、測定指令Ｃｉの実行中にリアルタイムで時間を計測する。
【００８６】
ここまでの前段階が完了したら、移動指令生成部３４０は、測定指令Ｃｉに基づくプローブ２３０の倣い移動制御を実行する（ＳＴ４１０）。
ベクトル指令生成部３４４で合成ベクトルＶを生成し、合成ベクトルＶに従って駆動制御部３５０がモータ駆動等をしてプローブを移動させる。
これ自体はよく知られた処理である。
図２１のフローチャートに従い、ベクトル指令生成部３４４は、第ｋバッファに格納された測定指令Ｃｉを順に読み出し（ＳＴ４１１）、次の補間点に向けた合成ベクトルＶを算出する（ＳＴ４１２）。
駆動制御部３５０はこの合成ベクトルＶに従って各モータを駆動制御し、プローブ２３０の移動を実行する（ＳＴ４１３）。
【００８７】
図２０に戻って、プローブ移動の一制御周期ごとに時間計測部３４７は内部時刻ｔをアップし（ＳＴ４２０）、この最新の内部時刻ｔを参照しながら連結判定部３４５は「連結判定（ＳＴ４３０）」」を行う。
図２２を参照しながら、連結判定（ＳＴ４３０）を説明する。
連結判定部３４５は、測定指令Ｃｉの速度計画Ｐｖｉから測定指令Ｃｉの終了時刻ｔｅｉを取得しておく。そして、時間計測部３４７の内部時刻ｔとこの終了時刻ｔｅｉとを対比して、現時点から測定指令Ｃｉの終了時刻ｔｅｉまでのギャップタイム（ｔｅｉ−ｔ）を求める。
【００８８】
このようにして時々刻々算出されるギャップタイム（ｔｅｉ−ｔ）が速度計画処理に要する計画演算時間Ｔｐよりも長ければ（ＳＴ４３１：ＹＥＳ）、それはすなわち、現在実行中の測定指令Ｃｉが終了するまでに、次の測定指令Ｃｉ＋１の速度計画を生成できることを意味する。したがって、この場合、連結判定フラグＬＦの値を、連結可能を意味する"１"に設定する。
【００８９】
連結判定フラグＬＦの値が"１"に設定されているときに、速度パターン計画部３４１が連結判定フラグＬＦを読みにいく態勢が整った場合（ＳＴ３１０−ＳＴ３３０）、その時点から次の速度パターンの生成を開始すれば現在実行中の測定指令Ｃｉが終了するまでに、次の測定指令Ｃｉ＋１の速度計画を生成できる。
次の測定指令Ｃｉの速度パターンの生成が完了してしまえば、現在実行中の測定指令Ｃｉのあとすぐに次の測定指令Ｃｉ＋１に移行でき、これはすなわち、現在実行中の測定指令Ｃｉと次の測定指令Ｃｉ＋１とが連結できることを意味する。したがって、速度パターン計画部３４１は、連結用速度計画を生成する。
【００９０】
一方、測定指令Ｃｉの処理が進んできて、だんだんとギャップタイム（ｔｅｉ−ｔ）が短くなっていき、速度計画処理に要する計画演算時間Ｔｐよりも短くなってしまうと、その時点から次の測定指令Ｃｉ＋１の速度パターンを生成しても現在実行中の測定指令Ｃｉが終了するまでに次の測定指令Ｃｉ＋１の速度計画が間に合わない。したがって、ギャップタイム（ｔｅｉ−ｔ）が計画演算時間Ｔｐよりも短くなれば（ＳＴ４３１：ＮＯ）、連結判定フラグＬＦの値を"０"に書き換える。
連結判定フラグＬＦの値が"０"に設定されているときに、速度パターン計画部３４１が連結判定フラグＬＦを読みにいくことになった場合（ＳＴ３１０−ＳＴ３３０）、速度パターン計画部３４１は、個別用速度計画を生成する。
【００９１】
なお、ＳＴ４３２において、「ｎ＋１」は測定指令の数（つまりｉの最大値）であり、ｉがｎ＋１に達したということは、その測定指令Ｃｎ＋１は最後の指令なのであり、測定指令Ｃｎ＋１の最終速度を０にするため、個別用速度計画が生成されるように便宜上連結判定フラグが０に設定されるようにしておく（ＳＴ４３２：ＮＯ）。
【００９２】
図２０に戻って、内部時刻ｔがｔｅｉに達するまでは測定指令Ｃｉが残っているのでＳＴ４１０からＳＴ４４０をループして測定指令Ｃｉに従ったプローブ２３０の倣い移動を実行する。
【００９３】
そして、内部時刻ｔがＴｅｉに達したとき（ＳＴ４４０：ＹＥＳ）、測定指令Ｃｉの処理は終了したことになる。
このとき、測定指令Ｃｉを格納していた第ｋバッファの測定指令は実行済みということであるから、第ｋバッファにはさらに次の測定指令Ｃｉ＋２の書き込みを行ってもよいわけである。そこで、第ｋバッファのバッファステータスフラグＳＢ（ｋ）の値を"０"に更新しておく。
【００９４】
バッファステータスフラグＳＢの値が"０"に更新されると（ＳＴ２１１、ＳＴ２２１）、メモリ制御動作として図１６にて説明したように、バッファが受信可能ということになって（ＳＴ２１２、ＳＴ２２２）、新たな測定指令Ｃがバッファに格納される（図１６のＳＴ２１３、ＳＴ２１４、ＳＴ２２３、ＳＴ２２４）。すると、バッファステータスフラグＳＢ（Ｂ）が"１"になったので（ＳＴ３１０）、新たな速度パターン計画が生成される（ＳＴ３５０、ＳＴ３６０）。
あとは冗長なので繰り返さないが、このようにして各機能部が自身に割り当たられた制御ループを回すことでプローブ移動（ＳＴ４１０）が順番に実行されることが理解されるであろう。
【００９５】
図２０のＳＴ４１０（図２１のＳＴ４１１−ＳＴ４１３）においてベクトル指令とそれに基づくモータ制御でプローブ２３０を移動させる制御動作自体は従来と同じものである。
本発明の大事な工夫はその他の部分、すなわち、ＰＣＣ曲線を（細かく）分割すること、バッファの分割、メモリ制御、速度パターン計画、などにあり、ＳＴ４１０自体は従来通りなのである。
ただし、ＳＴ４１０で得られるプローブ移動の様子は従来と違ったものになる。
【００９６】
従来、ＰＣＣ曲線（倣い測定の経路）が長かったり、ＰＣＣ曲線に複雑な曲率変化が含まれていたりすると、測定指令Ｃの情報量がバッファ容量を超えてしまい、その結果必然的にプローブ２３０は一続きの測定経路なのに途中で一時停止してリトラクションとアプローチを行っていた。
このことは、測定効率やその後のデータ処理にとって大きなマイナス要因であった。
【００９７】
この点、本実施形態においては、意図的にＰＣＣ曲線を比較的少数のセグメントごとに分割し、バッファも２つに分割し、そして、バッファを交互に使用することで、測定指令自体は分割されているとしても、プローブ移動の動作としては分断されずに連続するようにしている。すなわち、測定指令Ｃｉの実行中にその次の測定指令Ｃｉ＋１をバッファに受領して、次の速度パターン計画（連結用速度計画）を行ってしまい、あとは、測定指令Ｃｉのあとに測定指令Ｃｉ＋１を繋げてしまうわけである。
【００９８】
ただし、次の速度パターン計画（連結用速度計画）が必ず間に合う保証はない。そこで、本実施形態では、速度パターン計画において各測定指令の終端部分に低速移動領域Ｌを設定し、プローブ２３０の移動速度を極低速（例えば３ｍｍ／ｓｅｃ）に落とすようにしている。
もし、次の速度パターン計画（連結用速度計画）が間に合わなかったとしても、十分に速度が落ちているので（低速移動領域Ｌの手前で減速は完了済み）、そのままモータを停止し、その後リトラクション等の処理を行えばよい。
【００９９】
ここで、測定指令Ｃｉと次の測定指令Ｃｉ＋１とを連結できるのに、その繋ぎの部分を毎回低速（例えば３ｍｍ／ｓｅｃ）に落としてしまうのは時間効率の点でややマイナスと思われるかもしれない。
理想を言えば、測定指令Ｃｉの最後のセグメントと次の測定指令Ｃｉ＋１の最初のセグメントとを合わせて考えて、測定指令Ｃｉの最後と測定指令Ｃｉ＋１の最初とで最適な速度を割り出し、繋ぎ部分を最適速度で通過するのがよいのかもしれない。
このようなことはリングバッファを用いたりすれば可能と思われるかもしれないが、現状、速度パターン計画を生成するにあたってはセグメントを小出しに処理することはできず、あるまとまった区間ごと（測定指令Ｃｉごと）に速度パターンの計画を行っている。
測定指令Ｃｉの最後と測定指令Ｃｉ＋１の最初とを繋ぐ部分の最適速度を毎回求めるには、速度パターンの生成法を大がかりに変える必要がある。
また、途中で計算が間に合わなくなれば、やはりプローブ２３０を一時停止してリトラクションとアプローチを挿入することになるが、この場合、後のデータ処理でデータの繋ぎ目を処理するのが難しくなるだろう。
（どこで止まったかはメモリアドレスを追跡することによってわかるかもしれないが、かなり複雑な処理になるだろう。）
このような理由を考慮して、本実施形態では、バッファを分割すること、分割された測定指令同士の繋ぎ目は決まった低速で通過すること（停止はしない）と、したわけである。
実際のところ、本実施形態では、測定指令Ｃｉの実行中に次の測定指令Ｃｉ＋１の速度計画を行っているのであるから、必ず低速領域が入るとしても、従来方式に比べて測定時間を相当に短縮できるのは明らかであるし、プローブが一時停止しないのでその後のデータ処理も簡単かつ高速で済む。
【０１００】
なお、本発明は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
上記実施形態ではアクティブ設計値倣い測定を例にしているが、パッシブ設計値倣い測定でもよいことはもちろんである。
【符号の説明】
【０１０１】
１００…形状測定システム、
２００…三次元測定機、２１０…定盤、２２０…移動機構、
２２１…Ｙスライダ、２２２…Ｘスライダ、２２３…Ｚ軸コラム、２２４…Ｚスピンドル、
２３０…プローブ、２３１…スタイラス、２３２…測定子、２３３…支持部、
３００…モーションコントローラ、
３１０…測定指令取得部、３１１…メモリコントローラ、３１２…メモリフラグ情報格納部、３１２…バッファフラグ情報格納部、３２１…第１バッファ、３２２…第２バッファ、
３３０…カウンタ部、
３４０…移動指令生成部、
３４１…速度パターン計画部、３４３…速度パターン格納部、３４４…ベクトル指令生成部、
３４５…連結判定部、
３４６…連結判定フラグ格納部、３４７…時間計測部、
３４８…ＣＰＵ、
３５０…駆動制御部、
４００…手動コントローラ、
５００…ホストコンピュータ、
５２０…記憶部、５３０…形状解析部。
【図１】
2018087743.tif 000003
【図２】
2018087743.tif 000004
【図３】
2018087743.tif 000005
【図４】
2018087743.tif 000006
【図５】
2018087743.tif 000007
【図６】
2018087743.tif 000008
【図７】
2018087743.tif 000009
【図８】
2018087743.tif 000010
【図９】
2018087743.tif 000011
【図１０】
2018087743.tif 000012
【図１１】
2018087743.tif 000013
【図１２】
2018087743.tif 000014
【図１３】
2018087743.tif 000015
【図１４】
2018087743.tif 000016
【図１５】
2018087743.tif 000017
【図１６】
2018087743.tif 000018
【図１７】
2018087743.tif 000019
【図１８】
2018087743.tif 000020
【図１９】
2018087743.tif 000021
【図２０】
2018087743.tif 000022
【図２１】
2018087743.tif 000023
【図２２】
2018087743.tif 000024