(57)【要約】  本開示は、工作機械システム（１００）の移動を制御し、シミュレーショングラフィクス（２４５）などの他のアプリケーションのデータを処理するために用いられうる汎用キネマティクスライブラリ（２１０）を含む。方法は、機械固有ポイント（４９０）を通じて、工作機械システム（１００）のさまざまな軸の移動を補間する。【選択図】図１
2010500635.tif 000002
【特許請求の範囲】
【請求項１】
パーツ（１６０）を機械加工する工作機械システム（１００）の移動を制御する方法であって、
前記パーツ（１６０）を工具（１４１）と接触させる段階と、
前記工具（１４１）を前記パーツ（１６０）と接触させた状態で、前記パーツ（１６０）に関して前記工具（１４１）を第１の位置から第２の位置へと移動させる段階とを、備え、
前記工具（１４１）は、前記工作機械システム（１００）の機械固有ポイント（４９０）を通じて補間を行う方法。
【請求項２】
前記工具（１４１）を前記パーツ（１６０）と接触させた状態で、前記工具（１４１）を前記第１の位置から前記第２の位置へと移動させる段階は、
前記工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から、前記機械固有ポイント（４９０）と略位置合わせされる中間位置へと移動させる段階と、
前記中間位置を軸にして回転する段階と、
前記工具（１４１）を、前記パーツ（１６０）に関し前記中間位置から前記第２の位置へと移動させる段階と、
を含む、請求項１に記載の方法。
【請求項３】
前記工具（１４１）は、前記中間位置を軸にして回転する段階の間、前記パーツ（１６０）に関して静止状態にある、請求項２に記載の方法。
【請求項４】
前記中間位置を軸にして回転する段階は、
角度回転を決定する段階と、
複数の位置での前記角度回転を経て回転する段階と、
を含み、
前記複数の位置は、許容範囲内である、請求項２に記載の方法。
【請求項５】
前記中間位置を軸にして回転する段階は、
角度回転を決定する段階と、
複数の位置での前記角度回転を経て回転する段階と、
を含み、
前記複数の位置は、固定の角度ステップに対応する、請求項２に記載の方法。
【請求項６】
前記工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から前記中間位置へと移動させる段階は、
前記中間位置を決定する段階と、
前記第１の位置と前記中間位置との間に複数の位置を補間する段階と、
を含む、請求項２に記載の方法。
【請求項７】
前記第１の位置と前記中間位置との間に前記複数の位置を補間する段階は、
前記第１の位置に対応する第１のベクトルと、前記中間位置に対応する第２のベクトルとに基づき複数のベクトル、および、対応する複数のポイントを決定する段階と、
隣接する補間位置間で許容範囲条件に違反しているかどうかを決定し、前記許容範囲条件を違反している場合、追加の補間位置を決定する段階と、を含み、
前記複数のベクトルおよび対応するポイントのそれぞれは、補間される位置に対応する、請求項６に記載の方法。
【請求項８】
前記複数のベクトルの数は、固定の角度ステップに基づき、決定される、請求項７に記載の方法。
【請求項９】
前記複数のベクトルの数は、固定の時間ステップに基づき、決定される、請求項７に記載の方法。
【請求項１０】
前記複数のベクトルは、それぞれ工具ベクトルである、請求項７に記載の方法。
【請求項１１】
前記複数のベクトルは、それぞれ表面法線ベクトルである、請求項７に記載の方法。
【請求項１２】
前記許容範囲条件は、コードエラーである、請求項７に記載の方法。
【請求項１３】
パーツ（１６０）を機械加工する工作機械システム（１００）の複数の可動軸についての位置情報を決定する方法であって、
複数の異なる工具位置入力タイプを許容するカスケード方法（４００）を提供する段階と、
前記複数の異なる入力タイプの１つに対応する第１の工具位置を受け取る段階と、
前記カスケード方法（４００）を用い、前記受け取った第１の工具位置に基づき前記位置情報を決定する段階と、
を備える方法。
【請求項１４】
それぞれの回転軸についての前記位置情報は、インバースキネマティクス演算により決定され、それぞれの線形軸についての前記位置情報は、フォワードキネマティクス演算により決定される、請求項１３に記載の方法。
【請求項１５】
前記カスケード方法（４００）を用いて決定された前記位置情報に基づき、前記複数の可動軸を移動させる段階をさらに備える、請求項１３に記載の方法。
【請求項１６】
前記カスケード方法（４００）を用いて前記位置情報を決定する段階は、
前記複数の可動軸のそれぞれの回転軸について、対応する角度を有する第１のソリューションを決定する段階と、
前記複数の可動軸のそれぞれの線形軸についての位置を決定する段階と、
を含む、請求項１３に記載の方法。
【請求項１７】
前記第１の工具位置は、表面接点、前記表面接点における表面法線ベクトル、および、工具ベクトルを含み、前記カスケード方法（４００）を用いて前記位置情報を決定する段階は、
前記表面接点、前記表面接点における前記表面法線ベクトル、および、前記工具ベクトルに基づき、工具底部中心点を決定する段階と、
前記工具底部中心点、および、前記工具ベクトルに基づき、前記複数の可動軸のそれぞれの回転軸についての角度を決定する段階と、
前記複数の可動軸のそれぞれの線形軸についての位置を決定する段階と、
を含む、請求項１３に記載の方法。
【請求項１８】
前記第１の工具位置は、工具底部中心点、および、工具ベクトルを含み、前記カスケード方法（４００）を用いて前記位置情報を決定する段階は、
前記工具底部中心点、および、前記工具ベクトルに基づき、前記複数の可動軸のそれぞれの回転軸についての角度を決定する段階と、
前記複数の可動軸のそれぞれの線形軸についての位置を決定する段階と、
を含む、請求項１３に記載の方法。
【請求項１９】
前記カスケード方法（４００）の第１の方法によって、第２の工具位置入力タイプから第１の工具位置入力タイプが決定可能であり、前記第２の工具位置入力タイプは、前記カスケード方法（４００）の第２の方法によって、第３の工具位置入力タイプから決定可能であり、前記第３の工具位置入力タイプは、前記カスケード方法（４００）の第３の方法によって、第４の工具位置入力タイプから決定可能である、請求項１３に記載の方法。
【請求項２０】
前記カスケード方法（４００）は、前記第１の工具位置入力タイプの前記位置情報を、前記複数の異なる工具位置入力タイプのうちの前記第１の工具位置入力タイプ以外から決定する、請求項１９に記載の方法。
【請求項２１】
複数の回転軸を有し、パーツ（１６０）を機械工作する工作機械システム（１００）の移動を制御する方法であって、
前記パーツ（１６０）の第１の位置を工具（１４１）と接触させる段階と、
前記工具（１４１）を移動させる第２の位置を識別する段階と、
前記複数の回転軸のそれぞれについての複数の可能なソリューションから、前記複数の回転軸のそれぞれについての最短角度横断ソリューションを選択する段階と、
を備える方法。
【請求項２２】
傾斜軸を含む複数の回転軸を有し、パーツ（１６０）を機械工作する工作機械システム（１００）の移動を制御する方法であって、
前記パーツ（１６０）の第１の位置を工具（１４１）と接触させる段階と、
前記工具（１４１）を移動させる第２の位置を識別する段階と、
特定の傾斜軸優先に基づき、前記複数の回転軸のそれぞれについての複数の可能なソリューションから、前記複数の回転軸のそれぞれについての第１のソリューションを選択する段階と、
を備え、
前記第１のソリューションは、前記傾斜軸優先を満たす前記傾斜軸についての傾斜角度を有する、方法。
【請求項２３】
複数の可動軸を有し、パーツ（１６０）を機械加工する工作機械システム（１００）の移動を制御する方法であって、
前記パーツ（１６０）の第１の位置を工具（１４１）と接触させる段階と、
前記工具（１４１）を移動させる第２の位置を識別する段階と、
２段階補間方法を用い、前記第１の位置と前記第２の位置との間で複数の補間位置を決定する段階と、
を備える方法。
【請求項２４】
前記２段階補間方法は、第１の複数の前記補間位置を決定する第１段階と、許容範囲条件、および、第２の複数の前記補間位置を有する第２段階とを含み、前記第２の複数の補間位置は、前記許容範囲条件の違反により、前記第２段階で決定される、請求項２３に記載の方法。
【請求項２５】
少なくとも１つの工具（１４１）によりパーツ（１６０）を機械加工する装置であって、
フレーム（１０２）と、
前記フレーム（１０２）により支持されて、前記フレーム（１０２）に対して移動可能であり、前記パーツ（１６０）を支持する可動サポート（１０４、１１０、１２０）と、
前記フレーム（１０２）により支持されて、前記パーツ（１６０）に対して移動可能であり、前記少なくとも１つの工具（１４１）に結合される工作機械スピンドル（１３８）と、
前記工作機械スピンドル（１３８）、および、前記可動サポート（１０４、１１０、１２０）に結合されるモーションコントロールシステムと、を備え、
前記可動サポート（１０４、１１０、１２０）、および、前記工作機械スピンドル（１３８）は、複数の可動軸（１５０、１５２、１５４、１５６、１５８）を含み、
前記モーションコントロールシステムは、前記工作機械スピンドル（１３８）、および、前記可動サポート（１０４、１１０、１２０）の前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）の制御された移動により、前記パーツ（１６０）の機械加工を実行し、前記モーションコントロールシステムは、前記パーツ（１６０）の第１の位置を第１の工具（１４１）と接触させ、前記第１の工具（１４１）を前記パーツ（１６０）と接触させた状態で、前記第１の工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から第２の位置へと移動させ、前記第１の工具（１４１）は、工作機械システム（１００）の機械固有ポイント（４９０）を通じて補間を行う、装置。
【請求項２６】
前記モーションコントロールシステムは、前記第１の工具（１４１）を、
前記パーツ（１６０）に関し前記第１の位置から、前記機械固有ポイント（４９０）と略位置合わせされる中間位置まで移動させ、前記中間位置を軸にして回転させ、前記第１の工具（１４１）を、前記パーツ（１６０）に関し前記中間位置から前記第２の位置まで移動させることにより、前記第１の工具（１４１）を、前記パーツ（１６０）と接触させた状態で、前記第１の位置から前記第２の位置へと移動させる、請求項２５に記載の装置。
【請求項２７】
少なくとも１つの工具（１４１）によりパーツ（１６０）を機械加工する装置であって、
フレーム（１０２）と、
前記フレーム（１０２）により支持されて、前記フレーム（１０２）に対して移動可能であり、前記パーツ（１６０）を支持する可動サポート（１０４、１１０、１２０）と、
前記フレーム（１０２）により支持されて、前記パーツ（１６０）に対して移動可能であり、前記少なくとも１つの工具（１４１）に結合される工作機械スピンドル（１３８）と、
前記工作機械スピンドル（１３８）、および、前記可動サポート（１０４、１１０、１２０）に結合されるモーションコントロールシステムと（２００）、を備え、
前記可動サポート（１０４、１１０、１２０）、および、前記工作機械スピンドル（１３８）は、複数の可動軸（１５０、１５２、１５４、１５６、１５８）を含み、
前記モーションコントロールシステム（２００）は、前記工作機械スピンドル（１３８）および、前記可動サポート（１０４、１１０、１２０）の前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）の制御された移動により、前記パーツ（１６０）の機械加工を実行し、前記モーションコントロールシステム（２００）は、前記パーツ（１６０）の第１の位置を第１の工具（１４１）と接触させ、前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）のうちの複数の回転軸のそれぞれについての最短角度横断ソリューションを、前記複数の回転軸のそれぞれについての複数の可能なソリューションから選択することにより、前記第１の工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から第２の位置まで移動させる、装置。
【請求項２８】
少なくとも１つの工具（１４１）によりパーツ（１６０）を機械加工する装置であって、
フレーム（１０２）と、
前記フレーム（１０２）により支持されて、前記フレーム（１０２）に対して移動可能であり、前記パーツ（１６０）を支持する可動サポート（１０４、１１０、１２０）と、
前記フレーム（１０２）により支持されて、前記パーツ（１６０）に対して移動可能であり、前記少なくとも１つの工具（１４１）に結合される工作機械スピンドル（１３８）と、
前記工作機械スピンドル（１３８）、および、前記可動サポート（１０４、１１０、１２０）に結合されるモーションコントロールシステム（２００）と、を備え、
前記可動サポート（１０４、１１０、１２０）、および、前記工作機械スピンドル（１３８）は、複数の可動軸（１５０、１５２、１５４、１５６、１５８）を含み、
前記モーションコントロールシステム（２００）は、前記工作機械スピンドル（１３８）および、前記可動サポート（１０４、１１０、１２０）の前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）の制御された移動により、前記パーツ（１６０）の機械加工を実行し、前記モーションコントロールシステム（２００）は、前記パーツ（１６０）の第１の位置を第１の工具（１４１）と接触させ、特定の傾斜軸優先に基づき、前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）のうちの複数の回転軸のそれぞれについての第１のソリューションを、前記複数の回転軸のそれぞれについての複数の可能なソリューションから選択することにより、前記第１の工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から第２の位置まで移動させ、前記第１のソリューションは、前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）のうちの傾斜軸についての傾斜軸優先を満たす傾斜角度を有する、装置。
【請求項２９】
少なくとも１つの工具（１４１）によりパーツ（１６０）を機械加工する装置であって、
フレーム（１０２）と、
前記フレーム（１０２）により支持されて、前記フレーム（１０２）に対して移動可能であり、前記パーツ（１６０）を支持する可動サポート（１０４、１１０、１２０）と、
前記フレーム（１０２）により支持されて、前記パーツ（１６０）に対して移動可能であり、前記少なくとも１つの工具（１４１）に結合される工作機械スピンドル（１３８）と、
前記工作機械スピンドル（１３８）、および、前記可動サポート（１０４、１１０、１２０）に結合されるモーションコントロールシステムと、を備え、
前記可動サポート（１０４、１１０、１２０）、および、前記工作機械スピンドル（１３８）は、複数の可動軸（１５０、１５２、１５４、１５６、１５８）を含み、
前記モーションコントロールシステム（２００）は、前記工作機械スピンドル（１３８）および、前記可動サポート（１０４、１１０、１２０）の前記複数の可動軸（１５０、１５２、１５４、１５６、１５８）の制御された移動により、前記パーツ（１６０）の機械加工を実行し、前記モーションコントロールシステム（２００）は、前記パーツ（１６０）の第１の位置を第１の工具（１４１）と接触させ、２段階補間方法を用いて、前記第１の位置と第２の位置との間で複数の補間位置を決定することにより、前記第１の工具（１４１）を、前記パーツ（１６０）に関し前記第１の位置から前記第２の位置まで移動させる、装置。
【請求項３０】
前記２段階補間方法は、第１の複数の前記補間位置を決定する第１段階と、許容範囲条件、および、第２の複数の前記補間位置を有する第２段階とを含み、前記第２の複数の補間位置は、前記許容範囲条件の違反により前記第２段階で決定される、請求項２９に記載の装置。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００６年８月４日に出願の米国特許仮出願番号第６０／８２１，５２３号、発明の名称「ＫＩＮＥＭＡＴＩＣＳ  ＣＯＭＰＥＮＳＡＴＩＯＮ  ＯＢＪＥＣＴ  ＯＲＩＥＮＴＥＤ  ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＭＡＣＨＩＮＥ  ＴＯＯＬ  ＣＯＮＴＲＯＬ」代理人整理番号ＨＵＲ−Ｐ１９８、および、２００６年８月４日に出願の米国特許仮出願番号第６０／８２１，５０３号、発明の名称「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＴＯＯＬ  ＣＥＮＴＥＲ  ＰＯＩＮＴ  ＭＡＮＡＧＥＭＥＮＴ」代理人整理番号ＨＵＲ−Ｐ１９７の優先の恩恵を主張し、それぞれのソースコード付録を含むその開示内容は、参照により明確に本願明細書に組み込む。
【０００２】
さらに本出願は、２００７年８月３日に出願の米国特許出願番号第１１／８３３，９５８号、発明の名称「ＭＡＣＨＩＮＥ  ＴＯＯＬ  ＳＹＳＴＥＭ  ＣＯＮＴＲＯＬ」代理人整理番号ＨＵＲ−Ｐ１９７−ＵＳ−０１、および、２００７年８月３日に出願の米国特許出願番号第１１／８３３，９７１号、発明の名称「ＧＥＮＥＲＡＬＩＺＥＤ  ＫＩＮＥＭＡＴＩＣＳ  ＳＹＳＴＥＭ」代理人整理番号ＨＵＲ−Ｐ１９８−ＵＳ−０１に関連し、その開示内容を参照により明確に本願明細書に組み込む。
【技術分野】
【０００３】
本発明は、工作機械制御ソフトウェアに関する。より詳しくは、本発明の分野は、オブジェクト指向工作機械制御ソフトウェア用の工作機械制御ソフトウェア、および、当該工作機械制御ソフトウェアの動作に関する。
【背景技術】
【０００４】
オブジェクト指向工作機械制御システムは、リアルタイムの工作機械ソフトウェアシステム制御を提供し、それによって、システム責務は、工作機械の製造業者またはシステムインテグレータが複雑性および変化を管理することが可能なクラスに分割されることができる。工作機械制御システムの一例は、本発明の代理人に譲渡された米国特許第５，４５３，９３３号に開示されており、その開示内容は、参照により本願明細書中に組み込まれる。当該９３３特許のシステムは、ソフトウェアを大幅に再設計または変更することなく、手順のコアセットから異なるシステムを作成することを可能にする。
【０００５】
９３３特許の制御システムは、技術者によるシステムの変更を容易にする。なぜなら、技術者は、１つのクラスの単一の構成要素に修正を加えるためにシステム全体を熟知している必要はないからである。１つの変更は、システム全体に及ぶ波及効果をもたない。ユーザインターフェースおよびデバイスドライバなど、システムで最も変化する可能性のある部分は、カーネルから分離される。これらの構成要素は、ＰＬＣプログラム、マシンクラスへのカスタマイゼーション、および、オペレータプログラムへの追加または修正を通じて変更されやすい。
【発明の概要】
【０００６】
本開示の例示的実施形態において、工作機械システムにモーションコントロールシステムが導入される。本開示の一例では、モーションコントロールシステムは、さまざまな工作機械システムをモデル化しうる汎用キネマティクスライブラリを含む。さらなる例では、汎用キネマティクスライブラリの複数の例は、特定の工作機械システム、または、他の工作機械システム用データを提供するために生成される。
【０００７】
本開示のさらなる例示的実施形態では、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、パーツを工具と接触させる段階と、工具をパーツと接触させた状態で、パーツに関して第１の位置から第２の位置へと移動させる段階とを備える。工具は、工作機械システムの機械固有ポイントを通じて補間を行う。
【０００８】
本発明の他の例示的実施形態では、パーツを機械加工する工作機械システムの複数の可動軸の位置情報を決定する方法が提供される。方法は、複数の異なる工具位置入力タイプを許容するカスケード方法を提供する段階と、複数の異なる入力タイプの１つに対応する第１の工具位置を受信する段階と、受信された第１の工具位置に基づき、カスケード方法を用いて位置情報を決定する段階と、を備える。
【０００９】
本開示のさらなる例示的実施形態では、複数の回転軸を有し、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、パーツの第１の位置を工具と接触させる段階と、工具を移動させる第２の位置を識別する段階と、複数の回転軸のそれぞれについての複数の可能なソリューションから、複数の回転軸のそれぞれについての最短角度横断ソリューションを選択する段階と、を備える。
【００１０】
本開示のさらなる他の例示的実施形態では、傾斜軸を含む複数の回転軸を有し、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、パーツの第１の位置を工具と接触させる段階と、工具を移動させる第２の位置を識別する段階と、特定の傾斜軸優先に基づき、複数の回転軸のそれぞれについての複数の可能なソリューションから、複数の回転軸のそれぞれについての第１のソリューションを選択する段階と、を備える。第１のソリューションは、傾斜軸優先を満たす、傾斜軸についての傾斜角度を有する。
【００１１】
本開示のさらなる例示的実施形態では、複数の可動軸を有し、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、パーツの第１の位置を工具と接触させる段階と、工具を移動させる第２の位置を識別する段階と、２段階補間方法を用い、第１の位置と第２の位置との間で複数の補間位置を決定する段階と、を備える。
【００１２】
本開示のさらなる他の例示的実施形態では、少なくとも１つの工具を用いてパーツを機械加工する装置が提供される。装置は、フレームと、フレームによって支持され、フレームに関して移動可能であり、パーツを支持する可動サポートと、フレームによって支持され、パーツに関して移動可能な工作機械スピンドルと、工作機械スピンドルおよび可動サポートに結合されるモーションコントロールシステムと、を備える。工作機械スピンドルは、少なくとも１つの工具に結合され、可動サポートおよび工作機械スピンドルは、複数の可動軸を含む。モーションコントロールシステムは、工作機械スピンドルおよび可動サポートの複数の可動軸の制御された移動により、パーツの機械加工を行う。モーションコントロールシステムは、パーツの第１の位置を工具と接触させ、第１の工具を、パーツと接触させた状態で、パーツに関し第１の位置から第２の位置に移動させる。第１の工具は、工作機械システムの機械固有ポイントを通じて補間を行う。
【００１３】
本開示のさらなる他の例示的実施形態では、少なくとも１つの工具を用いてパーツを機械加工する装置が提供される。装置は、フレームと、フレームによって支持され、フレームに関して移動可能であり、パーツを支持する可動サポートと、フレームによって支持され、パーツに関して移動可能な工作機械スピンドルと、工作機械スピンドルおよび可動サポートに結合されるモーションコントロールシステムと、を備える。工作機械スピンドルは、少なくとも１つの工具に結合され、可動サポートおよび工作機械スピンドルは、複数の可動軸を含む。モーションコントロールシステムは、工作機械スピンドルおよび可動サポートの複数の可動軸の制御された移動により、パーツの機械加工を実行し、モーションコントロールシステムは、パーツの第１の位置を工具と接触させ、複数の回転軸のそれぞれについての複数の可能なソリューションから、複数の可動軸の複数の回転軸についての最短角度横断ソリューションを選択することにより、第１の工具をパーツに関し第１の位置から第２の位置まで移動させる。
【００１４】
本開示のさらなる他の例示的実施形態では、少なくとも１つの工具を用いてパーツを機械加工する装置が提供される。装置は、フレームと、フレームによって支持され、フレームに関して移動可能であり、パーツを支持する可動サポートと、フレームによって支持され、パーツに関して移動可能な工作機械スピンドルと、工作機械スピンドルおよび可動サポートに結合されるモーションコントロールシステムと、を備える。工作機械スピンドルは、少なくとも１つの工具に結合され、可動サポートおよび工作機械スピンドルは、複数の可動軸を含む。モーションコントロールシステムは、工作機械スピンドルおよび可動サポートの複数の可動軸の制御された移動により、パーツの機械加工を行う。モーションコントロールシステムは、パーツの第１の位置を工具と接触させ、特定の傾斜軸優先に基づき、複数の回転軸のそれぞれについての複数の可能なソリューションから、複数の可動軸の複数の回転軸のそれぞれについての第１のソリューションを選択することにより、第１のツールを、パーツに関し第１の位置から第２の位置へと移動させる。第１のソリューションは、複数の可動軸のうちの１つの傾斜軸についての傾斜軸優先を満たす傾斜角度を有する。
【００１５】
本開示のさらなる他の例示的実施形態では、少なくとも１つの工具を用いてパーツを機械加工する装置が提供される。装置は、フレームと、フレームによって支持され、フレームに関して移動可能であり、パーツを支持する可動サポートと、フレームによって支持され、パーツに関して移動可能な工作機械スピンドルと、工作機械スピンドルおよび可動サポートに結合されるモーションコントロールシステムと、を備える。工作機械スピンドルは、少なくとも１つの工具に結合され、可動サポートおよび工作機械スピンドルは、複数の可動軸を含む。モーションコントロールシステムは、工作機械スピンドルおよび可動サポートの複数の可動軸の制御された移動により、パーツの機械加工を行う。モーションコントロールシステムは、パーツの第１の位置を工具と接触させ、２段階補間方法を用い、第１の位置と第２の位置との間で複数の補間位置を決定することにより、第１の工具を、パーツに関し、第１の位置から第２の位置まで移動させる。
【００１６】
本開示のさらなる例示的実施形態では、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、工作機械システムに対応する機械構成を受信する段階と、機械構成、および、汎用キネマティクスライブラリに基づき、仮想キネマティクスマシンを生成する段階と、パーツの形状に対応する入力データを受信する段階と、仮想キネマティクスマシンおよび入力データに基づき、工作機械システムの複数の可動軸についての位置を生成する段階と、を備え、機械構成は、工作機械システムの複数の可動軸と、それらの間の複数の相互依存性とを識別する。
【００１７】
本開示のさらなる他の例示的実施形態では、複数の可動軸を有し、パーツを機械加工する工作機械システムの移動を制御する方法が提供される。方法は、パーツの形状に対応する入力データを受信する段階と、工作機械システムの機械構成、および、汎用キネマティクスライブラリに基づき、第１の仮想キネマティクスマシンを生成する段階と、工作機械システムの機械構成、および、汎用キネマティクスライブラリに基づき、第２の仮想キネマティクスマシンを生成する段階と、を備え、第１の仮想キネマティクスマシンは、入力データに基づき、工作機械システムの複数の可動軸についての位置を生成し、第２の仮想キネマティクスマシンは、工作機械システムの移動可能な部分についての位置情報を生成する。
【００１８】
本開示のさらなる他の例示的実施形態では、ソフトウェアコントローラにより、複数の工作機械システムをプログラムする方法が提供される。方法は、ソフトウェアコントローラによりアクセス可能な汎用キネマティクスライブラリを提供する段階と、第１の工作機械システムに対応する第１の構成を有する第１の仮想キネマティクスマシンを生成する段階と、第２の工作機械システムに対応する第２の構成を有する第２の仮想キネマティクスマシンを生成する段階と、を備える。第１の仮想キネマティクスマシンは、汎用キネマティクスライブラリに基づく。第２の仮想キネマティクスマシンも、汎用キネマティクスライブラリに基づく。
【００１９】
本開示の他の例示的実施形態では、少なくとも１つの工具を用いてパーツを機械加工する装置が提供される。装置は、フレームと、フレームによって支持され、フレームに関して移動可能であり、パーツを支持する可動サポートと、フレームによって支持され、パーツに関して移動可能な工作機械スピンドルと、工作機械スピンドルおよび可動サポートに結合されるモーションコントロールシステムと、を備える。工作機械スピンドルは、少なくとも１つの工具に結合され、可動サポートおよび工作機械スピンドルは、複数の可動軸を含む。モーションコントロールシステムは、工作機械スピンドル、および、可動サポートの複数の可動軸の制御された移動により、パーツの機械加工を行う。複数の可動軸の制御された移動は、汎用キネマティクスライブラリのインスタンスによって提供される。インスタンスは、複数の可動軸に対応する複数の仮想軸を含む。
【００２０】
本開示のさらなる例示的実施形態では、工作機械システムのソフトウェアコントローラを構成する方法が提供される。方法は、ソフトウェアコントローラによりアクセス可能な汎用キネマティクスライブラリを提供する段階と、複数の直交する可動軸を有する工作機械システムの構成に関する情報を受信する段階と、工作機械システムの構成に関する受信された情報に基づき、工作機械システムに対応する汎用キネマティクスライブラリのインスタンスを生成する段階と、汎用キネマティクスライブラリのインスタンスによって、複数の直交する可動軸の移動を制御する段階と、を備える。
【００２１】
本開示のさらなる例示的実施形態では、パーツを機械加工する工作機械システムの複数の可動軸の移動を制御する、コンピュータ実行可能命令を有するコンピュータ可読媒体が提供される。コンピュータ実行可能命令は、汎用キネマティクスライブラリの命令を含み、命令は、工作機械システムの構成に基づき、汎用キネマティクスライブラリのインスタンスを生成させ、汎用キネマティクスライブラリのインスタンスに対し入力データを提供させ、汎用キネマティクスライブラリから出力データを取得させる。出力データは、複数の可動軸の移動に関する。
【図面の簡単な説明】
【００２２】
本発明の上記および他の特徴および目的、また、それらを為し得る方法は、添付の図面に関連して採り上げられる本発明の一実施形態の詳細な説明を参照することにより、より明らかとなり、発明自体の理解もより深まるであろう。
【００２３】
【図１】典型的な工作機械システムを示す。
【００２４】
【図２】図１の典型的な工作機械システムのモーションコントロールシステムの代表図である。
【００２５】
【図３】軸オブジェクトの代表図である。
【００２６】
【図４Ａ】回転Ｃ軸に関する特徴を提供するためのユーザインターフェースの典型的な入力スクリーンを示す。
【図４Ｂ】回転Ｃ軸に関する特徴を提供するためのユーザインターフェースの典型的な入力スクリーンを示す。
【００２７】
【図５Ａ】回転Ｃ軸に関する特徴を提供するためのユーザインターフェースの典型的な入力スクリーンを示す。
【図５Ｂ】回転Ｃ軸に関する特徴を提供するためのユーザインターフェースの典型的な入力スクリーンを示す。
【００２８】
【図６】図１の工作機械システムの複数の軸の間の相互依存性を特定する典型的な入力スクリーンを示す。
【００２９】
【図７Ａ】工具マトリックススタック、および、パーツマトリックススタックの代表図である。
【図７Ｂ】工具マトリックススタック、および、パーツマトリックススタックの代表図である。
【００３０】
【図８】図２のモーションコントロールシステムのカスケードを示す代表図である。
【００３１】
【図９Ａ】図１の工作機械システムの傾斜軸の回転角度を決定する方法を示す。
【図９Ｂ】図１の工作機械システムの傾斜軸の回転角度を決定する方法を示す。
【図９Ｃ】図１の工作機械システムの傾斜軸の回転角度を決定する方法を示す。
【００３２】
【図１０Ａ】さまざまな工作機械システムの機械固有ポイントを示す。
【図１０Ｂ】さまざまな工作機械システムの機械固有ポイントを示す。
【図１０Ｃ】さまざまな工作機械システムの機械固有ポイントを示す。
【００３３】
【図１１Ａ】図１の工作機械システムの機械固有ポイントを示す。
【００３４】
【図１１Ｂ】正の傾斜軸優先に対応する傾斜角度を示す。
【００３５】
【図１１Ｃ】負の傾斜軸優先に対応する傾斜角度を示す。
【００３６】
【図１２Ａ】機械固有ポイントを軸として回転する間、工具がパーツと接触状態にあることを示す。
【図１２Ｂ】機械固有ポイントを軸として回転する間、工具がパーツと接触状態にあることを示す。
【図１２Ｃ】機械固有ポイントを軸として回転する間、工具がパーツと接触状態にあることを示す。
【図１２Ｄ】機械固有ポイントを軸として回転する間、工具がパーツと接触状態にあることを示す。
【００３７】
【図１３Ａ】機械固有ポイントにおいて最後の位置から工具ベクトルを補間し、機械固有ポイントを軸として回転させ、機械固有ポイントから次の工具位置に工具ベクトルを補間する方法を示す。
【００３８】
【図１４Ａ】最後の工具ベクトル位置、および、次の工具ベクトル位置を示す。
【００３９】
【図１４Ｂ】座標系の起点についての最後の位置に対する工具ベクトル、および、次の位置に対する工具ベクトルによって定義され、機械固有ポイントと一致する工具ベクトルを含む平面を示す。
【００４０】
【図１４Ｃ】最後の位置から次の位置のソリューション♯１までの移動を示す。
【００４１】
【図１５Ａ】機械固有ポイントにおいて最後の位置から工具ベクトルを補間し、機械固有ポイントを軸として回転させ、機械固有ポイントから次の工具位置に工具ベクトルを補間する方法を示す。
【図１５Ｂ】機械固有ポイントにおいて最後の位置から工具ベクトルを補間し、機械固有ポイントを軸として回転させ、機械固有ポイントから次の工具位置に工具ベクトルを補間する方法を示す。
【図１５Ｃ】機械固有ポイントにおいて最後の位置から工具ベクトルを補間し、機械固有ポイントを軸として回転させ、機械固有ポイントから次の工具位置に工具ベクトルを補間する方法を示す。
【００４２】
【図１６Ａ】最後の位置、および、次の位置の第１のソリューションを示す。最後の位置と、次の位置の第１のソリューションとは、どちらも機械固有ポイントの同じ側に負の傾斜角度を有している。
【図１６Ｂ】最後の位置、および、次の位置の第１のソリューションを示す。最後の位置と、次の位置の第１のソリューションとは、どちらも機械固有ポイントの同じ側に負の傾斜角度を有している。
【００４３】
【図１７Ａ】最後の位置、および、回転軸が１８０度回転する傾斜軸優先側に傾斜軸角度を有する次の位置の第１のソリューションを示す。
【図１７Ｂ】最後の位置、および、回転軸が１８０度回転する傾斜軸優先側に傾斜軸角度を有する次の位置の第１のソリューションを示す。
【００４４】
【図１７Ｃ】図１７Ｂにおける第１のソリューションの傾斜軸角度が、回転軸が回転しない傾斜軸優先側にない場合に選ばれる、図１７Ａの次の位置の第２のソリューションを示す。
【００４５】
【図１８Ａ】工具ベクトルは固有ポイントを通じて補間すべきでなく、正しいソリューション♯２が選択されるべきケースを示す。
【図１８Ｂ】工具ベクトルは固有ポイントを通じて補間すべきでなく、正しいソリューション♯２が選択されるべきケースを示す。
【図１８Ｃ】工具ベクトルは固有ポイントを通じて補間されるべきでなく、正しいソリューション♯２が選択されるべきケースを示す。
【００４６】
【図１９】コードエラーを示す。
【００４７】
【図２０】変換平面を示す。
【００４８】
【図２１】傾斜軸優先、および、さまざまなパラメータを特定するための典型的な入力スクリーンを示す。
【００４９】
【図２２】表面法線における表面接点、工具ベクトル、および、工具底部中心点の関係を示す。
【００５０】
【図２３】複数のソリューションを有するケースにおける、工具底部中央点の選択を示す。
【００５１】
【図２４】最後の位置から次の位置までの工具ベクトルの補間を示す。
【００５２】
【図２５】補間された工具ベクトルを示す。
【００５３】
【図２６】ブール決定マトリックスと変換マトリックスとの間の対応を示す。
【００５４】
複数の図面全体を通じて、同じ参照符号は、同じ構成要素を示す。
【発明を実施するための形態】
【００５５】
本願明細書に開示される実施形態により、本発明が以下の詳細な説明において開示される内容に厳密に制限されるようなことは意図していないむしろ、当業者が本発明の教示を利用できるように実施形態は選択され、説明されている。
【００５６】
図１を参照すると、工作機械システム１００は、モーションコントロールシステム２００を有するよう示されている。工作機械システム１００は、第１のサドル１０４が結合されたフレーム１０２を有する。サドル１０４は、方向１０６および１０８に並進可能である。第１のサドル１０４により第２のサドル１１０が支持される。サドル１１０は、サドル１０４に関し、方向１１２および１１４に並進可能である。プラットフォーム１２０は、サドル１１０により支持され、サドル１１０に関し、方向１２２および１２４に並進可能である。一実施形態では、サドル１０４、サドル１１０、および、プラットフォーム１２０のそれぞれは、モーションコントロールシステム２００によって制御されるモータにより移動可能である。
【００５７】
さらに、フレーム１０２によって第３のサドル１２６が支持される。サドル１２６は、方向１２８および１３０に並進可能である。サドル１２６は、回転部材１３２を支持する。回転部材１３２は、サドル１２６に関し、方向１３４および１３６に回転可能である。一実施形態では、サドル１２６、および、回転部材１３２のそれぞれは、モーションコントロールシステム２００によって制御されるモータにより移動可能である。
【００５８】
工具スピンドル１３８は、プラットフォーム１３２により支持される。さまざまな工具１４１は、工具スピンドル１３８に結合されて、工作機械システム１００に関係するさまざまな動作を実行する。典型的な工具は、エンドミル、ドリル、タップ、リーマ、および、他の適切な工具を含む。工具スピンドル１３８は、工具スピンドル軸１３９を軸として回転か王であり、回転を工具１４１に入力することができる。一実施形態では、複数の工具１４１は、工具カルーセル１４４に格納される。工具カルーセル１４４についてのさらなる詳細は、米国特許仮出願第６０／８２１，４８１号に開示されており、その内容は、参照により本願明細書に明確に組み込まれる。
【００５９】
サドル１０４の、方向１０６または方向１０８における移動は、ｙ軸１５０における移動として示される。サドル１１０の、方向１１２または方向１１４における移動は、ｘ軸１５２における移動として示される。サドル１２６の、方向１２８および方向１３０における移動は、ｚ軸１５４における移動として示される。回転部材１３２の、方向１３４または方向１３６における回転は、Ｂ軸１５６における移動として示される。プラットフォーム１２０の、方向１２２または方向１２４における回転は、Ｃ軸１５８における移動として示される。工作機械システム１００は、典型的な５軸マシンである。一実施形態では、Ｂ軸１５６またはＣ軸１５８は、Ａ軸と交換され、その場合、プラットフォーム１２０は、ｘ軸１５２またはｙ軸１５０に関して傾くことができる。
【００６０】
５軸の工作機械システム１００の１つ以上の移動によって、工具１４１は、機械加工されるよう、プラットフォーム１２０により支持されるパーツ１６０（図９Ａ参照）に関して位置決めされてよい。パーツ１６０がプラットフォーム１２０に固定されることにより、プラットフォーム１２０に対するパーツ１６０の位置は維持されてよい。
【００６１】
５軸の工作機械システム１００の１つ以上の移動は、モーションコントロールシステム２００により制御される。図２を参照すると、モーションコントロールシステム２００は、ソフトウェアコントローラ２０２と、１つ以上のＩ／Ｏモジュール２０６とを有する。本願明細書に開示される方法は、ソフトウェアコントローラ２０２により実行されてよく、ソフトウェアコントローラ２０２に付随する方法で格納されてよいことを理解されたい。
【００６２】
ソフトウェアコントローラ２０２は、機械構成２０８、および、パーツプログラム２０４などの入力データを受信し、工作機械システム１００のそれぞれの軸１５０、１５２、１５４、１５６、および、１５８の位置データなどの出力データを提供する。図２に示された例では、ソフトウェアコントローラ２０２は、１つ以上のＩ／Ｏモジュール２０６からパーツプログラム２０４および機械構成２０８を受信する。機械構成２０８は、工作機械システム１００のそれぞれの軸１５０、１５２、１５４、１５６、および、１５８における依存関係を各軸の属性と共に提供する。例えば、サドル１０４が方向１０６に移動すると、Ｃ軸１５８の位置は変化する。したがって、Ｃ軸１５８の位置は、サドル１０４の位置に依存する。
【００６３】
典型的なＩ／Ｏモジュール２０６は、ユーザインターフェース、タッチディスプレイ、キーボード、マウス、１つ以上のボタンまたはスイッチ、ＣＤドライブ、フロッピードライブ、デタミナーネットワーク（無線または有線の）へのインターフェース、および、ソフトウェアコントローラ２０２に情報を提供する他の適切なデバイスなどの入力部材と、ディスプレイ（タッチスクリーンなど）、ライト、プリンタ、および、情報を提示する他の適切なデバイスなどの出力部材と、を有する。
【００６４】
一実施形態では、パーツプログラム２０４は、オペレーションの対話型モードによって入力されることにより、プログラミングセッション中のユーザには、ユーザインターフェース（タッチスクリーンおよびキーボード）を介して１つ以上のスクリーンが提示される。対話型プログラミング方法の一例は、本出願の代理人に譲渡された米国特許第5,453,933号に開示されており、その開示内容は、参照により本願明細書に組み込まれる。プログラミングセッション中、ユーザは、機械加工するパーツの所望の配置をプログラムして、１つ以上の属性を特定しうる。一例では、ユーザは、それぞれが工具および工具の軌跡を特定するコードのブロックを作成することにより、機械加工されるパーツの所望の配置を特定する。このように、機械加工されるパーツの配置は、当該機械加工されるパーツを作成するために用いられるオペレーションに基づき定義される。
【００６５】
一実施形態では、パーツプログラム２０４は、ＮＣオペレーションモードによって提供され、それによるＮＣプログラムは、ソフトウェアコントローラ２０２にロードされる。パーツプログラムは、標準的なＧ＆Ｍコード言語、または、当該標準的なＧ＆Ｍコード言語に近い、国際規格化機構（ＩＳＯ）、または、電子工業会（ＥＩＡ）ＲＳ−２７４−Ｄに基づく派生語でしばしば表現される。当該コード言語では、Ｇ、Ｍ、Ｆなどの文字により識別されるコードを用いる。コードは、一連の機械加工オペレーションを定義してパーツ製造中のオペレーションを制御する。ソフトウェアコントローラ２０２は、コードを変換して工作機械システム１００のそれぞれの軸１５０、１５２、１５４、１５６、および、１５８の配置を提供する。一実施形態では、パーツプログラム２０４は、ソフトウェアコントローラ２０２のパーサ２２０によって解析される。パーサ２２０は、パーツプログラム２０４を確認してさまざまな配置セグメントを識別する。典型的な配置セグメントは、線および弧を含む。
【００６６】
パーツプログラムは２０４、その起点に関わらず、機械加工されるパーツの所望の配置を直接、または、パーツを作製するために用いられるオペレーションに基づき定義する。しかしながら、パーツプログラム２０４は、サドル１０４、１１０、１２６の位置も、プラットフォーム１２０および回転部材１３２の回転も特定できないかもしれない。これらの位置は、ソフトウェアコントローラ２０２によって決定される。
【００６７】
一実施形態では、ソフトウェアコントローラ２０２は、オブジェクト指向ソフトウェアコンポーネントである。一実施形態では、ソフトウェアコントローラ２０２は、１９９５年９月２６日に公開された米国特許第５，４５３，９３３号、発明の名所「ＣＮＣ  ＣＯＮＴＲＯＬ  ＳＹＳＴＥＭ」に記載されたソフトウェアに基づく。当該特許の開示内容は、参照により本願明細書に組み込まれる。
【００６８】
一実施形態では、ソフトウェアコントローラ２０２は、オブジェクト指向の汎用キネマティクスライブラリ２１０と、１つ以上のホストソフトウェアアプリケーション２１５とを有する。ホストソフトウェアアプリケーション２１５は、ＡＰＩインターフェース２１７などのインターフェースを介して汎用キネマティクスライブラリ２１０のインスタンス（本願明細書中では仮想キネマティクスマシン２１４、２３４、および、２３６として識別される）とインターフェースする。ホストソフトウェアアプリケーション２１５は、リアルタイムミル用のリアルタイムアプリケーション、および、グラフィックアプリケーションなどの、ソフトウェアコントローラ２０２の他の構成要素ともインターフェースする。
【００６９】
汎用キネマティクスライブラリ２１０は、オブジェクトの集合、または、ライブラリ２１０のインスタンスから仮想キネマティクスマシン２１４を生成するために用いられるオブジェクトが導き出されうるクラスを含む。一実施形態では、機械構成２０８がソフトウェアコントローラ２０２に提供される。機械構成２０８に基づき、ソフトウェアコントローラ２０２は、キネマティクスライブラリ２１０から仮想キネマティクスマシン２１４を生成する。仮想キネマティクスマシン２１４は、メモリに格納される。仮想キネマティクスマシン２１４は、機械構成２０８に記載される実際の機械と同じ構成を有する。
汎用キネマティクスライブラリの設計概要
【００７０】
汎用キネマティクスライブラリは、Ｓｅｔデータ関数を介しデータ通信し、Ｇｅｔデータ関数を介しデータを受信するホストソフトウェアアプリケーション２１５を用いるアプリケーションプログラミングインターフェース（ＡＰＩ）２１７を含む。したがって、オブジェクト指向設計パラダイムにより、ホストソフトウェアアプリケーション２１５は、汎用キネマティクスライブラリ２１０内のプライベートメンバーデータ、または、そのインスタンスに直接アクセスすることはできない。
汎用キネマティクスライブラリとのインターフェース
【００７１】
ホストソフトウェアアプリケーション２１５は、Ｇｅｔデータ関数を介しデータ通信し、Ｓｅｔデータ関数を介しデータを受信することにより、オブジェクト指向パラダイムを用いて設計されるＡＰＩ２１７を介して汎用キネマティクスライブラリ２１０とインターフェースする。
汎用キネマティクスライブラリの初期化
【００７２】
オブジェクト指向パラダイムに従い、ホストソフトウェアアプリケーション２１５は、仮想キネマティクスマシン２１４を組み立てるために汎用キネマティクスライブラリ２１４が必要とするデータを用いて、仮想キネマティクスマシンを初期化する。汎用キネマティクスライブラリ２１０のインスタンスを生成することにより、ホストソフトウェアアプリケーション２１５は開始する。初期化手順は、構成ファイル、ユーザ入力、およびまたは、工作機械システム１００のリアルタイム構成要素による自動ドライブ認識を含む多数のソースに由来しうる機械軸についての設定データ２０８を使用する。
【００７３】
ホストソフトウェアアプリケーション２１５は、システム内に存在する各軸を通じて循環し、追加関数ＡｄｄＡｘｉｓ（ＩＤ、接続）を呼び出す。ＡｘｉｓのＩＤは、軸を固有に識別する番号である。典型的な軸ＩＤは、線形および回転軸{x,y,z,a,b,c}に対応するセット{0,1,2,3,4,5}を含む。この関数を呼び出すことにより、汎用キネマティクスライブラリ２１０は、メモリ内に軸オブジェクトを生成し、当該軸オブジェクトは、その後、ホストソフトウェアアプリケーション２１５による軸タイプに必要とされるような以下のデータのいずれかまたはすべてによって初期化されることができる。
【００７４】
各軸は、以下の属性３０３のいくつかまたはすべてを含んでよい。
●ＩＤ
●タイプ（線形／回転／傾斜／スピンドル）
●方向
●座標位置（回転軸の場合は中心線）
●限界
●最高速度
●接続（軸が工具またはパーツに接続されているかどうか）。
【００７５】
適切なデータによってすべての軸が生成されて初期化された後、汎用キネマティクスライブラリのＥｎｄＳｅｔｕｐ（）関数がホストソフトウェアアプリケーション２１５によって呼び出されて機械のキネマティクスを検証し、５軸機械であれば、工具およびパーツマトリックススタック２７０および２８０（図７Ａおよび７Ｂ参照）を組立て、機械固有ポイントの傾斜軸角度を決定する。傾斜軸（Ｂ軸１５８）の固有ポイント傾斜角度は、スピンドル軸が回転軸（Ｃ軸１５６）と一直線にされる角度にされることで決定される。
【００７６】
この時点で汎用キネマティクスライブラリ２１０は、ホストソフトウェアアプリケーション２１５によって使用される準備ができている。通常、汎用キネマティクスライブラリ２１０は、開始位置で初期化し、それぞれさらに詳細に説明される他の初期化モードは、以下の設定にされる。
●最短角度横断
●補間する／しない
●補間する場合、補間タイプ
●傾斜軸優先方向、または、オフ、または、優先方向の強制使用。
汎用キネマティクスライブラリの複数インスタンス
【００７７】
汎用キネマティクスライブラリ２１０の設計は、異なるプロセス（工作機械制御ソフトウェア２００内の異なるホストソフトウェアアプリケーション）用に、ホストソフトウェアアプリケーション２１５が汎用キネマティクスライブラリ２１０の複数のインスタンスを生成できるようになっている。例えば、１つ目のインスタンスは、実際の工作機械システム１００のリアルタイム動作のためのプログラムを翻訳するために用いられる。２つ目のインスタンスは、工作機械システム１００におけるプログラム実行中に、リアルタイムグラフィックス、および、位置データを表示するために用いられる。３つ目のインスタンスは、グラフィック表示のための異なるマシンのプログラムを翻訳するために用いられる。この３つ目のインスタンスにより、ユーザは、ソフトウェアコントローラ２０２が接続される機械以外の機械のパーツ１６０をプログラムし、グラフィック確認を用いてそれらのプログラムをチェックすることができるようになる。汎用キネマティクスライブラリ２１０の各インスタンスは、独立しているが、同時に用いられてよい。
【００７８】
ソフトウェアコントローラ２０２は、汎用キネマティクスライブラリ２１０とホストアプリケーションソフトウェア２１５との間のＡＰＩ層として機能する初期化クラスを含む。この構成により、ソフトウェアコントローラ２０２内の異なる構成要素（すなわち、異なるホストソフトウェアアプリケーション）は、共通の一般的にアクセス可能なシングルトンクラスによって汎用キネマティクスライブラリ２１０のそれらのインスタンスを初期化することができる。ホストソフトウェアアプリケーション２１５は、必要に応じて、異なる機械についてのキネマティクスモデルを修正してもよい。接続される１つのＣＮＣコントローラ２００以外の機械をモデル化すべく修正されうる汎用キネマティクスライブラリ２１０のコンカレントプログラミング・グラフィックインスタンスが一例として挙げられる。また、一実施形態では、汎用キネマティクスライブラリ２１０は、単一のコントローラにより複数の工作機械システムの同時制御を可能にする。
動作制御用の工具位置計算モードでの汎用キネマティクスライブラリの使用
【００７９】
所定の入力タイプ１から４（図８を参照）のいずれかの機械接続位置を決定するＡＰＩは、単純なオーバーロードSetPosition（入力データ）関数であり、当該入力データは、タイプ４からタイプ１までに対応する不可欠なデータである。補間モード、送り速度または時間ステップ、工具情報、および、パーツセットアップは、ＳｅｔＰｏｓｉｔｉｏｎ（入力データ）関数を呼び出す前に設定される。汎用キネマティクスライブラリ２１０は、入力データによりその内部のNextPositionデータオブジェクトをアップデートし、このオブジェクトを用いて次の工具位置を決定する。汎用キネマティクスライブラリ２１０を用いて工具位置を決定する場合、入力動作の接続位置および時間ステップが決定されて、メモリに格納される。汎用キネマティクスライブラリ２１０は、その内部のLastPositionデータオブジェクトを、入力されて決定されたデータを用いてアップデートし、アップデートされたデータは、次の入力工具位置を決定するために用いられる。その後、ホストソフトウェアアプリケーション２１５は、GetPositionData()関数を用いて決定された情報を取得する。GetPositionData()関数は、決定されたデータを含む汎用キネマティクスライブラリ２１０内のクラスにリファレンスを返す関数である。
【００８０】
ホストソフトウェアアプリケーション２１５は、各移動のための機械接続位置、および、時間ステップ以外の追加情報を格納するよう汎用キネマティクスライブラリ２１０を構成することができる。例えば、工具先端部位置は、ワークピースに関連し、工具ベクトル方向は、機械基準座標系２８４に関連する（図７Ａ参照）。
計算モードでの汎用キネマティクスライブラリの使用
【００８１】
汎用キネマティクスライブラリ２１０は、純粋な計算モードで用いられてよい。その場合、LastPosition内部データオブジェクトは、決定された工具位置でアップデートされることはない。このことは、機械の限界に対する指向性格納平面のクリッピングポイントを計算するなど、ホストソフトウェアアプリケーションにおける工具経路について論理的な意思決定をする場合に有益でありうる。ＡＰＩは、単純なオーバーロードDeterminePosition(入力データ)関数であり、入力データは、タイプ４からタイプ１に対応する不可欠なデータである。DeterminePositionを呼び出す前に、不可欠な機械状態を設定しなければならない。これは、前のセクションで説明されたSetPosition用いることと同じである。
【００８２】
汎用キネマティクスライブラリ２１０は、入力工具位置のための機械接続角度を計算することに加え、モデル化される機械のキネマティクスリンクにおける任意の座標系に関する工具先端部および工具ベクトルデータも決定してよい。一例は、機械接続位置および角度が与えられた機械基準標における工具ベクトルの計算である。すなわち、GetToolVectorWrtMachine(機械接続位置)であり、機械接続位置は、関連した軸の位置すべてを含むベクトルである。この呼び出し関数は、汎用キネマティクスライブラリ２１０の内部LastPositionデータオブジェクトをアップデートしない。
仮想キネマティクスマシン
【００８３】
汎用キネマティクスライブラリ２１０は、コード全体で共有されうる単一のライブラリソースにおけるキネマティクスの計算を集約する。ライブラリの一般化は、５軸までのあらゆる直交工作機械システムの仮想キネマティクスマシンを生成するライブラリ用手段を提供する。一実施形態では、これは、ライブラリ内に工作機械システム１００の仮想数学的モデルが生成されるオブジェクト指向設計により達成される。汎用キネマティクスライブラリ２１０は、オブジェクト指向設計を有するので、５つまでの直交軸をもつ工作機械システムと共に用いられると本願明細書には記載されているが、非直交システム用、および、５軸より多いシステム用にも特化されうる。オブジェクト指向設計は、１から５軸までのいかなる直交工作機械システムをモデルとすべく、接続してそれ自体を構成しうるプラグアンドプレイライブラリを生成する柔軟性を提供する。さらに、本願明細書中では、モーションコントロールシステム２００は、工作機械システム１００と共に用いると記載されているが、ロボットを含むいかなるタイプのモーションシステムと共に用いられてよい。
【００８４】
仮想キネマティクスマシン２１４は、本願明細書で採り上げられる１つ以上のマトリックススタックに基づく。これら図７Ａおよび７Ｂにおける２７０および２８０などのマトリックススタックは、工作機械システム１００のそれぞれの軸１５０、１５２、１５４、１５６、および、１５８の１つ以上の特性を表す。工作機械システム１００の追加の特性もマトリックススタック２１６に含まれる。例えば、パーツ１６０は、プラットフォーム１２０に結合される。
軸オブジェクト
【００８５】
図３を参照すると、工作機械システム１００のそれぞれの軸１５０、１５２、１５４、１５６、および、１５８がオブジェクトとして示されている。軸オブジェクトは、図３に示された一般的な軸クラス３０２から導かれる。軸クラス３０２は、すべての軸オブジェクトについてのベースクラスであり、軸オブジェルトの属性および方法を定義する。軸クラス３０２は、さまざまな軸属性３０３、および、変換マトリックス３０５を含む。軸ベースクラス３０２は、導出されたすべての軸オブジェクトが所有する共通データおよび方法を含む。
【００８６】
軸ベースクラス３０２に含まれるデータのリストを以下に示す。
Axis ID= {X,Y,Z,A,B,C,S}に対応するinteger {0,1,2,3,4,5,6,7}
Name = ストリング {"X","Y","Z","A","B","C","S")
Type = エミュレーション {Linear, Rotary, Tilt, Spindle}
Position = 軸位置
Matrix = 軸変換マトリックス
Connection =エミュレーション {Tool, Part}
MinPosition = キネマティクスの下限
MaxPosition = キネマティクスの上限
AxisLimitsExists =ブール{True, False}
InitialMachineDirectionVector =正の軸移動方向を表す機械参照フレーム内のベクトル。回転軸では、右側正回転についての軸中心線のベクトル方向
MaxContourSpeed = 補間速度
MaxRapidSpeed = 高速移動
方法：いくつかの方法は、上記データのそれぞれの関数Set()およびGet()を含む軸ベースクラスに含まれる。
【００８７】
軸クラス３０２からは、線形軸３２０、スピンドル軸３２１、および、回転軸３２２からなるの３つの派生クラスが導かれる。スピンドル軸クラス３２１は、軸ベースクラスから導かれる。軸ベースクラス２０２のデータおよび方法に加えて、スピンドル軸クラス３２１は、以下を含む。
データ：
Location =関係する軸に関連するスピンドル座標系の起点。
方法：
SetAxisS( ) = 初期化関数
SetInitSpindleAxisDirectionWrtMachine(DirectionVector) = ベースの軸クラスからInitialMachineDirectionVector を設定するための関数
SetLocationWrtLastAxis( ) = 関係する最後の軸に関連するスピンドル座標系の位置を設定するための関数
【００８８】
線形軸クラス３２０は、軸ベースクラス３０２から導かれる。軸ベースクラスデータ３０２および方法に加えて、線形軸クラス３２０は、以下を含む。
方法：Translate( ) = ベクトルを並進させ、マトリックスを線形軸並進マトリックスで乗じるための関数
SetAxis(x,y,z) = 初期化関数
【００８９】
回転軸クラス３２２は、軸ベースクラス３０２から導かれる。軸ベースクラス３０２のデータおよび方法に加えて、回転軸クラス３２２は、以下を含む。
データ：Centerline =回転軸の位置
方法：SetAxis(a,b,c) = 初期化関数
Rotate( ) = ベクトルを回転させるか、または、マトリックスを回転で乗じるための関数GetPerpendicularDistanceToAxis(Point) =垂直な半径方向距離を回転軸に返すための関数
【００９０】
機械構成２０８に基づき、仮想キネマティクスマシン２１４は、図１の軸１５０、１５２、１５４、１５６、および、１５８に対応する５つの機械固有軸オブジェクト２５０、２５２、２５４、２５６、および、２５８を含む。Ｉ／Ｏモジュール２０６のユーザインターフェースの典型的な入力スクリーンは、Ｃ軸２５８（図４Ａおよび４Ｂ）、および、Ｂ軸２５６（図５Ａおよび５Ｂ）についてのいくつかの典型的な属性情報を特定するために設けられる。
【００９１】
図４Ａおよび４Ｂを参照すると、属性情報は、Ｉ／Ｏモジュール２０６のユーザインターフェース３２８を介してＣ軸２５８に対して特定される。図４Ａでは、回転構成タイプ属性３３０は、フル回転に設定され、最高速度属性３３２、および、角度デフォルト位置属性３３４(が設定される)。図４Ｂを参照すると、Ｃ軸２５８の中心線属性３２４は、ｘ軸２５２からのオフセット３３６、および、y軸２５０からのオフセット３３８として定義される。
【００９２】
図５Ａおよび５Ｂを参照すると、属性情報は、Ｉ／Ｏモジュール２０６のユーザインターフェース３２８を介してＢ軸２５６に対して特定される。図４Ａでは、回転構成タイプ属性３３０は、傾斜回転に設定され、最高速度属性３３２、較正ホームポジション３４０、マイナス方向の移動量限界３４２、および、プラス方向の移動量限界３４４が設定される。図５Ｂを参照すると、Ｂ軸２５８の中心線属性３２４は、ｘ軸２５２からのオフセット３４６、および、y軸２５０からのオフセット３４８として定義される。
【００９３】
線形軸２５０、２５２、および、２５４についてのオペレータからの同様の属性情報は、Ｉ／Ｏモジュール２０６を介し、モーションコントロールシステム２００によって受信される。さらに、追加の属性が、回転軸２５６および２５８に対して提供されてよい。図３から５に示された属性３０３および変換３０５は、例に過ぎず、限定を意図しない。
【００９４】
すべての軸が定義されると、モーションコントロールシステム２００が、それぞれの軸１５０、１５２、１５４、１５６、および、１５８の間の相互依存性をオペレータから受信することにより、仮想キネマティクスマシン２１４は、対応する軸オブジェクト２５０、２５２、２５４、２５６、および、２５８の間に同じ相互依存性を有するようになる。軸２５０、２５２、２５４、２５６、および、２５８の間の相互依存性を設定するための、Ｉ／Ｏモジュール２０６のユーザインターフェース３２８の典型的な入力スクリーンが図６に示されている。一実施形態では、軸の定義付けは、工作機械システム２００の初期設定の間に行われ、要求されない限り、当該定義づけを後続の動作中に変更する必要はない。
【００９５】
図６では、オペレータによって定義される軸２５０、２５２、２５４、２５６、および、２５８のそれぞれが表示されている。オペレータは、所定の軸を強調してよく、例えば、タッチスクリーンなどの入力部材によりｙ軸２５０が示される。そして、オペレータは、入力３５０を選択することによって、ｙ軸２５０をパーツキネマティクス軸順序リスト３５６、および、工具キネマティクス軸順序リスト３５８のうちの一方のリストへ移動させる。オペレータは、入力３５２を選択することによって、ｙ軸２５０を現在のリスト３５６内の上のほうに移動させてよい。オペレータは、入力３５４を選択することによって、ｙ軸２５０を現在のリスト３５６内の下のほうに移動させてよい。
【００９６】
パーツキネマティクス軸順序リスト３５６、および、工具キネマティクス軸順序リスト３５８におけるそれぞれの軸の順序は、ソフトウェアコントローラ２０２にそれぞれの軸の相互依存性を提供する。リスト３５６および３５８のそれぞれにおける第１番目の軸は、そのリストのためのベース軸である。図６に示すように、軸２５０、２５２、２５４、２５６、および、２５８の順序は、工作機械システム１００の軸１５０、１５２、１５４、１５６、および、１５８に対応する。パーツキネマティクス軸順序リスト３５６の図６における順序のように、ｘ軸２５２およびＣ軸２５８はどちらもｙ軸２５０と共に移動する。さらに、Ｃ軸２５８は、ｘ軸２５２と共に移動するが、ｙ軸は、ｘ軸と共には移動しない。また、ｘ軸２５０もｙ軸２５２もｃ軸と共に移動しない。工具キネマティクス軸順序リスト３５８では、Ｂ軸２５６は、ｚ軸２５４と共に移動するが、ｚ軸２５４は、Ｂ軸２５６と共には移動しない。結局、ｙ軸２５０、ｘ軸、および、Ｃ軸の移動は、ｚ軸２５４およびＢ軸２５６の移動とは無関係に行われる。
マトリックススタック
【００９７】
上述のごとく、さまざまな軸２５０、２５２、２５４、２５６、および、２５８のそれぞれは、対応する変換マトリックス３０５を有する。それぞれの軸２５０、２５２、２５４、２５６、および、２５８の相互依存性を知ることにより、仮想キネマティクスマシン２１４は、１つ以上のマトリックススタックを生成して、さまざまなタイプの出力データを算出する。仮想キネマティクスマシン２１４は、初期化構成要素２１８によって生成された１つ以上のマトリックススタック２１６を含む。マトリックススタック２１６は、複数の変換を連結させるための、汎用キネマティクスライブラリ２１０で用いられる一般的な方法である。
【００９８】
２つの典型的なマトリックススタック２１６が図７Ａおよび７Ｂに示される。工具マトリックススタック２７０は、スピンドル座標系（スピンドル）２７２における工具先端位部位置から機械基準座標系（ｍ）２７４における工具先端部位置までの変換を、変換マトリックス２７６の連結によって数学的にモデル化するために用いられる。工具マトリックススタック２７０は、図７Ａの左端にグラフで示され、図７Ａの右端に数学的に表されている。仮想キネマティクスマシン２１４によって表される工作機械システム１００の一実施形態では、工具マトリックススタック２７０は、以下の方程式（１）により表される。
【数１】
2010500635.tif 000003
ただし、
【数２】
2010500635.tif 000004
は、スピンドル座標系における工具先端部の位置を示す列ベクトルであり、
【数３】
2010500635.tif 000005
は、スピンドル座標系から回転Ｂ軸座標系への変換であり、
【数４】
2010500635.tif 000006
は、回転Ｂ軸座標系からｚ軸座標系への変換であり、
【数５】
2010500635.tif 000007
は、ｚ軸座標系から機械座標系への変換であり、
【数６】
2010500635.tif 000008
は、機械座標系における工具先端部位置を表す列ベクトルである。
【００９９】
図７Ｂに示すパーツマトリックススタック２８０は、変換マトリックス２８６の連結により、ワークピース座標系（ｗｐ）２８２におけるパーツポイントから機械基準座標系（ｍ）２８４におけるパーツポイントまでの変換を数学的にモデル化するために用いられる。パーツマトリックススタック２８０は、図７Ｂの左端部分にグラフで示され、図７Ａの右端部分に数学的に示されている。パーツマトリックススタック２８０は、パーツセットアップマトリックス２９０と共に、パーツキネマティクスチェーンの軸キネマティクスマトリックスのすべてを含む。本願明細書では、パーツセットアップマトリックス２９０を決定する方法も提供される。変換平面に関してユーザプログラムが定義されるか、または、パターニング変換がプログラム中で呼び出されると、パーツマトリックススタックに追加のマトリックスがプッシュされうる。汎用キネマティクスライブラリは、多数の変換平面が積層されうる変換平面マトリックススタック２９２を用いる。また、汎用キネマティクスライブラリはいかなる数のパターニング変換が積層されうる変換前平面マトリックススタック２９４も有する。典型的なパターン変換は、並進、回転、および、ミラーを含む。どのマトリックススタックも同様に、変換平面、および、変換前平面マトリックススタックは、マトリックススタック内のマトリックスを削除せずともオン／オフが可能である。したがって、完全なパーツマトリックススタック２８０は、図７Ｂに示される変換を含んでよい。
【０１００】
仮想キネマティクスマシン２１４によって表される工作機械システム１００の一実施形態では、パーツマトリックススタック２８０は、以下の方程式（２）により表される。
【数７】
2010500635.tif 000009
ただし、
【数８】
2010500635.tif 000010
は、アクティブな変換平面がない場合のワークピース座標系におけるパーツのポイントの位置、または、少なくとも一つの変換平面がアクティブな場合の変換マトリックススタックにおける最上部の変換平面に対する位置を表す列ベクトルであり、
【数９】
2010500635.tif 000011
は、入力位置に適用されるパターニング変換であり、
【数１０】
2010500635.tif 000012
は、パターニング変換スタックにおいて定義された座標系からパーツセットアップ座標系への連結された変換平面マトリックススタックのマトリックス変換であり、
【数１１】
2010500635.tif 000013
は、パーツ座標系からＣ軸座標系への変換であり、
【数１２】
2010500635.tif 000014
は、回転Ｃ軸座標系からｘ軸座標系への変換であり、
【数１３】
2010500635.tif 000015
は、ｘ軸座標系からｙ軸座標系への変換であり、
【数１４】
2010500635.tif 000016
は、ｙ軸座標系から機械基準座標系への変換であり、
【数１５】
2010500635.tif 000017
は、機械基準座標系におけるパーツポイント位置を表す列ベクトルである。
【０１０１】
工具先端部およびパーツポイント位置についての上記図示は、例に過ぎず、一旦それぞれの軸２５０、２５２、２５４、２５６、および、２５８間の相互依存性が確定されれば、さまざまなタイプの入力データをさまざまなタイプの座標軸に変換するためにさまざまなマトリックススタックが用いられてよいことを理解されたい。
【０１０２】
一実施形態では、マトリックスは、機械基準座標系２８４からスピンドル座標系２７２に向かう順番でマトリックススタック２７０に、また、機械基準座標系２８４からワークピース座標系２８２に向かう順番でパーツマトリックススタック２８０にプッシュされる。工作機械システム１００の軸の１つのすべての移動について、必ずしも異なるマトリックススタック２７０および２８０を再計算する必要はない。一実施形態では、汎用キネマティクスライブラリ２１０は、所定のマトリクススタックの再計算が必要かどうかを決定する。
【０１０３】
例えば、工作機械システム２８４において、工具先端部位置、および、パーツ位置の両方が必要な場合を仮定する。工作機械システム１００は、パーツ１６０が切断される際、ｘ軸１５２（仮想マシン２１４におけるｘ軸２５２）に沿って並進する。汎用キネマティクスライブラリ２１０は、パーツが工作機械システム２８４に関連して動いているので、パーツマトリックススタック２８０を再計算するだろうが、工具１４１は工作機械システムに関連して動いているわけではないので、工具マトリックススタック２７０を再計算しないだろう。これによって実行されるマトリックス乗算の数が減少する。一実施形態では、軸位置が設定された場合、軸位置が現在の位置と異なると、仮想マシン２１４は、各軸オブジェクト位置をアップデートする。軸位置が変わると、適切な工具またはパーツマトリックススタック２７０および２８０にフラグが設定され、順および逆マトリックススタックの変換マトリックスを再決定しなければならない。マトリックススタックは、次に用いられるべき必要なマトリックスを再決定するだろう。
【０１０４】
ワークピース座標系２８２、スピンドル座標系２７２、または、機械基準座標系２８４のいずれの軸座標系に関するいかなるポイントまたはベクトルを決定するためにさまざまなマトリックススタックが実装されてよい。たとえば図２０に示す変換平面座標系２９６への変換に対しては他のマトリックススタックが実装されてよい。変換平面２９８は、対話型パーツプログラムのプログラミングセッションで定義されてよい。
【０１０５】
図２に戻ると、仮想キネマティクスマシン２１４は、パーサ２２０から配置情報を受け取り、機械軸１５０、１５２、１５４、１５６、および、１５８にそれぞれ対応する軸３５０、３５２、３５４、３５６、および、３５８（図３参照）のそれぞれについての実際の機械位置を決定する。これらの機械位置は、工具スピンドル１３８、および、パーツ１６０により支持される工具１４１を位置決めすべく、５軸１５０、１５２、１５４、１５６、および、１５８のモーションシステムに提供される。典型的なモーションシステムは、サーボモータを含む。仮想キネマティクスマシン２１４で決定される機械位置は、リアルタイムミル機械２３２に送られる位置データ２３０により表される。位置データ２３０は、リアルタイムミル２３２に同時に表される必要はないが、仮想キネマティクスマシン２１４は、必要に応じて、リアルタイムミル２３２によって読み取られるスタックにおける所定の軸についての１つ以上の次の位置を配してよい。したがって、リアルタイムミル２３２が（一連の中間ポイントを通って）第１の位置から第２の位置へと移動している間に、仮想キネマティクスマシン２１４は、第２の位置から第３の位置へと移動する段階を決定してよい。
コンカレントプログラミング
【０１０６】
ソフトウェアコントローラ２０２は、特定の機械構成２０８、および、汎用キネマティクスライブラリ２１０に基づき、仮想キネマティクスマシン２１４を生成する。ソフトウェアコントローラ２０２は、さまざまな実際の機械と組みあせて用いられうる。例えば、プラットフォーム１２０がｘ軸１５２について傾く可能性があるのなら、これは、ソフトウェアコントローラ２０２に送られる機械構成２０８によって考慮されうる。
【０１０７】
このことは、ソフトウェアコントローラ２０２の柔軟性を向上させるだけでなく、ソフトウェアコントローラ２０２の有用性も高める。例えば、図２に示すように、２つの追加の仮想マシン２３４および２３６が生成される。仮想マシン２３４も機械構成２０８に基づく。このように、仮想マシン２３４は、仮想キネマティクスマシン２１４と同じであるが、例えば、シミュレーショングラフィックアプリケーション２４５などの異なる目的のために、ソフトウェアコントローラ２０２の異なるパーツで使用されてよい。仮想マシン２３６は、Ｉ／Ｏモジュール２０６を介して受信される第２の機械構成２３８に基づく。仮想マシン２３４および２３６の各々は、入力データ２４０および２４２をそれぞれ受信する。
【０１０８】
仮想マシン２３４および２３６は、出力データ２４４および２４６を提供する。出力データ２４４および２４６は、アプリケーションに要求される情報を提供する。一実施形態では、仮想マシン２３４および２３６の１つまたは両方の出力データは、リアルタイムミルなどの機械軸位置である。図示される実施形態では、仮想マシン２３４は、シミュレーショングラフィックソフトウェアアプリケーション２４５に結合される。一実施形態では、シミュレーショングラフィックアプリケーション２４５は、機械のランタイム工具グラフィックが表示される間に、工具先端部位置をディスプレイに表示するよう要求する。これは、工作機械システムの軸のすべての位置から決定されてよい。他の典型的なアプリケーションは、ワイヤフレーム・グラフィックソフトウェアアプリケーション、および、エクスポータソフトウェアアプリケーション、または、他の適切なアプリケーション２４７を含む。一実施形態では、典型的な出力データは、工具１４１の位置を含む、シミュレーショングラフィックアプリケーション２４５により表示されるべき工具１４１のプログラムされた移動に基づき、機械加工されたパーツの現在の形状、または、機械加工されたパーツのシミュレーションされた形状を含む。
【０１０９】
一実施形態では、仮想キネマティクスマシン２１４は、機械構成２０８に基づき、リアルタイムミル２３２に位置データ２３０を提供すべく、パーツプログラム２０４を処理し、仮想マシン２３６は、機械構成２３８に基づき、位置データを出力データ２４６として提供すべく、パーツプログラムを入力データ２４２として処理する。このように、ソフトウェアコントローラ２０２のユーザは、シミュレーショングラフィックソフトウェアアプリケーション２４５により検証するために、または、４軸機械に関連するリアルタイムミル２３２に提供するために、機械構成２３６によって定義される4軸機械の他のパーツをプログラミングする間に、図１に示される５軸機械のようなリアルタイムミル２３２によってパーツ１６０を切断できる。出力データ２４６をディスプレイに表示する１つの理由は、干渉および他の障害となる配置をチェックするか、または、パーツ１６０を切断する推定時間をチェックするためである。このように、ソフトウェアコントローラ２０２は、例えば、仮想マシン２１４、２３４、および、２３６などの仮想マシンの実装により、複数のマシンのコンカレントプログラミングを可能にする。ソフトウェアコントローラ２０２は、ラップトップなどのスタンドアロン・デタミナーに実装されてもよい。このように、ユーザは、工作機械システム１００に対応する仮想マシンをプログラムしてよく、結果として生じた機械プログラムを工作機械システムに提供することにより、パーツを機械加工するか、または、シミュレーショングラフィックアプリケーション２４５による閲覧ができる。この例では、結果として生じた位置データは、ＮＣプログラム、または、対話型プログラムであってよい。
カスケード方法
【０１１０】
本願明細書中で述べるように、一実施形態では、仮想キネマティクスマシン２１４は、複数の入力工具位置に基づき、軸２５０、２５２、２５４、２５６、および、２５８の位置を決定する。一実施形態では、仮想マシン２１４は、カスケード方法４００により、軸２５０、２５２、２５４、２５６、および、２５８の位置を決定する。
【０１１１】
カスケード方法４００は、図８に示されている。図８を参照すると、４つの異なるタイプの入力工具位置情報４０２、４０４、４０６、および、４０８は、カスケード方法４００に提供され、そこから軸２５０、２５２、２５４、２５６、および、２５８の位置が決定される。本願明細書において、工具位置情報４０２は、タイプ４データと呼ばれ、工具に対するパーツの表面接点、当該接点におけるパーツ表面の表面法線ベクトル、および、ワークピース座標系２８２に関する工具ベクトルを含む。工具位置情報４０４は、タイプ３データと呼ばれ、線形工具先端部位置、および、ワークピース座標系２８２に関する工具ベクトル方向を含む。工具位置情報４０６は、タイプ２データと呼ばれ、ワークピース座標系２８２に関する線形工具先端部位置、および、パーツ座標系２８５（図２０参照）に関する回転軸位置を含む。パーツ座標系２８５は、ワークピース座標系と機械基準座標系２８４とを位置合わせする回転オフセットを含む。オフセットがゼロの場合、それは機械座標系２８４に直接関係する。周知のごとく、パーツセットアップ座標系２８５は、共通に参照される座標系であり、受信データを処理するか、または、参照する座標系に関連する出力データを処理するための能力を提供する目的で本願明細書に含まれる。パーツセットアップ座標系２８５に対するオフセットは、図７Ｂにおけるパーツセットアップマトリックス２９０において考慮される。本願明細書において、工具位置情報４０８は、タイプ１データと呼ばれ、機械基準座標系２８４に関連する線形軸位置、および、回転軸位置を含む。
【０１１２】
図８に示すように、カスケード方法４００は、どのタイプの入力工具データが受信されるかによって、軸２５０、２５２、２５４、２５６、および、２５８の軸位置、および、対応する時間４１０が最終的に決定されるまで、タイプ数が小さい入力工具データに決定を降ろしていく。
【０１１３】
ホストアプリケーションソフトウェア２１５は、標準オブジェクト指向設計原理に従い、ＧｅｔおよびＳｅｔ関数を用いて仮想キネマティクスマシン２１４を呼び出す。上記４つの入力タイプのそれぞれに対し、別々のＳｅｔ関数がある。Ｓｅｔ関数が呼び出されると、仮想キネマティクスマシン２１４は、カスケード方法４００によってデータを呼び出す。
【０１１４】
一実施形態では、タイプ４データは、ホストソフトウェアアプリケーション２１５からのコマンドＫＭ１．ＳｅｔＰｏｓｉｔｉｏｎＴｙｐｅ＃４（ｘ，ｙ，ｚ，ｕ，ｖ，ｗ，ｉ，ｊ，ｋ）によって、仮想キネマティクスマシン２１４に提供される。表面接点は、（ｘ，ｙ，ｚ）により特定される。表面法線ベクトルは、（ｕ，ｖ，ｗ）によって特定される。工具軸ベクトルは、（ｉ，ｊ，ｋ）によって特定される。入力表面ポイント、表面法線ベクトル、および、工具ベクトルのそれぞれは、ワークピース座標系２８２に関して定義される。
タイプ３データの決定
【０１１５】
カスケード方法４００は、提供されたタイプ４から、タイプ３のデータを決定する方法を含む。先に述べたように、タイプ３データは、どちらもワークピース座標系２８２に関連する工具底部中心、および、工具ベクトルを含む。方法４１２は、工具底部中心４１６（図２２参照）および工具ベクトル４２２を決定する際に工具１４１の形状を考慮する。一例では、方法４１２は、現在の工具外側半径、および、コーナー半径を用いて、工具底部中心４１６および工具ベクトル４２２を決定する。
【０１１６】
図２２を参照すると、表面接点４１４および工具底部中心点４１６が示されている。工具コーナー半径の中心４１８、および、工具中心４２０点も示されている。工具ベクトル４２２、および、ポイント４１４を介した表面法線ベクトル４２４も示されている。
【０１１７】
表面接点４１４と工具底部中心点４１６との関係は、方程式３によって導かれる。
【数１６】
2010500635.tif 000018
ただし、Ｐは、ワークピースにおける表面接点であり、Ｎは、Ｐにおける表面法線ベクトルであり、Ｔは、工具軸ベクトルであり、Ｒは、工具外側主半径であり、ｒは、工具の半径である。方程式３は、表面接点４１４から工具底部中心点までの移動を表す。項
【数１７】
2010500635.tif 000019
は、４１４→４１８と４２０→４１６とを結合し、項
【数１８】
2010500635.tif 000020
は、ベクトル４１８→４２０を決定する。
【０１１８】
変数Ｐ、Ｎ、および、Ｔは、タイプ４の入力データによって提供される。変数Ｒおよびｒは、工具構成ファイルによって提供される。方程式３に基づき、工具底部中心点４１６が決定される。
【０１１９】
図２３に示されるケースでは、工具ベクトル４２２は、表面法線ベクトル４２４と一致しており、工具外側半径が工具コーナー半径と等しくない場合、工具を接線方向に位置決めする無限のソリューションがある。この場合、方法４１２は、表面ポイント４１４と接触するよう工具底部中心点４１６を位置決めしてソリューションのアンビギュイティを取り除く。工具コーナー半径と工具中心半径が等しいボールノーズエンドミルには無限のソリューションは存在しない。
【０１２０】
方法４１２は、タイプ４データの一部として提供される工具ベクトル４２２と共に、ワークピース座標系２８２に関連する工具底部中心位置４１６を返す。タイプ３データは、コマンドＫＭ１．ＳｅｔＰｏｓｉｔｉｏｎＴｙｐｅ＃３（ｘ，ｙ，ｚ，ｉ，ｊ，ｋ）により、仮想キネマティクスマシン２１４における方法４００の次のレベルに提供される。このコマンドは、ホストソフトウェアアプリケーション２１５により仮想キネマティクスマシン２１４の外部から発せられてもよい。
【０１２１】
カスケード方法４００は、タイプ３データ４０４からタイプ２データ４０６を決定する方法４２６を含む。上述のごとく、タイプ２データ４０６は、ワークピース座標系２８２に関連する工具底部中心４１６と、パーツセットアップ座標系２８５に関連する回転軸位置とを含む。方法４２６は、機械回転軸（Ｂ軸２５６およびＣ軸２５８）に対するソリューションを決定して工作機械システム１００の工具スピンドル１３８とワークピースに関連するタイプ３データの工具ベクトル４２２の向きとを一直線に合わせる。工作機械システム１００では、スピンドル１３８が入力工具位置の工具ベクトル４２２と一直線に合わせられるようになるＢ軸２５６およびＣ軸２５８の位置について３つ以上のソリューションが存在してよい。本願明細書では、タイプ２のデータ４０６の決定についても説明する。
【０１２２】
カスケード方法４００は、タイプ２データ４０６から、タイプ１データ４０８を計算する方法４２８をさらに含む。方法４２８は、スピンドル軸１３８が入力工具位置の工具ベクトル４２２と一直線に合わせられるようになるＢ軸２５６およびＣ軸２５８の２つの可能性のあるソリューションのうちの１つを選択する。さらに、線形軸の配置は、Ｂ軸２５６およびＣ軸２５８の２つのソリューションそれぞれについて異なる。一実施形態では、方法４２８は、工具の最後の位置、移動のタイプ、機械軸の限界、および／または、工具が機械の固有ポイントを通じて移動するかどうかに基づき、Ｂ軸２５６およびＣ軸２５８の回転位置を選択する。方法４２８の出力は、タイプＩデータ（工作機械システム１００の線形および回転軸位置）である。
【０１２３】
タイプ１データ４０８は、カスケード方法４００における方法４３０に提供される。方法４３０は、タイプ１データ４０８において特定される位置へのそれぞれの軸の移動についての、軸速度が制限された時間ステップを決定する。一実施形態では、時間ステップは、ワークピースに関連する工具先端部の送り速度に基づく。送り速度は、必要に応じて最高機械軸速度を違反しないよう調整されうる。方法は、キネマティクス機械軸位置をアップデートし、出力のための位置データを格納する。本願明細書に記載されるように、仮想キネマティクスマシン２１４にアップデートされた軸位置が提供されることにより、必要に応じてマトリックススタック２１６がアップデートされる。
タイプ２データの決定
【０１２４】
カスケード方法４００における方法４２６に戻ると、タイプ２データ４０６は、タイプ３データ４０４から決定される。一実施形態では、方法４２６は、工具底部中心点４１６、および、ワークピース座標系２８２に関連する工具の向きのベクトルである工具ベクトル４２２に基づき、システム１００のインバースキネマティクスを決定する、ベクトルに基づく方法を含む。システム１００と関連付けて説明しているが、方法４２６は、いかなる直交５軸機械を含みうる。
【０１２５】
一実施形態では、方法４２６は、以下のように進行する。まず、ワークピース座標系に関連する工具ベクトル４２２は、パーツセットアップ変換マトリックスを適用することにより、機械座標系２８４に変換される。図７Ｂに示されるようなパーツセットアップ変換マトリックスは、パーツを動かす軸のキネマティクスリンクで接続された機械軸についてのすべてのオフセットを含む。
【０１２６】
一般的には、傾斜軸１５６によって、スピンドル軸１３９と回転軸方向ベクトル１５８とが一直線に合わせられる場合を除き、直交５軸機械のいかなる所定の工具位置に対しても２つの可能なソリューションが存在する。この場合、機械は、機械固有ポイントに対して位置決めされるので、無限のソリューションが存在する。
【０１２７】
方法４２６は、回転するスピンドル軸１３９が機械固有ポイントに沿っているかどうか決定すべく確認する。図１０ＡからＣに示される典型的な状況では、回転するスピンドル軸１３９は、機械固有ポイントに沿っている。図１０Ａは、工作機械システム１００の状況を示しており、スピンドル軸１３９は、傾斜軸１５６の位置によりプラットフォーム１２０の回転軸１５８と平行である。図１０Ｂを参照すると、スピンドル軸１６１は、傾斜軸１６５の位置により、傾斜可能なプラットフォーム１６９上で支持される回転可能なプラットフォーム１６７の回転軸１６３と平行である。図１０Ｃを参照すると、スピンドル軸１７１は、中間傾斜可能部材１７９の傾斜軸１７７の位置により、回転部材１７５の回転軸１７３と平行である。
【０１２８】
方法４２６は、図９ＡからＣに示されるような方程式４の関係に基づき、工作機械システム１００についての傾斜軸であるＢ軸１５６の回転角度を決定する。
【数１９】
2010500635.tif 000021
ただし、ＴｉｌｔＡｎｇｌｅは、Ｂ軸の回転角度であり、
【数２０】
2010500635.tif 000022
は、機械座標系４３６における入力工具ベクトルであり、
【数２１】
2010500635.tif 000023
は、傾斜軸角度がゼロである場合の機械座標系に関するスピンドル軸の回転である。
【０１２９】
ＴｉｌｔＡｎｇｌｅが傾斜軸エンコーダ分解能の許容範囲内、または、オペレータに特定される傾斜軸精度の範囲内の固有ポイントの傾斜角度に等しい場合、方法４２６は、工具ベクトル４２２が機械固有ポイントに沿っていると見なす。この状況において、仮想キネマティクスマシンに最後の回転位置が設定されていない場合、方法４２６は、Ｂ軸１５６についての回転角度を最後の回転角度位置に、または、ゼロに設定する。これによって、不適切な回転角度に決定されるのを防止する。
【０１３０】
変換された工具ベクトル４２２が機械固有ポイントに沿っていない場合、Ｃ軸１５８についての回転角度は、図９ＡからＣに関する以下のステップにより決定される。直交座標系は、回転軸１５８と、傾斜軸１５６と、回転軸１５８および傾斜軸１５６に対し垂直なＣｒｏｓｓＶｅｃｔｏｒ０  ４４０（ＴＣＲ座標系）とを用いてセットアップされる。ＣｒｏｓｓＶｅｃｔｏｒ０  ４４０の方向は、方程式５により導かれる。
【数２２】
2010500635.tif 000024
傾斜軸１５６に沿った工具ベクトル４２２の成分は、方程式６、および、図９Ｃにおける参照番号４２２によって表される。
【数２３】
2010500635.tif 000025
ＣｒｏｓｓＶｅｃｔｏｒ０  ４４０に沿った工具ベクトル４２２の成分は、方程式７、および、図９Ｃにおける参照番号４４４で表される。
【数２４】
2010500635.tif 000026
ＴｉｌｔＡｘｉｓおよびＣｒｏｓｓＶｅｃｔｏｒ０平面において突出している工具ベクトルは、方程式８によって表され、図９Ｃにおける参照番号４４６で表される。
【数２５】
2010500635.tif 000027
ただし、
【数２６】
2010500635.tif 000028
Ｃ軸１５８の回転角度は、方程式１０により決定される。
【数２７】
2010500635.tif 000029
【０１３１】
上述のごとく、Ｂ軸１５６およびＣ軸１５８それぞれについて方法４２６により決定される傾斜および回転角度は、一般的な直交５軸機械のための２つの可能なソリューションのうちの１つだけである。最適なソリューションは、方法４２８で決定される。
タイプＩデータの決定
【０１３２】
一実施形態では、方法４２８は、回転および傾斜角度についてどのソリューションが選択されるかを決定する。回転および傾斜角度についての優先を与えられたソリューションを決定する際にはいくつかの因子が考慮されてよい。典型的な因子は、最後に指令された位置から決定されるべき次の工具位置までの工具の補間経路、および、傾斜軸優先が選択されたかどうかを含む。２つの典型的な補間経路は、（１）工具位置間に、軌道に沿って工具ベクトル４２２を補間すること、および、（２）工具位置間に、機械回転および傾斜角度を線形に補間すること、を含む。一実施形態では、補間は、線形補間である。
【０１３３】
一実施形態では、仮想マシン２１４は、工具位置間に、最短角度横断方向を補間する方法をさらに含む。この方法は、タイプ４およびタイプ３の入力工具位置に自動的に適用される。この方法は、補間タイプ１がアクティブになると自動的に適用される。
【０１３４】
傾斜軸優先により、オペレータは、機械固有ポイントのいずれかの側に傾斜軸を維持することを仮想キネマティクスマシン２１４に強制してよい。図２１に示すように、オペレータは、選択入力４８２によって、または、パーツプログラム内で、負の傾斜軸優先、正の傾斜軸優先、または、優先なし（ニュートラル）を選択してよい。オペレータは、優先を特定するだけよく、その結果、可能な場合、機械はその傾斜優先を用いることができる。または、オペレータは、優先を強制してよく、その結果、機械は、他の傾斜軸方向（負または正）を用いることができなくなる。1つのアプリケーションでは、オペレータまたはソフトウェアコントローラ２０２が要求されるかまたは強制される傾斜軸優先を特定してよく、その場合、変換平面２９８（図２０参照）に関連して特徴が定義される。傾斜軸優先特徴は、固有ポイントを軸とする正または負の方向において、傾斜軸が非常に非対称な軸限界を有しているか、または、機械の仕事量が機械固有ポイントの他の側より片側で非常に大きい場合に有益である。ユーザは、工具の補間経路に何の心配もいらない場合、特定の傾斜軸優先側を使用することを仮想キネマティクスマシン２１４に強制してもよい。
【０１３５】
図１１Ａを参照すると、工作機械システム１００についての機械固有ポイント４９０が示されている。図１１Ｂを参照すると、正の傾斜軸優先に対応する傾斜角度が示されている。図１１Ｃを参照すると、負の傾斜軸優先に対応する傾斜角度が示されている。
【０１３６】
一実施形態では、方法４２８は、以下のように進行する。まず、傾斜軸優先がアクティブになった場合、優先を与えられた傾斜軸方向に対応するソリューションが選択され、回転および傾斜角度は第１のソリューションとして格納される。あるいは、（１）タイプ４データが入力されるか、（２）タイプ３データが入力されるか、（３）最短角度横断モードがアクティブになるか、または、（４）工具ベクトル補間がアクティブになった場合、最短角度横断回転、および、傾斜軸角度ソリューションが以下の方法により決定される。
最短角度横断方法
【０１３７】
まず、回転角度の変化、および、傾斜角度における変化が方程式（１１）および（１２）で表されるように決定される。
【数２８】
2010500635.tif 000030
ただし、ΔRotaryAngle1は、回転角度の変化であり、RotaryAngleNextは、考慮される回転角度であり、RotaryAngleLastは、前の位置の回転角度である。
【数２９】
2010500635.tif 000031
ただし、ΔTiltAngle1は、傾斜角度の変化であり、TiltAngleNextは、考慮される傾斜角度であり、TiltAngleLastは、前の位置の傾斜角度である。
【０１３８】
最短角度横断ソリューションを計算する場合に考慮される３つのケースがある。
【数３０】
2010500635.tif 000032
代わりの回転ソリューションを計算する。
【数３１】
2010500635.tif 000033
ソリューション♯１は、最短角度横断ソリューションである。
【数３２】
2010500635.tif 000034
【０１３９】
ケースＩＩＩでは、両方の回転軸角度ソリューションが等距離であるため、どちらかが短いということはない。このケースでは、ΔTiltAngleが考慮される。代わりの角度ソリューションおよび最後の位置への角度差が決定される。
【数３３】
2010500635.tif 000035
ただし、代わりのTiltAngleは、代わりの角度ソリューションである。ΔTiltAngle2は、最後の傾斜軸位置と代わりの角度ソリューションとの間の差である。
【０１４０】
(ΔTiltAngle1==ΔTiltAngle2)の場合、両方のソリューションは等距離であり、傾斜軸優先オプションが選択され、傾斜角度がソリューション♯１に設定される。または、(ΔTiltAngle1≠ΔTiltAngle2)の場合、最短傾斜軸ソリューションが選択され、ソリューション♯１に等しく設定される。
【０１４１】
次に、タイプ１データの決定に戻ると、選択されたソリューションの回転および傾斜軸角度についてフォワードキネマティクスが決定されることにより、線形機械軸位置が決定される。ｘ軸およびｙ軸についての線形軸位置は、パーツマトリックススタック２８０によって決定される。ｚ軸についての線形軸位置は、工具マトリックススタック２７０によって決定される。一実施形態では、線形軸位置は、回転軸および傾斜軸オブジェクト位置を選ばれたソリューション１またはソリューション２に設定し、すべての線形軸オブジェクト位置をゼロに設定し、パーツおよび工具マトリックススタック（２８０および２７０）を再計算し、機械座標系におけるパーツポイント、および、機械座標系における工具先端部を方程式１４および１５により表されるように決定すべくフォワードキネマティクスを計算することによって決定される。
【数３４】
2010500635.tif 000036
【０１４２】
Δベクトルは、変換されたパーツポイントと、変換された工具先端部との間の差である。このベクトルは、線形軸を並進させることにより、工具をパーツの適切な場所に触れさせるために用いられる。汎用キネマティクスライブラリ２１０は、さまざまな軸２７０間の相互依存性、および、所定の軸がパーツマトリックススタック２８０または工具マトリックススタック２７０の一部であるかどうかを認識している。
【０１４３】
決定された回転および傾斜軸の位置と、線形軸位置とが確認されることにより、それらが予め定められた領域内にあるかどうかが決定される。典型的な予め定められた領域は、それぞれの軸の範囲内の領域である。軸位置のいずれかが機械の範囲を超えると、Ｉ／Ｏモジュール２０６を介してオペレータにエラーが報告される。一実施形態では、エラーは、エラーメッセージによってディスプレイ上に報じられる。一実施形態では、以下の３つの条件のいずれかが満たされると、エラーが報告される。（１）工作機械システムの軸が５つ未満のとき、（２）傾斜軸優先がアクティブであり、オペレータが特定の傾斜軸方向を用いるべきであることを明示している場合（傾斜軸優先の強制）、または、（３）タイプ２入力データがカスケード方法４００に提供される最高位データであり、工具ベクトル補間がオフにされたとき。そうでなければ、ソリューション♯２が考慮される。
第２のソリューションの決定
【０１４４】
機械位置が機械固有ポイント４９０にない場合、工作機械システム１００のための代わりのまたは第２のソリューションが方程式１７および１８に基づき決定される。
【数３５】
2010500635.tif 000037
ただし、RotaryAngleは、ソリューション１の回転角度であり、TiltAngleは、ソリューション１の傾斜角度であり、SingularityTiltAngleは、固有ポイントにおける傾斜軸の角度である。
機械固有ポイントに関する補間
【０１４５】
最後の工具位置が機械固有ポイント４９０にある場合、または、最後の工具位置から次の工具位置までの補間によって、結果としてスピンドルが機械固有ポイント４９０を通過するようになる場合、機械固有ポイントを通じての補間が考慮されるべきである。いずれの状況においても、方法４２８により、機械固有ポイントについての補間方法（ＭＳＰ補間）として本願明細書において知られるような１つの方法が実行される。一実施形態では、ＭＳＰ補間は、工具１４１が機械固有ポイント４９０を軸として回転する間、工具１４１がワークピースと接触したまま静止状態を保つようにする。
【０１４６】
図１２ＡからＤを参照すると、工具１４１は、工作機械システム１００の軸の１つ以上が移動する際、パーツ１６０と接触状態にある。図１２からＤでは、パーツ１６０および工具１４１は、機械固有ポイント４９０を軸として１８０度回転する間中、接触状態にある。工具１４１は、ＭＳＰ補間中、基本的にワークピース１６０に対して静止状態にある。
【０１４７】
以下の条件が満たされる場合、ＭＳＰ補間により、方法４２８は、ソリューション♯１またはソリューション♯２のいずれかを選択できるようになる。なぜなら、ＭＳＰ補間は、機械固有ポイント４９０を通るスピンドル軸１３９を扱うことができるからである。実際に以下のいずれかの場合であるとき、ＭＳＰ補間が用いられる。
（１）タイプ４入力データが提供される場合、（２）タイプ３入力データが提供される場合、（３）最短角度横断オプションがアクティブになる場合、または、（４）工具ベクトル補間がアクティブになる場合。
【０１４８】
第１のシナリオ（図１３ＡからＣ）では、最後の工具位置は、機械固有ポイント４９０にあり、次の工具位置は、機械固有ポイント４９０にはない。傾斜軸優先がアクティブになると、優先を与えられた傾斜軸側に対応するソリューションが機械範囲内にあれば、当該ソリューションが選択される。必要に応じて、方法４２８は、ＭＳＰ補間を実行し、最後の工具位置と次の工具位置との間に工具ベクトルを線形補間する。この状況では、傾斜軸優先ソリューションを用いて、機械固有ポイント４９０と次の工具位置との間で補間が行われる。
【０１４９】
第２のシナリオでは、回転軸１５８が回転しないことが予測され、ソリューション１の傾斜軸は、最後の工具位置と反対側の固有ポイント上にあり、ソリューション１の傾斜軸角度は、図１４ＡからＣに示されるように、傾斜軸優先側にはない。図１４Ｂを参照すると、平面４９２は、座標系起点に関して最後の位置の工具ベクトル、および、次の位置（ソリューション１）の工具ベクトルによって定義され、機械固有ポイント４９０と一致する工具ベクトルを含む。
【０１５０】
このシナリオでは、方法は、ソリューション２が機械範囲内であれば選択して、傾斜軸を優先側に維持するだろう。そして、図１５ＡからＣに示されるように、方法は、最後の位置４５４と機械固有ポイント４９０との間に工具ベクトルを補間し（図１５Ａ）、ＭＳＰ補間を用いて機械固有ポイント４９０を軸にして回転させ（図１５Ｂ）、ソリューション２を用いて、機械固有ポイント４９０と次の工具位置４５８との間に工具ベクトルを補間する（図１５Ｃ）。
【０１５１】
第３のシナリオでは、ソリューション１は、回転軸１５８を１８０度回転させ、ソリューション１の傾斜軸は、図１６Ａおよび１６Ｂで示す最後の工具位置と同じ機械固有ポイントの側にある。このシナリオでは、ソリューション１についての傾斜軸角度が傾斜軸優先側にあるかどうかによって結果は異なる。ソリューション１についての傾斜軸角度が傾斜軸優先側にある場合、方法は、最後の位置と機械固有ポイント４９０との間に補間を行い、ＭＳＰ補間を実行して、機械固有ポイント４９０と、ソリューション１に対応する次の工具位置との間に工具ベクトルを補間する。これは、本願明細書における図１５ＡからＣ、図１７Ａおよび１７Ｂに示される概念である。
【０１５２】
ソリューション１についての傾斜軸角度が傾斜軸優先側にない場合、方法は、ソリューション２を選択し、固有ポイントを軸とする回転は必要ないだろう。このことは、図１７Ｃに示される。
【０１５３】
第４のシナリオ（図１８ＡからＣ）では、前の３つのシナリオはどれも適用されず、ソリューション１は、回転軸１５８を回転させず、傾斜軸角度は、最後の位置と同じ機械固有ポイント４９０の側にはない。このシナリオでは、ソリューション２が選択され、そうしないと、ソリューション１は、固有ポイントを通って移動する工具を補間するので、工具ベクトルは、ワークピースに関する正しい軌道を補間しないだろう。
【０１５４】
適切なソリューションが決定されると、まだアクティブでないにせよ補間が選択された場合、最後の位置から次に位置までの工具の移動は、補間によって決定される。本願明細書中に記載されるいくつかのシナリオでは、この移動は、機械固有ポイントを通過する工具ベクトルを含む。記載される他のシナリオでは、この移動は、機械固有ポイントを通過する工具ベクトルを含まない。補間が完了すると、タイプＩデータ４０８である位置がカスケード方法４００における方法４３０に提供される。
機械固有ポイントを通過する工具ベクトルの補間
【０１５５】
本願明細書に記載されるシナリオでは、最後の工具位置から次の工具位置までの移動は、機械固有ポイント４９０を通過する工具ベクトルを含み、以下の方法が実装される。この方法により補間される経路は、工具先端部および工具ベクトルがワークピース座標系２８２に関して静止状態を保つよう、機械固有ポイント４９０を軸にして工具を回転させる。この方法は、以下の条件を満たす場合に用いられる。（１）工具ベクトル補間がアクティブであり、（２）最後の位置および機械位置が予め設定されており、かつ、（３）回転軸１５８が機械内にある場合。
【０１５６】
方法は、以下の段階を含む。まず、最後の位置の傾斜角度が機械固有ポイントの傾斜角度と等しいか否かを決定する。等しくない場合、以下に説明するように、機械固有ポイント４９０における中間位置を定義することによって、最後の位置から機械固有ポイントまで移動が補間される。補間は、カスケード方法４００によって中間の機械固有ポイントを送信することによって行われる。そして、移動は、最後の位置と、機械固有ポイント４９０において定義された中間位置との間に補間される。そして、機械固有ポイント４９０で回転が実行される。最後に、機械固有ポイントにおける中間位置と、次の位置４９０との間に移動が補間される。最後の位置と機械固有ポイントにおける中間位置との間での補間、および、機械固有ポイントにおける中間位置と次の位置との間の補間のケースでは、本願明細書中で採り上げられる、段階２だけ、あるいは、段階１および段階２の補間方法が実装される。
機械固有ポイントにおける中間位置の識別およびその補間
【０１５７】
タイプ４の入力データでは、（AngleLastAndNextSurfaceNormal＝０）の場合、前の位置についての表面法線ベクトルと、次に補間される位置についての表面法線ベクトルとは、同一線上にある。AngleLastAndNextSurfaceNormalは、以下の方程式における関係に基づく。
【数３６】
2010500635.tif 000038
（AngleLastAndNextSurfaceNormal≠０）の場合、前の位置についての表面法線ベクトルと、次に補間される位置についての表面法線ベクトルとは、同一線上にない。
【０１５８】
機械固有ポイントについての表面法線ベクトルは、以下の方程式で示される関係に基づき導かれる。
【数３７】
2010500635.tif 000039
ただし、
【数３８】
2010500635.tif 000040
は、前の位置の表面法線ベクトルが軸として回転するであろうベクトルであり、方程式（１９）における関係に基づき決定される。
【数３９】
2010500635.tif 000041
SurfNormRotationAngleは、方程式２０に基づく角度回転の大きさである。
【数４０】
2010500635.tif 000042
ただし、
【数４１】
2010500635.tif 000043
【０１５９】
機械固有ポイントについての表面接点は、方程式２４に基づき決定される。
【数４２】
2010500635.tif 000044
【０１６０】
SingularitySurfaceNormal、SingularitySurfacePoint、および、工具ベクトルは、ワークピースに関連する機械固有ポイントにおける中間位置を定義する。機械固有ポイント４９０に対応する中間位置は、カスケード方法４００におけるタイプ４入力に送信される。最後の位置から機械固有ポイントまでの移動は、本願明細書中に説明されるように、この段階で補間されてよい。
【０１６１】
タイプ４データが提供されない場合、中間機械固有ポイントは、以下のように決定される。（AngleLastAndNextToolVector＝０）の場合、前の位置についての工具ベクトルと、次に補間される位置についての工具ベクトルとは、同一線上にある。AngleLastAndNextToolVectorは、方程式２５における関係に基づく。
【数４３】
2010500635.tif 000045
（AngleLastAndNextToolVector≠０）の場合、前の位置についての工具ベクトルと、次に補間される位置についての工具ベクトルとは、同一線上にない。
【０１６２】
機械固有ポイントについての工具ベクトルは、方程式２６に示される関係に基づく。
【数４４】
2010500635.tif 000046
ただし、
【数４５】
2010500635.tif 000047
は、前の位置についての工具ベクトルが軸にして回転するベクトルであり、方程式２７における関係に基づき決定される。
【数４６】
2010500635.tif 000048
ToolVectorRotationAngleは、方程式２８における関係に基づく角度回転の大きさである。
【数４７】
2010500635.tif 000049
ただし、
【数４８】
2010500635.tif 000050
【０１６３】
機械固有ポイントについての工具先端部は、方程式３２に基づき決定される。
【数４９】
2010500635.tif 000051
【０１６４】
SingularityToolTipおよびSingularityToolVectorは、ワークピースに関連する機械固有ポイントにおける中間位置を定義する。機械固有ポイントに対応する中間位置は、カスケード方法４００におけるタイプ３入力に送られる。ここで、最後の位置から機械固有ポイントまでの移動は、本願明細書に説明されるように補間されてよい。
機械固有ポイントを軸とした回転
【０１６５】
最後の位置と機械固有ポイントとの間に工具位置が補間されると、次に、機械固有ポイントを軸として工具および／またはパーツを回転させる。機械固有ポイントを軸として工具および／またはパーツを回転させる補間ステップ数が決定される。一実施形態では、補間ステップ数を決定すべく、機械固有ポイントを軸として回転する工具先端部のコードエラーの測定が用いられる。一実施形態では、補間ステップ数を決定すべく、固定のインクリメントが用いられる。典型的な固定インクリメントは、固定の角度インクリメントである。
補間ステップ数−コードエラー
【０１６６】
回転軸の中心線に対し垂直な、機械固有ポイントにおける工具先端部の半径方向距離は、RotaryRadialDistanceとして定義される。RotaryRadialDistanceは、本願明細書で説明されるように決定される。
【０１６７】
補間は、線形補間である。位置数は、オペレータから受信したコードエラー許容範囲４９４（図２１参照）に基づき決定される。コードエラー許容範囲、および、コードエラー許容範囲と弧の角度との関係が図１９に示される。イタレーション数は、以下の方法により結合される。
【０１６８】
方程式Ａで得られる関係が満たされると仮定する。
【数５０】
2010500635.tif 000052
イタレーション数は、方程式３４により決定される。
【数５１】
2010500635.tif 000053
ただし、関数ceil()は、次の整数まで丸め、ChordErrorは、オペレータ固有許容範囲であり、
【数５２】
2010500635.tif 000054
ただし、関数ShortestAnglarTraverse()は、１８０度以下である２つの角度位置間の角度差を返す。方程式３３における関係が満たされない場合、補間方法は、イタレーションの数を１に設定する。
補間ステップ数−固定角度ステップ
【０１６９】
一実施形態では、オペレータは、固定の角度ステップ４９６、４９８（図２１参照）に基づき、補間ステップ数を特定してよい。
典型的な角度ステップは、ほぼ１０番目ごとの度を含む。
これは、方程式３６で表される。
【数５３】
2010500635.tif 000055
【０１７０】
上記式において、項FixedRotaryAngularステップは、特定の角度ステップに対応する。あるいは、イタレーション数が１に設定される。
【０１７１】
イタレーション数が決定されると、工作機械システム１００は、機械固有ポイントを軸として回転する。機械固有ポイントを軸として回転すべく、さまざまな軸の位置の１つ以上が変更される。イタレーションのそれぞれでは、傾斜角度は固有ポイントの傾斜角度に固定され、回転角度は既知であり、線形軸の位置は、カスケード方法４００により決定される。
【０１７２】
一実施形態では、CurrentRotaryAngleは、方程式３７に表されるような前の回転角度に等しく設定され、角度ステップ（θstep）は、方程式３８により導かれる。
【数５４】
2010500635.tif 000056
角度ステップ（θstep）は、オペレータにより特定されるFixedRotaryAngularStep以下であることに注目されたい。
【０１７３】
次に、各位置についての回転角度および工具先端部位置がループ状に決定される。機械固有ポイント、工具ベクトル、工具先端部、傾斜角度、および、CurrentRotaryAngleがカスケード方法４００に提供されることにより、線形軸の位置が決定される。計算された軸位置のすべてが機械範囲内にある場合、それらの位置は、出力用に格納される。位置が機械範囲外にある場合、決定された位置のすべてが削除される。そして、ステップ角度を逆にして、新たなΔ４を決定し、イタレーション数を再計算することによって、他の方向（すなわち、方程式３５のΔ４についての長い方の角度横断）における機械固有ポイントを軸として回転することが試みられる。新たなΔ４は、以下の２つの条件により、前のΔ４の値に基づき決定される。
【数５５】
2010500635.tif 000057
または、
【数５６】
2010500635.tif 000058
Δ４はゼロになりえず、そうでなければ、固有ポイントを軸として回転しないであろうことに注目されたい。位置が機械範囲外にあることが原因でこの試みが失敗した場合、どちらの補間方向も実行されえず、方法は、機械範囲外としてのエラーという結果を出す。
【０１７４】
最後に、機械固有ポイント４９０を軸とした回転が成功したと仮定して、次の位置がカスケード方法４００によって送られ、中間機械固有ポイントから次の位置への移動が補間される。
第1の位置と第２の位置との間の補間
【０１７５】
この開示全体を通じていくつかの場所では、例えば最後の位置などの第１の位置から、例えば機械固有ポイントにおける中間位置などの第２の位置までの間に移動が補間されることが記載されている。以下の２段階の補間方法は、第１の位置から第２の位置までの典型的な補間方法である。２段階補間方法は、第１の段階を含み、この第１の段階において、工具ベクトルは、第１の位置に対応する第１の工具ベクトル４２２Ａと、第２の位置に対応する第２の工具ベクトル４２２Ｂとの間に補間される（図２４および２５参照）。
段階♯１−工具ベクトルの補間
【０１７６】
この段階では、工具ベクトルは、ワークピース座標系２８２に関して、第１の位置と第２の位置との間に補間される。ソフトウェアコントローラ２０２のオブジェクト指向設計を用いた線形補間システムが開示されているが、線形補間システムはスプライン補間、ＮＵＲＢＳ補間、または、他の補間方法を用いるようオーバーロードされてよい。さらに、この段階は、オプションの段階であって、オペレータまたはホストソフトウェアアプリケーション２１５は、段階♯１をスキップして直接段階♯２に行くことを選んでもよい。
【０１７７】
工具ベクトルの線形補間では、工具ベクトル方向は、第１の工具位置と第２の工具位置との間の座標系起点（図２５参照）を軸に、平面を介して補間されるだろう。３つの典型的な補間された工具ベクトル位置が図２４および２５に１．１、１．２、および、１．３として示されている。２つの工具位置間の補間ステップ数を決定する２つの典型的な方法が提供される。
【０１７８】
補間ステップ数を決定する第１の典型的な方法は、固定角度ステップを用いる。オペレータは、２つの工具位置の間の工具ベクトルのための所望の角度ステップ５０１（図２１参照）を提供する。補間用の♯イタレーションは、方程式３９における関係から決定される。
【数５７】
2010500635.tif 000059
ただし、♯イタレーションは、イタレーション数であり、NextToolVectorは、第２の工具位置についての工具ベクトル方向の単位ベクトルであり、LastToolVectorは、第１の工具位置についての工具ベクトル方向の単位ベクトルであり、MaxAngleStepは、所望の角度ステップである。
【０１７９】
２つの工具位置の両方にタイプ３データが提供された場合、方程式３９が用いられる。２つの工具位置の両方にタイプ４データが提供された場合、方程式４０および４１に基づき、♯イタレーションが決定される。
【数５８】
2010500635.tif 000060
ただし、♯IterationSurfNormalは、表面法線に基づくイタレーション数であり、LastSurfaceNormalは、第１の位置についての表面法線方向の単位ベクトルであり、NastSurfaceNormalは、第２の位置についての表面法線方向の単位ベクトルであり、MaxAngleStepは、所望の角度ステップである。その後、方程式３９および方程式４０で決定されるイタレーション数より多い、方程式４１で表されるようなイタレーション数が選ばれる。
【０１８０】
補間ステップ数を決定する第２の典型的な方法は、所望の時間ステップを用いる。オペレータは、２つの工具位置間の工具ベクトルについての所望の時間ステップ５０３（図２１参照）を提供する。補間用の♯イタレーションは、方程式４２における関係から決定される。
【数５９】
2010500635.tif 000061
ただし、TimeStepFromLastToNextは、最後の位置から、パーツプログラムにおいて特定された次の位置までの時間ステップであり、LastPositionは、第１の位置に対応し、NextPositionは、第２の位置に対応し、WorkpieceRelativeFeedrateは、パーツプログラムにおいて特定されたワークピースに関連する工具先端部の送り速度に対応する。
【０１８１】
関数GetMinTimeStepBetweenPositionsは、２つの工具位置間の線形補間軸速度を決定し、機械本来の送り速度がいかなる軸最高速度をも違反する場合、時間ステップ、および、送り速度を最高軸速度に固定する。関数は、移動のための固定された時間ステップを返す。しかしながら、この時間ステップは、工具ベクトルの線形補間によって当然機械軸の補間は変わるであろうし、それによって計算された線形補間移動についての時間ステップも拡大する可能性があるので、最終的な時間ステップの近似値にすぎない。工具経路の補間された位置が計算されると、工具位置カスケードにおけるタイプ♯１位置の入力は、補間された位置それぞれについての最終的な実際の時間ステップおよび送り速度を計算して固定するだろう。最後に、方程式４３における関係によりイタレーション数が得られる。
【数６０】
2010500635.tif 000062
ただし、♯イタレーションは、イタレーション数であり、MaxTimeStepは、オペレータ入力パラメータにより特定される補間の時間ステップに対応する。
【０１８２】
イタレーション数が決定されると、補間される工具ベクトル、および、対応する補間される工具位置が決定される。補間される工具ベクトル、および、対応する補間される工具位置は、カスケード方法４００によって送られ、補間位置についての各軸の位置が決定される。
【０１８３】
一実施形態では、工具ベクトルおよび工具位置は、以下の方法で補間される。前の位置と次の位置との間の角度は、方程式４４に示される関係によって決定される。
【数６１】
2010500635.tif 000063
ただし、AngleLastAndNextToolVectorは、前の位置と次の補間位置との間の角度である。LastToolVectorは、前の位置についての工具ベクトルであり、NextToolVectorは、次の補間位置についての工具ベクトルである。
工具ベクトルの補間
【０１８４】
（AngleLastAndNextToolVector＝０）の場合、前の位置についての工具ベクトルと、次の補間位置についての工具ベクトルとは、同一線上にある。（AngleLastAndNextToolVector≠０）の場合、前の位置についての工具ベクトルと、次の補間位置についての工具ベクトルとは、同一線上にない。
【０１８５】
前の位置についての工具ベクトルが軸として回転するベクトルは、方程式４５における関係に基づき決定される。
【数６２】
2010500635.tif 000064
ただし、CrossVector1は、工具位置が補間される際に前の位置についての工具ベクトルが軸として回転する（ワークピース座標における）ベクトルである。LastToolVectorは、前の位置についての工具ベクトルであり、NextToolVectorは、次の補間位置についての工具ベクトルである。
【０１８６】
タイプ４データが提供されたと仮定すると、表面法線についての同様の動作が完了する。
【数６３】
2010500635.tif 000065
ただし、AngleLastAndNextSurfaceNormalは、前の位置の表面法線と、次の補間位置の表面法線との間の角度であり、LastSurfaceNormalは、前の位置についての表面法線であり、NextSurfaceNormalは、次の補間位置についての表面法線である。（AngleLastAndNextSurfaceNormal＝０）の場合、前の位置についての表面法線ベクトルと、次の補間位置についての表面法線ベクトルとは、同一線上にある。（AngleLastAndNextSurfaceNormal≠０）の場合、前の位置についての表面法線ベクトルと、次の補間位置についての表面法線ベクトルとは、同一線上にない。
【０１８７】
前の位置についての表面法線ベクトルが軸として回転するベクトルは、方程式４７における関係に基づき決定される。
【数６４】
2010500635.tif 000066
ただし、CrossVector2は、工具位置が補間された際、前の位置についての表面法線ベクトルが軸として回転する（ワークピース座標における）ベクトルであり、LastSurfaceNormalは、前の位置についての表面法線ベクトルであり、NextSurfaceNormalは、次の補間位置についての表面法線ベクトルである。
【０１８８】
CrossVector1を知ることにより、補間される工具ベクトル、および、補間される工具先端部位置（工具底部中心）が決定されてよい。（AngleLastAndNextToolVector＝０）の各イタレーションでは、補間される工具ベクトルは、方程式４８で示されるような前の位置の工具ベクトルと同じに設定される。
【数６５】
2010500635.tif 000067
所定のイタレーションについて（AngleLastAndNextToolVector≠０）の場合、補間される工具ベクトルは、方程式４９における関係に基づき決定される。
【数６６】
2010500635.tif 000068
ただし、InterpolatedToolVectorは、補間される工具ベクトルに対応し、ToolVectorRotationAngleは、工具ベクトルが回転すべき角度であって、方程式５０における関係に基づき、決定され、RotateAboutCrossVector1は、ToolVectorRotationAngleの値に等しい角度によってCrossVector1を軸としてLastToolVectorを回転させる関数である。
ToolVectorRotationAngleは、方程式５０における関係に基づき、決定される。
【数６７】
2010500635.tif 000069
【０１８９】
補間される工具先端部は、方程式５１で得られる関係に基づき、決定される。
【数６８】
2010500635.tif 000070
【０１９０】
InterpolatedToolTipおよびInterpolatedToolVectorは、補間される工具先端部、および、補間される工具ベクトルについてのタイプ３データに対応する。このデータは、カスケード方法４００に入力されることにより、さまざまな軸の位置が決定される。
【０１９１】
タイプ４データが提供される一実施形態では、表面法線ベクトルと、表面ポイント位置とが以下の方法で補間される。前の位置の表面法線と、次に補間される位置の表面法線との間の角度（AngleLastAndNextSurfaceNormal）は、方程式（４６）に示される関係によって決定される。
【０１９２】
所定のイタレーションについてAngleLastAndNextSurfaceNormalがゼロである場合、補間される表面法線ベクトルは、方程式５２で示されるような前の位置の表面法線ベクトルに等しく設定される。
【数６９】
2010500635.tif 000071
所定のイタレーションについて（AngleLastAndNextSurfaceNormal≠０）である場合、補間される表面法線ベクトルは、方程式５３における関係に基づき決定される。
【数７０】
2010500635.tif 000072
ただし、InterpolatedSurfaceNormalは、補間される表面法線ベクトルに対応し、SurfaceNormalRotationAngleは、表面法線ベクトルが回転されるべき角度であって、方程式５４における関係に基づき、決定され、RotateAboutCrossVector2は、SurfaceNormalRotationAngleの値に等しい角度によってCrossVector2を軸としてLastSurfaceNormalを回転させる関数である。
SurfaceNormalRotationAngleは、方程式５４における関係に基づき、決定される。
【数７１】
2010500635.tif 000073
【０１９３】
補間される表面ポイントは、方程式５５において得られる関係に基づき、決定される。
【数７２】
2010500635.tif 000074
【０１９４】
InterpolatedSurfacePoint、および、InterpolatedSurfaceNormalは、補間される表面接点、および、補間される表面法線ベクトルについてのタイプ４データに対応する。このデータがカスケード方法４００に入力されることによって、さまざまな軸の位置が決定される。
２段階補間
【０１９５】
カスケード方法４００により機械位置が決定されると、InterpolatedToolTipおよびInterpolatedToolVectorに基づくのか、あるいは、InterpolatedSurfacePointおよびInterpolatedSurfaceNormalに基づくのかに関わらず、第２の補間段階が実行される。第２段階の補間は、さらなる補間を決定すべきかどうかを決定し、（１）許容範囲方法、および、（２）固定角度ステップ方法の２つの方法のうちの１つに基づく。いずれの補間方法においても、工具先端部は、ワークピース座標系内に補間される。再び、ソフトウェアコントローラ２０２のオブジェクト指向設計による線形補間システムが提示されるが、線形補間システムを他の典型的な補間システムと置き換えてよい。典型的な補間システムは、スプライン、ＮＵＲＢＳ、または、他のいかなる適切な補間方法を含む。
【０１９６】
典型的な許容範囲ベースの補間システムは、Ｂ軸およびＣ軸に関連したコードエラーに基づく。Ｂ軸およびＣ軸における角度変化は、方程式５６、および、５７においてそれぞれ与えられる。
【数７３】
2010500635.tif 000075
【０１９７】
コードエラー許容範囲方法では、回転および傾斜軸中心線に関して移動する工具先端部のコードエラーを用いて、補間ポイントの数を計算する。最後の位置および次の位置についての工具先端部からＣ軸までの最大垂直半径方向距離は、方程式５８に表されるように選択される。
【数７４】
2010500635.tif 000076
ただし、RotaryRadialDistance1は、最後の位置の回転軸中心線に対する工具先端部の垂直半径方向距離であり（これは、段階♯１の工具ベクトル補間方法において計算された最後の位置であってよい）、RotaryRadialDistance2は、次の位置の回転軸中心線に対する工具先端部の垂直半径方向距離である（これは、段階♯１の工具ベクトル補間アルゴリズムにおいて計算された次の位置であってよい）。
【０１９８】
同様の方法では、最後の位置および次の位置についての工具先端部からＢ軸までの最大垂直半径方向距離は、方程式５９に示されるように選択される。
【数７５】
2010500635.tif 000077
TiltRadialDistance1は、最後の位置の傾斜軸中心線に対する工具先端部の垂直半径方向距離であり（これは、段階♯１の工具ベクトル補間方法において計算された最後の位置であってよい）、TiltRadialDistance2は、次の位置の傾斜軸中心線に対する工具先端部の垂直半径方向距離である（これは、段階♯１の工具ベクトル補間方法において計算された次の位置であってよい）。
【０１９９】
RotaryRadialDistance1、RotaryRadialDistance2、 TiltRadialDistance1、および、 TiltRadialDistance2は、本願明細書において、回転軸中心線に対する工具先端部半径方向距離の計算セクションで説明された方法に基づき、決定される。
【０２００】
補間は、ユーザにより特定されるコードエラー許容範囲内の線形補間である。コードエラー許容範囲は、図１９に示されている。方法は、追加の補間が必要かどうか、または、段階１で決定された補間数が所望の許容範囲を満たしているかどうかを決定する。回転軸（Ｃ軸）および傾斜軸（Ｂ軸）のいずれもチェックされる。
【０２０１】
回転軸に関しては、方程式６０における関係が満たされる場合、追加の補間が必要となりうる。
【数７６】
2010500635.tif 000078
方程式６０における関係が満たされている場合、方程式６１に基づき、イタレーション数が決定される。
【数７７】
2010500635.tif 000079
【０２０２】
あるいは、イタレーション数は、方程式６２で表されるように、１に設定される。イタレーション数が１に設定されることにより、次のイタレーションは、段階１による次の位置と対応するようになるので、追加の補間は不要になる。
【数７８】
2010500635.tif 000080
【０２０３】
傾斜軸に関しては、方程式６３が満たされる場合、追加の補間が必要になりうる。
【数７９】
2010500635.tif 000081
方程式６３が満たされる場合、イタレーション数は、方程式６４に基づき決定される。
【数８０】
2010500635.tif 000082
【０２０４】
あるいは、方程式６５に表されるように、イタレーション数は、１に設定される。イタレーション数が１に設定されることにより、次のイタレーションは、段階１による次の位置と対応するようになるので、追加の補間は不要になる。
【数８１】
2010500635.tif 000083
【０２０５】
Ｂ軸およびＣ軸の少なくとも１つのイタレーション数は１でないと仮定すると、追加の補間位置が決定される。イタレーション数は、方程式６６により表されるように、Ｂ軸およびＣ軸について決定されたイタレーション数のうちの大きい方である。
【０２０６】
【数８２】
2010500635.tif 000084
【０２０７】
補間される位置間の変化が方程式６７から６９により示され、最初の位置は、LastPositionに設定され、補間される位置は、方程式７０から７２によって決定される。
【数８３】
2010500635.tif 000085
【０２０８】
そして、方程式６７から６９による追加の変更値を方程式７０から７２における値に加算することにより、方程式７３から７５における第１の中間位置として表されるような中間位置が決定される。
【数８４】
2010500635.tif 000086
【０２０９】
方程式７３から７５により補間位置が決定されると、データは、タイプ２の入力としてカスケード方法４００に提供され、対応する機械位置が決定される。
【０２１０】
典型的な角度ステップベースの補間システムは、オペレータにより特定される角度ステップに基づく。角度ステップに関しては、方程式７６における関係が満たされる場合、回転軸と関連する追加の補間が必要になる。
【数８５】
2010500635.tif 000087
方程式７６における関係が満たされる場合、方程式７７に基づき、イタレーション数が決定される。
【数８６】
2010500635.tif 000088
【０２１１】
あるいは、イタレーション数は、方程式７８で表されるように、１に設定される。イタレーション数が１に設定されることにより、次のイタレーションは、段階１による次の位置と対応するようになるので、傾斜軸が追加の補間が必要であることを示さない限り、追加の補間は不要になる。
【数８７】
2010500635.tif 000089
【０２１２】
角度ステップに関しては、方程式７９における関係が満たされる場合、傾斜軸と関連する追加の補間が必要になる。
【数８８】
2010500635.tif 000090
方程式７９における関係が満たされる場合、イタレーション数は、方程式８０に基づき、決定される。
【数８９】
2010500635.tif 000091
【０２１３】
あるいは、イタレーション数は、方程式ＴＴで表されるように、１に設定される。イタレーション数が１に設定されることにより、次のイタレーションは、段階１による次の位置と対応するようになるので、回転軸が追加の補間が必要であることを示さない限り、追加の補間は不要になる。
【数９０】
2010500635.tif 000092
【０２１４】
Ｂ軸およびＣ軸の少なくとも１つのイタレーション数は１でないと仮定すると、追加の補間位置が決定される。イタレーション数は、方程式８２により表されるように、Ｂ軸およびＣ軸について決定されたイタレーション数のうちの大きい方である。
【０２１５】
【数９１】
2010500635.tif 000093
【０２１６】
補間される位置間の変化が方程式８３から８５により示され、最初の位置は、方程式８６から８８により表されるように補間される、段階１の２つの位置のうちの１つの位置に設定される。
【数９２】
2010500635.tif 000094
【０２１７】
そして、方程式８３から８５による追加の変更値を方程式８６から８８における値に加算することにより、方程式８９から９１における第１の中間位置として表されるような中間位置が決定される。
【数９３】
2010500635.tif 000095
【０２１８】
方程式８９から９１により補間位置が決定されると、データは、タイプ２の入力としてカスケード方法４００に提供され、対応する機械位置が決定される。
回転軸中心線までの工具先端部半径方向距離の計算
【０２１９】
この方法は、軸オブジェクトに格納された現在の機械位置についての、機械の回転および傾斜軸中心線までの工具先端部垂直半径方向距離を計算する。本願明細書に記載される方法は、２段階補間方法で用いられ、機械固有ポイントを軸とする補間で用いられる。
【０２２０】
方法は、スピンドルゼロ座標系に関連する工具先端部を各軸の座標系に逐次変換する。変換方向は、工具先端部からワークピース座標系へと向かう。逐次変換プロセス中に、現在の変換されたポイントが回転軸の座標系にある場合、垂直半径方向距離が計算される。図示された例では、工作機械システム１００は、単一の傾斜軸および単一の回転軸を有する。
【０２２１】
現在のポイントは、方程式９２により表されるようなスピンドルゼロポイントと関連する工具底部中心に等しく設定される。
【数９４】
2010500635.tif 000096
【０２２２】
CurrentPointは、工具マトリックススタックを介し、スピンドル座標系から機械基準座標系に変換される。ｉ番目の軸では、変換は、方程式９３により表される。
【数９５】
2010500635.tif 000097
【０２２３】
CurrentPointが工具マトリックススタックを横断する際、各軸は、軸が回転軸かまたは傾斜軸かを決定するためにチェックされる。ｉ番目の軸が回転軸である場合、ｉ番目の軸の座標系におけるCurrentPointからｉ番目の軸までの距離は、方程式９４により表される。
【数９６】
2010500635.tif 000098
【０２２４】
ｉ番目の軸が傾斜軸である場合、ｉ番目の軸の座標系におけるCurrentPointからｉ番目の軸までの距離は、方程式９５により表される。
【数９７】
2010500635.tif 000099
工具マトリックススタックを横断すると、CurrentPointは、機械基準座標系に関する工具先端部の値を保持する。さらに、工作機械システム１００では、TiltRadialDistanceは、Ｂ軸座標系における工具底部中心からＢ軸までの垂直半径方向距離に等しい。
【０２２５】
次に、パーツマトリックススタックを機械基準座標系からワークピース座標系に向かって、最後の軸のところまで横断させる（すなわち、ワークピース座標系までは達しない）。このように、逆変換マトリックスを用いてパーツマトリックススタックを底部から上部まで横断させる。
【０２２６】
CurrentPointは、パーツマトリックススタックを介し、機械基準座標系からワークピース座標系に変換される。
ｉ番目の軸では、変換は、方程式９６により表される。
【数９８】
2010500635.tif 000100
【０２２７】
CurrentPointがパーツマトリックススタックを横断する際、各軸は、軸が回転軸かまたは傾斜軸かを決定するためにチェックされる。ｉ番目の軸が回転軸である場合、ｉ番目の軸の座標系におけるCurrentPointからｉ番目の軸までの距離は、方程式９７により表される。
【数９９】
2010500635.tif 000101
【０２２８】
ｉ番目の軸が傾斜軸である場合、ｉ番目の軸の座標系におけるCurrentPointからｉ番目の軸までの距離は、方程式９８により表される。
【数１００】
2010500635.tif 000102
パーツマトリックススタックを横断すると、CurrentPointは、ワークピース座標系に関する工具先端部の値を保持する。
最高軸速度を用いた時間ステップの計算および固定
【０２２９】
方法は、時間ステップが原因で所望の軸が最高速度より速く移動するようなことがないかをチェックする。この方法は、カスケード方法４００の方法４３０、および、段階♯１の時間ステップ工具ベクトル補間に用いられる。さらに、時間ステップは、方程式９９により表されるような、ワークピース座標系に関連する工具の略一定の送り速度を有する移動を提供する。
【０２３０】
【数１０１】
2010500635.tif 000103
【０２３１】
移動に際していずれかの軸が最高速度を違反した場合、時間ステップをクランプする。各軸がチェックされ、複数の軸が最高速度を違反している場合、最も小さい時間ステップが許容範囲内であるとして用いられる。
【０２３２】
各軸について方程式１００で導かれる関係が満たされる場合、時間ステップは、クランプされる必要がある。
【数１０２】
2010500635.tif 000104
ただし、
【数１０３】
2010500635.tif 000105
時間ステップの値は、方程式１０３により導かれる。
【数１０４】
2010500635.tif 000106
均一な変換マトリックスおよびマトリックススタック
【０２３３】
工具マトリックススタック、および、パーツマトリックススタックなどのマトリックススタックは、複数の変換を単一のマトリックスに連結する汎用キネマティクスライブラリで用いられる方法である。一実施形態において、汎用キネマティスクスライブラリでは、機械軸間のキネマティクス関係を示すために回転および並進変換のみが用いられる。均一な変換を用いることにより、マトリックススタックは、複数の回転および並進変換を単一の変換マトリックスに連結できるようになる。したがって、マトリックススタックの順または逆変換マトリックスが複数の計算に用いられた場合、マトリックススタックにおけるすべてのマトリックスの乗算は、一度だけ行われる。
【０２３４】
マトリックススタックは、マトリックスをいくつ含んでもよい。マトリックススタックは、当該マトリックススタックにプッシュされる他のマトリックススタックの順または逆変換マトリックスも有してよい。マトリックススタックは、すべてのマトリックスをスタックから消去することなくオン／オフできる。
【０２３５】
以下のセクションで説明するように、工具マトリックススタックおよびパーツマトリックススタックにおけるマトリックスの性質により、計算は単純化されてよい。さらに、工具マトリックススタックおよびパーツマトリックススタックにおけるマトリックスの性質により、汎用キネマティクスライブラリにおいて用いられる変換マトリックスのマトリックスインバージョンは、本願明細書において説明される方法を利用しうる。
変換マトリックス動作のサブマトリックス方法
【０２３６】
サブマトリックス方法は、均一な幾何変換マトリックスをサブマトリックスに分解し、サブマトリックスが単位行列かゼロ変換かに基づいて、サブマトリックスに演算を適用することによって、マトリックス演算の実行時間を短縮する。
【０２３７】
サブマトリックス方法は、以下の決定則に基づく。
【０２３８】
【数１０５】
2010500635.tif 000107
【０２３９】
決定則は、配置サブマトリックスの恒等により駆動される。意思決定プロセスは、二進法などのブール論理に基づく。意思決定プロセス自体では、サブマトリックスの恒等状態が追跡されて恒等の計算を防止する。方程式１０５により表される２×２のブール意思決定マトリックスがマトリックスクラスに追加されることにより、４つのサブマトリックスによる以下の均一な変換マトリックス（Ｔ）の意思決定および恒等状態の追跡を支持する。
【数１０６】
2010500635.tif 000108
ただし、Ｒは、回転サブマトリックスであり、ｔは、並進マトリックスであり、ｓは、せん断マトリックスであり、ｋは、スケーリングマトリックスである。
【０２４０】
２×２のブール意思決定マトリックスの各エレメントは、４×４の変換マトリックス（Ｔ）のその対応するエレメントと一致する。
【数１０７】
2010500635.tif 000109
ブール意思決定マトリックスと変換マトリックスとは、図２６に示すように一対一で一致する。サブマトリックスの関係
【０２４１】
変換マトリックス（Ｔ）乗算の計算量は、ブール意思決定マトリックス（Ｄ）を用いて最適化される。
【数１０８】
2010500635.tif 000110
１０５を１０７に挿入すると、
【数１０９】
2010500635.tif 000111
となる。
【０２４２】
工作機械の幾何変換は、精密な変換なので、せん断プリミティブは、ゼロである。したがって、以下の個別の結果として生じたサブマトリックスは、完全に均一な変換マトリックスＴ３に再編成されうる等価変換を提供する。まず、回転サブマトリックスを得る。
【数１１０】
2010500635.tif 000112
次に、並進サブマトリクスを得る。
【数１１１】
2010500635.tif 000113
そして、せん断サブマトリックスを得る。
【数１１２】
2010500635.tif 000114
最後にスケーリングサブマトリックスを得る。
【数１１３】
2010500635.tif 000115
【０２４３】
サブマトリックスの演算は、乗算および加算であり、どちらも二進法で２つのオペランドおよび以下の属性を有する。属性１：識別オペランドの乗算（すなわち１の値）は、直接結果として生じるマトリックスに他のマトリックスのオペランドを与える。属性２：ゼロオペランドの乗算により、結果として生じるマトリックスはゼロになる。
サブマトリックスによるプロセス
【０２４４】
ブール意思決定マトリックスのm_bDefaultSubmatrixは、マトリックスクラスのクラス変数として追加される。ブール意思決定マトリックスの１つのエレメントは、対応するサブマトリックスがゼロまたは単位マトリックスの場合のみ真である。そうでない場合、エレメントは偽である。変換マトリックスは、ゼロ（並進およびせん断）と、単位（回転およびスケーリング）サブマトリックスにより初期化される。したがって、ブール意思決定マトリックスは、すべての真のブール値によって初期化される。
【０２４５】
以下の法則がプロセスに適用される。１．状況が属性１に当てはまる場合、乗算はスキップされる。２．状況が属性２に当てはまる場合、乗算および加算がスキップされる。
【０２４６】
意思決定の法則（１）は、演算のスキップを実装すべく、以下の方法で用いられる。
１．ｄＲ１＝真の場合、Ｒ３＝Ｒ２
２．ｄＲ２＝真の場合、Ｒ３＝Ｒ１
３．ｄＲ２＝真の場合、Ｒ１・ｔ２をスキップ
４．ｄＲ１＝真、または、ｄＲ２＝真の場合、加算をスキップ。
【０２４７】
その後、ブール意思決定マトリックスは、アップデートされる。マトリックスエレメントの乗算が実行されるべき場合、どちらのエレメントも以下の条件に対してチェックされる。いずれかのエレメントがゼロの場合、エレメントに対して乗算を実行しない。いずれかのエレメントが１の場合、乗算は実行されず、エレメントの演算は、エレメントをゼロに戻す。
【０２４８】
ブール意思決定マトリックスを用いた同様の最適化は、ベクトルおよびポイントを用いたマトリックスの加算、減算、および、乗算のために実装される。
変換マトリックスインバージョン
【０２４９】
一般的なマトリックスは、計算量の多いガウス‐ジョルダン消去法、ＬＵ分解、または、他の同様の方法を用いて反転される。直交回転サブマトリックスによる厳密な変換マトリックスの属性により、さらに計算量の多い方法を用いる代わりに、単純な演算を個別の変換サブマトリックスに適用することで、マトリックスを反転させることができる。以下の方程式は、Ｉ．Ｚｅｉｄ著、"ＣＡＤ／ＣＡＭ  Ｔｈｅｏｒｙ  ａｎｄ  Ｐｒａｃｔｉｃｅ"、マグローヒル、１９９１年、に記載されるマトリックスインバージョンの最適化を示し、当該参考文献の開示内容は、参照により本願明細書に明確に組み込まれる。
【数１１４】
2010500635.tif 000116
１１３に１０５を挿入すると、
【数１１５】
2010500635.tif 000117
となり、ただし、
【数１１６】
2010500635.tif 000118
パーツセットアップマトリックスの決定
【０２５０】
パーツセットアップマトリックスは、パーツキネマティクスチェーンにおける最後の軸座標系から機械におけるパーツについてのワークピース座標系への変換を定義する。パーツセットアップマトリックスを計算するための入力は、パーツセットアップのための機械基準座標系と、パーツセットアップのための機械軸位置を決定するときに用いられるプローブまたは工具の長さとに関連する機械軸位置である。機械のすべての軸間のキネマティクス関係を知ることにより、パーツセットアップマトリックスは、以下の方法で決定されうる。
【０２５１】
以下の計算のためにパーツマトリックススタック内のパーツセットアップマトリックスを４×４単位マトリックスとする。
【数１１７】
2010500635.tif 000119
ただし、
【数１１８】
2010500635.tif 000120
は、すべてのパーツ軸がそれらのパーツセットアップ軸位置に設定される場合に評価されるパーツマトリックススタックの逆変換マトリックスである。
【数１１９】
2010500635.tif 000121
は、すべての工具軸がそれらのパーツセットアップ軸位置に設定される場合に評価される工具マトリックススタックの順変換マトリックスである。ToolTipTransformationMatrixは、工具先端部座標系からスピンドル軸座標系への変換である。これは、スピンドル軸座標系に関する工具先端部のオフセットを含む単純な並進マトリックスである。
【０２５２】
ワークピース座標系における任意のポイントがテーブルの最後の軸に関して以下のように定義されてよい。
【数１２０】
2010500635.tif 000122
したがって、パーツセットアップマトリックスは、以下の方程式により決定されるが、パーツマトリックススタックにおけるパーツセットアップマトリックスは、４×４の単位マトリックスというわけではない。
【数１２１】
2010500635.tif 000123
そして新たなパーツセットアップマトリックスがパーツマトリックススタックの一番上にプッシュされる。
【０２５３】
本願明細書中で参照された表面法線ベクトル、および、工具ベクトルのすべてが本願明細書に開示される方法に対する基準となるべく想定されていないことに留意されたい。
【０２５４】
本発明を典型的な設計を有するものとして説明してきたが、本発明は、本開示の趣旨および範囲内でのさらなる修正が可能である。したがって、本出願は、一般法則を用いた本発明のいかなる変更、使用、または、適用を含むものと意図される。さらに、本出願においては、その程度の逸脱は、本発明が関係する周知または慣例的な実施の範囲内に収まるものと意図される。
【図１】
2010500635.tif 000124
【図２】
2010500635.tif 000125
【図３】
2010500635.tif 000126
【図４Ａ】
2010500635.tif 000127
【図４Ｂ】
2010500635.tif 000128
【図５Ａ】
2010500635.tif 000129
【図５Ｂ】
2010500635.tif 000130
【図６】
2010500635.tif 000131
【図７】
2010500635.tif 000132
【図８】
2010500635.tif 000133
【図９Ａ】
2010500635.tif 000134
【図９Ｂ】
2010500635.tif 000135
【図９Ｃ】
2010500635.tif 000136
【図１０Ａ】
2010500635.tif 000137
【図１０Ｂ】
2010500635.tif 000138
【図１０Ｃ】
2010500635.tif 000139
【図１１Ａ】
2010500635.tif 000140
【図１１Ｂ】
2010500635.tif 000141
【図１１Ｃ】
2010500635.tif 000142
【図１２Ａ】
2010500635.tif 000143
【図１２Ｂ】
2010500635.tif 000144
【図１２Ｃ】
2010500635.tif 000145
【図１２Ｄ】
2010500635.tif 000146
【図１３Ａ】
2010500635.tif 000147
【図１３Ｂ】
2010500635.tif 000148
【図１３Ｃ】
2010500635.tif 000149
【図１４Ａ】
2010500635.tif 000150
【図１４Ｂ】
2010500635.tif 000151
【図１４Ｃ】
2010500635.tif 000152
【図１５Ａ】
2010500635.tif 000153
【図１５Ｂ】
2010500635.tif 000154
【図１５Ｃ】
2010500635.tif 000155
【図１６Ａ】
2010500635.tif 000156
【図１６Ｂ】
2010500635.tif 000157
【図１７Ａ】
2010500635.tif 000158
【図１７Ｂ】
2010500635.tif 000159
【図１７Ｃ】
2010500635.tif 000160
【図１８Ａ】
2010500635.tif 000161
【図１８Ｂ】
2010500635.tif 000162
【図１８Ｃ】
2010500635.tif 000163
【図１９】
2010500635.tif 000164
【図２０】
2010500635.tif 000165
【図２１】
2010500635.tif 000166
【図２２】
2010500635.tif 000167
【図２３】
2010500635.tif 000168
【図２４】
2010500635.tif 000169
【図２５】
2010500635.tif 000170
【図２６】
2010500635.tif 000171
【国際調査報告】
2010500635.tif 000172
2010500635.tif 000173
2010500635.tif 000174
2010500635.tif 000175