平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫
【課題】格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律に適用して出庫することができる平面パズル式格納庫制御方法を提供する。
【解決手段】y軸基準ラインによって区分された2つのエリアに対して、対象パレットと空スペースが別のエリアに属する場合は空スペースをy軸基準ライン上までシフトさせるエリア共通化シフト処理S100を実行し、さらに、空スペースを、対象パレットの位置および対象パレットに対する空スペースの相対位置に応じて、対象パレットに対して入出庫口ブロックに近い側で隣接するブロックのうちのいずれかにシフトさせる空スペースシフト処理(S200)と、対象パレットを隣接する空スペースの位置にシフトさせる対象パレットシフト処理(S300)とを、対象パレットが入出庫口ブロックの位置にシフトされるまで繰り返し実行する。
【解決手段】y軸基準ラインによって区分された2つのエリアに対して、対象パレットと空スペースが別のエリアに属する場合は空スペースをy軸基準ライン上までシフトさせるエリア共通化シフト処理S100を実行し、さらに、空スペースを、対象パレットの位置および対象パレットに対する空スペースの相対位置に応じて、対象パレットに対して入出庫口ブロックに近い側で隣接するブロックのうちのいずれかにシフトさせる空スペースシフト処理(S200)と、対象パレットを隣接する空スペースの位置にシフトさせる対象パレットシフト処理(S300)とを、対象パレットが入出庫口ブロックの位置にシフトされるまで繰り返し実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械式駐車場などの機械式の格納庫の制御技術に関し、特に、平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に適用して有効な技術に関するものである。
【背景技術】
【0002】
機械式駐車場には種々のものが存在するが、その中に、いわゆるパズル式の駐車システムがある。パズル式駐車システムの一つとして、車両の格納領域内をマトリクス状のブロックに区画し、ブロック上に配置されたパレットを空スペースの位置に順次スライドして移動させることによって、パレット上に置かれた車両を格納位置もしくは入出庫口に移送して入出庫を行う駐車システムがある(以降ではこのような方式を「平面パズル式」と記載する場合がある)。
【0003】
この平面パズル式の駐車システムについては、例えば、特開平2−115467号公報(特許文献1)に記載されている。また、この平面パズル式の駐車システムを利用したものとして、例えば、特開平6−88451号公報(特許文献2)には、平面パズル式の駐車システムと高速台車を組み合わせることで、格納密度の向上と入出庫時間の短縮を可能とする機械式駐車場が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平2−115467号公報
【特許文献2】特開平6−88451号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の平面パズル式駐車システムでは、例えば、入出庫が完了する度に空スペースを必ず初期位置に戻し、また、マトリクス内のブロック毎に、当該ブロック上の対象物を出庫させる際に、どのような順序でパレットを移動させることで当該ブロック上のパレットを入出庫口に移動させるかというパターンを予め定義しておくことで、出庫時の動作を制御している。しかし、この場合はブロック数が少ない場合には比較的効率よく制御することができるが、ブロック数が多くなると定義を設定する負荷が大きくなり、また、空スペースを初期状態に戻すことにより効率が大きく低下する場合がある。
【0006】
また、例えば特許文献1には、あるアドレスのパレットに出庫要求が入力された場合に、他のパレットを移動させつつ、対象のパレットを順次入出庫口の方向に移動させることで、最短コースを通って入出庫口に移動させるということが記載されている。ここでは、最短コースをどのように取得するかについては特に開示されていないが、一般的にはマトリクスのサイズや形状、入出庫口の位置等によって個別に移動パターンや制御ロジックを定義、もしくは修正・変更している場合が多い。
【0007】
そこで本発明の目的は、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律に適用して出庫することができる平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫を提供することにある。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。本発明の代表的な実施の形態は、平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫などに適用され、以下の特徴を有するものである。
【0009】
すなわち、本発明の代表的な実施の形態である平面パズル式格納庫制御方法は、格納庫の格納領域内をマトリクス状に区画したブロックと、前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、前記パレットが配置されていない前記ブロックである空スペースと、前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、以下の特徴を有するものである。
【0010】
すなわち、前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行する。
【0011】
さらに、前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とするものである。
【発明の効果】
【0012】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0013】
本発明の代表的な実施の形態によれば、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律の制御手順によって出庫することができる平面パズル式格納庫を実現することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施の形態におけるパレットシフト制御全体の処理の例について概要を示したフローチャートである。
【図2】本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。
【図3】本発明の一実施の形態における格納領域のブロックのマトリクスにおけるエリアとブロック位置数の例を示した図である。
【図4】(a)〜(c)は、本発明の一実施の形態におけるTPに隣接するブロックにBPをシフトさせた場合の例を示す図である。
【図5】(a)、(b)は、本発明の一実施の形態におけるBPとTPのエリアを共通化する場合の例を示した図である。
【図6】(a)〜(c)は、本発明の一実施の形態におけるBPをTPに対するB1もしくはB2の位置にシフトさせる場合の例を示した図である。
【図7】(a)〜(c)は、本発明の一実施の形態におけるBPをTPに隣接させた後、TPをGPまでシフトさせる場合の例を示した図である。
【図8】本発明の一実施の形態におけるパレットのシフト方向の例を示した図である。
【図9】本発明の一実施の形態におけるエリア共通化シフト処理の例を示したフローチャートである。
【図10】本発明の一実施の形態におけるBPシフト処理の例を示したフローチャートである。
【図11】本発明の一実施の形態における同一ライン上シフト処理の例を示したフローチャートである。
【図12】本発明の一実施の形態におけるTPシフト処理の例を示したフローチャートである。
【図13】本発明の一実施の形態におけるパレットシフト制御に従ってTPを出庫する際のパレットの総シフト数算出処理の例について概要を示したフローチャートである。
【図14】本発明の一実施の形態におけるエリア共通化シフト数算出処理の例を示したフローチャートである。
【図15】本発明の一実施の形態におけるBPシフト数算出処理の例を示したフローチャートである。
【図16】本発明の一実施の形態におけるTPシフト数算出処理の例を示したフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0016】
[構成]
図2は、本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。平面パズル式格納庫1は、例えば車両を格納する機械式駐車場などであり、格納庫の格納領域内をマトリクス状に区画したブロック11と、ブロック11上に配置されたパレット12、および入出庫口15を有する。また、パレット12が配置されていないブロック11として空スペース13(以下では単に「BP」と記載する場合がある)を有する。BP13は1つに限らず、複数有していてもよい。
【0017】
なお、パレット12のうち、入出庫口15から出庫する対象物が置かれたパレット12を対象パレット14(以下では単に「TP」と記載する場合がある)と呼ぶ。また、入出庫口15に位置するブロック11を入出庫口ブロック16(以下では単に「GP」と記載する場合がある)と呼ぶ。
【0018】
パレット12はブロック11の区画に沿って前後左右方向にスライドして移動(シフト)させることができるが、そのためにはパレット12のシフト先にスペースが必要である。すなわち、パレット12は、前後左右にBP13が隣接する場合にその方向に1ブロックシフトさせることができる。その結果、パレット12が存在していたブロック11上には新たにBP13ができる。すなわち、パレット12を隣接するBP13の方向に1ブロックシフトさせることは、BP13を対象のパレット12の方向に1ブロックシフトさせることと等価である。
【0019】
さらに、平面パズル式格納庫1は、制御部21と記憶部22、および入出力部23を有する。制御部21は、後述する処理によりパレット12のシフトを指示・制御して、対象物の入出庫を実行する処理を行う装置である。すなわち、BP13に隣接するパレット12をBP13の位置にスライドさせる動作を繰り返して、パレット12およびBP13を順次シフトさせることによって、TP14をGP16の位置までシフトさせて入出庫口15から対象物を出庫させる。
【0020】
記憶部22は、平面パズル式格納庫1のマトリクスのサイズやGP16の位置、BP13の現在位置などの情報を保持する装置である。また、各パレット12の現在位置と当該パレット12に置かれている対象物との対応の情報も保持する。この情報により、制御部21は、出庫要求によって指示された対象物がどのパレット12上に存在するかを特定し、当該パレット12をTP14とすることができる。入出力部23は、入出庫の要求や各種設定情報などの入力、出庫時の所要時間や状況の表示などのユーザインタフェースを外部のユーザに提供する装置である。
【0021】
[パレットのシフト制御の概要]
以下では、本実施の形態の平面パズル式格納庫1における出庫時のパレットシフトの制御手法について概要を説明する。図3は、格納領域のブロック11のマトリクスにおけるエリアとブロック位置数の例を示す図である。図3の例では、平面パズル式格納庫1のマトリクスは5×7の35個のブロック11を有している。
【0022】
ここで、図中の右から左の方向をx方向、上から下の方向をy方向とし、GP16を含むブロック11の行および列をそれぞれx軸基準ライン17(以下では単に「x軸」と記載する場合がある)、y軸基準ライン18(以下では単に「y軸」と記載する場合がある)とする。すなわち、GP16を含み入出庫口15の面に対して垂直方向に配置されたブロック11の列をy軸18とし、GP16を含みy軸18と直交するブロック11の列をx軸17とする。これにより、各ブロック11の位置はx座標とy座標(GP16の位置を基準とした相対位置)により特定することができる。なお、図3の例では、x軸方向の中央に入出庫口15(GP16)を有する構成となっているが、入出庫口15の位置はx軸17上のいずれにあってもよい。
【0023】
さらに、本実施の形態では、図3に示すように、y軸18を境として各ブロックのx座標が0以上である領域をエリアA、x座標が0以下である領域をエリアBとして2つのエリアに分ける。y軸18はエリアA、エリアB両方に含まれるものとする。なお、入出庫口15がマトリクスの端部にある場合は、エリアAもしくはBの一方のみ有することになる。
【0024】
図3において、GP16の値を「0」として各ブロック11にそれぞれ設定されている値は、各ブロック11上にあるパレット12が、他のブロック11上にパレット12がなく全てBP14であった場合に、前後左右に1ブロックずつシフトしてGP16に至るまでの最少シフト数(以下ではこの値を「ブロック位置数」と記載する場合がある)を表している。
【0025】
すなわち、対象のブロック11上のパレット12に出庫の対象物があった場合に、当該パレット12自体を最少で何回シフトさせれば入出庫口15から出庫させることができるかを表している。従ってGP16ではブロック位置数は「0」となり、GP16に隣接するブロック11では「1」、これにさらに隣接するブロックでは「2」…というような値となる。
【0026】
このマトリクスにおいて、いずれかのブロック11上にあるTP14に置かれた対象物を入出庫口15から出庫するには、TP14をGP16の位置までシフトさせる必要がある。ここで、上述したように、TP14をシフトさせるためにはTP14にBP13が隣接している必要がある。そこで、まず、マトリクス内の他のいずれかのブロック11に存在するBP13をTP14に隣接するブロック11までシフトさせる必要がある。
【0027】
図4は、TP14に隣接するブロック11にBP13をシフトさせた場合の例を示す図である。図4(a)は、TP14のx座標が2(以下では「TPx=2」のように記載する場合がある)、y座標が2(以下では「TPy=2」のように記載する場合がある)である場合、すなわち、TP14がx軸17上にもy軸18上にもない場合の例である。図中のマトリクスにおける太線は、エリア(エリアA)の境界を示している。このとき、TP14のブロック位置数を|TP|と表記するものとした場合、
|TP|=|TPx|+|TPy|=2+2=4
となる。
【0028】
ここで、TP14を最少シフト数(最短コース)でGP16にシフトさせるためには、TP14をGP16に近い側に順次シフトさせる必要がある。すなわち、BP13をTP14に対してGP16に近い側で隣接するブロック11(図中に示すB1の位置とB2のいずれかの位置のブロック11)にシフトさせる必要がある。
【0029】
ここで、B1、B2の位置は、いずれもTP14の位置に対する相対位置を示すものであり、B1の位置にBP13をシフトさせた場合は、BPx=TPx、BPy=TPy−1となる。また、B2の位置にBP13をシフトさせた場合は、BPx=TPx−1、BPy=TPyとなる。すなわち、B1、B2ともにブロック位置数は|TP|−1=3である。なお、図4(a)では、TP14がエリアAにある場合を例としているが、エリアBにある場合は左右が逆となる(B2の位置が変わる)だけで同様であるため省略する。
【0030】
同様に、図4(b)は、TPx=3、TPy=0である場合、すなわち、TP14がx軸17上にある場合である。この場合は、BP13をシフトさせる位置は図中のB2の位置1ヶ所のみとなる。また、図4(c)は、TPx=0、TPy=3である場合、すなわち、TP14がy軸18上にある場合の例である。この場合は、BP13をシフトさせる位置は図中のB1の位置1ヶ所のみとなる。
【0031】
図4(a)〜(c)のいずれの場合も、BP13をTP14に対してB1もしくはB2の位置にシフトさせた後、TP14をBP13の位置にシフトさせる。これにより、シフト後のTP14の|TP|は1減少する、すなわち、TP14はGP16に1ブロック近づいたことになる。一方、このシフトにより、TP14に対するBP13の位置はB1もしくはB2の位置ではなくなってしまう。従って、再度BP13をTP14に対してB1もしくはB2の位置にシフトさせる。この動作を繰り返すことで、TP14をGP16の位置までシフトさせることができる。
【0032】
以下では、BP13をTP14に対してB1もしくはB2の位置にシフトさせる手順について説明する。まず、BP13とTP14が異なるエリアに属する場合に、同一のエリアに属するようにBP13をシフトさせる。図5は、BP13とTP14のエリアを共通化する場合の例を示した図である。
【0033】
図5(a)は、BP13とTP14がともにエリアAに属する場合の例を示している。この場合はここでの処理は不要である。BP13とTP14がともにエリアBに属する場合も同様である。
【0034】
図5(b)は、BP13とTP14が異なるエリアに属する場合の例を示している。ここでは、TP14がエリアAに属するのに対し、BP13がエリアBに属する場合の例である。ここで、BP13をエリアAにシフトさせて共通化するが、本実施の形態では、単純にx軸方向での平行移動によりエリアAまでシフトさせる。このとき、シフト後のBP13の位置は、y軸18上(BPx=0)となる。なお、TP14がエリアBに属し、BP13がエリアAに属する場合も同様に、BP13を平行移動によりy軸18上までシフトさせてBP13をTP14と同一エリアに属させる。
【0035】
次に、同一エリア内で、BP13をTP14に対するB1もしくはB2の位置にシフトさせる。図6は、BP13をTP14に対するB1もしくはB2の位置にシフトさせる場合の例を示した図である。なお、図6(a)〜(c)においては、BP13とTP14がともにエリアAに属する場合を例としているが、ともにエリアBに属する場合は左右が逆となるだけで概念は同様であるため説明は省略する。
【0036】
BP13をシフトさせるパターンは、TP14の位置、およびTP14に対するBP13の相対位置に応じて異なる。なお、本実施の形態では、基本的な方針として可能な場合はx軸方向に先に所望の位置までシフトさせ、その後y軸方向にシフトさせるものとするが、逆の順序であってもよい。
【0037】
図6(a)は、TP14がx軸17上にもy軸18上にもない場合の例である。ここでは、TP14の位置に対して、BP13の相対位置を図中のA〜Hの8つの領域に分けて、シフトさせるパターンを定義する。
【0038】
(A)BP13が領域Aに属する場合
この場合は、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を右方向(−x方向)にシフトさせ、領域Bにシフトさせる。
【0039】
(B)BP13が領域Bに属する場合
この場合も同様に、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を後方向(+y方向)にシフトさせる。
【0040】
(C)BP13が領域Cに属する場合
この場合は、BP13からB1およびB2までの距離(シフト数)は同じである。そこで、TP14の位置によって目標を決定する。後述するように、TP14の位置によって、TP14に対してBP13がB1にある場合とB2にある場合とで、その後にTP14をGP16までシフトさせる場合に要するシフト数が変わってくるからである。具体的には、TPx<TPyの場合、すなわち、TP14とx軸17との間の距離のほうが大きい場合は、B1を目標としてBP13を左方向(+x方向)にシフトさせ、領域Bにシフトさせる。TPx≧TPyの場合、すなわち、TP14とy軸18との間の距離のほうが大きい場合は、B2を目標としてBP13を後方向(+y方向)にシフトさせる。
【0041】
(D)BP13が領域Dに属する場合
この場合は、BP13をシフトさせる目標をB1とするかB2とするかに関わらず、BP13を左方向(+x方向)にシフトさせ、領域Cもしくは領域Dにシフトさせる。(領域D内の点線で示された領域D’についても同様)。
【0042】
(E)BP13が領域Eに属する場合
この場合は、BP13をB2を目標としてシフトさせることになる(B1よりもB2のほうが近い)。従って、BP13を前方向(−y方向)にシフトさせる。
【0043】
(F)BP13が領域Fに属する場合
この場合も同様に、BP13をB2を目標としてシフトさせることになる(B1よりもB2のほうが近い)。従って、BP13を右方向(−x方向)にシフトさせ、領域Eにシフトさせる。
【0044】
(G)BP13が領域Gに属する場合
この場合は、BP13からB1およびB2までのシフト数は同じである。そこで、領域Cに属する場合と同様に、TP14の位置によって目標を決定する。具体的には、TPx<TPyの場合、すなわち、TP14とx軸17との間の距離のほうが大きい場合は、B1を目標としてBP13を前方向(−y方向)にシフトさせ、領域Hにシフトさせる。ここでは、TP14を迂回してBP13をB1までシフトさせるため、先にy方向にシフトさせる。TPx≧TPyの場合、すなわち、TP14とy軸18との間の距離のほうが大きい場合は、B2を目標としてBP13を右方向(−x方向)にシフトさせ、領域Fにシフトさせる。
【0045】
(H)BP13が領域Hに属する場合
この場合は、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を前方向(−y方向)にシフトさせ、領域Aにシフトさせる。ここでは、TP14を迂回してBP13をB1までシフトさせるため、先にy方向にシフトさせる。
【0046】
図6(b)は、TP14がx軸17上にある場合の例である。ここで、BP13が領域Hに属する場合は、図4(b)で示したとおり、目標はB2となる。また、x軸17上では−y方向にはブロック11は存在しない。従って、BP13が領域Hに属する場合は、BP13を上記のパターン(H)とは逆に後方向(+y方向)にシフトさせ、領域Gにシフトさせる。領域Gでは、上記のパターン(G)と同様に処理を行えば、自動的にB2を目標として右方向(−x方向)にシフトさせることになる(TP14はx軸17に近い位置にあるため)。
【0047】
同様に、図6(c)は、TP14がy軸18上にある場合の例である。ここで、BP13が領域Fに属する場合は、図4(c)で示したとおり、目標はB1となる。また、y軸18上では−x方向にはエリアAに属するブロック11は存在しない。従って、BP13が領域Fに属する場合は、BP13を上記のパターン(F)とは逆に左方向(+x方向)にシフトさせ、領域Gにシフトさせる。領域Gでは、上記のパターン(G)と同様に処理を行えば、自動的にB1を目標として前方向(−y方向)にシフトさせることになる(TP14はy軸18に近い位置にあるため)。
【0048】
上記のような処理によって、同一エリア内で、BP13をTP14に対するB1もしくはB2の位置に適切にシフトさせることができる。その後は、TP14をBP13の位置にシフトさせる。これにより、TP14はGP16に1ブロック近づくことになる。しかし、TP14に対するBP13の位置はB1もしくはB2の位置ではなくなってしまう。従って、上記のパターンを再度実行することで、BP13をTP14に対してB1もしくはB2の位置にシフトさせる。この動作を繰り返すことで、TP14をGP16の位置までシフトさせることができる。
【0049】
図7は、BP13をTP14に隣接させた後、TP14をGP16までシフトさせる場合の例を示した図である。図7(a)は、TP14がx軸17およびy軸18上にない場合の例を示している。図中の(1)において、TP14をBP13の位置(−y方向)にシフトさせる。その後、図中の(2)〜(4)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB2の位置を目標としてシフトさせる。このとき、初期状態である図中の(1)から、TP14を1ブロックシフトさせ、シフト後のTP14に対して新たにB2の位置までBP13をシフトさせるまでの総シフト数は3となる。
【0050】
同様に、図中の(4)において、TP14をBP13の位置(−x方向)にシフトさせる。その後、図中の(5)〜(7)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB1の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の(8)の点線矢印に示すように、TP14はx軸方向とy軸方向を交互にジグザグ状にシフトすることになる。
【0051】
一方、図7(b)は、TP14がx軸17上にある場合の例を示している。図中の(1)において、TP14をTP13の位置(−x方向)にシフトさせる。その後、図中の(2)〜(6)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB2の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の(7)の点線矢印に示すように、TP14はx軸17上を直線状にシフトすることになる。これはTP14がy軸18上にある場合も同様である。
【0052】
なお、このとき、初期状態である図中の(1)から、TP14を1ブロックシフトさせ、シフト後のTP14に対して新たにB2の位置までBP13をシフトさせるまでの総シフト数は5となる。すなわち、図7(a)に示すようにTP14がx軸17およびy軸18上にない場合と比べて、TP14を1ブロックシフトさせるのに必要なシフト数は2多くなる。
【0053】
図7(c)は、TP14を最初にB1にあるBP13を使用してGP16までシフトさせる場合と、B2にあるBP13を使用してGP16にシフトさせる場合の例を示した図である。図7(c)に示すように、最初にB1にあるBP13を使用した場合は、TP14がジグザグ状にシフトするシフト数が5、直線状にシフトするシフト数が3である。これに対し、最初にB2にあるBP13を使用した場合は、TP14がジグザグ状にシフトするシフト数が6、直線状にシフトするシフト数が2である。
【0054】
従って、総シフト数は、最初にB1にあるBP13を使用した場合が、3×5+5×3=30、最初にB2にあるBP13を使用した場合が、3×6+5×2=28となり、最初にB2にあるBP13を使用したほうが2少なくなる。このとき、最初にB2にあるBP13を使用したほうが有利となるのは、TP14の初期位置においてy軸18との距離のほうがx軸17との距離より大きい、すなわち、TPx≧TPyであるためである。同様に、TP14の初期位置においてx軸17との距離のほうがy軸18との距離より大きい、すなわち、TPx<TPyの場合は、最初にB1にあるBP13を使用したほうが有利となる。なお、両者の総シフト数の差分は常に2となる。
【0055】
従って、上記の図6において、TP14の初期位置に対して最初にBP13をB1もしくはB2の位置にシフトさせる際に、移動距離(シフト数)が同じである場合(図6(a)における領域Cおよび領域Gの場合)は、TPx≧TPyの場合はB2、TPx<TPyの場合(x軸17との距離のほうが大きい場合)はB1を目標とするほうが総シフト数が少なくなる。なお、BP13をB1とB2の位置の間でシフトさせるシフト数は2である(B1とB2の間の距離は2である)ため、図6(a)における領域Cおよび領域G以外の場合は、B1とB2のうちBP13の位置からいずれか近いほうを目標とすればよいことになる。
【0056】
以上のように、まず、出庫の対象物が置かれたTP14に対して、BP13をシフトさせることで、TP14とのエリアを共通化する。その後、TP14の位置、およびTP14の位置に対するBP13の相対位置(属する領域)に応じてBP13をシフトさせ、TP14に対して、GP16に近い側の隣接ブロックであるB1もしくはB2の位置で隣接させる。その後、BP13の位置にTP14をシフトさせ、シフト後のTP14の位置に対して、シフト後のBP13を再度B1もしくはB2の位置にシフトして隣接させる。この処理をTP14がGP16に到達するまで繰り返すことにより、TP14に置かれた対象物を出庫する。
【0057】
[パレットシフト制御処理フロー]
以下では、上述した本実施の形態の平面パズル式格納庫1における出庫時のパレットシフトの制御手法の処理フローについて説明する。これらの処理は、例えば、ソフトウェア等によるプログラムとして実装し、制御部21によって実行するようにすることが可能である。
【0058】
図8は、パレット12のシフト方向の例を示した図である。ここではパレット12のうち、シフト対象のものを代表的にFパレットと表記する。Fパレットは、制御部21からの指示により、x方向(左方向)、−x方向(右方向)、y方向(後方向)、−y方向(前方向)にシフトさせることができる。TP14をシフトさせる場合は、FパレットはTP14となる。また、BP14をシフトさせる場合は、BP14のシフト方向で隣接するパレット12がFパレットとなる。例えば、BP14を−x方向にシフトさせたい場合は、BP14の−x方向で隣接するパレット12がFパレットとなる。このとき、Fパレットはx方向にシフトされ、これに伴いBP14は−x方向にシフトされる。
【0059】
図1は、パレットシフト制御全体の処理の例について概要を示したフローチャートである。平面パズル式格納庫1に格納されている対象物に対して、入出力部23を介して出庫要求を受けると、制御部21は、まず、出庫の対象物が置かれたTP14に対して、必要に応じてBP13をシフトして、TP14とのエリアを共通化するエリア共通化シフト処理を行う(S100)。
【0060】
次に、TP14の位置、およびTP14の位置に対するBP13の相対位置に応じてBP13をシフトさせ、TP14に対して、GP16に近い側の隣接ブロックであるB1もしくはB2の位置で隣接させるBPシフト処理を行う(S200)。次に、TP14をBP13の位置に1ブロックシフトさせるTPシフト処理を行う(S300)。
【0061】
その後、TP14が入出庫口15、すなわちGP16の位置に到達したか否かを判定する(S400)。TP14がGP16の位置に到達していない場合は、ステップS200に戻り、シフト後のTP14の位置に対して、シフト後のBP13を再度B1もしくはB2の位置にシフトさせて隣接させる。ステップS400で、TP14がGP16の位置に到達している場合は処理を終了する。この時点で入出庫口15から対象部を出庫することができる。
【0062】
図9は、図1のエリア共通化シフト処理(S100)の例を示したフローチャートである。エリア共通化シフト処理を開始すると、まず、記憶部22に記憶された情報を取得して、ブロック11のマトリクスにおけるBP13およびTP14の位置(x座標、y座標)を特定する(S101、S102)。次に、BP13とTP14のx座標値の比較により、これらが同じエリアに属するか否かを判定する(S103)。同じエリアに属する場合はそのまま処理を終了する。
【0063】
ステップS103で、BP13とTP14が同じエリアに属さない場合は、BP13がエリアAに属するか否かを判定する(S104)。エリアAに属する場合は、Fパレットを+x方向にシフトさせることでBP13を−x方向にシフトさせ(S105)、エリアAに属さない場合は、Fパレットを−x方向にシフトさせることでBP13を+x方向にシフトさせる(S106)。その後、ステップS103に戻って処理を繰り返すことで、BP13がTP14と同じエリアに属するまで、すなわち、BP13がy軸18上にシフトされるまでBP13をシフトさせる。
【0064】
図10は、図1のBPシフト処理(S200)の例を示したフローチャートである。なお、以降のフローチャートでは、BP13とTP14がともにエリアAに属する場合を例としているが、ともにエリアBに属する場合は左右(x方向の正負)が逆となるだけで処理内容は同様であるため説明は省略する。
【0065】
BPシフト処理を開始すると、まず、BP13とTP14との間の距離(以下では「ΔBP」と記載する場合がある)を算出する(S201)。ΔBPは、BP13とTP14の各x座標、y座標の差分の絶対値の和となる。
【0066】
次に、ステップS201で算出したΔBPと、BP13、TP14のそれぞれのブロック位置数|BP|、|TP|とから、BP13がTP14に対してB1もしくはB2の位置にあるか否かを判定する(S202)。具体的には、ΔBP=1、すなわちBP13がTP14に隣接しており、かつ、|TP|−|BP|=1、すなわち、BP13のブロック位置数がTP14のブロック位置数より1少ない場合に、BP13はTP14に対してB1もしくはB2の位置にあると判定することができる。ここでBP13がB1もしくはB2の位置にあると判定された場合はそのまま処理を終了する。
【0067】
ステップS202で、BP13がB1もしくはB2の位置にないと判定された場合は、以降の処理でBP13をTP14に対してB1もしくはB2の位置に近づけるよう、BP13を1ブロックシフトさせる。まず、後述する同一ライン上シフト処理により、上述した図6における領域Fもしくは領域HにBP13がある場合に、上述の図6で示したパターンに従ってBP13を領域Fもしくは領域Hからシフトさせる処理を行う(S203)。
【0068】
次に、TP14に対してBP13が図6におけるどの領域に属するかによってBP13をシフトさせるパターンを決定する。まず、BPxとTPxを比較し(S204)、BPx=TPxの場合(領域B)は、上述のパターン(B)に従って、BP13を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S205)。
【0069】
ステップS204で、BPx>TPxの場合(領域A、G)は、BPyとTPyを比較する(S206)。BPy>TPyではない場合(領域A)は、上述のパターン(A)に従って、BP13を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S207)。BPy>TPyの場合(領域G)は、上述のパターン(G)に従って、TP14の位置によってシフトさせる方向を決定するため、TPxとTPyを比較する(S208)。
【0070】
ステップS208で、TPx<TPyの場合は、B1が有利となるため、BP14を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる(S209)。TPx<TPyではない場合は、B2が有利もしくはいずれも同じとなるため、BP14を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S207)。
【0071】
ステップS204で、BPx<TPxの場合(領域C、D、E)は、BPxとTPx−1を比較する(S210)。BPx<TPx−1の場合(領域D)は、上述のパターン(D)に従って、BP13を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S213)。BPx<TPx−1ではない場合は、BPyとTPyを比較する(S211)。
【0072】
ステップS211で、BPy<TPyではない場合(領域E)は、上述のパターン(E)に従って、BP13を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる。BPy<TPyの場合(領域C)は、上述のパターン(C)に従って、TP14の位置によってシフトさせる方向を決定するため、TPxとTPyを比較する(S212)。
【0073】
ステップS212で、TPx<TPyの場合は、B1が有利となるため、BP14を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S213)。TPx<TPyではない場合は、B2が有利もしくはいずれも同じとなるため、BP14を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S205)。
【0074】
以上の処理により、Fパレットをx方向もしくはy方向に1ブロックシフトさせてBP13をシフトさせた後、ステップS201に戻り、BP13がTP14に対してB1もしくはB2の位置にシフトさせるまで上記の一連の処理を繰り返す。
【0075】
図11は、図10のBPシフト処理における同一ライン上シフト処理(S203)の例を示したフローチャートである。ここでは、BP13がTP14と同一ライン上にあって、BP13のほうがTP14よりGP16から遠い場合、すなわち、図6における領域Fもしくは領域HにBP13がある場合に、上述の図6で示したパターンに従ってBP13を領域Fもしくは領域Hからシフトさせる。
【0076】
まず、BPyとTPyとを比較し(S231)、BPy=TPyではない場合は、BPxとTPxとを比較する(S232)。BPx=TPxではない場合は、BP13とTP14は同一ライン上にはない(BP13は領域B、D、F、Hにはない)と判定し、そのまま処理を終了する。
【0077】
ステップS232で、BPx=TPxである場合(領域B、F)は、BPyとTPyを比較する(S233)。BPy>TPyではない場合(領域B)は、そのまま処理を終了する。BPy>TPyの場合(領域F)は、TPx=0であるか否かにより、TP14(およびBP13)がy軸18上にあるか否かを判定する(S234)。TPx=0である(y軸18上にある)場合は、図6(c)のパターンに従って、BP13を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S235)。TPx=0ではない(y軸18上にはない)場合は、上述のパターン(F)に従って、BP13を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S236)。
【0078】
ステップS231で、BPy=TPyである場合(領域D、H)は、BPxとTPxを比較する(S237)。BPx>TPxではない場合(領域D)は、そのまま処理を終了する。BPx>TPxの場合(領域H)は、TPy=0であるか否かにより、TP14(およびBP13)がx軸17上にあるか否かを判定する(S238)。TPy=0である(x軸17上にある)場合は、図6(b)のパターンに従って、BP13を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S240)。TPy=0ではない(x軸17上にはない)場合は、上述のパターン(D)に従って、BP13を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる(S239)。
【0079】
以上の処理により、BP13が領域Fもしくは領域Hにある場合に、Fパレットをx方向もしくはy方向に1ブロックシフトさせてBP13をシフトし、BP13を領域Fもしくは領域Hから出すことで処理を終了する。
【0080】
図12は、図1のTPシフト処理(S300)の例を示したフローチャートである。TPシフト処理を開始すると、まず、BPx=TPxであるか否かにより、BP13がTP14に対してB1の位置にあるか否かを判定する(S301)。BPx=TPxである場合には、BP13はB1の位置にあると判定し、TP14(Fパレット)をB1の位置(−y方向)にシフトさせる(S302)。BPx=TPxではない場合は、BP13はB2の位置にあると判定し、TP14をB2の位置(−x方向)にシフトさせる(S303)。以上の処理により、TP14を隣接するBP13の位置にシフトさせてTPシフト処理を終了する。
【0081】
[パレット総シフト数算出処理フロー]
以下では、上述した出庫時のパレットのシフト制御手法に従ってTP14を出庫する際のパレット12の総シフト数を算出する処理フローについて説明する。図13は、本実施の形態のパレットシフト制御に従ってTP14を出庫する際のパレット12の総シフト数算出処理の例について概要を示したフローチャートである。
【0082】
平面パズル式格納庫1に格納されている対象物に対して、入出力部23を介して出庫要求を受けると、制御部21は、まず、出庫の対象物が置かれたTP14に対して、図1のエリア共通化シフト処理(S100)によりBP13とTP14とのエリアを共通化する際に要するパレット12のシフト数の小計BSを算出するエリア共通化シフト数算出処理を行う(S600)。
【0083】
次に、図1のBPシフト処理(S200)により、TP14の初期位置に対してBP13をシフトさせ、B1もしくはB2の位置で最初にTP14に隣接させる際に要するパレット12のシフト数の小計BPSを算出するBPシフト数算出処理を行う(S700)。次に、図1のTPシフト処理(S300)およびBPシフト処理(S200)を繰り返してTP14をGP16の位置にシフトさせる際に要するパレット12のシフト数の小計TPSを算出するTPシフト数算出処理を行う(S800)。最後に、ステップS600〜S800で算出したBS、BPS、TPSを合計することにより、出庫要求から出庫までに要するパレット12の総シフト数を算出し(S900)、処理を終了する。
【0084】
出庫要求から出庫までに要するパレット12の総シフト数を算出することで、例えば、Fパレットを1ブロックシフトさせるのに要する単位シフト時間が既知である場合に、総シフト数と単位シフト時間との乗算により、出庫要求から出庫までの所要時間を算出することができる。また、出庫処理の開始からのシフト数をカウントすることにより、出庫までの残時間を算出することもできる。算出したこれらの時間を入出力部23を介してユーザに提示することで、ユーザの利便性を高めることができる。
【0085】
図14は、図13のエリア共通化シフト数算出処理(S600)の例を示したフローチャートである。エリア共通化シフト数算出処理を開始すると、まず、記憶部22に記憶された情報を取得して、ブロック11のマトリクスにおけるBP13およびTP14の位置(x座標、y座標)を特定する(S601、S602)。次に、BP13とTP14のx座標値の比較により、これらが同じエリアに属するか否かを判定する(S603)。同じエリアに属する場合は、エリア共通化シフト処理(S100)によるBP13のシフトはないため、BS=0として(S604)、処理を終了する。
【0086】
ステップS603で、BP13とTP14が同じエリアに属さない場合は、エリア共通化シフト処理(S100)によりBP13がy軸18上に平行移動されたものと仮定してBPx=0とする(S605)。さらに、このときのシフト数としてBS=|BPx|とし(S606)、処理を終了する。
【0087】
図15は、図13のBPシフト数算出処理(S700)の例を示したフローチャートである。BPシフト数算出処理を開始すると、まず、BP13とTP14との間の距離ΔBPを算出する(S701)。図10のステップS201と同様に、ΔBPは、BP13とTP14の各x座標、y座標の差分の絶対値の和となる。なお、ここでのBP13は、エリア共通化シフト処理(S100)を実際に実行したと仮定した場合のものである。
【0088】
次に、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6に示した領域F、G、Hに属するか否かを判定する(S702)。BPx≧TPxかつBPy≧TPyである場合(領域F、G、H)は、BP13をシフトさせる目標がB1であるかB2であるかに関わらず、BP13から見た場合にB1およびB2ともにTP14よりも1ブロック遠い位置にある。
【0089】
従って、BP13をB1もしくはB2にシフトさせるためのシフト数は、BP13をTP14の位置まで仮想的にシフトさせた場合のシフト数であるΔBPより1大きくなるため、BPS=ΔBP+1とする(S703)。なお、この時点では、TP14およびBP13がともにx軸17もしくはy軸18上にある場合は除外している。
【0090】
一方、BPx≧TPxかつBPy≧TPyではない場合(領域F、G、H以外)は、BP13をシフトさせる目標がB1であるかB2であるかに関わらず、BP13から見た場合にB1およびB2ともにTP14よりも1ブロック近い位置にある。従って、BP13をB1もしくはB2にシフトさせるためのシフト数は、ΔBPより1小さくなるため、BPS=ΔBP−1とする(S704)。
【0091】
次に、BP13がTP14に対してB1、B2のいずれにシフトされるかを判定する。まず、TPxとTPyとを比較し、初期位置としてB1とB2のいずれにBP13をシフトさせるほうが有利であるかを判定する(S705)。TPx<TPyである場合は、B1が有利である。ここでさらに、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6(a)に示した領域D’、E、Fに属するか否かを判定する(S706)。一方、ステップS705で、TPx<TPyではない場合は、B2が有利である。ここでさらに、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6(a)に示した領域A、B、Hに属するか否かを判定する(S707)。
【0092】
ステップS706で、BP13が領域D’、E、Fに属する場合、もしくは、ステップS707で、BP13が領域A、B、H以外に属する場合は、BP13はB2を目標とすることになる。また、ステップS706で、BP13が領域D’、E、F以外に属する場合、もしくは、ステップS707で、BP13が領域A、B、Hに属する場合は、BP13はB1を目標とすることになる。
【0093】
BP13をB2を目標としてシフトさせると判定した場合、次に、BPxおよびTPxがともに0であるか否かにより、BP13およびTP14がともにy軸18上にあるか否かを判定する(S708)。BP13およびTP14がともにy軸18上にない場合は、BP13はそのままB2を目標とするため、BPシフト処理(S200)によりBP13がB2にシフトされたものと仮定してBP13の座標を設定し(S710)、処理を終了する。
【0094】
一方、BP13およびTP14がともにy軸18上にある場合は(このときBP13はTP14に対して領域Fに属する)、BP13は図6(c)に示すようにB1を目標としてシフトされることになる。BP13が領域EからB1にシフトされる際には、B2にシフトされるとした場合よりもシフト数が2大きくなる。従って、ステップS703もしくはS704で算出したBPSに2を加算し(S709)、BPシフト処理(S200)によりBP13がB1にシフトされたものと仮定してBP13の座標を設定し(S713)、処理を終了する。
【0095】
同様に、ステップS706もしくはS707で、BP13がB1を目標としてシフトされると判定した場合、BPyおよびTPyがともに0であるか否かにより、BP13およびTP14がともにx軸17上にあるか否かを判定する(S711)。BP13およびTP14がともにx軸17上にない場合は、BP13はそのままB1を目標とするため、BPシフト処理(S200)によりBP13がB1にシフトされたものと仮定してBP13の座標を設定し(S713)、処理を終了する。
【0096】
一方、BP13およびTP14がともにx軸17上にある場合は(このときBP13はTP14に対して領域Hに属する)、BP13は図6(b)に示すようにB2を目標としてシフトされることになる。BP13が領域HからB2にシフトされる際には、B1にシフトされるとした場合よりもシフト数が2大きくなる。従って、ステップS703もしくはS704で算出したBPSに2を加算し(S712)、BPシフト処理(S200)によりBP13がB2にシフトされたものと仮定してBP13の座標を設定し(S710)、処理を終了する。
【0097】
図16は、図13のTPシフト数算出処理(S800)の例を示したフローチャートである。TPシフト数算出処理を開始すると、まず、|TP|=1であるか否かにより、TP14の初期位置がGP16に隣接した位置にあるか否かを判定する(S801)。|TP|=1の場合はTP14の初期位置がGP16に隣接しており、この場合は、最初にBP13をTP14に対してB1もしくはB2の位置(すなわちGP16の位置)に隣接させた後に1回のシフトでTP14をGP16にシフトさせることができるため、TPS=1として(S802)、処理を終了する。
【0098】
|TP|=1ではない場合は、TPyとBPxとを比較し(S803)、その結果に応じて異なる算出式を用いてTPSを算出する。TPy=BPxである場合は、
TPS=|TP|×3−2
の式でTPSを算出し(S804)、処理を終了する。
【0099】
一方、TPy=BPxではない場合は、TPyとBPxとを比較し(S805)、変数TPz、BPzについて、TPy>BPxの場合はそれぞれTPx、BPxを設定する(S806)。また、TPy>BPxではない場合はそれぞれTPy、BPyを設定して(S807)、
TPS=|TP|×3+
{|TP|−(TPz×2+2)}×2+
(TPz−BPz)×2
の式でTPSを算出し(S808)、処理を終了する。
【0100】
以上に説明したように、本実施の形態の平面パズル式格納庫の制御方法によれば、入出庫口15(入出庫口ブロック16)を基準とした相対位置により空スペース13、および対象パレット14の位置を特定し、ブロック位置数を決定する。また、対象パレット14の位置、および対象パレット14の位置に対する空スペース13の相対位置に応じて空スペース13を対象パレット14に隣接させることができる。
【0101】
従って、格納領域のマトリクスのサイズや入出庫口15の位置、および出庫対象の対象パレット14の位置や空スペース13の位置に関わらず一律の制御手順により出庫することができる平面パズル式格納庫1を実現することができ、格納庫のサイズに対する拡張性や柔軟性を向上させることができる。
【0102】
また、対象パレット14を入出庫口15までシフトさせる際に、パレット12の総シフト回数を最少とするシフトパターン、および総シフト回数を得ることができるため、出庫の効率およびユーザの利便性を向上させることができる。また、このとき、対象パレット14をシフトさせる際には、基本的に各パレット12をx軸方向とy軸方向とで交互にシフトさせることになるため、パレット12およびその駆動機構の劣化を防止することができる。
【0103】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0104】
例えば、本実施の形態で説明した平面パズル式格納庫1としては、車両を格納する機械式駐車場以外に、書庫や、物品を保管する倉庫など、大きさや種類を問わず種々の格納庫に適用することができる。
【産業上の利用可能性】
【0105】
本発明は、機械式駐車場などの平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に利用可能である。
【符号の説明】
【0106】
1…平面パズル式格納庫、11…ブロック、12…パレット、13…空スペース(BP)、14…対象パレット(TP)、15…入出庫口、16…入出庫口ブロック(GP)、17…x軸基準ライン(x軸)、18…y軸基準ライン(y軸)、21…制御部、22…記憶部、23…入出力部。
【技術分野】
【0001】
本発明は、機械式駐車場などの機械式の格納庫の制御技術に関し、特に、平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に適用して有効な技術に関するものである。
【背景技術】
【0002】
機械式駐車場には種々のものが存在するが、その中に、いわゆるパズル式の駐車システムがある。パズル式駐車システムの一つとして、車両の格納領域内をマトリクス状のブロックに区画し、ブロック上に配置されたパレットを空スペースの位置に順次スライドして移動させることによって、パレット上に置かれた車両を格納位置もしくは入出庫口に移送して入出庫を行う駐車システムがある(以降ではこのような方式を「平面パズル式」と記載する場合がある)。
【0003】
この平面パズル式の駐車システムについては、例えば、特開平2−115467号公報(特許文献1)に記載されている。また、この平面パズル式の駐車システムを利用したものとして、例えば、特開平6−88451号公報(特許文献2)には、平面パズル式の駐車システムと高速台車を組み合わせることで、格納密度の向上と入出庫時間の短縮を可能とする機械式駐車場が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平2−115467号公報
【特許文献2】特開平6−88451号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の平面パズル式駐車システムでは、例えば、入出庫が完了する度に空スペースを必ず初期位置に戻し、また、マトリクス内のブロック毎に、当該ブロック上の対象物を出庫させる際に、どのような順序でパレットを移動させることで当該ブロック上のパレットを入出庫口に移動させるかというパターンを予め定義しておくことで、出庫時の動作を制御している。しかし、この場合はブロック数が少ない場合には比較的効率よく制御することができるが、ブロック数が多くなると定義を設定する負荷が大きくなり、また、空スペースを初期状態に戻すことにより効率が大きく低下する場合がある。
【0006】
また、例えば特許文献1には、あるアドレスのパレットに出庫要求が入力された場合に、他のパレットを移動させつつ、対象のパレットを順次入出庫口の方向に移動させることで、最短コースを通って入出庫口に移動させるということが記載されている。ここでは、最短コースをどのように取得するかについては特に開示されていないが、一般的にはマトリクスのサイズや形状、入出庫口の位置等によって個別に移動パターンや制御ロジックを定義、もしくは修正・変更している場合が多い。
【0007】
そこで本発明の目的は、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律に適用して出庫することができる平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫を提供することにある。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。本発明の代表的な実施の形態は、平面パズル式格納庫制御方法および平面パズル式格納庫制御プログラムならびに平面パズル式格納庫などに適用され、以下の特徴を有するものである。
【0009】
すなわち、本発明の代表的な実施の形態である平面パズル式格納庫制御方法は、格納庫の格納領域内をマトリクス状に区画したブロックと、前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、前記パレットが配置されていない前記ブロックである空スペースと、前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、以下の特徴を有するものである。
【0010】
すなわち、前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行する。
【0011】
さらに、前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とするものである。
【発明の効果】
【0012】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0013】
本発明の代表的な実施の形態によれば、格納領域のマトリクスのサイズや入出庫口の位置、および出庫対象のパレット位置や空スペースの位置に関わらず一律の制御手順によって出庫することができる平面パズル式格納庫を実現することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施の形態におけるパレットシフト制御全体の処理の例について概要を示したフローチャートである。
【図2】本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。
【図3】本発明の一実施の形態における格納領域のブロックのマトリクスにおけるエリアとブロック位置数の例を示した図である。
【図4】(a)〜(c)は、本発明の一実施の形態におけるTPに隣接するブロックにBPをシフトさせた場合の例を示す図である。
【図5】(a)、(b)は、本発明の一実施の形態におけるBPとTPのエリアを共通化する場合の例を示した図である。
【図6】(a)〜(c)は、本発明の一実施の形態におけるBPをTPに対するB1もしくはB2の位置にシフトさせる場合の例を示した図である。
【図7】(a)〜(c)は、本発明の一実施の形態におけるBPをTPに隣接させた後、TPをGPまでシフトさせる場合の例を示した図である。
【図8】本発明の一実施の形態におけるパレットのシフト方向の例を示した図である。
【図9】本発明の一実施の形態におけるエリア共通化シフト処理の例を示したフローチャートである。
【図10】本発明の一実施の形態におけるBPシフト処理の例を示したフローチャートである。
【図11】本発明の一実施の形態における同一ライン上シフト処理の例を示したフローチャートである。
【図12】本発明の一実施の形態におけるTPシフト処理の例を示したフローチャートである。
【図13】本発明の一実施の形態におけるパレットシフト制御に従ってTPを出庫する際のパレットの総シフト数算出処理の例について概要を示したフローチャートである。
【図14】本発明の一実施の形態におけるエリア共通化シフト数算出処理の例を示したフローチャートである。
【図15】本発明の一実施の形態におけるBPシフト数算出処理の例を示したフローチャートである。
【図16】本発明の一実施の形態におけるTPシフト数算出処理の例を示したフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0016】
[構成]
図2は、本発明の一実施の形態である平面パズル式格納庫の構成例の概要について示した図である。平面パズル式格納庫1は、例えば車両を格納する機械式駐車場などであり、格納庫の格納領域内をマトリクス状に区画したブロック11と、ブロック11上に配置されたパレット12、および入出庫口15を有する。また、パレット12が配置されていないブロック11として空スペース13(以下では単に「BP」と記載する場合がある)を有する。BP13は1つに限らず、複数有していてもよい。
【0017】
なお、パレット12のうち、入出庫口15から出庫する対象物が置かれたパレット12を対象パレット14(以下では単に「TP」と記載する場合がある)と呼ぶ。また、入出庫口15に位置するブロック11を入出庫口ブロック16(以下では単に「GP」と記載する場合がある)と呼ぶ。
【0018】
パレット12はブロック11の区画に沿って前後左右方向にスライドして移動(シフト)させることができるが、そのためにはパレット12のシフト先にスペースが必要である。すなわち、パレット12は、前後左右にBP13が隣接する場合にその方向に1ブロックシフトさせることができる。その結果、パレット12が存在していたブロック11上には新たにBP13ができる。すなわち、パレット12を隣接するBP13の方向に1ブロックシフトさせることは、BP13を対象のパレット12の方向に1ブロックシフトさせることと等価である。
【0019】
さらに、平面パズル式格納庫1は、制御部21と記憶部22、および入出力部23を有する。制御部21は、後述する処理によりパレット12のシフトを指示・制御して、対象物の入出庫を実行する処理を行う装置である。すなわち、BP13に隣接するパレット12をBP13の位置にスライドさせる動作を繰り返して、パレット12およびBP13を順次シフトさせることによって、TP14をGP16の位置までシフトさせて入出庫口15から対象物を出庫させる。
【0020】
記憶部22は、平面パズル式格納庫1のマトリクスのサイズやGP16の位置、BP13の現在位置などの情報を保持する装置である。また、各パレット12の現在位置と当該パレット12に置かれている対象物との対応の情報も保持する。この情報により、制御部21は、出庫要求によって指示された対象物がどのパレット12上に存在するかを特定し、当該パレット12をTP14とすることができる。入出力部23は、入出庫の要求や各種設定情報などの入力、出庫時の所要時間や状況の表示などのユーザインタフェースを外部のユーザに提供する装置である。
【0021】
[パレットのシフト制御の概要]
以下では、本実施の形態の平面パズル式格納庫1における出庫時のパレットシフトの制御手法について概要を説明する。図3は、格納領域のブロック11のマトリクスにおけるエリアとブロック位置数の例を示す図である。図3の例では、平面パズル式格納庫1のマトリクスは5×7の35個のブロック11を有している。
【0022】
ここで、図中の右から左の方向をx方向、上から下の方向をy方向とし、GP16を含むブロック11の行および列をそれぞれx軸基準ライン17(以下では単に「x軸」と記載する場合がある)、y軸基準ライン18(以下では単に「y軸」と記載する場合がある)とする。すなわち、GP16を含み入出庫口15の面に対して垂直方向に配置されたブロック11の列をy軸18とし、GP16を含みy軸18と直交するブロック11の列をx軸17とする。これにより、各ブロック11の位置はx座標とy座標(GP16の位置を基準とした相対位置)により特定することができる。なお、図3の例では、x軸方向の中央に入出庫口15(GP16)を有する構成となっているが、入出庫口15の位置はx軸17上のいずれにあってもよい。
【0023】
さらに、本実施の形態では、図3に示すように、y軸18を境として各ブロックのx座標が0以上である領域をエリアA、x座標が0以下である領域をエリアBとして2つのエリアに分ける。y軸18はエリアA、エリアB両方に含まれるものとする。なお、入出庫口15がマトリクスの端部にある場合は、エリアAもしくはBの一方のみ有することになる。
【0024】
図3において、GP16の値を「0」として各ブロック11にそれぞれ設定されている値は、各ブロック11上にあるパレット12が、他のブロック11上にパレット12がなく全てBP14であった場合に、前後左右に1ブロックずつシフトしてGP16に至るまでの最少シフト数(以下ではこの値を「ブロック位置数」と記載する場合がある)を表している。
【0025】
すなわち、対象のブロック11上のパレット12に出庫の対象物があった場合に、当該パレット12自体を最少で何回シフトさせれば入出庫口15から出庫させることができるかを表している。従ってGP16ではブロック位置数は「0」となり、GP16に隣接するブロック11では「1」、これにさらに隣接するブロックでは「2」…というような値となる。
【0026】
このマトリクスにおいて、いずれかのブロック11上にあるTP14に置かれた対象物を入出庫口15から出庫するには、TP14をGP16の位置までシフトさせる必要がある。ここで、上述したように、TP14をシフトさせるためにはTP14にBP13が隣接している必要がある。そこで、まず、マトリクス内の他のいずれかのブロック11に存在するBP13をTP14に隣接するブロック11までシフトさせる必要がある。
【0027】
図4は、TP14に隣接するブロック11にBP13をシフトさせた場合の例を示す図である。図4(a)は、TP14のx座標が2(以下では「TPx=2」のように記載する場合がある)、y座標が2(以下では「TPy=2」のように記載する場合がある)である場合、すなわち、TP14がx軸17上にもy軸18上にもない場合の例である。図中のマトリクスにおける太線は、エリア(エリアA)の境界を示している。このとき、TP14のブロック位置数を|TP|と表記するものとした場合、
|TP|=|TPx|+|TPy|=2+2=4
となる。
【0028】
ここで、TP14を最少シフト数(最短コース)でGP16にシフトさせるためには、TP14をGP16に近い側に順次シフトさせる必要がある。すなわち、BP13をTP14に対してGP16に近い側で隣接するブロック11(図中に示すB1の位置とB2のいずれかの位置のブロック11)にシフトさせる必要がある。
【0029】
ここで、B1、B2の位置は、いずれもTP14の位置に対する相対位置を示すものであり、B1の位置にBP13をシフトさせた場合は、BPx=TPx、BPy=TPy−1となる。また、B2の位置にBP13をシフトさせた場合は、BPx=TPx−1、BPy=TPyとなる。すなわち、B1、B2ともにブロック位置数は|TP|−1=3である。なお、図4(a)では、TP14がエリアAにある場合を例としているが、エリアBにある場合は左右が逆となる(B2の位置が変わる)だけで同様であるため省略する。
【0030】
同様に、図4(b)は、TPx=3、TPy=0である場合、すなわち、TP14がx軸17上にある場合である。この場合は、BP13をシフトさせる位置は図中のB2の位置1ヶ所のみとなる。また、図4(c)は、TPx=0、TPy=3である場合、すなわち、TP14がy軸18上にある場合の例である。この場合は、BP13をシフトさせる位置は図中のB1の位置1ヶ所のみとなる。
【0031】
図4(a)〜(c)のいずれの場合も、BP13をTP14に対してB1もしくはB2の位置にシフトさせた後、TP14をBP13の位置にシフトさせる。これにより、シフト後のTP14の|TP|は1減少する、すなわち、TP14はGP16に1ブロック近づいたことになる。一方、このシフトにより、TP14に対するBP13の位置はB1もしくはB2の位置ではなくなってしまう。従って、再度BP13をTP14に対してB1もしくはB2の位置にシフトさせる。この動作を繰り返すことで、TP14をGP16の位置までシフトさせることができる。
【0032】
以下では、BP13をTP14に対してB1もしくはB2の位置にシフトさせる手順について説明する。まず、BP13とTP14が異なるエリアに属する場合に、同一のエリアに属するようにBP13をシフトさせる。図5は、BP13とTP14のエリアを共通化する場合の例を示した図である。
【0033】
図5(a)は、BP13とTP14がともにエリアAに属する場合の例を示している。この場合はここでの処理は不要である。BP13とTP14がともにエリアBに属する場合も同様である。
【0034】
図5(b)は、BP13とTP14が異なるエリアに属する場合の例を示している。ここでは、TP14がエリアAに属するのに対し、BP13がエリアBに属する場合の例である。ここで、BP13をエリアAにシフトさせて共通化するが、本実施の形態では、単純にx軸方向での平行移動によりエリアAまでシフトさせる。このとき、シフト後のBP13の位置は、y軸18上(BPx=0)となる。なお、TP14がエリアBに属し、BP13がエリアAに属する場合も同様に、BP13を平行移動によりy軸18上までシフトさせてBP13をTP14と同一エリアに属させる。
【0035】
次に、同一エリア内で、BP13をTP14に対するB1もしくはB2の位置にシフトさせる。図6は、BP13をTP14に対するB1もしくはB2の位置にシフトさせる場合の例を示した図である。なお、図6(a)〜(c)においては、BP13とTP14がともにエリアAに属する場合を例としているが、ともにエリアBに属する場合は左右が逆となるだけで概念は同様であるため説明は省略する。
【0036】
BP13をシフトさせるパターンは、TP14の位置、およびTP14に対するBP13の相対位置に応じて異なる。なお、本実施の形態では、基本的な方針として可能な場合はx軸方向に先に所望の位置までシフトさせ、その後y軸方向にシフトさせるものとするが、逆の順序であってもよい。
【0037】
図6(a)は、TP14がx軸17上にもy軸18上にもない場合の例である。ここでは、TP14の位置に対して、BP13の相対位置を図中のA〜Hの8つの領域に分けて、シフトさせるパターンを定義する。
【0038】
(A)BP13が領域Aに属する場合
この場合は、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を右方向(−x方向)にシフトさせ、領域Bにシフトさせる。
【0039】
(B)BP13が領域Bに属する場合
この場合も同様に、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を後方向(+y方向)にシフトさせる。
【0040】
(C)BP13が領域Cに属する場合
この場合は、BP13からB1およびB2までの距離(シフト数)は同じである。そこで、TP14の位置によって目標を決定する。後述するように、TP14の位置によって、TP14に対してBP13がB1にある場合とB2にある場合とで、その後にTP14をGP16までシフトさせる場合に要するシフト数が変わってくるからである。具体的には、TPx<TPyの場合、すなわち、TP14とx軸17との間の距離のほうが大きい場合は、B1を目標としてBP13を左方向(+x方向)にシフトさせ、領域Bにシフトさせる。TPx≧TPyの場合、すなわち、TP14とy軸18との間の距離のほうが大きい場合は、B2を目標としてBP13を後方向(+y方向)にシフトさせる。
【0041】
(D)BP13が領域Dに属する場合
この場合は、BP13をシフトさせる目標をB1とするかB2とするかに関わらず、BP13を左方向(+x方向)にシフトさせ、領域Cもしくは領域Dにシフトさせる。(領域D内の点線で示された領域D’についても同様)。
【0042】
(E)BP13が領域Eに属する場合
この場合は、BP13をB2を目標としてシフトさせることになる(B1よりもB2のほうが近い)。従って、BP13を前方向(−y方向)にシフトさせる。
【0043】
(F)BP13が領域Fに属する場合
この場合も同様に、BP13をB2を目標としてシフトさせることになる(B1よりもB2のほうが近い)。従って、BP13を右方向(−x方向)にシフトさせ、領域Eにシフトさせる。
【0044】
(G)BP13が領域Gに属する場合
この場合は、BP13からB1およびB2までのシフト数は同じである。そこで、領域Cに属する場合と同様に、TP14の位置によって目標を決定する。具体的には、TPx<TPyの場合、すなわち、TP14とx軸17との間の距離のほうが大きい場合は、B1を目標としてBP13を前方向(−y方向)にシフトさせ、領域Hにシフトさせる。ここでは、TP14を迂回してBP13をB1までシフトさせるため、先にy方向にシフトさせる。TPx≧TPyの場合、すなわち、TP14とy軸18との間の距離のほうが大きい場合は、B2を目標としてBP13を右方向(−x方向)にシフトさせ、領域Fにシフトさせる。
【0045】
(H)BP13が領域Hに属する場合
この場合は、BP13をB1を目標としてシフトさせることになる(B2よりもB1のほうが近い)。従って、BP13を前方向(−y方向)にシフトさせ、領域Aにシフトさせる。ここでは、TP14を迂回してBP13をB1までシフトさせるため、先にy方向にシフトさせる。
【0046】
図6(b)は、TP14がx軸17上にある場合の例である。ここで、BP13が領域Hに属する場合は、図4(b)で示したとおり、目標はB2となる。また、x軸17上では−y方向にはブロック11は存在しない。従って、BP13が領域Hに属する場合は、BP13を上記のパターン(H)とは逆に後方向(+y方向)にシフトさせ、領域Gにシフトさせる。領域Gでは、上記のパターン(G)と同様に処理を行えば、自動的にB2を目標として右方向(−x方向)にシフトさせることになる(TP14はx軸17に近い位置にあるため)。
【0047】
同様に、図6(c)は、TP14がy軸18上にある場合の例である。ここで、BP13が領域Fに属する場合は、図4(c)で示したとおり、目標はB1となる。また、y軸18上では−x方向にはエリアAに属するブロック11は存在しない。従って、BP13が領域Fに属する場合は、BP13を上記のパターン(F)とは逆に左方向(+x方向)にシフトさせ、領域Gにシフトさせる。領域Gでは、上記のパターン(G)と同様に処理を行えば、自動的にB1を目標として前方向(−y方向)にシフトさせることになる(TP14はy軸18に近い位置にあるため)。
【0048】
上記のような処理によって、同一エリア内で、BP13をTP14に対するB1もしくはB2の位置に適切にシフトさせることができる。その後は、TP14をBP13の位置にシフトさせる。これにより、TP14はGP16に1ブロック近づくことになる。しかし、TP14に対するBP13の位置はB1もしくはB2の位置ではなくなってしまう。従って、上記のパターンを再度実行することで、BP13をTP14に対してB1もしくはB2の位置にシフトさせる。この動作を繰り返すことで、TP14をGP16の位置までシフトさせることができる。
【0049】
図7は、BP13をTP14に隣接させた後、TP14をGP16までシフトさせる場合の例を示した図である。図7(a)は、TP14がx軸17およびy軸18上にない場合の例を示している。図中の(1)において、TP14をBP13の位置(−y方向)にシフトさせる。その後、図中の(2)〜(4)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB2の位置を目標としてシフトさせる。このとき、初期状態である図中の(1)から、TP14を1ブロックシフトさせ、シフト後のTP14に対して新たにB2の位置までBP13をシフトさせるまでの総シフト数は3となる。
【0050】
同様に、図中の(4)において、TP14をBP13の位置(−x方向)にシフトさせる。その後、図中の(5)〜(7)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB1の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の(8)の点線矢印に示すように、TP14はx軸方向とy軸方向を交互にジグザグ状にシフトすることになる。
【0051】
一方、図7(b)は、TP14がx軸17上にある場合の例を示している。図中の(1)において、TP14をTP13の位置(−x方向)にシフトさせる。その後、図中の(2)〜(6)に示すように、シフトしたBP13を、シフトしたTP14に対して新たにB2の位置を目標としてシフトさせる。この動作を繰り返すことにより、図中の(7)の点線矢印に示すように、TP14はx軸17上を直線状にシフトすることになる。これはTP14がy軸18上にある場合も同様である。
【0052】
なお、このとき、初期状態である図中の(1)から、TP14を1ブロックシフトさせ、シフト後のTP14に対して新たにB2の位置までBP13をシフトさせるまでの総シフト数は5となる。すなわち、図7(a)に示すようにTP14がx軸17およびy軸18上にない場合と比べて、TP14を1ブロックシフトさせるのに必要なシフト数は2多くなる。
【0053】
図7(c)は、TP14を最初にB1にあるBP13を使用してGP16までシフトさせる場合と、B2にあるBP13を使用してGP16にシフトさせる場合の例を示した図である。図7(c)に示すように、最初にB1にあるBP13を使用した場合は、TP14がジグザグ状にシフトするシフト数が5、直線状にシフトするシフト数が3である。これに対し、最初にB2にあるBP13を使用した場合は、TP14がジグザグ状にシフトするシフト数が6、直線状にシフトするシフト数が2である。
【0054】
従って、総シフト数は、最初にB1にあるBP13を使用した場合が、3×5+5×3=30、最初にB2にあるBP13を使用した場合が、3×6+5×2=28となり、最初にB2にあるBP13を使用したほうが2少なくなる。このとき、最初にB2にあるBP13を使用したほうが有利となるのは、TP14の初期位置においてy軸18との距離のほうがx軸17との距離より大きい、すなわち、TPx≧TPyであるためである。同様に、TP14の初期位置においてx軸17との距離のほうがy軸18との距離より大きい、すなわち、TPx<TPyの場合は、最初にB1にあるBP13を使用したほうが有利となる。なお、両者の総シフト数の差分は常に2となる。
【0055】
従って、上記の図6において、TP14の初期位置に対して最初にBP13をB1もしくはB2の位置にシフトさせる際に、移動距離(シフト数)が同じである場合(図6(a)における領域Cおよび領域Gの場合)は、TPx≧TPyの場合はB2、TPx<TPyの場合(x軸17との距離のほうが大きい場合)はB1を目標とするほうが総シフト数が少なくなる。なお、BP13をB1とB2の位置の間でシフトさせるシフト数は2である(B1とB2の間の距離は2である)ため、図6(a)における領域Cおよび領域G以外の場合は、B1とB2のうちBP13の位置からいずれか近いほうを目標とすればよいことになる。
【0056】
以上のように、まず、出庫の対象物が置かれたTP14に対して、BP13をシフトさせることで、TP14とのエリアを共通化する。その後、TP14の位置、およびTP14の位置に対するBP13の相対位置(属する領域)に応じてBP13をシフトさせ、TP14に対して、GP16に近い側の隣接ブロックであるB1もしくはB2の位置で隣接させる。その後、BP13の位置にTP14をシフトさせ、シフト後のTP14の位置に対して、シフト後のBP13を再度B1もしくはB2の位置にシフトして隣接させる。この処理をTP14がGP16に到達するまで繰り返すことにより、TP14に置かれた対象物を出庫する。
【0057】
[パレットシフト制御処理フロー]
以下では、上述した本実施の形態の平面パズル式格納庫1における出庫時のパレットシフトの制御手法の処理フローについて説明する。これらの処理は、例えば、ソフトウェア等によるプログラムとして実装し、制御部21によって実行するようにすることが可能である。
【0058】
図8は、パレット12のシフト方向の例を示した図である。ここではパレット12のうち、シフト対象のものを代表的にFパレットと表記する。Fパレットは、制御部21からの指示により、x方向(左方向)、−x方向(右方向)、y方向(後方向)、−y方向(前方向)にシフトさせることができる。TP14をシフトさせる場合は、FパレットはTP14となる。また、BP14をシフトさせる場合は、BP14のシフト方向で隣接するパレット12がFパレットとなる。例えば、BP14を−x方向にシフトさせたい場合は、BP14の−x方向で隣接するパレット12がFパレットとなる。このとき、Fパレットはx方向にシフトされ、これに伴いBP14は−x方向にシフトされる。
【0059】
図1は、パレットシフト制御全体の処理の例について概要を示したフローチャートである。平面パズル式格納庫1に格納されている対象物に対して、入出力部23を介して出庫要求を受けると、制御部21は、まず、出庫の対象物が置かれたTP14に対して、必要に応じてBP13をシフトして、TP14とのエリアを共通化するエリア共通化シフト処理を行う(S100)。
【0060】
次に、TP14の位置、およびTP14の位置に対するBP13の相対位置に応じてBP13をシフトさせ、TP14に対して、GP16に近い側の隣接ブロックであるB1もしくはB2の位置で隣接させるBPシフト処理を行う(S200)。次に、TP14をBP13の位置に1ブロックシフトさせるTPシフト処理を行う(S300)。
【0061】
その後、TP14が入出庫口15、すなわちGP16の位置に到達したか否かを判定する(S400)。TP14がGP16の位置に到達していない場合は、ステップS200に戻り、シフト後のTP14の位置に対して、シフト後のBP13を再度B1もしくはB2の位置にシフトさせて隣接させる。ステップS400で、TP14がGP16の位置に到達している場合は処理を終了する。この時点で入出庫口15から対象部を出庫することができる。
【0062】
図9は、図1のエリア共通化シフト処理(S100)の例を示したフローチャートである。エリア共通化シフト処理を開始すると、まず、記憶部22に記憶された情報を取得して、ブロック11のマトリクスにおけるBP13およびTP14の位置(x座標、y座標)を特定する(S101、S102)。次に、BP13とTP14のx座標値の比較により、これらが同じエリアに属するか否かを判定する(S103)。同じエリアに属する場合はそのまま処理を終了する。
【0063】
ステップS103で、BP13とTP14が同じエリアに属さない場合は、BP13がエリアAに属するか否かを判定する(S104)。エリアAに属する場合は、Fパレットを+x方向にシフトさせることでBP13を−x方向にシフトさせ(S105)、エリアAに属さない場合は、Fパレットを−x方向にシフトさせることでBP13を+x方向にシフトさせる(S106)。その後、ステップS103に戻って処理を繰り返すことで、BP13がTP14と同じエリアに属するまで、すなわち、BP13がy軸18上にシフトされるまでBP13をシフトさせる。
【0064】
図10は、図1のBPシフト処理(S200)の例を示したフローチャートである。なお、以降のフローチャートでは、BP13とTP14がともにエリアAに属する場合を例としているが、ともにエリアBに属する場合は左右(x方向の正負)が逆となるだけで処理内容は同様であるため説明は省略する。
【0065】
BPシフト処理を開始すると、まず、BP13とTP14との間の距離(以下では「ΔBP」と記載する場合がある)を算出する(S201)。ΔBPは、BP13とTP14の各x座標、y座標の差分の絶対値の和となる。
【0066】
次に、ステップS201で算出したΔBPと、BP13、TP14のそれぞれのブロック位置数|BP|、|TP|とから、BP13がTP14に対してB1もしくはB2の位置にあるか否かを判定する(S202)。具体的には、ΔBP=1、すなわちBP13がTP14に隣接しており、かつ、|TP|−|BP|=1、すなわち、BP13のブロック位置数がTP14のブロック位置数より1少ない場合に、BP13はTP14に対してB1もしくはB2の位置にあると判定することができる。ここでBP13がB1もしくはB2の位置にあると判定された場合はそのまま処理を終了する。
【0067】
ステップS202で、BP13がB1もしくはB2の位置にないと判定された場合は、以降の処理でBP13をTP14に対してB1もしくはB2の位置に近づけるよう、BP13を1ブロックシフトさせる。まず、後述する同一ライン上シフト処理により、上述した図6における領域Fもしくは領域HにBP13がある場合に、上述の図6で示したパターンに従ってBP13を領域Fもしくは領域Hからシフトさせる処理を行う(S203)。
【0068】
次に、TP14に対してBP13が図6におけるどの領域に属するかによってBP13をシフトさせるパターンを決定する。まず、BPxとTPxを比較し(S204)、BPx=TPxの場合(領域B)は、上述のパターン(B)に従って、BP13を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S205)。
【0069】
ステップS204で、BPx>TPxの場合(領域A、G)は、BPyとTPyを比較する(S206)。BPy>TPyではない場合(領域A)は、上述のパターン(A)に従って、BP13を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S207)。BPy>TPyの場合(領域G)は、上述のパターン(G)に従って、TP14の位置によってシフトさせる方向を決定するため、TPxとTPyを比較する(S208)。
【0070】
ステップS208で、TPx<TPyの場合は、B1が有利となるため、BP14を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる(S209)。TPx<TPyではない場合は、B2が有利もしくはいずれも同じとなるため、BP14を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S207)。
【0071】
ステップS204で、BPx<TPxの場合(領域C、D、E)は、BPxとTPx−1を比較する(S210)。BPx<TPx−1の場合(領域D)は、上述のパターン(D)に従って、BP13を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S213)。BPx<TPx−1ではない場合は、BPyとTPyを比較する(S211)。
【0072】
ステップS211で、BPy<TPyではない場合(領域E)は、上述のパターン(E)に従って、BP13を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる。BPy<TPyの場合(領域C)は、上述のパターン(C)に従って、TP14の位置によってシフトさせる方向を決定するため、TPxとTPyを比較する(S212)。
【0073】
ステップS212で、TPx<TPyの場合は、B1が有利となるため、BP14を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S213)。TPx<TPyではない場合は、B2が有利もしくはいずれも同じとなるため、BP14を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S205)。
【0074】
以上の処理により、Fパレットをx方向もしくはy方向に1ブロックシフトさせてBP13をシフトさせた後、ステップS201に戻り、BP13がTP14に対してB1もしくはB2の位置にシフトさせるまで上記の一連の処理を繰り返す。
【0075】
図11は、図10のBPシフト処理における同一ライン上シフト処理(S203)の例を示したフローチャートである。ここでは、BP13がTP14と同一ライン上にあって、BP13のほうがTP14よりGP16から遠い場合、すなわち、図6における領域Fもしくは領域HにBP13がある場合に、上述の図6で示したパターンに従ってBP13を領域Fもしくは領域Hからシフトさせる。
【0076】
まず、BPyとTPyとを比較し(S231)、BPy=TPyではない場合は、BPxとTPxとを比較する(S232)。BPx=TPxではない場合は、BP13とTP14は同一ライン上にはない(BP13は領域B、D、F、Hにはない)と判定し、そのまま処理を終了する。
【0077】
ステップS232で、BPx=TPxである場合(領域B、F)は、BPyとTPyを比較する(S233)。BPy>TPyではない場合(領域B)は、そのまま処理を終了する。BPy>TPyの場合(領域F)は、TPx=0であるか否かにより、TP14(およびBP13)がy軸18上にあるか否かを判定する(S234)。TPx=0である(y軸18上にある)場合は、図6(c)のパターンに従って、BP13を左方向(+x方向)にシフトさせる。すなわち、Fパレットを−x方向にシフトさせる(S235)。TPx=0ではない(y軸18上にはない)場合は、上述のパターン(F)に従って、BP13を右方向(−x方向)にシフトさせる。すなわち、Fパレットを+x方向にシフトさせる(S236)。
【0078】
ステップS231で、BPy=TPyである場合(領域D、H)は、BPxとTPxを比較する(S237)。BPx>TPxではない場合(領域D)は、そのまま処理を終了する。BPx>TPxの場合(領域H)は、TPy=0であるか否かにより、TP14(およびBP13)がx軸17上にあるか否かを判定する(S238)。TPy=0である(x軸17上にある)場合は、図6(b)のパターンに従って、BP13を後方向(+y方向)にシフトさせる。すなわち、Fパレットを−y方向にシフトさせる(S240)。TPy=0ではない(x軸17上にはない)場合は、上述のパターン(D)に従って、BP13を前方向(−y方向)にシフトさせる。すなわち、Fパレットを+y方向にシフトさせる(S239)。
【0079】
以上の処理により、BP13が領域Fもしくは領域Hにある場合に、Fパレットをx方向もしくはy方向に1ブロックシフトさせてBP13をシフトし、BP13を領域Fもしくは領域Hから出すことで処理を終了する。
【0080】
図12は、図1のTPシフト処理(S300)の例を示したフローチャートである。TPシフト処理を開始すると、まず、BPx=TPxであるか否かにより、BP13がTP14に対してB1の位置にあるか否かを判定する(S301)。BPx=TPxである場合には、BP13はB1の位置にあると判定し、TP14(Fパレット)をB1の位置(−y方向)にシフトさせる(S302)。BPx=TPxではない場合は、BP13はB2の位置にあると判定し、TP14をB2の位置(−x方向)にシフトさせる(S303)。以上の処理により、TP14を隣接するBP13の位置にシフトさせてTPシフト処理を終了する。
【0081】
[パレット総シフト数算出処理フロー]
以下では、上述した出庫時のパレットのシフト制御手法に従ってTP14を出庫する際のパレット12の総シフト数を算出する処理フローについて説明する。図13は、本実施の形態のパレットシフト制御に従ってTP14を出庫する際のパレット12の総シフト数算出処理の例について概要を示したフローチャートである。
【0082】
平面パズル式格納庫1に格納されている対象物に対して、入出力部23を介して出庫要求を受けると、制御部21は、まず、出庫の対象物が置かれたTP14に対して、図1のエリア共通化シフト処理(S100)によりBP13とTP14とのエリアを共通化する際に要するパレット12のシフト数の小計BSを算出するエリア共通化シフト数算出処理を行う(S600)。
【0083】
次に、図1のBPシフト処理(S200)により、TP14の初期位置に対してBP13をシフトさせ、B1もしくはB2の位置で最初にTP14に隣接させる際に要するパレット12のシフト数の小計BPSを算出するBPシフト数算出処理を行う(S700)。次に、図1のTPシフト処理(S300)およびBPシフト処理(S200)を繰り返してTP14をGP16の位置にシフトさせる際に要するパレット12のシフト数の小計TPSを算出するTPシフト数算出処理を行う(S800)。最後に、ステップS600〜S800で算出したBS、BPS、TPSを合計することにより、出庫要求から出庫までに要するパレット12の総シフト数を算出し(S900)、処理を終了する。
【0084】
出庫要求から出庫までに要するパレット12の総シフト数を算出することで、例えば、Fパレットを1ブロックシフトさせるのに要する単位シフト時間が既知である場合に、総シフト数と単位シフト時間との乗算により、出庫要求から出庫までの所要時間を算出することができる。また、出庫処理の開始からのシフト数をカウントすることにより、出庫までの残時間を算出することもできる。算出したこれらの時間を入出力部23を介してユーザに提示することで、ユーザの利便性を高めることができる。
【0085】
図14は、図13のエリア共通化シフト数算出処理(S600)の例を示したフローチャートである。エリア共通化シフト数算出処理を開始すると、まず、記憶部22に記憶された情報を取得して、ブロック11のマトリクスにおけるBP13およびTP14の位置(x座標、y座標)を特定する(S601、S602)。次に、BP13とTP14のx座標値の比較により、これらが同じエリアに属するか否かを判定する(S603)。同じエリアに属する場合は、エリア共通化シフト処理(S100)によるBP13のシフトはないため、BS=0として(S604)、処理を終了する。
【0086】
ステップS603で、BP13とTP14が同じエリアに属さない場合は、エリア共通化シフト処理(S100)によりBP13がy軸18上に平行移動されたものと仮定してBPx=0とする(S605)。さらに、このときのシフト数としてBS=|BPx|とし(S606)、処理を終了する。
【0087】
図15は、図13のBPシフト数算出処理(S700)の例を示したフローチャートである。BPシフト数算出処理を開始すると、まず、BP13とTP14との間の距離ΔBPを算出する(S701)。図10のステップS201と同様に、ΔBPは、BP13とTP14の各x座標、y座標の差分の絶対値の和となる。なお、ここでのBP13は、エリア共通化シフト処理(S100)を実際に実行したと仮定した場合のものである。
【0088】
次に、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6に示した領域F、G、Hに属するか否かを判定する(S702)。BPx≧TPxかつBPy≧TPyである場合(領域F、G、H)は、BP13をシフトさせる目標がB1であるかB2であるかに関わらず、BP13から見た場合にB1およびB2ともにTP14よりも1ブロック遠い位置にある。
【0089】
従って、BP13をB1もしくはB2にシフトさせるためのシフト数は、BP13をTP14の位置まで仮想的にシフトさせた場合のシフト数であるΔBPより1大きくなるため、BPS=ΔBP+1とする(S703)。なお、この時点では、TP14およびBP13がともにx軸17もしくはy軸18上にある場合は除外している。
【0090】
一方、BPx≧TPxかつBPy≧TPyではない場合(領域F、G、H以外)は、BP13をシフトさせる目標がB1であるかB2であるかに関わらず、BP13から見た場合にB1およびB2ともにTP14よりも1ブロック近い位置にある。従って、BP13をB1もしくはB2にシフトさせるためのシフト数は、ΔBPより1小さくなるため、BPS=ΔBP−1とする(S704)。
【0091】
次に、BP13がTP14に対してB1、B2のいずれにシフトされるかを判定する。まず、TPxとTPyとを比較し、初期位置としてB1とB2のいずれにBP13をシフトさせるほうが有利であるかを判定する(S705)。TPx<TPyである場合は、B1が有利である。ここでさらに、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6(a)に示した領域D’、E、Fに属するか否かを判定する(S706)。一方、ステップS705で、TPx<TPyではない場合は、B2が有利である。ここでさらに、BPxとTPxおよびBPyとTPyとを比較することにより、TP14に対してBP13が図6(a)に示した領域A、B、Hに属するか否かを判定する(S707)。
【0092】
ステップS706で、BP13が領域D’、E、Fに属する場合、もしくは、ステップS707で、BP13が領域A、B、H以外に属する場合は、BP13はB2を目標とすることになる。また、ステップS706で、BP13が領域D’、E、F以外に属する場合、もしくは、ステップS707で、BP13が領域A、B、Hに属する場合は、BP13はB1を目標とすることになる。
【0093】
BP13をB2を目標としてシフトさせると判定した場合、次に、BPxおよびTPxがともに0であるか否かにより、BP13およびTP14がともにy軸18上にあるか否かを判定する(S708)。BP13およびTP14がともにy軸18上にない場合は、BP13はそのままB2を目標とするため、BPシフト処理(S200)によりBP13がB2にシフトされたものと仮定してBP13の座標を設定し(S710)、処理を終了する。
【0094】
一方、BP13およびTP14がともにy軸18上にある場合は(このときBP13はTP14に対して領域Fに属する)、BP13は図6(c)に示すようにB1を目標としてシフトされることになる。BP13が領域EからB1にシフトされる際には、B2にシフトされるとした場合よりもシフト数が2大きくなる。従って、ステップS703もしくはS704で算出したBPSに2を加算し(S709)、BPシフト処理(S200)によりBP13がB1にシフトされたものと仮定してBP13の座標を設定し(S713)、処理を終了する。
【0095】
同様に、ステップS706もしくはS707で、BP13がB1を目標としてシフトされると判定した場合、BPyおよびTPyがともに0であるか否かにより、BP13およびTP14がともにx軸17上にあるか否かを判定する(S711)。BP13およびTP14がともにx軸17上にない場合は、BP13はそのままB1を目標とするため、BPシフト処理(S200)によりBP13がB1にシフトされたものと仮定してBP13の座標を設定し(S713)、処理を終了する。
【0096】
一方、BP13およびTP14がともにx軸17上にある場合は(このときBP13はTP14に対して領域Hに属する)、BP13は図6(b)に示すようにB2を目標としてシフトされることになる。BP13が領域HからB2にシフトされる際には、B1にシフトされるとした場合よりもシフト数が2大きくなる。従って、ステップS703もしくはS704で算出したBPSに2を加算し(S712)、BPシフト処理(S200)によりBP13がB2にシフトされたものと仮定してBP13の座標を設定し(S710)、処理を終了する。
【0097】
図16は、図13のTPシフト数算出処理(S800)の例を示したフローチャートである。TPシフト数算出処理を開始すると、まず、|TP|=1であるか否かにより、TP14の初期位置がGP16に隣接した位置にあるか否かを判定する(S801)。|TP|=1の場合はTP14の初期位置がGP16に隣接しており、この場合は、最初にBP13をTP14に対してB1もしくはB2の位置(すなわちGP16の位置)に隣接させた後に1回のシフトでTP14をGP16にシフトさせることができるため、TPS=1として(S802)、処理を終了する。
【0098】
|TP|=1ではない場合は、TPyとBPxとを比較し(S803)、その結果に応じて異なる算出式を用いてTPSを算出する。TPy=BPxである場合は、
TPS=|TP|×3−2
の式でTPSを算出し(S804)、処理を終了する。
【0099】
一方、TPy=BPxではない場合は、TPyとBPxとを比較し(S805)、変数TPz、BPzについて、TPy>BPxの場合はそれぞれTPx、BPxを設定する(S806)。また、TPy>BPxではない場合はそれぞれTPy、BPyを設定して(S807)、
TPS=|TP|×3+
{|TP|−(TPz×2+2)}×2+
(TPz−BPz)×2
の式でTPSを算出し(S808)、処理を終了する。
【0100】
以上に説明したように、本実施の形態の平面パズル式格納庫の制御方法によれば、入出庫口15(入出庫口ブロック16)を基準とした相対位置により空スペース13、および対象パレット14の位置を特定し、ブロック位置数を決定する。また、対象パレット14の位置、および対象パレット14の位置に対する空スペース13の相対位置に応じて空スペース13を対象パレット14に隣接させることができる。
【0101】
従って、格納領域のマトリクスのサイズや入出庫口15の位置、および出庫対象の対象パレット14の位置や空スペース13の位置に関わらず一律の制御手順により出庫することができる平面パズル式格納庫1を実現することができ、格納庫のサイズに対する拡張性や柔軟性を向上させることができる。
【0102】
また、対象パレット14を入出庫口15までシフトさせる際に、パレット12の総シフト回数を最少とするシフトパターン、および総シフト回数を得ることができるため、出庫の効率およびユーザの利便性を向上させることができる。また、このとき、対象パレット14をシフトさせる際には、基本的に各パレット12をx軸方向とy軸方向とで交互にシフトさせることになるため、パレット12およびその駆動機構の劣化を防止することができる。
【0103】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0104】
例えば、本実施の形態で説明した平面パズル式格納庫1としては、車両を格納する機械式駐車場以外に、書庫や、物品を保管する倉庫など、大きさや種類を問わず種々の格納庫に適用することができる。
【産業上の利用可能性】
【0105】
本発明は、機械式駐車場などの平面パズル式格納庫の制御方法および制御プログラムならびに平面パズル式格納庫に利用可能である。
【符号の説明】
【0106】
1…平面パズル式格納庫、11…ブロック、12…パレット、13…空スペース(BP)、14…対象パレット(TP)、15…入出庫口、16…入出庫口ブロック(GP)、17…x軸基準ライン(x軸)、18…y軸基準ライン(y軸)、21…制御部、22…記憶部、23…入出力部。
【特許請求の範囲】
【請求項1】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御方法。
【請求項2】
請求項1に記載の平面パズル式格納庫制御方法において、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御方法。
【請求項3】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有する平面パズル式格納庫の前記制御部によって実行され、
前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせる平面パズル式格納庫制御プログラムであって、
前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御プログラム。
【請求項4】
請求項3に記載の平面パズル式格納庫制御プログラムにおいて、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御プログラム。
【請求項5】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫。
【請求項6】
請求項5に記載の平面パズル式格納庫において、
前記制御部は、前記空スペースシフト処理において前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫。
【請求項7】
請求項5または6に記載の平面パズル式格納庫において、
前記制御部は、前記エリア共通化シフト処理によって前記対象パレットと前記空スペースとを同一の前記エリアに属させる際に要する前記パレットの第1のシフト数と、
最初の前記空スペースシフト処理によって、前記エリア共通化シフト処理を実行した直後の状態の前記空スペースを前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる際に要する前記パレットの第2のシフト数と、
前記対象パレットシフト処理と前記空スペースシフト処理とを繰り返し実行することによって、前記対象パレットの初期位置から前記対象パレットを前記入出庫口ブロックの位置にシフトさせる際に要する前記パレットの第3のシフト数とを算出し、
前記第1、第2、第3のシフト数を合計することにより、出庫要求を受けてから前記対象パレット上の前記対象物を出庫するまでの前記パレットの総シフト数を算出して出力することを特徴とする平面パズル式格納庫。
【請求項8】
請求項7に記載の平面パズル式格納庫において、
前記制御部は、出庫要求を受けてから前記対象パレット上の前記対象物を出庫する際の現時点までの前記パレットの第4のシフト数をカウントし、
前記総シフト数と前記第4のシフト数の差分と、前記パレットを1回シフトさせる際に要する時間とに基づいて、前記対象パレット上の前記対象物を出庫するまでの所要時間を算出して出力することを特徴とする平面パズル式格納庫。
【請求項1】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫制御方法であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御方法。
【請求項2】
請求項1に記載の平面パズル式格納庫制御方法において、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御方法。
【請求項3】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有する平面パズル式格納庫の前記制御部によって実行され、
前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせる平面パズル式格納庫制御プログラムであって、
前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫制御プログラム。
【請求項4】
請求項3に記載の平面パズル式格納庫制御プログラムにおいて、
前記空スペースシフト処理では、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫制御プログラム。
【請求項5】
格納庫の格納領域内をマトリクス状に区画したブロックと、
前記各ブロック上に配置され、前記ブロックの区画に沿って前後左右にスライドしてシフトさせることが可能なパレットと、
前記パレットが配置されていない前記ブロックである空スペースと、
前記格納庫の入出庫口に位置する前記ブロックである入出庫口ブロックと、
前記パレットのシフトを制御して対象物の入出庫を実行する制御部とを有し、
前記制御部により、前記空スペースに隣接する前記パレットを前記空スペースの位置にスライドさせる動作を繰り返して、前記パレットおよび前記空スペースを順次シフトさせることによって、出庫対象の前記対象物が置かれた前記パレットである対象パレットを前記入出庫口ブロックの位置までシフトさせて前記入出庫口から前記対象物を出庫させる平面パズル式格納庫であって、
前記制御部は、前記入出庫口ブロックを含み前記入出庫口の面に対して垂直方向に配置された前記ブロックの列をy軸基準ラインとし、前記入出庫口ブロックを含み前記y軸基準ラインと直交する前記ブロックの列をx軸基準ラインとし、前記y軸基準ラインによって区分され、それぞれ前記y軸基準ラインを含んでなる2つのエリアに対して、前記対象パレットと前記空スペースが同一の前記エリアに属するか否かを判定し、別の前記エリアに属する場合は、前記空スペースを前記y軸基準ライン上までシフトさせて前記対象パレットと同一の前記エリアに属させるエリア共通化シフト処理を実行し、さらに、
前記空スペースを、前記対象パレットの位置、および前記対象パレットに対する前記空スペースの相対位置に応じて、前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる空スペースシフト処理と、
前記対象パレットを、隣接する前記空スペースの位置にシフトさせる対象パレットシフト処理とを、
前記対象パレットが前記入出庫口ブロックの位置にシフトされるまで繰り返し実行することを特徴とする平面パズル式格納庫。
【請求項6】
請求項5に記載の平面パズル式格納庫において、
前記制御部は、前記空スペースシフト処理において前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する前記ブロックが2つある場合に、
これらの前記ブロックのうち、前記空スペースの位置から近い側に位置する前記ブロックに前記空スペースをシフトさせ、
前記空スペースとこれらの前記ブロックとの距離がいずれも同じ場合には、これらの前記ブロックのうち、前記対象パレットに対して、前記対象パレットの位置と前記x軸基準ラインおよび前記y軸基準ラインとの間の距離のいずれか大きい方の側で隣接する前記ブロックに前記空スペースをシフトさせることを特徴とする平面パズル式格納庫。
【請求項7】
請求項5または6に記載の平面パズル式格納庫において、
前記制御部は、前記エリア共通化シフト処理によって前記対象パレットと前記空スペースとを同一の前記エリアに属させる際に要する前記パレットの第1のシフト数と、
最初の前記空スペースシフト処理によって、前記エリア共通化シフト処理を実行した直後の状態の前記空スペースを前記対象パレットに対して前記入出庫口ブロックに近い側で隣接する1つまたは2つの前記ブロックのうちのいずれかにシフトさせる際に要する前記パレットの第2のシフト数と、
前記対象パレットシフト処理と前記空スペースシフト処理とを繰り返し実行することによって、前記対象パレットの初期位置から前記対象パレットを前記入出庫口ブロックの位置にシフトさせる際に要する前記パレットの第3のシフト数とを算出し、
前記第1、第2、第3のシフト数を合計することにより、出庫要求を受けてから前記対象パレット上の前記対象物を出庫するまでの前記パレットの総シフト数を算出して出力することを特徴とする平面パズル式格納庫。
【請求項8】
請求項7に記載の平面パズル式格納庫において、
前記制御部は、出庫要求を受けてから前記対象パレット上の前記対象物を出庫する際の現時点までの前記パレットの第4のシフト数をカウントし、
前記総シフト数と前記第4のシフト数の差分と、前記パレットを1回シフトさせる際に要する時間とに基づいて、前記対象パレット上の前記対象物を出庫するまでの所要時間を算出して出力することを特徴とする平面パズル式格納庫。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2011−1760(P2011−1760A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−145960(P2009−145960)
【出願日】平成21年6月19日(2009.6.19)
【出願人】(599030688)郵船商事株式会社 (8)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願日】平成21年6月19日(2009.6.19)
【出願人】(599030688)郵船商事株式会社 (8)
[ Back to top ]