(57)【要約】【課題】対象物上のハンディ装置の移動量を検出する位置検出手段の検出値の急峻な変化を平滑化するとともに、移動域全体における平滑化の悪影響を抑制する。【解決手段】対象物１２に対して移動させて使用され、位置を検出して移動量を検出する位置検出手段３０が搭載されたハンディ装置２０に搭載される位置情報調整装置５１０であって、位置検出手段３０の検出値を、急峻な変化がないかどうか監視する検出値監視部７１と、検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を設定する代替値設定部７２と、今回の検出値と置き換えた代替値との差分の一部を利用して、今回の代替値及び次回以降の検出値を調整する誤差調整部７６と、を有する。【選択図】図１５
2020124824.tif 000002
【特許請求の範囲】
【請求項１】
対象物に対して移動させて使用され、位置を検出して移動量を検出する位置検出手段が搭載されたハンディ装置に搭載される位置情報調整装置であって、
前記位置検出手段の検出値を、急峻な変化がないかどうか監視する検出値監視部と、
前記検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を設定する代替値設定部と、
今回の検出値と置き換えた代替値との差分の一部を利用して、今回の代替値及び次回以降の検出値を調整する誤差調整部と、を有する
位置情報調整装置。
【請求項２】
前記誤差調整部は、
前記検出値が急峻な変化をする検出時の、今回の前記差分の一部を誤差拡散量として、前記代替値に加算した値を出力値として出力し、前記差分から前記誤差拡散量を減算して誤差として記憶し、
次回以降の検出の際に検出値が急峻な変化をしない場合、記憶されている誤差の少なくとも一部をその回の検出値に加算した値を出力値として出力し、前記記憶されている誤差からその回使用した誤差拡散量を減算して蓄積誤差として記憶し、
次回以降の検出の際に検出値が急峻な変化をする場合、前記記憶されている誤差にその回の検出値と置き換えた代替値との差分を加算して誤差積算値とし、該誤差積算値の少なくとも一部を誤差拡散量として前記代替値に加算し、前記誤差積算値からその回使用した誤差拡散量を減算して、蓄積誤差として記憶する
請求項１に記載の位置情報調整装置。
【請求項３】
検出値が急峻な変化をする検出の後、検出値が急峻な変化をしない検出が連続する場合、前記誤差調整部は、蓄積誤差が0になるまで、記憶されている蓄積誤差の少なくとも一部を誤差拡散量として検出値に加算し続ける
請求項２に記載の位置情報調整装置。
【請求項４】
検出値が急峻な変化をする検出時及び、その後の検出値が急峻な変化をしない検出時に、検出値が急峻な変化をする検出時の前記誤差積算値に一定割合を乗算した算出値、及び検出値が急峻な変化をしない検出時に記憶されている蓄積誤差に一定割合を乗算した算出値を算出し、
前記算出値が一定値に到達するまで、前記誤差調整部において、代替値及び検出値に加算する誤差拡散量は、前記算出値である
請求項３に記載の位置情報調整装置。
【請求項５】
検出値が急峻な変化をする検出時及び、その後の検出値が急峻な変化をしない検出時に、検出値が急峻な変化をする検出時の前記誤差積算値に一定割合を乗算した算出値、及び検出値が急峻な変化をしない検出時に記憶されている蓄積誤差に、所定の定数、及び前記ハンディ装置の走査速度を乗算した算出値を算出し、
前記算出値が一定値に到達するまで、前記誤差調整部において、代替値及び検出値に加算する誤差拡散量は、前記算出値である
請求項３に記載の位置情報調整装置。
【請求項６】
検出値が急峻な変化をする検出の後の、検出値が急峻な変化をしない検出が連続する際に、前記記憶されている蓄積誤差が一定値に到達するまで、前記記憶されている蓄積誤差に一定割合を乗算した算出値を算出し、
前記算出値が前記一定値より小さくなると、前記誤差調整部において、検出値に加算する誤差拡散量は、前記一定値である
請求項３に記載の位置情報調整装置。
【請求項７】
検出値が急峻な変化をする検出の後の、検出値が急峻な変化をしない検出が連続する際に、
前記記憶されている蓄積誤差が一定値より小さくなると、前記誤差調整部において、検出値に加算する誤差拡散量は、前記記憶されている蓄積誤差である
請求項３に記載の位置情報調整装置。
【請求項８】
前記検出値監視部は、前記位置検出手段の検出値が前記急峻な変化をするかどうかを、今回の検出値と、過去の複数回の検出値の平均値の差分が閾値を超えるかどうかで判断し、
前記代替値設定部は、前記代替値として、前記位置検出手段の検出値が前記急峻な変化した検出値を、過去の複数回の検出値の平均値に置き換える
請求項１乃至７のいずれか一項に記載の位置情報調整装置。
【請求項９】
前記検出値監視部は、前記位置検出手段の検出値が前記急峻な変化をするかどうかを、今回の検出値と、過去のサンプルデータから補間演算で得られた値との差分が閾値を超えるかどうかで判断し、
前記代替値設定部は、前記代替値として、前記位置検出手段の検出値が前記急峻な変化した検出値を、過去のサンプルデータから補間演算で得られた値に置き換える
請求項１乃至６のいずれか一項に記載の位置情報調整装置。
【請求項１０】
前記位置検出手段の検出値に対して、前記検出値監視部における検出値監視、前記代替値設定部における代替値設定、前記誤差調整部による誤差拡散、及びフィルター処理を実施し、第１の位置出力情報を出力する第１の処理と、
前記位置検出手段の検出値に対して、フィルター処理を実施して第２の位置出力信号を出力する第２の処理と、
を並列で実行しており、
前記第１の位置出力情報又は前記第２の位置出力信号を混合して出力する、出力確定部を備える
請求項１乃至９のいずれか一項に記載の位置情報調整装置。
【請求項１１】
前記ハンディ装置が移動する速度を検出し、速度閾値と比較して判定する速度判定部を有し、
前記出力確定部は、前記速度の判定結果によって、前記検出値監視部、前記代替値設定部、前記誤差調整部を実施する前記第１の位置出力情報の割合を増減する
請求項１０に記載の位置情報調整装置。
【請求項１２】
前記誤差調整部は、今回の検出値と、置き換えた代替値との差分を誤差として積算し、
今回検出時までに積算された誤差積算値と蓄積閾値との大小によって、次回以降の前記検出値監視部、前記代替値設定部、前記誤差調整部を実施する前記第１の位置出力情報の割合を、増減する
請求項１０に記載の位置情報調整装置。
【請求項１３】
対象物に対して移動させて使用されるハンディ型液滴吐出装置であって、
位置を検出することでハンディ型液滴吐出装置の移動量を検出する位置検出手段と、
請求項１乃至１２のいずれか一項に記載の位置情報調整装置と、
複数のノズルを列設し、前記対象物に対して液体を吐出する記録ヘッドと、
外部機器から画像データを受信するデータ受信部と、を備える
ハンディ型液滴吐出装置。
【請求項１４】
前記位置検出手段と通信して検出値を取得し、前記記録ヘッドを制御する制御手段と、を備え、
前記位置情報調整装置の前記検出値監視部は、前記位置検出手段の処理周期と、前記制御手段の処理周期の不一致に起因する、前記検出値の急峻な変化を検出する
請求項１３に記載のハンディ型液滴吐出装置。
【請求項１５】
対象物に対して移動させて使用され、位置を検出することで移動量を検出する位置検出手段が搭載されたハンディ装置における位置情報調整方法であって、
前記位置検出手段の検出値を、急峻な変化がないかどうか監視する検出値監視ステップと、
前記検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を設定する代替値設定ステップと、
今回の検出値と置き換えた代替値との差分の一部を利用して、今回の代替値及び次回以降の検出値を調整する誤差調整ステップと、を有する
位置情報調整方法。
【請求項１６】
対象物に対して移動させて使用され、位置を検出することで移動量を検出する位置検出手段が搭載されたハンディ装置における位置情報調整プログラムであって、
前記位置検出手段の検出値を、急峻な変化がないかどうか監視する検出値監視処理と、
前記検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を設定する代替値設定処理と、
今回の検出値と置き換えた代替値との差分の一部を利用して、今回の代替値及び次回以降の検出値を調整する誤差調整処理と、をコンピュータに実行させる
位置情報調整プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハンディ装置に搭載される位置情報調整装置、該位置情報調整装置とナビゲーションセンサを含むハンディ型液滴吐出装置、ハンディ装置における位置情報調整方法、及びハンディ装置における位置情報調整プログラムに関する。
【背景技術】
【０００２】
昨今、ノートＰＣの小型化、スマートデバイスの急激な普及により、プリンタにおいても、「小型化・携帯化」が大きな要望の一つとして挙げられている。そのため、紙搬送システムを削除した機構で、紙面上を人の手で走査しながらインクを塗布する、ハンディモバイルプリンタ（ハンドヘルドプリンタともいう）が既に知られている（例えば、特許文献１）。
【０００３】
ハンディモバイルプリンタは、通信機能を持つ端末（例えばスマートデバイスやPC等）から画像データを受信し、印刷媒体（例えばノートや定型用紙）上を平面上で自由に走査し、即ち、フリーハンド走査し、画像を形成する。
【０００４】
このように自由に走査するハンディ装置であるハンディモバイルプリンタにて画像を形成するためには、現在の位置情報を検出する必要があり、その位置検出手段としてナビゲーションセンサを用いる方式がある。このセンサの性能は印刷品質に大きな影響を与える。
【０００５】
しかし、今までのハンディモバイルプリンタは、ナビゲーションセンサ出力の急峻な変化、例えば、ノイズや、センサとCPU等の制御手段との処理周期の不一致による蓄積誤差に起因による変化により、画質が劣化するという問題があった。
【０００６】
そこで、特許文献２には、正しい位置情報を取得する技術として、ナビゲーションセンサ出力の急峻な変化を捉え、ナビゲーションセンサのノイズを除去する信号処理が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献２では、制御手段との処理周期の不一致による蓄積誤差に起因するナビゲーションセンサ出力の急峻な変化による画質劣化という問題は解消できていない。また、検出時点というミクロの視点で検知したノイズを削除するように平滑化すると、その削除したノイズ分の差分が蓄積することで、マクロの視点となる移動域全体において大きな検出ズレが発生してしまうおそれがある。
【０００８】
そこで、本発明は上記事情に鑑み、対象物上のハンディ装置の移動量を検出する位置検出手段の検出値の急峻な変化を平滑化するとともに、移動域全体における平滑化の悪影響を抑制する、位置調整装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明の一態様では、
対象物に対して移動させて使用され、位置を検出して移動量を検出する位置検出手段が搭載されたハンディ装置に搭載される位置情報調整装置であって、
前記位置検出手段の検出値を、急峻な変化がないかどうか監視する検出値監視部と、
前記検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を設定する代替値設定部と、
今回の検出値と置き換えた代替値との差分の一部を利用して、今回の代替値及び次回以降の検出値を調整する誤差調整部と、を有する、
位置情報調整装置、を提供する。
【発明の効果】
【００１０】
一態様によれば、位置調整装置において、対象物上のハンディ装置の移動量を検出する位置検出手段の検出値の急峻な変化を平滑化するとともに、移動域全体における平滑化の悪影響を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明のハンディ装置の外観斜視図と底面図。
【図２】本発明によるハンディ装置の一実施形態であるハンディモバイルプリンタを含む記録システムの構成例を示す図。
【図３】図１におけるハンディモバイルプリンタのハードウェア構成を示すブロック図。
【図４】図３における制御部の構成例を示すブロック図。
【図５】ジャイロセンサが角速度を検出する原理を説明する図の一例。
【図６】ナビゲーションセンサのハードウェア構成の構成例を示す図。
【図７】ナビゲーションセンサの移動量の検出方法を説明するための図。
【図８】図２のハンディモバイルプリンタの平面図。
【図９】図２のハンディモバイルプリンタにおける座標系と位置の算出方法を説明するための図。
【図１０】外部機器とＨＭＰの動作手順の一例を説明するフローチャート。
【図１１】ナビゲーションセンサの処理周期と検出値について説明する図であり（ａ）はナビセンサ処理周期とＦＰＧＡリードタイミングが同期している場合の図、（ｂ）はナビセンサ処理周期とＦＰＧＡリードタイミングが非同期の場合の図。
【図１２】ナビセンサ処理周期とＦＰＧＡリードタイミングが非同期の場合のナビゲーションセンサの検出波形であって（ａ）は全体図、（ｂ）は拡大図。
【図１３】本発明の位置情報調整装置を含む位置情報出力部の一例のブロック図。
【図１４】本発明の発明構成例に対応するハンディモバイルプリンタの移動速度の速度制御のフローチャート。
【図１５】図１３に示すスパイク波形除去・拡散部の第１の構成例の機能ブロック図。
【図１６】図１５のスパイク波形除去・拡散部におけるスパイク波形除去・拡散動作のフローチャート。
【図１７】図１６の誤差拡散値を設定する処理の詳細フローチャート。
【図１８】（ａ）本発明の平均値を利用したスパイク波形除去の波形図と、（ｂ）誤差拡散の波形図。
【図１９】図１３に示すスパイク波形除去・拡散部の第２の構成例の機能ブロック図。
【図２０】図１３に示す出力確定部の機能ブロック図。
【図２１】図２０の出力確定部における処理の詳細フローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明を実施するための形態について説明する。下記、各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
【００１３】
本発明は、ハンディ装置に搭載される位置情報調整装置、該位置情報調整装置とナビゲーションセンサを含むハンディ型液滴吐出装置、ハンディ装置における位置情報調整方法、及びハンディ装置における位置情報調整プログラムに関する。
【００１４】
ここで、ハンディ装置とは、位置検出手段及び位置調整装置が搭載された被搭載物をいう。例えば、ハンディモバイルプリンタ（ハンドヘルドプリンタともいう）であるハンディ型液滴吐出装置が、ハンディ装置（ハンディ型装置、ハンドヘルド装置）の一例である。
【００１５】
＜ハンディモバイルプリンタ＞
まず、図１を用いて本実施形態の、ハンディ装置の一例であるハンディモバイルプリンタ（以下、ＨＭＰと示す）の概略的な特徴を説明する。
【００１６】
図１は、本実施形態のＨＭＰ２０の構成の概略を示す図である。図１において、（ａ）は、ＨＭＰ２０の外観斜視図、（ｂ）はＨＭＰ２０の下面図である。
【００１７】
図１（ａ）に示すように、ＨＭＰ２０は、小型の略立方体であって、図２に示すように片手で把持可能な大きさである。
【００１８】
図１（ｂ）に示すように、ＨＭＰ２０の吐出面である底面には、インクジェット（下記、ＩＪと称する）記録ヘッド２４、センサ部Ｓｏを含むナビゲーションセンサ３０、及び、１つのジャイロセンサ３１が、設けられている。なお、ＨＭＰ２０は、図１（ｂ）に示す吐出面を、下方向にむけて使用する使用態様に加えて、横方向や上方向に向けて使用することもできる。
【００１９】
ＩＪ記録ヘッド２４には、複数のノズルが並んだノズル列６１が形成されている。なお、図１（ｂ）ではノズルは１列に列設されている例を示しているが、複数の列が設けられていてもよい。あるいはノズル列は、長手方向に置いて、千鳥状に配置されていてもよい。
【００２０】
＜ＨＭＰ２０による画像形成＞
図２は、ＨＭＰ２０による画像形成を模式的に示す図の一例である。ＨＭＰ２０には、例えばスマートフォンやＰＣ（Personal Computer）等の外部機器である画像データ出力機１１から画像データが送信される。ユーザはＨＭＰ２０を把持して、印刷媒体１２（例えば定形用紙やノートなど）から浮き上がらないようにフリーハンドで走査させる。
【００２１】
ＨＭＰ２０は後述するようにナビゲーションセンサＳ０とジャイロセンサ３１で位置を検出し、ＨＭＰ２０が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので（インクの吐出の対象とならないので）、ユーザは印刷媒体１２上で任意の方向にＨＭＰ２０を走査させることで画像を形成できる。
【００２２】
印刷媒体１２からＨＭＰ２０が浮き上がらないことが好ましいのは、ナビゲーションセンサＳ０が印刷媒体１２からの反射光を利用して移動量を検出するためである。印刷媒体１２からＨＭＰ２０が浮き上がると反射光を検出できなくなり移動量を検出できない。印刷媒体１２からナビゲーションセンサＳ０がはみ出した場合も、印刷媒体１２の厚みにより反射光を検出できなくなったり、検出できても位置がずれたりする場合がある。このため、ナビゲーションセンサＳ０は印刷媒体１２上で走査されることが好ましく、上記のようにノズル６１とナビゲーションセンサＳ０が印刷媒体１２上に共に存在することが好ましい。
【００２３】
ＨＭＰ２０を印刷媒体１２上で走査させるとは、ＨＭＰ２０の吐出面の少なくとも一部を、印刷媒体１２に接触した状態で移動させることを意味する。なお、図２では、ＨＭＰ２０が走査する対象物上の移動面として机等の平板の上面に載置された印刷媒体１２の例を示しているが、印刷媒体１２は、壁や天井に貼りつけたポスター等であってもよく、ＨＭＰ２０は、図１（ａ）に示した吐出面（底面）を横にした状態や、上にした状態でもインクを吐出可能である。
【００２４】
また、ＨＭＰ２０が走査される対象物の移動面は、ＨＭＰ２０が移動できる面であればよく、平面の他、曲面も含まれる。対象物の移動面として印刷媒体１２を例に挙げて示しているが、これには限られない。
【００２５】
ここで、ＨＭＰ２０はハンディ型のため、プリントアウトの際に印刷媒体１２は、プリンタ内部を通る必要がない。そのため、印刷媒体１２は、例えば、製版された本やノート、内容物を包んだ状態の包装紙、貼付されたポスター等の様々な形状の紙媒体を適用できる。さらに、ＨＭＰ２０で使用する液体の種類を選択することで、印刷媒体１２として、鞄等の皮製品、Ｔシャツ等の布、家具等の木製品、プラスティック製品、人体や動物の皮膚（ボディペイント）、爪等も適用可能である。
【００２６】
＜ＨＭＰ２０の構成例＞
図３は、ＨＭＰ２０のハードウェア構成図の一例を示す。ＨＭＰ２０は、印刷媒体１２に画像を形成する液滴吐出装置又は画像形成装置の一例である。ＨＭＰ２０は、制御部２５によって全体の動作が制御され、制御部２５には通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ナビゲーションセンサ３０、及びジャイロセンサ３１が電気的に接続されている。また、ＨＭＰ２０は電力により駆動されるため、電源２２と電源回路２１を有している。電源回路２１が生成する電力は、点線２２ａで示す配線などにより、通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ＩＪ記録ヘッド２４、制御部２５、ナビゲーションセンサ３０、及び、ジャイロセンサ３１に供給されている。
【００２７】
電源２２としては主に電池（バッテリー）が利用される。太陽電池や商用電源（交流電源）、燃料電池等が用いられてもよい。電源回路２１は、電源２２が供給する電力をＨＭＰ２０の各部に分配する。また、電源２２の電圧を各部に適した電圧に降圧や昇圧する。また、電源２２が充電可能な電池である場合、電源回路２１は交流電源の接続を検出して電池の充電回路に接続し、電源２２の充電を可能にする。
【００２８】
通信Ｉ/Ｆ２７は、スマートフォンやＰＣ（Personal  Computer）等の画像データ出力機１１から画像データの受信等を行う、データ受信部である。通信Ｉ/Ｆ２７は例えば無線ＬＡＮ、Bluetooth（登録商標）、ＮＦＣ（Near  Field  Communication）、赤外線、３Ｇ（携帯電話）、又は、ＬＴＥ（Long  Term  Evolution）等の通信規格に対応した通信装置である。また、このような無線通信の他、有線ＬＡＮ、ＵＳＢケーブルなどを用いた有線通信に対応した通信装置であってもよい。
【００２９】
ＲＯＭ２８は、ＨＭＰ２０のハードウェア制御を行うファームウェアや、ＩＪ記録ヘッド２４の駆動波形データ（液滴を吐出するための電圧変化を規定するデータ）や、ＨＭＰ２０の初期設定データ等を格納している。
【００３０】
ＤＲＡＭ２９は通信Ｉ/Ｆ２７が受信した画像データを記憶したり、ＲＯＭ２８から展開されたファームウェアを格納したりするために使用される。したがって、ＣＰＵ３３がファームウェアを実行する際のワークメモリとして使用される。
【００３１】
ナビゲーションセンサ３０は、所定のサイクル時間ごとにＨＭＰ２０の移動量、特に印刷媒体１２に対して平行な縦横の動きを検出するセンサである。ナビゲーションセンサ３０は、例えば、発光ダイオード（ＬＥＤ）やレーザ等の光源と、印刷媒体１２を撮像する撮像センサを有している。ＨＭＰ２０が印刷媒体１２上を走査されると、印刷媒体１２の微小なエッジが次々に検出され（撮像され）エッジ間の距離を解析することで移動量が得られる。
【００３２】
図１では、ナビゲーションセンサ３０のセンサ部Ｓｏは、ＨＭＰ２０の底面に１つ搭載されている例を示しているが、ナビゲーションセンサ３０は、２つ以上であってもよい。
【００３３】
なお、ナビゲーションセンサ３０として、さらに多軸の加速度センサを用いてもよく、ＨＭＰ２０は加速度センサのみでＨＭＰ２０の移動量を検出してもよい。
【００３４】
ここで、物体の姿勢とは、剛体の６つの自由度のうち回転角を表す自由度（剛体の重心を通って直交する３つの軸をそれぞれ中心とする回転角）をいう。このうち、ナビゲーションセンサ３０が検出する、平面における物体の姿勢は、平面に垂直な軸を中心とする回転角で表される。
【００３５】
ジャイロセンサ３１は、印刷媒体１２に垂直な軸を中心にＨＭＰ２０が回転した際の角速度を検出するセンサである。詳細は図５とともに後述する。
【００３６】
例えば、封筒に宛名書きを印刷したり、まとまった文章をノート等にプリントアウトする場合、あるいは、タブレットに作画した絵やパワーポイントさ作成するプリントアウトする場合は、ＨＭＰを改行させながら移動することが想定されるため、改行を検知する必要がある。
【００３７】
ここで、改行をする際に、例えば、同じ方向に繰り返し走査させたり、あるいは、往路と復路とで少しずつずらしながら往復走査させたりする場合が想定しうる。あるいは、急いでプリントしたい場合などは、印刷媒体１２上で、ＨＭＰ２０を振るように、斜めにずらしながら移動させて画像を出力することも想定しうる。
【００３８】
上述のように改行、あるいは斜めにずらしながら移動する際、使用者は、手首の捻りにより、３次元に移動することがありうるため、縦横以外の空間的な動きがジャイロセンサ３１で検出する。
【００３９】
ＯＰＵ（Operation  panel  Unit）２６は、ＨＭＰ２０の状態を表示するＬＥＤ、ユーザがＨＭＰ２０に画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
【００４０】
ＩＪ記録ヘッド駆動回路２３は上記の駆動波形データを用いて、ＩＪ記録ヘッド２４を駆動するための駆動波形（電圧）を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
【００４１】
ＩＪ記録ヘッド２４は、インクを吐出するためのヘッドである。図ではＣＭＹＫの４色のインクを吐出可能になっているが、単色でもよく５色以上の吐出が可能でもよい。各色ごとに一列（二列以上でもよい）に列状に並んだ複数のインク吐出用のノズル６１（吐出部）が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。ＩＪ記録ヘッド２４は、ノズル６１から液体を吐出・噴射する機能部品である。
【００４２】
吐出される液体は、ＩＪ記録ヘッド２４から吐出可能な粘度や表面張力を有するものであればよく、特に限定されないが、常温、常圧下において、または加熱、冷却により粘度が３０〔mPa・s〕以下となるものであることが好ましい。より具体的には、水や有機溶媒等の溶媒、染料や顔料等の着色剤、重合性化合物、樹脂、界面活性剤等の機能性付与材料、ＤＮＡ、アミノ酸やたんぱく質、カルシウム等の生体適合材料、天然色素等の可食材料、などを含む溶液、懸濁液、エマルジョンなどであり、これらは例えば、インクジェット用インク、表面処理液、電子素子や発光素子の構成要素や電子回路レジストパターンの形成用液、３次元造形用材料液等の用途で用いることができる。
【００４３】
制御部２５はＣＰＵ３３を有しＨＭＰ２０の全体を制御する。制御部２５は、ナビゲーションセンサ３０により検出される移動量及びジャイロセンサ３１により検出される角速度を元に、ＩＪ記録ヘッド２４の各ノズルの位置、該位置に応じて形成する画像の決定、後述する吐出ノズル可否判定等を行う。下記、制御部２５についての詳細を説明する。
【００４４】
図４は、制御部２５の構成を説明する図の一例である。制御部２５はＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を有している。ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０はバス４６，４７を介して通信する。ＡＳＩＣ/ＦＰＧＡ４０はどちらの実装技術で設計されてもよいことを意味し、ＡＳＩＣ/ＦＰＧＡ４０以外の他の実装技術で構成されてよい。また、ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を別のチップにすることなく１つのチップや基板で構成してもよい。あるいは、３つ以上のチップや基板で実装してもよい。
【００４５】
ＳｏＣ５０は、バス４７を介して接続されたＣＰＵ３３、位置算出回路３４、メモリＣＴＬ（コントローラ）３５、及び、ＲＯＭ ＣＴＬ（コントローラ）３６等の機能を有している。なお、ＳｏＣ５０が有する構成要素はこれらに限られない。
【００４６】
また、ＡＳＩＣ/ＦＰＧＡ４０は、バス４６を介して接続されたImage RAM３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、ＩＪ記録ヘッド制御部４４及びジャイロセンサＩ/Ｆ４５を有している。なお、ＡＳＩＣ/ＦＰＧＡ４０が有する構成要素はこれらに限られない。ＡＳＩＣ/ＦＰＧＡ４０は、制御手段として機能する。
【００４７】
ＣＰＵ３３は、ＲＯＭ２８からＤＲＡＭ２９に展開されたファームウェア（プログラム）などを実行し、ＳｏＣ５０内の位置算出回路３４、メモリＣＴＬ３５、及び、ＲＯＭ ＣＴＬ３６の動作を制御する。また、ＡＳＩＣ/ＦＰＧＡ４０内のImage RAM３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、ＩＪ記録ヘッド制御部４４及びジャイロセンサＩ/Ｆ４５等の動作を制御する。
【００４８】
位置算出回路３４は、ナビゲーションセンサ３０が検出するサンプリング周期ごとの移動量及びジャイロセンサ３１が検出するサンプリング周期ごとの角速度に基づいてＨＭＰ２０の位置（座標情報）を算出する。ＨＭＰ２０の位置とは、厳密にはノズル６１の位置であるが、ナビゲーションセンサ３０のある位置が分かればノズル６１の位置を算出できる。本実施例では、特に断らない限りナビゲーションセンサ３０の位置としてナビゲーションセンサＳ０の位置をいう。また、位置算出回路３４は目標吐出位置を算出する。なお、位置算出回路３４をＣＰＵ３３がソフト的に実現してもよい。
【００４９】
ナビゲーションセンサ３０の位置は、後述するように例えば所定の原点（画像形成が開始される時のＨＭＰ２０の初期位置）を基準に算出されている。また、位置算出回路３４は、過去の位置と最も新しい位置の差に基づいて移動方向や加速度を推定し、例えば次回の吐出タイミングにおけるナビゲーションセンサ３０の位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
【００５０】
メモリＣＴＬ３５は、ＤＲＡＭ２９とのインタフェースであり、ＤＲＡＭ２９に対しデータを要求し、取得したファームウェアをＣＰＵ３３に送出したり、取得した画像データをＡＳＩＣ/ＦＰＧＡ４０に送出したりする。
【００５１】
ＲＯＭ ＣＴＬ３６は、ＲＯＭ２８とのインタフェースであり、ＲＯＭ２８に対しデータを要求し、取得したデータをＣＰＵ３３やＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００５２】
回転器３９は、ＤＭＡＣ３８が取得した画像データを、インクを吐出するヘッド、ヘッド内のノズル位置、及び、取り付け誤差などによるヘッド傾きに応じて回転させる。ＤＭＡＣ３８は回転後の画像データをＩＪ記録ヘッド制御部４４へ出力する。
【００５３】
Image  RAM３７はＤＭＡＣ３８が取得した画像データを一時的に格納する。すなわち、ある程度の画像データがバッファリングされ、ＨＭＰ２０の位置に応じて読み出される。
【００５４】
ＩＪ記録ヘッド制御部４４は、画像データ（ビットマップデータ）にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データを変換する。これにより、画像データは吐出位置と点のサイズのデータとなる。ＩＪ記録ヘッド制御部４４は点のサイズに応じた制御信号をＩＪ記録ヘッド駆動回路２３に出力する。ＩＪ記録ヘッド駆動回路２３は上記のように制御信号に対応した駆動波形データを用いて、駆動波形（電圧）を生成する。
【００５５】
ナビゲーションセンサＩ/Ｆ４２は、ナビゲーションセンサ３０と通信し、ナビゲーションセンサ３０からの情報として移動量ΔＸ´、ΔＹ´（これらについては図７〜図９と共に後述する）を受信し、その値を内部レジスタに格納する。
【００５６】
印字/センサタイミング生成部４３は、ナビゲーションセンサＩ/Ｆ４２とジャイロセンサＩ/Ｆ４５が情報を読み取るタイミングを通知し、ＩＪ記録ヘッド制御部４４に駆動タイミングを通知する。情報を読み取るタイミングの周期はインクの吐出タイミングの周期よりも長い。ＩＪ記録ヘッド制御部４４は吐出ノズル可否判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出し、目標吐出位置がなければ吐出しないと判定する。
【００５７】
ジャイロセンサＩ/Ｆ４５は印字/センサタイミング生成部４３により生成されたタイミングになるとジャイロセンサ３１が検出する角速度を取得してその値をレジスタに格納する。
【００５８】
割込みコントローラ４１は、ナビゲーションセンサＩ/Ｆ４２がナビゲーションセンサ３０との通信が完了したことを検知して、ＳｏＣ５０へそれを通知するための割込み信号を出力する。ＣＰＵ３３はこの割込みにより、ナビゲーションセンサＩ/Ｆ４２が内部レジスタに記憶するΔＸ´、ΔＹ´を取得する。その他、エラー等のステータス通知機能も有する。ジャイロセンサＩ/Ｆ４５に関しても同様に、割込みコントローラ４１はＳｏＣ５０に対し、ジャイロセンサ３１との通信が終了したことを通知するための割込み信号を出力する。
【００５９】
＜ジャイロセンサ＞
図５は、ジャイロセンサ３１が角速度を検出する原理を説明する図の一例である。移動している物体に回転が加わると、物体の移動方向と回転軸の両方に直行する方向にコリオリ力が発生する。
【００６０】
物体を移動させるため、ジャイロセンサ３１ではＭＥＭＳ（Micro  Electro  Mechanical  Systems）素子を振動させることで速度ｖ（ベクトル）を発生させる。振動している質量ｍのＭＥＭＳ素子に外部から角速度ω（ベクトル）の回転が加わると、ＭＥＭＳ素子にコリオリ力が加わる。コリオリ力Ｆは以下のように表すことができる。
Ｆ＝−２ｍΩ×ｖ
なお、「×」はベクトルの外積を表し、上記のように物体の移動方向と回転軸に直交する方向がコリオリ力Ｆの方向である。ＭＥＭＳ素子は例えば櫛歯構造の電極を有しており、ジャイロセンサ３１はコリオリ力Ｆにより発生した変位を静電容量の変化として捉える。コリオリ力Ｆの信号はジャイロセンサ３１内で増幅されフィルタリングされた後、角速度に演算されて出力される。すなわち、Ｆ，ｍ、ｖが既知なので角速度ωを取り出すことができる。
【００６１】
また、図５では、ジャイロセンサ３１により印刷媒体１２における姿勢を検出すると説明したが、地磁気センサによって水平方向の姿勢（方位、浮き量）を検出してもよい。
【００６２】
＜ナビゲーションセンサ＞
図６は、ナビゲーションセンサのハードウェア構成の構成例を示す図である。ナビゲーションセンサ３０は、ホストＩ/Ｆ３０１、イメージプロセッサ３０２、ＬＥＤドライバ３０３、２つのレンズ３０４、３０６及び、イメージアレイ３０５を有する。ＬＥＤドライバ３０３は、ＬＥＤと制御回路が一体となっておりイメージプロセッサ３０２からの命令によりＬＥＤ光を照射する。イメージアレイ３０５は、レンズ３０４を介して印刷媒体１２からのＬＥＤ光の反射光を受光する。２つのレンズ３０４，３０６は、印刷媒体１２の表面に対して光学的に焦点が合うように設置されている。
【００６３】
イメージアレイ３０５は、ＬＥＤ光の波長に感度を有するフォトダイオードなどを有し、受光したＬＥＤ光からイメージデータを生成する。イメージプロセッサ３０２はイメージデータを取得して、イメージデータからナビゲーションセンサの移動距離（上記のΔＸ´、ΔＹ´）を算出する。イメージプロセッサ３０２は、算出した移動距離を、ホストＩ/Ｆ３０１を介して制御部２５へ出力する。
【００６４】
光源として使用される発光ダイオード（ＬＥＤ）は、表面が粗い印刷媒体１２、例えば紙を使用する場合に有用である。これは、表面が粗い場合、影が発生するため、その影を特徴部分として、Ｘ軸方向及びＹ軸方向の移動距離を正確に算出することが可能になるからである。一方、表面が滑らか、あるいは透明な印刷媒体１２に対しては、光源としてレーザ光を発生させる半導体レーザ(ＬＤ)を使用することができる。半導体レーザで、印刷媒体１２上に例えば縞模様等を形成することで特徴部分を作ることができ、それを基に正確に移動距離を算出することができるからである。
【００６５】
次に、図７を用いて、ナビゲーションセンサ３０の動作について説明する。図７はナビゲーションセンサ３０による移動量の検出方法を説明する図である。ＬＥＤドライバ３０３が照射した光は、レンズ３０６を介して印刷媒体１２の表面に照射される。印刷媒体１２の表面は、図７（ａ）に示すように様々な形状の微小な凹凸を有している。このため、様々な形の影が発生する。
【００６６】
イメージプロセッサ３０２は、予め決められたサンプリングタイミング毎に、レンズ３０４及びイメージアレイ３０５を介して反射光を受光し、イメージデータ３１０を取得する。図７（ｂ）に示すように生成したイメージデータ３１０を、イメージプロセッサ３０２は規定の分解能単位でマトリクス化する。すなわち、イメージデータ３１０を複数の矩形領域に分割する。そして、イメージプロセッサ３０２は、前回のサンプリングタイミングで得られたイメージデータ３１０と、今回のサンプリングタイミングで得られたイメージデータ３１０とを比較してイメージデータ３１０が移動した矩形領域の数を検出し、それを移動距離として算出する。図７（ｂ）で図示するΔＸ方向にＨＭＰ２０が移動したとする。ｔ＝０とｔ＝１のイメージデータ３１０を比較すると、右端にある形状が中央の形状と一致する。したがって、形状は−Ｘ方向に移動しているので、ＨＭＰ２０がＸ方向に一マス分移動したことが分かる。時刻ｔ＝１とｔ＝２についても同様である。
【００６７】
＜ＩＪ記録ヘッドにおけるノズル位置＞
次に、図８を用いて、ＩＪ記録ヘッド２４におけるノズル位置等について説明する。図８（ａ）は、ＨＭＰ２０の平面図の一例である。図８（ｂ）はＩＪ記録ヘッド２４のみを説明する図の一例である。図示されている面が印刷媒体１２に対向する面である。
【００６８】
本実施形態のＨＭＰ２０は、１つのナビゲーションセンサＳ０を有している。図８（ａ）のＳ１は、説明の便宜上、ナビゲーションセンサが２つある場合の設置位置を示す。ナビゲーションセンサ３０が２つある場合の、２つのナビゲーションセンサＳ０，Ｓ１の間の長さは距離Ｌである。距離Ｌは長いほどよい。これは、距離Ｌが長いほど検出可能な最小の回転角θが小さくなり、ＨＭＰ２０の位置の誤差が少なくなるからである。
【００６９】
ナビゲーションセンサ３０からＩＪ記録ヘッド２４までの距離はそれぞれ距離ａ、ｂである。距離ａと、距離ｂは等しくてもよいし、ゼロでもよい（ＩＪ記録ヘッド２４に接している）。また、ナビゲーションセンサ３０が１つだけの場合、ナビゲーションセンサＳ０はＩＪ記録ヘッド２４の周囲の任意の場所に配置される。したがって、図示するナビゲーションセンサＳ０の位置は一例である。ただし、ＩＪ記録ヘッド２４とナビゲーションセンサＳ０の距離が短いことでＨＭＰ２０の底面のサイズを削減しやすくなる。
【００７０】
図８（ｂ）に示すように、ＩＪ記録ヘッド２４の端から最初のノズル６１までの距離は距離ｄ、隣接するノズル間の距離は距離ｅである。ａ〜ｅの値はＲＯＭ２８などに予め記憶されている。
【００７１】
位置算出回路３４などがナビゲーションセンサＳ０の位置を算出すれば、距離ａ（距離ｂ）、距離ｄ及び距離ｅを用いて、位置算出回路３４はノズル６１の位置を算出できる。
【００７２】
＜印刷媒体１２におけるＨＭＰ２０の位置＞
図９は、ＨＭＰ２０の座標系と位置の算出方法を説明する図の一例である。本実施形態では、印刷媒体１２に水平な方向をＸ軸、垂直な方向をＹ軸に設定する。原点は画像形成が開始された際のナビゲーションセンサＳ０の位置である。
【００７３】
この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサＳ０は図９の座標軸（Ｘ´軸、Ｙ´軸）で移動量を出力する。すなわち、ノズル６１の配列方向をＹ´軸、Ｙ´軸に直交する方向をＸ´軸として移動量を出力する。
【００７４】
また、図９は、図２のハンディモバイルプリンタにおける座標系と位置の算出方法を説明するための図である。ここで、ジャイロセンサ３１で得られる角速度ωは、
【００７５】
【数１】
2020124824.tif 000003
であるから、サンプリング周期毎の角度Δθは、
【００７６】
【数２】
2020124824.tif 000004
となり、現在（時刻t=0〜N）の角度θは
【００７７】
【数３】
2020124824.tif 000005
となる。
得られたθ、dθを、以下の式（４）に代入し、X0'、Y0'の原点からの二次元座標を算出する。
【００７８】
【数４】
2020124824.tif 000006
【００７９】
このように、ナビゲーションセンサの座標を算出できれば、既存の演算フローに従い、予め機器のレイアウトが決定されている、メカ的（物理的）なナビゲーションセンサとノズルの位置関係より、各ノズルの座標を算出することができる。
【００８０】
＜動作手順＞
図１０は、画像データ出力機１１とＨＭＰ２０の動作手順を説明するフローチャートの一例である。まず、ユーザは画像データ出力機１１の電源ボタンを押下する（Ｕ１０１）。画像データ出力機１１はそれを受け付け、電池等から電源が供給されて起動する。
【００８１】
ユーザは画像データ出力機１１で出力したい画像を選択する（Ｕ１０２）。画像データ出力機１１は画像の選択を受け付ける。ワープロアプリケーションのようなソフトウェアの文書データが画像として選択されてもよいし、ＪＰＥＧなどの画像データが選択されてもよい。必要であればプリンタドライバが画像データ以外のデータを画像に変更してもよい。
【００８２】
ユーザは選択した画像をＨＭＰ２０で印刷する操作を行う（Ｕ１０３）。ＨＭＰ２０は印刷ジョブの実行の要求を受け付ける。印刷ジョブの要求により画像データがＨＭＰ２０へ送信される。
【００８３】
ユーザは、ＨＭＰ２０を持ち、印刷媒体１２（例えばノート）の上で初期位置を決定する（Ｕ１０４）。
【００８４】
そして、ユーザはＨＭＰ２０の印刷開始ボタンを押下する（Ｕ１０５）。ＨＭＰ２０は印刷開始ボタンの押下を受け付ける。
【００８５】
ユーザはＨＭＰ２０を印刷媒体１２の上で滑らせるように自由に走査する（Ｕ１０６）。
【００８６】
続いて、ＨＭＰ２０の動作を説明する。以下の動作はＣＰＵ３３がファームウェアを実行することで行われる。
【００８７】
ＨＭＰ２０も電源のＯＮにより起動する。ＨＭＰ２０のＣＰＵ３３は、ＨＭＰ２０に内蔵されている図３，４のハードウェア要素を初期化する（Ｓ１０１）。例えば、ナビゲーションセンサＩ/Ｆ４２やジャイロセンサＩ/Ｆ４５のレジスタを初期化したり、印字/センサタイミング生成部４３にタイミング値を設定したりする。また、ＨＭＰ２０と画像データ出力機１１との間の通信を確立する。
【００８８】
ＨＭＰ２０のＣＰＵ３３は初期化が完了したかどうかを判定し、完了していない場合はこの判定を繰り返す（Ｓ１０２）。
【００８９】
初期化が完了すると（Ｓ１０２のＹｅｓ）、ＨＭＰ２０のＣＰＵ３３は、ＯＰＵ２６の例えばＬＥＤ点灯によりユーザに印刷可能な状態であることを報知する（Ｓ１０３）。これにより、ユーザは印刷可能な状態であることを把握し、上記のように印刷ジョブの実行を要求する。
【００９０】
印刷ジョブの実行の要求により、ＨＭＰ２０の通信Ｉ/Ｆ２７は画像データ出力機１１から画像データの入力を受け付け、画像が入力された旨をＯＰＵ２６のＬＥＤを点滅させる等によりユーザに対し報知する（Ｓ１０４）。
【００９１】
ユーザが印刷媒体１２上でＨＭＰ２０の初期位置を決め印刷開始ボタンを押下すると、ＨＭＰ２０のＯＰＵ２６はこの操作を受け付け、ＣＰＵ３３がナビゲーションセンサＩ/Ｆ４２に位置（移動量）を読み取らせ（リード）、ＣＰＵ３３はナビゲーションセンサＩ/Ｆ４２から移動量を読み出す。（Ｓ１０５）。この際、ナビゲーションセンサＩ/Ｆ４２はナビゲーションセンサＳ０と通信し、ナビゲーションセンサＳ０が検出した移動量を取得しレジスタなどに格納する（Ｓ１００１）。
【００９２】
ユーザが印刷開始ボタンを押下した直後に取得された移動量はゼロであるがゼロでないとしても、ＣＰＵ３３は例えば座標(0,0)の初期位置としてＤＲＡＭ２９やＣＰＵ３３のレジスタなどに格納する（Ｓ１０６）。
【００９３】
また、初期位置を取得すると印字/センサタイミング生成部４３がタイミングの生成を開始する（Ｓ１０７）。印字/センサタイミング生成部４３は、初期化で設定されたナビゲーションセンサＳ０の移動量の取得タイミングに達するとナビゲーションセンサＩ/Ｆ４２にタイミングとジャイロセンサＩ/Ｆ４５にタイミングを指示する。これが周期的に行われ上記のサンプリング周期となる。
【００９４】
ＨＭＰ２０のＣＰＵ３３は、移動量と角速度情報を取得するタイミングであるか否かを判定する（Ｓ１０８）。この判定は、割込みコントローラ４１からの通知により行うが、印字/センサタイミング生成部４３と同じタイミングをＣＰＵ３３がカウントすることで判定してもよい。
【００９５】
移動量と角速度情報を取得するタイミングになると、ＨＭＰ２０のＣＰＵ３３はナビゲーションセンサＩ/Ｆ４２から移動量を取得し、ジャイロセンサＩ/Ｆ４５から角速度情報を取得する（Ｓ１０９）。上記のように、ジャイロセンサＩ/Ｆ４５は印字／センサタイミング生成部４３が生成するタイミングでジャイロセンサ３１から角速度情報を取得しており、ナビゲーションセンサＩ/Ｆ４２は印字/センサタイミング生成部４３が生成するタイミングでナビゲーションセンサＳ０から移動量を取得している。
【００９６】
次に、位置算出回路３４は角速度情報と移動量を用いてナビゲーションセンサＳ０の現在の位置を算出する（Ｓ１１０）。具体的には、位置算出回路３４は、前回のサイクルで算出した位置(Ｘ,Ｙ)と、今回取得した移動量(ΔＸ´、ΔＹ´)及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサＳ０の位置を算出する。初期位置のみで、前回算出した位置がない場合は、初期位置に今回取得した移動量(ΔＸ´、ΔＹ´) 及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサＳ０の位置を算出する。Ｓ１１０の詳細については、図１６、図１７とともに詳述する。
【００９７】
次に、位置算出回路３４はナビゲーションセンサＳ０の現在の位置を用いて各ノズル６１の現在の位置を算出する（Ｓ１１１）。
【００９８】
このように、印字/センサタイミング生成部４３により角速度情報と移動量が同時に又はほぼ同時に取得されるので、回転角と回転角が検出されたタイミングで取得された移動量でノズル６１の位置を算出できる。したがって、種類が異なるセンサの情報でノズル６１の位置が算出されても、ノズル６１の位置の精度が低下しにくい。
【００９９】
次に、ＣＰＵ３３はＤＭＡＣ３８を制御して、算出した各ノズル６１の位置を基に、各ノズル６１の周辺画像の画像データをＤＲＡＭ２９からImage RAM３７へ送信する（Ｓ１１２）。なお、回転器３９は、ユーザにより指定されたヘッド位置（ＨＭＰ２０の持ち方など）及びＩＪ記録ヘッド２４の傾きに応じて、画像を回転させる。
【０１００】
次に、ＩＪ記録ヘッド制御部４４は周辺画像を構成する各画像要素の位置座標と、各ノズル６１の位置座標とを比較する（Ｓ１１３）。位置算出回路３４は、ノズル６１の過去の位置と現在の位置を用いてノズル６１の加速度を算出している。これにより、位置算出回路３４は、ナビゲーションセンサＩ/Ｆ４２が移動量を取得しジャイロセンサＩ/Ｆ４５が角速度情報を取得する周期よりも短いＩＪ記録ヘッド２４のインク吐出周期ごとにノズル６１の位置を算出している。
【０１０１】
ＩＪ記録ヘッド制御部４４は、位置算出回路３４が算出するノズル６１の位置から所定範囲内に画像要素の位置座標が含まれるか否かを判定する（Ｓ１１４）。
【０１０２】
吐出条件を満たさない場合、処理はステップＳ１０８に戻る。吐出条件を満たす場合、ＩＪ記録ヘッド制御部４４はノズル６１ごとに画像要素のデータをＩＪ記録ヘッド駆動回路２３に出力する（Ｓ１１５）。これにより、印刷媒体１２にはインクが吐出される。
【０１０３】
次に、ＣＰＵ３３は全画像データを出力したかを判定する（Ｓ１１６）。出力していない場合、ステップＳ１０８からＳ１１５までの処理を繰り返す。
【０１０４】
全画像データを出力した場合、ＣＰＵ３３は、例えばＯＰＵ２６のＬＥＤを点灯させユーザに印刷が終了したことを報知する（Ｓ１１７）。
【０１０５】
なお、全画像データを出力しなくても、ユーザが十分と判断した場合には、ユーザは印刷完了ボタンを押下し、ＯＰＵ２６がそれを受け付けて、印刷を終了してよい。印刷終了後、ユーザが電源をＯＦＦにすることもできるし、印刷が終了した時点で、自動で電源がＯＦＦにされるようになっていてもよい。
【０１０６】
＜検出波形の信号リード＞
図１１は、ナビゲーションセンサの処理周期と検出値について説明する図である。
詳しくは、図１１は、ナビゲーションセンサと、ＦＰＧＡ４０における信号のタイミングについて、説明する図であり、図１１において、（ａ）はナビセンサ処理周期とＦＰＧＡリードタイミングが同期している場合の図、（ｂ）はナビセンサ処理周期とＦＰＧＡリードタイミングが非同期の場合の図である。
【０１０７】
なお、下記の説明において、用語の短縮のため、ナビゲーションセンサ３０を、ナビセンサ３０と称することもある。また、下記でナビゲーションセンサ３０と通信して検出値を取得する制御手段をＦＰＧＡ４０と示すが、図４に示すように制御手段は、ＡＳＩＣであってもよい。
【０１０８】
上述の図４で説明したように、制御部２５とは別に設けられる位置検出手段の一例であるナビゲーションセンサ３０は、移動量ΔＸ´、ΔＹ´を受信する。そして、制御部２５内のＦＰＧＡ４０内のナビゲーションセンサＩ/Ｆ４２は、ナビゲーションセンサ３０と通信し、ナビゲーションセンサ３０からの情報として移動量ΔＸ´、ΔＹ´を受信し、その値を内部レジスタに格納する。
【０１０９】
ここで、ナビセンサ３０はナビセンサ内の処理周期で、移動量を算出し外部からリードされるまで値を蓄積し、ＦＰＧＡ４０によってリードされると、そのタイミングで値をクリアする仕組みとなっている。
【０１１０】
ナビセンサ３０のレジスタにナビセンサ処理周期毎に移動量をため込んで、蓄積して記憶しておく。ナビセンサ３０のナビセンサ処理周期は、ナビセンサ３０に内蔵されたクロック信号の周期に相当する。例えば、ナビセンサ処理周期は、10［KHz］程度である。
【０１１１】
そして、ナビセンサ３０の受信先のＦＰＧＡ４０は、リードタイミングで、ナビセンサ３０のレジスタにアクセスして、データを読み取る。ＦＰＧＡリードタイミングとは、ナビセンサ３０の信号を受信するＦＰＧＡ４０におけるリードタイミング、即ち、ＦＰＧＡ４０に内蔵されたクロック信号のタイミングに相当する。
【０１１２】
ナビセンサ処理周期とリードタイミングが同期している場合であれば、図１１（ａ）で示すように、リード周期間で常に同じ回数ナビセンサ処理を実施後、センサ情報がリードされる。図１１（ａ）では、リードタイミングの繰り返し周期は、ナビセンサ処理周期の約５倍である例を示している。
【０１１３】
一方、非同期の場合、即ち、ナビセンサ処理周期と、ＦＰＧＡ４０が異なるクロックで動作している場合、リード周期間でのナビセンサ処理回数が一定とはならないため、ＨＭＰ２０が定速で移動していても、図１１（ｂ）の丸で示すように、処理回数が少ない部分が発生してしまう。
【０１１４】
図１２は、ナビセンサ処理周期とＦＰＧＡリードタイミングが非同期の場合のナビゲーションセンサの検出波形である。図１２において、（ａ）は全体図であり、（ｂ）は拡大図である。
【０１１５】
図１１（ｂ）の丸で示したように、ナビセンサ処理周期とＦＰＧＡ処理周期とが、非同期で、リード周期間で処理回数が少ない期間は、図１２（ｂ）に示すように、他の波形よりも顕著に小さいスパイク状の波形となって出力される。
【０１１６】
なお、図１２（ａ）、図１２（ｂ）では、ナビセンサ処理周期とＦＰＧＡ処理周期とが、非同期で、図１１（ｂ）のように、同期状態から少しリードタイミングが早くなったため、リード周期においてナビセンサ処理回数が他よりも少なくなる現象が発生して、下側に凸のスパイクが発生する例を示しているが、リード周期の同期状態からナビセンサ処理回数が他よりも多くなる場合は、上側に凸のスパイクが発生する。ナビセンサ処理周期と、ＦＰＧＡ処理周期の同期のずれ方に応じて、スパイクが発生するスパイク周期やスパイクの発生方向は、変化する。
【０１１７】
ナビセンサ３０は、上述のように、制御部２５とは別に設けられる位置検出手段の一例であるため、ナビセンサ処理周期を制御部２５のＦＰＧＡ４０のリードタイミングと完全に一致させることは難しい。
【０１１８】
しかし、ＨＭＰ２０を同一の方向に滑らかに走査させている最中に、位置検出信号において他の信号よりも落ち込むスパイク波形が発生し、実際の位置情報を正しく検知できないと、ＩＪ記録ヘッド２４での画像形成において、例えば、ベタ画像などで、薄い部分が発生し、塗り潰しに濃淡の差が発生してしまう。
【０１１９】
そこで、本発明では、ナビセンサの処理周期と受信先のＦＰＧＡが非同期である場合であっても、ＡＳＩＣ４０とは別に設けられるＳｏＣ５０（図４参照）において位置算出での検出値（位置情報）を調整するように信号処理を行うことで、信号のスパイクに起因するノイズを低減させる。
【０１２０】
下記、ＳｏＣ５０内で実施する検出値の位置調整について説明する。
【０１２１】
＜位置調整装置の概略ブロック＞
図１３は、本発明の位置情報調整部（位置情報調整装置）５１０を含む位置算出部５００の一例の機能ブロック図である。
【０１２２】
位置算出部５００は、位置情報調整部５１０に加えて、ジャイロセンサ３１からの角速度情報を調整する現在位置演算部５７０を含んでいる。よって、位置算出部５００、ナビゲーションセンサの位置情報を信号処理後、ジャイロセンサ３１で検出したヒネリの情報を含めて現在位置演算を実施する構成である。
【０１２３】
位置情報調整部５１０を含む位置算出部５００は、図４に示すＳｏＣ５０における、コンピュータであるＣＰＵ３３に含まれるアルゴリズムの一部又は電子回路で構成される位置算出回路３４に実装される。あるいは、位置情報調整部５１０又は現在位置演算部５７０のどちらか一方が、ＣＰＵ３３に実装され、他方が位置算出回路３４に実装されてもよい。
【０１２４】
位置情報調整部５１０と、現在位置演算部５７０を含む位置算出部５００が、図１０のステップＳ１１の「ナビゲーションセンサ現在位置算出・格納」の処理を実行する。
【０１２５】
なお、図１０のＳ１０８のＦＰＧＡ４０のセンサリード周期を１［ｍｓｅｃ］とすると、現在の位置情報算出を実行するステップＳ１１０の位置算出部５００での処理周期も１［ｍｓｅｃ］に設定されることになる。
【０１２６】
位置情報調整部５１０は、位置情報調整装置の一例であって、速度判定部５２０と、スパイク波形除去・拡散部５３０、ＬＰＦ（Low Pass Filter）５４０，５５０と、出力確定部５６０とを備える。
【０１２７】
速度判定部５２０では、ハンディ装置であるＨＭＰ２０の移動速度に応じて、速度フラグをＯＮ／ＯＦＦする。
【０１２８】
図１３に示す、スパイク波形除去・拡散部５３０では、スパイク信号の検知および、入力信号の代替値算出を実施する。スパイク波形除去・拡散部５３０の詳細については、図１５〜図１９とともに後述する。
【０１２９】
出力確定部５６０では、速度フラグ及び蓄積超過フラグに応じて最終出力を決定する。出力確定部５６０の詳細については、図２０、図２１とともに詳述する。
【０１３０】
位置情報調整装置５１０において、ナビセンサ３０の検出値に対して、スパイク波形除去・拡散部５３０による信号処理と、ＬＰＦ５４０によるフィルター処理を実施し、第１の位置出力情報（出力１）を出力する第１の処理ＳＡと、ナビゲーションセンサ３０の検出値に対して、ＬＰＦ５５０によるフィルター処理を実施して第２の位置出力信号（出力２）を出力する第２の処理ＳＢと、を並列で実行している。
【０１３１】
そして、出力確定部５６０は、速度判定部５２０による速度フラグ及びスパイク波形除去・拡散部５３０による蓄積超過フラグに基づいて、状況に応じた比率で、出力１又は出力２を混合して出力する、あるいは、出力１又は出力２のいずれかを出力する。
【０１３２】
第１のフィルター部であるＬＰＦ５４０と、第２のフィルター部であるＬＰＦ５５０では、高帯域のノイズをカットしている。ＬＰＦ５４０と、ＬＰＦ５５０が設けられていることで、いずれの処理ＳＡ、ＳＢの実施した信号においても、全体的にフィルターを掛けることができる。
【０１３３】
詳しくは、ナビゲーションセンサ３０の分解能が固定なので、特に、低い速度の場合に、スパイクが埋もれてしまう傾向にある。そのため、スパイクは、ＨＭＰ２０の移動速度が遅い場合には検知できないため、後段に説明するように、移動速度が低速の場合は、スパイク除去、拡散した波形を出力波形に使用しないように設定することがある。このように、スパイクが発見しづらい、低速度移動の場合に、バックアップとして、第２のフィルターであるＬＰＦ５５０を介在させることで、信号のノイズを低減することができる。
【０１３４】
さらに、スパイク波形除去・拡散部５３０の後段にも、第１のフィルター部であるＬＰＦ５４０が設けられている。スパイクは、速度が高速であっても、速度が変動する時に、検知できないこともある。ＬＰＦ５４０は、スパイクがうまく検出できずに高帯域側にノイズが発生してしまい、想定とは違う高帯域側にノイズが発生してしまった場合のバックアップ、補償として使用される。また、ＬＰＦ５４０は、スパイクを検出・除去し、拡散させるだけでは、十分に平滑化されない場合もあるので、それをさらに滑らかにするためにも使用される。
【０１３５】
ここで、図１４に速度判定部５２０における速度フラグ制御フローを示す。
【０１３６】
Ｓ２０１で、検出したハンディ装置の移動速度と速度閾値とを比較する。
【０１３７】
速度判定部５２０は、ハンディ装置であるＨＭＰ２０の移動速度が、速度閾値以上になった場合に（Ｓ２０１でＹｅｓ）、速度フラグをＯＮにする（Ｓ２０２）。
【０１３８】
ここで、移動速度が低速の場合は、スパイクは発生していたとしても、ナビゲーションセンサ３０の量子化誤差に埋もれてしまい、検出しづらい。そのため、スパイクがナビゲーションセンサ内の量子化誤差に埋もれない程度に高速のときのみ、スパイク除去・拡散機能を実行するように、移動速度が、速度閾値以上のときに速度フラグを発生させる。速度フラグは、後段の出力確定部５６０で使用される。
【０１３９】
一方、移動速度が、速度閾値未満（Ｓ２０１でＮｏ）のときには、Ｓ２０３で、速度フラグは発生させない。
【０１４０】
＜スパイク波形除去・拡散部＞
図１５は、図１３に示すスパイク波形除去・拡散部５３０の第１の構成例の機能ブロック図である。
【０１４１】
図１５に示すように、スパイク波形除去・拡散部５３０は、スパイク監視部７１、代替値設定部７２、誤差積算値算出・判定部７３、誤差拡散量算出・設定部７４、誤差拡散量反映部７５を実施可能に有している。誤差積算値算出・判定部７３、誤差拡散量算出・設定部７４、及び誤差拡散量反映部７５は、誤差調整部７６として機能する。
【０１４２】
このスパイク波形除去・拡散部５３０における各構成要素の機能は、上述のように、ＳｏＣ５０のＣＰＵ３３の位置処理アルゴリズムとしてソフトウェアで実施されてもよいし、又は位置算出回路３４で実施されてもよい。
【０１４３】
スパイク監視部７１は、位置検出手段であるナビゲーションセンサ３０の検出値を、急峻な変化がないかどうか監視する検出値監視部である。
【０１４４】
代替値設定部７２は、検出値が急峻な変化をした場合に、その検出値を補正するように置き換える代替値を途中値として設定し、検出値が急峻な変化をしない場合には、検出値を途中値として設定する。
【０１４５】
誤差積算値算出・判定部７３、誤差拡散量算出・設定部７４、及び誤差拡散量反映部７５は、ナビゲーションセンサ３０の検出値と、設定した代替値との差分を積算した誤差積算値に基づいて、代替値を拡散するように調整する、誤差調整部７６を構成する。
【０１４６】
詳しくは、誤差積算値算出・判定部７３は、ナビゲーションセンサ３０の検出値と、設定した代替値との差分から誤差拡散量を減算した誤差を蓄積した蓄積誤差を記憶して、誤差積算値を算出するとともに、必要に応じて蓄積超過フラグを生成する。
【０１４７】
誤差拡散量算出・設定部７４は、誤差積算値を基に、誤差拡散量を設定する。誤差拡散量反映部７５は、誤差拡散量算出・設定部７４で前回の検出タイミングで設定した誤差拡散量を、今回の途中値（検出値又は代替値）に対して、加算する。
【０１４８】
詳しくは、本実施形態では、スパイク監視部７１は、平均値算出部７１１と、検出値蓄積記憶部７１２と、検出値平均値比較部７１３と、スパイク閾値記憶部７１４とを有している。
【０１４９】
ナビゲーションセンサ３０が今回検出した検出値は、スパイク監視部７１の平均値算出部７１１と、検出値蓄積記憶部７１２と、検出値平均値比較部７１３に入力される。
【０１５０】
平均値算出部７１１は、検出値蓄積記憶部７１２から直前の数回（例えば、５回）分の検出値を呼び出して、今回の分も含めた直前数回分の平均値を算出する。
【０１５１】
検出値平均値比較部７１３は、スパイク閾値記憶部７１４からスパイク閾値を呼び出し、入力された今回の検出値と、算出された平均値を比較して、検出値と平均値の差がスパイク閾値以上となるかどうかを検出する。
【０１５２】
この構成により、スパイク監視部７１は、位置検出手段の検出値が急峻な変化をするかどうかを、今回の検出値と、過去の複数回の検出値の平均値の差分が閾値を超えるかどうかで判断する。
【０１５３】
また、代替値設定部７２には、今回検出した検出値と、算出した平均値と、検出値と平均値との差分が閾値以上であるかの判断結果が入力されるため、差分が閾値以上であった場合は、代替値として、検出値が急峻な変化した検出値を、過去の複数回の検出値の平均値に置き換える。一方、差分が閾値未満の場合は、検出値をそのまま途中値として出力する。
【０１５４】
誤差積算値算出・判定部７３は、差分算出部７３１と、誤差積算値算出部７３２と、蓄積誤差記憶部７３３と、誤差積算値判定部７３４と、蓄積閾値記憶部７３５と、蓄積誤差算出部７３６とを備える。
【０１５５】
差分算出部７３１は、代替値に用いた平均値と、今回検出した検出値との差分を算出する。誤差積算値算出部７３２は、蓄積誤差記憶部７３３に記憶されている蓄積誤差に今回の検出での差分を加算して、誤差積算値を算出する。
【０１５６】
誤差積算値判定部７３４と、蓄積閾値記憶部７３５は、算出された誤差積算値を利用した、蓄積超過フラグのＯＮ/ＯＦＦの切り替えに使用される。
【０１５７】
蓄積誤差算出部７３６は、今回の誤差積算値から、後述する誤差拡散量を減算した値を誤差として算出する。
【０１５８】
誤差拡散量算出・設定部７４は、誤差積算値比較部７４１、最小拡散値記憶部７４２、誤差拡散量算出部７４３、係数記憶部７４４、算出値比較部７４５、及び誤差拡散量設定部７４６を備える。誤差拡散量算出・設定部７４での詳細な処理については、図１７とともに後述する。
【０１５９】
誤差拡散量反映部７５は、誤差拡散量呼び出し部７５１と、誤差拡散量加算部７５２とを備える。誤差拡散量呼び出し部７５１は、前回検出時に設定された誤差拡散量を呼び出し、誤差拡散量加算部７５２は、途中値に呼び出した誤差拡散量を加算して、調整出力値として出力する。
【０１６０】
このような構成の誤差調整部７６では、誤差積算値算出・判定部７３により、センサ入力と代替信号として採用した平均値との差分の一部を誤差として蓄積し、その蓄積誤差と今回の差分とを基に、誤差拡散量を決めて代替信号に加算する。そして検出値が急峻な変化をした検出の後、検出値が急峻な変化をしない検出が連続する場合に、蓄積誤差が徐々に0になるよう信号を処理する。即ち、ナビセンサ入力値と代替値との差分値は、積算後、徐々に拡散する仕組みとなる。
【０１６１】
ここで、スパイク波形除去・拡散部５３０での信号処理については、下記、図１６〜図１８とともに説明する。
【０１６２】
＜スパイク波形検出・除去・拡散の全体フロー＞
図１６は、本発明の第１の構成例に対応するスパイク波形除去・拡散部５３０におけるスパイク波形除去・拡散動作のフローチャートである。
【０１６３】
図１８は、スパイク波形除去・拡散の波形図である。図１８において（ａ）は、平均値を利用したスパイク波形除去の波形図であり、（ｂ）は誤差拡散の波形図である。図１８（ａ）（ｂ）において、横軸は時間、左側の軸は、センサ検出値であるナビセンサ入力値、平均値途中値である代替信号、調整出力信号の信号値を示している。また、図１８（ｂ）の右側の軸は、蓄積誤差、誤差拡散量を示している。
【０１６４】
図１６のＳ３０１〜Ｓ３０５、Ｓ３０７と、図１８（ａ）を用いて、途中値の設定について説明する。
【０１６５】
図１６のＳ３０１で、ナビゲーションセンサから検出値が入力される。
【０１６６】
Ｓ３０２で、スパイク監視部７１で、平均値を算出する。例えば、今回を含めた直前の過去５回の検出値（サンプル）の平均値を算出する。
【０１６７】
Ｓ３０３で、スパイク監視部７１で、検出値と、平均値の差分を算出する。
【０１６８】
Ｓ３０４で、スパイク監視部７１で、差分とスパイク閾値とを比較する。
【０１６９】
Ｓ３０４で、差分がスパイク閾値よりも大きい場合は（Ｙｅｓ）、異常値と判断し、Ｓ３０５で、代替値設定部７２は、「途中値」を、算出された平均値に設定する。即ち、平均値を、代替信号（代替値）して設定する。
【０１７０】
図１８（ａ）において、ｔ＝454[msec]、457[msec]で、検知波形が落ち込むスパイクが発生している。スパイクが発生すると、図１６のＳ３０３で、入力信号と平均値との差分がスパイク閾値以上と判定されるため、図１８のスパイク発生箇所で、異常と判断し、平均値を代替信号（途中値）として使用する。
【０１７１】
Ｓ３０６で、Ｓ３０５で途中値に設定した平均値と、検出値との差分を、記憶されている前回までの蓄積誤差に加算して、「誤差積算値」とする。なお、検出開始後、初めてスパイクが検出される場合は、蓄積誤差＝０のため、誤差積算値＝差分となる。
【０１７２】
一方、Ｓ３０３で、算出した差分が、スパイク閾値よりも小さい場合は、Ｓ３０７で、代替値設定部は、検出値（ナビセンサからの入力値）を途中値に設定する。そのため、検出値からの差分は発生しない。
【０１７３】
そして、Ｓ３０８で、記憶されている蓄積誤差を、誤差積算値に設定する。
【０１７４】
その後、Ｓ３０９で、Ｓ３０６またはＳ３０８で設定された誤差積算値が、蓄積閾値以上かどうか比較し、蓄積閾値以上の場合（Ｙｅｓ）は、Ｓ３１０で蓄積超過フラグをＯＮにし、後段の出力確定部５６０における出力決定の判断で使用する。
【０１７５】
一方、誤差積算値が蓄積閾値未満の場合は、蓄積超過フラグはＯＦＦのままにする。蓄積超過フラグについては、図２１とともに詳述する。
【０１７６】
図１６の、Ｓ３１１〜Ｓ３１３と、図１８（ｂ）を用いて、誤差拡散について説明する。
【０１７７】
そして、Ｓ３１１で、誤差拡散量を設定する。誤差拡散量の算出方法の詳細については、図１７とともに後述する。
【０１７８】
Ｓ３１２で、途中値に、Ｓ３１１で設定した誤差拡散量を加算して、調整出力値に設定する。この調整出力値に、後段のＬＰＦ５４０でフィルター処理した値が、出力１となる。
【０１７９】
そして、Ｓ３１３で、Ｓ３０６またはＳ３０８で設定された誤差積算値から、今回使用した誤差拡散量を差し引いて蓄積誤差として、次回検出のために記憶する。
【０１８０】
詳しくは、検出開始後初めてスパイクが検出される場合は、差分から今回使用した誤差拡散量を差し引いた値が、誤差（蓄積誤差）となる。二回目以降にスパイクが検出される場合は、差分と記憶されている蓄積誤差との合計である誤差積算値から、今回使用した誤差拡散量を差し引いた値が、蓄積誤差となる。
【０１８１】
一方、スパイクが検出されない場合は、記憶されている蓄積誤差から今回使用した誤差拡散量を差し引いて、今回記憶する蓄積誤差とする。なお、記憶された蓄積誤差が無い状態でスパイクが検出されない場合は、誤差拡散量は拡散せず、今回記憶する蓄積誤差は０となる。
【０１８２】
このフローはハンディ装置であるＨＭＰ２０の移動が終了する（Ｓ３１４でＹｅｓ）まで、繰り返す。
【０１８３】
このような制御により、ハンディ装置が移動中（走査中）に、タイミング生成回路がタイミング信号を生成する毎に、ナビゲーションセンサの各出力値を読み込んでサンプリングし、その各出力値とセンサの取り付け距離とに基づいて、ノイズ除去演算部が各センサの出力値にノイズが含まれているか否かを判断する。そして、ノイズが含まれていると判断した出力値を補正するか又は不採用にしてノイズを除去し、その除去したノイズの蓄積量に応じて、誤差拡散量を加算された、所定サンプリング回数の各センサの出力値に基づいて、位置算出回路が記録ヘッドの基準点からの移動量を算出して位置情報を決定する。
【０１８４】
これにより、ナビゲーションセンサ出力の急峻な変化を除去後、除去分を後段の信号に拡散することで、総移動量を正しく検知し且つ信号の平滑化が実現できる。
【０１８５】
＜誤差拡散量算出の詳細フロー＞
図１７は、図１６の誤差拡散値を設定する処理の詳細フローチャートである。このフローは、図１６のステップＳ３１１の処理の詳細に相当する。図１３、図１７、図１８を用いて、誤差拡散について説明する。
【０１８６】
Ｓ４０１で、誤差積算値比較部７４１は、誤差積算値の絶対値が、最小拡散値よりも、小さいかどうか確認する。
【０１８７】
Ｓ４０１で、誤差積算値の絶対値が最小拡散値よりも小さい場合（Ｙｅｓ）、Ｓ４０２で、誤差拡散量設定部７４６は、誤差積算値を、誤差拡散量に設定する。例えば、誤差積算値が０の場合は、誤差拡散量は０になり、誤差拡散量の途中値への加算は実施しない。
【０１８８】
Ｓ４０１で、誤差積算値の絶対値が最小拡散値以上の場合（Ｎｏ）、Ｓ４０３に進み、誤差拡散量算出部７４３は、誤差積算値に、係数をかけ合わせて、誤差拡散量を算出する。スパイクが検出される場合は、誤差積算値は、蓄積誤差に平均値と検出値との差分が加算された値であり、誤差積算値の絶対値は必然的に最小拡散値より大きくなるため、スパイク検出回は、Ｓ４０３に進む。
【０１８９】
ここで、係数記憶部７４４で記憶される係数は、０よりも大きく、１よりも小さい、一定割合に設定されている。例えば、図１８（ｂ）では、係数を０．１５に設定した例を示している。
【０１９０】
そして、Ｓ４０４で、算出値比較部７４５は、Ｓ４０３で算出した誤差拡散量の絶対値が、最小拡散値（拡散閾値）よりも小さいかどうか比較する。
【０１９１】
Ｓ４０４で、算出した誤差拡散量の絶対値が、最小拡散量よりも大きい場合は、Ｓ４０５で、誤差拡散量設定部７４６は、算出した誤差拡散量を、使用する誤差拡散量に設定する。
【０１９２】
このように設定することで、誤差積算値が大きい場合に、誤差拡散量は、現在の誤差積算値の一定割合ずつに設定して拡散する。誤差積算値は、スパイク検出時に、蓄積誤差に差分が加算されて大きくなりスパイクが検出されない場合、誤差積算値は記憶されている蓄積誤差に設定される。そのため、以後、スパイクが検出されない検出が続くと検出毎に、図１５のＳ３１３で、記憶されている蓄積誤差から、使用する誤差拡散量が差し引かれるため、徐々に今回記憶する蓄積誤差、即ち、次回使用される誤差積算値は減少していく。
【０１９３】
例えば、図１８（ｂ）において、ｔ＝455〜456［msec］の期間、及び、ｔ＝458〜464、［msec］の期間では、徐々に、蓄積誤差の減少に比例して、誤差拡散量は減っている。
【０１９４】
Ｓ４０３で、算出誤差拡散量が０以上の値の場合、Ｓ４０４で、誤差拡散量を＜＋最小拡散値＞に設定する。一方、Ｓ４０３で、算出誤差拡散量が０未満でマイナスの値の場合、Ｓ４０５で、誤差拡散量を、＜−最小拡散値＞に設定する。
【０１９５】
例えば、図１８（ｂ）において、ｔ＝453［msec］以前の期間では、誤差拡散量は、一定値である最小拡散値に設定されている。
【０１９６】
なお、図１７では、誤差積算値の大小関係の場合分けのため、誤差積算値を誤差拡散量に設定する例を上方に示したが、実際の処理でスパイクが検出された後は、誤差拡散量は、絶対値が大きい順に、算出誤差拡散量（算出値）⇒｜最小誤差拡散量｜⇒誤差積算値の順に、徐々に減少しながら設定される。
【０１９７】
即ち、スパイク検出直後は、差分により誤差積算値が急激に増加するため、Ｓ４０４で算出誤差拡散量が最小拡散値よりも小さくなるまで、誤差拡散値は、算出誤差拡散量が設定される。
【０１９８】
そして、Ｓ４０４で算出誤差拡散量が最小拡散値よりも小さくなると、誤差拡散量には最小拡散量を設定し、Ｓ４０１で誤差積算値が最小拡散量よりも小さくなるまで、一定値である最小拡散量で拡散し続ける。
【０１９９】
そして、スパイクを検出しないで拡散を繰り返すと、誤差積算値が最小拡散量よりも小さくなり、その場合は、Ｓ４０２で示したように、誤差積算値を誤差拡散量に設定する。「誤差拡散量＝誤差積算値」となることで、図１６のＳ３１３での減算「蓄積誤差＝誤差積算値−誤差拡散量」により、次回スパイクが検出されない場合に誤差積算値に設定される蓄積誤差が０なる。これ以降、スパイクが検出されて代替値と検出値に差分が生じるまでは、誤差積算値が存在しないため、誤差は拡散しない。
【０２００】
図１６〜図１８に示すように、本発明では、ハンディ装置での位置検知での位置情報調整おいて、
（１）．    ナビゲーションセンサ出力の急峻な変化を検知する機能、
（２）．    過去の出力データから、適当な移動量を算出する機能、
（３）．    （１）で検知したナビゲーションセンサ出力と、（２）で算出した適当な移動量の差分を、今回及び以降の信号に拡散し、蓄積誤差を平滑化する機能、を有している。
【０２０１】
このように処理をすることで、位置調整装置において、ミクロな視点において、対象物上のハンディ装置の移動量を検出する位置検出手段の検出値の急峻な変化を、平均値を用いて平滑化する。そして、平滑化の際の平均値と検出値との差分が蓄積した誤差積算値を次回以降で拡散させることで、マクロの視点である移動域全体における平滑化の悪影響を抑制することができる。即ち、ナビゲーションセンサ出力の急峻な変化を除去後、除去分を後段の信号に拡散することで、総移動量を正しく検知し且つ信号の平滑化が実現できる。
【０２０２】
この位置調整を、ハンディ型液滴吐出装置に適用すると、ナビゲーションセンサ出力の急峻な変化（ノイズや、センサとＣＰＵの処理周期の不一致による蓄積誤差に起因）を平滑化し、印刷品質を向上することができる。
【０２０３】
このように、本発明では、ナビセンサの周期と受信先のＦＰＧＡが非同期である場合であっても、後段の制御部の位置算出において、信号処理を行うことで、信号のスパイクに起因するノイズを低減させている。
【０２０４】
そして、上述のように、本発明では、ナビセンサの受信先で信号の位置調整を実施するため、この信号処理により非同期に伴うスパイクを低減できるため、ハンディ装置において、どのような処理周期のナビセンサを搭載した場合であっても、適宜スパイクのタイミングを検出することで、適宜、信号を平滑化することが可能である。
【０２０５】
なお、本フローでは、誤差調整部は、今回の検出値と、置き換えた代替値との差分を誤差として積算し、次回以降の検出値に、誤差積算値の大きさに基づいて、その誤差積算値の少なくとも一部を誤差拡散量として誤差が0になるまで加算する例を説明した。
【０２０６】
＜誤差拡散の他の制御例＞
さらに、本発明では、誤差拡散量設定部において、次回以降の検出値に加算する誤差拡散量を、誤差積算値の大きさに加えて、ハンディ装置の走査速度を考慮して、誤差積算値を最大値として、誤差拡散量の値を変動させてもよい。
【０２０７】
この場合、例えば、Ｓ４０３で算出する算出誤差拡散量を、
「誤差拡散量=誤差積算値×誤差拡散速度係数×速度」
と設定してもよい。なお、誤差拡散速度係数は所定の定数である。
【０２０８】
このように、演算することで、誤差拡散の際に、走査速度の変動によって想定される検出値の変動を加味して誤差拡散量を設定することができる。
【０２０９】
＜スパイク波形除去・拡散部の第２の構成例＞
図２０は、図１３に示すスパイク波形除去・拡散部５３０Ａの第２の構成例の機能ブロック図である。
【０２１０】
本構成例では、スパイク検出において、検出値と比較する対象が、平均値ではなく、補間演算値を用いる点が異なる。そのため、スパイク監視部７１Ａでは、補間演算部７１５と、検出演算値比較部７１６を有している。なお、補間演算で使用する、サンプルデータとしての検出値は、少なくとも2個以上必要であるため、少なくとも直前の２回分は記憶して、平均の式ではなく、補間演算の式によって演算された演算値を用いて、スパイクの検出を行う。
【０２１１】
即ち、本構成では、スパイク監視部７１Ａは、位置検出手段の検出値が急峻な変化をするかどうかを、今回の検出値と、過去の複数回の検出値の補間演算値（代替値）との差分がスパイク閾値を超えるかどうかで判断する。その他の構成は、第１の構成例と同様である。
【０２１２】
本構成例では、位置調整装置において、ミクロな視点において、対象物上のハンディ装置の移動量を検出する位置検出手段の検出値の急峻な変化を、補間演算値を用いて平滑化する。そして、平滑化の際の補間演算値と検出値との差分が蓄積した誤差積算値を次回以降で拡散させることで、マクロの視点である移動域全体における平滑化の悪影響を抑制することができる。
【０２１３】
＜出力確定部＞
図２０は、図１３に示す出力確定部５６０の機能ブロック図である。
【０２１４】
図２０で示すように出力確定部５６０は、速度フラグ有無確認部８１、蓄積超過フラグ有無確認部８２、出力割合設定部８３、出力増減係数記憶部８４、出力割合混合部８５、出力調整機能使用有無入力部８６、出力選択スイッチ８７、及び位置情報出力選択部８８を備えている。
【０２１５】
速度フラグ有無確認部８１は、速度判定部５２０で判定したハンディ装置２０が移動する速度に起因する速度フラグの有無を確認する。
【０２１６】
蓄積超過フラグ有無確認部８２は、スパイク波形除去・拡散部５３０で生成される蓄積フラグの有無を確認する。
【０２１７】
出力割合設定部８３は、出力増減係数を用いた出力割合増減量を用いて、速度フラグ、蓄積超過フラグの有無に基づいて、出力１と出力２との割合を決定する。なお、図２０では、出力増減係数は予め出力増減係数記憶部８４で記憶されている例を示しているが、外部から受信した信号や、過去の履歴を用いて、出力増減係数を設定してもよい。
【０２１８】
出力割合混合部８５は、設定された出力割合に基づいて、出力１と出力２とを混合する。
【０２１９】
位置情報出力選択部８８は、出力割合混合部８５で混合した出力値、又は、出力１、出力２のいずれかを出力３として出力する。
【０２２０】
図２１は、出力確定部５６０における処理の詳細フローチャートである。図２０、図２１を用いて出力確定での信号処理を説明する。
【０２２１】
Ｓ５０１で、出力調整機能を使用するかどうかを確認する。出力調整機能とは、スパイク除去・拡散処理を含む処理ＳＡと、フィルターのみの処理ＳＢとの切り替えを段階的に変化させる機能である。本機能はＯＮ／ＯＦＦ選択可能で、ＯＦＦの場合入力信号のどちら（出力１、出力２）を出力するか選択が可能である。
【０２２２】
Ｓ５０２で、速度フラグがＯＮかどうか確認する。速度フラグは、図１４のＳ２０２でＯＮされる。上述のように、ハンディ装置の移動速度が一定値未満のとき、センサの量子化誤差に紛れスパイク波形を検知することが出来ないため、速度フラグがＯＮの時のみ出力１（スパイク除去・拡散処理値）の値を使用するように、後段でＳＡの割合を徐々に調整する。
【０２２３】
Ｓ５０３で、蓄積超過フラグがＯＦＦかどうか確認する。蓄積超過フラグは、図１５のＳ３１０で、誤差積算値が、蓄積閾値以上の場合に、ＯＮされる。ここで、蓄積閾値は、誤差が徐々に蓄積していき、異常な動作を作動させる可能性がある閾値に設定する。蓄積超過フラグによって、出力確定部５６０はスパイク波形除去・拡散部５３０での処理の実施／不実施を判断し、続く処理で、出力全体である出力３に対する出力１の割合を増減させる。
【０２２４】
蓄積超過フラグが発生する例として、例えば、連続する検出値の変動量が大きく、平均値に対して、複数回連続してスパイクが検出されてしまう場合や、今回検出したスパイクと平均値との差が大きすぎる場合等が想定しうる。
【０２２５】
速度フラグＯＮで且つ蓄積超過フラグＯＦＦ（Ｓ５０２、Ｓ５０３でＹｅｓ）の場合、Ｓ５０４で、出力割合設定部８３は、出力割合を、前回割合に対して、出力割合増減量を追加する。
【０２２６】
そして、Ｓ５０５で、出力割合が１よりも大きいかどうか判定し、出力割合が１よりも小さい場合は（Ｎｏ）、そのまま、その出力割合をＳ５１０で利用する。
【０２２７】
Ｓ５０５で出力割合が１よりも大きい場合（Ｙｅｓ）は、Ｓ５０６で出力割合を１に調整し、出力割合「１」を、ステップＳ５１０で利用する。
【０２２８】
一方、速度フラグのＯＮ／ＯＦＦに依らず、蓄積超過フラグＯＮ（Ｓ５０３でＮｏ）の場合、Ｓ５０７で、出力割合設定部８３は、出力割合を、前回割合に対して、出力割合増減量を削減する。
【０２２９】
Ｓ５０８で、出力割合が、０よりも小さいかどうか判定し、０よりも大きい場合は（Ｎｏ）、そのままその出力割合をＳ５１０で利用する。
【０２３０】
Ｓ５０８で出力割合が０よりも小さい場合は（Ｙｅｓ）、Ｓ５０９で出力割合を０に調整し、出力割合「０」を、ステップＳ５１０で利用する。
【０２３１】
Ｓ５１０で、最終出力値（出力３）を、「出力割合×出力１＋（１−出力割合）×出力２」で算出する。
【０２３２】
上記のように、蓄積誤差に差分が加算されて算出される誤差積算値が一定値である蓄積閾値を超えて蓄積超過フラグがＯＮのときはスパイク除去・拡散機能が正常動作していないと判断できる。そのため、このフローのＳ５０３〜Ｓ５１０により、出力確定部５６０は、蓄積超過フラグＯＦＦの時に、出力１（スパイク除去・拡散処理を含む処理ＳＡ）を積極的に採用するように出力１の割合を増加させ、蓄積超過フラグＯＮの時に、出力１の割合を減少させるように制御する。
【０２３３】
そして、Ｓ５１０で出力１の比率が０（出力割合＝１）になると、出力確定部５６０は、スパイク波形除去・拡散部５３０における検出値監視処理、代替値設定処理、誤差拡散調整処理が、不実施の、フィルターによる処理のみを実施した信号を出力値である出力２を出力する。
【０２３４】
一方、Ｓ５０１で、出力調整機能を使用しない場合は、Ｓ５１１で出力選択スイッチ８７が、出力１に設定するか出力２に設定されているかを判定する。出力調整機能がＯＦＦの場合は、出力１又は出力２を混合せずに、出力１又は出力２のいずれかを出力する。
【０２３５】
出力選択スイッチ８７が出力１の設定の場合は、最終出力値を出力１に設定し（Ｓ５１２）、出力２の設定の場合は、最終出力値を「出力２」に設定する（Ｓ５１３）。ここで、出力選択スイッチ８７は、起動時や、ＨＭＰ２０のプリンタ動作停止時に、出力１／出力２を選択しておき、ＨＭＰ２０が移動中は、切り替えずに固定されている。
【０２３６】
上述の図１３で示したように、位置情報調整装置において、ナビゲーションセンサの検出値に対して、スパイク波形除去拡散部による信号処理と、第１のＬＰＦによるフィルター処理を実施し、第１の位置出力情報（出力１）を出力する第１の処理と、位置検出手段の検出値に対して、フィルター処理を実施して第２の位置出力信号（出力２）を出力する第２の処理と、を並列で実行している。
【０２３７】
そして、出力確定部５６０で、出力１から出力２、または出力２から出力１への切替りは、急激な変化となる恐れがあったが、移動中に調整される場合は、図２１に示すように、速度フラグ又は／及び蓄積超過フラグに基づいて、状況に応じた比率で、出力１又は出力２を混合して出力する一定割合ずつ出力を調整することで、出力調整の度合いを、滑らかに変化させることができる。
【０２３８】
上記実施形態では、本発明の位置情報調整装置及び位置検出手段を搭載するハンディ装置として、ハンディモバイルプリンタ（ＨＭＰ２０）である例を説明したが、例えば、移動して原稿を読み取る、ハンディモバイルスキャナーに対して、本発明の位置情報調整装置を適用してもよい。さらに、対象物上の移動した距離を検出することができるため距離測定器も、ハンディ装置の一例となりうる。
【０２３９】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０２４０】
例えば、上記したＳｏＣ５０、ＡＳＩＣ/ＦＰＧＡ４０の構成要素は、ＣＰＵ性能やＡＳＩＣ/ＦＰＧＡ４０の回路規模等により、どちらに含まれていてもよい。
【０２４１】
また、本実施形態ではインクを吐出して画像を形成すると説明したが、可視光、紫外線、赤外線、レーザなどを照射して画像を形成してもよい。この場合、印刷媒体１２として例えば、熱や光に反応するものが用いられる。また、透明な液体を吐出してもよい。この場合、特定の波長域の光が照射されると可視情報が得られる。また、金属ペーストや樹脂などを吐出してもよい。
【符号の説明】
【０２４２】
１１  画像データ出力機（外部機器）
１２  印刷媒体（対象物）
２５  制御部
２０  ハンディモバイルプリンタ（ＨＭＰ、ハンディ装置）
２７  通信Ｉ/Ｆ（データ受信部）
３０  ナビゲーションセンサ（ナビセンサ、位置検出手段）
３１  ジャイロセンサ
３３  ＣＰＵ
３４  位置算出回路
４０  ＦＰＧＡ（ＡＳＩＣ/ＦＰＧＡ、制御手段）
４２  ナビゲーションセンサＩ/Ｆ
４３  センサタイミング生成部
４５  ジャイロセンサＩ/Ｆ
６１  ノズル
７１  スパイク監視部（検出値監視部）
７２  代替値設定部
７３  誤差積算値算出・判定部
７４  誤差拡散量算出・設定部
７５  誤差拡散量反映部
７６  誤差調整部
８１  速度フラグ有無確認部
８２  蓄積超過フラグ有無確認部
８３  出力割合設定部
８４  出力増減係数記憶部
８５  出力割合混合部
８６  出力調整機能使用有無入力部
８７  出力選択スイッチ
８８  位置情報出力選択部
５１０  位置情報調整部（位置情報調整装置）
５２０  速度判定部
５３０  スパイク波形除去・拡散部
５４０  ＬＰＦ（第１のフィルター部）
５５０  ＬＰＦ（第２のフィルター部）
５６０  出力確定部
【先行技術文献】
【特許文献】
【０２４３】
【特許文献１】特表２０１０−５２００８７号公報
【特許文献２】特開２０１６−１３７６２１号公報
【図１】
2020124824.tif 000007
【図２】
2020124824.tif 000008
【図３】
2020124824.tif 000009
【図４】
2020124824.tif 000010
【図５】
2020124824.tif 000011
【図６】
2020124824.tif 000012
【図７】
2020124824.tif 000013
【図８】
2020124824.tif 000014
【図９】
2020124824.tif 000015
【図１０】
2020124824.tif 000016
【図１１】
2020124824.tif 000017
【図１２】
2020124824.tif 000018
【図１３】
2020124824.tif 000019
【図１４】
2020124824.tif 000020
【図１５】
2020124824.tif 000021
【図１６】
2020124824.tif 000022
【図１７】
2020124824.tif 000023
【図１８】
2020124824.tif 000024
【図１９】
2020124824.tif 000025
【図２０】
2020124824.tif 000026
【図２１】
2020124824.tif 000027