以下、本発明を実施するための形態について図面を参照しながら説明する。
<ナビゲーションセンサの数について>
図1は、本実施形態のハンディモバイルプリンタが有するナビゲーションセンサを示す図の一例である。図のハンディモバイルプリンタ(以下、HMPという)は4つのナビゲーションセンサS0〜S3を有している。なお、ナビゲーションセンサの数や配置は一例に過ぎない。ナビゲーションセンサS0〜S3はサンプリング周期ごとの移動量を出力するセンサである。ナビゲーションセンサが1つあれば移動量を検知できるが、HMPの姿勢を検出するためには少なくとも2つのナビゲーションセンサのそれぞれの出力(移動量)が必要である。HMPは移動量と姿勢から印刷媒体12における位置を検出する。
図1(a)では4つのナビゲーションセンサS0〜S3が印刷媒体12上を走査している。この場合、HMPは任意の2つのナビゲーションセンサ(例えば、S0とS1、S2とS3)の出力を使用して位置を検出すればよい。これに対し図1(b)では、2つのナビゲーションセンサS2,S3が紙面からはみ出している。この場合、HMP20は印刷媒体12からナビゲーションセンサS2,S3がはみ出したことを検出して、ナビゲーションセンサS0,S1の移動量と姿勢から印刷媒体における位置を検出する。
図1(b)では印刷媒体12からナビゲーションセンサS2,S3がはみ出したことが明らかだが、HMPがはみ出したナビゲーションセンサS2,S3を特定することが困難な場合も少なくない。そこで、HMPは1つのナビゲーションセンサS0〜S3について複数の位置を算出し、信頼性の高い位置がナビゲーションセンサS0〜S3の位置であると決定する。こうすることで、HMPがはみ出したナビゲーションセンサを特定できない場合でも、信頼性が高いナビゲーションセンサとその位置を決定して印刷を継続できる。
したがって、ナビゲーションセンサが3つ以上(N個(N>2))あることで、2つ以上のナビゲーションセンサが印刷媒体上にある限り(1つ以上のナビゲーションセンサが印刷媒体12からはみ出しても)、印刷品質の低下を抑制してHMPは印刷を継続できる。
<用語について>
被搭載物とは、位置検出装置が搭載された物をいう。移動面において位置が検出されうる物としてもよい。例えば、HMP20が被搭載物の一例である。また、位置検出装置は移動した距離を検出することができるため距離測定器も被搭載物の一例となりうる。
移動面は、HMP20が移動できる面であればよく、平面の他、曲面も含まれる。具体的には印刷媒体12が挙げられるがこれには限られない。
移動量検出手段(ナビゲーションセンサ)の出力とは、移動量検出手段又は移動量の信頼性を評価できる情報である。本実施形態では後述するセンサ信頼度情報や、移動量から算出された1つのナビゲーションセンサの複数の位置を例にして説明する。
位置を算出するとは、何らかのデータに演算を施すことにより位置に関する情報を得ることであり、位置を検出するとは、プロセスを問わずに位置に関する情報を得ることをいう。ただし、両者は位置に関する情報が得られる点で同じであり本実施形態では位置の算出と位置の検出を厳密には区別しない。
また、本実施形態において、画像形成、記録、印字、印写、印刷、造形等はいずれも同義語とする。
<HMP20による画像形成>
図2は、HMP20による画像形成を模式的に示す図の一例である。HMP20には、例えばスマートフォンやPC(Personal Computer)等の画像データ出力器11から画像データが送信される。ユーザはHMP20を把持して、印刷媒体12(例えば定形用紙やノートなど)から浮き上がらないようにフリーハンドで走査させる。
HMP20は後述するようにナビゲーションセンサS0〜S3のいずれか2つで位置を検出し、HMP20が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので(インクの吐出の対象とならないので)、ユーザは印刷媒体12上で任意の方向にHMP20を走査させることで画像を形成できる。
印刷媒体12からHMP20が浮き上がらないことが好ましいのは、ナビゲーションセンサS0〜S3が印刷媒体12からの反射光を利用して移動量を検出するためである。印刷媒体12からHMP20が浮き上がると反射光を検出できなくなり移動量を検出できない。また、印刷媒体12からナビゲーションセンサS0〜S3がはみ出した場合も、印刷媒体12の厚みにより反射光を検出できなくなったり、検出できても位置がずれる場合がある。
このため、本実施形態では少なくとも2つのナビゲーションセンサ(S0〜S3のうち2つ)が印刷媒体12上で走査されることが好ましい。
<構成例>
図3は、HMP20のハードウェア構成図の一例を示す。HMP20は、印刷媒体12に画像を形成する画像形成装置の一例である。HMP20は、制御部25によって全体の動作が制御され、制御部25には通信I/F27、IJ記録ヘッド駆動回路23、OPU26、ROM28、DRAM29、及び、4つのナビゲーションセンサ30(区別する場合はS0〜S3)が電気的に接続されている。また、HMP20は電力により駆動されるため、電源22と電源回路21を有している。電源回路21が生成する電力は、点線22aで示す配線などにより、通信I/F27、IJ記録ヘッド駆動回路23、OPU26、ROM28、DRAM29、IJ記録ヘッド24、制御部25、及び、4つのナビゲーションセンサ30に供給されている。なお、ナビゲーションセンサ30の数は3つ以上であればよい。
電源22は主に電池(バッテリー)が利用される。太陽電池や商用電源(交流電源)、燃料電池等が用いられてもよい。電源回路21は、電源22が供給する電力をHMP20の各部に分配する。また、電源22の電圧を各部に適した電圧に降圧や昇圧する。また、電源22が電池で充電可能である場合、電源回路21は交流電源の接続を検出して電池の充電回路に接続し、電源22を充電する。
通信I/F27は、スマートフォンやPC(Personal Computer)等の画像データ出力器11から画像データの受信等を行う。通信I/F27は例えば無線LAN、Bluetooth(登録商標)、NFC(Near Field Communication)、赤外線、3G(携帯電話)、又は、LTE(Long Term Evolution)等の通信規格に対応した通信装置である。また、このような無線通信の他、有線LAN、USBケーブルなどを用いた有線通信に対応した通信装置であってもよい。
ROM28は、HMP20のハードウェア制御を行うファームウェアや、IJ記録ヘッド24の駆動波形データ(液滴を吐出するための電圧変化を規定するデータ)や、HMP20の初期設定データ等を格納している。
DRAM29は通信I/F27が受信した画像データを記憶したり、ROM28から展開されたファームウェアの格納のために使用される。したがって、CPU33がファームウェアを実行する際のワークメモリとして使用される。
ナビゲーションセンサ30は、所定のサイクル時間ごとにHMP20の移動量を検出するセンサである。なお、4つのナビゲーションセンサ30の機能は同じであるが、違いがあるとしても本実施形態の説明の上で支障がないものとする。ナビゲーションセンサ30は、例えば、発光ダイオード(LED)やレーザ等の光源と、印刷媒体12を撮像する撮像センサを有している。HMP20が印刷媒体12上を走査されると、印刷媒体12の微小なエッジが次々に検出され(撮像され)エッジ間の距離を解析することで移動量が得られる。本実施形態では、ナビゲーションセンサ30は、HMP20の底面に4つ搭載されている。なお、ナビゲーションセンサ30として、さらに多軸の加速度センサを用いてもよく、HMP20は加速度センサのみでHMP20の位置を検出してもよい。また、印刷媒体に垂直に軸に対する回転角を検出するためにジャイロセンサを有していてもよい。
OPU(Operation panel Unit)26は、HMP20の状態を表示するLED、ユーザがHMP20に画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
IJ記録ヘッド駆動回路23は上記の駆動波形データを用いて、IJ記録ヘッド24を駆動するための駆動波形(電圧)を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
IJ記録ヘッド24は、インクを吐出するためのヘッドである。図ではCMYKの4色のインクを吐出可能になっているが、単色でもよく5色以上の吐出が可能でもよい。各色ごとに一列(二列以上でもよい)に並んだ複数のインク吐出用のノズル61が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、静電方式などの他の方式でもよい。
IJ記録ヘッド24は、ノズル61から液体を吐出・噴射する機能部品である。吐出される液体は、IJ記録ヘッド24から吐出可能な粘度や表面張力を有するものであればよく、特に限定されないが、常温、常圧下において、又は加熱、冷却により粘度が30mPa・s以下となるものであることが好ましい。より具体的には、水や有機溶媒等の溶媒、染料や顔料等の着色剤、重合性化合物、樹脂、界面活性剤等の機能性付与材料、DNA、アミノ酸やたんぱく質、カルシウム等の生体適合材料、天然色素等の可食材料、などを含む溶液、懸濁液、エマルジョンなどであり、これらは例えば、インクジェット用インク、表面処理液、電子素子や発光素子の構成要素や電子回路レジストパターンの形成用液、3次元造形用材料液等の用途で用いることができる。
制御部25はCPU33を有しHMP20の全体を制御する。制御部25は、ナビゲーションセンサ30により検出される移動量及び回転角を元に、IJ記録ヘッド24の各ノズルの位置、該位置に応じて形成する画像の決定、後述する吐出ノズル可否判定等を行う。制御部25について詳細は次述する。
図4は、制御部25の構成を説明する図の一例である。制御部25はSoC50とASIC/FPGA40を有している。SoC50とASIC/FPGA40はバス46,47を介して通信する。ASIC/FPGA40はどちらの実装技術で設計されてもよいことを意味し、ASIC/FPGA40以外の他の実装技術で構成されてよい。また、SoC50とASIC/FPGA40を別のチップにすることなく1つのチップや基板で構成してもよい。あるいは、3つ以上のチップや基板で実装してもよい。
SoC50は、バス47を介して接続されたCPU33、位置算出回路34、メモリCTL(コントローラ)35、及び、ROM CTL(コントローラ)36等の機能を有している。なお、SoC50が有する構成要素はこれらに限られない。
また、ASIC/FPGA40は、バス46を介して接続された、画像読取部38、割込みコントローラ41、ナビゲーションセンサI/F42、印字/センサタイミング生成部43、及び、IJ記録ヘッド制御部44を有している。なお、ASIC/FPGA40が有する構成要素はこれらに限られない。
CPU33は、ROM28からDRAM29に展開されたファームウェア(プログラム)などを実行し、SoC50内の位置算出回路34、メモリCTL35、及び、ROM CTL36の動作を制御する。また、ASIC/FPGA40内の画像読取部38、割込みコントローラ41、ナビゲーションセンサI/F42、印字/センサタイミング生成部43、及び、IJ記録ヘッド制御部44等の動作を制御する。
位置算出回路34は、HMP20の位置(座標情報)を算出する。具体的には、位置算出回路34は、4つのナビゲーションセンサS0〜S3のうち少なくとも1つの移動量を使用し、4つのナビゲーションセンサS0〜S3のうち2つの移動量に基づく姿勢(回転角)に基づいてHMP20の位置を算出する。HMP20の位置とは、厳密にはノズル61の位置であるが、ナビゲーションセンサ30の位置が分かればHMP20はノズル61の位置を算出できる。また、位置算出回路34は目標吐出位置を算出する。位置算出回路34をCPU33がソフト的に実現してもよい。
ナビゲーションセンサ30の位置は、後述するように例えば所定の原点(画像形成が開始される時のHMP20の初期位置)を基準に算出されている。また、位置算出回路34は、過去の位置と最も新しい位置の差に基づいて加速度や移動方向を推定し、例えば次回のインクの吐出タイミングにおける位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
メモリCTL35は、DRAM29とのインタフェースであり、DRAM29に対しデータを要求し、取得したファームウェアをCPU33に送出したり、取得した画像データをASIC/FPGA40に送出する。
ROM CTL36は、ROM28とのインタフェースであり、ROM28に対しデータを要求し、取得したデータをCPU33やASIC/FPGA40に送出する。
位置算出回路34が算出したナビゲーションセンサ30の位置をCPUが画像読取部38に入力する。画像読取部38は、ナビゲーションセンサ30とノズル61の相対位置に基づき各ノズルの位置を算出する。そして、ノズルの位置に応じた画像データをDRAMから読み出し、IJ記録ヘッド24が要求する並び順で画像データを並べて送信する。
印字/センサタイミング生成部43は、ナビゲーションセンサI/F42が情報を読み取るタイミングをナビゲーションセンサI/Fに通知し、IJ記録ヘッド制御部44に駆動タイミングを通知する。情報を読み取るタイミングの周期はインクの吐出タイミングの周期よりも長い。
IJ記録ヘッド制御部44は、印字/センサタイミング生成部43が通知したタイミングで画像データに基づいてインクを吐出する。IJ記録ヘッド駆動回路23は上記のように制御信号に対応した駆動波形データを用いて、駆動波形(電圧)を生成する。なお、IJ記録ヘッド制御部44は吐出ノズル可否判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出し、目標吐出位置がなければ吐出しないと判定する。
ナビゲーションセンサI/F42は、ナビゲーションセンサ30と通信し、ナビゲーションセンサ30からの情報として移動量ΔX´、ΔY´(これらについては後述する)を受信し、その値をレジスタに格納する。ナビゲーションセンサ30からの情報は、その他、反射光の読み取りが良好かどうかなどを示すステータス通知機能(後述するセンサ信頼度情報が含まれる)も有する。
割込みコントローラ41は、ナビゲーションセンサI/F42がナビゲーションセンサ30との通信が完了したことを検知して、SoC50へそれを通知するための割込み信号を出力する。CPU33はこの割込みにより、ナビゲーションセンサI/F42がレジスタに記憶するΔX´、ΔY´を取得する。
図5は、画像読取部38の構成図の一例を示す。画像読取部38は、CPU I/F381、ノズル位置生成部382、アドレス生成部383、出力I/F384、データ蓄積部385、及び、テーブル管理部386を有する。CPU I/F381はCPU33とのインタフェースとなる回路である。CPU I/F381はCPU33から幅方向の画像の解像度、縦方向の画像の解像度など各種設定を受け付ける。また、IJ記録ヘッド制御部44から吐出タイミングを取得して、吐出タイミングにおけるナビゲーションセンサ30の位置をCPU33から受け付ける。
ノズル位置生成部382は、ナビゲーションセンサ30の位置から各ノズルの位置を生成する。ナビゲーションセンサ30の位置を1回受け取る毎に、ノズル数分の位置を生成して、アドレス生成部383に出力する。また、ノズル位置生成部382は、印刷モードや吐出ノズル数制限などに対応して、各ノズルの有効/無効フラグを出力する。
アドレス生成部383は、ノズル位置生成部382により得られた各ノズルの位置を元に、そのデータが格納されているメモリアドレスを生成する。
データ蓄積部385はメモリCTL35から取得した画像データを蓄積する。また、DRAM29に書き込むデータを一時的に蓄積する。
テーブル管理部386は、アドレス生成部383により生成されたアドレスとデータ蓄積部385に蓄積されたデータとの対応付けを行う。テーブル管理部386は、アドレス生成部383により生成されたアドレスに対応付けられているデータをアドレス生成部383に出力する。
出力I/F384は、テーブル管理部386から取得した画像データをIJ記録ヘッド制御部44の要求する形式に変換する。また、画像データをバッファリングし、要求に応じてIJ記録ヘッド制御部44に画像データを出力する。
<ナビゲーションセンサについて>
図6は、ナビゲーションセンサのハードウェア構成の構成例を示す図である。ナビゲーションセンサS0〜S3は同じ構造である。ナビゲーションセンサ30は、ホストI/F301、イメージプロセッサ302、LEDドライバ303、2つのレンズ304、306及び、イメージアレイ305を有する。LEDドライバ303は、LEDと制御回路が一体となっておりイメージプロセッサ302からの命令によりLED光を照射する。イメージアレイ305は、印刷媒体12からのLED光の反射光をレンズ304を介して受光する。2つのレンズ304,306は、印刷媒体12の表面に対して光学的に焦点が合うように設置されている。
イメージアレイ305は、LED光の波長に感度を有するフォトダイオードなどを有し、受光したLED光からイメージデータを生成する。イメージプロセッサ302はイメージデータを取得して、イメージデータからナビゲーションセンサの移動距離(上記のΔX´、ΔY´)を算出する。イメージプロセッサ302は、算出した移動距離を、ホストI/F301を介して制御部25へ出力する。
光源として使用される発光ダイオード(LED)は、表面が粗い印刷媒体12、例えば紙を使用する場合に有用である。これは、表面が粗い場合、影が発生するため、その影を特徴部分として、X軸方向及びY軸方向の移動距離を正確に算出することが可能になるからである。一方、表面が滑らか、あるいは透明な印刷媒体12に対しては、光源としてレーザ光を発生させる半導体レーザ(LD)を使用することができる。半導体レーザで、印刷媒体12上に例えば縞模様等を形成することで特徴部分を作ることができ、それを基に正確に移動距離を算出することができるからである。
次に、図7を用いて、ナビゲーションセンサ30の動作について説明する。図7はナビゲーションセンサ30による移動量の検出方法を説明する図である。LEDドライバ303が照射した光は、レンズ306を介して印刷媒体12の表面に照射される。印刷媒体12の表面は、図7(a)に示すように様々な形状の微小な凹凸を有している。このため、様々な形の影が発生する。
イメージプロセッサ302は、予め決められたサンプリングタイミング毎に、レンズ304及びイメージアレイ305を介して反射光を受光し、イメージデータ310を取得する。図7(b)に示すように生成したイメージデータ310を、イメージプロセッサ302は規定の分解能単位でマトリクス化する。すなわち、イメージデータ310を複数の矩形領域に分割する。そして、イメージプロセッサ302は、前回のサンプリングタイミングで得られたイメージデータ310と、今回のサンプリングタイミングで得られたイメージデータ310とを比較してイメージデータ310が移動した矩形領域の数を検出し、それを移動距離として算出する。図7(b)で図示するΔX方向にHMP20が移動したとする。t=0とt=1のイメージデータ310を比較すると、右端にある形状が中央の形状と一致する。したがって、形状は−X方向に移動しているので、HMP20がX方向に一マス分移動したことが分かる。時刻t=1とt=2についても同様である。
<IJ記録ヘッド駆動回路>
図8は、IJ記録ヘッド駆動回路23の構成図の一例である。まず、IJ記録ヘッド24は、複数のノズル61を備え、各ノズル61にはアクチュエータが設けられている。アクチュエータは、サーマル方式、ピエゾ方式のいずれであってもよい。サーマル方式は、ノズル内のインクに熱を与えて膨張させ、この膨張によりノズル61からインク滴を吐出させるものである。ピエゾ方式は、圧電素子によりノズル壁を押し、内部のインクを押し出すことによりインク滴を吐出させるものである。
IJ記録ヘッド駆動回路23は、アナログスイッチ231と、レベルシフタ232と、階調デコーダ233と、ラッチ234と、シフトレジスタ235とを備えている。IJ記録ヘッド制御部44は、IJ記録ヘッド駆動回路23に対し、IJ記録ヘッド24のノズル61の数(アクチュエータの数も同じ)分のシリアルデータである画像データSDを、画像データ転送クロックSCKによってシフトレジスタ235に転送する。
転送が終了すると、IJ記録ヘッド制御部44は、画像データラッチ信号SLnによりノズル毎に設けられたラッチ234に各画像データSDを記憶させる。
IJ記録ヘッド制御部44は、画像データSDをラッチさせた後、アナログスイッチ231へ各階調値のインク滴を各ノズルから吐出させるためのヘッド駆動波形Vcomを出力する。このとき、IJ記録ヘッド制御部44は、階調デコーダ233に対してヘッド駆動マスクパターンMNを階調制御信号として与えるが、そのヘッド駆動マスクパターンMNを駆動波形のタイミングに合わせて選択するように遷移させる。
階調デコーダ233は、階調制御信号とラッチされた画像データとを論理演算し、レベルシフタ232は、論理演算した得られた論理レベル電圧信号を、アナログスイッチ231を駆動できる電圧レベルまで昇圧する。
アナログスイッチ231は、昇圧された電圧信号を受け付けON/OFFすることにより、IJ記録ヘッドのアクチュエータへ供給する駆動波形VoutNが各ノズルで異なる波形となる。IJ記録ヘッド24は、この駆動波形に基づきインク滴を吐出させ、印刷媒体12上に画像を形成する。
なお、図8の構成及びその説明は、インクジェット方式のプリンタで一般に採用されている構成である。インク滴を吐出できれば、図8の構成に限られずHMP20に搭載されてよい。
<IJ記録ヘッドにおけるノズル位置について>
次に、図9を用いて、IJ記録ヘッド24におけるノズル位置等について説明する。図9(a)は、HMP20の平面図の一例である。図9(b)はIJ記録ヘッド24のみを説明する図の一例である。図示されている面が印刷媒体12に対向する面である。
本実施形態のHMP20は、2つのナビゲーションセンサS0を有している。2つのナビゲーションセンサS0,S1の間の長さは距離Lである。距離Lは長いほどよい。これは、距離Lが長いほど検出可能な最小の回転角θが小さくなり、HMP20の位置の誤差が少なくなるからである。
ナビゲーションセンサ30からIJ記録ヘッド24までの距離はそれぞれ距離a、bである。距離aと、距離bは等しくてもよいし、ゼロでもよい(IJ記録ヘッド24に接している)。また、ナビゲーションセンサ30が1つだけの場合、ナビゲーションセンサS0はIJ記録ヘッド24の周囲の任意の場所に配置される。したがって、図示するナビゲーションセンサS0、S1の位置は一例である。ただし、IJ記録ヘッド24とナビゲーションセンサS0、S1の距離が短いことでHMP20の底面のサイズを削減しやすくなる。
図9(b)に示すように、IJ記録ヘッド24の端から最初のノズル61までの距離は距離d、隣接するノズル間の距離は距離eである。a〜eの値はROM28などに予め記憶されている。
位置算出回路34などがナビゲーションセンサS0の位置を算出すれば、距離a(距離b)、距離d及び距離eを用いて、位置算出回路34はノズル61の位置を算出できる。
<印刷媒体12におけるHMP20の位置について>
図10は、HMP20の座標系と位置の算出方法を説明する図の一例である。本実施形態では、印刷媒体12に水平な方向をX軸、垂直な方向をY軸に設定する。原点は画像形成が開始された際のナビゲーションセンサS0の位置である。この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサS0は図11の座標軸(X´軸、Y´軸)で移動量を出力する。すなわち、ノズル61の配列方向をY´軸、Y´軸に直交する方向をX´軸として移動量を出力する。
図9(a)に示したように、印刷媒体12に対しHMP20が時計回りにθ回転している場合を例にして説明する。ユーザがHMP20を印刷媒体座標に対し全く傾けることなく走査させることは困難でゼロでないθが生じると考えられる。全く回転していなければ、X=X´、Y=Y´である。しかし、HMP20が印刷媒体12に対し回転角θ、回転した場合、ナビゲーションセンサS0の出力とHMP20の印刷媒体12における実際の位置が一致しなくなる。回転角θは時計回りが正、X、X´は右方向が正、Y、Y´は上方向が正である。
図10(a)はHMP20のX座標を説明する図の一例である。図10(a)では回転角θのHMP20がX方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサS0が検出する移動量ΔX´、ΔY´とX,Yの対応を示している。なお、2つのナビゲーションセンサS0、S1の相対位置は固定なので2つのナビゲーションセンサS0、S1の出力(移動量)は同じである。ナビゲーションセンサS0のX座標はX1+X2であり、X1+X2はΔX´、ΔY´及び回転角θから求められる。
図10(b)は回転角θのHMP20がY方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサS0が検出する移動量ΔX´、ΔY´とX,Yの対応を示している。ナビゲーションセンサS0のY座標はY1+Y2であり、Y1+Y2は−ΔX´、ΔY´及び回転角θから求められる。
したがって、HMP20がX方向及びY方向に回転角θのまま移動した場合、ナビゲーションセンサS0が出力するΔX´、ΔY´は印刷媒体座標のX,Yに以下のように変換できる。
X=ΔX´cosθ+ΔY´sinθ …(1)
Y=−ΔX´sinθ+ΔY´cosθ …(2)
<<回転角θの検出>>
図11を用いて、ナビゲーションセンサS0,S1が出力する移動量を用いた回転角θの算出方法を説明する。図11は、画像形成中に生じるHMP20の回転角の変化量dθの求め方を説明する図の一例である。回転角の変化量dθは2つのナビゲーションセンサS0,S1が検出する移動量ΔX´を用いて算出される(ΔY´を用いてもよい)。印刷媒体12の上側のナビゲーションセンサS0が検出する移動量ΔX´0、ナビゲーションセンサS1が検出する移動量をΔX´1とする。なお、図11ではすでに得られている回転角をθとしている。
HMP20が平行移動しながらdθ回転した場合、移動量ΔX´0とΔX´1は一致しない。しかし、どちらの出力も2つのナビゲーションセンサS0,S1を結ぶ直線に垂直な方向の移動量なので、移動量ΔX´0とΔX´1の差は「ΔX´0−ΔX´1」として求めることができる。この差はHMP20がdθ回転したことにより生じた値である。また、「ΔX´0−ΔX´1」、L、及び、dθに図11に示す関係があることから、dθは以下のように表すことができる。
dθ=arcsin{(ΔX´0−ΔX´1)/L} …(3)
位置算出回路34がこのdθを積算することで回転角θを求めることができる。式(1)(2)に示すように、回転角θを用いてHMP20は位置を検出できる。また、式(3)から分かるように、より小さいdθを検出するには距離Lを大きくすることが好ましい。
<ノズルの位置>
図12(a)はノズルの位置の算出を説明する図の一例である。ナビゲーションセンサの位置が1つでも分かり回転角θが分かると、ノズル位置生成部382は各ノズル61の位置を算出できる。図12(a)のノズル61−1を例にして説明する。なお、図12(a)ではナビゲーションセンサS2、S3は省略されている。ナビゲーションセンサS0とIJ記録ヘッド24の間隔がa、IJ記録ヘッド24の端からノズル61−1までの距離がdである。また、印刷媒体12に垂直な軸に対する回転角がθである。これらから、ノズル61−1の座標(X,Y)を求めることができる。
X=X0-(a+d)×sinθ
Y=Y0-(a+d)×cosθ
また、図12(b)は2つのナビゲーションセンサS0,S1を結ぶ直線上にないノズル61の位置を説明する図である。本実施形態では4つのナビゲーションセンサS0〜S3がHMP20に配置されているので、ノズル列Y,Cは2つのナビゲーションセンサS0,S1又はS2,S3を結ぶ直線上にない場合がある。また、カラーの画像形成を行うHMP20の場合、ノズル列Y,Cによっては2つのナビゲーションセンサS0,S1又はS2,S3を結ぶ直線上にない場合がある。
ノズル列Yとノズル列Cの距離をfとすると、図12(b)のノズル列Cのノズル61−1cの座標は以下のように求めることができる。
X=X0-(a+d)×sinθ+ f×cosθ
Y=Y0-(a+d)×cosθ- f×sinθ
<4つのナビゲーションセンサの配置例>
図13は、本実施形態のHMP20におけるナビゲーションセンサS0〜S1の配置例を示す図である。HMP20はノズル位置の算出に必要な個数以上のナビゲーションセンサを備え、複数のナビゲーションセンサの内、任意の数のナビゲーションセンサからの出力を用いてノズル位置を算出する。
位置算出に必要なナビゲーションセンサの数は2つなので、HMP20は3つ以上のナビゲーションセンサを搭載している。HMP20はその中から信頼性が高いナビゲーションセンサを2つ採用し、この2つのナビゲーションセンサの移動量を用いて回転角θを算出する。これにより、いくつかのナビゲーションセンサの出力に異常があっても、適切なナビゲーションセンサを選択しノズル位置を算出することができる。
図13のHMPはナビゲーションセンサを4つ搭載しており、IJ記録ヘッド24の4隅に配置されている。ナビゲーションセンサS0〜S3の位置は図示するものに限られない。しかし、ナビゲーションセンサS0,S1、S2,S3はIJ記録ヘッド24に隣接していることが好ましい。IJ記録ヘッド24とナビゲーションセンサS0,S1、S2,S3の間隔が短いことで、印刷媒体12における画像形成可能範囲が広くなる。これは、ノズル61と2つのナビゲーションセンサ(後述するように6通りある)は印刷媒体12上に存在する必要があるためである。
また、2つのナビゲーションセンサ(6通りある)の間隔は長い方が好ましい。これは、2つのナビゲーションセンサ(6通りある)の間隔(図11のL)が回転角θの分解能に影響するためである(より小さな回転角の変化量dθを検出可能になる)。
したがって、図示するようにIJ記録ヘッド24と同程度の長さの間隔でナビゲーションセンサS0,S1及びS2,S3が配置され、ノズル列に垂直な方向はIJ記録ヘッド24の幅と同程度の長さの間隔でナビゲーションセンサS0とS1及びS2とS3が配置されることが好ましい。
<HMPの機能について>
図14は、HMP20の機能ブロック図の一例を示す。HMP20は異常検出部51、センサ位置決定部52及びセンサ位置補正部53を有する。これらは、図4に示したCPU33がROM28に記憶されたファームウェア(プログラム)をDRAM29に展開して実行することで得られる機能又は手段である。
異常検出部51はCPU33等により実現され、センサ信頼度情報に基づいて、移動量に異常値が含まれるおそれがあるナビゲーションセンサを位置算出の対象外として除外する。センサ信頼度情報とは、ナビゲーションセンサS0〜S3が出力する移動量の信頼度に関する情報であり、移動量と共にナビゲーションセンサI/F42がナビゲーションセンサS0〜S3から取得することができる。例えば、イメージアレイ305が受光した反射光の強度、イメージプロセッサ302が検出したエッジ(特徴点)の数、及び、イメージアレイ305のシャッター時間などがセンサ信頼度情報である。これらはHMP20が印刷媒体12から浮いた場合に値が悪化する。反射光の強度は低下し、エッジ(特徴点)の数は少なくなり、シャッター時間は増大する。それぞれ適正な値の範囲が決まっており、適正な値に含まれない場合、異常検出部51は適性でないナビゲーションセンサを除外する。なお、このような情報は印刷媒体の表面品質に関するので表面品質値と呼ばれる場合がある。さらに、異常検出部51は移動量が閾値以上のナビゲーションセンサを除外してもよい。ユーザの一般的な走査速度で移動量が閾値を超える場合、ナビゲーションセンサS0〜S3が印刷媒体12からはみ出したり浮いている場合があるためである。
センサ位置決定部52は、CPU33等により実現される。1つのナビゲーションセンサ30の位置は1組のナビゲーションセンサの移動量で算出されるが、4つのナビゲーションセンサS0〜S3がある場合、複数の組で同じ1つのナビゲーションセンサの位置が算出される。センサ位置決定部52は、1つのナビゲーションセンサの複数の位置の中央値、又は、最大値と最小値を除外した平均値を、ナビゲーションセンサの位置に決定する。さらに、このナビゲーションセンサの位置の算出に使用された2つのナビゲーションセンサのカウント値を大きくし、カウント値に基づいて2つのナビゲーションセンサを決定する。これにより、信頼性が高いナビゲーションセンサを2つ決定し、回転角を算出できる。
センサ位置補正部53は、CPU33等により実現され、位置の算出に採用されたセンサ(2個)の位置を用いて、位置の算出に採用されなかったナビゲーションセンサ(2個)の位置を補正する。
<動作手順>
図15は、画像データ出力器11とHMP20の動作手順を説明するフローチャート図の一例である。まず、ユーザは画像データ出力器11の電源ボタンを押下する(U101)。画像データ出力器11はそれを受け付け、電池等から電源が供給されて起動する。
ユーザは画像データ出力器11で出力したい画像を選択する(U102)。画像データ出力器11は画像の選択を受け付ける。ワープロアプリケーションのようなソフトウェアの文書データが画像として選択されてもよいし、JPEGなどの画像データが選択されてもよい。必要であればプリンタドライバが画像データ以外のデータを画像に変更してよい。
ユーザは選択した画像をHMP20で印刷する操作を行う(U103)。HMP20は印刷ジョブの実行の要求を受け付ける。印刷ジョブの要求により画像データがHMP20へ送信される。
ユーザは、HMP20を持ち、印刷媒体12(例えばノート)の上で初期位置を決定する(U104)。
そして、ユーザはHMP20の印刷開始ボタンを押下する(U105)。HMP20は印刷開始ボタンの押下を受け付ける。
ユーザはHMP20を印刷媒体12の上で滑らせるように自由に走査する(U106)。
続いて、HMP20の動作を説明する。以下の動作はCPU33がファームウェアを実行することで行われる。
HMP20も電源のONにより起動する。HMP20のCPU33は、HMP20に内蔵されている図3,4のハードウェア要素を初期化する(S101)。例えば、ナビゲーションセンサI/F42のレジスタを初期化したり、印字/センサタイミング生成部43にタイミング値を設定したりする。また、HMP20と画像データ出力器11との間の通信を確立する。
HMP20のCPU33は初期化が完了したかどうかを判定し、完了していない場合はこの判定を繰り返す(S102)。
初期化が完了すると(S102のYes)、HMP20のCPU33は、OPU26の例えばLED点灯によりユーザに印刷可能な状態であることを報知する(S103)。これにより、ユーザは印刷可能な状態であることを把握し、上記のように印刷ジョブの実行を要求する。
印刷ジョブの実行の要求により、HMP20の通信I/F27は画像データ出力器11から画像データの入力を受け付け、画像が入力された旨をOPU26のLEDを点滅させる等によりユーザに対し報知する(S104)。
ユーザが印刷媒体12上でHMP20の初期位置を決め印刷開始ボタンを押下すると、HMP20のOPU26はこの操作を受け付け、CPU33がナビゲーションセンサI/F42に位置を読み取らせる(S105)。これにより、ナビゲーションセンサI/F42はナビゲーションセンサS0〜S3と通信し、ナビゲーションセンサS0〜S3が検出した移動量を取得しレジスタなどに格納しておく(S1001)。CPU33はナビゲーションセンサI/F42から移動量を読み出す。
ユーザが印刷開始ボタンを押下した直後に取得された移動量はゼロであるがゼロでないとしても、CPU33は例えば座標(0,0)の初期位置としてDRAM29やCPU33のレジスタなどに格納する(S106)。
また、初期位置を取得すると印字/センサタイミング生成部43がタイミングの生成を開始する(S107)。印字/センサタイミング生成部43は、初期化で設定されたナビゲーションセンサS0の移動量の取得タイミングに達するとナビゲーションセンサI/F42にタイミングを指示する。これが周期的に行われ上記のサンプリング周期となる。
HMP20のCPU33は、移動量と角速度情報を取得するタイミングであるか否かを判定する(S108)。この判定は、割込みコントローラ41からの通知により行うが、印字/センサタイミング生成部43と同じタイミングをCPU33がカウントすることで判定してもよい。
移動量と角速度情報を取得するタイミングになると、HMP20のCPU33はナビゲーションセンサI/F42から4つのナビゲーションセンサS0〜S3の移動量をそれぞれ取得する(S109)。上記のように、ナビゲーションセンサI/F42は印字/センサタイミング生成部43が生成するタイミングでナビゲーションセンサS0〜S3から移動量を取得している。
次に、異常検出部51は、出力が異常であるナビゲーションセンサを位置の算出対象から除外する(S109−2)。上記のようにセンサ信頼度情報や移動量が閾値未満のナビゲーションセンサS0〜S3を除外する。この時、除外されなかったナビゲーションの数が1以下になる場合はOPU26にエラーなどが表示され処理が終了する。あるいは、除外されなかったナビゲーションの数が2以上になるように異常検出部51が除外するナビゲーションセンサの数を制限してもよい。
次に、位置算出回路は、前回のサンプリング周期で算出した位置(X,Y)と、今回のサンプリング周期で取得した移動量(ΔX´、ΔY´)から、現在の位置を算出し記憶部59に記憶させる(S109−3)。本実施形態では、ナビゲーションセンサの数が最大で4つである。したがって、位置の算出に使用するナビゲーションセンサS0〜S3の組合せの数は、4つから2つを選ぶ場合の数(すなわち6通り)である。
ナビゲーションセンサS0とS1の移動量から算出
ナビゲーションセンサS0とS2の移動量から算出
ナビゲーションセンサS0とS3の移動量から算出
ナビゲーションセンサS1とS2の移動量から算出
ナビゲーションセンサS1とS3の移動量から算出
ナビゲーションセンサS2とS3の移動量から算出
位置算出回路34は、除外されていない全てのナビゲーションセンサS0〜S3のうち2つの組み合わせで位置を算出する。なお、記憶部59に記憶される位置は、ナビゲーションセンサの組合せと対応付けて記憶される。
次に、センサ位置決定部52は、ノズルの位置の算出に使用する2つのナビゲーションセンサを決定する(S110)。例えば、上記のように6通りでナビゲーションセンサS0〜S3の位置が算出された場合、1つのナビゲーションセンサごとに6つの位置が算出される。ナビゲーションセンサS0を例にして説明する。まず、ナビゲーションセンサS0の位置は、ナビゲーションセンサS0とS1、S0とS2、S0とS3、の3つの組み合わせでそれぞれ算出される。
また、ナビゲーションセンサS0を組み合わせに含まないナビゲーションセンサS1とS2の移動量からS1とS2の位置が算出される。ここで、ナビゲーションセンサS1又はS2とS0の相対位置が分かっているので、ナビゲーションセンサS1とS2の移動量から算出されたナビゲーションセンサS1又はS2の位置と回転角θによりナビゲーションセンサS0の位置を推定できる。同様に、ナビゲーションセンサS1とS3の移動量から算出されたナビゲーションセンサS1又はS3の位置と回転角によりナビゲーションセンサS0の位置を推定できる。ナビゲーションセンサS2とS3の移動量から算出されたナビゲーションセンサS2又はS3の位置と回転角によりナビゲーションセンサS0の位置を推定できる。
図16は、ナビゲーションセンサS2とS3の位置と回転角θにより算出されたナビゲーションセンサS0の位置を示す。ナビゲーションセンサS0とS2の間隔をLwとすると、印刷媒体座標ではナビゲーションセンサS0とS2がLwcosθ離れていることになる。したがって、S2の座標を(X2,Y2)とすると、ナビゲーションセンサS0の座標(X0,Y0)は、X0=X2−Lwcosθ、Y0=Y2+Lwsinθ、のように求めることができる。
このように、1つのナビゲーションセンサS0について上記の組み合わせの数と同じ6つの位置が算出又は推定される。ナビゲーションセンサS1〜S3についても6つの位置の候補が推定される。
しかし、6つの位置の中に異常値が含まれている可能性があるため、単純な平均でナビゲーションセンサの位置を決定することは好ましくない。これは、今回のサンプリング周期では正常に戻っているためステップS109−2で除外されないが、前回のサンプリング周期では異常であった場合、前回の位置が異常であるため今回の位置に異常値が混ざるおそれがあるためである。
図13のようにナビゲーションセンサS0〜S3が配置されており、ナビゲーションセンサS2とS3の移動量が前回のサンプリング周期で異常であったが(例えば紙面からはみ出した)今回のサンプリング周期では異常でなかったとする。この場合、センサ位置決定部52はナビゲーションセンサS0,S1を使用するナビゲーションセンサに決定すべきである。ナビゲーションセンサS2、S3で算出された位置は、前回が異常なので正確でないおそれがある。ナビゲーションセンサS0とS2の組み合わせで算出されたナビゲーションセンサS0の位置もS2が異常であったので正確でなくなる可能性が高い。ナビゲーションセンサS1とS3の組み合わせで算出されたS1の位置もS3が異常であったので正確でなくなる可能性が高い。一方、ナビゲーションセンサS0とS1の組み合わせで算出されたナビゲーションセンサS0、S1の位置は前回も今回も異常でない移動量に基づき算出されたため正確である可能性が高い。
同様に、ナビゲーションセンサS0、S1の位置との相対位置に基づいて推定されたナビゲーションセンサS2,S3の位置も正確である可能性が高い。
そこで、センサ位置決定部52は、6つの位置から信頼度が高い位置を抽出し、この位置の算出又は推定に使用された2つのナビゲーションセンサを統計的に決定する。具体的には、センサ位置決定部52は、例えば中央値、又は、最大値と最小値を除外した平均値で、信頼度が高い位置を決定する。
(i) 中央値で決定する
算出結果である位置(X,Y)をX,Y別々に大きな順に並べ、算出された位置の数が奇数の場合、真ん中の値をナビゲーションセンサの位置に決定する。算出された位置の数が偶数の場合、真ん中付近の2つの値の平均をナビゲーションセンサの位置に決定する。
例えば、ナビゲーションセンサS0について、ナビゲーションセンサS0とS1、S0とS2、S0とS3の3つの組み合わせで移動量から位置が算出される。また、ナビゲーションセンサS0〜S3の相対位置に基づいて、ナビゲーションセンサS1とS2の位置から推定されるS0、ナビゲーションセンサS2とS3の位置から推定されるS0、ナビゲーションセンサS1とS3の位置から推定されるS0の3つの組み合わせがある。S0のX座標を昇順にX1,X2,X3、X4,X5,X6の6つとすると、X3とX4の平均が選択される。正常な移動量から算出された位置は同じ値になるか類似するので、中央値を選択することで正常な移動量から算出された位置を選択できる。
このX3が例えばS0とS1の組み合わせによる場合、センサ位置決定部52はナビゲーションセンサS0とS1についてカウント値を1つ大きくする。また、X4が例えばS1とS2の位置から推定された場合、センサ位置決定部52はS1とS2についてカウント値を1つ大きくする。
Y座標についても同様に、S0のY座標が昇順にY1,Y2,Y3、Y4、Y5、Y6の6つとすると、Y3とY4が選択される。Y3とY4の平均が選択される。
このY3が例えばナビゲーションセンサS0とS2の組み合わせによる場合、センサ位置決定部52はナビゲーションセンサS0とS2についてカウント値を1つ大きくする。また、Y4が例えばナビゲーションセンサS2とS3の位置から推定された場合、センサ位置決定部52はナビゲーションセンサS2とS3についてカウント値を1つ大きくする。
したがって、S0が2、S1が2、S2が3、S3が1というカウント値が得られる。このように、中央にあるため信頼性が高いナビゲーションセンサの位置を算出するために使用された組の各ナビゲーションセンサのカウント値、及び、中央にあるため信頼性が高いナビゲーションセンサの位置の推定に使用された組の各ナビゲーションセンサのカウント値が大きくなる。したがって、カウント値は信頼性が評価された値となる。
S1〜S3についても同様の処理を行う。これにより、例えば、ナビゲーションセンサS2とS3の移動量が前回のサンプリング周期で異常である場合は、ナビゲーションセンサS0,S1のカウント値が大きくなることが期待される。
このように、ナビゲーションセンサS0〜S3についてカウント値が算出される。センサ位置決定部52は、カウント値が高い順に上位2個のナビゲーションセンサをノズルの位置の算出に使用するナビゲーションセンサとして採用する。なお、上位2つのナビゲーションセンサの位置は中央値として算出されており、2つのナビゲーションセンサが選択されるのはセンサ位置決定部52が回転角を算出するためである。
(ii) 最大値と最小値を除外した平均値で決定する
センサごとに得られているX,Yを別々にして、最大値と最小値を除外して、除外されなかった残りのX、Yの平均値を算出する。正常な移動量から算出された位置は同じ値になるか類似するので、最大値と最小値を除外して平均値を算出することで正常な移動量から算出された位置を決定できる。
中央値の場合と同様に、ナビゲーションセンサS0のX座標が昇順にX1,X2,X3、X4,X5,X6の6つであるとする。X1とX6が削除され、X2〜X5の平均値が算出される。このX2がナビゲーションセンサS0とS1の組み合わせによる場合、センサ位置決定部52はナビゲーションセンサS0とS1のカウント値を1つ大きくする。また、X3がナビゲーションセンサS0とS2の組み合わせによる場合、ナビゲーションセンサS0とS2についてカウント値を1つ大きくする。X4がS1とS2の位置から推定された場合、S1とS2についてカウント値を1つ大きくする。X5がS1とS3の位置から推定された場合、S1とS3についてカウント値を1つ大きくする。
次に、ナビゲーションセンサS0のY座標が昇順にY1,Y2,Y3、Y4、Y5、Y6の6つであるとする。Y1とY6が削除されY2〜Y5の平均値が算出される。このY2がナビゲーションセンサS0とS1の組み合わせによる場合、センサ位置決定部52はナビゲーションセンサS0とS1のカウント値を1つ大きくする。また、Y3がナビゲーションセンサS0とS2の組み合わせによる場合、ナビゲーションセンサS0とS2についてカウント値を1つ大きくする。Y4がS1とS2の位置から推定された場合、S1とS2についてカウント値を1つ大きくする。Y5がS1とS3の位置から推定された場合、S1とS3についてカウント値を1つ大きくする。
したがって、ナビゲーションセンサS0のカウント値は4、S1のカウント値は6、S2のカウント値は4、S3のカウント値は2、になる。S1〜S3についても同様の処理を行う。したがって、ナビゲーションセンサS0〜S3についてカウント値が算出される。センサ位置決定部52は、カウント値が高い順に上位2個のナビゲーションセンサをノズルの位置の算出に使用するナビゲーションセンサとして採用する。なお、上位2つのナビゲーションセンサの位置は平均値として算出されており、2つのナビゲーションセンサが選択されるのはセンサ位置決定部52が回転角を算出するためである。
このように、1つのナビゲーションセンサについて複数の位置を算出して単純に平均値を算出するのでなく、中央値又は平均値に使用されたナビゲーションセンサのカウント値によって信頼性が高いナビゲーションセンサを選択できる。したがって、4つのナビゲーションセンサS0〜S3からはみ出していないナビゲーションセンサを選択する可能性が高くなり、印刷品質を低下させないで印刷形成を継続できる。
なお、(i)では中央値に採用されなかったナビゲーションセンサの数をカウントしてもよい。また、(ii)では、最大値と最小値であったため除外されたナビゲーションセンサの数をカウントしてもよい。この場合、カウント値が少ない順に上位2つのナビゲーションセンサが選択される。
また、(i)又は(ii)の方法のいずれの場合も、上位2つを選ぶのでなくn個(2≦n<N)のナビゲーションセンサを選択してもよい。例えば、6つのナビゲーションセンサがありそのうち2つのナビゲーションセンサが印刷媒体12からはみ出した場合、4つのナビゲーションセンサの位置は信頼性が高いと考えられる。したがって、上位4つのナビゲーションセンサが選択されそのうち任意の2つのナビゲーションセンサが選択されても、印刷品質に大きな影響はないはずである。すなわち、はみ出した可能性があるナビゲーションセンサを何らかの方法で推定できれば、はみ出していないと推定される数のナビゲーションセンサを選択すればよい。しかしながら、上位2つを選ぶことで、印刷媒体12上にある2つのナビゲーションセンサを選択できる可能性が高いと考えられるため好適である。
以上のように、(i)又は(ii)の方法で2つのナビゲーションセンサが決定される。この2つのナビゲーションセンサの位置は中央値又は平均値で算出されているが、回転角が不明である。ノズル61の位置を算出するためには回転角が必要なため、センサ位置決定部52は決定した2つのナビゲーションセンサを位置算出回路34に通知する。これにより、位置算出回路34は、センサ位置決定部52が決定した2つのナビゲーションセンサの移動量を用いて回転角の変化量(すなわち回転角)を算出する。したがって、2つのナビゲーションセンサの位置(どちら1つあればよい)と回転角を用いてノズル61の位置を算出できる。
なお、センサ位置補正部53は、採用された2個のナビゲーションセンサの位置とナビゲーションセンサS0〜S3の相対位置の関係から、採用されなかったナビゲーションセンサ(2個)の位置を補正することができる。すなわち、採用されなかったナビゲーションセンサ(2個)の位置を、相対位置で推定された位置で置き換える。あるいは、採用されなかったナビゲーションセンサ(2個)の位置と相対位置で推定された位置の平均値を、採用されなかったナビゲーションセンサ(2個)の位置とする。
また、補正の要否を判定してもよい。この場合、1つのナビゲーションセンサの6つの位置に異常値が混ざっているか否かを判定する。センサ位置補正部53は例えば1つのナビゲーションセンサの位置の標準偏差を求め、標準偏差が閾値以上の場合、異常値が混ざっていると判定する。そして、異常値が混ざっていない場合にのみ位置の補正を行う。標準偏差でなく分散を用いてもよい。
次に、位置算出回路34は、ステップS110で決定されたナビゲーションセンサの現在の位置を用いて各ノズル61の現在の位置を算出する(S111)。
次に、CPU33は画像読取部38に画像を読み取らせる。画像読取部38は算出した各ノズル61の位置を基に、各ノズル61の周辺画像の画像データをDRAM29から読み取る(S112)。
次に、IJ記録ヘッド制御部44は周辺画像を構成する各画像要素の位置座標と、各ノズル61の位置座標とを比較する(S113)。位置算出回路34は、ノズル61の過去の位置と現在の位置を用いてノズル61の加速度を算出している。これにより、位置算出回路34は、ナビゲーションセンサI/F42が移動量を取得する周期よりも短いIJ記録ヘッド24のインク吐出周期ごとにノズル61の位置を算出している。IJ記録ヘッド制御部44は、位置算出回路34が算出するノズル61の位置から所定範囲内に画像要素の位置座標が含まれるか否かを判定する(吐出ノズル可否判定)。
吐出条件を満たさない場合、処理はステップS108に戻る。吐出条件を満たす場合、IJ記録ヘッド制御部44はノズル61ごとに画像要素のデータをIJ記録ヘッド駆動回路23に出力する(S115)。これにより、印刷媒体12にはインクが吐出される。
次に、CPU33は全画像データを出力したかを判定する(S116)。出力していない場合、ステップS108からS115までの処理を繰り返す。
全画像データを出力した場合、CPU33は、例えばOPU26のLEDを点灯させユーザに印刷が終了したことを報知する(S117)。
なお、全画像データを出力しなくても、ユーザが十分と判断した場合には、ユーザは印刷完了ボタンを押下し、OPU26がそれを受け付けて、印刷を終了してよい。印刷終了後、ユーザが電源をOFFにすることもできるし、印刷が終了した時点で、自動で電源がOFFにされるようになっていてもよい。
以上説明したように、ナビゲーションセンサが3つ以上あることで、HMPは2つ以上のナビゲーションセンサを用いてノズル61の位置の算出を継続し、印刷品質の低下を抑制して印刷を継続できる。
<その他の適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、上記したSoC50、ASIC/FPGA40の構成要素は、CPU性能やASIC/FPGA40の回路規模等により、どちらに含まれていてもよい。
また、本実施形態ではインクを吐出して画像を形成すると説明したが、可視光、紫外線、赤外線、レーザなどを照射して画像を形成してもよい。この場合、印刷媒体12として例えば熱や光に反応するものが用いられる。また、透明な液体を吐出してもよい。この場合、特定の波長域の光が照射されると可視情報が得られる。また、金属ペーストや樹脂などを吐出してもよい。
なお、ナビゲーションセンサ30は移動量検出手段の一例であり、位置算出回路34は第二の位置算出手段の一例であり、画像読取部38は第一の位置算出手段の一例であり、
センサ位置決定部52は選択手段の一例であり、異常検出部51は除外手段の一例であり、センサ位置補正部53は補正手段の一例である。ナビゲーションセンサ30の位置は検出手段位置の一例である。IJ記録ヘッド制御部44等は液滴吐出手段の一例であり、HMP20は液滴吐出装置の一例である。