(57)【要約】【課題】  装置の動きを追跡する方法、装置、およびシステムを提供すること。【解決手段】  本発明の方法は、表面に対する装置の位置を追跡する第１の追跡サブシステムを実行するステップと、表面に対する装置の位置を追跡する第２の追跡サブシステムを実行するかどうかを判断するステップと、表面の位置に対応するデータを取り込むステップと、取り込んだデータに基づいて表面に対する装置の位置を決定するステップとを含む。次に、装置の位置は、ホストコンピュータに送信され、アプリケーションプログラムで使用することができる。第１および第２の追跡サブシステムは、それぞれ相対および絶対追跡サブシステムとすることができる。【選択図】  図３Ｃ
2006031709.tif 000002
【特許請求の範囲】
【請求項１】
装置の動きを追跡する方法であって、
表面に対する装置の位置を追跡する第１の追跡サブシステムを実行するステップと、
前記表面に対する前記装置の位置を追跡する第２の追跡サブシステムを実行するかどうかを判断するステップと、
前記表面上の位置に対応するデータを取り込むステップと、
前記表面に対する前記装置の位置を前記取り込んだデータに基づいて決定するステップと
を含むことを特徴とする方法。
【請求項２】
前記装置の前記位置をコンピュータに送信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記装置の前記位置を前記コンピュータ上で動作するアプリケーションの入力として適用するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記アプリケーションは、カーソル位置を決定することを特徴とする請求項３に記載の方法。
【請求項５】
前記適用ステップに応答して、前記カーソル位置を表示器上に表示するステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記装置の前記位置が変化したかどうかを判断するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記第１の追跡サブシステムは相対追跡サブシステムであり、前記第２の追跡サブシステムは絶対追跡サブシステムであることを特徴とする請求項１に記載の方法。
【請求項８】
前記表面に対する前記装置の前記位置を決定する前記ステップは、前記実行された第１の追跡サブシステムに基づくことを特徴とする請求項１に記載の方法。
【請求項９】
前記表面に対する前記装置の前記位置を決定する前記ステップは、前記実行された第２の追跡システムに基づくことを特徴とする請求項１に記載の方法。
【請求項１０】
前記表面に対する前記装置の前記位置を決定する前記ステップは、前記実行された第１および第２の追跡システムに基づくことを特徴とする請求項１に記載の方法。
【請求項１１】
前記第１の追跡サブシステムは、デフォルトの追跡サブシステムであることを特徴とする請求項１に記載の方法。
【請求項１２】
前記第２の追跡サブシステムを実行することを決定すると直ちに、前記方法は、前記第１の追跡サブシステムの実行を不能にするステップをさらに含み、前記表面に対する前記装置の前記位置を決定する前記ステップは、前記実行される第２の追跡サブシステムに基づくことを特徴とする請求項１に記載の方法。
【請求項１３】
前記取り込んだデータをコンピュータに送信するステップをさらに含み、前記表面に対する前記装置の前記位置を決定する前記ステップは、前記コンピュータによって実施されることを特徴とする請求項１に記載の方法。
【請求項１４】
前記第１の追跡サブシステムの有効性を前記第２の追跡サブシステムと比較するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記第１の追跡サブシステムの有効性を前記第２の追跡サブシステムと比較する前記ステップは、設定に基づくことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第２の追跡サブシステムを実行するかどうかを判断する前記ステップは、前記第１の追跡サブシステムが前記装置の前記位置の追跡に失敗したかどうかを判断するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１７】
前記表面上の前記位置に対応する前記データが欠落しているかまたは遮られているときに、前記第１の追跡サブシステムは前記装置の前記位置の追跡に失敗することを特徴とする請求項１６に記載の方法。
【請求項１８】
データを取り込む前記ステップは、
前記装置から光を出力するステップと、
前記表面上にコード化されたデータの一部を取り込むステップと、
前記コード化されたデータを解読するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記コード化されたデータは、位置データおよび追加のデータを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記表面は透かし表面であることを特徴とする請求項１８に記載の方法。
【請求項２１】
前記取り込んだデータをメモリに格納するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２２】
前記メモリは、前記装置内にあることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記装置は電子ペン型の装置であることを特徴とする請求項２１に記載の方法。
【請求項２４】
前記第２の追跡サブシステムを実行するかどうかを決定する前記ステップは、前記第１の追跡サブシステムによって取り込まれたデータに応答して前記第２の追跡サブシステムの実行を起動するステップを含むことを特徴とする請求項１に記載の方法。
【請求項２５】
請求項１の前記諸ステップを実施するためのコンピュータ実行可能な命令を含むことを特徴とするコンピュータ可読の媒体。
【請求項２６】
相対追跡サブシステムと、
絶対追跡サブシステムと、
前記相対追跡サブシステムおよび前記絶対追跡サブシステムの間で信号の送受信を行うように構成された制御システムと
を含むことを特徴とする装置。
【請求項２７】
センサをさらに含み、前記相対追跡サブシステムは相対追跡エンジンを含み、前記センサは相対位置データを決定するために前記相対追跡エンジンにデータを提供することを特徴とする請求項２６に記載の装置。
【請求項２８】
センサをさらに含み、前記絶対追跡サブシステムは絶対追跡エンジンを含み、前記センサは絶対位置データを決定するために前記絶対追跡エンジンにデータを提供することを特徴とする請求項２６に記載の装置。
【請求項２９】
少なくとも２つのセンサをさらに含み、第１のセンサは前記相対追跡サブシステムにデータを提供し、第２のセンサは前記絶対追跡サブシステムにデータを提供することを特徴とする請求項２６に記載の装置。
【請求項３０】
前記相対追跡サブシステムおよび前記絶対追跡サブシステムから受信した前記各信号は、位置データを含むことを特徴とする請求項２６に記載の装置。
【請求項３１】
前記制御システムは、位置データをホストコンピュータに送信するようにさらに構成されることを特徴とする請求項２６に記載の装置。
【請求項３２】
前記位置データを格納するように構成されたメモリをさらに含むことを特徴とする請求項３１に記載の装置。
【請求項３３】
前記相対追跡サブシステム、前記絶対追跡サブシステム、および前記制御システムは、少なくとも一部がファームウェアによって実行されることを特徴とする請求項２６に記載の装置。
【請求項３４】
装置の動きを追跡するシステムであって、
装置の位置に対応するデータを取り込むように構成されたセンサ、および前記取り込まれたデータを受信し前記装置の決定された位置データを出力するように構成された第１の追跡サブシステムを含む装置と、
位置を表すデータを出力するように構成された第２の追跡サブシステムを含むホストコンピュータと
を含み、
前記ホストコンピュータは、前記装置と通信すると共に、前記決定された位置データを受信し、前記装置の位置を表すデータを計算し、かつ前記位置を表すデータを入力としてアプリケーションに適用するように構成されることを特徴とするシステム。
【請求項３５】
前記ホストコンピュータは、前記受信した決定された位置データに基づいて前記代表位置データを計算するように構成されることを特徴とする請求項３４に記載のシステム。
【請求項３６】
前記第１の追跡サブシステムは相対追跡サブシステムであり、前記第２の追跡サブシステムは絶対追跡サブシステムであることを特徴とする請求項３４に記載のシステム。
【請求項３７】
前記装置は、ハンドヘルドの装置であることを特徴とする請求項３４に記載のシステム。
【請求項３８】
前記装置は、電子ペン型の装置であることを特徴とする請求項３４に記載のシステム。
【請求項３９】
装置の動きを表すデータを処理するためのソフトウェアアーキテクチャであって、
相対位置データを受信し、前記相対位置データに基づいて絶対位置データを計算するように構成された少なくとも１つのコンポーネントと、
前記コンポーネントにアクセスするための少なくとも１つのアプリケーションプログラムインタフェースと
を含むことを特徴とするアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸態様は一般に、コンピュータ入力装置などの装置の動きを検出するための追跡システムに関する。より詳細には、本発明の諸態様は、絶対および相対追跡法によって装置の動きを追跡する複合追跡装置に関する。
【背景技術】
【０００２】
ユーザとコンピュータとの対話は、日々増大を続けている。より多くの仕事で各個人がコンピュータと対話する必要があり、益々多くの人々が仕事と娯楽の両方でコンピュータとの対話を選択している。コンピュータと対話するための様々な追跡装置には、マウス、キーボード、ジョイスティック、タッチパッドなどがある。パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、電子ペンなど他の追跡装置によって、ユーザが様々なコンピュータおよびコンピュータシステムと対話することも可能である。
【０００３】
ユーザ対話の増加に加えて、より正確な対話を求める要求も増加している。例えば、ユーザは、デジタルカメラで取り込んだ画像を、画像操作用のアプリケーションプログラムが動作するホストコンピュータ上で処理することができる。ユーザは、画像の一部の色やコントラストを変更して、芝生の緑色、あるいは空の青色を明るくしたいと望むことがあるだろう。その際、ユーザは、様々な追跡装置の１つを用いてホストコンピュータと対話することによって、画像の各部を識別し処理することができる。ユーザは、操作可能なボタンを備えたマウスを用い、そのボタンを押して保持することによって、処理したい部分を取り囲むことができる。このようなシナリオでは、ユーザはおそらく、処理部分を非常に正確に識別したいと望むはずである。
【０００４】
追跡装置は、２種類のシステムのうちの一方、すなわち相対追跡システムまたは絶対追跡システムのどちらかに分類することができる。相対追跡システムは、絶対位置の知識とは関係なく、ある位置から別の位置への相対的な動きを認識する機能を有する。相対光学追跡の方法には、とりわけ画像相関、微分パターン勾配（ｄｉｆｆｅｒｅｎｔｉａｌ  ｐａｔｔｅｒｎ  ｇｒａｄｉｅｎｔ）、レーザスペックル、ドップラなどをベースにしたものが含まれる。相対追跡システムの特徴の１つは、１つまたは複数のセンサが、時間と共に変化する信号を検出し、その信号を様々な方法で処理して相対的な位置の変化を決定できることである。絶対追跡システムは、以前の決定とは無関係に装置の位置を認識する機能を有する。マウスやトラックボールなどのコンピュータ入力装置が相対追跡システムを実装しているのに対し、電子ペンは一般に絶対追跡システムを実装している。追跡システムは一般に、相対追跡システムと絶対追跡システムとの両方を含むことはない。その両者を組み合わせることのコスト、サイズ、技術的見地からの困難さにより、各製造業者は、各装置を構築する際に、それら２つの方法の一方を選択してきた。そのため、ユーザが、あるコンピュータとの対話のために入力装置を操作しているとき、そのユーザは、他のコンピュータとは適切に対話できない場合があり、またその操作中のコンピュータとも正確な対話ができない場合がある。様々な追跡方法を実施するためには、ユーザは２つの異なる装置を用意する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、相対追跡システムおよび絶対追跡システムの両方に基づいて装置の動きを追跡することができ、追跡した動きの位置をコンピュータアプリケーションの入力として送信できるコンピュータ入力装置追跡システムが求められている。
【課題を解決するための手段】
【０００６】
本発明の一態様では、装置の動きを追跡する方法が提供される。この方法は、表面に対する装置の位置を追跡する第１の追跡サブシステムを実行するステップと、表面に対する装置の位置を追跡する第２の追跡システムを実行するかどうかを判断するステップと、表面上の位置に対応するデータを取り込むステップと、取り込んだデータに基づいて表面に対する装置の位置を決定するステップとを含む。次いで、装置の位置は、ホストコンピュータに送信され、アプリケーションプログラムで使用される。
【０００７】
他の態様では、装置とホストコンピュータを含み、装置の動きを追跡するシステムが提供される。この装置は、装置の位置を追跡するように構成されたセンサと、取り込まれたデータを受け取り、その装置の決定された位置データを出力するように構成された第１の追跡サブシステムとを含む。ホストコンピュータは、位置を表すデータを出力するように構成された、第２の追跡サブシステムを含む。この場合、ホストコンピュータは、前述の装置と通信すると共に、決定された位置データを受信し、装置の位置を表すデータを計算し、その位置データをアプリケーションプログラムの入力として適用するように構成される。
【０００８】
本発明の少なくとも一態様によれば、絶対追跡サブシステムおよび相対追跡サブシステムの両方に基づいて位置を追跡するように構成された装置が記載される。複合追跡装置および／またはシステムとは、両方の追跡方法を含むものである。
【０００９】
本発明の前述の要約、ならびに例示的実施形態についての以下の詳細な説明は、添付の図面と併せて読むことにより、より良く理解されるはずである。これらの図面は、例示のために添付されたものであり、特許請求の範囲に記載の本発明を限定するものではない。
【発明を実施するための最良の形態】
【００１０】
様々な例示的実施形態についての以下の説明では、添付の図面を参照している。添付の図面は、本発明の一部をなすものであり、各図面には、例示のために、本発明を実施できる様々な実施形態が示されている。他の実施形態も使用可能であり、本発明の範囲を逸脱することなく構造上、機能上の修正をなし得ることを理解されたい。
【００１１】
図１は、本発明を実装することができる、適切なコンピュータシステム環境１００の一例を示す。コンピュータシステム環境１００は、適切なコンピュータ環境の一例に過ぎず、本発明の使用および機能の範囲に関し、いかなる制限を課することを意図したものでもない。コンピュータシステム環境１００は、例示的コンピュータシステム環境１００に示された各コンポーネントの任意の１つまたは組合せに関し、まったくそれらに依存するものではなく、それらを要件とするものでもないと解釈されたい。
【００１２】
本発明は、他の多数の汎用または専用のコンピュータシステム環境または構成と共に使用することができる。本発明と共に適切に使用できる周知のコンピュータシステム、環境、および／または構成には、これに限定されるものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境などがある。
【００１３】
本発明は、コンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能な命令の一般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、分散コンピュータ環境でも実施することができ、その場合、各タスクは、通信ネットワークによって接続されたリモート処理装置によって実施することができる。分散コンピュータ環境では、プログラムモジュールは、ローカルおよびリモートの両方のコンピュータメディア、例えばメモリ記憶装置などに置くことができる。
【００１４】
図１Ａを参照すると、本発明を実装するための一例示的システムには、コンピュータ１１０のような形の汎用コンピュータ装置が含まれる。コンピュータ１１０の各コンポーネントには、これに限定されるものではないが、処理ユニット１２０、システムメモリ１３０、システムバス１２１などが含まれる。システムバス１２１は、システムメモリなど様々なシステムコンポーネントを処理ユニット１２０に結合する。システムバス１２１は、いくつかの種類のバス構造のいずれであってもよく、例えば、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラルバス、ローカルバスなどであってもよい。これに限定されるものではないが、例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）バス、メザニン（Ｍｅｚｚａｎｉｎｅ）バスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスなどがある。
【００１５】
一般に、コンピュータ１１０は、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスできる、任意の使用可能な媒体であってよく、揮発性および不揮発性メディアのいずれでも、またリムーバブルおよび非リムーバブルメディアのいずれでもよい。限定の意味ではなく、例として、コンピュータ可読媒体は、コンピュータ記憶メディアおよび通信メディアを含むことができる。コンピュータ記憶メディアは、コンピュータ可読命令、データ構造、プログラムモジュール、その他の情報を記憶するための任意の方法または技術で実装された、揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体を含む。これに限定されるものではないが、コンピュータ記憶媒体には、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み出し専用メモリ）、ＥＥＰＲＯＭ（電気的消去可能なプログラマブルＲＯＭ）、フラッシュメモリ、その他のメモリ技術製品、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）、その他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、その他の磁気記憶装置、その他、所望の情報の格納に使用でき、またコンピュータ１１０がアクセスできる任意の媒体を含む。一般に通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどを、搬送波もしくは他の伝送機構など変調されたデータ信号の形で実施すると共に、任意の情報送達媒体を含む。「変調されたデータ信号」という用語は、信号中の情報をコード化するような方法で設定または変更された、１つまたは複数の信号特性を有する信号を意味する。限定の意味ではなく例として、通信媒体には、有線ネットワーク、直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外などの無線媒体が含まれる。上記の媒体の任意の組合せもまた、コンピュータ可読媒体の範囲に含まれるものとする。
【００１６】
システムメモリ１３０は、ＲＯＭ１３１、ＲＡＭ１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入／出力システム（ＢＩＯＳ）１３３は、例えば起動時などに、コンピュータ１１０内の各要素間で情報を転送できるようにする基本ルーチンを含み、通常はＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０によって即時にアクセス可能なかつ／または現在動作中の、データモジュールおよび／またはプログラムモジュールを含む。限定の意味ではなく例として、図１Ａには、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７が示されている。
【００１７】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶メディアを含むこともできる。例示の意味だけで、図１Ａには、非リムーバブルな不揮発性の磁気媒体に読み書きをするハードディスクドライブ１４１、リムーバブルな不揮発性磁気ディスク１５２に読み書きをする磁気ディスクドライブ１５１、およびリムーバブルな不揮発性光ディスク１５６、例えばＣＤ−ＲＯＭ、その他の光媒体に読み書きする光ディスクドライブ１５５が示されている。例示的動作環境で使用できる、他のリムーバブル／非リムーバブル、揮発性／不揮発性の記憶媒体には、これには限定されないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インタフェース１４０などの非リムーバブルなメモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インタフェース１５０などのリムーバブルなメモリインタフェースを介してシステムバス１２１に接続される。
【００１８】
上で説明し図１Ａに示した、各ドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０用の他のデータを記憶する。図１Ａにおいて、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するように図示されている。これらの各コンポーネントが、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７とは同一であっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、それらが、異なるコピーであってもよいことを示すために、本明細書では異なる番号が与えられている。ユーザは、入力装置、例えばデジタルカメラ１６３、キーボード１６２、およびポインティング装置１６１などを介して、コンピュータ１１０に命令または情報を入力する。ポインティング装置とは、一般にマウス、トラックボール、タッチパッドを意味する。他の入力装置（図示せず）には、ペン、スタイラスおよびタブレット、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバス１２１に結合されたユーザ入力インタフェース１６０を介して処理ユニット１２０に接続されることも多い。ただし、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）など、他のインタフェースおよびバス構造を用いて接続することもできる。モニタ１９１または他の種類の表示装置も、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータは、例えば、出力ペリフェラルインタフェース１９５を介して接続されるスピーカ１９７、プリンタ１９６など他の周辺出力装置を含むこともできる。
【００１９】
コンピュータ１１０は、１つまたは複数のリモートコンピュータ、例えばリモートコンピュータ１８０などへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共用ネットワークノードであってもよい。また、図１Ａにはメモリ記憶装置１８１だけが示されているが、一般に、コンピュータ１１０に関連して上で説明した要素の多く、またはそのすべてを含むことができる。図１Ａに描かれた論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１およびＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００２０】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、その他の手段を含む。モデム１７２は、内蔵でも外付けでもよいが、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関連して示された各プログラムモジュールまたはその一部は、リモートのメモリ記憶装置に格納することができる。限定の意味ではなく例示として、図１Ａには、リモートのアプリケーションプログラムが、メモリ装置１８１上に常駐するように示されている。
【００２１】
図示されたネットワーク環境が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることを理解されたい。ＴＣＰ／ＩＰ、イーサネット（登録商標）、ＦＴＰ、ＨＴＴＰなど、様々な周知のプロトコルのいずれかが存在するものと想定されるので、このシステムは、クライアントサーバ構成の中で動作することができ、ユーザがウェブベースのサーバからウェブページを取り出すことを可能にする。ウェブページ上のデータを表示し操作するためには、様々な従来のウェブブラウザの任意のものを使用することができる。
【００２２】
プログラムインタフェース（または、より簡単にインタフェース）は、１つまたは複数のコードセグメントが、１つまたは複数の他のコードセグメントによって提供される機能と通信するか、またはその機能にアクセスすることを可能にする機構、プロセス、プロトコルのいずれかと見なすことができる。あるいは、プログラムインタフェースは、あるシステムの、あるコンポーネントの１つまたは複数の機構、メソッド、関数呼び出し、モジュール、オブジェクト等であって、他のコンポーネントの１つまたは複数の機構、メソッド、関数呼び出し、モジュール等と通信によって結合できるものと見なすこともできる。前文の「コードセグメント」という用語は、１つまたは複数の命令またはコードからなるラインを含むことが意図され、例えば、コードモジュール、オブジェクト、サブルーチン、関数などを含む。この用語は、適用される用語を問わず、またコードセグメントが別々にコンパイルされるかどうか、コードセグメントがソースまたは中間コードまたはオブジェクトコードとして提供されるかどうか、コードセグメントがランタイムシステムまたはプロセスで使用されるかどうか、それらが同一マシンに置かれるかまたは異なるマシンに置かれるかまたは複数のマシンに配布されるかどうか、あるいはコードセグメントによって表される機能が、すべてソフトウェアで実装されるか、すべてハードウェアで実装されるか、またはハードウェアとソフトウェアの組合せで実装されるかどうかを問わない。
【００２３】
概念的には、プログラムインタフェースは、一般に図１Ｂまたは図１Ｃに示したようなものと見なすことができる。図１Ｂには、第１および第２のコードセグメントが通信する通路としてのインタフェース、すなわちインタフェース１が示されている。図１Ｃは、インタフェースがインタフェースオブジェクトＩ１およびＩ２（これらは、第１および第２のコードセグメントの一部であってもなくてもよい）を含むように図示されている。このオブジェクトにより、システムの第１および第２のコードセグメントは、媒体Ｍを介して通信することができる。図１Ｃにおいて、インタフェースオブジェクトＩ１およびＩ２は同一システムの別個のインタフェースと見なすこともできるし、オブジェクトＩ１およびＩ２に媒体Ｍを加えたものが、インタフェースを構成すると見なすこともできる。図１Ｂおよび１Ｃには、双方向のフローおよびフローの各端部のインタフェースが示されているが、実装によっては、一方向だけに情報フローが存在する（または以下で説明するように情報フローが存在しない）ことがあり、また片側だけにインタフェースオブジェクトが存在することもあり得る。限定の意味ではなく例として、アプリケーションプログラムインタフェース（ＡＰＩ）、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、コンポーネントオブジェクトモデル（ＣＯＭ）インタフェースなどの用語は、プログラムインタフェースの定義の範囲内に含まれる。
【００２４】
このようなプログラムインタフェースの諸態様には、第１のコードセグメントが第２のコードセグメントに情報（この場合、「情報」という用語は最も広い意味で使用され、データ、命令、要求などを含む）を送信する方法、第２のコードセグメントが情報を受信する方法、ならびに情報の構造、シーケンス、構文、構成、スキーマ、タイミング、およびコンテンツが含まれる。この件に関して、基になる送信媒体そのものは、有線であっても、無線であっても、あるいはその両方の組合せであってもよく、インタフェースの定義に従って情報が送信される限りインタフェースの動作にとってさほど重要ではないかもしれない。状況によっては、情報は従来の意味での一方向または双方向には通過しない場合がある。例えば、情報送信が他の機構による（例えば、情報がコードセグメント間の情報フローとは別に、バッファ、ファイルなどに置かれる）かまたは情報転送が存在しない場合、またはあるコードセグメントが単に第２のコードセグメントによって実施される機能にだけアクセスする場合などである。所与の状況において、例えば、各コードセグメントが、疎結合（ｌｏｏｓｅｌｙ  ｃｏｕｐｌｅｄ）構成のシステムの一部であるかどうか、または密結合（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ）構成のシステムの一部であるかどうかに応じて、このような態様のいずれか、またはすべてが重要になることもある。したがって、このリストは例示的なものであり、限定的なものではないと見なすべきである。
【００２５】
プログラムインタフェースについてのこの考えは、当業者には既知のものであり、また本発明の前述の詳細な説明からも明らかである。しかし、プログラムインタフェースを実装する他の方法も存在する。したがって、明示的に除外しない限り、それらの方法も添付の特許請求の範囲の記載に含まれることが意図される。そのような他の方法は、図１Ｂおよび１Ｃの単純化された図と比べ、より高度で複雑なものに見えるかもしれないが、それらの方法もやはり、同様の機能を実施してほぼ同様の結果を達成するものである。次に、プログラムインタフェースの、いくつかの例示的代替実装について簡単に説明する。
【００２６】
Ａ．分割（ＦＡＣＴＯＲＩＮＧ）  
あるコードセグメントから他のコードセグメントへの通信は、通信を複数の別個の通信に分割して間接的に達成することができる。このことが、図１Ｄおよび図１Ｅに示されている。図示のように、いくつかのインタフェースは、分割可能な機能の組によって記述することができる。したがって、数学的に２４が２×２×３×２で与えられるように、図１Ｂおよび１Ｃのインタフェース機能を要素に分割して、同一の結果を達成することができる。したがって、図１Ｄに示したように、インタフェース、すなわちインタフェース１によって提供される機能を再分割して、そのインタフェースの通信を複数のインタフェース、すなわちインタフェースＡ、インタフェースＢ、インタフェースＣ等に変換し、しかも同一の結果を達成することができる。図１Ｅに示したように、インタフェースＩ１によって提供される機能を複数のインタフェースＩ１ａ，Ｉ１ｂ、Ｉ１ｃに分割し、しかも同一の結果を達成することができる。同様に、第１のコードセグメントから情報を受信する第２のコードセグメントのインタフェースＩ２は、複数のインタフェースＩ２ａ、Ｉ２ｂ、Ｉ２ｃ等に分割することができる。分割する際に、第１のコードセグメントに含まれるインタフェースの数は、第２のコードセグメントに含まれるインタフェースの数に一致する必要はない。図１Ｄおよび１Ｅのいずれの場合でも、インタフェース、すなわちインタフェース１およびＩ１の機能上の趣旨は、それぞれ図１Ｂおよび１Ｃのものと同一に維持される。インタフェースの分割はまた、分割したことが認識し難くなるように結合、交換、その他の数学的特性に従うことができる。例えば、動作の順番が重要でないこともある。したがって、あるインタフェースによって実施される機能は、他のコードまたはインタフェースによって、またはシステムの他のコンポーネントによって、そのインタフェースに到着する前にうまく実施できることもある。さらに、プログラミング技術分野の技術者ならば、同一の結果を達成する様々な関数呼び出しを行う様々な方法が存在することが理解できよう。
【００２７】
Ｂ．再定義（ＲＥＤＥＦＩＮＩＴＩＯＮ）  
場合によっては、プログラムインタフェースのあるアスペクト（例えば、パラメータ）を無視、追加、または再定義しても、所期の結果を達成できることがある。このことが、図１Ｆおよび１Ｇに示されている。例えば、図１Ｂのインタフェース、すなわちインタフェース１が、関数呼び出しＳｑｕａｒｅ（入力，精度，出力）、すなわち３つのパラメータ入力、精度、出力を含む呼び出しを備えており、その呼び出しが第１のコードセグメントから第２のコードセグメントに発行されたと想定する。図１Ｆに示したように、所与のシナリオにおいて真中のパラメータである精度が無関係の場合には、それを無視するか、あるいは（この状況で）意味のないパラメータで置き換えることができる。無関係のパラメータを追加することもできる。いずれの場合でも、入力が第２のコードセグメントによって二乗（ｓｑｕａｒｅ）された後で戻される限り二乗の機能は達成することができる。精度は、そのコンピュータシステムの下流、または他の部分にとっては、十分意味のあるパラメータになり得る。しかし、二乗を計算するという限られた目的のために精度が不必要だと認識されると、そのパラメータを置き換えること、または無視することができる。例えば、有効な精度値を送る代わりに、誕生日など意味のない値を、結果に悪影響を与えることなく送ることができる。同様に、図１Ｇに示したように、インタフェースＩ１をインタフェースＩ１’で置き換えて、パラメータを無視するか、またはインタフェースにパラメータを追加するように再定義することができる。同様に、インタフェースＩ２をインタフェースＩ２’として再定義することによって、不必要なパラメータまたは他の場所で処理されるパラメータを無視するように再定義することもできる。ここで重要なことは、場合によっては、プログラムインタフェースが、ある目的のために不必要な、パラメータなどのアスペクトを含むことができることであり、したがってそれらのパラメータを無視もしくは再定義すること、または他の場所で他の目的のために処理することができるということである。
【００２８】
Ｃ．インラインコーディング（ＩＮＬＩＮＥ  ＣＯＤＩＮＧ）  
２つの別個のコードモジュールの機能の一部またはすべてをマージして、それらの間の「インタフェース」の形を変更することも可能である。例えば、図１Ｂおよび１Ｃの機能を、それぞれ図１Ｈおよび図１Ｉの機能に変換することができる。図１Ｈにおいて、図１Ｂの以前の第１および第２のコードセグメントは、その両方を含むモジュールにマージされる。この場合、各コードセグメントはやはり相互に通信させることもできるが、インタフェースは単一のモジュールにさらに適した形に適合させることができる。したがって、例えば、正式なＣａｌｌおよびＲｅｔｕｒｎステートメントはもはや必要ないかもしれないが、インタフェース、インタフェース１に従った、類似の処理または応答は、引き続き実施することができる。同様に、図Ｉ１に示したように、図１ＣのインタフェースＩ２の一部（またはすべて）をインタフェースＩ１のインラインに書き込んで、インタフェースＩ１”を形成することができる。図示のように、インタフェースＩ２はＩ２ａとＩ２ｂに分割され、インタフェース部Ｉ２ａはインタフェースＩ１と共にインラインでコード化されてインタフェースＩ１”が形成される。具体例として、図１ＣのインタフェースＩ１が関数呼び出しｓｑｕａｒｅ（入力、出力）を実行し、それがインタフェースＩ２で受信され、（二乗のために）入力を介して送られた値が第２のコードセグメントによって処理された後で、二乗された結果が出力を介して送り返される場合を考える。このような場合には、第２のコードセグメントによって実施される処理（入力の二乗）は、第１のコードセグメントによって、インタフェースへの呼び出しなしに実施することができる。
【００２９】
Ｄ．分離（ＤＩＶＯＲＣＥ）  
あるコードセグメントから他のコードセグメントへの通信は、通信を複数の別個の通信に分割して間接的に実施することができる。この概略が、図１Ｊおよび１Ｋに示されている。図１Ｊに示したように、１つまたは複数のミドルウェア（機能および／またはインタフェース機能を元のインタフェースから分離するので、分離インタフェースと呼ばれる）が提供されて、第１のインタフェース、すなわちインタフェース１上の通信を、別のインタフェース、この場合はインタフェース２Ａ，インタフェース２Ｂ、インタフェース２Ｃに従うように変換する。このことは、例えばインタフェース１のプロトコルに従うオペレ−ティングシステムと通信するように設計されたアプリケーションのインストールベースがあり、次いで、そのオペレーティングシステムが別のインタフェース、この場合はインタフェース２Ａ、インタフェース２Ｂ、およびインタフェース２Ｃの各インタフェースを使用するように変更されるような場合に実施することができる。重要なのは、第２のコードセグメントによって使用される元のインタフェースが、もはや第１のコードセグメントによって使用されるインタフェースと互換でなくなるように変更されることであり、したがって、中間物を使用して新旧のインタフェースの互換を取るということである。同様に、図１Ｋに示したように、第３のコードセグメントを分離インタフェースＤＩ１に導入してインタフェースＩ１からの通信を受信すると共に、それを分離インタフェースＤＩ２にも導入して、そのインタフェース機能を、例えば、ＤＩ２と共に動作するように再設計されたインタフェースＩ２ａおよびＩ２ｂに送信することによって、同一の機能結果を提供することができる。同様に、ＤＩ１とＤＩ２が共同して動作することで、図１ＣのインタフェースＩ１およびＩ２の機能を新しいオペレーティングシステム用に変換しても、同一のまたは類似の機能結果を提供することができる。
【００３０】
Ｅ．書換え（ＲＥＷＲＩＴＩＮＧ）  
他の可能な変形は、コードを動的に書き換えて、インタフェース機能をほぼ同一の結果を達成する何か他のもので置き換えることである。例えば、中間言語（例えば、Ｍｉｃｒｏｓｏｆｔ  ＩＬ、Ｊａｖａ（登録商標）ＢｙｔｅＣｏｄｅなど）で記述されたコードセグメントが、実行環境（．Ｎｅｔ  ｆｒａｍｅｗｏｒｋ、Ｊａｖａ（登録商標）ランタイム環境、または他の類似のランタイム環境など）のジャストインタイム（ＪＩＴ）コンパイラまたはインタープリタに提供されるシステムが存在し得る。ＪＩＴコンパイラは、通信を第１のコードセグメントから第２のコードセグメントに動的に変換するように記述することができる。すなわち、第２のコードセグメント（すなわち、元の第２のコードセグメント、または異なる第２のコードセグメント）で必要とされる他のインタフェースに通信を一致させることができる。このことが、図１Ｌおよび１Ｍに示されている。図１Ｌから分かるように、このアプローチは、上記の分離シナリオと類似している。例えば、アプリケーションのインストールベースがインタフェース１のプロトコルに従うオペレ−ティングシステムと通信するように設計されているが、次いで、そのオペレーティングシステムが別のインタフェースを使用するように変更される場合に、このアプローチを実施することができる。ＪＩＴコンパイラを使用して、実行中に通信を、インストールベースのアプリケーションからそのオペレーティングシステムの新しいインタフェースに一致させることができる。図１Ｍに示したように、動的にインタフェースを書き換えるこのアプローチを適用して、インタフェースを動的に分割（ｆａｃｔｏｒ）、あるいは動的に変更することができる。
【００３１】
インタフェースとして同一のまたは類似の結果を代替実施形態によって達成するための上記のシナリオが、様々な方法で直列および／または並列に組み合わせることができ、また他の中間コードとも組み合わせることができることに留意されたい。したがって、上記の代替実施形態は、相互に排他的なものではなく、混合し、適合させ、組み合わせることによって図１Ｂおよび図１Ｃに示された一般的なシナリオと同一のまたは等価なシナリオを生成することができる。多くのプログラミング構成と同様に、インタフェースの同一のまたは類似の機能を達成するための、本明細書には記載されていないかもしれないが、やはり本発明の趣旨および範囲によって表すことができる他の類似の方法が存在することにも留意されたい。すなわち、インタフェースの価値の基になるのは、少なくとも部分的にはインタフェースによって示される機能であり、またインタフェースによって可能になる有利な結果であることに留意されたい。
【００３２】
図２Ａは、内部コンポーネントの概略表示を含む、コンピュータ入力装置２００の側面図である。コンピュータ入力装置２００はハウジング２０５を含む。ハウジング２０５の底部は、机上または卓上などの支持表面上に置かれるように構成されたほぼフラットな平面であるが、またユーザが容易に手で持つことができるものでもある。ハウジング２０５の上部は、人間の手と快適に調和し、それを支持するように形成される。コンピュータ入力装置２００は、図１Ａにマウスとして示されたコンピュータ入力装置１６１であってもよい。コンピュータ入力装置２００は、ユーザが、押してエントリをクリックし、かつ／またはコンピュータ入力装置２００を用いた動作を実施することを可能にする、動作可能なボタン２０７を備える。コンピュータ入力装置２００は、スクロールホイール２０９を備えていることもある。コンピュータ入力装置２００はまた、制御システム２１０、相対追跡サブシステム２２０、絶対追跡サブシステム２３０、およびセンサ２４０を含むように示されている。参照要素２１０，２２０，２３０、および２４０は、これらのコンポーネントがコンピュータ入力装置２００に内蔵できることを示すために破線の形で示されている。当業者ならば、コンピュータ入力装置という用語に、いくつかの異なる装置を含めることができることを理解されたい。コンピュータ入力装置の例には、マウス、電子ペン、ＰＤＡ（携帯情報端末）、デジタルカメラ、携帯電話、トラックボールマウス、タッチパッド、ジョイスティック、および個人が装着できる電子装置、例えばグローブなどが含まれる。グローブは、装着されたときに、個人の手および／または指の動きを追跡して、情報をコンピュータに入力するために使用できるものである。
【００３３】
制御システム２１０は、データの計算、信号処理、およびホストコンピュータ（図示せず）とのインタフェースのためのものであり、シリコンチップ、デジタル部品、および／またはマイクロプロセッサ部品などで構成することができる。制御システム２１０は、各サブシステム、すなわち相対追跡サブシステム２２０および絶対追跡サブシステム２３０と接続された形で図示されている。追跡サブシステム２２０および２３０は、センサ２４０に接続されて示されている。図２Ａに示されるように、各サブシステムは、コンピュータ入力装置２００の動きを追跡するデータを、センサ２４０を使用して取り込む。図２Ａには示されていないが、各追跡サブシステム２２０および２３０は、追跡のために独立したセンサ２４０を備えることができる。さらに、センサ２４０を各サブシステム２２０および２３０内に含めることができることを理解されたい。サブシステム２２０および２３０の両方に共通のセンサ２４０が使用される場合は、各サブシステムに対するフレームレートは異なっていてもよいこと、したがって各サブシステムに提供されるデータの品質は異なっていてもよいことを理解されたい。例えば、絶対位置解読には、より大きなデータセットが取り込まれ、必要とされるが、そのデータのサブセットを相対追跡用に使用して、より迅速な処理を可能にすることができる。
【００３４】
センサ２４０は、コンピュータ入力装置２００の動きに対応するデータを取り込む。データは、相対追跡サブシステム２２０および／または絶対追跡サブシステム２３０に送られ、そこでデータ処理されて、コンピュータ入力装置２００の近似的な位置を示す位置データが決定される。次に、その位置データは、制御システム２１０に送られ、次いでホストコンピュータ（図示せず）に送られて、アプリケーションプログラムで使用される。例えば、コンピュータ入力装置２００の動きは、図８に示し、以下で説明するように、ホストコンピュータの表示器上のカーソル位置の動きに対応させることができる。図２Ａには示されていないが、制御システム２１０は、位置データを格納するためのメモリを備えることができ、後ほどそのデータをホストコンピュータに送信することができる。
【００３５】
コンピュータ入力装置２００は、相対追跡法および／または絶対追跡法によってコンピュータ入力装置２００の動きを追跡するように構成された複合追跡装置の一例を示すものである。相対追跡法および絶対追跡法に基づいて追跡する各機能は、コンピュータ入力装置２００の同一の物理ハウジング２０５内に含まれる。当業者なら、制御システム２１０、相対追跡サブシステム２２０、および絶対追跡サブシステム２３０が、ハードウェアコンポーネント、ソフトウェアコンポーネント、ファームウェアコンポーネント、および／またはハードウェア、ソフトウェア、ファームウェアコンポーネントの任意の組合せによって実装できることを理解されたい。
【００３６】
図２Ｂは、内部コンポーネントの概略表示を含む、コンピュータ入力装置２０１の側面図である。コンピュータ入力装置２０１は、ハウジング２０６を含む。コンピュータ入力装置２０１は、電子ペンタイプの装置であってもよい。コンピュータ入力装置２０１は、操作可能ボタンおよび／またはセンサ、例えばゼロトラベルバイナリ接触センサ（ｚｅｒｏ  ｔｒａｖｅｌ  ｂｉｎａｒｙ  ｃｏｎｔａｃｔ  ｓｅｎｓｏｒ）または力感応型抵抗体（ＦＳＲ）を含むことができ、それによって、ユーザが押してエントリをクリックすること、および／またはコンピュータ入力装置２０１を用いた動作を実施することを可能にする。コンピュータ入力装置２０１はまた、制御システム２１０、相対追跡サブシステム２２０、絶対追跡サブシステム２３０、およびセンサ２４０を含むように図示されている。参照要素２１０、２２０、２３０、および２４０は、それらのコンポーネントをコンピュータ入力装置２１０に内蔵できることを示すために破線で示されている。
【００３７】
制御システム２１０は、カスタムシリコンチップ、デジタル部品、および／またはマイクロプロセッサ部品などで構成することができ、データの計算、信号の処理、およびホストコンピュータ（図示せず）とのインタフェースのために使用できる。制御装置２１０は、サブシステム、すなわち相対追跡サブシステム２２０および絶対追跡サブシステム２３０と接続されるように示されている。追跡サブシステム２２０および２３０は、センサ２４０に接続された状態で示されている。図２Ｂに示されるように、各サブシステムは、コンピュータ入力装置２０１の動きを追跡するためのデータを、センサ２４０を使用して取り込む。図２Ｂには示されていないが、追跡サブシステム２２０および２３０は、追跡用に独立のセンサ２４０を備えることができる。さらに、センサ２４０を、サブシステム２２０および２３０の内部に含めることができることを理解されたい。サブシステム２２０および２３０の両方に共通のセンサ２４０が使用される場合は、各サブシステムに対するフレームレートは異なっていてもよく、したがって各サブシステムに提供されるデータの品質は異なっていてもよいことを理解されたい。例えば、絶対位置解読には、より大きなデータセットが取り込まれ、必要とされるが、そのデータのサブセットを相対追跡用に使用して、より迅速な処理を可能にすることができる。
【００３８】
センサ２４０は、コンピュータ入力装置２０１の動きに対応するデータを取り込む。データは、相対追跡サブシステム２２０および／または絶対追跡サブシステム２３０に送られ、そこでデータ処理されて、コンピュータ入力装置２００の近似的な位置を表す位置データが決定される。次に、位置データは、制御システム２１０に送られ、次いでホストコンピュータ（図示せず）に送信されて、アプリケーションプログラムで使用される。例えば、コンピュータ入力装置２０１の動きは、図８に示し、以下で説明するように、ホストコンピュータの表示器のカーソル位置の動きに対応させることができる。図２Ｂには示されていないが、制御システム２１０は、位置データを格納するためのメモリを備えることができ、そのデータを後からホストコンピュータに送信することができる。
【００３９】
コンピュータ入力装置２０１は、相対追跡法および／または絶対追跡法によってコンピュータ入力装置２０１の動きを追跡するように構成された複合追跡装置の一例を示すものである。相対追跡法および絶対追跡法に基づいて追跡する各機能は、コンピュータ入力装置２０１の同一の物理ハウジング２０６内に含まれる。当業者なら、制御システム２１０、相対追跡サブシステム２２０、および絶対追跡サブシステム２３０が、ハードウェアコンポーネント、ソフトウェアコンポーネント、ファームウェアコンポーネント、および／またはハードウェア、ソフトウェア、ファームウェアコンポーネントの任意の組合せによって実装できることを理解されたい。
【００４０】
図３Ａは、２つの追跡サブシステム２２０および２３０によって構成される複合追跡装置３００を示す。各サブシステムは、データを収集するセンサ２４０ａおよび２４０ｂ、ならびにそれらのセンサ２４０ａおよび２４０ｂを制御し、センサ２４０ａおよび２４０ｂからデータを収集し処理するプロセッサ３２４および３３４を含む。センサ２４０ａおよび２４０ｂは、両方の追跡サブシステム２２０および２３０によって共用される同一のセンサ２４０であってもよい。センサ２４０ａおよび２４０ｂは光学および／または磁気センサ、あるいは何か他の種類のセンサであってもよい。複合追跡装置３００は、ホストコンピュータ３９０と通信するように示されている。複合追跡装置３００は、制御装置２１０を介してホストコンピュータ３９０と通信する。制御システム２１０は、後での処理および／またはホストコンピュータ３９０への送信のために、取り込んだデータを格納するメモリ（図示せず）を備えることができる。制御システム２１０は、様々な方法、例えば、シリアルもしくはＵＳＢポートによる有線接続、Ｂｌｕｅｔｏｏｔｈ技術などの無線通信経路、および／または他の任意の種類の通信方法によってホストコンピュータ３９０と通信することができる。
【００４１】
制御システム２１０は、サブシステム２２０と２３０の間で、それぞれ追跡エンジン３２４および３３４を介して、信号およびデータを送受信するように示されている。相対追跡エンジン３２４は相対追跡サブシステム２２０の一部である。相対追跡エンジン３２４は、制御システム２１０から制御信号を受信し、それに応答して、センサ２４０ａに適切な信号を送信する。相対追跡エンジン３２４はまた、センサ２４０ａからのデータも受信する。このデータには、複合追跡装置３００の位置を追跡するために使用される光学情報および／または測定データを含めることができる。センサ２４０ａからデータを受信したとき、相対追跡エンジン３２４は、そのデータを処理して相対位置データを決定することができる。決定されたデータは、制御システム２１０を介してホストコンピュータ３９０に送信される。あるいは、相対追跡エンジン３２４は、センサ２４０ａから受信したデータを制御システム２１０に送ることもできる。相対追跡エンジン３２４は、計算を実施して相対追跡法に従って装置３００の位置を決定すること、および／または制御システム２１０を介してホストコンピュータ３９０にデータを送信することができる。ホストコンピュータ３９０は、必要な計算を実施して、相対追跡法に基づいて複合追跡装置３８０の位置を決定することができる。様々な実施形態に従って、計算は、相対追跡エンジン３２４、制御システム２１０、および／またはホストコンピュータ３９０によって実施することができる。
【００４２】
相対追跡サブシステム２２０と同様に、絶対追跡システム２３０はセンサ２４０ｂおよび絶対追跡エンジン３３４を含むことができる。絶対追跡エンジン３３４は、制御システム２１０から制御信号を受信し、それに応答して、センサ２４０ｂに適切な信号を送信する。絶対追跡エンジン３３４はまた、センサ２４０ｂからのデータも受信する。センサ２４０ｂからデータを受信したとき、絶対追跡エンジン３３４は、データを処理して絶対位置データを決定することができる。決定されたデータは、制御システム２１０を介してホストコンピュータ３９０に送信される。あるいは、絶対追跡エンジン３３４は、センサ２４０ｂから受信したデータを制御システム２１０に送ることもできる。絶対追跡エンジン３３４は、計算を実施して絶対追跡法に従って複合追跡装置３００の位置を決定すること、および／または制御システム２１０を介してホストコンピュータ３９０にデータを送信することができる。ホストコンピュータ３９０は、必要な計算を実施して、絶対追跡法に基づいて複合追跡装置３００の位置を決定することができる。計算は、様々な実施形態に従って、絶対追跡エンジン３３４、制御システム２１０、および／またはホストコンピュータ３９０によって実施することができる。
【００４３】
制御システム２１０は、データを取り込み、それを何らかの方法で通信する。本明細書で説明するように、追跡サブシステム２２０および２３０の各コンポーネントは、何らかの方法で組み合わせること、および／または共用することができる。例えば、各サブシステムのセンサ２４０ａおよび２４０ｂは、共通のセンサ２４０であってもよい。相対追跡サブシステム２２０が相対的な動きのデータを提供するのに対し、絶対サブシステム２３０は絶対位置データを制御システム２１０に提供する。相対動きデータおよび絶対位置データは、ユーザの必要性、２つの追跡サブシステムの有効性に応じて、かつ／または装置３００のより正確な位置を決定するために、個別にまたは共同して使用することができる。
【００４４】
本発明の他の実施形態では、センサ２４０ａを使用して、相対追跡エンジン３２４によって使用されるデータを取り込むことができる。相対追跡サブシステム２２０は、複合追跡装置３００によって使用されるデフォルトの追跡サブシステムにすることができる。相対追跡サブシステム２２０を、所定の時間および／または距離にわたって動作させた後で、絶対追跡サブシステム２３０を起動することができる。例えば、相対追跡サブシステムがデータを取り込み、その２秒後に、センサ２４０ｂが画像を取り込むようにすることができる。絶対追跡エンジン３３４は、データを直ちに処理して絶対位置データを決定し、最終的にそのデータを、制御システム２１０を介してホストコンピュータ３９０に送信することができる。絶対位置データおよび／または相対位置データは、複合追跡装置３００内のメモリ（図示せず）に格納することができる。他の実施形態では、絶対追跡サブシステム２３０をデフォルトの追跡サブシステムにすることもできる。
【００４５】
図３Ｂは、本発明の少なくとも一態様による、装置３６０の位置を追跡する複合追跡システム３５０の例示的一実施形態を示す機能ブロック図である。複合追跡システム３５０は、装置３６０を含む。装置３６０は、相対追跡法に基づいてその位置を追跡するコンピュータ入力装置であってもよい。装置３６０は、相対追跡サブシステム２２０を含む。相対追跡サブシステム２２０は、センサ２４０および相対追跡エンジン３２４を含む。先に図３Ａに示したように、センサ２４０は、データを取り込み、そのデータを相対追跡エンジン３２４に送る。相対追跡エンジン３２４はそのデータを処理し、処理した位置データを制御システム２１０に送る。制御システムは、その位置データをホストコンピュータ３９０に送る。同様に、制御システム２１０は、制御信号によってセンサ２４０および相対追跡エンジン３２４の動作を制御する。
【００４６】
図３Ｂに示したように、ホスト３９０は絶対追跡エンジン３７０を含む。絶対追跡エンジン３７０は、絶対追跡法に基づいて装置３６０の位置を計算することができる。センサ２４０から受信したデータを絶対追跡エンジン３７０が使用して、絶対追跡法に従って装置３６０の動きを決定する。図示のように、装置３６０およびホストコンピュータ３９０は、複合追跡システム３５０を構成する。図には示されていないが、当業者ならば、絶対および／または相対追跡法に基づいて位置データを決定するためのデータ計算が、コンピュータマウス、電子ペン、ＰＤＡなどの装置によって、またはホストコンピュータによって、またはその両者の組合せによって完全に実施し得ることを理解されたい。
【００４７】
本発明の他の実施形態によれば、センサ２４０を使用して相対追跡エンジン３２４によって使用されるデータを取り込むことができる。相対追跡サブシステム２２０を、装置３６０によって使用されるデフォルトの追跡サブシステムにすることができる。相対追跡サブシステム２２０は、所定の時間および／または距離の間、相対追跡サブシステム２２０を動作させてから、絶対追跡処理のために画像のスナップショットを取り込むことができる。例えば、相対追跡サブシステム２２０がデータを取り込み、その２秒後に、センサ２４０が画像を取り込むようにすることもできる。取り込まれたデータは、装置３６０内のメモリ（図示せず）に格納することができる。そのデータは、後ほど、制御システム２１０を介してホストコンピュータ３９０に送信することができる。ホストコンピュータでは、受信したキャプチャデータおよび絶対追跡エンジン３７０に基づいて絶対位置データを決定することができる。他の実施形態では、絶対追跡サブシステム２３０をデフォルトの追跡サブシステムにすることもできる。
【００４８】
図３Ｃは、２つの追跡サブシステム２２０および２３０によって構成される複合追跡装置３８０を示す。複合追跡装置３８０もまた、データを収集するセンサ２４０を含む。サブシステム２２０および２３０はそれぞれ、プロセッサ３２４および３３４を含む。各プロセッサは、センサ２４０を制御し、センサ２４０からのデータを収集し処理する。センサ２４０は、光学および／または磁気センサ２４０、あるいは何か他の種類のセンサであってもよい。複合追跡装置３８０は、制御システム２１０を介してホストコンピュータ３９０と通信する。制御システム２１０は、様々な方法、例えばハードワイヤード通信経路、無線通信経路、および／または他の任意の種類の通信経路によってホストコンピュータ３９０と通信することができる。
【００４９】
制御システム２１０は、サブシステム２２０および２３０との間で、それぞれ追跡エンジン３２４および３３４を介して信号およびデータを送受信するように示されている。相対追跡エンジン３２４は相対追跡サブシステム２２０の一部である。相対追跡エンジン３２４は、制御システム２１０から制御信号を受信し、それに応答して、センサ２４０に適切な信号を送信する。相対追跡エンジン３２４はまた、センサ２４０からのデータも受信する。データには、複合追跡装置３８０の位置を追跡するために使用される、光学情報および／または測定データを含めることができる。センサ２４０からデータを受信したとき、相対追跡エンジン３２４は、そのデータを処理して相対位置データを決定することができる。決定されたデータは、制御システム２１０を介してホストコンピュータ３９０に送信される。あるいは、相対追跡エンジン３２４は、センサ２４０から受信したデータを制御システム２１０に送ることもできる。相対追跡エンジン３２４は、計算を実施して相対追跡法に従って装置３８０の位置を決定すること、および／または制御システム２１０を介してホストコンピュータ３９０にデータを送信することができる。ホストコンピュータ３９０は、必要な計算を実施して、相対追跡法に基づいて複合追跡装置３８０の位置を決定することができる。計算は、様々な実施形態に従って、相対追跡エンジン３２４、制御システム２１０、および／またはホストコンピュータ３９０によって実施することができる。
【００５０】
相対追跡サブシステム２２０と同様に、絶対追跡システム２３０は絶対追跡エンジン３３４を含むことができる。絶対追跡エンジン３３４は、制御システム２１０から制御信号を受信し、それに応答して、センサ２４０に適切な信号を送信する。絶対追跡エンジン３３４もまた、センサ２４０からのデータを受信する。センサ２４０からデータを受信したとき、絶対追跡エンジン３３４は、データを処理して絶対位置データを決定することができる。決定されたデータは、制御システム２１０を介してホストコンピュータ３９０に送信される。あるいは、絶対追跡エンジン３３４は、センサ２４０から受信したデータを制御システム２１０に送ることもできる。絶対追跡エンジン３３４は、計算を実施して絶対追跡法に従って複合追跡装置３８０の位置を決定すること、および／または制御システム２１０を介してホストコンピュータ３９０にデータを送信することができる。ホストコンピュータ３９０は、必要な計算を実施して、絶対追跡法に基づいて複合追跡装置３８０の位置を決定することができる。計算は、様々な実施形態に従って、絶対追跡エンジン３３４、制御システム２１０、および／またはホストコンピュータ３９０によって実施することができる。
【００５１】
制御システム２１０は、データを取り込み、それを何らかの方法で通信する。相対追跡サブシステム２２０が相対的な動きのデータを提供するのに対し、絶対サブシステム２３０は絶対位置データを制御システム２１０に提供する。相対的な動きのデータおよび絶対的な位置データは、ユーザの必要性、２つの追跡サブシステムの有効性に応じて、かつ／または装置３８０のより正確な位置を決定するために、個別にまたは共同して使用することができる。
【００５２】
図４Ａおよび４Ｂは、本発明の少なくとも一態様による、接触ポイントの追跡位置の例示的一実施形態を示す概略図である。図４Ａは、相対追跡サブシステムと併せて絶対的追跡サブシステムを使用して、装置の動きの正確な決定を保証するシステムの一例を示すものである。図４Ａは、装置の絶対位置（ウェイポイント（ｗａｙｐｏｉｎｔ））を決定するために、絶対追跡サブシステムによって（マシンの時間尺度で）比較的少ない頻度で計算された位置を示す。次に、相対追跡サブシステムを使用して、相対経路として示された中間位置（ｉｎｔｅｒｍｅｄｉａｔｅ  ｐｏｓｉｔｉｏｎ）が決定される。絶対追跡サブシステムが、割り振られた時間枠の間に、例えばオクルージョン（ｏｃｃｌｕｓｉｏｎ）のために装置の位置を決定できなかった場合は、装置の位置は相対追跡サブシステムに基づいて更新を続けることができる。図４Ｂは、まさにそのような状況を示している。図示のように、例えば、下にあるコード化されたパターンが遮られたことにより、絶対追跡サブシステムに基づいてウェイポイント２を正確に決定できなかったためにウェイポイント２が欠落している。例えば、図９に示し後述するように、本文が下にあるコード化されたパターンを遮り、その結果、システムが装置の絶対位置を正確に決定できない場合がある。図４Ｂでウェイポイント２が欠落しているので、ウェイポイント３まで相対追跡法で装置の位置の追跡を継続する。
【００５３】
デッドレコニング（ｄｅａｄ  ｒｅｃｋｏｎｉｎｇ）による航法は、既知の場所から移動した距離、方向、および時間量を計算することによって、ある位置を推測することと定義される。ウェイポイントは、絶対サブシステムによって決定された絶対位置であり、デッドレコニング航法はそれらのウェイポイント間の経路を決定する。デッドレコニングによって計算された位置は、距離、方向、および時間の計算における複合誤差に起因する誤差の影響を受ける。しかし、本発明の少なくとも一態様によれば、絶対追跡サブシステムは絶対位置参照を提供し、その結果、制御システムは、以前に決定した任意の中間位置における誤差を訂正することができる。装置が移動した実際の経路は、図５に示したように再生成される。したがって、相対追跡サブシステムは制御システムに追跡データを提供し、絶対追跡サブシステムは相対追跡データと同期するように定期的にウェイポイントのデータを提供し、その結果、誤差訂正が可能になる。
【００５４】
各サブシステムは、処理能力、サイズ、価格、および消費電力において異なるコストを有する。所与の複合追跡装置またはシステムのアーキテクチャおよび／または目的に応じて、これらのコストのバランスは異なるものになる。したがって、それらに従って、この２つのサブシステムの間のバランスを変更することが有用な場合もある。ユーザが、大部分のかつ／またはすべての目的で、特定の種類の追跡を実施したいと望む場合もある。あるいは、デフォルトの追跡システムを使用し、かつ／またはある種の効率、すなわち経済性、電力消費、および／または計算時間などに基づく判断によって特定の追跡システムを実装することもできる。
【００５５】
装置の検出および／または位置決めのために、装置が置かれた物体の表面は、表面の各領域の位置を示す画像データを含むことができる。例示的一実施形態では、画像が取得されるかまたはスキャンされる表面には、ホストコンピュータまたは他の外部コンピュータ装置の表示器を含めることができる。この表示器は、デスクトップコンピュータ、ラップトップコンピュータ、Ｔａｂｌｅｔ  ＰＣ（商標）、携帯情報端末（ＰＤＡ）、電話、デジタルカメラ、または情報を表示できる任意の装置のモニタに相当するものであってもよい。したがって、Ｔａｂｌｅｔ  ＰＣの画面上に生成された書込み用紙または他の画像には、全体の文書中の特定の部分の位置、または画像の任意の他の部分の位置を表すコードに対応するデータを含めることができる。この情報は、英数字文字、コードパターン、または位置を指示するために使用できる任意の認識可能な画像データパターンを含む画像から構成することができる。物体の表面上の各領域の位置を指示する際に使用するために選択される１つまたは複数の画像は、センサのピクセル解像度、および／またはスキャンされる表面に含まれる画像データのピクセル解像度など、スキャン装置の感度に依存することがある。次に、表面から抽出された位置情報を使用して、その表面上の装置の動きを絶対追跡法に基づいて追跡することができる。位置情報を使用して、電子インクの情報、あるいは装置の動きに対応する他の情報を正確に生成することもできる。位置情報を使用して、表面上で入力が影響を受ける位置を検出すること、ならびに表面全体にわたって装置の動きの指示を提供することができる。結果として得られた位置情報を使用して、例えば、ワードプロセッサソフトウェアと対話しながら文書を変更することができる。
【００５６】
代替実施形態では、本装置と組み合わせて使用される対象物を、例えば、背景に位置情報が含まれた紙で構成することができる。位置情報は、本装置に付随するセンサによって検出され、紙上の特定の位置の絶対位置を表すために使用される、コード、光学表現、その他の形式など任意の形で組み込むことができる。
【００５７】
図６は、文書の位置をコード化するための技術の一例を示す。この例では、画像の背景は、全体として見ると迷路状のパターン６００を形成する細線を含んでいる。迷路模様６００内の各線のグループは数本の細線から構成され、例えば、一意の方向や配置により、文書の他の部分６０４と比較して、迷路パターンのその部分の位置６０２を指示することができる。取り込まれた画像に含まれる迷路パターン６００の解読は、多くの解読方式に従って実施することができる。迷路パターン６００は、ほとんど見えないこともある。迷路パターン６００は、書込み、描画、および／または読取りを妨げないように構成される。例えば、ユーザは、白い印刷用紙の上に迷路パターン６００を配置することもできる。ユーザは、オフィスおよび／または会議室の壁などの表面に紙を貼り付け、紙の上に注釈をつけて、装置が紙全体にわたるそれ自体の絶対的な動きを追跡できるようにすることもできる。迷路パターン６００は、レーザプリンタまたは任意の他の印刷プロセスを使用して、透明フィルム上に印刷することができる。あるいは、迷路パターン６００を紙の上に印刷することもできる。当業者ならば、迷路パターン６００を配置する媒体が、透明フィルムおよび／または紙など上記の例に限定されるものではないこと、またその媒体に、文書用および／または描画用の任意の種類の媒体、これに限定されるものではないが、例えば工作用紙、壁、木の表面、黒板の表面、コンピュータ画面、床などを含めることができることを理解されたい。当業者ならば、コード化されたパターンを表面に配置するために使用されるインクが、ユーザにとって可視であっても、不可視であってもよいことを理解されたい。ユーザにとって可視の場合は、下にあるパターンを見るために、赤外または紫外の光源が必要になることもある。
【００５８】
一実施形態では、各線の特定の構成およびグループを解読して位置情報を生成することができる。他の実施形態では、取り込まれたデータの位置の指示は、サンプルパターンに対応する画像からコードを抽出し、そのコードを使用して、その領域の位置を識別するデータを含むルックアップテーブルのアドレスを指定することによって得ることができる。ある種類のパターン６００は、透かしパターンと呼ばれている。透かしパターンは、コンピュータ画面上に表示された通常の画像の上に重ね合わされた、かすかに見える２次元（２Ｄ）ビットパターンであってもよい。各ビットパターンは、画面上の任意の場所に置かれた、そのビットパターンの小さなサブセットを解読してそのサブセット領域の位置を生成できるようにコード化される。これにより、イメージング装置、例えばハンドヘルドスタイラス、ペンなどの装置が、パターン上のそれ自体の絶対位置を決定することが可能になる。透かしパターンにおいては、解読可能な位置が、所与のピッチまたは間隔で、表面全体にわたって規則正しい間隔で配置される。この間隔は、各位置の配置、したがって装置の位置を解読できる精度を規定する。これらの位置は、時間と共に変化することがなく、また他の位置との相対的な関係によって変化することもないという意味で絶対的である。他の実施形態では、透かしは、例えばＰＣ、ノートブックコンピュータ、ＴａｂｌｅｔＰＣなどの画面上で変更することができる。このような実施形態では、透かしおよび文書の内容は、紙上に印刷されるというより、むしろスクリーン画素を使用して表示することができ、その結果アプリケーションは、ユーザによる対話に基づいて修正された透かしを表示することが可能になる。各図に示された例には、様々な２次元構成のコード化されたパターン６００が示されているが、当業者ならば、コード化されたパターン６００が、１次元構成で解読可能な位置を含むドットタイプのパターンであってもよいことを理解されたい。各図に示した例は、特定の種類のコード化されたパターン６００に限定されるものではない。
【００５９】
また、透かしパターンは、紙文書やコンピュータモニタなどの表面に、そのパターンが表面上の各「位置」で一意に解読可能になるように組み込むことができる。透かしパターンの１つの用途には、装置が、ある表面内のその装置の位置を追跡する機能があるが、透かしによって追加のデータをコード化することもできる。位置データおよび／または追加のデータは、パターンの形でコード化することができる。追加のデータは、位置データを解読する方法と類似の方法で解読することができる。この追加のデータは、低位レベルでコード化することもできるが、コード化された位置データと比べると、表面上のより大きなスペースを占めることになる。単一または複数のアプリケーションを使用して、位置データだけ、追加のデータだけ、または位置データと追加のデータの両方を復元することができる。追加の情報の例として、画像、ファイル識別、オーディオファイルおよび／またはクリップ、ビデオファイルおよび／またはクリップ、セキュリティ機能、暗号機能、バイオメトリック情報、および／または他の情報へのリンクなどがある。
【００６０】
例えば、パターン６００などの透かしパターンの設計では、多くの検討事項を考慮する場合もある。このような検討事項の１つが、表面上の透かしパターンの濃度である。透かしパターンは、装置の適切な機能のために、十分な量と質の情報をコード化しながらも、装置のユーザが許容できるほど目立たないように十分に薄い必要がある。さらに、コード化される情報は、誤り検出／訂正のレベルが許容できるレベルになるように、冗長性と完全性についての最低限の要件を満たすように設計される場合がある。パターン６００がユーザの妨げになるレベルを最小にしようと試みる場合は、可能な限り少ない情報をコード化するのが望ましいが、一方装置の機能を最大にしようと試みる場合は、情報の量および冗長性を最大にするのが望ましいはずである。どのような要求も、可能な位置情報の濃度のバランスによって達成できる可能性があり、それによって、位置精度を増しながら、パターンに起因するユーザへの妨げを最小にできる可能性がある。
【００６１】
透かしベースの絶対追跡システムは、透かしパターンが欠落しているかまたは遮られた状況では、位置を追跡する機能が失われることになる。追跡装置が有用になり得る表面の多くは、透かし以外のパターン、印刷、またはデータを含んでいる。このような場合の一例が図９に示されており、それについて以下で説明する。このような障害物には、テキスト、画像、表面の模様、影などが考えられる。これらの障害物は、表面に組み込まれた透かしパターンを遮る可能性があり、それにより透かしパターンを取り込み、処理して、一意の固定位置または他のデータを解読するこの装置の機能を低下させる可能性がある。このような状況では、装置は、それ自体の現在位置を失うことになり、機能の低下を引き起こすことがある。
【００６２】
相対追跡システムは、多くの表面上での動きを追跡するために有用である。位置データが存在しない場合でも、センサ２４０によって取り込まれた画像を解析して画像取込み時の装置の位置を決定することができる。連続する画像を使用して、異なる時間における装置の相対位置の変化を計算することができる。これらの画像の相関関係により、表面上での装置の正確な軌跡を生成することができる。この軌跡情報を使用して、例えば、手書きのストロークを正確に表す電子インクを生成することができる。
【００６３】
本発明の一実施形態では、電子ペン２０１など、電子ペンタイプのコンピュータ入力装置は、相対追跡サブシステムで使用するためのデータを取り込む。相対追跡サブシステムは、絶対追跡サブシステムが起動される前に、所定の時間および／または距離にわたり相対追跡処理用のデータを取り込む。所定の距離および／または時間によって、絶対追跡サブシステムの開始を起動することもできる。絶対追跡サブシステムは、取り込んだデータを直ちに処理して絶対位置データを決定し、最終的にそのデータをホストコンピュータに送信することができる。あるいは、絶対位置データおよび／または相対位置データを電子ペンのメモリに格納して、後からホストコンピュータに送信することもできる。他の実施形態では、電子ペンタイプのコンピュータ入力装置は絶対データを取り込み、続いてそのデータは、ホストコンピュータで、アプリケーションへの入力として追跡用に処理される。
【００６４】
図７は、本発明の少なくとも一態様による、コード化された表面６００上の接触ポイント７２０の位置を追跡するコンピュータ入力装置２００の例示的一実施形態を示す概略図である。コンピュータ入力装置２００は、例示のために、コード化された表面６００の上方に示されている。コンピュータ入力装置２００は、例えばコード化された表面６００がマウスパッドに組み込まれている場合には、コード化された表面６００の上に載っていることもある。図示のように、センサ２４０は、コンピュータ入力装置２００から送出され、符号化された表面６００からコンピュータ入力装置２００に反射される光７１０に対応するデータを取り込む、光学センサであってもよい。光７１０は、コード化された表面６００上の接触ポイント７２０の位置に関する画像データを含む。光学システムは、接触ポイント７２０の位置を検出するための一方法に過ぎず、当業者ならば、レーダーおよび磁気ベースのシステムなど、他の種類のナビゲーションシステムが使用できることを理解されたい。
【００６５】
図８は、本発明の少なくとも一態様による、コンピュータアプリケーションと共に使用されるコンピュータ装置追跡システムの例示的一実施形態を示す概略図である。図８は、コンピュータ入力装置８００を使用して、相対追跡法および絶対追跡法に基づいてコンピュータ入力装置８００の動きをどのように追跡できるかを示す。図８では、コンピュータ入力装置８００は、電子ペン８００として示されている。ユーザは、電子ペン８００をノートブックタイプコンピュータ８１０の画面８０５上で使用することができる。画面８０５は、電子ペン８００の位置を追跡することが可能なあらかじめ定義された領域である。ユーザが電子ペン８００を画面８０５の表面上で移動させたとき、相対追跡システムに基づいて電子ペンの位置を追跡することができる。接触ポイント８２２および８２４は、他の位置、接触ポイントの軌跡、および／または他の相対的な特性に対して相対的に決定することができる。
【００６６】
本発明の少なくとも一態様によれば、ユーザは、コード化された紙８３０、例えば図６に示された組み込みパターン６００を含んだ紙などの上でも同一の電子ペン８００を使用することができる。ユーザが紙８３０の表面上で電子ペン８００を移動させたとき、紙８３０の表面に対する、電子ペン８００の接触ポイントの動き８４０を追跡することができる。動き８４０は、コード化された表面の情報を使用する絶対追跡法に基づいて追跡される。例えば、ユーザは紙８３０上に対象物を描くことができ、その対象物をホストコンピュータ上で動作するアプリケーションプログラムに入力することができる。ホストコンピュータに接続されたモニタ８５０は、対応する対象物８４２を表示する。電子ペン８００は、ホストコンピュータと通信して、ホストコンピュータ上で動作するアプリケーションが使用する絶対位置データを送信する。当業者ならば、アプリケーションプログラムがホストコンピュータの外部にあってもよいことを理解されたい。したがって、少なくとも一実施形態によれば、複合追跡装置８００を、絶対追跡目的および／または相対追跡目的でホストコンピュータなしで使用することができる。
【００６７】
図９は、本発明の少なくとも一態様による、遮られたコード化された表面６００の例示的一実施形態を示す概略図である。図９は、本発明の複合追跡システムの一実施形態を説明するためのものである。図示のように、コード化された表面６００のある部分９２０に文書９１０が上書きされている。例えば、コード化された表面６００上に、ユーザが黒インクで文字を書き込み、それが、ある領域で、下にあるパターンを遮る９３０場合がある。このような状況では、絶対追跡システム単体では、遮られた部分９２０での装置の動きを正確に追跡することは困難になる。本発明の少なくとも一実施形態によれば、システムは、相対追跡サブシステムを使用して、遮られた部分９２０での装置の位置を決定することができる。したがって、装置の位置および動きのより正確な表現が得られることになる。
【００６８】
図１０は、本発明の少なくとも一態様による、複合追跡装置の動きを追跡するための例示的一方法を示す流れ図である。処理が開始され、ステップ１００２で、ユーザが特定の追跡方法の選択を指定したかどうかが判断される。例えば、ユーザは、複合追跡装置に相対追跡法によって追跡させたいと決定することができる。ユーザ定義の選択が存在する場合には、処理はステップ１００４に移り、そのステップで、複合追跡装置によってユーザ定義の追跡方法が実行される。ユーザ定義の選択が存在しない場合には、処理はステップ１０１２に移動する。ステップ１０１２で、デフォルトの追跡法が実行されるかどうかが判断される。例えば、ユーザおよび／または製造業者が事前にプログラムして、特定のデフォルト追跡法を複合追跡装置に実装することができる。デフォルトの追跡法が実行される場合は、処理はステップ１０１４に移り、そのステップでデフォルトの追跡法が実行される。デフォルトが存在しない場合は、処理はステップ１０２２に移動する。
【００６９】
ステップ１０２２で、最も有効な追跡方法が決定される。この最も有効な追跡方法の決定は、任意の数のパラメータに基づいて実施できる。例えば、絶対追跡法はより正確であるが、処理により多くの電力を必要とし、かつ／またはデータの処理により長い時間がかかる可能性がある。一方、相対追跡法は、実装がより安価で少ない電力で済むが、あまり正確な結果が提供されない可能性がある。最も有効な方法の決定は、事前の設定に基づいてシステムによって、かつ／またはどのような効率、例えば処理時間、節電、精度などを設定するかのユーザ入力によって行うことができる。ステップ１０２４では、ステップ１０２２で決定された最も有効な方法が実行される。
【００７０】
通った経路のいずれについても、処理はステップ１０３０に移り、そのステップで、センサがデータを取り込めるかどうかが判断される。例えば、ステップ１０３０は、絶対追跡法を使用して、下にあるコード化されたパターンをセンサが取り込むことができるかどうかを判断することを含む。ステップ１０３０はさらに、画像データを取り込むのに十分な長さでセンサが組み込まれているかを判断することを含むこともできる。センサがデータを取り込めない場合は、処理はステップ１０３２に移り、そのステップで、タイムアウト時間に達したかどうかについての別の判断がなされる。例えば、装置は、他の動作を実施する前に、所定の時間を取ってデータの取込みを試みることができる。タイムアウト時間に達した場合は、処理は終了する。タイムアウト時間に達していない場合は、処理はステップ１０３０に戻る。ステップ１０３０で、センサがデータを取り込むことができる場合は、処理はステップ１０３４に移り、このステップでデータが取り込まれる。
【００７１】
ステップ１０３６で、実行された追跡方法が、取り込んだ画像データを使用できるかどうかが判断される。実行された追跡方法が、取り込んだ画像データを使用できる場合は、ステップ１０３８で装置の位置が決定される。決定ステップ１０３８は、複合追跡装置、ホストコンピュータ、および／または何か他の装置によって、ステップ１００４、１０１４、または１０２４で実行された方法によって実施することができる。この例では、複合追跡装置がステップ１０３８で決定する。次に、プロセスステップ１０４６に進む。ステップ１０３６で、実行された追跡方法が取り込まれた画像データを使用できない場合は、処理はステップ１０４０に進む。
【００７２】
ステップ１０４０で、代替追跡方法が実行される。例えば、ユーザが、ステップ１００２で絶対追跡法を実行することを選択した場合は、ステップ１０４０で、システムは相対追跡法を実行する。このような状況は、下にあるコード化されたパターンが遮られ、絶対追跡システムによって正確に識別できないときに生じる。ステップ１０４２で、複合追跡装置の位置が決定される。決定は、ステップ１０４０で実行された代替追跡方法に基づいて行われる。処理はステップ１０４４に進み、このステップで、システムはステップ１０３０で実行された以前の追跡方法に戻る。処理はステップ１０４６に続く。
【００７３】
決定された位置データは、ステップ１０４６でホストコンピュータに送信され、次いで、ステップ１０４８で、ホストコンピュータ上で動作する、またはホストコンピュータの外部で動作するアプリケーションで使用される。処理はステップ１０５０に移り、そのステップで、さらに取り込むデータがあるかどうか、例えば装置が移動したかどうかが判断される。さらに取り込むデータがある場合は、処理はステップ１０３０に戻る。取り込むデータがない場合は、処理は終了する。当業者ならば、位置データを格納しておき、後からホストコンピュータに送信できること、および図１０に示された例示の処理が一例に過ぎないことを理解されたい。
【００７４】
図１１Ａは、本発明の少なくとも一態様による、装置の動きを追跡する他の例示的方法を示す流れ図である。処理が開始され、ステップ１１０２で、装置の動きが検出される。動きが検出されたとき、相対追跡システムはステップ１１１０でデータを取り込み、また絶対追跡システムはステップ１１２０でデータを取り込む。次に、ステップ１１３０で、相対位置データおよび絶対位置データを使用して装置の位置を決定する。このような実装を使用して、正確な位置情報を生成することができる。次に、ステップ１１４０で、位置データはホストコンピュータに送信される。ステップ１１５０で、ホストコンピュータは、ホストコンピュータ上で、またはホストコンピュータの外部で動作するアプリケーションプログラムにそのデータを使用する。処理はステップ１１６０に移り、そのステップで、さらにデータを取り込む必要があるかどうかが判断される。さらにデータを取り込む必要がある場合、処理はステップ１１０２に戻る。取り込む必要がない場合は、処理は終了する。当業者ならば、位置データをホストコンピュータに送信する前に、位置データを装置上のメモリに格納することができること、および図１１Ａに示された例が一例に過ぎないことを理解されたい。
【００７５】
図１１Ｂは、本発明の少なくとも一態様による、装置の動きを追跡する代替の一例示的方法を示す流れ図である。この例示的処理は、電子ペン型コンピュータ入力装置に実装することができる。処理が開始され、ステップ１１０２で、装置の動きが検出される。動きが検出されたとき、相対追跡システムはステップ１１１０でデータを取り込み、また絶対追跡システムはステップ１１２０でデータを取り込む。次に、ステップ１１３０で、相対位置データおよび絶対位置データを使用して、装置の位置を決定する。このような実装を使用して、正確な位置情報を生成することができる。処理はステップ１１６０に移り、そのステップで、さらにデータを取り込む必要があるかどうかが判断される。さらにデータを取り込む必要がある場合には、処理はステップ１１０２に戻る。取り込む必要がない場合は、処理はステップ１１４０進む。次に、ステップ１１４０で、位置データはホストコンピュータに送信される。ステップ１１５０で、ホストコンピュータは、ホストコンピュータ上で、またはホストコンピュータの外部で動作するアプリケーションプログラムのためにそのデータを使用する。この例において、ステップ１１３０で決定された位置データは、ステップ１１４０でそのデータがホストコンピュータに送信されるまで、電子ペン型コンピュータ入力装置のメモリに格納しておくことができる。当業者ならば、位置データは、ホストコンピュータに送信する前に、装置内のメモリに格納しておくことができることを理解されたい。
【００７６】
図１２は、本発明の少なくとも一態様による、装置の動きを追跡する他の例示的方法を示す流れ図である。処理が開始され、ステップ１２０２で、この装置と共に使用される下にある表面がコード化された表面かどうかが判断される。表面がコード化されている場合は、ステップ１２１０で、システムは絶対追跡法が実行される。コード化されていない場合は、ステップ１２２０で、システムは相対追跡法を実行する。どちらの状況でも、処理はステップ１２３２に移動する。ステップ１２３２で、センサはデータを取り込む。
【００７７】
ステップ１２３４で、より精度が必要かどうかが判断される。このような状況は、ユーザが、装置の動きのより正確な表現を望むときに生ずることがある。より精度が必要な場合は、ステップ１２３２で実行された方法に対する代替追跡方法が、ステップ１２３６で選択される。より精度が必要でない場合は、処理は直接ステップ１２４０に移る。ステップ１２４０で装置の位置が決定され、決定された位置データがステップ１２４２でホストコンピュータに送信される。他の実施形態では、位置データをホストコンピュータに送信する前に、そのデータを装置のメモリに格納することができる。ステップ１２４４で、位置データは、ホストコンピュータ上で、またはホストコンピュータの外部で動作するアプリケーションプログラムで使用される。処理はステップ１２５０に続き、そのステップで、さらに取り込むべきデータが存在するかどうかが判断される。さらにデータを取り込む場合には、処理はステップ１２１０または１２２０に戻る。取り込むべきデータが存在しない場合は、処理は終了する。
【００７８】
図１３は、本発明の少なくとも一態様による、装置の動きを追跡する他の例示的方法を示す流れ図である。処理が開始され、ステップ１３０２で、画像データを取り込む時間に達したかどうかが判断される。この時間は、所定の時間および／または装置の移動距離であってもよい。時間に達していない場合は、処理はステップ１３０２に戻る。時間に達している場合は、処理はステップ１３０４に移る。ステップ１３０４で、画像データが取り込まれる。
【００７９】
ステップ１３０６で、絶対追跡法が起動されているかどうかが判断される。このような状況は、装置の動きが所定の距離に達したこと、および／または所定の時間が経過したことによって生ずる。ステップ１３０６で、絶対追跡法が起動されている場合は、処理はステップ１３０８に移り、そのステップで絶対追跡法が実行される。ステップ１３０６で、絶対追跡法が起動されていない場合は、処理はステップ１３１０に進む。
【００８０】
ステップ１３１０で、取り込まれた画像データ上で、相対追跡法が実行される。ステップ１３１２で、装置の位置の相対変化により絶対追跡法の起動が設定されたかどうかが判断される。位置の相対変化により起動が設定されている場合は、処理はステップ１３１６に進み、そのステップで絶対追跡法の起動が設定される。次に、処理はステップ１３０８に戻る。装置の位置の相対変化により起動が設定されていない場合は、処理はステップ１３１４に進む。ステップ１３１４で、この前の絶対追跡位置が決定されてから所定の時間遅延および／または距離が経過したかどうかが判断される。時間遅延が経過している場合、処理はステップ１３１６に進み、そのステップで絶対追跡法の起動が設定される。経過していない場合は、処理は終了する。
【００８１】
一実施形態では、絶対位置を有効に解読するために不十分な見え方の透かしパターン部分が存在するときだけ、相対追跡サブシステムが実行される。次に、相対追跡サブシステムは、絶対サブシステムからのデータが不適切かつ／または欠落していると制御システムが判断したときに実行される。他の実施形態では、相対追跡サブシステムは、取り込んだデータの処理に必要な時間が、絶対サブシステムより短くて済む場合がある。このような状況下では、大部分のデータ収集に相対追跡サブシステムを使用することができ、絶対追跡サブシステムは、エラー訂正用の周期的なウェイポイントを提供する。他の実施形態では、絶対追跡サブシステムと基になる透かしパターンによって粗い経路情報を提供し、相対追跡サブシステムによって追加の経路情報を補間してより正確な位置を提供する。
【００８２】
各サブシステムからのデータは、他方での処理を容易にするのに役立つ情報を提供する。例えば、多自由度のシステムでは、絶対追跡サブシステムによって計算された方向データを使用して、相対追跡サブシステムでの処理負荷を軽減することができる。同様に、相対追跡サブシステムからの予想位置データを用いると、絶対位置の解読におけるより良い初期条件推定値、およびより限定された処理要件を考慮することができる。
【００８３】
本明細書で説明したように、本発明の様々な態様を実施するための例示のシステムおよび方法を示したが、当業者ならば、本発明がこれらの実施形態に限定されるものではないことを理解されよう。当業者ならば、特に前述の教示に照らして様々な修正形態が実施できるはずである。例えば、前述の実施形態の各要素は、単独で、または他の実施形態の各要素と組み合わせて、もしくは部分的に組み合わせて使用することができる。本発明の真の趣旨および範囲を逸脱することなく、様々な修正形態を実施し得ることも認識し理解されたい。したがって、記載内容は、本発明を例示するものであり限定するものではないと見なされたい。
【図面の簡単な説明】
【００８４】
【図１Ａ】本発明のいくつかの態様を実装することができる汎用デジタルコンピュータ環境を示す概略図である。
【図１Ｂ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｃ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｄ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｅ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｆ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｇ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｈ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｉ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｊ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｋ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｌ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｍ】本発明の１つまたは複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図２Ａ】本発明の少なくとも一態様による、相対追跡システムおよび絶対追跡システムの両方を備えたコンピュータ入力装置の概略側面図である。
【図２Ｂ】本発明の少なくとも一態様による、相対追跡システムおよび絶対追跡システムの両方を備えたコンピュータ入力装置の概略側面図である。
【図３Ａ】本発明の少なくとも一態様による、複合追跡装置の位置を追跡するための複合追跡装置の一例示的実施形態を示す機能ブロック図である。
【図３Ｂ】本発明の少なくとも一態様による、ある装置の位置を追跡するための複合追跡装置の一例示的実施形態を示す機能ブロック図である。
【図３Ｃ】本発明の少なくとも一態様による、複合追跡装置の位置を追跡するための複合追跡装置の一例示的実施形態を示す機能ブロック図である。
【図４Ａ】本発明の少なくとも一態様による、接触ポイントの位置を追跡する例示的一実施形態を示す概略図である。
【図４Ｂ】本発明の少なくとも一態様による、接触ポイントの位置を追跡する例示的一実施形態を示す概略図である。
【図５】本発明の少なくとも一態様による、接触ポイントの位置を追跡する例示的一実施形態を示す他の概略図である。
【図６】文書の位置をコード化するための一例示的技術（迷路パターン）を示す図である。
【図７】本発明の少なくとも一態様による、コード化された表面上の接触ポイントを追跡するコンピュータ入力装置の例示的一実施形態を示す概略図である。
【図８】本発明の少なくとも一態様による、コンピュータアプリケーションと共に使用されるコンピュータ装置追跡システムの例示的一実施形態を示す概略図である。
【図９】本発明の少なくとも一態様による、遮られたコード化された表面の例示的一実施形態を示す概略図である。
【図１０】本発明の少なくとも一態様による、装置の動きを追跡するための一例示的方法を示す流れ図である。
【図１１Ａ】本発明の少なくとも一態様による、装置の動きを追跡するための一例示的方法を示す流れ図である。
【図１１Ｂ】本発明の少なくとも一態様による、装置の動きを追跡するための一例示的方法を示す流れ図である。
【図１２】本発明の少なくとも一態様による、装置の動きを追跡するための他の例示的方法を示す流れ図である。
【図１３】本発明の少なくとも一態様による、装置の動きを追跡するための一例示的方法を示す流れ図である。
【符号の説明】
【００８５】
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  （ＲＯＭ）
１３２  （ＲＡＭ）
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  非リムーバブル不揮発メモリインタフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のオペレーティングシステム
１４７  プログラムデータ
１５０  リムーバブル不揮発メモリインタフェース
１６０  ユーザ入力インタフェース
１６１  マウス
１６２  キーボード
１６３  デジタルカメラ
１７０  ネットワークインタフェース
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  広域ネットワーク（ＷＡＮ）
１８０  リモートコンピュータ
１８１  メモリ
１８５  アプリケーションプログラム
１９０  ビデオインタフェース
１９１  モニタ
１９５  出力ペリフェラルインタフェース
１９６  プリンタ
１９７  スピーカ
２１０  制御システム
２２０  相対追跡サブシステム
２３０  絶対追跡サブシステム
２４０、２４０ａ  センサ
３００  複合追跡装置
３２４  相対追跡エンジン
３３４  絶対追跡エンジン
３６０  装置
３７０  絶対追跡エンジン
３８０  複合追跡装置
３９０  ホスト
【図１Ａ】
2006031709.tif 000003
【図１Ｂ】
2006031709.tif 000004
【図１Ｃ】
2006031709.tif 000005
【図１Ｄ】
2006031709.tif 000006
【図１Ｅ】
2006031709.tif 000007
【図１Ｆ】
2006031709.tif 000008
【図１Ｇ】
2006031709.tif 000009
【図１Ｈ】
2006031709.tif 000010
【図１Ｉ】
2006031709.tif 000011
【図１Ｊ】
2006031709.tif 000012
【図１Ｋ】
2006031709.tif 000013
【図１Ｌ】
2006031709.tif 000014
【図１Ｍ】
2006031709.tif 000015
【図２Ａ】
2006031709.tif 000016
【図２Ｂ】
2006031709.tif 000017
【図３Ａ】
2006031709.tif 000018
【図３Ｂ】
2006031709.tif 000019
【図３Ｃ】
2006031709.tif 000020
【図４Ａ】
2006031709.tif 000021
【図４Ｂ】
2006031709.tif 000022
【図５】
2006031709.tif 000023
【図６】
2006031709.tif 000024
【図７】
2006031709.tif 000025
【図８】
2006031709.tif 000026
【図９】
2006031709.tif 000027
【図１０】
2006031709.tif 000028
【図１１Ａ】
2006031709.tif 000029
【図１１Ｂ】
2006031709.tif 000030
【図１２】
2006031709.tif 000031
【図１３】
2006031709.tif 000032