(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】スライドスキャナの制御
(51)【国際特許分類】
G02B 21/34 20060101AFI20240920BHJP
G02B 21/24 20060101ALI20240920BHJP
【FI】
G02B21/34
G02B21/24
(21)【出願番号】P 2021538318
(86)(22)【出願日】2020-08-05
(86)【国際出願番号】 US2020045071
(87)【国際公開番号】W WO2021026276
(87)【国際公開日】2021-02-11
【審査請求日】2023-06-23
(32)【優先日】2019-08-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503293765
【氏名又は名称】ライカ バイオシステムズ イメージング インコーポレイテッド
【氏名又は名称原語表記】Leica Biosystems Imaging, Inc.
【住所又は居所原語表記】1360 Park Center Dr., Vista, CA 92081, United States of America
(74)【代理人】
【識別番号】100114890
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100135633
【氏名又は名称】二宮 浩康
(74)【代理人】
【識別番号】100162880
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ペイマン ナジマバディ
(72)【発明者】
【氏名】ニコラス ニューバーグ
(72)【発明者】
【氏名】プレンタッシュ ジェロセヴィッチ
(72)【発明者】
【氏名】アーロン スティアレット
【審査官】瀬戸 息吹
(56)【参考文献】
【文献】米国特許出願公開第2019/0170777(US,A1)
【文献】米国特許出願公開第2006/0173575(US,A1)
【文献】米国特許出願公開第2019/0162741(US,A1)
【文献】特開2004-348350(JP,A)
【文献】特開2017-044648(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G02B 19/00 - 21/36
G01N 35/00 - 37/00
(57)【特許請求の範囲】
【請求項1】
スキャンシステムであって、
前記スキャンシステムは、複数の
フロントエンドコンポーネントを含み、前記複数の
フロントエンドコンポーネン
トは、カルーセル
、モータおよびセンサを含
み、前記カルーセルは、複数のラックスロットを含み、前記複数のラックスロットは、複数のスライドラックを収容するように構成されており、前記カルーセルの第1の部分は、
前記カルーセルの部分が前記スキャンシステムの外部環境からアクセス可能
な露出部分であり、前記カルーセルの第2の部分は、前記外部環境からアクセス不可能であり、
各ラックスロットは、前記ラックスロットがスライドラックによって占有されているか否かを判定するように位置決めされた検出器に関連付けられ、または、アクセス可能であり、
前記スキャンシステムは、スライドラックを処理するための複数のバックエンドコンポーネントを含み、前記バックエンドコンポーネントは、モータおよびセンサを含み、スライドラックを前記カルーセルからロードおよびアンロードし、アンロードされたスライドラックとスキャンステージとの間でガラススライドを移動させ、
前記スキャンシステムは、少なくとも1つのハードウェアプロセッサを含み、
前記少なくとも1つのハードウェアプロセッサは、
バックエンドステートマシンに従って前記バックエンドコンポーネントを制御するとともに、前記バックエンドステートマシンから独立して動作するフロントエンドステートマシンに従って前記フロントエンドコンポーネントを制御するように構成され、
前記フロントエンドステートマシンは、前記フロントエンドコンポーネントの前記モータおよび前記センサを制御するように構成され、前記バックエンドステートマシンは、前記バックエンドコンポーネントの前記モータおよび前記センサを制御するように構成され、
前記少なくとも1つのハードウェアプロセッサは、
それぞれの前記バックエンドステートマシンおよび前記フロントエンドステートマシンを制御することによって、前記
バックエンドコンポーネントおよび前記フロントエンドコンポーネントの各々をそれぞれの初期ゼロ位置へと移動させ、
前記カルーセルの前記複数のラックスロットの内部の全てのスライドラックの目録を生成し、
前記目録に基づいて、前記複数のスライドラックのうちのいずれか1つのスライドラックが前記カルーセルから前記
バックエンドコンポーネントにアンロードされているかどうかを判定し、
前記複数のスライドラックのうちの前記1つのスライドラックが前記カルーセルからアンロードされていることに応答して、
それぞれの前記バックエンドステートマシンおよび前記フロントエンドステートマシンを制御することによって、前記複数のスライドラックのうちの前記1つのスライドラックを前記カルーセルの前記複数のラックスロットのうちの対応する1つのラックスロット
内に返却し、
前記複数のラックスロットのうちの開始サブセットを前記カルーセルの前記第1の部分内で露出させるために、前記カルーセルを位置決めする
、
ように構成されている、
スキャンシステム。
【請求項2】
前記少なくとも1つのハードウェアプロセッサは、
前記複数のラックスロットから空のラックスロットの最大連続セグメントを識別し、
前記空のラックスロットの最大連続セグメントを、前記複数のラックスロットのうちの前記開始サブセットの一部として選択する、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項3】
前記複数のラックスロットの各々は、前記複数のラックスロット間での各自の順序を表す指標に関連付けられており、
前記少なくとも1つのハードウェアプロセッサは、
隣り合う空のラックスロットの最大連続セグメントが2つ以上ある場合に、前記2つ以上の最大連続セグメント内のラックスロットに関連付けられた前記指標に基づいて、前記2つ以上の最大連続セグメントのうちの1つを前記開始サブセットとして選択するようにさらに構成されている、
請求項2記載のスキャンシステム。
【請求項4】
前記スキャンシステムは、
リミットスイッチと、
前記カルーセルの位置決めを支配するように構成されたエンコー
ダと、
をさらに含み、
前記
バックエンドコンポーネントおよび前記フロントエンドコンポーネントの各々をそれぞれの初期ゼロ位置へと移動させることは、
前記リミットスイッチがトリガされるまで前記カルーセルを第1の方向に回転させることと、
前記リミットスイッチから後退するために前記カルーセルを前記第1の方向とは反対の第2の方向に回転させることと、
前記カルーセルを前記第1の方向に回転させて、前記リミットスイッチをトリガすることと、
前記エンコーダの少なくとも1つの位置をゼロにすることと、
を含む、
請求項1記載のスキャンシステム。
【請求項5】
前記スキャンシステムは、スキャンステージをさらに含み、
前記スキャンステージは、スライドが前記スキャンステージ上にロードされると、前記スライドをスキャンするように構成されており、
前記少なくとも1つのハードウェアプロセッサは、
前記複数のスライドラックのうちの前記1つのスライドラックを前記複数のラックスロットのうちの前記対応する1つのラックスロットに返却する前に、前記スキャンステージから前記スライドをアンロードして前記複数のスライドラックのうちの前記1つのスライドラック内の対応するスライドスロットに入れるようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項6】
前記少なくとも1つのハードウェアプロセッサは、
前記複数のラックスロットのうちの1つのラックスロットに対応するスライドラックのユーザ選択を受信し、
選択された前記スライドラックが前記スキャンシステムによって処理されている最中である場合に、前記選択されたスライドラックの処理を中断し、前記選択されたスライドラックを前記複数のラックスロットのうちの対応する1つのラックスロットに返却し、
前記複数のラックスロットのうちの前記対応する1つのラックスロットが、前記外部環境からアクセス可能である前記カルーセルの前記第1の部分内に位置決めされるように、前記カルーセルを位置決めする、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項7】
前記スキャンシステムは、複数の視覚的インジケータをさらに含み、前記複数の視覚的インジケータは、前記外部環境からアクセス可能である前記カルーセルの前記第1の部分内に位置決めされた前記複数のラックスロットのうちの1つにそれぞれ関連付けられており、
前記少なくとも1つのハードウェアプロセッサは、前記外部環境からアクセス可能である前記カルーセルの前記第1の部分内に位置決めされた前記複数のラックスロットの各々に対して、
前記ラックスロットのステータスを検出し、
検出された前記ステータスを示すように、前記ラックスロットに関連付けられた前記視覚的インジケータを制御する、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項8】
前記少なくとも1つのハードウェアプロセッサは、
前記外部環境からアクセス可能である前記カルーセルの前記第1の部分内の前記複数のラックスロットのうちの1つのラックスロットへのスライドラックの挿入を検出し、
前記複数のラックスロットのうちの前記1つのラックスロットへの前記スライドラックの挿入が検出されたことに応答して、前記複数のラックスロットのうちの前記1つのラックスロットが前記スライドラックによって占有されていることを反映するために、前記複数のラックスロットのうちの前記1つのラックスロットのステータスを更新する、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項9】
前記スキャンシステムは、前記外部環境からアクセス可能である前記カルーセルの前記第1の部分の周りに形成されたライトカーテンをさらに含み、
前記少なくとも1つのハードウェアプロセッサは、
前記ライトカーテンの中断を検出し、
前記ライトカーテンの中断が検出されている間、前記カルーセルの回転を阻止する、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項10】
前記少なくとも1つのハードウェアプロセッサは、
前記カルーセルを回転させることを決定し、
前記カルーセルを回転させることを決定したことに応答して、前記カルーセルの回転を、所定の遅延期間の間、遅延させ、
前記ライトカーテンの中断が検出されるたびに前記遅延期間をリセットする、
ようにさらに構成されている、
請求項9記載のスキャンシステム。
【請求項11】
前記スキャンシステムは、ディスプレイをさらに含み、
前記少なくとも1つのハードウェアプロセッサは、
前記遅延期間の残りの量を示すように、前記ディスプレイを制御するようにさらに構成されている、
請求項10記載のスキャンシステム。
【請求項12】
前記少なくとも1つのハードウェアプロセッサは、
前記カルーセルが移動した回転距離を監視し、
前記回転距離が所定の閾値を超えていると判定されたことに応答して、前記カルーセルのためのドリフト補正を実行する、
ようにさらに構成されている、
請求項1記載のスキャンシステム。
【請求項13】
請求項1から12までのいずれかに記載のスキャンシステムを制御するための方法であって
、前記方法は、
前記スキャンシステムの
前記バックエンドコンポーネントおよび前記フロントエンドコンポーネントの各々をそれぞれの初期ゼロ位置へと移動させる
ステップと、
前記カルーセルの前記複数のラックスロットの内部の全てのスライドラックの目録を生成する
ステップと、
前記目録に基づいて、前記複数のスライドラックのうちのいずれか1つのスライドラックが前記カルーセルから前記
バックエンドコンポーネントにアンロードされているかどうかを判定する
ステップと、
前記複数のスライドラックのうちの前記1つのスライドラックが前記カルーセルからアンロードされていることに応答して、
それぞれの前記バックエンドステートマシンおよび前記フロントエンドステートマシンを制御することによって、前記複数のスライドラックのうちの前記1つのスライドラックを前記カルーセルの前記複数のラックスロットのうちの対応する1つのラックスロット
内に返却する
ステップと、
前記複数のラックスロットのうちの開始サブセットを前記カルーセルの前記第1の部分内で露出させるために、前記カルーセルを位置決めする
ステップと、
を含
む方法。
【請求項14】
前記方法は、
前記複数のラックスロットから空のラックスロットの最大連続セグメントを識別する
ステップと、
前記空のラックスロットの最大連続セグメントを、前記複数のラックスロットのうちの前記開始サブセットの一部として選択する
ステップと、
をさらに含む、
請求項13記載の方法。
【請求項15】
前記複数のラックスロットの各々は、前記複数のラックスロット間での各自の順序を表す
指標に関連付けられており、
前記方法は、
隣り合う空のラックスロットの最大連続セグメントが2つ以上ある場合に、前記2つ以上の最大連続セグメント内のラックスロットに関連付けられた前記
指標に基づいて、前記2つ以上の最大連続セグメントのうちの1つを前記開始サブセットとして選択する
ステップをさらに含む、
請求項14記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2019年8月6日に出願された米国仮特許出願第62/883,340号明細書の優先権を主張し、その内容を、本明細書中に完全に記載されているかのように、参照により本明細書に援用するものとする。
【0002】
本願はさらに、以下の出願に関連しており、これら全てを、本明細書中に完全に記載されているかのように、参照により本明細書に援用するものとする:
2016年9月23日に出願された国際特許出願第PCT/US2016/053581号明細書、
2017年4月20日に出願された国際特許出願第PCT/US2017/028532号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063456号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063460号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063450号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063461号明細書、
2018年11月27日に出願された国際特許出願第PCT/US2018/062659号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063464号明細書、
2018年10月4日に出願された国際特許出願第PCT/US2018/054460号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063465号明細書、
2018年10月4日に出願された国際特許出願第PCT/US2018/054462号明細書、
2018年11月30日に出願された国際特許出願第PCT/US2018/063469号明細書、
2018年10月4日に出願された国際特許出願第PCT/US2018/054464号明細書、
2018年8月17日に出願された国際特許出願第PCT/US2018/046944号明細書、
2018年10月4日に出願された国際特許出願第PCT/US2018/054470号明細書、
2018年9月28日に出願された国際特許出願第PCT/US2018/053632号明細書、
2018年9月28日に出願された国際特許出願第PCT/US2018/053629号明細書、
2018年9月28日に出願された国際特許出願第PCT/US2018/053637号明細書、
2018年11月28日に出願された国際特許出願第PCT/US2018/062905号明細書、
2018年11月29日に出願された国際特許出願第PCT/US2018/063163号明細書、
2017年12月29日に出願された国際特許出願第PCT/US2017/068963号明細書、
2019年3月1日に出願された国際特許出願第PCT/US2019/020411号明細書、
2017年12月29日に出願された米国特許出願第29/631,492号明細書、
2017年12月29日に出願された米国特許出願第29/631,495号明細書、
2017年12月29日に出願された米国特許出願第29/631,499号明細書、
2017年12月29日に出願された米国特許出願第29/631,501号明細書。
【背景技術】
【0003】
本明細書に記載の実施形態は、概して、スライドスキャンシステムを制御することに関し、より具体的には、スライドスキャンシステムのワークフローのプロセスを制御することに関する。
【発明の概要】
【課題を解決するための手段】
【0004】
スライドスキャンシステムのワークフローを管理する制御プロセスのためのシステム、方法および非一時的なコンピュータ可読媒体が開示されている。
【0005】
一実施形態では、カルーセルを含むスキャンシステムを制御するための方法であって、カルーセルは、複数のラックスロットを含み、複数のラックスロットは、スキャンシステムの外部環境からカルーセルの一部にアクセス可能となっている露出した部分を介してスライドラックを収容するように構成されており、当該方法は、スキャンシステムが開始されたときに、少なくとも1つのハードウェアプロセッサを使用して、以下のことを自動的に実施することにより、すなわち、スキャンシステムのバックエンドコンポーネントとカルーセルを含むフロントエンドコンポーネントとをホーミングすることと、カルーセルの複数のラックスロットの内部の全てのスライドラックの目録を作成することと、いずれかのスライドラックがいずれかのバックエンドコンポーネントによって処理されている最中であった場合に、当該スライドラックをアンロードして、カルーセルの複数のラックスロットのうちの対応する1つのラックスロットに入れることと、複数のラックスロットのうちの開始サブセットを露出した部分内で露出させるために、カルーセルを位置決めすることと、を自動的に実施することにより、スキャンシステムを初期化することを含む、方法が開示されている。
【0006】
複数のラックスロットの各々は、当該複数のラックスロット間での各自の順序を表す指標に関連付け可能であり、複数のラックスロットの開始サブセットは、隣り合う空のラックスロットの最大セグメントからなり、カルーセルを位置決めすることは、隣り合う空のラックスロットの最大セグメントが2つ以上ある場合に、2つ以上の最大セグメント内のラックスロットに関連付けられた指標に基づいて、2つ以上の最大セグメントのうちの1つを開始サブセットとして選択することを含む。
【0007】
フロントエンドコンポーネントをホーミングすることは、以下のことを実施することにより、すなわち、リミットスイッチがトリガされるまでカルーセルを第1の方向に回転させることと、リミットスイッチから後退するためにカルーセルを第1の方向とは反対の第2の方向に回転させることと、カルーセルを第1の方向に回転させて、リミットスイッチをトリガすることと、カルーセルの位置決めを支配するエンコーダの少なくとも1つの位置をゼロにすることとを実施することにより、カルーセルをホーミングすることを含むことができる。
【0008】
スライドラックをアンロードして対応するラックスロットに入れることは、スライドラックをアンロードして対応するラックスロットに入れる前に、スキャンステージからスライドをアンロードしてスライドラック内の対応するスライドスロットに入れることを含むことができる。
【0009】
当該方法は、スキャンシステムを初期化した後、スキャンシステムの動作中に、少なくとも1つのハードウェアプロセッサを使用して、複数のラックスロットのうちの隣り合う空のラックスロットの最大セグメントをスキャンシステムの露出した部分内で露出させるために、カルーセルを自動的に位置決めすることをさらに含むことができる。
【0010】
当該方法は、スライドラックがスキャンシステムのバックエンドコンポーネントによって処理されている間に、少なくとも1つのハードウェアプロセッサを使用して、カルーセルを回転させることをさらに含むことができる。カルーセルを回転させることは、複数のラックスロットのうちの隣り合う空のラックスロットの最大セグメントをスキャンシステムの露出した部分内で露出させるために、カルーセルを自動的に位置決めすることを含むことができる。カルーセルを回転させることは、ユーザ動作に応答してカルーセルを位置決めすることを含むことができる。ユーザ動作に応答してカルーセルを位置決めすることは、複数のラックスロットのうちの1つのラックスロットに対応するスライドラックのユーザ選択に応答して、選択されたスライドラックがスキャンシステムのバックエンドコンポーネントによって処理されている最中である場合に、選択されたスライドラックの処理を中断し、当該スライドラックをアンロードして対応するラックスロットに入れることと、対応するラックスロットがスキャンシステムの露出した部分内で露出されるように、カルーセルを位置決めすることとを含むことができる。
【0011】
スキャンシステムは、複数の視覚的インジケータを含み、複数の視覚的インジケータは、スキャンシステムの露出した部分内に位置決めされた複数のラックスロットのうちの1つにそれぞれ関連付けられており、当該方法は、スキャンシステムの露出した部分内に位置決めされた複数のラックスロットの各々に対して、少なくとも1つのハードウェアプロセッサを使用して、ラックスロットまたはラックスロットの内部のスライドラックのステータスを検出することと、検出されたステータスを示すように、ラックスロットに関連付けられた視覚的インジケータを制御することと、をさらに含むことができる。複数の視覚的インジケータの各々を、発光体とすることができ、少なくとも1つのプロセッサは、スキャンシステムの露出した部分内に位置決めされた複数のラックスロットの各々に対して、検出されたステータスに関連付けられた色で輝くようにそれぞれの発光体を制御する。
【0012】
カルーセルを位置決めすることは、カルーセルを、複数の割り出し位置のうちの1つへと回転させることを含むことができる。複数の割り出し位置は、複数のラックスロットの数に等しい数の割り出し位置からなることができる。
【0013】
当該方法は、少なくとも1つのハードウェアプロセッサを使用して、スキャンシステムの露出した部分内の複数のラックスロットのうちの1つのラックスロットへのスライドラックの挿入を検出することと、1つのラックスロットへのスライドラックの挿入が検出されたことに応答して、1つのラックスロットがスライドラックによって占有されていることを反映するために、1つのラックスロットのステータスを更新することとをさらに含むことができる。
【0014】
スキャンシステムは、スキャンシステムの露出した部分の周りにライトカーテンを含むことができ、当該方法は、少なくとも1つのハードウェアプロセッサを使用して、ライトカーテンの中断を検出することと、ライトカーテンの中断が検出されている間、回転を阻止することとをさらに含むことができる。当該方法は、カルーセルを回転させることを決定した場合に、少なくとも1つのハードウェアプロセッサを使用して自動的に、カルーセルの回転を、所定の遅延期間の間、遅延させることと、ライトカーテンの中断が検出されるたびに遅延期間をリセットすることとをさらに含むことができる。スキャンシステムは、ディスプレイを含むことができ、当該方法は、少なくとも1つのハードウェアプロセッサを使用して、ディスプレイ上のグラフィカルユーザインターフェースの内部に遅延期間の残りの量を示すことをさらに含むことができる。
【0015】
当該方法は、スライドラックがスキャンシステムのバックエンドコンポーネントによって処理されている間にカルーセルを回転させる場合に、少なくとも1つのハードウェアプロセッサを使用して、複数のラックスロットうちの、処理されている最中のスライドラックに対応する1つのラックスロットが、スキャンシステムの露出した部分内で露出されることが阻止されるように、カルーセルを回転させることをさらに含むことができる。
【0016】
当該方法は、少なくとも1つのハードウェアプロセッサを使用して、カルーセルが移動した回転距離を監視することと、回転距離が所定の閾値を超えていると判定されたことに応答して、カルーセルのためのドリフト補正を実行することとをさらに含むことができる。
【0017】
スキャンシステムは、カルーセルと、スキャンシステムの露出した部分の周りのフレームとの間のピンチポイントにピンチポイントセンサを含むことができ、当該方法は、少なくとも1つのハードウェアプロセッサを使用して、ピンチポイントセンサを介してピンチポイントにおいて障害物を検出することと、障害物が検出されている間、回転を阻止することとをさらに含む。
【0018】
当該方法は、少なくとも1つのハードウェアプロセッサを使用して、バックエンドコンポーネントを、バックエンドステートマシンに従って制御することと、フロントエンドコンポーネントを、バックエンドステートマシンから独立して動作するフロントエンドステートマシンに従って制御することとをさらに含むことができる。バックエンドステートマシンは、カルーセルを含む1つまたは複数のフロントエンドコンポーネントを制御せよとの命令を、フロントエンドステートマシンに送信するように構成可能である。
【0019】
一実施形態では、スキャンシステムであって、当該スキャンシステムは、少なくとも1つのハードウェアプロセッサと、スライドラックを収容するように構成された複数のラックスロットを含むカルーセルと、スキャンシステムの外部環境からカルーセルの一部にアクセス可能となっている露出した部分と、1つまたは複数のソフトウェアモジュールとを含み、1つまたは複数のソフトウェアモジュールは、スキャンシステムが開始されたときに、少なくとも1つのハードウェアプロセッサによって実行されると、以下のことを自動的に実施することにより、すなわち、スキャンシステムのバックエンドコンポーネントとカルーセルを含むフロントエンドコンポーネントとをホーミングすることと、カルーセルの複数のラックスロットの内部の全てのスライドラックの目録を作成することと、いずれかのスライドラックがいずれかのバックエンドコンポーネントによって処理されている最中であった場合に、当該スライドラックをアンロードして、カルーセルの複数のラックスロットのうちの対応する1つのラックスロットに入れることと、複数のラックスロットのうちの開始サブセットを露出した部分内で露出させるために、カルーセルを位置決めすることと、を自動的に実施することにより、スキャンシステムを初期化するように構成されている、スキャンシステムが開示されている。
【0020】
一実施形態では、命令が格納された非一時的なコンピュータ可読媒体であって、命令は、カルーセルを含むスキャンシステムのプロセッサによって実行され、なお、カルーセルは、複数のラックスロットを含み、複数のラックスロットは、スキャンシステムの外部環境からカルーセルの一部にアクセス可能となっている露出した部分を介してスライドラックを収容するように構成されており、命令は、カルーセルを含むスキャンシステムのプロセッサによって実行されると、スキャンシステムが開始されたときに、以下のことを自動的に実施することにより、すなわち、スキャンシステムのバックエンドコンポーネントとカルーセルを含むフロントエンドコンポーネントとをホーミングすることと、カルーセルの複数のラックスロットの内部の全てのスライドラックの目録を作成することと、いずれかのスライドラックがいずれかのバックエンドコンポーネントによって処理されている最中であった場合に、当該スライドラックをアンロードして、カルーセルの複数のラックスロットのうちの対応する1つのラックスロットに入れることと、複数のラックスロットのうちの開始サブセットを露出した部分内で露出させるために、カルーセルを位置決めすることと、を自動的に実施することにより、プロセッサに、スキャンシステムを初期化させる、非一時的なコンピュータ可読媒体が開示されている。
【0021】
本発明の詳細は、その構造および動作の両方に関して、添付の図面を研究することによって部分的に入手可能であり、添付の図面では、同様の参照符号が同様の部分を指している。
【図面の簡単な説明】
【0022】
【
図1A】一実施形態による、本明細書に記載の種々の実施形態に関連して使用することができる例示的なプロセッサ対応のデバイスを示す図である。
【
図1B】一実施形態による、単一のリニアアレイを有する例示的なラインスキャンカメラを示す図である。
【
図1C】一実施形態による、3つのリニアアレイを有する例示的なラインスキャンカメラを示す図である。
【
図1D】一実施形態による、複数のリニアアレイを有する例示的なラインスキャンカメラを示す図である。
【
図2A】一実施形態による、例示的なカルーセルの上面図である。
【
図2B】一実施形態による、例示的なカルーセルの斜視図である。
【
図2C】一実施形態による、複数のスライドラックがロードされている例示的なカルーセルの上面図である。
【
図2D】一実施形態による、複数のスライドラックがロードされている例示的なカルーセルの斜視図である。
【
図2E】一実施形態による、例示的なスライドラックの側面図である。
【
図2F】一実施形態による、例示的なスライドラックの斜視図である。
【
図3A】一実施形態による、スキャンシステムの例示的なプッシュ/プルアセンブリ、スライドラックおよびスキャンステージの斜視図である。
【
図3B】一実施形態による、スキャンシステムの例示的なプッシュ/プルアセンブリ、スライドラックおよびスキャンステージの斜視図である。
【
図4】一実施形態による、スキャンシステムを制御するための例示的な視覚処理ユニット(VPU)を示す図である。
【
図5】一実施形態による、集中型デバイス管理のための外部ソフトウェアの例を示す図である。
【
図6】一実施形態による、VPUの制御ソフトウェアと外部ソフトウェアとの間のインターフェースの例を示す図である。
【
図7A】一実施形態による、スキャンシステムにおけるカルーセルの割り出し位置を示す図である。
【
図7B】一実施形態による、スキャンシステムにおけるカルーセルの非割り出し位置を示す図である。
【
図8】一実施形態による、スキャンシステムにおけるピンチポイントセンサを示す図である。
【
図9A】一実施形態による、スキャンシステムにおけるライトカーテンを示す図である。
【
図9B】一実施形態による、スキャンシステムにおけるライトカーテンを示す図である。
【
図10】一実施形態による、スキャンシステムのオートローダシステムの例示的な初期化プロセスを示す図である。
【
図11A】一実施形態による、スキャンシステムのオートローダシステムの挙動を示す図である。
【
図11B】一実施形態による、スキャンシステムのオートローダシステムの挙動を示す図である。
【
図12】一実施形態による、スキャンシステムのコンソール上に表示することができるグラフィカルユーザインターフェースのカルーセル画面を示す図である。
【
図13】一実施形態による、スキャンシステムのカルーセルのための例示的なホーミングプロセスを示す図である。
【
図14A】一実施形態による、スライドラックをロードするためのプロセスを示す図である。
【
図14B】一実施形態による、スライドラックをロードするためのプロセスを示す図である。
【
図14C】一実施形態による、スライドラックをロードするためのプロセスを示す図である。
【
図15A】一実施形態による、スライドラックをアンロードするためのプロセスを示す図である。
【
図15B】一実施形態による、スライドラックをアンロードするためのプロセスを示す図である。
【
図15C】一実施形態による、スライドラックをアンロードするためのプロセスを示す図である。
【
図16A】一実施形態による、露出されるべき隣り合うラックスロットのセグメントを識別するための例示的なラックスロット値を示す図である。
【
図16B】一実施形態による、露出されるべき隣り合うラックスロットのセグメントを識別するための例示的なラックスロット値を示す図である。
【
図16C】一実施形態による、露出されるべき隣り合うラックスロットのセグメントを識別するための例示的なラックスロット値を示す図である。
【
図16D】一実施形態による、露出されるべき隣り合うラックスロットのセグメントを識別するための例示的なラックスロット値を示す図である。
【
図16E】一実施形態による、露出されるべき隣り合うラックスロットのセグメントを識別するための例示的なラックスロット値を示す図である。
【
図17A】一実施形態による、アクティブなスライドラックの能動的な回転を示す図である。
【
図17B】一実施形態による、アクティブなスライドラックの能動的な回転を示す図である。
【
図17C】一実施形態による、アクティブなスライドラックの能動的な回転を示す図である。
【
図18】一実施形態による、非アクティブなスライドラックの能動的な回転のためのプロセスを示す図である。
【
図19】一実施形態による、スキャンシステムのカルーセルが動いている間にピンチポイントセンサが使用されるプロセスを示す図である。
【
図20】一実施形態による、デュアルステートマシンにおけるデータフローを示す図である。
【
図21】一実施形態による、デュアルステートマシンを使用した、スキャンワークフローと、コンソールと、操作者と間の例示的なインタラクションの概観を示す図である。
【0023】
詳細な説明
一実施形態では、スライドスキャンシステムのワークフローを管理する制御プロセスのためのシステム、方法および非一時的なコンピュータ可読媒体が開示されている。一実施形態では、開示されているスライドスキャンシステムは、大規模な臨床組織学研究室向けに設計された、スライド全体をイメージングする高スループットのスキャナである。本明細書で説明するように、スライドスキャンシステムは、標準的な動作と、開発、製造および技術的支援のための動作と、トラブルシューティングとを完了することを含め、そのライフサイクル全体にわたって種々のソフトウェアモジュールとインタラクションすることができる。
【0024】
本明細書を読了後、当業者には、種々の代替的な実施形態および代替的な用途において本発明をどのように実施すべきであるかが明らかになるであろう。ただし、本明細書において本発明の種々の実施形態について説明するが、これらの実施形態は、限定するものではなく、例示および例証としてのみ提示されていることを理解されたい。したがって、種々の実施形態のこの詳細な説明は、添付の特許請求の範囲に記載されている本発明の範囲または外延を制限するものとして解釈されるべきではない。
【0025】
1.例示的なスキャンシステム
【0026】
1.1.概要
【0027】
図1Aは、本明細書に記載の種々の実施形態に関連して使用することができる例示的なプロセッサ対応のスライドスキャンシステム100を示すブロック図である。当業者によって理解されるように、スキャンシステム100の代替的な形態を使用してもよい。図示の実施形態では、スキャンシステム100は、以下のものを含むデジタルイメージングデバイスとして提示されており、すなわち、このデジタルイメージングデバイスは、1つまたは複数のプロセッサ104、1つまたは複数のメモリ106、1つまたは複数の動き制御装置108、1つまたは複数のインターフェースシステム110、1つまたは複数の試料116を備えた1つまたは複数のガラススライド114をそれぞれ支持する1つまたは複数の可動ステージ112、試料116を照明する1つまたは複数の照明システム118、光軸に沿って進行する光路122をそれぞれ画定する1つまたは複数の対物レンズ120、1つまたは複数の対物レンズポジショナ124、1つまたは複数のオプションの落射照明システム126(例えば、蛍光スキャン式の実施形態に含まれる)、1つまたは複数の集束光学系128、1つまたは複数のラインスキャンカメラ130および/またはそれぞれが試料116上ならびに/もしくはガラススライド114上に別個の視野134を画定する1つまたは複数のエリアスキャンカメラ132を含む。スキャンシステム100の種々の要素は、1つまたは複数の通信バス102を介して通信可能に結合されている。スキャンシステム100の種々の要素の各々は、複数であってもよいが、以降の説明を簡単にする目的で、適切な情報を伝えるために複数形で説明する必要がある場合を除き、これらの要素を単数形で説明することとする。
【0028】
プロセッサ104は、例えば、命令を並列に処理することができる中央処理装置(CPU)および別個のグラフィックス処理装置(GPU)を含んでいてもよいし、または命令を並列に処理することができるマルチコアプロセッサを含んでいてもよい。特定のコンポーネントを制御するため、または画像処理のような特定の機能を実行するために、追加的な別個のプロセッサを設けてもよい。例えば、追加的なプロセッサは、データ入力を管理するための補助プロセッサ、浮動小数点数学演算を実行するための補助プロセッサ、信号処理アルゴリズムの高速実行に適したアーキテクチャを有する専用プロセッサ(例えば、デジタル信号プロセッサ)、メインプロセッサに従属するスレーブプロセッサ(例えば、バックエンドプロセッサ)、ラインスキャンカメラ130、ステージ112、対物レンズ120および/またはディスプレイを制御するための追加的なプロセッサ(例えば、スキャンシステム100に組み込まれたタッチパネルディスプレイを含むコンソール)を含むことができる。このような追加的なプロセッサは、別個のディスクリートプロセッサであってもよいし、または単一のプロセッサに統合されていてもよい。
【0029】
メモリ106は、プロセッサ104によって実行可能なプログラムのためのデータおよび命令の記憶装置を提供する。メモリ106は、データおよび命令を記憶する1つまたは複数の揮発性および/または不揮発性のコンピュータ可読記憶媒体を含むことができる。これらの媒体は、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードディスクドライブおよび/またはリムーバブル記憶ドライブ(例えば、フラッシュメモリを含む)などを含むことができる。プロセッサ104は、メモリ106に格納された命令を実行し、スキャンシステム100の全体的な機能を実行するために、通信バス102を介してスキャンシステム100の種々の要素と通信するように構成されている。
【0030】
通信バス102は、アナログ電気信号および/またはデジタルデータを搬送するように構成可能である。したがって、通信バス102を介したプロセッサ104、動き制御装置108および/またはインターフェースシステム110からの通信は、電気信号およびデジタルデータの両方を含むことができる。プロセッサ104、動き制御装置108および/またはインターフェースシステム110は、無線通信リンクを介してスキャンシステム100の種々の要素のうちの1つまたは複数と通信するようにも構成可能である。
【0031】
動き制御システム108は、ステージ112のX、Yおよび/またはZ運動(例えば、X-Y平面内)、対物レンズ120のX、Yおよび/またはZ運動(例えば、対物レンズポジショナ124を介して、X-Y平面に直交するZ軸に沿って)、本明細書の他の場所で説明されているカルーセルの回転運動、本明細書の他の場所で説明されているプッシュ/プルアセンブリの横方向運動および/またはスキャンシステム100の他の任意の可動コンポーネントを精確に制御および調整するように構成されている。例えば、落射照明システム126を含む蛍光スキャン式の実施形態では、動き制御システム108は、落射照明システム126における光学フィルタなどの移動を調整するように構成可能である。
【0032】
インターフェースシステム110は、スキャンシステム100が他のシステムおよび人間の操作者と連絡することを可能にする。例えば、インターフェースシステム110は、グラフィカルユーザインターフェースを介して操作者に情報を直接的に提供するため、かつ/またはタッチセンサを介して操作者からの直接的な入力を可能にするためのコンソール(例えば、タッチパネルディスプレイ)を含むことができる。インターフェースシステム110は、スキャンシステム100と、スキャンシステム100に直接的に接続されている1つまたは複数の外部デバイス(例えば、プリンタ、リムーバブル記憶媒体等)との間の、かつ/または例えば1つまたは複数のネットワークを介してスキャンシステム100に間接的に接続される1つまたは複数の外部デバイス(例えば、画像記憶システム、スキャナ管理マネージャ(SAM)サーバおよび/または他の管理サーバ、操作者ステーション、ユーザステーション等)との間の通信およびデータ転送を容易にするように構成可能である。
【0033】
照明システム118は、試料116の少なくとも一部を照明するように構成されている。照明システム118は、例えば、1つまたは複数の光源と照明光学系とを含むことができる。光源は、光出力を最大化するための凹面反射鏡と、熱を抑制するためのKG-1フィルタとを備えた可変強度ハロゲン光源を含むことができる。光源は、任意の種類のアーク灯、レーザ、または他の光源を含むことができる。一実施形態では、照明システム118は、試料116を透過した光エネルギをラインスキャンカメラ130および/またはエリアスキャンカメラ132が感知するように、透過モードで試料116を照明する。代替的または追加的に、照明システム118は、試料116から反射された光エネルギをラインスキャンカメラ130および/またはエリアスキャンカメラ132が感知するように、反射モードで試料116を照明するように構成可能である。照明システム118は、光学顕微鏡の任意の公知のモードでの試料116の調査に適するように構成可能である。
【0034】
一実施形態では、スキャンシステム100は、蛍光スキャンのためにスキャンシステム100を最適化するための落射照明システム126を含む。スキャンシステム100によって蛍光スキャンが支援されていない場合には、落射照明システム126を省略してもよいことが理解されるべきである。蛍光スキャンとは、特定の波長の光(すなわち、励起光)を吸収することができる光子感受性分子である蛍光分子が含まれた試料116のスキャンである。これらの光子感受性分子は、より高い波長の光(すなわち、放出光)の放出もする。このフォトルミネッセンス現象の効率は非常に低いので、放出される光の量は、多くの場合、非常に少ない。放出光がこのように少量であることは、典型的に、試料116をスキャンおよびデジタル化するための従来の技術(例えば、透過モード顕微鏡法)を失敗させてしまう。
【0035】
蛍光スキャンを利用するスキャンシステム100の実施形態では、複数のリニアセンサアレイが含まれたラインスキャンカメラ130(例えば、時間遅延積分(TDI)ラインスキャンカメラ)を使用して、試料116の同じ1つの領域をラインスキャンカメラ130の複数のリニアセンサアレイの各々に露光させることにより、光に対するラインスキャンカメラ130の感度を増加させることが有利である。このことは、低レベルの放出光を有する微弱な蛍光試料をスキャンする場合に、特に有益である。したがって、蛍光スキャンの実施形態では、ラインスキャンカメラ130は、好ましくはモノクロのTDIラインスキャンカメラである。モノクロ画像は、試料116上に存在する種々のチャネルからの実際の信号をより正確に表現するので、蛍光顕微鏡法においては理想的である。当業者によって理解されるように、蛍光試料は、「チャネル」とも呼ばれるそれぞれ異なる波長で光を放出する複数の蛍光色素によって標識可能である。
【0036】
さらに、種々の蛍光試料の下端および上端の信号レベルは、ラインスキャンカメラ130が感知すべき広範囲のスペクトルの波長を提示しているので、ラインスキャンカメラ130によって感知することができる下端および上端の信号レベルも同様に広範囲であることが望ましい。したがって、蛍光スキャンの実施形態では、ラインスキャンカメラ130は、モノクロの10ビット64リニアアレイTDIラインスキャンカメラを含むことができる。そのような実施形態とともに使用するために、ラインスキャンカメラ130についての種々のビット深度を使用することができることに留意すべきである。
【0037】
可動ステージ112は、プロセッサ104または動き制御装置108の制御下での、精確なX-Y移動のために構成されている。可動ステージ112は、プロセッサ104または動き制御装置108の制御下での、Z移動のためにも構成可能である。可動ステージ112は、ラインスキャンカメラ130および/またはエリアスキャンカメラ132による画像データの取り込み中に、試料116を所望の位置に位置決めするように構成されている。可動ステージ112は、試料116をスキャン方向に実質的に一定の速度に加速させ、次いで、ラインスキャンカメラ130による画像データの取り込みの間、この実質的に一定の速度を維持するようにも構成されている。一実施形態では、スキャンシステム100は、可動ステージ112上での試料116の位置選定に関して支援するために、高精度で緊密に座標付けされたX-Y格子を使用することができる。一実施形態では、可動ステージ112は、X軸およびY軸の両方において使用される高精度エンコーダを備えたリニアモータベースのX-Yステージである。例えば、非常に精確なナノメートルエンコーダを、スキャン方向の軸上、ならびにスキャン方向に対し垂直な方向であってスキャン方向と同じ平面上の軸上で使用することができる。ステージ112は、試料116が載置されるガラススライド114を支持するようにも構成されている。
【0038】
試料116は、光学顕微鏡法によって調査可能である任意のものであってよい。例えば、顕微鏡ガラススライド114は、組織および細胞、染色体、デオキシリボ核酸(DNA)、タンパク質、血液、骨髄、尿、細菌、ビーズ、生検材料、もしくは死んでいるか、生きているか、染色されているか、染色されていないか、標識されているか、標識されていない任意の他の種類の生物学的材料または物質を含む標本のための観察基板としてよく使用される。試料116は、一般にマイクロアレイとして知られている任意の全ての試料が含まれる、任意の種類のスライド上または他の基板上に堆積された、相補的DNA(cDNA)もしくはリボ核酸(RNA)のような任意の種類のDNAもしくはDNA関連材料またはタンパク質の配列であり得る。試料116は、マイクロータイタープレート(例えば、96ウェルプレート)であり得る。試料116の他の例には、集積回路基板、電気泳動記録体、ペトリ皿、フィルム、半導体材料、法医学材料および機械加工部品が含まれる。
【0039】
対物レンズ120は、対物レンズポジショナ124上に取り付けられ、対物レンズポジショナ124は、一実施形態では、非常に精確なリニアモータを使用して、対物レンズ120によって定義される光軸に沿って対物レンズ120を移動させる。例えば、対物レンズポジショナ124のリニアモータは、50ナノメートルのエンコーダを含むことができる。X、Yおよび/またはZ軸におけるステージ112と対物レンズ120との間の相対的な位置は、スキャンシステム100の全体的な動作のためのコンピュータ実行可能にプログラミングされたステップを含む、情報および命令を記憶するためのメモリ106を使用するプロセッサ104の制御下で、動き制御装置108を使用して閉ループ方式で調整および制御される。
【0040】
一実施形態では、対物レンズ120は、透過モード照明顕微鏡、反射モード照明顕微鏡および/または落射照明モード蛍光顕微鏡のために適したプランアポクロマート(「APO」)無限遠補正対物レンズ(例えば、0.75NAのOlympus40X、または0.75NAのOlympus20X)である。有利には、対物レンズ120は、色収差および球面収差を補正することが可能である。対物レンズ120が無限遠補正されているので、対物レンズ120を通過する光ビームがコリメートされた光ビームとなる対物レンズ120の上方の光路122に、集束光学系128を配置することができる。集束光学系128は、対物レンズ120によって取り込まれた光信号を、ラインスキャンカメラ130および/またはエリアスキャンカメラ132の光応答素子へと集束させ、フィルタおよび/または倍率変更レンズなどのような光学コンポーネントを含むことができる。集束光学系128と組み合わされた対物レンズ120は、スキャンシステム100のための合計倍率を提供する。一実施形態では、集束光学系128は、チューブレンズと、オプションの2X倍率変更器とを含むことができる。有利には、2X倍率変更器は、本来20Xの対物レンズ120が、試料116を40Xの倍率でスキャンすることを可能にする。
【0041】
ラインスキャンカメラ130は、画素142(「ピクセル」)の少なくとも1つのリニアアレイを含む。ラインスキャンカメラ130は、モノクロまたはカラーであり得る。カラーラインスキャンカメラは、典型的に、少なくとも3つのリニアアレイを有するが、その一方で、モノクロラインスキャンカメラは、単一のリニアアレイまたは複数のリニアアレイを有することができる。カメラの一部としてパッケージ化されているか、イメージング電子モジュールにカスタムで組み込まれるかにかかわらず、任意の種類の単数または複数のリニアアレイを使用することもできる。例えば、3リニアアレイ(「赤-緑-青」または「RGB」)カラーラインスキャンカメラ、または96リニアアレイモノクロTDIを使用することもできる。TDIラインスキャンカメラは、典型的に、標本の以前にイメージングされた領域からの強度データを合計して、積分ステージの数の平方根に比例するSNRの増加をもたらすことにより、出力信号において格段に良好な信号対雑音比(「SNR」)を提供する。TDIラインスキャンカメラは、複数のリニアアレイを含む。例えば、TDIラインスキャンカメラは、24個、32個、48個、64個、96個、またはさらに多数のリニアアレイとともに利用可能である。スキャンシステム100は、512ピクセルの形式、1024ピクセルの形式および4096ピクセルの形式を含む、種々の形式で製造されたリニアアレイも支援する。同様にして、種々のピクセルサイズを有するリニアアレイも、スキャンシステム100に使用することができる。任意の種類のラインスキャンカメラ130を選択するための顕著な要件は、試料116のデジタル画像の取り込みの間、ステージ112がラインスキャンカメラ130に対して動くことができるように、ステージ112の動きを、ラインスキャンカメラ130のラインレートと同期させることが可能であることである。
【0042】
一実施形態では、ラインスキャンカメラ130によって生成された画像データは、メモリ106の一部に格納され、プロセッサ104によって処理されて、試料116の少なくとも一部の連続デジタル画像を生成する。連続デジタル画像は、プロセッサ104によってさらに処理可能であり、処理された連続デジタル画像も、メモリ106に格納することができる。
【0043】
2つ以上のラインスキャンカメラ130を有する実施形態では、これらのラインスキャンカメラ130のうちの少なくとも1つを、イメージングセンサとして機能するように構成された少なくとも1つの他のラインスキャンカメラ130と組み合わされて動作する合焦センサとして機能するように構成することができる。合焦センサは、イメージングセンサと同じ光軸上に論理的に位置決め可能であり、または合焦センサは、スキャンシステム100のスキャン方向に関してイメージングセンサの上流または下流に論理的に位置決め可能である。合焦センサとして機能する少なくとも1つのラインスキャンカメラ130を有するそのような実施形態では、合焦センサによって生成された画像データを、メモリ106の一部に格納し、プロセッサ104によって処理して、スキャンシステム100が、スキャン中における試料116上の焦点を維持するために試料116と対物レンズ120との間の相対距離を調整することを可能にする焦点情報を生成することができる。さらに、一実施形態では、合焦センサとして機能する少なくとも1つのラインスキャンカメラ130は、合焦センサの複数の個々のピクセル142の各々が、光路122に沿ってそれぞれ異なる論理的な高さに位置決めされるように方向付け可能である。
【0044】
動作中、スキャンシステム100の種々のコンポーネントと、メモリ106に格納されているプログラミングされたモジュールとにより、ガラススライド114上に配置された試料116の自動的なスキャンおよびデジタル化が可能となる。ガラススライド114は、試料116をスキャンするためにスキャンシステム100の可動ステージ112上に確実に配置される。プロセッサ104の制御下で、可動ステージ112は、ラインスキャンカメラ130による感知のために、試料116を実質的に一定の速度に加速させ、この場合、ステージ112の速度は、ラインスキャンカメラ130のライン速度と同期される。画像データのストライプをスキャンした後、可動ステージ112は減速し、試料116を実質的に完全に停止させる。次いで、可動ステージ112は、スキャン方向に対して直交するように移動して、画像データの後続のストライプ(例えば、隣接するストライプ)をスキャンするために試料116を位置決めする。その後、試料116の一部の全体または試料116の全体がスキャンされるまで、追加的なストライプがスキャンされる。
【0045】
例えば、試料116のデジタルスキャン中に、試料116の連続デジタル画像は、画像ストライプを形成するために一緒に組み合わされる複数の連続した視野として取得される。試料116の一部または全体の連続デジタル画像を形成するために、複数の隣り合う画像ストライプも同様に一緒に組み合わされる。試料116のスキャンは、垂直方向の画像ストライプまたは水平方向の画像ストライプを取得することを含むことができる。試料116のスキャンは、上から下、下から上、またはその両方(すなわち、双方向)であってよく、試料116上の任意の点において開始することができる。代替的に、試料116のスキャンは、左から右、右から左、またはその両方(すなわち、双方向)であってよく、試料116上の任意の点において開始することができる。画像ストライプを、隣接または連続した形で取得する必要はない。さらに、結果として得られる試料116の画像は、試料116全体の画像であってもよいし、または試料116の一部のみの画像であってもよい。
【0046】
一実施形態では、コンピュータ実行可能命令(例えば、プログラミングされたモジュールおよびソフトウェア)がメモリ106に格納されており、コンピュータ実行可能命令は、実行されると、スキャンシステム100が本明細書に記載の種々の機能(例えば、グラフィカルユーザインターフェースの表示、開示されているプロセスの実行、スキャンシステム100のコンポーネントの制御等)を実行することを可能にする。本明細書における「コンピュータ可読記憶媒体」という用語は、コンピュータ実行可能命令を格納し、それをプロセッサ104による実行のためにスキャンシステム100に提供するために使用される任意の媒体を指すために使用されている。これらの媒体の例には、メモリ106や、スキャンシステム100に(例えば、ユニバーサルシリアルバス(USB)、無線通信プロトコル等を介して)直接的に、または(例えば、有線および/または無線ネットワークを介して)間接的に通信可能に結合された任意のリムーバブル記憶媒体または外部の記憶媒体(図示せず)が含まれる。
【0047】
図1Bは、単一のリニアアレイ140を有するラインスキャンカメラ130を示しており、この単一のリニアアレイ140は、電荷結合素子(「CCD」)アレイとして実装可能である。単一のリニアアレイ140は、複数の個々のピクセル142を含む。図示の実施形態では、単一のリニアアレイ140は、4096個のピクセル142を有する。代替的な実施形態では、リニアアレイ140は、より多数またはより少数のピクセルを有していてもよい。例えば、リニアアレイの一般的な形式は、512個、1024個および4096個のピクセルを含む。ピクセル142は、リニアアレイ140の視野134を画定するために線形に配置される。視野134のサイズは、スキャンシステム100の倍率に応じて変化する。
【0048】
図1Cは、3つのリニアアレイ140を有するラインスキャンカメラ130を示しており、これら3つのリニアアレイ140の各々は、CCDアレイとして実装可能である。3つのリニアアレイ140は、組み合わされて1つのカラーアレイ150を形成する。一実施形態では、カラーアレイ150内のそれぞれ個々のリニアアレイは、例えば赤色、緑色、または青色を含むそれぞれ異なる色強度を検出する。カラーアレイ150内のそれぞれ個々のリニアアレイ140からのカラー画像データは、カラー画像データの単一の視野134を形成するために組み合わされる。
【0049】
図1Dは、複数のリニアアレイ140を有するラインスキャンカメラ130を示しており、これらの複数のリニアアレイ140の各々は、CCDアレイとして実装可能である。複数のリニアアレイ140は、組み合わされて1つのTDIアレイ160を形成する。有利には、TDIラインスキャンカメラは、標本の以前にイメージングされた領域からの強度データを合計して、(積分ステージとも呼ばれる)リニアアレイ140の数の平方根に比例するSNRの増加をもたらすことにより、出力信号におけるSNRを格段に良好にする。TDIラインスキャンカメラは、より多様な数のリニアアレイ140を含むことができる。例えば、TDIラインスキャンカメラの一般的な形式は、24個、32個、48個、64個、96個、120個およびさらに多数のリニアアレイ140を含む。
【0050】
1.2.スライドラックのためのカルーセル
【0051】
一実施形態では、スキャンシステム100は、カルーセルを含み、このカルーセルは、複数のスライドラックを保持するように、かつスキャンシステム100の露出した部分からスキャンシステム100の室内部分までスライドラックを回転させるように構成されている。それぞれのスライドラックは、複数のガラススライド114を保持するように構成されている。カルーセルは、種々異なる数のガラススライド114および/または種々異なるサイズのガラススライド114(例えば、25mm×75mmまたは「1×3」のスライドおよび50mm×75mmまたは「2×3」のスライド)を保持するスライドラックを含む、種々異なるサイズのスライドラックを保持するように構成可能である。
【0052】
図2Aおよび
図2Bは、一実施形態による、例示的なカルーセル200の上面図および斜視図をそれぞれ示す。図示のように、カルーセル200は、固定点を中心にしてカルーセル200を回転させるカルーセルベルト210と係合することができる。一実施形態では、カルーセルベルト210がベース202の円周の周りに延在するように、カルーセルベルト210を、カルーセル200のベース202の円周の周りのベルト凹部204内に位置決めすることができる。さらに、カルーセルベルト210は、カルーセルモータ(図示せず)によって回転される少なくとも1つのロータ212の周りに延在することができる。カルーセルモータは、(例えば、プロセッサ104の制御下で)動き制御装置108によって制御可能であり、動き制御装置108は、ロータ212を回転させるために、カルーセルモータを2つの方向の各々に(例えば、時計回りおよび反時計回りに)回動させ、今度はロータ212がカルーセルベルト210を回転させ、これによってカルーセル200を選択された方向に回転させる。代替的な実施形態では、カルーセル200は、ベルトを使用するか、またはダイレクトギアリングまたはダイレクトドライブのような別の機構を使用する駆動システムを有することができる。有利には、駆動システムは、カルーセル200の移動を実施するために、種々の種類のベアリングシステムと組み合わせ可能である。
【0053】
一実施形態では、カルーセル200は、ベース202の頂面から上方に延在する複数のラックスペーサ206を含む。隣り合うラックスペーサ206のそれぞれのペアが、1つのラックスロット208を形成する。それぞれのラックスロット208は、1つのスライドラック220を保持するように構成されていて、(例えば、それぞれ異なる製造業者によって製造された)複数の異なるサイズおよび/または種類のスライドラック220の各々を保持するように構成可能である。例えば、スライドラック220は、種々異なる高さおよび/または幅のものであってよく、それぞれのラックスロット208は、これらの種々異なる高さおよび/または幅の全てを有するスライドラック220を保持するように寸法設計可能である。さらに、それぞれのラックスロット208は、検出器(例えば、光学センサ)に関連付けられているか、または関連付け可能であり、この検出器は、ラックスロット208がスライドラック220によって占有されているかどうかを判定するように位置決めされている。一実施形態では、カルーセル200が割り出し位置にあるとき、カルーセル200の露出した部分内のそれぞれのラックスロット208は、それぞれの露出したラックスロット208からの任意のスライドラック220の挿入または取り外しを検出するように、少なくとも1つのそのような検出器と位置合わせされている。検出器の出力に基づいて、スキャンシステム100のプロセッサ104は、ある1つのラックスロット208がカルーセル200の露出した部分内にある間に、そのラックスロット208に関して、このラックスロット208がスライドラック220によって占有されているかどうかを判定することができる。
【0054】
図2Cおよび
図2Dは、一実施形態による、複数のスライドラック220がロードされている例示的なカルーセル200の上面図および斜視図をそれぞれ示す。図示のように、ラックスロット208Aは、スライドラック220によって占有されておらず、その一方で、ラックスロット208Bは、スライドラック220によって占有されている。したがって、プロセッサ104は、それぞれのラックスロット208の内部で位置合わせされた検出器を介して、ラックスロット208Aがスライドラック220によって占有されていないことを判定し、ラックスロット208Bがスライドラック220によって占有されていることを判定する。さらに、図示のように、スライドラック220は、種々異なるサイズである可能性がある。例えば、スライドラック220Aは、スライドラック220Bよりも高く、より多数のガラススライド114を保持している。
【0055】
図2Eおよび
図2Fは、一実施形態による、例示的なスライドラック220Aの側面図と、例示的なスライドラック220Bの斜視図とをそれぞれ示す。スライドラック220Aはより高く、30枚のガラススライド114を保持し、その一方で、スライドラック220Bはより低く、20枚のガラススライド114を保持している。スライドラック220Aおよび220Bは、それぞれ異なる製造業者によって製造されていてもよい。しかしながら、それぞれのラックスロット208は、スライドラック220Aおよび220Bの両方を収容するように構成されている。
【0056】
上で言及されているように、一実施形態では、カルーセル200の一部は、スキャンシステム100の室外に露出されているか、または露出可能である。換言すれば、所定数の隣り合うラックスロット208は、常に露出した位置にあり得る。例えば、15個のラックスロット208を有するカルーセルの場合には、6個のラックスロット208を露出させることができ、残りの9個のラックスロット208は、露出されることなくスキャンシステム100の室内の内部にある。隣り合うラックスロット208のどのサブセットが露出され、隣り合うラックスロット208のどのサブセットが露出されないかを任意の所与の時点で変更するために、カルーセル200を回転させることができることを理解すべきである。
【0057】
一実施形態では、ローディングを容易にするために、スキャンシステム100のプロセッサ104は、露出されている空のラックスロット208の数が最大化されるようにカルーセル200を自動的に制御する。例えば、プロセッサ104は、それぞれのラックスロット208内の検出器を介して、または露出したラックスロット208と位置合わせされた検出器を介して、どのラックスロット208がスライドラック220によって占有されているかを判定することができる。次いで、プロセッサ104は、空のラックスロット208の最大連続セグメントを識別して、その最大連続セグメント内のできるだけ多数の空のラックスロット208をスキャンシステム100の露出した部分内に位置決めするために、カルーセル200を回転させることができる。
【0058】
1.3.プッシュ-プルアセンブリ
【0059】
一実施形態では、スキャンシステム100は、プッシュ/プルアセンブリを含み、このプッシュ/プルアセンブリは、それぞれのガラススライド114をスライドラック220からステージ112上にロードし、それぞれのガラススライド114をステージ112からアンロードしてスライドラック220に戻すように構成されている。
図3Aおよび
図3Bは、一実施形態による、スキャンシステム100の例示的なプッシュ/プルアセンブリ300、スライドラック220およびスキャンステージ112の斜視図を示す。図示の実施形態では、プッシュ/プルアセンブリ300は、スライドラック220内に伸長可能なプッシュバー320を含むものとして示されている。図示のプッシュ/プルアセンブリ300は、1つまたは複数のプルフィンガ312を含む開放端部を備えたプルバー310も含む。プルフィンガ312は、ステージ112内の対応するプルフィンガ溝の内部を移動するように構成されている。
【0060】
一実施形態では、プッシュバー320およびプルフィンガ312が協働して、スキャンされるべき1枚のガラススライド114をスライドラック220からステージ112内のスライド凹部へと押し出す。ガラススライド114がスキャンされた後、プッシュバー320およびプルフィンガ312が再び協働して、ガラススライド114をステージ112から押し出し、ステージ112内のスライド凹部と位置合わせされた、ステージ112内のスライド凹部と同一平面内にある、スライドラック220内の空のスロットへと押し込む。
図3Aは、ガラススライド114が完全にステージ112上で支持されているときのプッシュ/プルアセンブリ300を示しているが、その一方で、
図3Bは、ガラススライド114が部分的にステージ112上で支持されていて、部分的にスライドラック220のスロットの内部で支持されているとき(例えば、ガラススライド114のロード中またはアンロード中)のプッシュ/プルアセンブリ300を示している。
【0061】
1.4.例示的な視覚処理ユニット
【0062】
一実施形態では、スキャンシステム100は、操作者がスキャンシステム100とのインタラクションに費やさなければならない時間を最小化しながら、スループットおよび画質を最大化することを目的として設計されている。この目的を達成するために、スキャンシステム100の通常の動作を制御するためのソフトウェアを2つのカテゴリに、すなわち制御ソフトウェアと外部インターフェースソフトウェアとに分割することができる。
【0063】
一実施形態では、制御ソフトウェアは、スキャンシステム100のハードウェアと直接的にインタラクションする視覚処理ユニット(VPU)の内部に含まれている。制御ソフトウェアは、画像取得、スライド処理および画像生成のために必要な機能を含む、スキャンシステム100の全ての制御を担当する。
【0064】
図4は、一実施形態による例示的なVPU400を示す。VPU400は、制御装置402、第1のフレームグラバー404、第2のフレームグラバー406、グラフィックス処理ユニット(GPU)408、1つまたは複数の圧縮エンジン410、ネットワークインターフェース412、コンソールインターフェース414(例えば、ウェブインターフェース)、スキャンシステム100のタッチパネルディスプレイ434に接続可能な、高精細度マルチメディアインターフェース(HDMI)および/またはユニバーサルシリアルバス(USB)416、第1のシリアルインターフェース418および/または第2のシリアルインターフェース420を含む。例示的な非限定的な例として、第1のフレームグラバー404は、CameraLinkインターフェースを介してモノクロカメラ430(例えば、Basler Racer raL4096-280km)に接続されるTeledyne Dalsa(商標)Xtium-CL PX4であり得、第2のフレームグラバー406は、CameraLinkインターフェースを介してカラーカメラ432(例えば、Dalsa(商標)Piranha PC-30-04K80)に接続されるDalsa(商標)Xtium-CL PX4であり得、GPU408は、Nvidia(商標)Quadro P5000であり得、第1のシリアルインターフェース418は、Teknic(商標)ステージ制御装置436に通信可能に接続される高速ステージ制御装置(例えば、動き制御装置108の内部のTeknic(商標)ステージ制御装置)であり得、第2のシリアルインターフェース420は、(例えば、インターフェースシステム110の内部の)入力/出力ボード制御装置438に通信可能に接続される入力/出力制御装置であり得る。制御装置402およびGPU408が、プロセッサ104を含むことができることを理解すべきである。
【0065】
1.5.例示的なネットワーク
【0066】
外部アプリケーションおよびプロセスは、通常のデバイス動作を支援するために、VPU400内の制御ソフトウェアと連絡する。一実施形態では、スキャンシステム100は、集中型デバイス管理を利用するソフトウェアアーキテクチャの内部で動作する。
図5は、一実施形態による、集中型デバイス管理のための外部ソフトウェアの例を示す。そのような外部ソフトウェアは、例えば、スキャナ管理マネージャ(SAM)サーバ、DICOM(Digital Imaging and Communications in Medicine)サーバおよび/またはリモートスキャナテストユーティリティ(STU)などを含むことができる。
【0067】
一実施形態では、それぞれのスキャンシステム100が機能するために、それぞれのスキャンシステム100をSAMサーバ502によって接続および管理する必要がある。SAMサーバ502は、複数のスキャンシステム100を一元化された場所で構成および管理することを可能にする。有利には、このことにより、複数のスキャンシステム100を維持する際の実験室管理者の作業を最小限に抑えることができる。
【0068】
一実施形態では、SAMサーバ502は、SAMサーバ502のSAM機能を実行するためのSAMソフトウェアと、スキャナデータと、DICOM形式のファイルをSVS形式のファイルに変換するための変換ソフトウェアとを含むことができる。SVSは、タグ付き画像ファイル形式(TIFF)に基づく、Leica Biosystems(商標)によって使用されているファイル形式である。さらに、SAMサーバ502は、(例えば、スキャン済みのスライド画像を格納するための)画像記憶システム504と、(例えば、スキャン済みのスライド画像にアクセスおよび管理するための)eSlide Manager(商標)(eSM)サーバ506とに通信可能に接続可能である。SAMサーバ502は、顧客のローカルエリアネットワーク(LAN)508を介してスキャンシステム100と通信する。非限定的な例として、それぞれのスキャンシステム100は、1ギガバイト(GB)のイーサネットを介して顧客のLAN508と通信することができ(例えば、SAMおよびDICOM通信)、顧客のLAN508は、1~10GBのイーサネットを介してSAMサーバ502と通信することができ(例えば、DICOMおよび管理通信)、SAMサーバ502は、1~10GBのイーサネットを介して画像記憶システム504と通信することができ(例えば、サーバメッセージブロック(SMB)書き込み)、SAMサーバ502は、1GBのイーサネットを介してeSMサーバ506と通信することができる(例えば、eSMサーバ通信)。
【0069】
1.6.例示的なソフトウェアインターフェース
【0070】
図6は、一実施形態による、1つのスキャンシステム100の内部のVPU400の制御ソフトウェアと、複数のスキャンシステム100の各々によって使用可能な外部ソフトウェアとの間のインターフェースの例を示す。
図6には、特定の通信プロトコルが示されているが、種々異なる通信プロトコルを使用することができる。図示のように、4つの関連するハードウェアコンポーネントが存在し、すなわち、スキャンシステム100の内部CPUを含むVPU400と、SAMソフトウェア、DICOMサーバおよびMirth(商標)アプリケーションを実行するMicrosoft Windows(商標)ベースのサーバであり得るSAMサーバ502と、画像データの長期記憶のために使用されるネットワークファイル共有サーバであり得る画像記憶システム504と、Leica Biosystems(商標)によるeSlide Manager(商標)ソフトウェアを実行するMicrosoft Windows(商標)ベースのサーバであり得るeSMサーバ506と、が存在する。
【0071】
一実施形態では、制御ソフトウェアおよび外部ソフトウェアは、システムレベルの通信のために以下のメッセージプロトコルを利用する:
【0072】
インターネット通信エンジン(ICE):ZeroC(商標)のオープンソースのリモートプロシージャコール(RPC)フレームワークによって開発および支援されているバイナリプロトコル。
【0073】
DICOM:医用画像関連データの通信および管理のために利用される標準プロトコル。
【0074】
シンプルオブジェクトアクセスプロトコル(SOAP)/エクステンシブルマークアップランゲージ(XML):Webサービスまたはネットワークアプリケーションにおいて典型的に利用されているXMLメッセージ形式を利用したメッセージプロトコル。
【0075】
Health Level-7(HL7):病院のワークフローを支援するように設計され、複数の医療管理システム間での電子医療情報の交換および統合を簡素化する一連の包括的な規約を提供することを目的とした標準メッセージプロトコル。
【0076】
図6に示されているように、VPU400の制御装置402によって使用される制御ソフトウェアは、(例えば、取得された画像データを処理するための)画像プロセッサ602と、(例えば、スキャンシステム100を構成するための)構成データおよび/または(例えば、スキャンシステム100によって取得された)スライドデータ604と、(例えば、スキャンシステム100の内部で画像データを処理するための)1つまたは複数のアルゴリズム606と、(例えば、スキャンシステム100の内部で画像データを取得するための)画像取得モジュール608と、(例えば、スキャンシステム100で発生したイベントを記録するための)イベントデータおよび/またはログデータ610と、(例えば、スキャンシステム100のワークフローを管理する)スキャナワークフローモジュール612と、(例えば、スキャンシステム100の内部でのスライドのロードおよびアンロードをハンドリングする)スライドハンドリングモジュール614とを含む。画像プロセッサ602は、ICEを介して他の制御ソフトウェアと通信することができる。さらに、スキャナワークフローモジュール612およびスライドハンドリングモジュール614は両方とも、ICEを介してコンソールインターフェース414と通信することができる。スライドハンドリングモジュール614は、RS232シリアル通信を介してオートローダ(AL)ファームウェア-μC620と通信することもできる。制御装置402によって実行される種々の制御ソフトウェアは、ICEを介してSTUモジュール616と通信することもできる。
【0077】
画像プロセッサ602は、DICOM-セキュアソケットレイヤー(SSL)を介してSAMサーバ502内のDICOMサーバ622と通信することができ、ICEを介して制御装置402の他の制御ソフトウェアと通信することができる。構成データおよび/またはスライドデータ604は、SOAP-SSLを介してSAMサーバ502上のSAMデータベース628との間で通信可能である。イベントデータおよび/またはログデータ610は、HL7/XMLを介してSAMサーバ502上のMirth(商標)アプリケーション632に通信可能である。STUモジュール616は、ICE-SSLを介してSTUユーザインターフェース624と通信することができる。
【0078】
SAMサーバ502上では、DICOMサーバ622は、SMB3を介して画像記憶システム504と通信することができる。Mirth(商標)アプリケーション632は、SOAPを介してSAMデータベース628と通信することができ、SAMサーバ502上のロギングサービス630と通信することもできる。さらに、STUユーザインターフェース624と、SAMユーザインターフェース626と、SAMデータベース628とからなるグループは、SOAP-SSLを使用してeSMサーバ506と通信することができる。
【0079】
1.7.割り出し位置
【0080】
一実施形態では、割り出し位置とは、カルーセル200のラックスロット208がラック検出器(例えば、光学センサ)と位置合わせされている任意の位置である。割り出し位置で停止するという要件により、スライドラック220のラックスロット208内への挿入およびラックスロット208からの取り出しが、オートローダシステムに対して見えたままとなることが保証される。具体的には、一実施形態では、いつラックスロット208にスライドラック220が挿入されるか、またはいつラックスロット208からスライドラック220が取り出されるかをラック検出器が識別するために、ひいては、ラックステータスをプロセッサ104が正確に更新するために、カルーセル200は、複数の割り出し位置のうちの1つに存在しなければならない。
【0081】
一実施形態によれば、
図7Aは、割り出し位置にあるカルーセル200を示しているが、その一方で、
図7Bは、非割り出し位置にあるカルーセル200を示している。
図7Aに示されているように、割り出し位置では、それぞれのラック検出器は、それぞれのラックスロット208と位置合わせされており、カルーセル200の後端部にあるラックスロット208は、ラックロード/アンロード機構と位置合わせされている。特に、カルーセル200には、ラックスロット208と同数の割り出し位置が存在する(例えば、図示の実施形態では15個)。対照的に、
図7Bに示されているように、非割り出し位置では、いずれのラック検出器も、どのラックスロット208とも位置合わせされておらず、ラックロード/アンロード機構は、どのラックスロット208とも位置合わせされていない。
【0082】
1.8.例示的なピンチポイントセンサ
【0083】
図8は、一実施形態による、ピンチポイントセンサ810の位置決めを示す。一実施形態では、ピンチポイントセンサ810は、スキャンシステム100の露出した部分800の両遠端に配置された一対のセンサを含む。露出した部分800は、スキャンシステム100の側面に、好ましくはスキャンシステム100の前面に開口部を含むことができる。開口部は、カルーセル200内の隣り合うスロットラック208のセグメントを、これらのスロットラック208が操作者によって直接的にアクセス可能となるように、スキャンシステム100の外部環境に露出させる。
【0084】
図示の実施形態では、ピンチポイントセンサ810は、露出した部分800の各側に2つのセンサ810Aおよび810Bを含む。ピンチポイントセンサ810Aおよび810Bは、カルーセル200がスライドラック220を露出した部分800からスキャンシステム100の露出していない室内へと移動させるところの場所に関連する潜在的な安全上の危険性を検出するために位置決めされている。
【0085】
一実施形態では、ピンチポイントセンサ810の出力は、カルーセル200を回転させるためにカルーセルベルト210を駆動するカルーセルモータのための動き制御装置108(例えば、Trinamic(商標)動き制御装置)のブレーキ機能に物理的に結び付けられている。したがって、ピンチポイントセンサ810がトリガされると、(例えば、たとえカルーセル200が割り出し位置にない場合であっても)カルーセル200は回転することができなくなる。
【0086】
1.9.例示的なライトカーテン
【0087】
図9Aおよび
図9Bは、一実施形態による、スキャンシステム100の露出した部分800内のライトカーテンを示す。
図9Aは、スライドラック208の例示的な断面におけるライトカーテン900の側面図を示しているが、その一方で、
図9Bは、一実施形態による、カルーセル200の斜視図の文脈でのライトカーテン900を示している。
【0088】
図9Aに示されているように、スライドラック220は、スライドラック220の内部のガラススライド114の端部が垂直に位置合わせされないように、カルーセル200のベース202の傾斜した部分の上に位置決めされている。スキャンシステム100は、平面図でカルーセル200と同じように湾曲された取り付けブラケット910を含む。取り付けブラケット910は、送信機/受信機ペア920/925のうちの一方の側(例えば、図示の実施形態では920)を支持することができる。送信機/受信機ペア920/925のうちの反対の側(例えば、図示の実施形態では925)は、カルーセルベース202の周囲の近くにあるスキャンシステム100のベース上に位置決めされている。
【0089】
それぞれの送信機/受信機ペア920/925は、直接的な無線リンクを介して(例えば、送信機によって放出されて受信機によって受信される光を介して)通信可能に結合可能であり、送信機/受信機ペア920/925間に配置された物体の存在を、この直接的な無線リンクの中断を介して検出するように構成されている。露出した部分800の全体の周りにライトカーテン900を形成するために、カルーセル200の周りで、スキャンシステム100の露出した部分800内に、複数の送信機/受信機ペア920/925を設けることができる。特に、スライドラック220は、適切に装着されている場合には傾斜されているので、スライドラック220内で適切に装着されている場合におけるライトカーテン900からそれぞれのガラススライド114の端部までの距離が、スライドラック220の内部の他の全てのガラススライド114と同じになるように、複数の送信機/受信機ペア920/925も、互いに同じ角度で位置決めすることができる。
【0090】
一実施形態では、それぞれの送信機/受信機ペア920/925のうちの受信機は、自身の対応する送信機から光のパルスを受信しなくなると、自身のライトカーテンの内部に障害物があることを検出する。したがって、障害物が検出されると、受信機は、スキャンシステム100のプロセッサ104に信号を供給することができ、これによってプロセッサ104は、障害物の存在に基づいて適切な行動をとることができる。
【0091】
2.プロセスの概要
【0092】
以下、スライドスキャンシステムを制御するためのプロセスの実施形態を詳細に説明する。記載されているプロセスは、スキャンシステム100の内部の1つまたは複数のハードウェアプロセッサ104によって実行される1つまたは複数のソフトウェアモジュール内において具現化できることが理解されるべきである。記載されているプロセスは、ソースコード、オブジェクトコードおよび/またはマシンコードで表される命令として実装可能である。これらの命令を、ハードウェアプロセッサによって直接的に実行してもよいし、または代替的に、オブジェクトコードとハードウェアプロセッサとの間で動作する仮想マシンによって実行してもよい。
【0093】
代替的に、記載されているプロセスを、ハードウェアコンポーネント(例えば、汎用プロセッサ、集積回路(IC)、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、ディスクリートゲート、またはトランジスタロジック等)、ハードウェアコンポーネントの組み合わせ、またはハードウェアコンポーネントとソフトウェアコンポーネントとの組み合わせとして実装してもよい。ハードウェアおよびソフトウェアの互換性を明確に説明するために、種々の例示的なコンポーネント、ブロック、モジュール、回路およびステップは、本明細書ではそれらの機能の観点から一般的に説明されている。このような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、システム全体に課せられる特定の用途上および設計上の制約によって異なる。当業者は、記載されている機能を、それぞれの特定の用途ごとに異なる手法で実装可能であるが、そのような実装の決定は、本発明の範囲からの逸脱をもたらすと解釈されるべきではない。さらに、コンポーネント、ブロック、モジュール、回路、またはステップの内部の機能のグループ化は、説明を簡単にするためである。本発明から逸脱することなく、特定の機能またはステップをある1つのコンポーネント、ブロック、モジュール、回路、またはステップから別のコンポーネント、ブロック、モジュール、回路、またはステップに移動させることができる。
【0094】
さらに、本明細書に記載のプロセスは、複数のステップの特定の配置および順序で示されているが、それぞれのプロセスをより少数の、より多数の、または異なるステップでおよび異なるステップの配置および/または順序で実装してもよい。さらに、別のステップの完了に依存していない任意のステップは、これらのステップが特定の順序で説明または図示されている場合であっても、他の独立したステップの前、後、または並行して実行可能であることを理解すべきである。
【0095】
2.1.オートローダの初期化
【0096】
一実施形態では、スキャンシステム100は、オートローダシステムを含み、このオートローダシステムは、カルーセル200、プッシュ/プルアセンブリ300および/またはガラススライド114上ならびに/もしくはスライドラック220上で動作するスキャンシステム100の内部の他のサブシステムを含み、これにより、カルーセル200内のラックスロット208からスライドラック220を出し入れし、かつ/またはそれぞれのスライドラック220の内部のスロットからガラススライド114を出し入れする。スキャンシステム100が起動すると、オートローダシステムは、「ホーミング」プロセスを含む初期化プロセスを実行することができる。ホーミングとは、オートローダシステムの可動コンポーネントを、各自の1つまたは複数の軸の初期ゼロ位置へと帰還させるプロセスである。殆どのコンポーネントの場合、ホーミングプロセスは、動きを停止させるリミットスイッチまたはリミットセンサがトリガされるまで、コンポーネントを各自の1つまたは複数の軸に沿って移動させることを含む。次いで、コンポーネントのためのエンコーダは、各自の停止位置においてゼロにされ、駆動制御装置は、スキャンシステム100が再起動されるか、または電源が失われるまで絶対的な位置決めを維持する。
【0097】
図10は、一実施形態による、オートローダシステムの例示的な初期化プロセス1000を示す。ステップ1010において、スキャンシステム100のプロセッサ104は、バックエンドコンポーネントに対して(例えば、1つまたは複数の動き制御装置108を介して)ホーミングを実行する。換言すれば、ガラススライド114をスキャンするために使用されるコンポーネント(例えば、ステージ112、対物レンズ120等)は、各自の軸をゼロにするためにホーミングを実行するように(例えば、プロセッサ104によって)制御される。同様にして、ステップ1020において、オートローダシステムは、フロントエンドコンポーネントに対してホーミングを実行する。例えば、スライドラック220およびガラススライド114をロードおよびアンロードするために使用されるコンポーネント(例えば、カルーセル200、プッシュ/プルアセンブリ300、カルーセルとプッシュ/プルアセンブリ300との間でスライドラック220を駆動するためのリフトのクランプ等)は、各自の軸をゼロにするためにホーミングを実行するように制御される。
【0098】
ステップ1030において、スキャンシステム100のプロセッサ104は、カルーセル200上のラックスロット208内にある全てのスライドラック220(もしあれば)と、カルーセル200からアンロードされた全てのスライドラック220(もしあれば)との目録を作成することができる。この目録に基づいて、ステップ1040において、プロセッサ104は、ロードされたスライドラック220が存在するかどうかを判定する。例えば、スキャンシステム100の前回の動作中に電源障害が発生したときに(例えば、ガラススライド114をステージ112上にロードするため、またはガラススライド114をステージ112からアンロードするために)スライドラック220がロードされていた場合には、初期化中に、このスライドラック220が、カルーセル200の外側にあるスキャンシステム100のバックエンドの内部にまだ残っている場合がある。カルーセル200の外側に、ロードされたスライドラック220が存在する場合(すなわち、ステップ1040で「イエス」)には、ステップ1050において、このスライドラック220がアンロードされてカルーセル200のラックスロット208内へと戻される。
【0099】
カルーセル200の外側に、ロードされたスライドラック220が存在しなかった場合(すなわち、ステップ1040で「ノー」)、またはロードされたスライドラック220がステップ1050においてアンロードされた場合には、カルーセルは、開始位置へと戻るように回転される。例えば、この開始位置では、ラックスロット208の開始サブセット(例えば、「1」~「6」とラベル付けされているラックスロット208)を、スキャンシステム100の外部環境に露出させることができるか、または本明細書の他の場所で論じられているように、最大数の空のラックスロット208を露出させることができる。
【0100】
2.2.連続ロードワークフロー
【0101】
一実施形態では、スキャンシステム100は、真の連続ロードワークフローを提供するためにオープンフレーム設計で動作する。換言すれば、スライドラック220の簡単なロードおよびアンロードのために、所定数のスロットラック208は、露出した部分800において外部環境に常に露出されている。連続ロードワークフローとは、操作者が露出したスロットラック208にスライドラック220を追加および取り外しするときに、スキャンシステム100が中断することなくガラススライド114をスキャンし続けることを意味する。
【0102】
スキャンシステム100のプロセッサ104は、操作者が新しいスライドラック220を空のラックスロット208に迅速に挿入することを可能にするために、通常の動作中に(例えば、露出している空のスロットラック208の数を最大化することによって)カルーセル200の位置を最適化することを試みることができる。この設計の1つの要素は、オートローダシステムが、次の未処理のスライドラック220を、そのスライドラック220を処理する準備ができたときにカルーセル200から完全に引き出すことが可能であることである。これにより、カルーセル200は、スキャンシステム100のバックエンドがガラススライド114をスキャンし続けている間に、自身を自由に位置決めすることが可能となる。アクティブなスライドラック220が、処理のためにカルーセル200からロードされると、このアクティブなスライドラック220が処理されている間、かつこのアクティブなスライドラック220の内部のガラススライド114がスキャンされている間、カルーセル200は自由に回転することができる。
【0103】
オートローダシステムを制御するためのソフトウェアは、能動的な回転および自動的な回転の2種類の回転を定義することができる。回転の全ての事例において、誤動作を最小限に抑えるために、オートローダ制御ソフトウェアは、回転を開始する前に厳格な条件を満たしていることを要求することができる。
【0104】
能動的な回転とは、スキャンシステム100の露出した部分800内に特定のスライドラック220を提示するために、操作者の命令に応答してカルーセル200を回転させることを指す。このことは、典型的に、現在のところ露出したラックスロット208のうちの1つにない特定のスライドラック220を、操作者が回収する必要がある場合に要求される。命令を提供するために、ユーザは、スキャンシステム100のコンソール(例えば、タッチパネルディスプレイ)内で、操作者がアクセスしたい特定のスライドラック220を選択し、次いで、その選択したスライドラック220のための「回転」入力要素を選択して、能動的な回転を開始することができる。次いで、プロセッサ104は、安全に実行可能になるとすぐに、選択されたスライドラック220を露出させるための能動的な回転を実行するようにカルーセル200を制御する。
【0105】
自動的な回転とは、ユーザによる如何なる始動またはインタラクションもなしに、カルーセル200を自動的に回転させることを指す。例えば、プロセッサ104は、スキャンシステム100が次のアクティブなスライドラック220を処理する準備ができているときにはいつでも、この次のアクティブなスライドラック220をロードするための位置へと配置するために、自動的な回転を実行することができる。別の例として、スキャンシステム100が動作を完了したときに、最大数の空のラックスロット208がスキャンシステム100の前面において露出されているデフォルト状態へとカルーセル200を戻すために、自動的な回転を実行してもよい。
【0106】
2.3.ラック検出およびLEDインジケータ
【0107】
本明細書の他の場所で論じられているように、スライドラック220の簡単なロードおよびアンロードのために、所定数のラックスロット208は、スキャンシステム100の外部環境に向けて(例えば、スキャンシステム100の前面において)常に露出されている。図示の実施形態では、露出したラックスロット208の数は、常に6つである。換言すれば、6つのラックスロット208は、スキャンシステム100の前面における露出した部分800内で常にアクセス可能である。しかしながら、スキャンシステム100のカルーセル200および/またはフレームを、より少数またはより多数の露出したラックスロット208を提供するように構成してもよい。さらに、露出したラックスロット208を、スキャンシステム100の前面ではない側面において露出させてもよい。
【0108】
一実施形態では、光学センサは、ラックスロット208へのスライドラック220のそれぞれの挿入と、ラックスロット208からのスライドラック220の取り外しとを検出するために、少なくともそれぞれの露出したラックスロット208の内部で位置合わせされている。スライドラック220がラックスロット208の内部に完全に装着されると、光学センサは、スライドラック220の存在を示す値をアサートし、オートローダファームウェアは、ラックスロット208に関するラック状態を不在から存在に更新する。逆に、スライドラック220がラックスロット208から取り外されると、光学センサは、スライドラック220の不在を示す値をアサートし、オートローダファームウェアは、ラックスロット208に関するラック状態を存在から不在に更新する。
【0109】
一実施形態では、スキャンシステム100の露出した部分800内のそれぞれの露出したラックスロット208は、発光ダイオード(LED)1100に関連付けられている。LED1100を、スキャンシステム100の露出した部分800内のカルーセル200の周縁部の周りに含むことができ、カルーセル200が割り出し位置で静止しているときには、それぞれの露出したラックスロット208の前に1つのLED1100が位置決めされている。露出したラックスロット208にスライドラック220が挿入されるときにはいつでも、その露出したラックスロット208の前に位置決めされているLED1100は、まだ見えている。任意の所与の時間に、6つのラックスロット208がスキャンシステム100の前面において露出されている実施形態では、カルーセルの前面に沿った曲線の形態でスキャンシステムのベースに固定された6つのLED1100A~110Fのセットを設けることができる。特に、LED1100のストリップは固定されていて、カルーセル200は回転するので、時間の経過とともにそれぞれ異なるラックスロット208を、任意の所与のLED1100に関連付けることができる。エラー状態でない限り、LED1100は、関連するラックスロット208内のスライドラック220の状態を表す色で点灯するように構成可能である。LED1100は、「空」の状態の場合にはオフにされるか、または灰色または白色で点灯可能である。
【0110】
図11Aおよび
図11Bは、一実施形態による、スライドラック220が検出された後のオートローダシステムの挙動を示す。
図11Aに示されているように、ホーミングプロセスの後、プロセッサ104は、ラックスロット208の開始セットを露出させるために自動的な回転を実行する。このことは、プロセス1000のステップ1060に相当する。全てのラックスロット208が空である図示の例では、ラックスロット208の開始セットは、「1」~「6」とラベル付けされている最初の6つのラックスロット208である。
図11Bに示されているように、第1および第3の(すなわち、それぞれ「1」および「3」とラベル付けされている)ラックスロット208にスライドラック220が完全に挿入されて検出されると、オートローダは、新たに占有された第1および第3のラックスロット208に関連付けられているLED1100Aおよび1100Cをオンにする。さらに、新たに検出されたスライドラック220は、処理されるのを待っているので、これらのLED1100Aおよび1100Cの色は、「処理待ち」状態に関連付けられた色(例えば、青色)である。
【0111】
図12は、一実施形態による、スキャンシステム100のコンソール(例えば、タッチパネルディスプレイ)上に表示することができるグラフィカルユーザインターフェースのカルーセル画面を示す。図示のように、カルーセル画面は、グラフィカルカルーセル表現1210を含み、このグラフィカルカルーセル表現1210は、それぞれのラックスロット208の状態に関連付けられた色で彩色された、それぞれのラックスロット208のグラフィカル表現を含む。カルーセル画面は、それぞれの色をそれらの色が表す状態にマッピングする凡例1220も含む。例えば、「空」の状態(例えば、ラックスロット208が空である)は、灰色に関連付け可能であり、「スキャン待ち」の状態(例えば、ラックスロット208は占有されているが、占有しているスライドラック220はまだ処理されていない)は、水色に関連付け可能であり、「スキャン中」の状態(例えば、ラックスロット208が占有されており、かつ占有しているスライドラック220が現在処理されている最中である)は、濃青色に関連付け可能であり、「完了」の状態(例えば、ラックスロット208が占有されており、かつ占有しているスライドラック220が完全に処理済みである)は、緑色に関連付け可能であり、「警告」の状態(例えば、ラックスロット208が占有されており、かつ占有しているスライドラック220の処理中に警告が発生した)は、橙色に関連付け可能である。さらに、優先度ステータス(例えば、ラックスロット208を占有しているスライドラック220は、処理のために優先順位付けされる)は、アイコン(例えば、感嘆符)に関連付け可能である。
【0112】
関連するラックスロット208内のスライドラック220の状態を反映させるために使用されるLEDの色は、グラフィカルカルーセル表現1210のために使用される凡例1220での色に対応することができる。例えば、オフ、灰色、または白色のLED1100は、「空の」状態を示すことができ、青色のLED1100は、「スキャン待ち」状態を示すことができ、緑色のLED1100は、「完了」状態を示すことができ、橙色のLED1100は、「警告」状態を示すことができる。一般に、現在処理されている最中のスライドラック220によって占有されているラックスロット208は、常にスキャンシステム100の室内の内部にあるため、決して露出されることがないので、「スキャン中」状態を、LED1100によって明確に表す必要は決してないだろう。したがって、上記と同じ色の例を使用すると、LED1100は、「スキャン待ち」状態と「スキャン中」状態との両方を表すために、単一の青色の色合いを使用するだけでよい。
【0113】
2.4.自動的な回転
【0114】
上で論じられているように、カルーセル200は、能動的な回転または自動的な回転に従って制御可能である。自動的な回転は、ユーザが始動することなくカルーセル200の位置を任意に変化させることとして定義される。以下、自動的な回転が発生する可能性のある複数の状況についてのワークフローに関する詳細を説明する。具体的には、以下の挙動のうちの1つまたは複数は、カルーセル200の自動的な回転を利用することができる:ホーミング、スライドラック220を処理のためにロードする、処理済みのスライドラック220をアンロードする、最大数の空のラックスロット208を露出させるために提示する、カルーセルのドリフト補正。
【0115】
2.4.1.ホーミング
【0116】
一実施形態では、本明細書の他の場所で言及されているように、初期化(例えば、コールドリスタート)時に、プロセッサ104は、カルーセル200のためのホーミングプロセスを実行することができる。このホーミングプロセスは、カルーセルのエンコーダ位置をゼロにし、次いで、カルーセル200内のスライドラック220の目録を作成する。スライドラック220が存在する場合には、オートローダシステムは、キュー内の最初のスライドラック220の処理を開始し、その後、最大数の空のラックスロット208が露出された最終状態において終了する。
【0117】
図13は、一実施形態による、カルーセル200の例示的なホーミングプロセス1300を示す。ステップ1310において、ホーミング動きプロファイルが(例えば、メモリ106から)ロードされる。ステップ1320~1340において、カルーセル200は、ロードされたホーミング動きプロファイルに従ってホーミングされる。具体的には、ステップ1320において、カルーセル200は、カルーセル200のリミットスイッチがトリガされるまで1つの方向(例えば、時計回り)に回転される。リミットスイッチがトリガされると、ステップ1330において、リミットスイッチから後退するためにカルーセル200が反対方向(例えば、反時計回り)に回転される。次いで、ステップ1340において、カルーセル200がリミットスイッチへと回転されて戻され、カルーセルのエンコーダ位置がゼロにされる。ステップ1350において、移動動きプロファイルが(例えば、メモリ106から)ロードされる。移動動きプロファイルは、通常の動作中のカルーセル200の動きを支配することができる。
【0118】
ステップ1360において、スキャンシステム100のプロセッサ104は、カルーセル200上のラックスロット208内にある全てのスライドラック220(もしあれば)と、カルーセル200からアンロードされた全てのスライドラック220(もしあれば)との目録を作成することができる。この目録に基づいて、ステップ1370において、プロセッサ104は、スライドラック220が存在するかどうかを判定する。少なくとも1つのスライドラック220が存在する場合(すなわち、ステップ1370で「イエス」)には、ステップ1380において、(例えば、スライドラック220を優先順位付けする)処理キュー内の最初のスライドラック220がカルーセル200からロードされる。スライドラック220が存在しなかった場合(すなわち、ステップ1370で「ノー」)、またはステップ1380の後には、プロセッサ104は、スキャンシステム100の露出した部分800内の空のラックスロット208の数を最大化するために、カルーセル200の自動的な回転を実行する。
【0119】
2.4.2.ローディング
【0120】
一実施形態では、(例えば、プロセッサ104および/または動き制御装置108によって実施される)スキャンシステム100のワークフローは、ガラススライド114がステージ112上にロードされると、ガラススライド114をデジタル化するための全てのバックエンド機能を管理する。スキャンシステム100のバックエンドは、新しいガラススライド114を受け入れる準備ができると、オートローダシステムによって次のガラススライド114のロードが開始されるのを待つ「スライドロード」状態に突入する。次のガラススライド114が新しいスライドラック220に属すること(例えば、現在ロードされているスライドラック220が存在しないこと、または現在ロードされているスライドラック220が完全に処理済みであること)を、オートローダシステムを制御するプロセッサ104が判定すると、プロセッサ104は、次のアクティブなスライドラック220をハンドリングするためのプロセスを開始する。
【0121】
図14A~
図14Cは、一実施形態による、次のアクティブなスライドラック220をロードするためのプロセスを示す。例えば、このプロセスは、オートローダシステムがホーミングプロセスを完了した後に第1のスライドラック220をハンドリングするために開始可能である。ホーミングプロセスを完了した後、ステップ1405において、プロセッサ104は、スキャンシステム100の露出した部分800にスロットラック208を番号順に提示するために、自動的な回転を実行する。
【0122】
ステップ1410において、ラックスロット208A内のセンサは、スライドラック220Aの挿入を検出する。例えば、操作者は、スライドラック220Aを第1のラックスロット208Aに挿入することができる。スライドラック220Aへの挿入が検出されたことに応答して、プロセッサ104は、スライドラック220Aが検出されて処理キューに追加されたことを示すために、ラックスロット208Aのステータスを更新する。したがって、第1のラックスロット208Aに対応するLED1100Aは、この新しいステータスを示すために(例えば、オフ/灰色/白色から青色に)変化することができる。
【0123】
ステップ1415において、プロセッサ104は、カルーセル200の自動的な回転を実行するまでの遅延期間(例えば、10秒)をカウントダウンするカウントダウンタイマを開始することができる。カウントダウンタイマは、新しいスライドラック220Aが検出された後、境界を越えてスキャンシステム100の露出した部分800に進入するもの(例えば、操作者の指)が存在しないことをセンサが検出するとすぐに開始可能である。露出部の境界を越える物体の存在は、スキャンシステム100のフレームの内部の、カルーセル200を露出させる開口部に(例えば、垂直方向に)わたって形成されたライトカーテン900のようなセンサによって検出可能である。カウントダウンタイマは、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースのカルーセル画面上のグラフィカルカルーセル表現1210の内部に表示可能である。例えば、青色の円形バーは、遅延期間内にカルーセル200の差し迫った回転までどれだけの時間が残っているかをユーザに警報するために、遅延期間内に満から空へと遷移することができる。遅延期間は、操作者がコンソールのタッチパネルディスプレイに触れること、または操作者がスキャンシステム100の露出した部分800内に何かを挿入すること(例えば、ライトカーテン900によって検出される)のような、任意のユーザインタラクションに応答してリセット可能である。
【0124】
ステップ1420において、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースは、自動的な回転に先立つ特定の時間枠内に、自動的な回転が差し迫っているとの指示を表示することができる。例えば、この指示は、カルーセル画面上のグラフィカルカルーセル表現1210の代わりに表示される大きな回転アイコンであり得る。時間枠は、3秒であり得る。一実施形態では、回転アイコンを、任意の回転全体を通して、グラフィカルユーザインターフェース内に表示されたままにしてもよい。
【0125】
ステップ1420でグラフィカルユーザインターフェース内に回転アイコンが表示されるのと同時に、ステップ1425において、スキャンシステム100の露出した部分800内の全てのLED1100を点滅または明滅させることができる。一実施形態では、自動的な回転が開始する前の同じ時間枠内(例えば、3秒)に、回転アイコンが表示され、かつLED1100が点滅する。LED1100は、回転が差し迫っていることを操作者に警告するために、自動的な回転が開始する前に所定の回数(例えば、3回)点滅することができる。LED1100は、関連するラックスロット208のいずれのステータスに関連付けられた色とも異なる色(例えば、黄色)で点滅することができる。
【0126】
ステップ1430において、ユーザインタラクションの介入なしに(例えば、コンソールへの接触がない、ライトカーテン900の中断がない等)遅延期間が満了した場合には、自動的な回転が開始される。具体的には、カルーセル200は、ロードされたスロットラック208Aをスキャンシステム100の室内の内部のロード位置へと回転させる。図示のように、ロード位置は、スキャンシステム100の露出した部分800の反対側にある。スロットラック208Aがロード位置に来ると、オートローダシステムは、スロットラック208Aからスライドラック220Aを取り外して、スライドラック220Aの処理を開始する。
【0127】
ステップ1435において、カウントダウンタイマが改めて開始し、このカウントダウンタイマは、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースのカルーセル画面上のグラフィカルカルーセル表現1210の内部に再び表示される。前述のように、カウントダウンタイマは、遅延期間(例えば、10秒)をカウントダウンし、この遅延時間は、ユーザインタラクション(例えば、コンソールのタッチパネルディスプレイへの接触、ライトカーテン900の遮光等)が発生するたびにリセットされる。特に、ステップ1435は、ステップ1415と同じである。
【0128】
ステップ1440において、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースは、自動的な回転に先立つ時間枠内に、自動的な回転が差し迫っているとの指示を再び表示することができる。ステップ1440は、ステップ1420と同じである。
【0129】
ステップ1440でグラフィカルユーザインターフェース内に回転アイコンが表示されるのと同時に、ステップ1445において、スキャンシステム100の露出した部分800内の全てのLED1100を点滅または明滅させることができる。ステップ1445は、ステップ1425と同じである。
【0130】
ステップ1450において、ユーザインタラクションの介入なしに遅延期間が満了した場合には、自動的な回転が開始される。具体的には、プロセッサ104は、最大数の空のラックスロット208をスキャンシステム100の露出した部分800内に位置決めするために、自動的な回転を実行する。しかしながら、この場合には、第1の(すなわち、「1」とラベル付けされている)ラックスロット208Aは、占有されていると見なされる。すなわち、スライドラック220Aがラックスロット208Aの外側で処理されている最中である場合であっても、スライドラック220Aはラックスロット208Aに関連付けられたままであり、ラックスロット208Aの状態は、現在「スキャン中」である。したがって、第1~第6の(すなわち、「1」~「6」とラベル付けされている)ラックスロット208が露出されていたステップ1405とは異なり、ステップ1450では、第2~第7(すなわち、「2」~「7」とラベル付けされている)のラックスロット208が露出されている。特に、スライドラック220Aが第1のラックスロット208Aの外側で処理されている最中である限り、第1の(すなわち、「1」とラベル付けされている)ラックスロット208Aは、決して露出されることはない。このことにより、第1のラックスロット208Aが、処理されている最中のスライドラック220Aによって技術的に占有されている間、操作者が、この第1のラックスロット208Aに別のスライドラック220を挿入することが阻止される。特に、この例では、LED1100は全て、各自に関連付けられたラックスロット208(すなわち、「2」~「7」とラベル付けされている第2~第7のラックスロット208)が空であることを示す。
【0131】
2.4.3.アンローディング
【0132】
一実施形態では、スライドラック220が処理済みになると、そのスライドラック220は、カルーセル200の内部の各自に関連付けられたラックスロット208へと返却される。露出させるために空のラックスロット208が優先されるので、処理済みのスライドラック220は、必ずしも、自動的な回転を介してスキャンシステム100の露出部内に提示されるとは限らない。これにより、連続ロードワークフローが最適化される。
【0133】
図15A~
図15Cは、一実施形態による、処理済みのスライドラック220をアンロードするためのプロセスを示す。理解を容易にするために、これらの図面は、
図14A~
図14Cに示されているロードプロセスの終了から始まる。具体的には、ステップ1505において、スライドラック220Aの処理が完了した(例えば、スライドラック220Aの内部の全てのガラススライド114がスキャンされた)。したがって、プロセッサ104は、スライドラック220Aをアンロードして、スライドラック220Aに関連付けられたラックスロット208Aに戻すために、自動的な回転を開始する。
【0134】
ステップ1510において、プロセッサ104は、遅延期間(例えば、10秒)をカウントダウンするカウントダウンタイマを開始することができ、ユーザインタラクションが発生するたびにリセットする。さらに、プロセッサ104は、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースのカルーセル画面上のグラフィカルカルーセル表現1210の内部に、この遅延期間を表示することができる。特に、ステップ1510は、ステップ1415および1435と同じである。
【0135】
ステップ1515において、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースは、自動的な回転に先立つ時間枠(例えば、3秒)内に、自動的な回転が差し迫っているとの指示、例えば回転アイコンを表示することができる。特に、ステップ1515は、ステップ1420および1440と同じである。
【0136】
ステップ1515でグラフィカルユーザインターフェース内に回転アイコンが表示されるのと同時に、ステップ1520において、スキャンシステム100の露出した部分800内の全てのLED1100を点滅または明滅させることができる。特に、ステップ1520は、ステップ1425および1445と同じである。
【0137】
ステップ1525において、ユーザインタラクションの介入なしに遅延期間が満了した場合には、自動的な回転が開始される。具体的には、プロセッサ104は、ラックスロット208Aを、スキャンシステム100の室内の内部のカルーセル200のロード位置に位置決めするために、自動的な回転を実行する。換言すれば、処理済みのスライドラック220Aに関連付けられたラックスロット208Aが、オートローダシステムのラックロード機構に隣接する位置へと回転される。
【0138】
ステップ1530において、スライドラック220Aがアンロードされて、ロード位置へと回転されたラックスロット208Aに入れられる。スライドラック220Aをアンロードした後、処理キュー内にいずれかの他のスライドラック220が残っている場合には、プロセッサ104は、(例えば、
図14A~
図14Cに示されているプロセスを使用して)そのスライドラック220をロードするために、自動的な回転を開始する。そうでない場合、すなわち、処理されるべきスライドラック220が残っていない場合には、プロセッサ104は、最大数の空のラックスロット208をスキャンシステム100の露出した部分800内に位置決めするために、自動的な回転を実行する。
【0139】
ステップ1535において、プロセッサ104は、遅延期間をカウントダウンするカウントダウンタイマを開始することができ、ユーザインタラクションが発生するたびにリセットすることができる。さらに、プロセッサ104は、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースのカルーセル画面上のグラフィカルカルーセル表現1210の内部に、この遅延期間を表示することができる。特に、ステップ1535は、ステップ1415、1435および1510と同じである。
【0140】
ステップ1540において、スキャンシステム100のコンソール内のグラフィカルユーザインターフェースは、自動的な回転に先立つ時間枠内に、自動的な回転が差し迫っているとの指示、例えば回転アイコンを表示することができる。特に、ステップ1535は、ステップ1420、1440および1515と同じである。
【0141】
ステップ1535でグラフィカルユーザインターフェース内に回転アイコンが表示されるのと同時に、ステップ1545において、スキャンシステム100の露出した部分800内の全てのLED1100を点滅または明滅させることができる。特に、ステップ1545は、ステップ1425、1445および1520と同じである。
【0142】
ステップ1550において、ユーザインタラクションの介入なしに遅延期間が満了した場合には、自動的な回転が開始される。具体的には、プロセッサ104は、最大数の空のラックスロット208をスキャンシステム100の露出した部分800内に位置決めするために、自動的な回転を実行する。特に、ステップ1550は、ステップ1450と同じである。したがって、第2~第7の(すなわち、「2」~「7」とラベル付けされている)ラックスロット208は露出されているが、ラックスロット208Aは露出されていないままである。しかしながら、ステップ1450とは異なり、処理済みのスライドラック220Aは、実際にラックスロット208Aの内部にある。連続ロードを維持するという利益のためには、たとえラックスロット208Aが露出されたとしても、(例えば、スライドラック220Aが現在ラックスロット208Aの外側で処理されている最中である場合であれば生じていたであろう)ワークフローへの悪影響は生じないであろうが、操作者の命令(例えば、処理済みのスライドラック220Aをスキャンシステム100の露出した部分800へと回転させるための入力要素を選択するという、コンソールを介したユーザインタラクション)に応答する場合を除いて、または他の全てのラックスロット208が、処理されるのを待っているスライドラック220によって占有されているという場合を除いて、処理済みのスライドラック220が、スキャンシステム100の露出した部分800へと回転されることはない。
【0143】
2.4.4.露出した空のラックスロットの最大化
【0144】
一実施形態では、連続ロードの目的を達成するために、自動的な回転を使用して、スキャンシステム100の露出した部分800内の空のラックスロット208の数を最大化する。これにより、スキャンシステム100を使用するために必要なユーザインタラクションの時間が最小限に抑えられる。具体的には、スキャンシステム100が、自身の処理可能な最大数の新しいスライドラック220を取り入れる準備ができていることが、これにより保証される。操作者は、単にスキャンシステム100に近づき、新しいスライドラック220を空のラックスロット208内に配置すればよいだけである。有利には、スキャナのワークフローの大部分に対する新しい命令を処理するために、スキャンシステム100とのユーザインタラクションは殆ど要求されない。しかしながら、代替的な実施形態では、露出した部分800内の空のラックスロット208の数を最大化する代わりに、自動的な回転を使用して、完全に処理済みのラックスロット208を露出した部分800内に自動的に提示してもよい。
【0145】
一実施形態では、オートローダシステムは、スキャンシステム100の露出した部分800内にどのラックスロット208を提示すべきかを決定するために、重み付き和を利用する。例えば、それぞれのラックスロット208には1つの値が割り当てられる。最低値(例えば、-600)は、関連するラックスロット208が空であることを意味する。比較的高い値(例えば、0)は、関連するラックスロット208が、処理済みのスライドラック220によって占有されていることを意味する。最高値(例えば、1000000)は、関連するラックスロット208が、処理されている最中のスライドラック220によって占有されていることを意味する。露出した空のラックスロット208の数を最大化することを試みる場合には、プロセッサ104は、全体の合計が最小になるような、隣り合う露出可能なラックスロット208のセグメント(例えば、6つの隣り合うラックスロット208のセット)を計算して選択する。ラックスロット208の複数のセグメントが、それぞれ同じ全体の合計を有する場合(例えば、カルーセル200内の全てのラックスロット208が空である場合)には、プロセッサ104は、同じ最小の全体の合計を有する隣り合うラックスロット208のセグメントの中から、最小のスロット番号を有するラックスロット208を含むセグメントを選択する(例えば、「1」とラベル付けされている第1のラックスロット208が最小のスロット番号を有し、「15」とラベル付けされている15番目のラックスロット208が最大のスロット番号を有する)。
【0146】
図16A~
図16Eは、一実施形態による、プロセッサ104によって割り当てられる例示的なラックスロット208値を示し、これらのラックスロット208値は、自動的な回転を使用してスキャンシステム100の露出した部分800内に提示すべき、隣り合うラックスロット208のセグメントを識別するために使用される。
【0147】
図16Aでは、全てのラックスロット208が空である。したがって、全てのラックスロット208は、同じ割り当て値(例えば、-600)を有する。隣り合うラックスロット208の全てのセグメントは、同じ全体の合計(例えば、6×-600=-4800)を有するので、プロセッサ104は、全体のスロット番号が最も小さいセグメント(すなわち、「1」~「6」とラベル付けされている第1~第6のラックスロット208からなるセグメント)を選択し、このセグメントをスキャンシステム100の露出した部分800内で露出させるために、カルーセル200の自動的な回転を実行する。
【0148】
図16Bでは、第1および第3の(すなわち、「1」および「3」とラベル付けされている)ラックスロット208が両方ともスライドラック220によって占有されている。したがって、第1および第3のラックスロット208の両方に、比較的高い値(例えば、100)が割り当てられ、その一方で、残りのラックスロット208は、最低値(例えば、-600)を保持する。特に、操作者がスキャンシステム100とのインタラクションを停止した後(例えば、操作者がスライドラック220を第1および第3のラックスロット208に挿入した後)、プロセッサ104は、新しく挿入された全てのスライドラック220を処理キューに追加する。複数の新しいスライドラック220が挿入された場合、プロセッサ104は、これらの複数の新しいスライドラック220を、それらが検出された順序で処理キューに追加することができる。したがって、例えば、操作者が第1のラックスロット208に1つのスライドラック220を挿入し、次いで、第3のラックスロット208に1つのスライドラック220を挿入した場合には、第1のラックスロット208内のスライドラック220が、処理キューの最初の位置に追加され(すなわち、このスライドラック220がアクティブなスライドラックになる)、次いで、第3のラックスロット208内のスライドラック220が、処理キューの2番目の位置に追加される(すなわち、このスライドラック220が次のアクティブなスライドラックになる)。
【0149】
図16Cでは、第1のラックスロット208からのスライドラック220は、現在処理されている最中であり、その一方で、第3のラックスロット208内のスライドラック220は、処理されるのを待っている。したがって、第1のラックスロット208には最高値(例えば、1000000)が割り当てられ、その一方で、第3のラックスロット208は、中程度の値(例えば、100)を保持し、残りのラックスロット208は、最低値(例えば、-600)を保持する。この場合には、複数のセグメントは、同じ最小の合計を有する(例えば、-4800)。したがって、プロセッサ104は、全体のスロット番号が最も小さいセグメント(すなわち、「4」~「9」とラベル付けされている第4~第9のラックスロット208からなるセグメント)を選択し、このセグメントをスキャンシステム100の露出した部分800内で露出させるために、カルーセル200の自動的な回転を実行する。特に、この自動的な回転は、第1のラックスロット208からのスライドラック220が処理されている間に、つまり、第1のラックスロット208がオートローダシステムのラックロード・アンロード機構とはもはや位置合わせされていなくても実行される。
【0150】
図16Dでは、全てのラックスロット208が占有されており、第2の(すなわち、「2」とラベル付けされている)ラックスロット208からのスライドラック220は、処理されている最中であり、第3の(すなわち、「3」とラベル付けされている)ラックスロット208からのスライドラック220は、処理が完了している。したがって、第2のラックスロット208には最高値(例えば、1000000)が割り当てられ、第3のラックスロット208には低い値(例えば、0)が割り当てられ、残りのラックスロット208には中程度の値(例えば、100)が割り当てられる。したがって、第3~第8の(すなわち、「3」~「8」とラベル付けされている)ラックスロット208からなるセグメントは、全体の合計が最小である。したがって、プロセッサ104は、このセグメントをスキャンシステム100の露出した部分800内で露出させるために、カルーセル200の自動的な回転を実行する。
【0151】
図16Eでは、全てのラックスロット208が占有されており、第2の(すなわち、「2」とラベル付けされている)ラックスロット208からのスライドラック220は、処理されている最中であり、第1の(すなわち、「1」とラベル付けされている)ラックスロット208からのスライドラック220は、処理が完了している。したがって、第2のラックスロット208には最高値(例えば、1000000)が割り当てられ、第1のラックスロット208には低い値(例えば、0)が割り当てられ、残りのラックスロット208には中程度の値(例えば、100)が割り当てられる。したがって、第11~第1の(すなわち、「11」、「12」、「13」、「14」、「15」および「1」とラベル付けされている)ラックスロット208からなるセグメントは、全体の合計が最小である。したがって、プロセッサ104は、このセグメントをスキャンシステム100の露出した部分800内で露出させるために、カルーセル200の自動的な回転を実行する。
【0152】
特に、一実施形態では、現在処理されている最中のスライドラック220に対応するラックスロット208は、スキャンシステム100の露出した部分800内に決して露出されないようになっている。常にこの要件が満たされることを保証するために、プロセッサ104は、カルーセル200を両方向に回転させるように構成可能である。例えば、プロセッサ104がカルーセル200を、
図16Bに示されている位置から
図16Cに示されている位置へと回転させているときには、プロセッサ104は、カルーセル200を時計回りの方向に回転させることができる。しかしながら、プロセッサ104がカルーセル200を、
図16Dに示されている位置から
図16Eに示されている位置へと回転させているときには、処理されている最中のスライドラック220に対応する第2の(すなわち、「2」とラベル付けされている)ラックスロット208が露出されることを回避するために、プロセッサ104は、カルーセル200を反時計回りの方向に回転させることができる。
【0153】
2.4.5.カルーセルのドリフト補正
【0154】
ベルト210とベルト凹部204との間の摩擦を利用してカルーセル200を回転させるという機械的制約に起因して、カルーセル200の物理的な位置は、カルーセルの駆動モータによって報告されるエンコーダ位置に対して時間の経過とともにドリフトする可能性がある。一実施形態では、この機械的なドリフトを補償するために、カルーセル200が移動した総回転距離を常時追跡するためのカウンタが実装されている。このカウンタは、総回転距離がいつ所定の閾値を超えたかを特定するために使用可能である。プロセッサ104は、このカウンタを監視して、カウンタが所定の閾値を超えるとカルーセルドリフト補正ロジックを実行することができる。カルーセルドリフト補正ロジックは、任意のアクティブな回転動作を一時休止させることができ、位置エンコーダが正確であり続けることを保証するために、(例えば、
図13のプロセス1300に示されているような)ホーミングプロセスをカルーセル200に対して実行することができる。カルーセルドリフト補正ロジックの完了後、プロセッサは、移動動きプロファイルをリロードし、回転動作が停止した点から、中断していた任意の回転動作を完了することができる。
【0155】
2.5.能動的な回転
【0156】
自動的な回転とは対照的に、能動的な回転とは、操作者がカルーセル200に回転するように命令することを指す。そのような命令は、典型的に、コンソール(例えば、タッチ動作によって選択可能なグラフィカルカルーセル表現1210のような、入力要素を表示するタッチパネルディスプレイ)を介して受信される。しかしながら、そのような命令を、リモートテストユーティリティおよび/またはコマンドラインインターフェースなどにも組み込むことができるように、能動的な回転を、(例えば、アプリケーションプログラミングインターフェース(API)を介して)機能的に公開してもよい。
【0157】
カルーセル200を能動的に回転させる主な理由は、スキャンシステム100の露出した部分800内にある現在アクセス不可能なスライドラック220を回収することである。この状況に関して、2つの一般的な使用事例が存在する。第1の使用事例では、ユーザは、現在処理されている最中ではないスライドラック220を回転させることができる(すなわち、非アクティブなスライドラック220の回転)。第2の使用事例では、ユーザは、現在処理されている最中のスライドラック220を回転させることができる(すなわち、アクティブなスライドラック220の回転)。両方の使用事例について、以下でさらに詳しく説明する。
【0158】
2.5.1.アクティブなラック
【0159】
アクティブなスライドラック220の能動的な回転は、アクティブなスライドラック220を回収するために、操作者がアクティブなスライドラック220の処理を中断すること(例えば、アクティブなスライドラック220の内部のガラススライド114のスキャンを中断すること)を選択したということを意味する。この場合、アクティブなスライドラック220を、オートローダシステムの(例えば、スライドラック220をロードおよびアンロードするための)リフトに位置付けることができる。したがって、アクティブなスライドラック220を回収するために、スキャンシステム100は、スキャンプロセスを丁寧に停止し、スキャンされている最中のガラススライド114をステージ112からアンロードしてアクティブなスライドラック220に戻し、アクティブなスライドラック220をアンロードしてカルーセル200に戻し、そして、このスライドラック220によって占有されているラックスロット208を露出させるために、カルーセル200を能動的に回転させる必要がある。
【0160】
図17A~
図17Cは、一実施形態による、アクティブなスライドラック220の能動的な回転を示す。
図17A~
図17Cの各々は、ステップ1705~1730の各々について、カルーセル200のステータスと、グラフィカルカルーセル表現1210とを示す。
【0161】
ステップ1705において、操作者は、グラフィカルカルーセル表現1210内における第3の(すなわち、「3」とラベル付けされている)ラックスロット208のグラフィカル表現を選択し、次いで、グラフィカルカルーセル表現1210の中心にある回転入力要素を選択することによって、能動的な回転を開始する。
【0162】
ステップ1710において、カルーセル画面は、能動的な回転を続行するかどうかを確認するように操作者に促す。例えば、カルーセル画面は、能動的な回転を確認するための入力要素と、能動的な回転のための命令を取り消すための入力要素とを備えたダイアログフレームを、グラフィカルカルーセル表現1210上にオーバーレイすることができる。
【0163】
ステップ1715において、プロセッサ104が操作者からダイアログフレームを介して能動的な回転を実行するための確認を受信すると、プロセッサ104は、能動的な回転を開始する前に全てのスキャンが完了するまで待つ。例えば、スキャンシステム100が、現在ガラススライド114をスキャンしている最中である場合には、プロセッサ104は、スキャンが完了するのを待ってから、ガラススライド114をアンロードして、このガラススライド114のスライドラック220に戻す。換言すれば、能動的な回転を実行せよとの命令は、アクティブなスキャンが完了するまで遅延される可能性がある。この遅延の間、現在のガラススライド114がスキャンを完了するのを待つように操作者に通知するためのメッセージフレームを、グラフィカルカルーセル表現1210上にオーバーレイすることができる。
【0164】
ステップ1720において、全てのアクティブなスキャンが完了すると、プロセッサ104は、スキャン済みのガラススライド114をステージ112からアンロードして、このガラススライド114のスライドラック220に戻すようにオートローダシステムを制御する。ガラススライド114がアンロードされてスライドラック220に入れられた後、プロセッサ104は、所定の時間の間(例えば、3秒間)回転アイコンを表示するようにコンソールを制御する。さらに、プロセッサ104は、所定の時間の間および/または所定の回数(例えば、3回)、所定の通知色(例えば、黄色)で点滅するように、スキャンシステム100の露出した部分800内のLED1100を制御することができる。
【0165】
ユーザインタラクションなしに所定の時間が経過した後、ステップ1725において、プロセッサ104は、スライドラック220をアンロードして、カルーセル200内のこのスライドラック220のラックスロット208へと入れる。スライドラック220がアンロードされると、回転アイコンを、所定の時間の間(例えば、3秒間)表示させることができ、LED1100は、所定の時間の間および/または所定の回数(例えば、3回)、所定の通知色で点滅することができる。次いで、ユーザインタラクションなしに所定の時間が経過した後、プロセッサ104は、カルーセル200の能動的な回転を開始する。
【0166】
ステップ1730において、第3のラックスロット208をスキャンシステム100の露出した部分800内へと回転させるために、能動的な回転が実行され、これによって操作者は、第3のラックスロット208にアクセス可能となる。一実施形態では、第3のラックスロット208が露出されると、第3のラックスロット208に関連付けられたLED1100は、操作者が能動的に回転したばかりの第3のラックスロット208の位置を操作者に通知するために、所定の色(例えば、「スキャン待ち」状態に関連付けられた色、例えば、青色)でパルスする。図示してはいないが、能動的な回転の後および/または最中に、カルーセル200内のそれぞれのラックスロット208の新しい位置を反映させるために、グラフィカルカルーセル表現1210を更新してもよい。
【0167】
2.5.2.非アクティブなラック
【0168】
非アクティブなスライドラック220の能動的な回転は、現在処理されている最中ではない、スキャンシステム100の露出した部分800内に存在しない非アクティブなスライドラック220を、操作者が回収することを選択したことを意味する。換言すれば、操作者は、カルーセル200のうちの、スキャンシステム100の室内の内部に位置決めされている非アクティブなスライドラック220を回収することを希望している。一般に、非アクティブなスライドラック220とは、カルーセル200の内部にあり、すなわち、処理のためにカルーセル200からロードされていない任意のスライドラック220である。非アクティブなスライドラック220は、処理済みであるか、または処理されるのを待っているが、最大数の空のラックスロット208を露出した部分800に提供するための自動的な回転の機能に起因してスキャンシステム100の室内の内部に来ているような、スライドラック220であり得る。
【0169】
図18は、一実施形態による、非アクティブなスライドラック220の能動的な回転のためのプロセス1800を示す。ステップ1810において、プロセッサ104は、例えばスキャンシステム100のコンソールのグラフィカルユーザインターフェース内のグラフィカルカルーセル表現1210を介して、非アクティブなスライドラック220の選択を受信する。非アクティブなスライドラック220が選択された後、ステップ1820において、プロセッサ104は、グラフィカルユーザインターフェースの内部の回転入力要素(例えば、回転アイコン)のさらなる選択を受信する。
【0170】
ステップ1830において、プロセッサ104は、カルーセル200がロックされているかどうかを判定する。例えば、オートローダシステムは、スキャンシステム100のコンポーネント、ガラススライド114および/または操作者などへの如何なる損傷をも回避するために、特定の状況においてカルーセル200を自動的にロックすることができる。1つの例示的な状況は、例えばライトカーテン900またはピンチポイントセンサ810によって、露出した部分800内で障害物が検出された場合であろう。カルーセル200がロックされている場合(すなわち、ステップ1830で「イエス」)には、プロセッサ104は、カルーセル200がロック解除されるまで待つ。一実施形態では、(例えば、スキャンシステム100のコンソールのグラフィカルユーザインターフェース内の警告ダイアログフレーム、音響警報等を介して)操作者に障害物について警報することができる。
【0171】
カルーセルがロック解除されると(すなわち、ステップ1830で「ノー」)、ステップ1840において、プロセッサ104は、1つまたは複数の差し迫った回転についての通知を提供する。本明細書の他の場所で説明されているように、差し迫った回転についての通知は、グラフィカルユーザインターフェースのカルーセル画面上のグラフィカルカルーセル表現1210の代わりに回転アイコンを表示することおよび/またはカルーセル200の回転を開始する前の所定の時間枠の間(例えば、3秒間)、LED1100を点滅させることを含むことができる。
【0172】
所定の時間枠が経過した後、ステップ1850において、プロセッサ104は、ステップ1810で選択された非アクティブなスライドラック220によって占有されているラックスロット208を、露出した部分800(例えば、スキャンシステム100の前面)へと回転させるために、能動的な回転を開始する。能動的な回転が完了した後、操作者は、露出した部分800に手を伸ばして、選択したスライドラック220をこのスライドラック220のラックスロット208から取り出すことができる。
【0173】
2.6.エラーハンドリング
【0174】
以下、連続ロードワークフローに関するエラーハンドリングについて説明する。連続ロードのエラーハンドリングは、スキャンシステム100の露出した部分800と外部環境との間の境界を越える物体を検出するライトカーテン900と、露出した部分800の両端にある、カルーセル200とスキャンシステム100のフレームとの間のピンチポイントにおいて障害物を検出するピンチポイントセンサ810との両方に依存することができる。
【0175】
2.6.1.遮断されたライトカーテン(カルーセルが静止している場合)
【0176】
カルーセル200が静止している間のライトカーテン900のトリガ(すなわち、1つまたは複数の送信機/受信機ペア920/925間の遮光の検出であり、露出した部分800への侵入を表す)は、操作者がカルーセル200とインタラクションしていることを示すことができる。したがって、ライトカーテン900がトリガされている限り、カルーセル200を回転させることは安全でないと想定される。ライトカーテン900が長期間にわたってトリガされる場合には、このことは、スライドラック220またはスライドラック220内のガラススライド114のいずれかが適切に装着されていないことを示すことができる。不適切に装着されたスライドラック220またはガラススライド114は、これらがスキャンシステム100の室内へと回転する際に、カルーセル200の回転を妨害する危険性をもたらす。
【0177】
一実施形態では、プロセッサ104は、タイマを利用して、ライトカーテン900が連続的にトリガされている時間を記録する。ライトカーテン900が所定の時間閾値を超えてトリガされている場合には、スキャンシステム100のコンソールのグラフィカルユーザインターフェース上でダイアログフレームをトリガするために、ラック状態にユーザイベントを設定することができる。このダイアログフレームは、ライトカーテン900が妨害されており、障害物が取り除かれるまでカルーセル200が回転しないことを(例えば、テキストおよび/または画像を介して)示すことができる。ダイアログフレームは、障害物が取り除かれるまでグラフィカルユーザインターフェース内に留まることができる。障害物が取り除かれると、プロセッサ104は、コンソールからダイアログフレームを取り除くことができる。
【0178】
2.6.2.遮断されたライトカーテン(カルーセルが動いている場合)
【0179】
カルーセル200が動いている間、ライトカーテン900は、安全性センサとして利用される。カルーセル200が回転している間にライトカーテン900がトリガされると、カルーセル200は、次の割り出し位置まで丁寧に回転してから、自動的に回転を停止することができる。カルーセル200が停止すると、カルーセルが静止している間にライトカーテン900が遮断された場合についての上述した論理を使用することができる。
【0180】
2.6.3.遮断されたピンチポイントセンサ(カルーセルが静止している場合)
【0181】
カルーセル200が静止している場合には、ピンチポイントセンサ810のトリガは、オートローダシステムのための制御論理のソフトウェア状態に影響を与えない。したがって、ピンチポイントセンサ810がトリガされていて、かつカルーセル200が静止している間におけるオートローダシステムの挙動は、カルーセル200が静止している間にライトカーテン900がトリガされた場合のオートローダシステムの挙動と同じであってよい(例えば、障害物が取り除かれるまで、コンソールのグラフィカルユーザインターフェース内にダイアログフレームを表示して、操作者に障害物について通知する)。
【0182】
2.6.4.遮断されたピンチポイントセンサ(カルーセルが動いている場合)
【0183】
図19は、一実施形態による、カルーセル200が動いている間にピンチポイントセンサ810が使用されるプロセス1900を示す。ステップ1910において、カルーセル200を回転させるためにカルーセルモータが駆動される。この回転は、本明細書の他の場所で説明されているように、自動的な回転または能動的な回転であり得る。
【0184】
カルーセル200の回転中、ピンチポイントセンサ810は、カルーセル200のピンチポイントを監視することができる。ピンチポイントセンサ810がトリガされない限り(すなわち、ステップ1920で「ノー」)、カルーセル200の回転を継続することができる。しかしながら、ピンチポイントセンサ810がトリガされた場合(すなわち、ステップ1920で「イエス」)には、ステップ1930においてカルーセルモータが即座に制動される。
【0185】
カルーセル200が動いている間、ピンチポイントセンサ810のトリガは、潜在的な安全上の危険を示す。一実施形態では、ピンチポイントセンサ810Aおよび810Bからカルーセルモータのブレーキラインまで物理的なワイヤが配線されている。したがって、カルーセル200が割り出し位置にあるかどうかに関係なく、ピンチポイントセンサ810の作動(すなわち、ステップ1920で「イエス」)は、ステップ1930におけるカルーセルモータの、ひいてはカルーセル200の即時停止をトリガする。この挙動はハードウェアによって制御されるので、このような実施形態では、ソフトウェアを使用してこの挙動を調整することはできない。
【0186】
ステップ1940において、ピンチポイントエラーイベントが設定される。次いで、オートローダシステムは、ステップ1950においてピンチポイントセンサ810がクリアになるのを待つ。ピンチポイントセンサ810がクリアになると(すなわち、ステップ1950で「イエス」)、ステップ1960においてピンチポイントエラーイベントが解除される。しかしながら、ステップ1930での緊急制動は、カルーセル200の軸上での割り出し位置決めの失敗をもたらす結果となる可能性がある。したがって、ステップ1970において、カルーセル200の姿勢を再確立するために、本明細書の他の場所で(例えば、
図13のプロセス1300に関して)説明されているホーミングプロセスがカルーセル200上で実行される。カルーセル200が再ホーミングされると、ステップ1910において回転を継続することができる。
【0187】
ピンチポイントセンサ810がクリアにならない限り(すなわち、ステップ1950で「ノー」)、プロセッサ104は、ステップ1980において、致命的なエラーイベントをトリガするかどうかを判定することができる。ステップ1980の実施形態では、プロセッサ104は、ピンチポイントエラーイベントが継続的に設定されている時間の長さを、閾値時間と比較する。ピンチポイントエラーイベントが継続的に設定されている時間の長さが閾値時間よりも短い場合(すなわち、ステップ1980で「ノー」)には、プロセッサ104は、ピンチポイントセンサ810がクリアになるのを待ち続ける。そうでない場合、すなわち、ピンチポイントエラーイベントが継続的に設定されている時間の長さが閾値時間を超える場合(すなわち、ステップ1980で「イエス」)には、プロセッサ104は、自身のワークフローを継続することができないので、ステップ1990において致命的なエラー状態をトリガする。
【0188】
一実施形態では、ステップ1990においてスキャンシステム100が致命的なエラー状態に陥った場合、スキャンシステム100は、操作者が障害物を取り除いてスキャンシステム100を再開するまで、この状態のままである。致命的なエラー状態では、プロセッサ104は、操作者に致命的なエラーを通知するために、全てのLED1100をエラー色(例えば、赤色)で点滅するように制御して、スキャンシステム100のコンソールのグラフィカルユーザインターフェース内にエラーフレームを表示することができる。
【0189】
2.7.デュアルステートマシン
【0190】
一実施形態では、スキャンシステム100のプロセッサ104は、デュアルステートマシンに従ってオートローダシステムを制御する。換言すれば、オートローダシステムの制御は、以下の2つの部分に分割されている:(1)フロントエンドステートマシン(FSM)は、オートローダシステムのうちのユーザがインタラクションするフロントエンドコンポーネント(例えば、カルーセル200など)を担当する。(2)バックエンドステートマシン(BSM)は、オートローダシステムのうちの、フロントエンドコンポーネントからのスライドラック220をロードおよびアンロードするバックエンドコンポーネント(例えば、プッシュ/プルアセンブリ300)を担当し、フロントエンドコンポーネントから回収されたスライドラック220を処理する(例えば、スライドラック220からステージ112上にガラススライド114をロードおよびアンロードする)。したがって、フロントエンドステートマシンは、カルーセル200に関して上述したモータ(例えば、カルーセルの駆動モータ)およびセンサ(例えば、ピンチポイントセンサ810、ライトカーテン900等)と、スキャンシステム100の他のフロントエンドコンポーネントとを制御することができる。同様にして、バックエンドステートマシンは、カルーセル200からのスライドラック220をロードおよびアンロードするため、かつアンロードされたスライドラック220とステージ112との間でガラススライド114を移動させるために必要とされるモータおよびセンサと、他のバックエンドコンポーネントとを制御することができる。
【0191】
図20は、一実施形態による、デュアルステートマシン2000におけるデータフローを示す。上で言及されているように、デュアルステートマシンは、フロントエンドステートマシン2010およびバックエンドステートマシン2020を含む。スキャンシステム100のフロントエンドおよびバックエンドの両方は、互いに独立して動作するので、フロントエンドステートマシン2010およびバックエンドステートマシン2020は、自律的に動作可能であるべきである。したがって、バックエンドが、カルーセル200からアンロードされたスライドラック220からのガラススライド114を処理している間に、操作者は、いつでもフロントエンドとインタラクションすることが可能である(例えば、スライドラック220を挿入または取り外しするため、指定したスライドラック220を露出した部分800内に提示するようにグラフィカルユーザインターフェースを介して命令するため等)。
【0192】
しかしながら、バックエンドステートマシン2020は、スライドラック220を処理するために、フロントエンドコンポーネントに命令を発行して、フロントエンドコンポーネントのステータスを取得することが可能でなければならない。したがって、図示の実施形態では、フロントエンドステートマシン2010とバックエンドステートマシン2020との間には通信チャネルが設けられている。具体的には、図示のように、フロントエンドステートマシン2010は、フロントエンドステータスをバックエンドステートマシン2020に提供するように構成されており、バックエンドステートマシン2020は、フロントエンド命令をフロントエンドステートマシン2010に発行するように構成されている。
【0193】
図示の実施形態では、フロントエンドステートマシン2010は、フロントエンドのモータ(例えば、カルーセルの駆動モータ)およびセンサ(例えば、ピンチポイントセンサ810、ライトカーテン900等)からの入力と、状態情報とを受信する。さらに、フロントエンドステートマシン2010は、バックエンドステートマシン2020と、スキャンシステム100のコンソール(例えば、グラフィカルユーザインターフェースを表示するタッチパネルディスプレイ)との両方から、フロントエンド命令を受信するように構成されている。フロントエンドステートマシン2020は、バックエンドステートマシン2020とユーザインターフェースとの両方から競合するフロントエンド命令が一度にまたは同時に受信された場合に、優先度および競合解決メカニズムを実装することができる。優先度および競合解決メカニズムは、例えば、フロントエンド命令のソースおよび/またはフロントエンド命令の種類に基づいて、競合するフロントエンド命令が処理される順序(または破棄すべきフロントエンド命令)を決定することができる。
【0194】
フロントエンドステートマシン2010は、自身への入力から、1つまたは複数のフロントエンドコンポーネント(例えば、カルーセルの駆動モータ)および/またはスキャンシステム100のコンソールへの出力のセットを決定する。さらに、フロントエンドステートマシン2010は、フロントエンドステータスと、フロントエンドの次の状態とを決定する。フロントエンドステータスと、次の状態とは、メモリ106(または、ハードウェアの場合にはDフリップフロップ)に格納可能である。上で言及されているように、フロントエンドステータスは、バックエンドステートマシン2020に通信可能である。
【0195】
バックエンドステートマシン2020は、フロントエンドステートマシン2010と同様に動作して、バックエンドのモータおよびセンサから入力を受信する。しかしながら、バックエンドステートマシン2020は、スキャンワークフローを実施するために、必要に応じてスキャンシステム100から自身への命令(すなわち、バックエンド命令)を受信し、また、フロントエンドステートマシン2010からフロントエンドステータスも受信する。バックエンドステートマシン2020は、フロントエンドステートマシン2010から受信したフロントエンドステータスに基づいて行動し、フロントエンドステートマシン2010に送信されるフロントエンド命令を出力する。
【0196】
図21は、(例えば、プロセッサ104によって実装される)スキャンワークフロー2130と、バックエンドステートマシン2020と、フロントエンドステートマシン2010と、スキャンシステム100の(例えば、グラフィカルユーザインターフェースを表示するタッチパネルディスプレイを含む)コンソール2140と、操作者との間における、例示的なインタラクションの概観を示す。連続ロードワークフローの図示のシナリオでは、スキャンワークフロー2130がある特定のガラススライド114をスキャンする必要があると決定されたことが想定されている。インタラクションの例示的なセットは、以下の通りである:
【0197】
(1)スキャンワークフロー2130は、スキャンされるべきスライド114をロードせよとの命令をバックエンドステートマシン2020に発行し、この命令が完了するのを待つ。
【0198】
(2)バックエンドステートマシン2020が現在タスクを実行している最中である場合には、バックエンドステートマシン2020は、スキャンされるべきスライド114をロードせよとのスキャンワークフロー2130からの命令を処理する前に、このタスクを完了する。他方で、バックエンドステートマシン2020が現在タスクを実行していない場合には、命令に即座に応答する。
【0199】
(3)スキャンされるべきスライド114を収容しているスライドラック220をフロントエンドから取り外すことができるように、バックエンドステートマシン2020が、フロントエンド(例えば、カルーセル200)を位置決めしなければならない段階に達すると、バックエンドステートマシン2020は、所要の位置決めを実行せよとの命令をフロントエンドステートマシン2010に発行し、その命令が完了するのを待つ。
【0200】
(4)フロントエンドステートマシン2010がユーザインタラクションに基づいて現在タスクを実行している最中である場合には、フロントエンドステートマシン2010は、バックエンドステートマシン2020からの命令に応答する前に、そのユーザインタラクションが完了するのを待つ。他方で、フロントエンドステートマシン2010が現在ユーザインタラクションに基づいてタスクを実行していない場合には、命令に即座に応答する。
【0201】
(5)例えば、フロントエンドが動いている間に、操作者がフロントエンドからスライドラック220を取り外すことを試みた場合には、フロントエンドステートマシン2010は、バックエンドステートマシン2020からの命令の処理を一時的に中断することができる。しかしながら、フロントエンドステートマシン2010は、ユーザインタラクションが完了すると、バックエンドステートマシン2020からの命令の処理を継続する。通常の状況下では、フロントエンドステートマシン2010は、バックエンドステートマシン2020からの命令を完全に処理するまで待ってから、通常のユーザインタラクションに応答する。
【0202】
(6)フロントエンドステートマシン2010は、バックエンドステートマシン2020からの命令を処理すると、フロントエンドステータスをバックエンドステートマシン2020に通信して、通常の動作を再開する。
【0203】
(7)バックエンドステートマシン2020は、フロントエンドステートマシン2010からこのフロントエンドステータスを受信し、スキャンされるべきスライド114をロードせよとの、スキャンワークフロー2130から受信した命令の処理を完了する。
【0204】
(8)バックエンドステートマシン2020は、命令を完全に処理すると、このステータスをスキャンワークフロー2130に通信する。
【0205】
(9)スキャンワークフロー2130は、バックエンドステートマシン2020からのこのステータス更新を受信し、ロードされたスライド114の処理を継続する。
【0206】
開示されている実施形態の上記の説明は、あらゆる当業者が本発明を作成または使用することを可能にするために提供されている。これらの実施形態に対する種々の修正は、当業者には容易に明らかであり、本明細書に記載の一般原理は、本発明の精神または範囲から逸脱することなく他の実施形態に適用可能である。したがって、本明細書に提示されている説明および図面は、本発明の現在のところ好ましい実施形態を表しており、したがって、本発明によって広範囲に企図されている主題を代表するものであることが理解されるべきである。本発明の範囲は、当業者には明白であろう他の実施形態を完全に包含し、したがって限定されていないことがさらに理解される。
【0207】
「A、B、またはCのうちの少なくとも1つ」、「A、B、またはCのうちの1つまたは複数」、「A、BおよびCのうちの少なくとも1つ」、「A、BおよびCのうちの1つまたは複数」および「A、B、C、またはそれらの任意の組み合わせ」のような、本明細書に記載の組み合わせは、A、Bおよび/またはCの任意の組み合わせを含み、複数のA、複数のB、または複数のCを含むことができる。具体的には、「A、B、またはCのうちの少なくとも1つ」、「A、B、またはCのうちの1つまたは複数」、「A、BおよびCのうちの少なくとも1つ」、「A、BおよびCのうちの1つまたは複数」および「A、B、C、またはそれらの任意の組み合わせ」のような組み合わせは、Aのみ、Bのみ、Cのみ、AおよびB、AおよびC、BおよびC、またはAおよびBおよびCであってよく、そのような任意の組み合わせは、その構成成分であるA、Bおよび/またはCのうちの1つまたは複数のメンバーを含有することができる。例えば、AおよびBの組み合わせは、1つのAおよび複数のB、複数のAおよび1つのB、または複数のAおよび複数のBを含むことができる。