(57)【要約】【課題】ナビゲーションセンサからの位置情報にノイズが含まれていても、正しい位置情報が得られるようにする。【解決手段】手で記録媒体上を走査されながら、画像データと記録ヘッドの基準点からの位置情報とに応じて、記録ヘッドの複数のノズルからインクを吐出して記録するハンドヘルド記録装置であり、走査中に、タイミング生成回路５２がタイミング信号を生成するごとに、ナビゲーションセンサ２５の２個のセンサの各出力値を読み込んでサンプリングし、その各出力値と２個のセンサの取り付け距離とに基づいて、ノイズ除去演算部４６が各センサの出力値にノイズが含まれているか否かを判断し、ノイズが含まれていると判断した出力値を補正するか又は不採用にしてノイズを除去し、ノイズが除去された所定サンプリング回数の各センサの出力値に基づいて、位置算出回路４３が記録ヘッドの基準点からの移動量を算出して位置情報を決定する。【選択図】    図３
2016137621.tif 000002
【特許請求の範囲】
【請求項１】
複数のノズルを列設した記録ヘッドを備え、人の手で記録媒体上を走査されながら、画像データと前記記録ヘッドの基準点からの位置情報とに応じて、前記複数のノズルからインクを吐出して記録するハンドヘルド記録装置であって、
前記複数のノズルの配列方向に間隔を置いて配置された少なくとも２個のナビゲーションセンサと、
前記走査中に、所定のサンプリング周期でタイミング信号を生成するタイミング生成手段と、
前記タイミング信号が生成されるごとに、前記２個のナビゲーションセンサの各出力値を読み込んでサンプリングし、該各出力値と前記２個のナビゲーションセンサの既知の取り付け距離とに基づいて前記各出力値にノイズが含まれているか否かを判断し、ノイズが含まれていると判断した場合は、該出力値を補正するか又は不採用にしてノイズを除去するノイズ除去手段と、
該ノイズ除去手段によってノイズが除去された所定サンプリング回数の前記各出力値に基づいて、前記記録ヘッドの前記基準点からの移動量を算出して前記位置情報を決定する位置算出手段と、
を備えたことを特徴とするハンドヘルド記録装置。
【請求項２】
前記ノイズ除去手段は、前記２個のナビゲーションセンサから読み込んでサンプリングした各出力値と前記既知の取り付け距離（Ｌ）とに基づいて、前記２個のナビゲーションセンサ間の距離（Ｌｓ）を算出し、その算出した距離と前記取り付け距離との差（｜Ｌ−Ｌｓ｜）がノイズ許容値以内であれば、前記各出力値にノイズが含まれていないと判断し、
前記差（｜Ｌ−Ｌｓ｜）が前記ノイズ許容値を超えた場合は、前記各出力値の少なくともいずれかにノイズが含まれていると判断することを特徴とする請求項１に記載のハンドヘルド記録装置。
【請求項３】
前記ノイズ除去手段は、前記各出力値の少なくともいずれかにノイズが含まれていると判断した場合には、該各出力値をいずれも不採用とすることを特徴とする請求項２に記載のハンドヘルド記録装置。
【請求項４】
前記ノイズ除去手段は、前記各出力値の少なくともいずれかにノイズが含まれていると判断した場合には、該各出力値をいずれも補正することを特徴とする請求項２に記載のハンドヘルド記録装置。
【請求項５】
前記ノイズ除去手段は、前記差（｜Ｌ−Ｌｓ｜）が前記ノイズ許容値を超えた場合は、前記各出力値のうち、所定回数のサンプリングにおいて、前記差が前記ノイズ許容値を超えた対応する出力値の平均値を超えた出力値にノイズが含まれていると判断し、該出力値を補正することを特徴とする請求項２に記載のハンドヘルド記録装置。
【請求項６】
前記ノイズ除去手段は、前記ノイズが含まれていると判断した出力値を、それ以前のサンプリングでノイズが含まれていないと判断した直近の対応する出力値と置き換えて補正することを特徴とする請求項２，４，５のいずれか一項に記載のハンドヘルド記録装置。
【請求項７】
前記ノイズ除去手段は、前記ノイズが含まれていると判断した出力値を、所定回数のサンプリングにおいて、ノイズが含まれていないと判断した対応する出力値の平均値と置き換えて補正することを特徴とする２，４，５のいずれか一項に記載のハンドヘルド記録装置。
【請求項８】
前記ノイズ除去手段は、前記ノイズ許容値と、該ノイズ許容値より大きいノイズ補正閾値とを設定し、前記差（｜Ｌ−Ｌｓ｜）が前記ノイズ許容値を超え、前記ノイズ補正閾値以下であった場合には、前記２個のナビゲーションセンサから読み込んでサンプリングした各出力値を何れも不採用とし、前記ノイズ補正閾値を超えた場合には該各出力値を補正することを特徴とする請求項２に記載のハンドヘルド記録装置。
【請求項９】
前記ノイズ除去手段によって、ノイズが含まれていると判断された前記ナビゲーションセンサの出力値が、所定回数以上連続して発生した場合には、ユーザに異変を通知するか又はユーザに異変を通知すると共に記録動作を停止させる手段を有することを特徴とする請求項１から８のいずれか一項に記載のハンドヘルド記録装置。
【請求項１０】
前記位置算出手段は、所定サンプリング回数に達したときに、それまでの各サンプリング時に前記ノイズ除去手段によってノイズが含まれていないと判断された前記各出力値によって、最小二乗法を用いて位置関数を算出し、該位置関数から補正された補正位置情報を算出し、該補正位置情報によって、前記基準点から前記所定サンプリング回数に達したときまでの前記記録ヘッドの移動量を算出して、前記位置情報を決定することを特徴とする請求項１又は２に記載のハンドヘルド記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ハンドヘルド記録装置に関する。
【背景技術】
【０００２】
記録装置であるプリンタには、インクジェットプリンタ、レーザプリンタ、サーマルプリンタ、ドットインパクトプリンタ等、種々の記録方式のものがあるが、近年は小型のプリンタとして、インクジェットプリンタが広く使用されている。
【０００３】
インクジェットプリンタは、記録媒体である紙等に記録剤であるインクを塗布することによって、文字や図形、写真等の所望の画像を形成する記録装置である。そのインクの塗布は、一般に、インクジェットヘッドをガイドレールに沿って一定方向（主走査方向）に往復移動させながら行ない、記録媒体である紙を副走査方向へ搬送させる。
【０００４】
しかし、ノート型パーソナルコンピュータ（ＰＣ）の小型化やスマートフォン等のスマートデバイスの急激な普及により、プリンタも容易に持ち運びできるように小型化することが大きな要望となっている。
このような要望に応えて、例えば特許文献１には、用紙搬送システムを省略し、人の手で紙面等の記録媒体（印刷媒体）上を走査しながらインクを塗布して、画像を記録するハンドヘルドプリンタが提案されている。
【０００５】
また、特許文献１には、ナビゲーションセンサの情報によって位置を決定し、その位置に基いて媒体上に画像を印刷し、その印刷部を含む媒体表面を撮像して、その表面画像を印刷画像と比較して、位置の情報を補正することも開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、このようなハンドヘルド記録装置（プリンタ）では、ナビゲーションセンサからの位置情報に、電気的に無作為かつランダムなノイズが混入されてしまうことがある。その場合、実際の位置とナビゲーションセンサからの位置情報にズレが発生してしまい、正しい位置情報を得ることができないという問題があった。
従来の誤差補正方法としては、取得した複数の位置情報から近似直線や最小二乗法を用いた回帰直線による補正などが知られている。
【０００７】
しかし、このような従来の誤差補正方法では、検出位置の誤差を小さくすることができるのみであり、ナビゲーションセンサからの位置情報にノイズが含まれている場合、正しい位置情報を得ることが出来ないという問題があった。
特許文献１に見られるように、印刷部を含む媒体表面を撮像した表面画像を印刷画像と比較して、位置の情報を補正するようにしても、ナビゲーションセンサからの位置情報にノイズが含まれている場合には、正確な補正を行うことができない。
【０００８】
この発明は、ハンドヘルド記録装置において、ナビゲーションセンサからの位置情報にノイズが含まれていても、正しい位置情報が得られるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
この発明は上記の目的を達成するため、複数のノズルを列設した記録ヘッドを備え、人の手で記録媒体上を走査されながら、画像データと上記記録ヘッドの基準点からの位置情報とに応じて、上記複数のノズルからインクを吐出して記録するハンドヘルド記録装置であって、上記複数のノズルの配列方向に間隔を置いて配置された少なくとも２個のナビゲーションセンサと、上記走査中に、所定のサンプリング周期でタイミング信号を生成するタイミング生成手段と、上記タイミング信号が生成されるごとに、上記２個のナビゲーションセンサの各出力値を読み込んで、その各出力値と上記２個のナビゲーションセンサの既知の取り付け距離とに基づいて上記各出力値にノイズが含まれているか否かを判断し、ノイズが含まれていると判断した場合は、その出力値を補正するか又は不採用にしてノイズを除去するノイズ除去手段と、そのノイズ除去手段によってノイズが除去された所定サンプリング回数の上記各出力値に基づいて、上記記録ヘッドの上記基準点からの移動量を算出して上記位置情報を決定する位置算出手段とを備えたことを特徴とする。
【発明の効果】
【００１０】
この発明によるハンドヘルド記録装置は、ナビゲーションセンサからの位置情報にノイズが含まれていても、正しい位置情報を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】この発明によるハンドヘルド記録装置の一実施形態であるハンドヘルドプリンタを含む記録システムの構成例を示す図である。
【図２】図１におけるハンドヘルドプリンタ１０のハードウェア構成を示すブロック図である。
【図３】図２における制御部２６の構成例を示すブロック図である。
【図４】ナビゲーションセンサの構成例を示すブロック図である。
【図５】ナビゲーションセンサの機能を説明するための図である。
【図６】図１におけるハンドヘルドプリンタ１０の底面における記録ヘッドとナビゲーションセンサとの位置関係の説明図である。
【図７】ナビゲーションセンサの位置算出式方法を説明するための図である。
【図８】実際のハンドヘルドプリンタの移動とナビゲーションセンサの位置情報の説明図である。
【図９】ナビゲーションセンサのセンサ出力値とセンサ間距離を用いたノイズ判別の説明図である。
【図１０】算出距離Ｌｓと取り付け距離Ｌとの差｜Ｌ−Ｌｓ｜によるセンサ出力値の識別についての説明図である。
【図１１】｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値から平均値を算出して、ノイズの有無を判断する閾値を説明するための図である。
【図１２】｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値が連続した場合のハンドヘルドプリンタの対処について説明するための図である。
【図１３】｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値から平均値を算出して、ノイズの有無を判断する閾値を説明するための図である。
【図１４】同一サンプリング時の２つのセンサの出力値の内で１つだけノイズを含むときの補正方法を説明するための図である。
【図１５】ナビゲーションセンサのセンサ出力値を用いた位置関数の説明図である。
【図１６】ナビゲーションセンサの位置情報を用いた位置関数によるノイズのズレ補正の説明図である。
【図１７】この実施形態のハンドヘルドプリンタによる図１６の補正及び算出方法を用いたノイズ除去と位置情報決定処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
図１は、この発明によるハンドヘルド記録装置の一実施形態であるハンドヘルドプリンタを含む記録システムの構成例を示す図である。
ハンドヘルドプリンタ１０は、人が片手で持ち運びできる大きさ及び重量であり、ノートや定形用紙等の記録媒体１２上を自由に移動して走査されながら、その記録媒体１２上に画像を形成することができるハンドヘルド記録装置である。これは、ハンディモバイルプリンタとも称される。
【００１３】
このハンドヘルドプリンタ１０は、複数のノズルを列設した記録ヘッドを備えており、そのノズルから画像データに応じてインクを吐出し、記録媒体１２上に画像を形成するインクジェット方式のプリンタである。そして、モノクロプリンタであってもよいし、カラープリンタであってもよい。
また、このハンドヘルドプリンタ１０は、赤外線通信、Bluetooth（登録商標）、ＷｉＦｉ等の無線通信により、画像データを保持するホスト装置としてのスマートデバイス１１から画像データを受信する。そして、その受信した画像データに基づいて記録媒体１２上に画像を形成する。
【００１４】
その画像データは、文字のみからなるテキストデータであってもよいし、図、絵、写真等を含む文書データ、表データ等であってもよい。ハンドヘルドプリンタ１０は、スマートデバイス１１から画像データを直接受信してもよいし、アクセスポイント等を介して受信してもよい。また、無線通信に限るものではなく、ハンドヘルドプリンタ１０とスマートデバイス１１をケーブル等で接続し、ハンドヘルドプリンタ１０が有線通信によって画像データを受信するようにしてもよい。
【００１５】
スマートデバイス１１は、例えば、スマートフォン、タブレット端末、ノートＰＣ等の情報処理装置（ホスト装置）であり、ハンドヘルドプリンタ１０と無線又は有線通信を行い、自身が保持する画像データをハンドヘルドプリンタ１０へ送信する。また、スマートデバイス１１は、サーバ等の他の機器から受信して取得した画像データを、ハンドヘルドプリンタ１０へ送信することもできる。
【００１６】
そのスマートデバイス１１は、画像データ、その画像データを表示するアプリケーション、ＯＳ等を記憶する記憶装置、アプリケーションを実行するＣＰＵ、画像を表示する表示装置、その画像の印刷指示を入力する入力装置を備える。なお、表示装置と入力装置は、別個の装置として構成されたものに限らず、これらの機能を備えるタッチパネルであってもよい。ここで「印刷」とは、紙等の記録媒体（印刷媒体）上に画像を形成して記録する「記録」と同意である。
【００１７】
ユーザは、スマートデバイス１１の電源を入れ、アプリケーションを起動させ、画像データを表示させる。ユーザは、その画像データを印刷したい場合、例えば、タッチパネルに表示された印刷開始ボタンをタップすることにより印刷を指示することができる。この印刷指示を受けて、スマートデバイス１１は、その画像データを、無線通信によりハンドヘルドプリンタ１０へ送信する。
【００１８】
ハンドヘルドプリンタ１０は、スマートデバイス１１から印刷対象の画像データを受信する。ユーザは、手１３でハンドヘルドプリンタ１０を持ち、紙等の記録媒体１２上を移動させる。その間に、ハンドヘルドプリンタ１０は、記録ヘッドの各ノズルの位置を、最初に決められた初期位置を基準とした座標位置として算出する。
そして、ハンドヘルドプリンタ１０は、受信した画像データを構成する画像要素のデータ（印字データ）の座標位置と算出した座標位置とが一致する場合に、その印字データを、記録ヘッドを制御する後述する制御部へ送る。複数のノズルを有する記録ヘッドは、その制御部の制御を受けて、その座標位置にあるノズルからインクを吐出させ、印字を行なう。ハンドヘルドプリンタ１０は、これを繰り返して記録媒体１２上に画像１４を形成する。
【００１９】
このようなハンドヘルドプリンタにおける位置検知機能と走査方式には、大別して次の３種類がある。
（１）一方向（例えばＸ軸方向）の位置検知機能を有し、一方向にのみ走査させて印字する。
（２）二方向（例えばＸ、Ｙ軸方向）の位置検知機能を有し、二方向に走査させて印字する。
（３）三方向（例えばＸ、Ｙ軸方向と、Ｒ軸に関する回転方向) の位置検知機能を有し、平面上を自由に走査（フリーハンド走査）させて印字する。
この実施形態のハンドヘルドプリンタ１０は、上記（３）の方式であるのが望ましい。
【００２０】
ハンドヘルドプリンタ１０は、図１に示すように箱状の形態をなし、インクを吐出するための複数のノズルを列設した記録ヘッドを備えており、その複数のノズルを有する面（図１では下側の面）を、平面状の記録媒体１２に押し当てるようにして使用される。
ハンドヘルドプリンタ１０が、ユーザの手１３によって記録媒体１２に押し当てられた際に、記録ヘッドの複数のノズルは、その先端が記録媒体１２から所定距離だけ離間するように配置されている。そのノズルの先端から記録媒体１２までの距離は、ノズルからインクを吐出して適切に印字することができる距離として予め決定されている。
ユーザは、手１３でハンドヘルドプリンタ１０を持って、その記録ヘッド側の面を記録媒体１２上に押し当てて、記録媒体１２上を左から右へ走査し、一段下げて右から左へ走査するように移動させることによって、記録媒体１２に画像１４を記録（印刷）する。
【００２１】
図２は、図１におけるハンドヘルドプリンタ１０のハードウェア構成を示すブロック図である。
このハンドヘルドプリンタ１０は、電池やバッテリによる電源２０と、その電源から各ユニットへ必要な給電を行なう電源回路２１を備えている。電源回路２１はまた、電源２０のバッテリを充電する回路、ＡＣ電源との切り替え回路などを含んでもよい。
ハンドヘルドプリンタ１０はまた、スマートデバイス１１から送信された画像データを受信する通信インタフェース（ＩＦ）２２を備えている。その通信インタフェース２２は、無線ＬＡＮやBluetooth（登録商標）、ＮＦＣ等の無線通信手段が望ましいが、それに限定されるものではなく、有線通信手段であってもよい。
【００２２】
さらに、このハンドヘルドプリンタ１０は、ＲＯＭ２３、ＤＲＡＭ２４、ナビゲーションセンサ２５、制御部２６、オペレーションユニット（ＯＰＵ）２７、記録ヘッド２８、記録ヘッド駆動回路２９を備えている。
ＲＯＭ２３は、ハンドヘルドプリンタ１０のハードウェア制御を行なうファームウェアや、記録ヘッド２８の駆動波形データ、各種の初期設定データ等を格納しておくリードオンリメモリである。
【００２３】
ＤＲＡＭ２４は、通信インタフェース２２が受信した画像データの一時的な格納や、ファームウェア動作時のワークメモリ、ＲＯＭ２３から展開されたファームウェア（プログラム）の格納などに使用される。
ナビゲーションセンサ２５は、記録ヘッド２８を挟んで２個以上設けられており、ハンドヘルドプリンタ１０及び記録ヘッド２８の位置情報ならびに移動距離を算出するための座標情報を検出する。移動量に加えて、回転量や加速度を算出するために使用してもよい。このナビゲーションセンサ２５の詳細については後述する。
【００２４】
制御部２６はＣＰＵを含み、このハンドヘルドプリンタ１０全体の制御を行なう。その制御の内容については後述するが、例えば、ナビゲーションセンサ２５からの情報に基づいて、記録ヘッド２８のノズル毎の位置情報を算出し、その位置情報に応じた画像の選択、印字判定等を行なう。また、制御部２６は、この発明に係るノイズ除去処理等の制御も行なう。
オペレーションユニット（ＯＰＵ）２７は、操作ボタンや液晶ディスプレイ(ＬＣＤ)等を含み、タッチパネルを備えていてもよい。このオペレーションユニット２７は、ユーザからの入力を受け付け、ユーザに対して処理の状況やエラー等を通知することができる。
【００２５】
記録ヘッド２８は、インクを吐出するための複数のノズルが配列されたノズル列を有し、この実施形態ではフルカラー印刷ができるように、シアン（Ｃ）、マゼンタ（Ｍ），イエロー（Ｙ）、ブラック（Ｋ）の各インク吐出用の４列のノズル列を備えている。各ノズルのインク吐出方式は、ピエゾ方式でもサーマル方式でもよいが、この実施形態ではピエゾ方式とする。
記録ヘッド駆動回路２９は、印刷するための印字データと印字タイミングを指示する印字タイミング情報とを受け付ける。そして、印字タイミング情報で指示された印字タイミングに、印字データに基づいて記録媒体１２にインクを吐出するように、記録ヘッド２８のＣＭＹＫ各色用のノズル列毎に、その各ノズルに対する駆動制御を行なう。
【００２６】
このハンドヘルドプリンタ１０は、通信インタフェース２２が、スマートデバイス１１から印刷ジョブ（画像データ）を受信すると、制御部２６が、ナビゲーションセンサ２５からの入力情報を基に、記録ヘッド２８の各ノズルの位置を算出する。受信した画像データは、制御部２６によってＤＲＡＭ２４に格納される。
【００２７】
ユーザが、このハンドヘルドプリンタ１０を片手で持ち、それを自由に移動させて記録媒体１２上を走査すると、制御部２６は、その走査中に、記録ヘッド２８の各ノズルの位置情報を算出し続ける。そして、制御部２６は、算出した位置情報に応じた所定領域の画像のみをＤＲＡＭ２４から取得する。制御部２６は、その取得した画像と算出した各ノズルの位置とを比較し、１以上のノズルについて合致と判断した場合は、その各ノズルに対する印字データを記録ヘッド駆動回路２９へ送る。
記録ヘッド駆動回路２９は、印字タイミング情報も受け付けて記録ヘッド２８の各ノズルの駆動制御を行い、記録ヘッド２８に記録媒体１２上への印刷を実行させる。
【００２８】
次に、上述した制御部２６の構成例を図３によって説明する。
この実施形態における制御部２６は、図３に示すようにソフト制御部４０と制御ＩＣ５０によって構成されている。
ソフト制御部４０は、例えばＳｏＣ（System  on  Chip）によって構成され、制御ＩＣ５０は、例えばＡＳＩＣ（Application  Specific  Integrated  Circuit）によって構成される。ＡＳＩＣに代えて、製造後にユーザが構成を設定できるＦＰＧＡ(Field  Programmable  Gate  Array)を用いてもよい。
【００２９】
ソフト制御部４０は、ＣＰＵ４１とメモリコントローラ４２、位置算出回路４３、およびＲＯＭコントローラ４４を有し、これらはバス４５に接続され、バス４５を介してデータ等のやりとりを行なう。そのバス４５は、制御ＩＣ５０のバス５８とも接続されており、ソフト制御部４０の各部は、制御ＩＣ５０の各部ともデータ等のやりとりを行なうことができる。
ＣＰＵ４１は、このハンドヘルドプリンタ１０全体の制御を行なう中央演算処理装置であり、ＲＯＭ２３に格納されたプログラムに従って動作する。
【００３０】
メモリコントローラ４２は、メモリであるＤＲＡＭ２４とのインタフェース制御を行なう。ＲＯＭコントローラ４４は、ＲＯＭ２３とのインタフェース制御を行なう。
位置算出回路４３は、制御ＩＣ５０を通してナビゲーションセンサ２５の各センサの出力値を読み込み、記録ヘッド２８及び各ノズルの位置と移動距離を、ＣＰＵ４１の制御によって算出する。
【００３１】
この位置算出回路４３には、この発明によるノイズ除去を実施するためのノイズ除去演算部４６が設けられている。そのノイズ除去演算部４６は、位置算出回路４３がナビゲーションセンサ２５から取得した位置座標情報に、ノイズが含まれているかどうかを判別する。その判別は、ナビゲーションセンサ２５を構成する後述する２個のセンサの出力値と、その２個のセンサ間の取り付け距離に基づいて判別する。そして、その判別後に得られる位置情報を補正位置情報の算出に用いて、ノイズや誤差の影響を小さくする。
ノイズ除去演算部４６によるこれらの判別及び演算処理も、ＣＰＵ４１の制御によって実施される。これらが、この発明におけるノイズ除去手段及び位置算出手段の機能を果す。その詳細は後述する。
【００３２】
制御ＩＣ５０は、ナビゲーションセンサＩ／Ｆ（インタフェース）５１、タイミング生成回路５２、および記録ヘッド制御回路５３を有する。さらに、イメージＲＡＭ５４、ＤＭＡＣ（Direct  Memory  Access  Controller)５５、回転器５６、割り込み回路５７を含む。
これらの各部はバス５８に接続され、そのバス５８を介してデータ等のやりとりを行なう。また、バス５８は、ソフト制御部４０のバス４５とも接続されており、制御ＩＣ５０の各部は、ソフト制御部４０の各部ともデータ等のやりとりを行なうことができる。
【００３３】
ナビゲーションセンサＩ／Ｆ５１は、ナビゲーションセンサ２５と通信し、そのナビゲーションセンサ２５を構成する後述する２個のセンサの出力値（座標値変化）を受信し、その値を内部メモリである内部レジスタに格納する。
タイミング生成回路５２は、所定のサンプリング周期で、ナビゲーションセンサ２５の各センサが光を照射し、記録媒体１２からの反射光をイメージデータとして取得するためのタイミング信号を生成し、その信号をナビゲーションセンサＩ／Ｆ５１に通知する。
【００３４】
すなわち、このタイミング生成回路５２は、ナビゲーションセンサ２５の各センサに記録媒体１２を読み取らせて、その各出力値を読み込むタイミングを指示するタイミング生成手段である。
このタイミング生成回路５２はまた、記録ヘッド２８を駆動するタイミング信号を生成し、その信号を記録ヘッド制御回路５３に通知する。すなわち、このタイミング生成回路５２は、印刷を行なうために記録ヘッド２８の各ノズルからインクを吐出させるタイミングも指示する。
【００３５】
ＤＭＡＣ５５は、ソフト制御部４０の位置算出回路４３が算出した位置情報を基に、記録ヘッド２８が備える各ノズルの周辺画像の画像データを、メモリコントローラ４２を直接制御してＤＲＡＭ２４から読み出す。
イメージＲＡＭ５４は、ＤＭＡＣ５５が読み出した周辺画像の画像データを一時的に格納するメモリであり、例えばＳＲＡＭを使用する。
回転器５６は、ＤＭＡＣ５５が読み出した周辺画像の画像データを、ユーザに指定された記録ヘッドの位置及び傾きに応じて回転させ、記録ヘッド制御回路５３へ出力する。この回転器５６は、例えば、ソフト制御部４０の位置算出回路４３が位置座標を算出する際に算出した回転角度を取得し、その回転角度を用いて周辺画像を回転させることができる。
【００３６】
記録ヘッド制御回路５３は、タイミング生成回路５２からの記録ヘッドを駆動するタイミング信号によって制御信号を生成し、回転器５６から出力された周辺画像の画像データを受け付け、記録ヘッド２８のどのノズルからインクを吐出させるかを判断する。記録ヘッド制御回路５３は、その判断結果とタイミングの情報に応じて、インクを吐出させるノズルの情報及び印字データを、ＣＭＹＫの各色ごとに記録ヘッド駆動回路２９へ出力する。
割り込み回路５７は、ナビゲーションセンサＩ／Ｆ５１がナビゲーションセンサ２５との通信を終了した際、ソフト制御部４０にその旨を通知する割り込み信号制御機能を有する。その他に、エラー等のステータス情報を通知する機能も有する。
【００３７】
ここで、ナビゲーションセンサの構成例について説明する。図４は、ナビゲーションセンサ２５の構成例を示すブロック図である。
ナビゲーションセンサ２５は、ホストＩＦ３０、イメージプロセッサ３１、ＬＥＤドライバ３２、ＬＥＤ（発光ダイオード）３３、２つのレンズ３４，３５、イメージアレイ３６、及びイメージプロセッサ３１を含んで構成される。これは、図６〜図９において、ナビゲーションセンサを構成する２個のセンサＳ０，Ｓ１の構成でもある。
【００３８】
ＬＥＤドライバ３２は、ＬＥＤ３３を発光させ、そのＬＥＤ３３の発光による光を、レンズ３４を通して紙等の記録媒体１２の表面を照射させる。
イメージアレイ３６は、記録媒体１２からの反射光をレンズ３５を通して受光し、その受光した光からイメージデータを生成してイメージプロセッサ３１へ出力する。レンズ３４、３５は、記録媒体１２の表面に対して光学的に焦点が合うように設置されている。
【００３９】
イメージプロセッサ３１は、図３に示したタイミング生成回路５２から読取りのタイミング信号が入力すると、ＬＥＤドライバ３２を動作させてＬＥＤ３３を発光させる。そして、イメージアレイ３６から入力されるイメージデータの画像から、ナビゲーションセンサ２５の移動量として移動距離を算出する。その移動距離は、Ｘ軸方向の移動距離ΔＸと、Ｙ軸方向の移動距離ΔＹとして算出される。イメージプロセッサ３１は、その算出した移動距離（ΔＸ，ΔＹ）を、ホストＩＦ３０から図３に示した制御ＩＣ５０のバス５８へ出力し、ソフト制御部４０の位置算出回路４３がその各出力値を取得する。
【００４０】
この例では、光源としてＬＥＤを使用しているが、ＬＥＤは、表面が粗い記録媒体、例えば紙を使用する場合に有用である。それは、表面が粗い場合には影が発生するため、その影を特徴部分として、Ｘ軸方向およびＹ軸方向の移動距離を正確に算出することが可能になるからである。
一方、表面が滑らかであるか、あるいは透明な記録媒体１２に対しては、光源としてレーザ光を発生させる半導体レーザ（レーザダイオード）を使用することができる。それによって、例えば記録媒体上に縞模様等を形成することにより特徴部分を作ることができ、それを基に正確に移動距離を算出することができる。
【００４１】
次に、このナビゲーションセンサ２５の機能について、図５を参照して説明する。
ナビゲーションセンサ２５は、図５（ａ）に示すように、ＬＥＤ３３が発光する光を、レンズ３４で平行光束にして記録媒体１２の表面を照射する。その記録媒体１２の表面からの反射光を、レンズ３５でイメージアレイ３６の受光面に結像させる。
記録媒体１２の表面は、拡大してみると様々な形状の凹凸を有している。そのため、様々な形の影が発生する。図５（ａ）に円Ａで示す部分を、（ｂ）では円Ａ′で示すように拡大して示す。
【００４２】
イメージプロセッサ３１は、読取りのタイミング信号による予め決められたサンプリング周期毎に、ＬＥＤドライバ３２にＬＥＤを発光させる。そして、イメージアレイ３６がその反射光を受光して生成するイメージデータの画像を、イメージプロセッサ３１が入力して、規定の分解能単位でマトリクス化する。すなわち、画像を複数の矩形領域に分割する。
そして、イメージプロセッサ３１は、前回のサンプリングタイミングで得られた画像と、今回のサンプリングタイミングで得られた画像とを比較し、その差分を検出し、それを移動距離として算出する。
【００４３】
図５（ｂ）に示すような画像が、サンプリングタイミングSamp１、Samp２、Samp３で、この順に得られたものとする。この図５（ｂ）を参照すると、画像中、黒とグレイで表わされた影である特徴部分の４つの矩形領域が、向かって右から左へ１分解能の距離ずつ移動していることが分かる。
したがって、Samp１を基準とすると、Samp２では、Ｘ軸方向にのみ１分解能の距離だけ移動していることから、その出力値（ΔＸ，ΔＹ）は、（１，０）となる。また、Samp２を基準とすると、Samp３では、Ｘ軸方向にのみ１分解能の距離だけ移動しているため、この出力値も（１，０）となる。
【００４４】
ΔＸ，ΔＹは、センサ自体の向きを基準としたＸ軸方向およびＹ軸方向の移動距離であり、センサは、これらの移動距離を出力する。したがって、ユーザによりハンドヘルドプリンタ１０が記録媒体１２上で左右いずれかの方向へ回転され、それに従ってナビゲーションセンサ２５も回転したとしても、その回転成分を検知することはできない。
上記移動距離の単位は、デバイスに依存するが、プリンタを想定した場合、例えば１２００ｄｐｉ程度の分解能が必要である。
【００４５】
次に、ナビゲーションセンサと記録ヘッドの位置関係について、図６によって説明する。図６は、図１に示したハンドヘルドプリンタ１０の底面における記録ヘッドとナビゲーションセンサとの位置関係の説明図である。
記録ヘッド２８は、ハンドヘルドプリンタ１０の底面１０ａの外周より内側に、長手方向に沿って配置されている。記録ヘッド２８の下面には、その長手方向に沿って多数のノズル１８が配列されたノズル列が、ＣＭＹＫの各色用に４列設けられているが、この図６では簡略化して１列だけを示している。
【００４６】
ナビゲーションセンサ２５は、ハンドヘルドプリンタ１０の底面における記録ヘッド２８の周囲に、複数のノズル１８の配列方向に間隔を置いて少なくとも２個（複数個）設置される。この実施形態では、記録ヘッド２８の長手方向の両端近傍で、中心に対して対称な位置に一対（２個）設置されている。その一対のナビゲーションセンサ２５を、センサＳ０とセンサＳ１とする。
一方のセンサＳ０の中心から記録ヘッド２８の長手方向の一端までの距離をａ、他方のセンサＳ１の中心から記録ヘッド２８の長手方向の他端までの距離をｂで示す。この２個のセンサＳ０とＳ１の中心間の距離ｃが長い程よい。それは、後で説明する位置算出演算時に、距離ｃ（図７及び図９では取り付け距離Ｌ）が長い程、演算誤差が少なくなるからである。
【００４７】
なお、１個のハンドヘルドプリンタに３個以上のナビゲーションセンサを設置することもできる。例えば、三角測量に適する位置に３個のナビゲーションセンサを設置してもよい。それによって、互いの位置関係を正確に把握することができ、センサ同士の位置により位置情報算出の精度を上げることが可能である。
また、ナビゲーションセンサとして、位置センサ以外の加速度センサなども使用することによって、複数種類の情報から位置の情報を算出することができる。
【００４８】
そして、この２個のセンサＳ０とＳ１の位置を算出した後に、上記距離ａ、ｂと、記録ヘッド２８の長手方向の両端からその各端に最も近いノズル１８までの各距離ｄと、隣接するノズル１８間の距離eとを用いて、各ノズル１８の位置を算出する。
上記の各距離ａ〜ｅは、予め決められた距離であるから、センサＳ０，Ｓ１の位置座標を算出することによって、記録ヘッド２８の各ノズル１８の位置座標を算出することができる。
【００４９】
記録媒体１２の横方向をＸ軸、縦方向をＹ軸とし、センサＳ０，Ｓ１の出力軸も同様とする。図６に示すように、ハンドヘルドプリンタ１０がユーザによる走査で角度θだけ傾いた場合、センサＳ０，Ｓ１の出力値は、Ｘ、Ｙ軸を基準としたものではなく、角度θだけ傾いたＸ′、Ｙ′軸を基準としたものになる。
そのため、ハンドヘルドプリンタ１０の移動によるナビゲーションセンサ２５のΔX、ΔYの出力値は、Ｘ′、Ｙ′軸の水平方向及び垂直方向へ移動した移動距離となる。したがって、記録媒体１２のＸ、Ｙ軸の水平方向及び垂直方向へ移動した移動距離ではなくなる。このような場合でも、得られた移動距離から記録媒体１２のＸ、Ｙ軸に対する座標位置を逐次算出し、その座標位置を格納するようにしておけば、正常な座標位置を把握することができる。
【００５０】
そこで、図７によってナビゲーションセンサの位置算出式方法を説明する。
図７では、記録ヘッド２８の長手方向の両端に、ナビゲーションセンサである２個のセンサＳ０とセンサＳ１が設置されている。その２個の物理的間隔である取り付け距離Ｌは既知である。この例では、その取り付け距離Ｌは記録ヘッド２８の長さに等しい。
そして、記録媒体の座標軸に対する記録ヘッド２８の移動前（図７の左側）の傾き角度をθとする。その移動前のセンサＳ０の中心点の座標位置を（Ｘ０，Ｙ０）とし、センサＳ１の中心点の座標位置を（Ｘ１，Ｙ１）とする。
【００５１】
その記録ヘッド２８の移動後（図７の右側）は、センサＳ０の中心点の座標位置が（Ｘ０′，Ｙ０′）となり、センサＳ１の中心点の座標位置が（Ｘ１′，Ｙ１′）となったものとする。
その移動後の位置算出は、回転成分と並行成分の二つに分けて考える。記録ヘッド２８の回転成分ｄθは、センサＳ０とセンサＳ１のＸ方向出力（移動距離）ｄＸｓ０とｄＸｓ１の差分から、数１の算出式によって計算する。
【００５２】
【数１】
2016137621.tif 000003
【００５３】
センサＳ０の並行移動成分の移動量ｄＸ０、ｄＹ０は、記録ヘッド２８の傾き角度θを保持し、三角関数により次の算出式によって計算する。
ｄＸ０＝ｄＸs０×cosθ＋ｄＹs０×sinθ
ｄＹ０＝−ｄＸs０×sinθ＋ｄＹs０×cosθ
そして、センサＳ０の移動後の位置座標（Ｘ０′，Ｙ０′）は、次のように求められる。
Ｘ０′＝Ｘ０＋ｄＸ０      Ｙ０′＝Ｙ０＋ｄＹ０
【００５４】
このとき、センサＳ１の位置座標（Ｘ１′，Ｙ１′）は、上式で求めたセンサＳ０の座標位置と、記録媒体の座標軸に対する記録ヘッド２８の移動後の傾き角度θ＋ｄθ、センサＳ０とセンサＳ１の取り付け距離Ｌから、次式によって算出できる。
Ｘ１′＝Ｘ０′−Ｌ×sin（θ＋ｄθ）
Ｙ１′＝Ｙ０′−Ｌ×cos（θ＋ｄθ）
【００５５】
また、三角関数の加法定理、
cos（α＋β）＝cosα×cosβ−sinα×sinβ
sin（α＋β）＝sinα×cosβ＋cosα×sinβ
およびsinｄθ = tanｄθ =ｄθ  （ｄθ<<１のとき）の定理を使用する。
これは、ナビゲーションセンサが検知する移動量ΔＸ，ΔＹ（ｄＸｓ０，ｄＹs０に相当）をサンプリングして実際の記録ヘッド２８の位置を算出する際に、ｄθは１よりもかなり小さい値となるためである。
【００５６】
例えば、Ｌ＝１inch、４００mm/sという高速走査で、サンプリング周期：１００μsと仮定すると、１サンプリング周期で移動できる距離は４０μmである。そして、回転できる角度ｄθ, sinｄθ, tanｄθは、ｄθ=０．００１５，sinｄθ=０．００１５， tanｄθ=０．００１５であり、ｄθ<<１として演算できる。
なお、sin２（ｄθ）＋cos２（ｄθ）＝１であるから、cos（ｄθ）＝√｛１−sin２（ｄθ）｝である。また、前述した数１から、tanｄθ=（ｄＸｓ０−ｄＸｓ１）／Ｌ＝ｄθ  （ｄθ<<１のとき）である。
【００５７】
このとき、sinｄθ, cosｄθを求める計算を省略し、以下の数２及び数３の計算によって、初期の傾き角度θと、センサＳ０、Ｓ１のＸ方向の移動量ｄＸｓ０，ｄＸｓ１からsinｄθとcosｄθを管理することができる。
したがって、cos（θ＋ｄθ）は数２によって、sin（θ＋ｄθ）は数３によって、それぞれ算出できる。それ故、センサＳ１の移動後の位置座標（Ｘ１′，Ｙ１′）も、θとｄＸｓ０，ｄＸｓ１と、固定値であるセンサＳ０とＳ１の取り付け距離Ｌとから、前述のＸ１′とＹ１′を求める式によって算出できる。
【００５８】
【数２】
2016137621.tif 000004
【００５９】
【数３】
2016137621.tif 000005
【００６０】
以上の演算を、図３における位置算出回路４３がサンプリング周期毎の読み込みタイミングで実施し続けることにより、ナビゲーションセンサである一対のセンサＳ０，Ｓ１の記録媒体に対する２次元座標位置を逐次把握することができる。
【００６１】
ここで、実際のハンドヘルドプリンタの移動とナビゲーションセンサの位置情報について図８によって説明する。
図８において、ハンドヘルドプリンタ１０は記録ヘッド２８と、その長手方向の両端部にナビゲーションセンサとして２個のセンサＳ０とＳ１を設けている。実際には、記録ヘッド２８側を記録媒体１２に押し当てて、ハンドヘルドプリンタ１０を手で移動させながら記録するが、説明の都合上記録ヘッド２８側を上面にして示している。
【００６２】
（ａ）は、実際のハンドヘルドプリンタの移動の軌跡を示す。
Ａ点とＢ点は、センサＳ０とＳ１の移動前（Δｔ０時）の位置を示している。そのA点の位置情報をＡ（ｘ，ｙ）、Ｂ点の位置情報をＢ（ｘ′，ｙ′）とする。
ΔＡ点とΔＢ点はΔｔ０時から移動後のΔｔ１時におけるセンサＳ０とＳ１の位置を示している。そのときセンサＳ０の移動量は(ｄｘ,ｄｙ)で、ΔＡ点の位置情報はΔ(ｘ＋ｄｘ，ｙ＋ｄｙ)である。センサＳ１の移動量は（ｄｘ′，ｄｙ′）で、Ｂ点の位置情報はＢ(ｘ′＋ｄｘ′，ｙ′＋ｄｙ′)である。
【００６３】
（ｂ）はセンサＳ０，Ｓ１の移動後の位置情報にノイズが含まれる場合の例を示す。
センサＳ０，Ｓ１の移動後（Δｔ１時）の位置情報にノイズが含まれない場合、ΔＡ点とΔＢ点の位置をそれぞれ白丸で示す。しかし、位置情報にノイズが含まれた場合は、ΔＡ点とΔＢ点の位置が、例えば黒丸で示すような位置として検出されてしまう。
Ａ点，Ｂ点から移動後のΔｔ１時でのΔＡ点、ΔＢ点までの移動量に対して、センサＳ０，Ｓ１の出力値にノイズが含まれる場合、センサＳ０，Ｓ１の実際の位置情報とセンサＳ０，Ｓ１の出力値を基に計算した位置情報は異なるものとなる。このときのノイズとは、電気的に無作為で、ランダムに発生するものである。
【００６４】
（ｃ）は、実際のハンドヘルドプリンタ１０の移動後の位置と、ノイズが含まれているときのセンサ出力値を基に計算したハンドヘルドプリンタ１０の位置とのズレを示す模式図である。
NoiseΔt1時に、センサＳ０，Ｓ１の出力値にノイズが含まれている場合、センサＳ０の出力値に基づいて計算した位置情報は、ΔＡ(ｘ＋ｄｘ＋Noise，ｙ＋ｄｙ＋Noise)となる。また、センサＳ１の出力値に基づいて計算した位置情報はΔＢ(ｘ′＋ｄｘ′＋Noise，y′＋ｄｙ′＋Noise)となる。
【００６５】
このように、センサＳ０，Ｓ１の出力値にノイズが含まれている場合には、実際のハンドヘルドプリンタ１０の移動後の位置と、センサＳ０，Ｓ１の出力値基づいて計算したハンドヘルドプリンタ１０の位置とがずれてしまう。したがって、センサＳ０，Ｓ１の出力値にノイズが含まれてしまうと、ハンドヘルドプリンタ１０の位置、すなわち記録ヘッド２８の位置の正確な位置情報を把握出来なくなる。
【００６６】
そこで、この発明で用いるノイズの判別方法と補正方法について、図９〜図１６によって説明する。
図９は、ナビゲーションセンサのセンサ出力値とセンサ間距離を用いたノイズ判別の説明図である。
（ａ）は、ハンドヘルドプリンタ１０が移動したときのナビゲーションセンサである２個のセンサＳ０，Ｓ１の出力値に基づいて、移動後のハンドヘルドプリンタ１０の軌跡を示している。
【００６７】
Ａ点とＢ点は、センサＳ０とＳ１の移動前の位置を示している。Ａ点の位置情報をＡ（ｘ，ｙ）、Ｂ点の位置情報をＢ（ｘ′，ｙ′）とする。
ΔＡ点とΔＢ点はセンサＳ０とＳ１の移動後の位置を示している。センサＳ０のＸ軸方向とＹ軸方向の移動量は（ｄｘ,ｄｙ）で、ΔＡ点の位置情報はΔＡ（ｘ＋ｄｘ，ｙ＋ｄｙ）である。センサＳ１のＸ軸方向とＹ軸方向の移動量は（ｄｘ′，ｄｙ′）で、Ｂ点の位置情報はＢ（ｘ′＋ｄｘ′，ｙ′＋ｄｙ′）である。Ｌは２個のセンサＳ０とＳ１の取り付け距離を示しており、既知の固定値である。
【００６８】
移動後のナビゲーションセンサにおいて、センサＳ０は、基準点であるA点よりサンプリング周期ごとに、センサＳ０のＸ−Ｙ平面に従った移動量（ｄＸ，ｄＹ）を出力する。また、センサＳ１は、基準点であるＢ点よりサンプリング周期ごとに、センサＳ１のＸ−Ｙ平面に従った移動量（ｄｘ′，ｄｙ′）を出力する。
【００６９】
（ｂ）は、上述したセンサＳ０，Ｓ１それぞれのＸ−Ｙ平面に従った移動量（ｄＸ、ｄＹ），（ｄｘ′，ｄｙ′）を、２個のセンサＳ０とＳ１の取り付け距離Ｌを用いて、Ａ点からの相対的な移動量に変換することを示している。
２個のセンサＳ０とＳ１の間の取り付け距離Ｌにより、センサＳ０とＳ１のそれぞれＸ−Ｙ平面に従った変化量を、同一の基準点からの位置情報に変換できる。A点のＸ−Ｙ平面に従い、ΔB点のＸ方向の変化はA点を基準としたＸ軸と同じであり、ΔB点のＹ軸方向の変化は、センサＳ１の変化量ｄｙ′からＡ点を基準としたＹ軸よりセンサ間の取り付け距離Ｌだけ減じた値：ｄｙ′−Ｌと表せる。
このＡ点からのΔＡ点とΔＢ点の変化量を用いて、ΔＡ点とΔＢ点の２点間の距離、すなわち２個のナビゲーションセンサ間の距離Ｌｓを数４によって算出する。
【００７０】
【数４】
2016137621.tif 000006
【００７１】
ハンドヘルドプリンタ１０の走査中に、図３に示した制御ＩＣ５０内のタイミング生成回路（タイミング生成手段）が、所定のサンプリング周期でタイミング信号を生成する。そのタイミング信号が生成されるごとに、ノイズ除去手段（ノイズ除去演算部４６を含む制御部２６）はナビゲーションセンサ２５である２個のセンサＳ０，Ｓ１の各出力値を読み込んでサンプリングする。
ノイズ除去演算部４６は、その各出力値ｄｘ、ｄｙとｄｘ′、ｄｙ′及び２個のセンサＳ０，Ｓ１の既知の取り付け距離Ｌとに基づいて、各出力値にノイズが含まれているか否かを判断する。そして、ノイズが含まれていると判断した場合は、その出力値を補正するか又は不採用にしてノイズを除去する。
【００７２】
このようにすることによって、ナビゲーションセンサからの出力値である位置情報にノイズが含まれていても、正しい位置情報が得られるようにすることができる。
その際、上記数４の演算による算出距離Ｌｓと２個のセンサＳ０，Ｓ１間の取り付け距離Ｌとの差｜Ｌ−Ｌｓ｜（絶対値）によって、次のようにノイズの有無を判断することができる。
【００７３】
｜Ｌ−Ｌｓ｜≦ノイズ許容値  （差がノイズ許容値以内である）
のとき、センサＳ０，Ｓ１の各出力値であるΔA点とΔB点の移動量に、ノイズが含まれていないと判断する。
｜Ｌ−Ｌｓ｜＞ノイズ許容値  （差がノイズ許容値を超えている）
のとき、センサＳ０，Ｓ１の各出力値であるΔA点とΔB点の移動量のいずれかに、ノイズが含まれていると判断する。
このようにすれば、ノイズが含まれているサンプリングタイミングのセンサ出力値を判別することができる。
【００７４】
図１０は、上記算出距離Ｌｓと取り付け距離Ｌとの差｜Ｌ−Ｌｓ｜によるセンサ出力値の識別についての説明図である。
この図１０によって、図９に示した２個のセンサＳ０，Ｓ１からの各出力値によるセンサ間の算出距離Ｌｓと、センサＳ０，Ｓ１間の取り付け距離Ｌとの差（絶対値）により、センサ出力値の識別について説明する。
【００７５】
図１０に示す｜Ｌ−Ｌｓ｜のノイズ許容値αは、図２及び図３に示した制御部２６内のメモリに予め設定されているが、印刷の精度や移動速度によっても変更が可能であり、ユーザがオペレーションユニット２７から選択又は変更することも可能である。
｜Ｌ−Ｌｓ｜がノイズ許容値α以内（｜Ｌ−Ｌｓ｜≦α）の場合は、図３に示したＣＰＵ４１が、ナビゲーションセンサ２５であるセンサＳ０，Ｓ１の各出力値にノイズはないと判断する。
【００７６】
｜Ｌ−Ｌｓ｜がノイズ許容値αを超えた（｜Ｌ−Ｌｓ｜＞α）場合は、ＣＰＵ４１がセンサＳ０，Ｓ１の各出力値の少なくとも一方にノイズがあると判断する。
これを、｜Ｌ−Ｌｓ｜＜α（α未満）の場合は、センサＳ０，Ｓ１の各出力値にノイズはないと判断し、｜Ｌ−Ｌｓ｜≧α（α以上）の場合は、センサＳ０，Ｓ１の各出力値の少なくとも一方にノイズがあると判断するようにしても均等である。
この例ではさらに、同一サンプリング時におけるセンサＳ０，Ｓ１の各出力値（ｄＸ、ｄｙ）、（ｄｘ′，ｄｙ′）を補正するのか、あるいは不採用として無視するのかを判断するためのノイズ補正閾値βを設けている。ノイズ補正閾値βはノイズ許容値αより大きい（β＞α）。
【００７７】
このノイズ補正閾値βは、｜Ｌ−Ｌｓ｜がノイズ許容値αを超えている場合に、さらにβを超えている（｜Ｌ−Ｌｓ｜＞β）場合は、センサＳ０，Ｓ１の各出力値から算出されたセンサ間の距離Ｌｓとセンサ間の取り付け距離Ｌとの差が顕著に大きいことを示す。すなわち、センサＳ０，Ｓ１の出力値が実際のハンドヘルドプリンタ１０の移動量と大きく違うことになる。そのため、センサＳ０，Ｓ１の出力値に対して補正を行うことによって、その各出力値と実際の移動量との誤差を小さくする。
【００７８】
また、｜Ｌ−Ｌｓ｜がノイズ許容値αを超えていても、ノイズ補正閾値β以下（α＜｜Ｌ−Ｌｓ｜≦β）であるときは、補正するべきかどうかの判断が難しい。そのため、ノイズが含まれているセンサ出力値を特定するための演算に時間がかかり、図３に示したソフト制御部４０への負荷が大きくなる。そこで、この場合には補正を行わず、そのときのセンサ出力値をいずれも不採用とし、位置算出に用いないこととする。
このようにすれば、ノイズの補正方法の判別を間単にすることができる。
このノイズ補正閾値βも、制御部２６内のメモリに予め設定されているが、ユーザがオペレーションユニット２７から選択又は変更できるようにしてもよい。
また、上述の｜Ｌ−Ｌｓ｜＞β場合を｜Ｌ−Ｌｓ｜≧β（β以上）の場合とし、｜Ｌ−Ｌｓ≦βであるときを｜Ｌ−Ｌｓ｜＜β（β未満）であるときとしても均等である。
【００７９】
図１１は、ナビゲーションセンサのセンサ出力値の補正方法の説明図である。
（ａ）は、所定のサンプリング周期毎の各読み込みタイミングｔ１〜ｔ１０における、２個のセンサＳ０，Ｓ１のうちの１個のセンサ、例えばセンサＳ０のＸ方向の移動量を説明する模式図である。
この場合、図９で説明したセンサ出力値（ｄＸ、ｄＹ）は、ハンドヘルドプリンタ１０のＸ−Ｙ平面上の移動量と一致する。また、図９に示した２個のセンサＳ０，Ｓ１からの各出力値に基づいて算出したセンサ間の距離Ｌｓと、センサＳ０，Ｓ１間の取り付け距離Ｌとの差｜Ｌ−Ｌｓ｜により、ノイズの有無が判別されたものである。
【００８０】
図１１において、黒丸●は｜Ｌ−Ｌｓ｜が図１０に示したノイズ許容値以内の場合、すなわちノイズが含まれていないと判断した場合のセンサ出力値である。また、白丸〇は｜Ｌ−Ｌｓ｜がノイズ許容値を超えた場合、すなわちノイズが含まれていると判断した場合のセンサ出力値である。
（ｂ）〜（ｄ）によって、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたときのセンサ出力値の補正方法について説明する。
【００８１】
なお、図１０で説明したように、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたとき、２個のセンサＳ０，Ｓ１の各出力値（ｄＸ、ｄｙ）、（ｄｘ′，ｄｙ′）において、どの値にノイズがあるか不確かなときがある。また、ノイズを含む出力値を特定するための演算に時間がかかるため、ソフト制御部４０への負荷を軽減したいときもある。このような場合には、センサ出力値のノイズ補正を行わず、同一サンプリング時の２つのセンサＳ０，Ｓ１の出力値を全て不採用にして、位置算出に使用しないこともできる。
【００８２】
それによって、ソフト制御部４０への負荷を軽減しながら、ノイズによる影響を小さくして、位置情報の誤差を小さくすることができる。
あるいは、このような場合に、同一サンプリング時の２つのセンサＳ０，Ｓ１の出力値をいずれも（全て）補正するようにしてもよい。それによって、ソフト制御部４０への負荷を軽減しながら、ノイズによる影響を小さくして、位置情報の誤差をより小さくすることができる。その補正は、例えば次のようにして行うことができる。
【００８３】
（ｂ）に示す例では、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたときのセンサ出力値〇を、１つ前のサンプリング時の｜Ｌ−Ｌｓ｜がノイズ許容値以内のセンサ出力値●（破線の円で囲んで示す）と置き換えることによって補正する。１つ前のサンプリング時の｜Ｌ−Ｌｓ｜がノイズ許容値以内のセンサ出力値●でなかった場合は、その１つ前のサンプリング時の｜Ｌ−Ｌｓ｜がノイズ許容値以内のセンサ出力値と置き換える。
これを言い換えれば、図３におけるノイズ除去演算部４６が、ノイズが含まれていると判断した出力値を、それ以前のサンプリングでノイズが含まれていないと判断した直近の対応する出力値と置き換えて補正する。
これによって、ノイズが含まれていると判断した出力値を比較的簡単に補正することができる。
【００８４】
（ｃ）に示す例では、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたとき、所定回数のサンプリング（ｔ１〜ｔ１０）において、｜Ｌ−Ｌｓ｜がノイズ許容値以内となったセンサ出力値●の平均値（破線で示す）を算出する。そして、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたときのセンサ出力値〇を、その平均値と置き換えることによって補正する。
これを言い換えれば、図３におけるノイズ除去演算部４６が、ノイズが含まれていると判断した出力値を、所定回数のサンプリングにおいて、ノイズが含まれていないと判断した対応する出力値の平均値と置き換えて補正する。これによって、補正の精度を向上させることができる。
【００８５】
（ｄ）では、ハンドヘルドプリンタ１０の位置を算出するためのセンサ出力値のサンプル数は、所定回数ではなく可変（ｎ回）であること示している。
また、サンプリング周期を可変することができ、それによって、一定時間内でのサンプル数を可変することもできるので、ノイズ除去に必要なサンプル数を確保でき、位置情報の精度を維持することができる。
そのサンプリング周期は、記録（印刷）モードやデバイスの特性等によって変更できるようにして、記録精度やセンサの特性に合ったサンプリング周期を用いることができる。
【００８６】
図３に示したソフト制御部４０の位置算出回路４３が、ナビゲーションセンサ２５のサンプリング周期毎のセンサ出力値からハンドヘルドプリンタ１０の位置を算出する。その際、ナビゲーションセンサ２５であるセンサＳ０，Ｓ１の出力値を、ソフト制御部４０がリードするサンプリング周期及び回数を、上述したように変更して、適切なセンサ出力値を得ることが出来る。
【００８７】
例えば、印刷時のモードによる印刷の要求精度（６００ｄｐｉ、１２００ｄｐｉなど）や、ハンドヘルドプリンタの移動速度等に対応して、サンプリング周期及び回数の変更を行う。また、使用するナビゲーションセンサの性能によって、センサの画像分解能や処理速度が異なるので、使用するデバイスの特性によっても、サンプリング周期及び回数の変更を行うことができる。
【００８８】
図１２は、｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値が連続した場合のハンドヘルドプリンタの対処について説明するための図である。
図３に示したソフト制御部４０がサンプリング周期ごとに、ナビゲーションセンサ２５のセンサＳ０，Ｓ１からの出力値をリードする。その結果、何らかの原因で図１２に破線の楕円で囲んで示すように、前述した｜Ｌ−Ｌｓ｜がノイズ許容値を超え、ノイズが含まれていると判断された出力値が所定回数以上連続して発生する場合がある。
【００８９】
このようなときには、図３に示した制御部２６は、オペレーションユニット２７のディスプレイへの表示やＬＥＤの点灯により、ユーザに異変（異常）を通知する機能を備えている。また、制御部２６は、このようなときに、ユーザに異変を通知すると共に、ハンドヘルドプリンタ１０の印字（記録動作）を停止させる機能も備えるのが望ましい。この機能は、ユーザがオペレーションユニット２７を選択又は変更できるようにしてもよい。これによって、ユーザビリティが向上する。
【００９０】
図１３は、｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値から平均値を算出して、ノイズの有無を判断する閾値を説明するための図である。
この図によって、前述した｜Ｌ−Ｌｓ｜がノイズ許容値を超えたとき、同一サンプリング時の２つのセンサＳ０，Ｓ１の各出力値（ｄＸ、ｄｙ）、（ｄｘ′，ｄｙ′）のどこにノイズが含まれているかを判別する方法の一例を説明する。
そのために、所定回数のサンプリングにおいて、｜Ｌ−Ｌｓ｜がノイズ許容値を超えた、図１３の（ａ）における破線の楕円内に示す対応する出力値〇の平均値を算出して閾値とする。
そして、（ｂ）に破線で示す平均値を超えるセンサ出力値〇がノイズを含むと判断し、平均値以下のセンサ出力値はノイズを含まないと判断する。
【００９１】
この判断を、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたときの各センサの各出力値（ｄＸ、ｄｙ）、（ｄｘ′，ｄｙ′）についてそれぞれ判断すれば、どのセンサのどの方向（Ｘ，Ｙ）の出力値がノイズを含んでいるのかを判断することができる。
これにより、ノイズを含んでいる出力値を特定してそれだけを補正し、それ以外の出力値はそのまま採用することができるため、実際のハンドヘルドプリンタ１０の移動量とセンサ出力値との誤差を小さくすることが出来る。
【００９２】
図１４は、同一サンプリング時の２つのセンサの各出力値の内で、１つだけノイズを含むときの補正方法を説明するための図である。この図１４においては、センサＳ０のＸ方向の出力値を●で、センサＳ１のＹ方向の出力値を○で示している。
前述した｜Ｌ−Ｌｓ｜がノイズ許容値を超えたとき、同一サンプリング時のセンサＳ０の出力値（ｄｘ，ｄｙ）とセンサＳ１の出力値（ｄｘ′，ｄｙ′）に対して、１つだけ明らかにノイズを含むと判断したとき、センサ間の取り付け距離Ｌを用いて補正を行う。
【００９３】
２つのセンサＳ０，Ｓ１からの出力値（ｘ，ｙ）の一方だけにノイズを含むことが分かっている場合には、それらに基づいて算出されるセンサ間の距離Ｌｓと、センサ間の取り付け距離Ｌとの数４の関係式を用いて、ノイズが含まれていないセンサ出力値より、明らかにノイズが含まれているセンサ出力値を逆算することができる。
図１４の右側に示すように、明らかにノイズが含まれているセンサ出力値を、前述した数４の式に必要なセンサ出力値と取り付け距離Ｌの数値を代入することで算出できる。
これにより算出されたセンサ出力値を置き換えることによって補正を行えば、ノイズが含まれているセンサ出力値を正確に補正することができる。
この補正方法についても、補正するか否かをオペレーションユニット２７からユーザが選択できるようにして、ユーザビリティの向上を図ることができる。
【００９４】
図１５は、ナビゲーションセンサのセンサ出力値を用いた位置関数の説明図である。
図１５の左側は、ナビゲーションセンサ（センサＳ０又はＳ１）の出力値における、Ｘ方向及びＹ方向のサンプリング周期ごとの変化を示す。
右側は、前述した｜Ｌ−Ｌｓ｜がノイズ許容値以内のセンサ出力値を用いて、最小二乗法によって作成した回帰直線を破線で示す。
すなわち、所定回数分｜Ｌ−Ｌｓ｜がノイズ許容値以内のセンサ出力値を用いて、最小二乗法による回帰直線（曲線）を算出する。算出した位置関数より、所定回数時までの移動量を算出し、その補正位置情報を算出する。
【００９５】
図１６は、ナビゲーションセンサの位置情報を用いた位置関数によるノイズのズレ補正の説明図である。
図１６の左側は、図１５の右側と同様な破線で示す回帰直線による位置関数と、｜Ｌ−Ｌｓ｜がノイズ許容値を超えるセンサ出力値のズレの補正イメージを示す。
右側は、破線で示す回帰直線による位置関数により算出した、補正センサ出力値によるｔ１〜ｔ１０毎の移動量のイメージを示す。
【００９６】
図１６により、回帰直線を用いた位置関数を算出し、適切なセンサ出力値を得ることが出来る。そして、｜Ｌ−Ｌｓ｜がノイズ許容値を超えたセンサ出力値においても、真の値に近くなるようにズレを補正することが出来る。
また、この回帰直線による位置関数により、ｔ１〜ｔ１０での補正センサ出力値を得ることが出来る。その補正センサ出力値からｔ０からｔ１０までのΔＸ１〜ΔＸ１０、ΔＹ１〜ΔＹ１０の位置情報を得ることができ、ｔ０からｔ１０までのΔＸ、ΔＹの移動量の合計は数５のようになる。
【００９７】
【数５】
2016137621.tif 000007
【００９８】
位置算出手段である図３の位置算出回路４３は、このように、所定サンプリング回数に達したときに、それまでの各サンプリング時にノイズ除去演算部４６がノイズが含まれていないと判断した各出力値によって、最小二乗法を用いて位置関数を算出する。そして、その位置関数から補正された補正位置情報を算出し、その補正位置情報によって、基準点から所定サンプリング回数に達したときまでの記録ヘッド２８の移動量を算出して、その位置情報を決定することができる。
【００９９】
図１７は、この実施形態のハンドヘルドプリンタによる図１６等の補正及び算出方法を用いたノイズ除去と位置情報決定処理の流れを示すフローチャートである。
この処理は、図３に示したソフト制御部４０がＣＰＵ４１の制御によって実行する。
図１７のフローチャートでは、ナビゲーションセンサから出力値をリードしたのちにノイズ除去の説明を示している。また、基準となる位置情報から所定回数時までの移動量を求めるために、センサからの位置情報より最小二乗法で算出する位置関数と位置関数より得られる補正位置関数の算出までを示している。
【０１００】
ソフト制御部４０が、図１７の処理を開始すると、ステップＳ１１でタイミング生成回路５２に時間を計測させ、予め設定したリードタイミングになるのを待つ。そして、リードタイミングになるとステップＳ１２へ進んで、ナビゲーションセンサ２５のセンサＳ０，Ｓ１から出力値をリードする。
次いで、ソフト制御部４０はステップＳ１３で、２つのセンサＳ０，Ｓ１間の距離Ｌｓを算出する。そして、ステップＳ１４で、算出した距離Ｌｓと２つのセンサＳ０，Ｓ１の取り付け距離Ｌとの差｜Ｌ−Ｌｓ｜が許容値以内であるか否かを判断する。
【０１０１】
その結果、許容値以内であれば、ソフト制御部４０はリードしたセンサ出力値にノイズは含まれていないものし、ステップＳ１６でセンサ出力値と補正が不要なことを記憶して、ステップＳ１８へ進む。許容値以内でなければ（許容値を超えていれば）、リードしたセンサ出力値のどこかにノイズが含まれているものとしてステップＳ１５でセンサ出力値を補正するか否かを閾値と比較して判断する。
【０１０２】
その結果、補正すると判断した場合は、ステップＳ１６でセンサ出力値と補正が必要なことを記憶して、ステップＳ１８へ進む。出力値を補正しないと判断した場合は、ステップＳ１７でそのセンサ出力値を不採用として、ステップＳ１８へ進む。
ソフト制御部４０は、ステップＳ１８で所定回数であるか否かを判断し、所定回数になるまで、ステップＳ１１へ戻って上述の処理を繰り返す。
【０１０３】
テップＳ１８で所定回数であると判断すると、ステップＳ１９で許容値以内のセンサ出力値によって最小二乗法（回帰直線）を用いて位置関数を算出する。そして、ステップＳ２０で、ステップＳ１９で算出した位置関数により、補正が必要なセンサ出力値に対して補正された位置情報を算出し、センサ出力値を補正する。
その後、ソフト制御部４０はステップＳ２１で、補正位置情報によって、基準点から所定サンプリング回数に達したときまでの記録ヘッド２８の移動量を加算して算出する。
【０１０４】
次いで、ステップＳ２２で、その算出した移動量によって記録ヘッド２８の位置情報を決定し、その位置情報をメモリに格納する。そして、この処理を終了するが、再びＳＴＡＲＴへ戻って、上述の処理を繰り返す。
ノイズを含むセンサ出力値の他の判別方法や補正方法を用いる場合も、ソフト制御部４０がこれを一部変更した処理を実行することによって、実施することができる。
【０１０５】
以上、この発明の各実施形態について説明してきたが、その実施形態の各部の具体的な構成や処理の内容等は、そこに記載したものに限るものではない。
また、この発明は上述した各実施形態に限定されるものではなく、特許請求の範囲の各請求項に記載された技術的特徴を有する以外は、何ら限定されるものではないことは言うまでもない。
さらに、以上説明してきた各実施形態の構成例、動作例及び変形例等は、適宜変更又は追加したり一部を削除してもよく、相互に矛盾しない限り任意に組み合わせて実施することも可能であることは勿論である。
【符号の説明】
【０１０６】
１０：ハンドヘルドプリンタ（ハンドヘルド記録装置）    
１１：スマートデバイス（ホスト装置）    １２：記録媒体    １３：手    
１４：画像    １８：ノズル    ２０：電源    ２１：電源回路    
２２：通信インタフェース（ＩＦ）    ２３：ＲＯＭ  ２４：ＤＲＡＭ  
２５，Ｓ０，Ｓ１：ナビゲーションセンサ（センサ）    ２６：制御部    
２７：オペレーションユニット（ＯＰＵ）    ２８：記録ヘッド    
２９：記録ヘッド駆動回路    
３０：ホストＩＦ    ３１：イメージプロセッサ    ３２：ＬＥＤドライバ
３３：ＬＥＤ    ３４，３５：レンズ    ３６：イメージアレイ
４０：ソフト制御部    ４１：ＣＰＵ    ４２：メモリコントローラ    
４３：位置算出回路    ４４：ＲＯＭコントローラ    ４５：ソフト制御部のバス    
４６：ノイズ除去演算部    ５０：制御ＩＣ    ５１：ナビゲーションセンサＩ／Ｆ  
５２：タイミング生成回路    ５３：記録ヘッド制御回路    ５４：イメージＲＡＭ  
５５：ＤＭＡＣ    ５６：回転器    ５７：割り込み回路    ５８：制御ＩＣのバス
【先行技術文献】
【特許文献】
【０１０７】
【特許文献１】特表２０１０−５２００８７号公報
【図２】
2016137621.tif 000008
【図３】
2016137621.tif 000009
【図４】
2016137621.tif 000010
【図６】
2016137621.tif 000011
【図７】
2016137621.tif 000012
【図９】
2016137621.tif 000013
【図１０】
2016137621.tif 000014
【図１１】
2016137621.tif 000015
【図１５】
2016137621.tif 000016
【図１６】
2016137621.tif 000017
【図１７】
2016137621.tif 000018
【図１】
2016137621.tif 000019
【図５】
2016137621.tif 000020
【図８】
2016137621.tif 000021
【図１２】
2016137621.tif 000022
【図１３】
2016137621.tif 000023
【図１４】
2016137621.tif 000024