(57)【要約】【課題】走行データを生成するために予め記憶手段に記憶しておくデータの量を抑制できる走行データ生成装置を提供すること。【解決手段】上位プロコンより行先指令が通知されると、無人搬送車両を走行させるために必要な動作コマンド列が、事前に設定されるテーブルから必要分抽出されて、動作コマンド列全体が生成される。本実施形態では、走行経路Ｒ上に配置されるステーションＣの中から、隣設する３つのステーションＣの組み合わせだけを全て求め、その各組み合わせに対応する動作コマンド列をテーブルに設定している。よって、隣設するもの及びしないものを含む２つのステーションＣの各々について、その組み合わせを全て（総当たりで）求め、その組み合わせに対応する動作コマンド列をテーブルに設定するよりも、ステーションＣの組み合わせの数を少なくできるので、テーブルのサイズを小さくできる。【選択図】図４
2012178054.tif 000002
【特許請求の範囲】
【請求項１】
無人搬送車両が通行可能な複数のステーションのうち前記無人搬送車両を通行させる３以上のステーションを指示する行先指令を取得する取得手段を備え、その取得手段によって取得された行先指令に従って前記無人搬送車両を走行させる走行データを生成する走行データ生成装置において、
前記複数のステーションのうち隣設する２つのステーション毎に、一方のステーションから他方のステーションに向けて出発するように前記無人搬送車両を走行させる出発データを記憶する出発データ記憶手段と、
前記複数のステーションのうち隣設する２つのステーション毎に、一方のステーションから走行してきて他方のステーションで停止するように前記無人搬送車両を走行させる到着データを記憶する到着データ記憶手段と、
前記複数のステーションのうち隣設する３つのステーション毎に、一のステーションを挟む２つのステーションの一方から他方に向けて、その一のステーションを通過するように前記無人搬送車両を走行させる通過データを記憶する通過データ記憶手段と、
前記出発データ記憶手段に記憶されている一の出発データと、前記到着データ記憶手段に記憶されている一の到着データと、前記通過データ記憶手段に記憶されている少なくとも一以上の通過データとを組み合わせ、前記走行データを生成する走行データ生成手段とを備えていることを特徴とする走行データ生成装置。
【請求項２】
前記走行データ生成手段は、
前記取得手段によって行先指令を取得する度に、その取得した行先指令に基づいて、前記無人搬送車両を到着させる到着ステーションで前記無人搬送車両を停止させる一の到着データを前記到着データ記憶手段から特定する到着データ特定手段と、
その到着データ特定手段によって特定される一の到着データに従って前記無人搬送車両が前記到着ステーションで停止する前に、新たに前記取得手段によって行先指令を取得した場合、その取得した行先指令に基づいて前記到着ステーションを通過させる通過データを前記通過データ記憶手段から特定する通過データ特定手段とを備え、
その通過データ特定手段によって通過データが特定された場合に、前記到着データ特定手段によって特定される一の到着データに替えて、前記通過データ特定手段によって特定された前記通過データを組み合わせて前記走行データを生成することを特徴とする請求項１に記載の走行データ生成装置。
【請求項３】
前記走行データ生成手段は、
前記行先指令に基づいて、前記無人搬送車両を出発させる出発ステーションと、その出発ステーションの次に前記無人搬送車両が通行するステーションとの２つのステーションを特定する第１特定手段と、
その第１特定手段によって特定された２つのステーションに対応する一の出発データを、前記出発データ記憶手段から抽出する第１抽出手段と、
前記行先指令に基づいて、前記無人搬送車両が通行する一連のステーションの中から隣設する３つのステーションを、一つずつステーションをずらしながら通過順に特定する第２特定手段と、
その第２特定手段によって特定された３つのステーション毎に、その３つのステーションに対応する通過データを前記通過データ記憶手段から抽出する第２抽出手段と、
前記行先指令に基づいて、前記無人搬送車両を到着させる到着ステーションと、その到着ステーションの一つ前に前記無人搬送車両が通過するステーションとの２つのステーションを特定する第３特定手段と、
その第３特定手段によって特定された２つのステーションに対応する一の到着データを、前記到着データ記憶手段から抽出する第３抽出手段とを備え、
前記第１抽出手段によって抽出された一の出発データと、前記第２抽出手段によって抽出された各通過データと、前記第３抽出手段によって抽出された一の到着データとを組み合わせ、前記走行データを生成するものであることを特徴とする請求項１又は２記載の走行データ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、走行データ生成装置に関し、特に、ステーションの総数が多い場合でも、走行データを生成するために予め記憶手段に記憶しておくデータ量を抑制できる走行データ生成装置に関するものである。
【背景技術】
【０００２】
従来より、工場内などでは、荷物の搬送の効率化や省力化を図るために、無人搬送車両によって荷物の搬送が行われている。例えば、工場内などには、無人搬送車両に対して荷物の積み降ろしが行われる位置や、無人搬送車両が別の無人搬送車両の通過を待つ位置や、無人搬送車両が走行経路上にある自動シャッタや自動扉の開放を待つ位置など（以下、「ステーション」と称す）が予め複数箇所設置され、それらのステーションを無人搬送車両が循環できるように走行経路が設けられる。無人搬送車両は、走行経路上を走行して、荷物の積載を指示されたステーションへ向かい、そこで荷物を積載した後、引き続き走行経路上を走行して、荷物の搬送先となるステーションまで走行する。一般的に、荷物の積み降ろしを行うタイミングや、荷物の積み降ろしが行われるステーションは、工場の稼働状況に応じて変化する。そのため、無人搬送車両は、無人搬送車両の配車等を管理する基地局（例えば、上位プロコン）からの指令に基づいて走行するように構成されている。基地局からの指令が無人搬送車両において受信されると、その指令に応じた走行経路を走行するための走行データが、無人搬送車両に搭載された走行データ生成装置によって生成される。
【０００３】
この種の走行データ生成装置に関し、次の特許文献１には、出発元のステーションから到着先のステーションまでの一連の走行経路を無人搬送車両に走行させるために必要な走行データを、出発元および到着先の２つのステーション毎に、予め記憶手段に記憶しておき、出発元および到着先の２つのステーションが基地局から指示された場合に、その指示された２つのステーションに対応する走行データを記憶手段から取得する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０１−０１７１０８号公報（６４頁左下、６５頁左上など）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、出発元および到着先の２つのステーション毎に、その２つのステーション間を走行するための走行データを予め記憶手段に記憶しておく構成だと、新たなステーションを１つ増やすだけで、新たなステーションを出発元とし、既存の各ステーションを到着先とする２つのステーション群と、既存の各ステーションを出発元とし、新たなステーションを到着先とする２つのステーション群とが、出発元および到着先の２つのステーションとして増える。そのため、ステーションの総数が多くなると、出発元および到着先の２つのステーションの数が膨大となり、それに伴って、多数の走行データを予め記憶手段に記憶しなければならず、予め記憶手段に記憶しておく走行データの量が増大してしまうという問題点があった。
【０００６】
本発明は、上述した問題点を解決するためになされたものであり、ステーションの総数が多い場合でも、走行データを生成するために予め記憶手段に記憶しておくデータ量を抑制できる走行データ生成装置を提供することを目的としている。
【課題を解決するための手段および発明の効果】
【０００７】
請求項１記載の走行データ生成装置によれば、複数のステーションのうち隣設する２つのステーション毎に、一方のステーションから他方のステーションに向けて出発するように無人搬送車両を走行させる出発データが出発データ記憶手段に記憶され、複数のステーションのうち隣設する２つのステーション毎に、一方のステーションから走行してきて他方のステーションで停止するように無人搬送車両を走行させる到着データが到着データ記憶手段に記憶されている。また、複数のステーションのうち隣設する３つのステーション毎に、一のステーションを挟む２つのステーションの一方から他方に向けて、その一のステーションを通過するように無人搬送車両を走行させる通過データが通過データ記憶手段に記憶されている。そして、出発データ記憶手段に記憶されている一の出発データと、到着データ記憶手段に記憶されている一の到着データと、通過データ記憶手段に記憶されている少なくとも一以上の通過データとが走行データ生成手段により組み合わされて、走行データが生成される。よって、新たなステーションを増やす場合には、新たなステーションを含む隣設する２つのステーション毎に、出発データおよび到着データを作成して、出発データ記憶手段および到着データ記憶手段に追加すれば良い。また、新たなステーションを含む隣設する３つのステーション毎に、通過データを作成して、通過データ記憶手段に追加すれば良い。即ち、新たなステーションを増やす場合には、新たなステーションを含む隣設する２つのステーションと、新たなステーションを含む隣設する３つのステーションとに関するデータを作成して、記憶手段に追加すれば良いので、追加するデータ量を抑制できる。従って、ステーションの総数が多い場合でも、走行データを生成するために予め記憶手段に記憶しておくデータ量を抑制できるという効果がある。
【０００８】
請求項２記載の走行データ生成装置によれば、請求項１記載の走行データ生成装置の奏する効果に加え、次の効果を奏する。即ち、取得手段によって行先指令が取得される度に、その取得した行先指令に基づいて、無人搬送車両を到着させる到着ステーションで無人搬送車両を停止させる一の到着データが到着データ記憶手段から到着データ特定手段により特定される。そして、到着データ特定手段によって特定される一の到着データに従って無人搬送車両が到着ステーションで停止する前に、新たに取得手段によって行先指令が取得されると、その取得された行先指令に基づいて到着ステーションを通過させる通過データが、通過データ記憶手段から通過データ特定手段により特定される。すると、到着データ特定手段によって特定される一の到着データに替えて、通過データ特定手段によって特定された通過データを組み合わせた走行データが、走行データ生成手段により生成される。よって、無人搬送車両が到着ステーションで停止する前であれば、到着ステーションを変更できるので、無人搬送車両の走行経路や行先を自由に変更できる。従って、無人搬送車両の走行経路の状況などの外的要因に合わせて、無人搬送車両を効率良く運行させることができるという効果がある。
【０００９】
請求項３記載の走行データ生成装置によれば、請求項１又は２記載の走行データ生成装置の奏する効果に加え、次の効果を奏する。即ち、無人搬送車両を出発させる出発ステーションと、その出発ステーションの次に無人搬送車両が通行するステーションとの２つのステーションが、第１特定手段により行先指令に基づいて特定されると、その２つのステーションに対応する一の出発データが、出発データ記憶手段から第１抽出手段により抽出される。また、無人搬送車両が通行する一連のステーションの中から隣設する３つのステーションが、一つずつステーションをずらしながら通過順に第２特定手段により、行先指令に基づいて特定されると、その３つのステーション毎に、その３つのステーションに対応する通過データが、通過データ記憶手段から第２抽出手段により抽出される。また、無人搬送車両を到着させる到着ステーションと、その到着ステーションの一つ前に無人搬送車両が通過するステーションとの２つのステーションが第３特定手段により、行先指令に基づいて特定されると、その２つのステーションに対応する一の到着データが、到着データ記憶手段から第３抽出手段により抽出される。そして、第１抽出手段によって抽出された一の出発データと、第２抽出手段によって抽出された各通過データと、第３抽出手段によって抽出された一の到着データとが、走行データ生成手段により組み合わされて走行データが生成される。よって、行先指令により指示される無人搬送車両を通行させるステーションから、出発データ、通過データ、および到着データを単純な処理で抽出することができる。従って、制御的負担を軽減できるという効果がある。
【図面の簡単な説明】
【００１０】
【図１】（ａ）は、無人搬送車両の側面図であり、（ｂ）は、無人搬送車両の底面図であり、（ｃ）は、無人搬送車両の走行装置の拡大斜視図である。
【図２】（ａ）は、無人搬送車両の走行経路全体を模式的に示す平面図であり、（ｂ）は、走行経路における分岐点周辺の拡大図である。
【図３】無人搬送車両の電気的構成を模式的に示すブロック図である。
【図４】（ａ）は、動作情報リンクテーブルの内容の一例を示す模式図であり、（ｂ）は、動作コマンドテーブルの内容の一例を示す模式図であり、（ｃ）は、動作コマンドの種別の一例を示す模式図である。
【図５】（ａ）は、操舵角設定テーブルの内容の一例を示す模式図であり、（ｂ）は、操舵角設定テーブルの各マス目ごとに設定される複数の定数の一例を示す模式図である。
【図６】操舵角設定テーブルの各マス目ごとに設定される各定数の算出方法の一例を説明するための説明図である。
【図７】操舵角設定テーブルの各マス目ごとに設定される各定数の算出方法の一例を説明するための説明図である。
【図８】制御装置で実行される自動運転処理を示すフローチャートである。
【図９】制御装置で実行される動作コマンド設定処理を示すフローチャートである。
【図１０】制御装置で実行される動作コマンド生成処理を示すフローチャートである。
【図１１】動作コマンド設定処理の流れを説明するための説明図である。
【図１２】動作コマンド設定処理の流れを説明するための説明図である。
【図１３】制御装置で実行される操舵角自動設定処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図１（ａ）は、無人搬送車両１の側面図であり、図１（ｂ）は、無人搬送車両１の底面図であり、図１（ｃ）は、無人搬送車両１の走行装置５の拡大斜視図である。尚、本実施形態では、図１（ａ），（ｂ）において、図面に向かった左方向を無人搬送車両１の前方とし、図面に向かった右方向を無人搬送車両１の後方とする。また、図１（ａ），（ｂ）では、無人搬送車両１の前後方向を矢印Ｙにより図示し、左右方向を矢印Ｘにより図示している。
【００１２】
無人搬送車両１は、無人搬送車両１の運行制御を行う上位プロコン（非図示）から通知されてくる行先指令に基づいて、走行経路Ｒ（図２（ａ）参照）上を自動運転により無人で走行し、更に、その走行経路Ｒ上に設置されている複数のステーションＣのうち、指令されたステーションＣにおいて積載される積載物を、指令されたステーションＣまで搬送するものである。
【００１３】
図１（ａ），（ｂ）に示すように、無人搬送車両１は、積載物が積載される荷台２と、荷台２を支持するシャーシ３と、シャーシ３の下部に設置された走行装置５ａ〜５ｌと、磁気ガイド検出センサ７９ａ〜７９ｄと、磁気マーク検出センサ８０ａ〜８０ｄと、ＩＤタグ検出センサ８１と、制御装置７０とを主に有して構成されている。
【００１４】
走行装置５ａ〜５ｌは、図１（ｂ）に示すように、シャーシ３の下部において、無人搬送車両１の前後方向に６列、各列の左右方向に２個の計１２個設けられている。尚、前後方向に６列設けられた走行装置５ａ〜５ｌを列番号で示す場合、無人搬送車両１の前面に最も近い列（５ａおよび５ｂ）を１列目（最前列）と記載し、それ以降は、無人搬送車両１の後方に向かって順番に、２列目、・・・、６列目（最終列）と記載する。
【００１５】
各走行装置５ａ〜５ｌは、１本の車軸６ａと、車軸６ａの両端に連結された２つの車輪６ｂとをそれぞれ有し、各車軸６ａは、車輪６ｂと共に前転または後転、また、シャーシ３に対して旋回するように構成されている。
【００１６】
これらの各走行装置５ａ〜５ｌには、車軸６ａに回転駆動力を付与して車輪６ｂを回転させる回転駆動装置７６ａ〜７６ｌ（図３参照）と、車軸６ａを旋回させて車軸６ａに操舵角を付与する操舵駆動装置７７ａ〜７７ｌ（図３参照）とが、それぞれ個別に接続されている。
【００１７】
本実施形態では、無人搬送車両１の前後方向（矢印Ｙ方向）と、車軸６ａに対する垂線とがなす角度を、その車軸６ａの操舵角としている。具体的には、無人搬送車両１の前後方向（矢印Ｙ方向）に対して車軸６ａが垂直な場合に、その車軸６ａの操舵角が０度となり、その状態から、車軸６ａが時計回りに旋回すると、操舵角がプラス方向に増え、車軸６ａが反時計回りに旋回すると、操舵角がマイナスに方向に増える（図６，図７参照）。
【００１８】
回転駆動装置７６ａ〜７６ｌは、車軸６ａに回転駆動力を付与する回転モータ７６ａ１〜７６ｌ１（図３参照）を有し、操舵駆動装置７７ａ〜７７ｌは、車軸６ａを旋回させる回転モータ７７ａ１〜７７ｌ１（図３参照）を有している。本実施形態では、制御装置７０からの指令によって、走行装置５ａ〜５ｌごとに、車軸６ａの前転後転や旋回が制御される。
【００１９】
また、各走行装置５ａ〜５ｌには、車輪６ｂの走行速度を検出する走行速度センサ７８ａ〜７８ｌ（図３参照）がそれぞれ設けられており、車輪６ｂ走行速度は、各走行装置５ａ〜５ｌごとに、それぞれ個別に制御装置７０へ出力される（図３参照）。
【００２０】
また、図１（ｂ），（ｃ）に示すように、各走行装置５ａ〜５ｌのうち、走行装置５ａ，５ｂ，５ｋ，５ｌには、車軸６ａの中央部分から無人搬送車両１の前面側に向かって、車軸６ａに対して垂直に、磁気ガイド検出センサ７９ａ，７９ｂ，７９ｃ，７９ｄが設置されている。この磁気ガイド検出センサ７９ａ〜７９ｄは、設置されている走行装置５ａ，５ｂ，５ｋ，５ｌの車軸６ａが旋回すると、その車軸６ａと同様に旋回する。尚、磁気ガイド検出センサ７９ａ〜７９ｄの機能などについては、図２を参照しつつ後述する。
【００２１】
また、図１（ｂ）に示すように、磁気マーク検出センサ８０ａ〜８０ｄは、無人搬送車両１の前方および後方の底面であって、その左右方向の両端にそれぞれ１つずつ、計４個設けられている。また、ＩＤタグ検出センサ８１は、無人搬送車両１の前方の底面であって、左右方向の中央に１つ設けられている。尚、磁気マーク検出センサ８０ａ〜８０ｄおよびＩＤタグ検出センサ８１の機能などについても、図２を参照しつつ後述する。
【００２２】
制御装置７０は、各種センサ７８ａ〜７８ｌ，７９ａ〜７９ｄ，８０ａ〜８０ｄ，８１の状態を検出すると共に、上位プロコン（非図示）から通知されてくる行先指令に基づいて、回転駆動装置７６ａ〜７６ｌ（図３参照）や、操舵駆動装置７７ａ〜７７ｌなどを制御して、無人搬送車両１を自動運転させる装置である。
【００２３】
本実施形態では、無人搬送車両１の運転モードとして、自動モードと、手動モードとの２つのモードが設けられており、制御装置７０の電源が投入されると、通常は自動モードに設定される。制御装置７０は、無人搬送車両１の運転モードが自動モードの場合、上位プロコンから通知されてくる行先指令に基づいて、無人搬送車両１を自動運転させる。一方、手動モードの場合、手動ペンダント（所謂、手動操作リモコン）による指令に基づいて、無人搬送車両１を走行させる。
【００２４】
次に、図２（ａ），（ｂ）を参照して、無人搬送車両１の走行経路Ｒについて説明する。図２（ａ）は、無人搬送車両１の走行経路Ｒ全体を模式的に示す平面図であり、図２（ｂ）は、走行経路Ｒにおける分岐点周辺（図１（ａ）の領域ＩＩｂ）の拡大図である。
【００２５】
図２（ａ）に示すように、無人搬送車両１の走行経路Ｒ全体は、８の字状に形成されており、無人搬送車両１を走行させる路面などに走行経路Ｒとして敷設された帯状の磁気ガイドＧと、その磁気ガイドＧ上に所定間隔で設けられたステーションＣとにより構成されている。
【００２６】
上述した磁気ガイド検出センサ７９ａ〜７９ｄは、磁気ガイドＧを検出するセンサ素子を２８個備えた検出部を有しており、検出部のどの領域で磁気ガイドＧが検出されているのかなどの検出結果を制御装置７０（図３参照）に出力する。
【００２７】
この２８個のセンサ素子は、車軸６ａに対して平行となるように一列に配置されており、その一列の長さは、磁気ガイドＧの横幅よりも十分広く設けられている。例えば、２８個のセンサ素子と、磁気ガイドＧ全体とが垂直に交差していれば、一列に並ぶ２８個のセンサ素子の中の数個のセンサにより磁気ガイドＧが検出される。
【００２８】
制御装置７０は、運転モードとして右倣いモードが設定されている場合、各磁気ガイド検出センサ７９ｂ，７９ｄから出力されている検出結果を取得する一方、運転モードとして左倣いモードが設定されている場合、各磁気ガイド検出センサ７９ａ，７９ｃから出力されている検出結果を取得する。
【００２９】
そして、取得した検出結果に基づいて、無人搬送車両１と磁気ガイドＧとの位置ずれを算出し、その位置ずれを補正する（減少させる）ように、即ち、無人搬送車両１が磁気ガイドＧ上を走行するように進行方向などを制御する。より具体的には、制御装置７０は、検出結果を取得した磁気ガイド検出センサ７９ａ〜７９ｄの検出部の中央に、磁気ガイドＧが収まるように、無人搬送車両１の進行方向を制御する。
【００３０】
ステーションＣは、無人搬送車両１に対して積載物の積み降ろしが行われる位置や、無人搬送車両１が別の無人搬送車両１の通過を待つ位置や、無人搬送車両１が走行経路Ｒ上にある自動シャッタや自動扉の開放を待つ位置などである。
【００３１】
図２（ａ）に示すように、各ステーションＣには、それぞれ個別に名称「Ｃ＊＊＊」（尚、「＊＊＊」は、３桁の数字）が付されている。以後、ステーションＣを個別に特定する場合には、ステーションＣ名をそのまま記載する。例えば、「Ｃ２０１」という名称のステーションＣを示す場合には、「Ｃ２０１」と記載する。
【００３２】
また、図２（ａ）では、「Ｃ２０１」や「Ｃ２２０」や「Ｃ２５１」に、それぞれ無人搬送車両１が配備されている状態を示している。本実施形態では、各無人搬送車両１の配車など、各無人搬送車両１の運行制御については上位プロコン（非図示）により管理される。
【００３３】
それぞれの無人搬送車両１は、定期的（例えば、数秒毎に）に上位プロコンに対して、走行中であるか待機中であるかや、走行中であれば走行位置や、待機中であれば待機位置などを通知する。上位プロコンは、無人搬送車両１同士が走行経路Ｒ上で出会って立ち往生したり、無人搬送車両１が別の無人搬送車両１に追突しないように、各無人搬送車両１に対して行先指令を通知する。
【００３４】
また、図２（ｂ）に示すように、走行経路Ｒ上の各ステーションＣには、磁気ガイドＧと同様に、矩形板状の磁気マークＭと、コイン状のＩＤタグＩＴとが配設されている。また、走行経路Ｒにおける分岐点にも、同様に磁気マークＭが配設されている。
【００３５】
磁気マークＭは、走行経路Ｒ上における各ステーションＣや、分岐点などに配置されるものであり、無人搬送車両１の停止位置や、右折位置や、左折位置などの基準位置を、制御装置７０が確認するためのものである。上述した磁気マーク検出センサ８０ａ〜８０ｄは、磁気マークＭを検出しているか否かを制御装置７０（図３参照）に出力するセンサであり、制御装置７０は、磁気マークＭが検出された場合に、無人搬送車両１が何れかのステーションＣに到着した、または、走行経路Ｒにおける分岐点に差し掛かったと判別する。
【００３６】
ＩＤタグＩＴは、走行経路Ｒ上の各ステーションＣをそれぞれ個別に識別するための識別情報（例えば、ステーションＣの名称）が記憶されたものである。ＩＤタグ検出センサ８１は、ＩＤタグＩＴとの距離が接近している間（例えば、数１０ｃｍ以内）、そのＩＤタグＩＴに記憶されている識別情報を非接触（例えば、電磁誘導方式など）で読み取って、制御装置７０へ出力するセンサである。
【００３７】
制御装置７０は、磁気マーク検出センサ８０ａ〜８０ｄにより磁気マークが検出されていると共に、ＩＤタグ検出センサ８１によりＩＤタグＩＴの識別情報が検出されていれば、その検出された識別情報に対応するステーションＣに、無人搬送車両１が到着したと判別する。
【００３８】
次に、図３を参照して、無人搬送車両１の電気的構成について説明する。制御装置７０は、無人搬送車両１に搭載されている装置であり、無人搬送車両１が有する各種装置や、無人搬送車両１の走行状態などを制御するものである。制御装置７０は、ＣＰＵ７１、フラッシュメモリ７２、及び、ＲＡＭ７３を備え、これらがバスライン７４を介して入出力ポート７５にそれぞれ接続されている。
【００３９】
入出力ポート７５には、上述した回転駆動装置７６ａ〜７６ｌと、操舵駆動装置７７ａ〜７７ｌと、走行速度検出センサ７８ａ〜７８ｌと、磁気ガイド検出センサ７９ａ〜７９ｄと、磁気マーク検出センサ８０ａ〜８０ｄと、ＩＤタグ検出センサ８１とに加えて、無線通信装置８２とが主に接続されている。
【００４０】
ＣＰＵ７１は、バスライン７４により接続された各部を制御する演算装置である。フラッシュメモリ７２は、ＣＰＵ７１により実行されるプログラムや固定値データ等を格納した書き換え可能な不揮発性のメモリである。尚、後述する図８のフローチャートに示す自動運転処理、図９のフローチャートに示す動作コマンド設定処理、図１０のフローチャートに示す動作コマンド生成処理、及び、図１３のフローチャートに示す操舵角自動設定処理を実行する各プログラムは、このフラッシュメモリ７２に格納されている。
【００４１】
また、フラッシュメモリ７２には、動作情報リンクテーブル７２ａと、動作コマンドテーブル７２ｂと、操舵角設定テーブル７２ｃとが設けられている。ここで、図４を参照して、動作情報リンクテーブル７２ａおよび動作コマンドテーブル７２ｂについて説明する。
【００４２】
図４（ａ）は、動作情報リンクテーブル７２ａの内容の一例を示す模式図であり、図４（ｂ）は、動作コマンドテーブル７２ｂの内容の一例を示す模式図であり、図４（ｃ）は、動作コマンドの種別の一例を示す模式図である。
【００４３】
動作情報リンクテーブル７２ａは、上位プロコンから通知された行先指令に対応する動作コマンド列を制御装置７０が生成する場合に、後述する動作コマンドテーブル７２ｂと共に制御装置７０により参照されるテーブルである。
【００４４】
行先指令は、出発地点となるステーションＣから到着地点となるステーションＣまでの各ステーションＣを走行順に並べたデータ（以後、「ステーションＣ列」と称す）で構成されており、出発地点となるステーションＣが「Ｃ２０１」であり、到着地点となるステーションＣが「Ｃ２０３」の場合には、「Ｃ２０１→Ｃ２０２→Ｃ２０３」という行先指令が、上位プロコンから無人搬送車両１へ通知される。
【００４５】
また、動作コマンドは、無人搬送車両１の走行制御を行うために制御装置７０が実行する命令であり、無人搬送車両１の制御内容に応じて複数種類設けられている（図４（ｃ）参照）。制御装置７０は、これらの動作コマンドを組み合わせて、上位プロコンより通知された行先指令に対応する動作コマンド列を生成し、その後、その生成した動作コマンド列の各動作コマンドを１つずつ順番に実行して、出発地点となるステーションＣから到着地点となるステーションＣまで無人搬送車両１を走行させる。尚、行先指令から動作コマンド列を生成する方法については後述する。
【００４６】
動作情報リンクテーブル７２ａは、図４（ａ）に示すように、走行経路Ｒ上で隣設する３つのステーションＣの組み合わせと、その組み合わせに対応する動作情報データ番号列とに加え、走行経路Ｒ上で隣設する２つのステーションＣの組み合わせと、その組み合わせに対応する動作情報データ番号列とにより構成されている。
【００４７】
ここで、隣設する３つのステーションＣの組み合わせは、無人搬送車両１が直近に通過する予定のステーションＣ（以後、「前回位置」と称す）と、無人搬送車両１が存在する予定のステーションＣ（以後、「現在位置」と称す）と、無人搬送車両１が次に通過する予定のステーションＣ（以後、「次回位置」と称す）とにより構成されている。
【００４８】
以後、説明を簡単にするために、隣設する３つのステーションＣの組み合わせを記載する場合には、「前回位置，現在位置，次回位置」という順序で各ステーションＣを記載する。例えば、前回位置が「Ｃ２０１」、現在位置が「Ｃ２０２」、次回位置が「Ｃ２０３」であれば、「Ｃ２０１，Ｃ２０２，Ｃ２０３」と記載する。尚、この組み合わせは、無人搬送車両１がＣ２０１からＣ２０２までの走行を終え、引き続き、Ｃ２０２からＣ２０３へ向かって走行することを意味する。
【００４９】
ところで、本実施形態では、隣設する３つのステーションＣの組み合わせを構成する場合に、前回位置や次回位置が存在しないため、その組み合わせを構成できないことがある。即ち、無人搬送車両１が現在位置で指令待ちの状態（以後、「待機中」と称す）から、新たに走行開始する場合には、前回位置が存在しない。また、無人搬送車両１が自動運転を行っている状態（以後、「自動運転中」と称す）であるものの、現在位置で停車し、それ以後は待機中となる場合には、次回位置が存在しない。
【００５０】
よって、このような場合には、走行経路Ｒ上で隣接する２つのステーションＣの組み合わせしか構成できない。そこで、本実施形態では、「前回位置」や「次回位置」が存在せず、２つのステーションＣの組み合わせしか構成できない場合には、「前回位置」や「次回位置」に、「該当なし」という意味で「０」を記載する。
【００５１】
例えば、「０，Ｃ２０１，Ｃ２０２」というステーションＣの組み合わせは、Ｃ２０１で待機中であった無人搬送車両１が、Ｃ２０１から走行開始してＣ２０２へ向かうことを意味する。また、例えば、「Ｃ２０１，Ｃ２０２，０」というステーションＣの組み合わせは、無人搬送車両１がＣ２０１からＣ２０２までの走行を終えて、Ｃ２０２で停車し、それ以後は待機中になることを意味する。
【００５２】
動作情報データ番号列は、動作情報データ番号が１以上連なって構成されている。尚、詳細については後述するが、各動作情報データ番号には、後述する動作コマンドテーブル７２ｂ（図４（ｂ）参照）において、複数の動作コマンドで構成される動作コマンド列がそれぞれ設定されている。
【００５３】
上述したように、動作情報データ番号列は、隣設する３つのステーションＣの組み合わせに応じて設定されており、例えば、図４（ａ）に示すように、「０，Ｃ２０１，Ｃ２０２」というステーションＣの組み合わせには、「１１，２２，２０８，９９，１１２，３１」という動作情報データ番号列が対応づけられている。尚、この番号列に対応する動作コマンド列が制御装置７０により実行されると、Ｃ２０１で待機中であった無人搬送車両１が、Ｃ２０１からＣ２０２まで走行する。
【００５４】
また、例えば、「Ｃ２０３，Ｃ２０４，Ｃ２０５」というステーションＣの組み合わせには、「６７，２１２，９９，１１４，３１」という動作情報データ番号列が対応づけられている。尚、この番号列に対応する動作コマンド列が制御装置７０により実行されると、Ｃ２０３からＣ２０４まで走行してきた無人搬送車両１が、引き続き、Ｃ２０４からＣ２０５まで走行する。以下、その他のステーションＣの組み合わせについても同様な説明となるので、その説明は省略する。
【００５５】
本実施形態では、走行経路Ｒ全体と、その走行経路Ｒ上に配置するステーションＣとが決定された段階で、その走行経路Ｒに応じた動作情報リンクテーブル７２ａが、無人搬送車両１の開発元（提供元）などより事前に作成される。より具体的には、動作情報リンクテーブル７２ａを作成するために、走行経路Ｒ上に配置されるステーションＣの中から、隣設する３つのステーションＣの組み合わせが全て求められて、各組み合わせごとに、その組み合わせに対応する動作情報データ番号列を設定するという作業が行われる。同様に、走行経路Ｒ上に配置されるステーションＣの中から、隣設する２つのステーションＣの組み合わせが全て求められて、各組み合わせごとに、その組み合わせに対応する動作情報データ番号列を設定するという作業が行われる。
【００５６】
これに対して、従来の無人搬送車両の場合にも同様に、動作情報リンクテーブルが作成されていたが、後述するように、ステーションＣの組み合わせを総当たりで求めていたため、そのサイズは本実施形態よりも大きいものとなっていた。即ち、従来の無人搬送車両用の動作情報リンクテーブルを作成する場合には、まず、走行経路Ｒ上に配置されるステーションＣのうち、１つのステーションＣを現在位置とし、その現在位置を除く残りのステーションＣの１つを次回位置とする２つのステーションＣの組み合わせが求められる。加えて、現在位置はそのまま変えずに、その現在位置と、先に組み合わせた１つのステーションを除く残りの各ステーションＣをそれぞれ次回位置とする２つのステーションＣの組み合わせについても、全て求められる。
【００５７】
そして、以下同様に、走行経路Ｒ上に配置される各ステーションＣをそれぞれ現在位置とする場合についても、現在位置と、次回位置との２つのステーションＣの組み合わせが全て求められる。その後、各組み合わせごとに、その組み合わせに対応する動作情報データ番号列を設定するという作業が行われる。
【００５８】
このように、従来の無人搬送車両用の動作情報リンクテーブルでは、ステーションＣの組み合わせを、総当たりで求めていたため、動作情報リンクテーブルのサイズが大きくなっていた。また、ステーションＣの組み合わせが多いため、その組み合わせに対応する動作情報データ番号列の設定が煩雑であり、入力ミスを招き易かった。また、走行経路Ｒ上のステーションＣ数を増減する場合には、動作情報リンクテーブルを全体的に修正しなければならないので、修正作業が煩雑であった。
【００５９】
これに対して、本実施形態では、動作情報リンクテーブル７２ａを事前に作成する場合に、走行経路Ｒ上に配置されるステーションＣの中から、隣設する３つのステーションＣの組み合わせと、隣設する２つのステーションＣの組み合わせとについて、その組み合わせを全て求めて、その各組み合わせに対応する動作情報データ番号列を設定している。よって、求める組み合わせの数が少ないため、従来の無人搬送車両用の動作情報リンクテーブルよりも、そのサイズを小さくできる。また、走行経路Ｒ上のステーションＣ数を増減する場合には、動作情報リンクテーブル７２ａのうち、増減させるステーションＣを含む３つのステーションＣの組み合わせと、増減させるステーションＣを含む２つのステーションＣの組み合わせとについてのみ修正を行い、その各組み合わせに対応する動作情報データ番号列を設定し直せば良いので、修正作業が容易である。
【００６０】
また、上述したように、本実施形態では、「前回位置，現在位置，次回位置」というステーションＣの組み合わせから、無人搬送車両１を「現在位置」から「次回位置」まで走行させるための動作コマンド列を取得するように構成している。
【００６１】
よって、「前回位置」から「次回位置」までの走行経路Ｒが直線であるか、カーブしているか、又は、屈折しているかなどの走行条件に応じて、「現在位置」から「次回位置」までの無人搬送車両１の走行状態を適切に設定できる。
【００６２】
即ち、「前回位置」から「次回位置」までの走行経路Ｒが直線の場合、無人搬送車両１は走行速度を落とさずに「前回位置」から「次回位置」まで走行できる。このような場合、本実施形態では、「前回位置」から「現在位置」まで走行してきた無人搬送車両１の走行速度を維持して、引き続き、無人搬送車両１を「現在位置」から「次回位置」まで走行させるように動作コマンド列を設定している。これにより、「前回位置」から「次回位置」までの走行速度の変化を抑制できるので、無人搬送車両１をスムーズに走行させられる。
【００６３】
また、「前回位置」から「現在位置」までの走行経路Ｒがカーブ、又は、屈折していれば、無人搬送車両１は走行速度を落としつつ、「前回位置」から「現在位置」まで走行してくる。その後、「現在位置」から「次回位置」までの走行経路Ｒが直線になるのであれば、本実施形態では、無人搬送車両１の走行速度を上昇させつつ、無人搬送車両１を「現在位置」から「次回位置」まで走行させるように動作コマンド列を設定している。
【００６４】
一方、「現在位置」から「次回位置」までの走行経路Ｒがカーブ、又は、屈折しているのであれば、そのカーブや屈折に応じて、無人搬送車両１の走行速度を維持したり、更に、走行速度を落として、無人搬送車両１を「現在位置」から「次回位置」まで走行させるように動作コマンド列を設定している。これにより、「前回位置」から「次回位置」までの走行経路Ｒの形状に応じて、無人搬送車両１を適切な走行速度で走行させられる。
【００６５】
次に、図４（ｂ）を参照して、動作コマンドテーブル７２ｂについて説明する。動作コマンドテーブル７２ｂは、上位プロコンから通知された行先指令に対応する動作コマンド列を制御装置７０が生成する場合に、上述した動作情報リンクテーブル７２ａと共に制御装置７０により参照されるテーブルである。
【００６６】
この動作コマンドテーブル７２ｂは、図４（ｂ）に示すように、動作情報データ番号と、その動作情報データ番号に対応する動作コマンド列とにより構成されている。例えば、動作情報データ番号「１」には、１番目の動作コマンドとして「９１０１Ｈ−００００Ｈ」が対応づけられており、２番目の動作コマンドとして「０１０１Ｈ−１００１Ｈ」が対応づけられている。尚、その他の動作情報データ番号についても同様な説明となるので、その説明は省略する。
【００６７】
各動作コマンドは、２ワード（本実施形態の１ワードは２バイト）単位で構成されており、１ワード目の上位バイトには、コマンドの種別を示すコマンドコードが設定される。また、１ワード目の下位バイトと、２ワード目全体とには、コマンドのパラメータを示すデータが設定される。例えば、動作コマンド「９１０１Ｈ−００００Ｈ」であれば、「９１Ｈ」がコマンドコードとなり、「０１Ｈ−００００Ｈ」がパラメータを示すデータとなる。
【００６８】
次に、図４（ｃ）を参照して、動作コマンドの種別の一例について説明する。図４（ｃ）に示すように、本実施形態では、無人搬送車両１の制御内容に応じて、動作コマンドが個別に設けられており、各動作コマンドごとに、コマンドコードが個別に設定されている。
【００６９】
例えば、進行方向設定を実行する動作コマンドには、コマンドコードとして「０１Ｈ」が設定されており、走行速度設定を実行する動作コマンドには、コマンドコードとして「１２Ｈ」が設定されている。尚、その他の動作コマンドについても同様な説明となるので、その説明は省略する。
【００７０】
ここで、図３の説明に戻る。操舵角設定テーブル７２ｃは、１２個の各走行装置５ａ〜５ｌに対して設定すべき操舵角を決定するためのテーブルであり、無人搬送車両１の自動運転中に、定期的（例えば、５ｍｓ毎）に制御装置７０により参照される。尚、この操舵角設定テーブル７２ｃは、無人搬送車両１の開発元（提供元）などより事前に作成されるものである。
【００７１】
ここで、図５を参照して、操舵角設定テーブル７２ｃについて説明する。図５（ａ）は、操舵角設定テーブル７２ｃの内容の一例を示す模式図であり、図５（ｂ）は、操舵角設定テーブル７２ｃの各マス目ごとに設定される複数の定数の一例を示す模式図である。
【００７２】
図５（ａ）に示すように、操舵角設定テーブル７２ｃは、前側操舵角θｆおよび後側操舵角θｂの組み合わせと、その組み合わせに基づいて予め算出された複数の定数とにより構成されている。
【００７３】
前側操舵角θｆおよび後側操舵角θｂは、制御装置７０において用いられる基準値（基準操舵角）であり、検出結果を取得した磁気ガイド検出センサ７９ａ〜７９ｄの検出部の中央に磁気ガイドＧが収まるように、各走行装置５ａ〜５ｌにおける各車軸６ａの操舵角を制御するために、制御装置７０が用いる値である。
【００７４】
上述したように、制御装置７０では、運転モードとして右倣いモードが設定されている場合、各磁気ガイド検出センサ７９ｂ，７９ｄから出力されている検出結果が取得される。すると、制御装置７０では、磁気ガイド検出センサ７９ｂの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｂの操舵角が、前側操舵角θｆとして算出される。また、磁気ガイド検出センサ７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｌの操舵角が、後側操舵角θｂとして算出される。
【００７５】
尚、ここで算出される前側操舵角θｆおよび後側操舵角θｂは、あくまでも、制御装置７０が操舵角設定テーブル７２ｃを参照するための基準操舵角なので、走行装置５ｂおよび走行装置５ｌに対して設定される操舵角と一致するとは限らない。
【００７６】
一方、制御装置７０では、運転モードとして左倣いモードが設定されている場合、各磁気ガイド検出センサ７９ａ，７９ｃから出力されている検出結果が取得される。すると、制御装置７０では、磁気ガイド検出センサ７９ａの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ａの操舵角が、前側操舵角θｆとして算出される。また、磁気ガイド検出センサ７９ｃの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｋの操舵角が、後側操舵角θｂとして算出される。
【００７７】
尚、ここで算出される前側操舵角θｆおよび後側操舵角θｂについても、走行装置５ａおよび走行装置５ｋに対して設定される操舵角と一致するとは限らない。また、前側操舵角θｆおよび後側操舵角θｂの算出方法は、磁気ガイド検出センサ７９ａ〜７９ｄ毎に変わるものではなく、共通であり、前側操舵角θｆおよび後側操舵角θｂの値は、単に、検出結果に応じて決まる。
【００７８】
操舵角設定テーブル７２ｃは、前側操舵角θｆの範囲を０〜８９度とし、後側操舵角θｂの範囲を−８９〜８９度とし、更に、前側操舵角θｆおよび後側操舵角θｂを１度単位で漏れなく組み合わせたものである。尚、図５（ａ）に示すテーブル７２ｃでは、各マス目に対応する複数の定数について、その記載を省略している。
【００７９】
上述したように、車軸６ａの操舵角は、プラスの角度だけではなく、マイナスの角度も有るため、前側操舵角θｆの範囲も、後側操舵角θｂと同様に、０度を中心として、プラスおよびマイナスの範囲（−８９度〜８９度の範囲）に角度を設定しておく必要がある。しかしながら、本実施形態では、前側操舵角θｆの範囲を０度〜８９度としている。これは、操舵角設定テーブル７２ｃの大きさを小さくするためであり、その詳細については後述する。
【００８０】
操舵角設定テーブル７２ｃを構成する一のマス目（即ち、前側操舵角θｆおよび後側操舵角θｂの一の組み合わせ）に対応する複数の定数は、図５（ｂ）に示すように、１２個の走行装置５ａ〜５ｌに対して設定すべき操舵角θ１〜θ１２と、１２個の走行装置５ａ〜５ｌに対して設定すべき各走行速度Ｖ１〜Ｖ１２を算出するための走行速度比率Ｖａ１〜Ｖａ１２とにより構成されている。
【００８１】
ここで、操舵角θ１は、無人搬送車両１の左側最前列の走行装置５ａに設けられている車軸６ａの操舵角を示し、操舵角θ２は、無人搬送車両１の右側最前列の走行装置５ｂに設けられている車軸６ａの操舵角を示す。以下同様に、操舵角θ３〜θ１２のそれぞれは、走行装置５ｃ〜５ｌに設けられている各車軸６ａの操舵角をそれぞれ示す。
【００８２】
また、走行速度比率Ｖａ１は、無人搬送車両１の左側最前列の走行装置５ａに設けられている車軸６ａの走行速度Ｖ１を算出するための走行速度比率を示し、走行速度比率Ｖａ２は、無人搬送車両１の右側最前列の走行装置５ｂに設けられている車輪６ｂの走行速度Ｖ２を算出するための走行速度比率を示している。
【００８３】
以下同様に、走行速度比率Ｖａ３〜Ｖａ１２のそれぞれは、走行装置５ｃ〜５ｌの各車輪６ｂの走行速度Ｖ３〜Ｖ１２を算出するための走行速度比率をそれぞれ示す。尚、これらの走行速度比率Ｖａ１〜Ｖａ１２は、無人搬送車両１が目標とすべき走行速度である基準走行速度Ｖを基準（即ち、「１」）とした場合の比率である。
【００８４】
この基準走行速度Ｖは、走行経路Ｒ上の隣接する２つのステーションＣ単位で予め定められている。言い換えれば、走行経路Ｒを各ステーションＣ毎に区切った場合の各区間毎に予め定められている。
【００８５】
上述したように、本実施形態では、隣接する２つのステーションＣの組み合わせ、および、隣設する３つのステーションＣの組み合わせに応じて、動作情報データ番号列が設定されており、基準走行速度Ｖは、この動作情報データ番号列を構成する一部の番号により指定される。基準走行速度Ｖを指定するための動作コマンドが制御装置７０により実行されると、指定された基準走行速度Ｖで無人搬送車両１が走行するように、走行装置５ａ〜５ｌに設けられている各車輪６ｂの走行速度が制御される。
【００８６】
尚、走行装置５ａ〜５ｌに対して設定すべき各車輪６ｂの走行速度Ｖ１〜Ｖ１２は、基準走行速度Ｖに対して、走行速度比率Ｖａ１〜Ｖａ１２を乗算することで算出できる。例えば、走行装置５ａに対して設定すべき、走行装置５ａの車輪６ｂの走行速度Ｖ１は、基準走行速度Ｖに、走行速度比率Ｖａ１を乗算して算出する。
【００８７】
ここで、図６および図７を参照して、各操舵角θ１〜θ１２、および、各走行速度比率Ｖａ１〜Ｖａ１２の算出方法について説明する。図６および図７は、操舵角設定テーブルの各マス目ごとに設定される各定数の算出方法の一例を説明するための説明図である。
【００８８】
図６では、無人搬送車両１の前後方向を矢印Ｙにより図示し、左右方向を矢印Ｘで図示し、無人搬送車両１の旋回中心を点Ｏとして図示している。また、図７では、図６における各走行装置５ａ〜５ｌをそれぞれ個別に図示している。また、図６に示すように、無人搬送車両１の最前列に設けられている走行装置５ａ，５ｂの車軸６ａと、無人搬送車両１の最終列に設けられている走行装置５ｋ，５ｌの車軸６ａとの距離を第１ホイールベースＢ１とする。
【００８９】
また、無人搬送車両１の２列目に設けられている走行装置５ｃ，５ｄの車軸６ａと、無人搬送車両１の５列目に設けられている走行装置５ｉ，５ｊの車軸６ａとの距離を第２ホイールベースＢ２とし、無人搬送車両１の３列目に設けられている走行装置５ｅ，５ｆの車軸６ａと、無人搬送車両１の４列目に設けられている走行装置５ｇ，５ｈの車軸６ａとの距離を第３ホイールベースＢ３とする。
【００９０】
また、無人搬送車両１の右側に設けられている走行装置５ｂ，５ｄ，５ｆ，５ｈ，５ｊ，５ｌの車軸６ａと、無人搬送車両１の左側に設けられている走行装置５ａ，５ｃ，５ｅ，５ｇ，５ｉ，５ｋの車軸６ａとの距離を、トレッドＴとする。尚、ホイールベースＢ１〜Ｂ３、及び、トレッドＴは、無人搬送車両１の設計時に定められる固有値である。
【００９１】
ここで、無人搬送車両１の左右方向（図中の矢印Ｘ方向）の距離であって、無人搬送車両１の右側に設けられている走行装置５ｂ，５ｄ，５ｆ，５ｈ，５ｊ，５ｌの車軸６ａと、旋回中心Ｏとの距離を距離Ａとした場合に、前側操舵角θｆおよび後側操舵角θｂが一意に決まれば、その距離Ａは、
Ａ＝Ｂ１÷（Ｔａｎ（θｆ）＋Ｔａｎ（θｂ））
により算出できる。
【００９２】
そして、この距離Ａが決まれば、以下の計算式により各操舵角θ１〜θ１２を算出できる。
【００９３】
θ１＝Ｔａｎ−１（（Ｔａｎ（θｆ）×Ａ）÷（Ａ＋Ｔ））
θ２＝θｆ
θ３＝Ｔａｎ−１（（（Ｔａｎ（θｆ）×Ａ）−（（Ｂ１−Ｂ２）÷２））÷（Ａ＋Ｔ））
θ４＝Ｔａｎ−１（（（Ｔａｎ（θｆ）×Ａ）−（（Ｂ１−Ｂ２）÷２））÷Ａ）
θ５＝Ｔａｎ−１（（（Ｔａｎ（θｆ）×Ａ）−（（Ｂ１−Ｂ３）÷２））÷（Ａ＋Ｔ））
θ６＝Ｔａｎ−１（（（Ｔａｎ（θｆ）×Ａ）−（（Ｂ１−Ｂ３）÷２））÷Ａ）
θ７＝Ｔａｎ−１（（（Ｔａｎ（θｂ）×Ａ）−（（Ｂ１−Ｂ３）÷２））÷（Ａ＋Ｔ））
θ８＝Ｔａｎ−１（（（Ｔａｎ（θｂ）×Ａ）−（（Ｂ１−Ｂ３）÷２））÷Ａ）
θ９＝Ｔａｎ−１（（（Ｔａｎ（θｂ）×Ａ）−（（Ｂ１−Ｂ２）÷２））÷（Ａ＋Ｔ））
θ１０＝Ｔａｎ−１（（（Ｔａｎ（θｂ）×Ａ）−（（Ｂ１−Ｂ２）÷２））÷Ａ）
θ１１＝Ｔａｎ−１（（Ｔａｎ（θｂ）×Ａ）÷（Ａ＋Ｔ））
θ１２＝θｂ
また、図６に示すように、旋回中心Ｏから、無人搬送車両１の左側最前列に設けられている走行装置５ａの車軸６ａまでの直線距離を旋回半径Ｒ１とし、旋回中心Ｏから、無人搬送車両１の右側最前列に設けられている走行装置５ｂの車軸６ａまでの直線距離をＲ２とする。以下同様に、旋回中心Ｏから、各走行装置５ｃ〜５ｌの車軸６ａまでの直線距離を、それぞれ旋回半径Ｒ３〜Ｒ１２とする。
【００９４】
これらの各旋回半径Ｒ１〜Ｒ１２は、各操舵角θ１〜θ１２が決まれば、以下の計算式により算出できる。
【００９５】
Ｒ１＝（Ａ＋Ｔ）÷Ｃｏｓ（θ１）
Ｒ２＝Ａ÷Ｃｏｓ（θ２）
Ｒ３＝（Ａ＋Ｔ）÷Ｃｏｓ（θ３）
Ｒ４＝Ａ÷Ｃｏｓ（θ４）
Ｒ５＝（Ａ＋Ｔ）÷Ｃｏｓ（θ５）
Ｒ６＝Ａ÷Ｃｏｓ（θ６）
Ｒ７＝（Ａ＋Ｔ）÷Ｃｏｓ（θ７）
Ｒ８＝Ａ÷Ｃｏｓ（θ８）
Ｒ９＝（Ａ＋Ｔ）÷Ｃｏｓ（θ９）
Ｒ１０＝Ａ÷Ｃｏｓ（θ１０）
Ｒ１１＝（Ａ＋Ｔ）÷Ｃｏｓ（θ１１）
Ｒ１２＝Ａ÷Ｃｏｓ（θ１２）
そして、各旋回半径Ｒ１〜Ｒ１２が決まれば、その各旋回半径Ｒ１〜Ｒ１２の中から、最も値の大きい最大旋回半径Ｒｍａｘを求めることができ、その結果、以下の計算式により各走行速度比率Ｖａ１〜Ｖａ１２を算出できる。
【００９６】
Ｖａ１＝Ｒ１÷Ｒｍａｘ
Ｖａ２＝Ｒ２÷Ｒｍａｘ
Ｖａ３＝Ｒ３÷Ｒｍａｘ
Ｖａ４＝Ｒ４÷Ｒｍａｘ
Ｖａ５＝Ｒ５÷Ｒｍａｘ
Ｖａ６＝Ｒ６÷Ｒｍａｘ
Ｖａ７＝Ｒ７÷Ｒｍａｘ
Ｖａ８＝Ｒ８÷Ｒｍａｘ
Ｖａ９＝Ｒ９÷Ｒｍａｘ
Ｖａ１０＝Ｒ１０÷Ｒｍａｘ
Ｖａ１１＝Ｒ１１÷Ｒｍａｘ
Ｖａ１２＝Ｒ１２÷Ｒｍａｘ
上述したように、本実施形態では、前側操舵角θｆの範囲を０〜８９度とし、後側操舵角θｂの範囲を−８９〜８９度とし、更に、前側操舵角θｆおよび後側操舵角θｂを１度単位で漏れなく組み合わせたテーブル７２ｃを、事前に作成している。このテーブル７２ｃを作成する場合には、上述した計算式を用いることで、テーブル７２ｃの各マス目ごとに、各操舵角θ１〜θ１２、及び、各走行速度比率Ｖａ１〜Ｖａ１２を予め算出できる。
【００９７】
制御装置７０は、磁気ガイド検出センサ７９ａ〜７９ｄの検出結果に基づいて、前側操舵角θｆおよび後側操舵角θｂを算出した場合に、前側操舵角θｆがプラスの角度であれば、そのまま、その算出した前側操舵角θｆおよび後側操舵角θｂに対応する各操舵角θ１〜θ１２、及び、各走行速度比率Ｖａ１〜Ｖａ１２を、操舵角設定テーブル７２ｃの中から取得する。
【００９８】
一方、前側操舵角θｆがマイナスの角度であれば、一旦、前側操舵角θｆおよび後側操舵角θｂにそれぞれ−１を乗じて、前側操舵角θｆの符号をプラスにする。そして、−１乗じた前側操舵角θｆおよび後側操舵角θｂに対応する各操舵角θ１〜θ１２、及び、各走行速度比率Ｖａ１〜Ｖａ１２を、操舵角設定テーブル７２ｃの中から取得する。そして、その取得した各操舵角θ１〜θ１２については、それぞれ−１を乗じ、その結果得られた各操舵角θ１〜θ１２を、無人搬送車両１における走行装置５ａ〜５ｌの各列単位で、左右入れ替える。
【００９９】
即ち、−１を乗じて得られた操舵角θ２（操舵角の入れ替え前のθ２）は、各列における操舵角の入れ替えによって、走行装置５ａの操舵角θ１となる。同様に、左右入れ替え前の操舵角θ１は、各列における操舵角の入れ替えによって、走行装置５ｂの操舵角θ２となる。その他の操舵角θ３〜θ１２についても同様に、走行装置５ｃ〜５ｌの各列単位で、左右入れ替える。
【０１００】
また、各走行速度比率Ｖａ１〜Ｖａ１２については、単に、走行装置５ａ〜５ｌの各列単位で、左右入れ替える。即ち、左右入れ替え前の走行速度比率Ｖａ２は、各列における走行速度比率の入れ替えによって、走行装置５ａの走行速度比率Ｖａ１となる。同様に、左右入れ替え前の走行速度比率Ｖａ１は、走行速度比率の入れ替えによって、走行装置５ｂの走行速度比率Ｖａ２となる。その他の走行速度比率Ｖａ３〜Ｖａ１２についても同様に、走行装置５ｃ〜５ｌの各列単位で、左右入れ替える。
【０１０１】
本実施形態では、無人搬送車両１の前後方向（矢印Ｙ方向）に対し、車軸６ａが垂直な状態を０度としているので、絶対値が同一で、符号だけ異なる操舵角については、無人搬送車両１の前後方向（矢印Ｙ方向）を基準として、車軸６ａが左右対称に回転しているだけである。即ち、単に、符号が反転しているだけの違いしかない。
【０１０２】
よって、仮に、前側操舵角θｆの範囲を−８９〜０度とし、後側操舵角θｂの範囲を−８９〜８９度とする操舵角設定テーブルを設けたとしても、そのテーブルは、単に、前側操舵角θｆの範囲を０〜８９度とし、後側操舵角θｂの範囲を−８９〜８９度としている操舵角設定テーブル７２ｃにおいて、前側操舵角θｆおよび各操舵角θ１〜θ１２の符号を反転させただけのものとなる。従って、冗長なテーブルを設けることになってしまう。
【０１０３】
そこで、本実施形態では、前側操舵角θｆの範囲を０〜８９度とし、後側操舵角θｂの範囲を−８９〜８９度とした操舵角設定テーブル７２ｃだけを設けておき、磁気ガイド検出センサ７９ａ〜７９ｄの検出結果に基づいて算出された前側操舵角θｆがマイナスの角度の場合は、一旦、前側操舵角θｆおよび後側操舵角θｂにそれぞれ−１を乗じて、前側操舵角θｆの符号をプラスにして操舵角設定テーブル７２ｃを用い、最後に、取得した操舵角θ１〜θ１２に対してそれぞれ−１を乗じている。このように、本実施形態では、操舵角設定テーブル７２ｃの大きさを小さくしているので、記憶領域の消費を抑制できる。
【０１０４】
ここで、図３の説明に戻る。ＲＡＭ７３は、ＣＰＵ７１が制御プログラムの実行時に各種のワークデータやフラグ等を書き換え可能に記憶するためのメモリである。ＲＡＭ７３には、動作コマンドバッファメモリ７３ａと、コマンド実行ポインタ７３ｂと、指令バッファメモリ７３ｃと、新規コマンドポインタ７３ｄと、上書開始ポインタ７３ｅと、基準操舵角メモリ７３ｆと、基準走行速度メモリ７３ｇとが設けられている。
【０１０５】
動作コマンドバッファメモリ７３ａは、上位プロコンから通知された行先指令に対応する動作コマンド列を記憶するためのメモリである。無人搬送車両１の待機中に上位プロコンから行先指令が通知され、その行先指令が制御装置７０により受信された場合、動作コマンドバッファメモリ７３ａはクリアされる。その後、制御装置７０では、受信した行先指令に基づいて、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒ上を無人搬送車両１に走行させるための動作コマンド列が生成されて、それらが動作コマンドバッファメモリ７３ａの先頭から実行順に記憶される。
【０１０６】
本実施形態では、無人搬送車両１が既に自動運転中であっても、その無人搬送車両１に対して上位プロコンから、再度、行先指令が通知される場合がある。例えば、出発地点となるステーションＣから、目的地点となるステーションＣまで無人搬送車両１を走行させたいが、その走行経路Ｒ上に別の無人搬送車両１が存在していて通行できない場合である。
【０１０７】
ここで、その一例を具体的に説明する。例えば、ステーション「Ｃ２０１」（図２（ａ）参照）で待機している無人搬送車両１を、ステーション「Ｃ２０３」まで走行させる予定であるが、ステーション「Ｃ２０３」には、現在、別の無人搬送車両１が存在しているとする。この場合、上位プロコンは、１回目の行先指令として、ステーション「Ｃ２０１」からステーション「Ｃ２０２」まで無人搬送車両１を走行させるための行先指令を、待機中の無人搬送車両１に対して通知する。
【０１０８】
そして、ステーション「Ｃ２０３」に存在していた別の無人搬送車両１が移動し、ステーション「Ｃ２０３」へ進入可能になったら、上位プロコンは、２回目の行先指令として、ステーション「Ｃ２０２」からステーション「Ｃ２０３」まで無人搬送車両１を走行させるための行先指令を、無人搬送車両１に対して通知する。このように、上位プロコンは、目的地点となるステーションＣまで無人搬送車両１を走行させたいが、その走行経路Ｒ上に別の無人搬送車両１が存在しており、途中で無人搬送車両１を進行させることができなくなる場合、進行可能なステーションＣまで無人搬送車両１を走行させるための行先指令を、無人搬送車両１に対して通知する。そして、先に進行できるようになる度に、進行可能になったステーションＣまで無人搬送車両１を走行させるための行先指令を、無人搬送車両１に対して通知する。
【０１０９】
また、本実施形態では、到着地点となるステーションＣが途中で変更される場合にも、上位プロコンから、再度、行先指令が通知される。例えば、待機中の無人搬送車両１に対して、上位プロコンから１回目の行先指令が通知され、その行先指令に従って無人搬送車両１が走行開始した後に、到着地点となるステーションＣが上位プロコンにおいて変更されたとする。このような場合、上位プロコンは、その変更された到着地点となるステーションＣまで無人搬送車両１を走行させるための行先指令を、無人搬送車両１に対して通知する。
【０１１０】
尚、本実施形態では、上位プロコンから無人搬送車両１に対して行先指令が通知される度に、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒ上に並ぶステーションＣが、３つ単位で通知される場合の一例を以下で説明する。即ち、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒ上に並ぶステーションＣが、４以上であれば、上位プロコンから複数回に渡って行先指令が通知される場合の一例を以下で説明する。
【０１１１】
具体的には、まず、出発地点から到着地点までの走行経路Ｒ上に並ぶ各ステーションＣのうち、出発地点から到着地点に向かって連続して並ぶ３つのステーションＣが、１回目の行先指令として、上位プロコンから無人搬送車両１に対して通知される。
【０１１２】
次に、直近に通知された３つのステーションＣのうち、最後のステーションＣを先頭とし、そこから到着地点に向かって連続して並ぶ３つのステーションＣが、次の行先指令として無人搬送車両１に通知される。尚、次の行先指令の通知タイミングは、遅くとも、直近の行先指令の示す到着地点に、無人搬送車両１が停車する前に通知される。
【０１１３】
以後同様に、到着地点のステーションＣが行先指令の最後に現れるまで、行先指令が繰り返し無人搬送車両１に通知される。
【０１１４】
例えば、出発地点となるステーションＣが「Ｃ２０１」であり、到着地点となるステーションＣが「Ｃ２０４」であって、出発地点から到着地点までの走行経路Ｒ上に４つのステーションＣが並んでいる場合には、まず始めに「Ｃ２０１→Ｃ２０２→Ｃ２０３」という行先指令が、上位プロコンから無人搬送車両１へ通知される。次に、「Ｃ２０３→Ｃ２０４」という行先指令が、上位プロコンから無人搬送車両１へ通知される。
【０１１５】
無人搬送車両１の自動運転中に上位プロコンから次の行先指令が通知され、その行先指令が制御装置７０により受信された場合、制御装置７０では、その次の行先指令に対応する動作コマンド列が生成されて、それらが動作コマンドバッファメモリ７３ａに追加される。これにより、制御装置７０では、メモリ７３ａに既に記憶されている動作コマンド列に加えて、新たに追加された動作コマンド列も実行される。その結果、制御装置７０は、次の行先指令により示される到着地点まで無人搬送車両１を走行させることができる。
【０１１６】
つまり、無人搬送車両１が到着地点となるステーションＣに到着し、停車する前であれば、到着地点を変更できるので、無人搬送車両１の走行経路Ｒや行先を自由に変更できる。従って、無人搬送車両１が走行する走行経路Ｒの混雑状況などの外的要因に合わせて、無人搬送車両１を効率よく運行させることができる。
【０１１７】
コマンド実行ポインタ７３ｂは、動作コマンドバッファメモリ７３ａに記憶されている動作コマンド列の中で、制御装置７０が次に実行すべき一の動作コマンドの記憶位置を示すものである。無人搬送車両１の待機中に、上位プロコンから通知される行先指令が制御装置７０により受信された場合、コマンド実行ポインタ７３ｂは、動作コマンドバッファメモリ７３ａに記憶されている先頭の動作コマンドの記憶位置を示すように初期化される（図９のＳ１４参照）。
【０１１８】
制御装置７０は、無人搬送車両１を走行させる場合、動作コマンドバッファメモリ７３ａの中から、コマンド実行ポインタ７３ｂにより示される一の動作コマンドを取得して、その動作コマンドを実行する。そして、実行された動作コマンドが終了した場合、次に実行すべき一の動作コマンドの記憶位置がコマンド実行ポインタ７３ｂにより示されるように、コマンド実行ポインタ７３ｂを更新する。制御装置７０は、動作コマンドバッファメモリ７３ａの中に実行すべき動作コマンドが他にも残っている間（即ち、動作コマンドを全て実行するまで）、コマンド実行ポインタ７３ｂにより示される動作コマンドの取得と、コマンド実行ポインタ７３ｂの更新とを繰り返す。
【０１１９】
指令バッファメモリ７３ｃは、上位プロコンから通知された行先指令が記憶されるメモリである。無人搬送車両１の待機中に、上位プロコンから通知される行先指令が制御装置７０により受信された場合、指令バッファメモリ７３ｃはクリアされ、更に、その受信された行先指令が、指令バッファメモリ７３ｃの先頭から順番に記憶される。
【０１２０】
例えば、無人搬送車両１の待機中に、「Ｃ２０１→Ｃ２０２→Ｃ２０３」という行先指令が制御装置７０により受信された場合には、指令バッファメモリ７３ｃの先頭から「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣ列が順番に記憶される（図１１（ａ）参照）。
【０１２１】
一方、詳細については後述するが、無人搬送車両１の自動運転中に上位プロコンから次の行先指令が通知されて、その行先指令が制御装置７０により受信された場合、制御装置７０では、今回受信された行先指令が、指令バッファメモリ７３ｃに追加される。
【０１２２】
尚、この場合は、既に記憶されている行先指令の中の最後のステーションＣと、今回受信した行先指令の先頭のステーションＣとが同一となるため、今回受信した行先指令を、指令バッファメモリ７３ｃに記憶されている行先指令の中の最後のステーションＣの位置から順番に上書きしている（図１２（ａ）参照）。
【０１２３】
例えば、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３」という行先指令が既に記憶されており、その内容に従って無人搬送車両１が自動運転を行っている場合に、「Ｃ２０３→Ｃ２０４」という行先指令が制御装置７０により受信されると、その行先指令が、指令バッファメモリ７３ｃにおいて「Ｃ２０３」が記憶されている位置から上書きされる。その結果、最終的には、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４」というステーションＣ列が記憶される。
【０１２４】
新規コマンドポインタ７３ｄは、行先指令に対応する動作コマンド列が制御装置７０において新たに生成された後、その新たな動作コマンド列を動作コマンドバッファメモリ７３ａに記憶する場合に、その記憶位置を示すものである。
【０１２５】
無人搬送車両１の待機中に、上位プロコンから通知される行先指令が制御装置７０により受信された場合、新規コマンドポインタ７３ｄは、動作コマンドバッファメモリ７３ａの先頭を示すように初期化される（図９のＳ１４参照）。
【０１２６】
そして、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄにより示される位置に動作コマンド列が記憶されると、新規コマンドポインタ７３ｄは、次の動作コマンド列を書き込む位置を示すように設定される（図１０のＳ３７参照）。
【０１２７】
上書開始ポインタ７３ｅは、無人搬送車両１の自動運転中に上位プロコンから次の行先指令が通知されて、その行先指令が制御装置７０により受信され、その次の行先指令に対応する動作コマンド列を動作コマンドバッファメモリ７３ａに追加して記憶する場合に、その追加位置を示すものである。
【０１２８】
基準操舵角メモリ７３ｆは、基準操舵角である前側操舵角θｆおよび後側操舵角θｂを記憶するためのメモリであり、前側操舵角θｆを記憶するための前側操舵角メモリ７３ｆ１と、後側操舵角θｂを記憶するための後側操舵角メモリ７３ｆ２とを有している。
【０１２９】
制御装置７０において、磁気ガイド検出センサ７９ａ，７９ｂの検出結果に基づいて、前側操舵角θｆが算出されると、その算出された前側操舵角θｆが、前側操舵角メモリ７３ｆ１に記憶される。また、磁気ガイド検出センサ７９ｃ，７９ｄの検出結果に基づいて、後側操舵角θｂが算出されると、その算出された後側操舵角θｂが、後側操舵角メモリ７３ｆ２に記憶される。
【０１３０】
前側操舵角メモリ７３ｆ１の値と、後側操舵角メモリ７３ｆ２の値とは、定期的（例えば、５ｍｓ毎）にＣＰＵ７１により更新される。そして、１２個の走行装置５ａ〜５ｌに対して設定すべき操舵角θ１〜θ１２や走行速度Ｖ１〜Ｖ１２を算出する場合などに、ＣＰＵ７１により用いられる。
【０１３１】
基準走行速度メモリ７３ｇは、無人搬送車両１が目標とすべき走行速度である基準走行速度Ｖを記憶するためのメモリである。上述したように、基準走行速度Ｖは、走行経路Ｒを各ステーションＣ毎に区切った場合の各区間毎に予め定められている。基準走行速度メモリ７３ｇの値は、無人搬送車両１がステーションＣを通過する度に、ＣＰＵ７１により更新される。そして、１２個の走行装置５ａ〜５ｌに対して設定すべき走行速度Ｖ１〜Ｖ１２を算出する場合などに、ＣＰＵ７１により用いられる。
【０１３２】
無線通信装置８２は、上位プロコンとの間で、無線通信によるデータ通信を行うための既知の回路であり、行先指令や、走行中であるか待機中であるかや、走行中であれば走行位置や、待機中であれば待機位置などのデータ通信が行われる。
【０１３３】
次に、図８を参照して、制御装置７０で実行される自動運転処理について説明する。図８は、自動運転処理を示すフローチャートである。この処理は、無人搬送車両１を自動運転させるための処理であり、無人搬送車両１の運転モードが自動モードに設定されている間、繰り返し実行される。尚、この処理が実行開始される場合、無人搬送車両１は初期状態として待機中になるものとする。
【０１３４】
まず、ＣＰＵ７１は、ＲＡＭ７３のコマンド実行ポインタ７３ｂと、新規コマンドポインタ７３ｄとを比較し、それぞれの示す記憶位置が異なっているかを判別する（Ｓ１）。Ｓ１の判別が否定される場合は（Ｓ１：Ｎｏ）、実行すべき動作コマンドがない場合なので待機する。一方、Ｓ１の判別が肯定される場合は（Ｓ１：Ｙｅｓ）、実行すべき動作コマンドがある場合なので、コマンド実行ポインタ７３ｂにより示される一の動作コマンドを、動作コマンドバッファメモリ７３ａから取得する（Ｓ２）。
【０１３５】
次に、ＣＰＵ７１は、Ｓ２の処理で取得した一の動作コマンドを実行する（Ｓ３）。本実施形態では、動作コマンドが実行された場合、その動作コマンドに対応する制御（図４（ｃ）参照）が制御装置７０により実行されて、無人搬送車両１の走行状態が制御される。
【０１３６】
次に、ＣＰＵ７１は、Ｓ３の処理で実行した動作コマンドに対応する処理が、制御装置７０において終了したかを判定する（Ｓ４）。Ｓ４の判別が否定される場合（Ｓ４：Ｎｏ）、実行中の処理が終了するまで待機する。一方、Ｓ４の判別が肯定される場合（Ｓ４：Ｙｅｓ）、ＣＰＵ７１は、次に取得すべき一の動作コマンドをコマンド実行ポインタ７３ｂが示すように、コマンド実行ポインタ７３ｂを設定（更新）する（Ｓ５）。
【０１３７】
次に、ＣＰＵ７１は、動作コマンドバッファメモリ７３ａに記憶されている動作コマンドを全て取得したかを判別し（Ｓ６）、Ｓ６の判別が肯定される場合は（Ｓ６：Ｙｅｓ）、動作コマンドバッファメモリ７３ａに記憶されている動作コマンドを全て実行した場合であり、その結果、無人搬送車両１が出発地点から到着地点までの走行経路Ｒ上を走行し終えて、待機中となった場合である。よって、この場合は、Ｓ１の処理へ戻る。
【０１３８】
一方、Ｓ６の判別が否定される場合は（Ｓ６：Ｎｏ）、動作コマンドバッファメモリ７３ａの中に、まだ取得していない動作コマンドが残っている場合なので、Ｓ２の処理に戻る。Ｓ２の処理に戻った後は、動作コマンドバッファメモリ７３ａに記憶されている動作コマンドが全て実行されるまで、Ｓ２〜Ｓ６の処理が繰り返し実行される。その結果、出発地点から到着地点までの走行経路Ｒ上を走行するための動作コマンドが１つずつ順番に制御装置７０により実行されて、最終的に無人搬送車両１が到着地点まで走行し、停車して待機中となる。
【０１３９】
次に、図９を参照して、制御装置７０で実行される動作コマンド設定処理について説明する。図９は、動作コマンド設定処理を示すフローチャートである。この処理は、上位プロコンから行先指令が通知された場合に、その行先指令に従って無人搬送車両１が走行するように各種設定を行うための処理であり、無人搬送車両１の運転モードが自動モードに設定されている間、繰り返し実行される。
【０１４０】
まず、ＣＰＵ７１は、上位プロコンから通知される行先指令を受信したかを判別する（Ｓ１１）。Ｓ１１の判別が否定される場合は（Ｓ１１：Ｎｏ）、行先指令を受信するまで待機する。一方、Ｓ１１の判別が肯定される場合（Ｓ１１：Ｙｅｓ）、ＣＰＵ７１は、無人搬送車両１が自動運転中であるかを判別する（Ｓ１２）。
【０１４１】
Ｓ１２の判別が否定される場合（Ｓ１２：Ｎｏ）、ＣＰＵ７１は、ＲＡＭ７３の動作コマンドバッファメモリ７３ａをクリアし（Ｓ１３）、コマンド実行ポインタ７３ｂおよび新規コマンドポインタ７３ｄが共に、動作コマンドバッファメモリ７３ａの先頭を示すように設定する（Ｓ１４）。
【０１４２】
次に、ＣＰＵ７１は、ＲＡＭ７３の指令バッファメモリ７３ｃをクリアして（Ｓ１５）、今回受信した行先指令（即ち、ステーションＣ列）を指令バッファメモリ７３ｃに記憶する（Ｓ１６）。そして、ＣＰＵ７１は、変数ｉを０に設定し（Ｓ１７）、動作コマンド生成処理を実行する（Ｓ１８）。
【０１４３】
ここで、図１０〜図１２を参照して、制御装置７０で実行される動作コマンド生成処理について説明する。図１０は、動作コマンド生成処理を示すフローチャートであり、図１１および図１２は、動作コマンド設定処理の流れを説明するための説明図である。
【０１４４】
この動作コマンド生成処理は、指令バッファメモリ７３ｃに記憶されている行先指令に対応する動作コマンド列を生成し、その生成した動作コマンド列を動作コマンドバッファメモリ７３ａに書き込むための処理である。尚、上述したように、行先指令は、出発地点となるステーションＣから到着地点となるステーションＣまでの各ステーションＣを走行順に並べたステーションＣ列で構成されている。
【０１４５】
まず、ＣＰＵ７１は、指令バッファメモリ７３ｃに記憶されているステーションＣ列のうち、（ｉ−１）番目、ｉ番目、及び（ｉ＋１）番目の各ステーションＣを取得する（Ｓ３１）。尚、指令バッファメモリ７３ｃでは、先頭に記憶されているステーションＣを０番目とし、それ以降は、１番目、２番目、・・・、という順序で、各ステーションＣが順番に記憶されているものとする。
【０１４６】
次に、ＣＰＵ７１は、変数ｉが０であるかを判別し（Ｓ３２）、Ｓ３２の判別が肯定される場合には（Ｓ３２：Ｙｅｓ）、前回位置が「該当なし（即ち、「０」）」、現在位置が「ｉ番目のステーションＣ」、次回位置が「（ｉ＋１）番目のステーションＣ」というステーションＣの組み合わせを生成する（Ｓ３３）。
【０１４７】
そして、ＣＰＵ７１は、Ｓ３３の処理で生成した組み合わせに対応する動作情報データ番号列を、動作情報リンクテーブル７２ａから取得し（Ｓ３４）、その取得した動作情報データ番号列の先頭の番号から各番号の並び順に、その番号に対応する動作コマンド列を、動作コマンドテーブル７２ｂから取得する（Ｓ３５）。
【０１４８】
次に、ＣＰＵ７１は、Ｓ３５の処理で取得した各動作コマンド列を、新規コマンドポインタ７３ｄの示す位置を開始位置として、動作コマンドバッファメモリ７３ａに書き込み（Ｓ３６）、新規コマンドポインタ７３ｄが次の動作コマンド列を書き込む位置を示すように、新規コマンドポインタ７３ｄを設定（更新）する（Ｓ３７）。
【０１４９】
尚、上述したように、無人搬送車両１の待機中に行先指令を受信した場合には、動作コマンド設定処理（図９参照）において、Ｓ１７の処理が実行されて変数ｉが０に設定され、その後、この動作コマンド生成処理が実行される。
【０１５０】
この場合に、例えば、図１１（ａ）に示すように、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣ列が記憶されているとする。ここで、Ｓ３１の処理が実行されると、０番目のステーションＣとして「Ｃ２０１」が取得され、１番目のステーションＣとして「Ｃ２０２」が取得される。尚、−１番目のステーションＣ、即ち、（ｉ−１）番目のステーションＣは存在しないので取得されない。
【０１５１】
次に、Ｓ３２の処理が実行されると、Ｓ３２：Ｙｅｓへ分岐し、Ｓ３３の処理が実行される。すると、「０，Ｃ２０１，Ｃ２０２」というステーションＣの組み合わせが生成される。
【０１５２】
そして、上述したように、動作情報リンクテーブル７２ａ（図４（ａ）参照）では、「０，Ｃ２０１，Ｃ２０２」というステーションＣの組み合わせに対して、「１１，２２，…，３１」という動作情報データ番号列が対応づけられている。よって、次に、Ｓ３４の処理が実行されると、その「１１，２２，…，３１」という動作情報データ番号列が取得される。
【０１５３】
次に、Ｓ３５の処理が実行されて、その動作情報データ番号列に対応する各動作コマンド列が、上述した動作コマンドテーブル７２ｂ（図４（ｂ）参照）から取得される。例えば、動作情報データ番号列が「１１，２２，…、３１」であれば、まず始めに、「１１」に対応する３つの動作コマンドが取得され、次に、「２２」に対応する４つの動作コマンドが取得され、以下同様に、各動作情報データ番号に対応する動作コマンドが取得され、最後に「３１」に対応する２つの動作コマンドが取得される。
【０１５４】
その後、Ｓ３６の処理が実行されると、Ｓ３５の処理で取得された各コマンド列が、図１１（ｂ）に示すように、動作コマンドバッファメモリ７３ａに記憶される。更に、Ｓ３７の処理が実行されると、新規コマンドポインタ７３ｄが次の書き込み位置を示すように更新される。
【０１５５】
Ｓ３７の処理が終了したら、次に、ＣＰＵ７１は、ｉ番目のステーションＣが、指令バッファメモリ７３ｃに記憶されているステーションＣ列のうち、最後のステーションＣであるかを判別する（Ｓ３８）。例えば、図１１（ａ）に示すように、指令バッファメモリ７３ｃに３つのステーションＣが記憶されている場合には、変数ｉが２の場合に、最後のステーションＣであると判別される。
【０１５６】
Ｓ３８の判別が肯定される場合は（Ｓ３８：Ｙｅｓ）、指令バッファメモリ７３ｃに記憶されているステーションＣ列（行先指令）に対応する全ての動作コマンド列を動作コマンドバッファメモリ７３ａに記憶した場合である。よって、この場合、ＣＰＵ７１は、本処理を終了して、動作コマンド設定処理（図９参照）へ戻る。
【０１５７】
一方、Ｓ３８の判別が否定される場合は（Ｓ３８：Ｎｏ）、変数ｉに１を加算して（Ｓ３９）、Ｓ３１の処理に戻り、Ｓ３１〜Ｓ３８の各処理を繰り返して、残りの動作コマンド列を動作コマンドバッファメモリ７３ａに記憶していく。
【０１５８】
Ｓ３２の判別が否定される場合（Ｓ３２：Ｎｏ）、ＣＰＵ７１は、ｉ番目のステーションＣが、指令バッファメモリ７３ｃに記憶されているステーションＣ列のうち、最後のステーションＣであるかを判別する（Ｓ４０）。
【０１５９】
Ｓ４０の判別が否定される場合は（Ｓ４０：Ｎｏ）、ＣＰＵ７１は、前回位置が「（ｉ−１）番目のステーションＣ」、現在位置が「ｉ番目のステーションＣ」、次回位置が「（ｉ＋１）番目のステーションＣ」というステーションＣの組み合わせを生成し（Ｓ４１）、Ｓ３４の処理へ移行する。
【０１６０】
例えば、図１１（ａ）に示すように、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣ列が記憶されていて、変数ｉの値が１である場合に、Ｓ３１の処理が実行されると、その後、Ｓ３２：ＹｅｓおよびＳ４０：Ｎｏへ分岐して、Ｓ４１の処理が実行される。
【０１６１】
その結果、「Ｃ２０１，Ｃ２０２，Ｃ２０３」というステーションＣの組み合わせが生成され、次に、Ｓ３４〜Ｓ３７の処理が実行される。Ｓ３４〜Ｓ３７の処理では、上述したように、まず、「Ｃ２０１，Ｃ２０２，Ｃ２０３」というステーションＣの組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、図１１（ｃ）に示すように、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。
【０１６２】
これにより、動作コマンドバッファメモリ７３ａには、既に書き込まれている動作コマンド列に続けて、新たに生成された動作コマンド列が追加される。その後、新規コマンドポインタ７３ｄは次の書き込み位置を示すように更新される。
【０１６３】
一方、Ｓ４０の判別が肯定される場合は（Ｓ４０：Ｙｅｓ）、ＣＰＵ７１は、前回位置が「（ｉ−１）番目のステーションＣ」、現在位置が「ｉ番目のステーションＣ」、次回位置が「該当なし（即ち、「０」）」というステーションＣの組み合わせを生成する（Ｓ４２）。
【０１６４】
そして、動作コマンドバッファメモリ７３ａ内の新規コマンドポインタ７３ｄが現在示している位置を、上書開始ポインタ７３ｅが示すように、上書開始ポインタ７３ｅを設定して（Ｓ４３）、Ｓ３４の処理へ移行する。
【０１６５】
例えば、図１１（ａ）に示すように、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣ列が記憶されている場合には、ｉ＝２のステーションＣが、最後のステーションＣとなる。
【０１６６】
よって、この場合に変数ｉの値が２になって、Ｓ３１の処理が実行されると、１番目のステーションＣとして「Ｃ２０２」が取得され、２番目のステーションＣとして「Ｃ２０３」が取得される。尚、３番目のステーションＣ、即ち、（ｉ＋１）番目のステーションＣは存在しないので取得されない。
【０１６７】
その後、Ｓ３２：ＹｅｓおよびＳ４０：Ｙｅｓへ分岐して、Ｓ４２の処理およびＳ４３の処理が実行される。その結果、「Ｃ２０２，Ｃ２０３，０」というステーションＣの組み合わせが生成され、更に、新規コマンドポインタ７３ｄが現在示している位置を、上書開始ポインタ７３ｅが示すように設定される。
【０１６８】
その後、Ｓ３４〜Ｓ３７の処理が実行されると、まず、「Ｃ２０２，Ｃ２０３，０」というステーションＣの組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、図１１（ｄ）に示すように、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。
【０１６９】
その結果、動作コマンドバッファメモリ７３ａには、既に書き込まれている動作コマンド列に続けて、新たに生成された動作コマンド列が追加される。尚、その後、新規コマンドポインタ７３ｄは次の書き込み位置を示すように更新される。
【０１７０】
上述したように、本実施形態では、ｉ番目のステーションＣが、指令バッファメモリ７３ｃ内の最後のステーションＣと判別された場合（Ｓ４０：Ｙｅｓの場合）、次回位置が「該当なし」というステーションＣの組み合わせが生成される。すると、制御装置７０では、無人搬送車両１を最後のステーションＣで停車させて待機させるための動作コマンド列が生成されて、動作コマンドバッファメモリ７３ａに記憶される。
【０１７１】
しかしながら、無人搬送車両１の自動運転中に、次の行先指令を受信した場合には、到着地点となるステーションＣが変更されるため、動作コマンドバッファメモリ７３ａに記憶されている動作コマンド列のうち、無人搬送車両１を停車させるための動作コマンド列は不要となる。
【０１７２】
そこで、本実施形態では、動作コマンドバッファメモリ７３ａに記憶されている動作コマンド列のうち、次の行先指令を受信した場合に不要となる動作コマンド列、即ち、無人搬送車両１を停車させるための動作コマンド列が記憶されている先頭の位置を、上書開始ポインタ７３ｅに記憶させている。そして、次に行先指令を受信した場合には、その次の行先指令に対応する動作コマンド列を、動作コマンドバッファメモリ７３ａのうち、上書開始ポインタ７３ｅにより示される位置と同一の位置から、上書き開始するように構成している。
【０１７３】
これにより、上位プロコンから複数回に分けて行先指令が通知される場合でも、最後に通知された行先指令についてのみ、無人搬送車両１を停車させるための動作コマンド列が動作コマンドバッファメモリ７３ａに残る。よって、無人搬送車両１が最終的な到着地点となるステーションＣへ到着するまでに、無人搬送車両１が停車および発進を繰り返すことを抑制できるので、無人搬送車両１にスムーズに走行させられる。
【０１７４】
以上の図１０に示す動作コマンド生成処理によれば、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒを無人搬送車両１に走行させる動作コマンド列を、隣設する３つのステーションＣの組み合わせと、隣設する２つのステーションＣの組み合わせとから取得できる。よって、無人搬送車両１を走行させるための動作コマンド列を、単純な処理で取得できるので、制御装置７０に掛かる負担を軽減できる。
【０１７５】
ここで、図９の説明に戻る。動作コマンド生成処理（Ｓ１８）が終了した後は、Ｓ１１の処理へ戻る。Ｓ１２の判別が肯定される場合は（Ｓ１２：Ｙｅｓ）、無人搬送車両１が自動運転中に、新たに行先指令を受信した場合である。この場合、ＣＰＵ７１は、新たに受信した行先指令における先頭のステーションＣが、指令バッファメモリ７３ｃに記憶されているステーションＣ列において何番目であるかを算出する（Ｓ１９）。
【０１７６】
次に、ＣＰＵ７１は、Ｓ１９の処理で算出した番号を変数ｉに設定し（Ｓ２０）、ｉ番目のステーションＣが記憶されている位置を開始位置として、新たに受信した行先指令（即ち、ステーションＣ列）を指令バッファメモリ７３ｃに書き込む（Ｓ２１）。これにより、新たに受信された行先指令が、指令バッファメモリ７３ｃのうち、その行先指令の先頭と同一のステーションＣが記憶されている位置から上書きされる。
【０１７７】
そして、ＣＰＵ７１は、上書開始ポインタ７３ｅが現在示している位置を新規コマンドポインタ７３ｄが示すように設定し（Ｓ２２）、上述した動作コマンド生成処理（Ｓ１８）を実行する。
【０１７８】
ここで、動作コマンド生成処理が実行されると、今回受信した行先指令に対応する動作コマンド列が生成され、それらが動作コマンドバッファメモリ７３ａに追加される。そして、動作コマンド生成処理（Ｓ１８）が終了した後は、Ｓ１１の処理に戻る。
【０１７９】
例えば、無人搬送車両１が自動運転中であって、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣ列が記憶されている場合（図１１（ａ）参照）に、「Ｃ２０３→Ｃ２０４」という新たな行先指令を受信したとする。この場合、新たな行先指令の先頭である「Ｃ２０３」は、指令バッファメモリ７３ｃ内において２番目に位置するため、Ｓ１２：Ｙｅｓへ分岐して、Ｓ１９の処理では２番目と算出され、その結果、Ｓ２０の処理では変数ｉに２が設定される。
【０１８０】
そして、Ｓ２１の処理が実行されると、指令バッファメモリ７３ｃ内のうち、新たに受信した行先指令の先頭と同一である「Ｃ２０３」が記憶されている位置から、新たに受信した行先指令「Ｃ２０３→Ｃ２０４」が上書きされる。その結果、図１２（ａ）に示すように、指令バッファメモリ７３ｃには、「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４」というステーションＣ列が記憶される。
【０１８１】
次に、Ｓ２２の処理が実行されると、図１２（ａ）に示すように、上書開始ポインタ７３ｅに記憶させている位置を新規コマンドポインタ７３ｄが示すように設定される。その結果、動作コマンド生成処理（Ｓ１８）が実行されて、新たに受信した行先指令に対応する動作コマンド列が生成された場合に、その生成されたコマンド列が、動作コマンドバッファメモリ７３ａのうち、無人搬送車両１を停車させるための動作コマンド列が記憶されている位置から上書きされ追加される。
【０１８２】
より具体的には、動作コマンド生成処理（Ｓ１８）が実行されると、最初、変数ｉは２に設定された状態で、Ｓ３１，Ｓ３２，Ｓ４０の各処理が順番に実行される。そして、Ｓ３２：ＮｏおよびＳ４０：Ｎｏへ分岐して、Ｓ４１の処理が実行される。その結果、「Ｃ２０２，Ｃ２０３，Ｃ２０４」というステーションＣの組み合わせが生成される。
【０１８３】
その後、Ｓ３４〜Ｓ３７の処理が実行されると、まず、「Ｃ２０２，Ｃ２０３，Ｃ２０４」というステーションＣの組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、図１２（ｂ）に示すように、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置（即ち、図１２（ａ）における上書開始ポインタ７３ｅの示す位置）から上書きされる。
【０１８４】
次に、Ｓ３８の処理が実行されるが、図１２（ａ）に示す例では、ｉ＝３番目のステーションＣが、最後のステーションＣとなるので、Ｓ３８：Ｎｏへ分岐する。そして、Ｓ３９の処理が実行されて、変数ｉに１が加算され、Ｓ３１の処理に戻る。
【０１８５】
そして、次は、変数ｉが３に設定された状態で、Ｓ３１，Ｓ３２，Ｓ４０の各処理が順番に実行され、Ｓ３２：ＮｏおよびＳ４０：Ｙｅｓへ分岐して、Ｓ４２およびＳ４３の各処理が実行される。その後、Ｓ３４〜Ｓ３７の処理が実行されると、まず、「Ｃ２０３，Ｃ２０４，０」というステーションＣの組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、図１２（ｃ）に示すように、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。
【０１８６】
その結果、動作コマンドバッファメモリ７３ａには、既に書き込まれている動作コマンド列に続けて、新たに生成された動作コマンド列が追加される。尚、その後、新規コマンドポインタ７３ｄは次の書き込み位置を示すように更新される。加えて、Ｓ４３の処理も実行されるため、動作コマンドバッファメモリ７３ａのうち、次の行先指令を受信した場合に不要となる動作コマンド列の先頭の位置が、上書開始ポインタ７３ｅにより記憶される。
【０１８７】
以上の図９に示す動作コマンド設定処理によれば、上位プロコンから行先指令が通知された場合に、その行先指令に従って無人搬送車両１が走行するように各種設定を行うことができる。
【０１８８】
尚、上述したように、本実施形態では、上位プロコンから無人搬送車両１に対して行先指令が通知される度に、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒ上に並ぶステーションＣが、３つ単位で通知される場合の一例を説明している。しかしながら、１回の行先指令の通知において、出発地点となるステーションＣから到着地点となるステーションＣまでの走行経路Ｒ上に並ぶステーションＣが全て（又は、４以上）通知される場合でも、当然、本発明を適用できる。
【０１８９】
上述した図９に示す動作コマンド処理、及び、図１０に示す動作コマンド生成処理によれば、１回の行先指令により、３以上のステーションＣが通知される場合でも、その通知された行先指令に対応する動作コマンド列を生成できる。ここで、１回の行先指令により、３以上のステーションＣが通知された場合に、動作コマンド生成処理により実行される処理について説明する。まず、無人搬送車両１の待機中に、１回の行先指令により、３以上のステーションＣが通知された場合について説明する。
【０１９０】
例えば、無人搬送車両１の待機中に、「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４→Ｃ２０５」という行先指令が制御装置７０により受信され、その結果、指令バッファメモリ７３ｃの先頭から「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４→Ｃ２０５」というステーションＣ列が順番に記憶されたとする（図９のＳ１１〜Ｓ１６参照）。すると、変数ｉが０に設定され（図９のＳ１７参照）、その後、動作コマンド生成処理（図９のＳ１８）が実行される。
【０１９１】
ここで、動作コマンド生成処理が実行されると、ｉ＝０なので、「０→Ｃ２０１→Ｃ２０２」というステーションＣの組み合わせが生成され、その生成された組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれ、その後、新規コマンドポインタ７３ｄが、次の書き込み位置を示すように更新される。
【０１９２】
以下同様に、ｉ＝１の場合には、「Ｃ２０１→Ｃ２０２→Ｃ２０３」というステーションＣの組み合わせが、ｉ＝２の場合には、「Ｃ２０２→Ｃ２０３→Ｃ２０４」というステーションＣの組み合わせが、ｉ＝３の場合には、「Ｃ２０３→Ｃ２０４→Ｃ２０５」というステーションＣの組み合わせが、ｉ＝４の場合には、「Ｃ２０４→Ｃ２０５→０」というステーションＣの組み合わせが、それぞれ生成される。
【０１９３】
そして、生成されたステーションＣの組み合わせ毎に、そのステーションＣに対応する動作コマンド列が生成され、その生成された動作コマンド列が、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。更に、生成された動作コマンド列が動作コマンドバッファメモリ７３ａに書き込まれると、その度に、新規コマンドポインタ７３ｄが、次の書き込み位置を示すように更新される。その結果、動作コマンドバッファメモリ７３ａには、「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４→Ｃ２０５」という行先指令に対応する動作コマンド列が記憶される。
【０１９４】
次に、無人搬送車両１が自動運転中に、上位プロコンから新たな行先指令が通知され、その新たな行先指令において、３以上のステーションＣが通知された場合について説明する。
【０１９５】
例えば、無人搬送車両１が自動運転中であって、指令バッファメモリ７３ｃに「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４→Ｃ２０５」というステーションＣ列が記憶されている場合に、「Ｃ２０５→Ｃ２０６→Ｃ２０７→Ｃ２０８→Ｃ２０９」という新たな行先指令を受信したとする。この場合、新たな行先指令の先頭である「Ｃ２０５」は、指令バッファメモリ７３ｃ内において４番目に位置するため、変数ｉに４が設定される（図９のＳ１９，Ｓ２０参照）。
【０１９６】
そして、指令バッファメモリ７３ｃの内のうち、新たに受信した行先指令の先頭と同一である「Ｃ２０５」が記憶されている位置から、新たに受信した行先指令「Ｃ２０５→Ｃ２０６→Ｃ２０７→Ｃ２０８→Ｃ２０９」が上書きされる（図９のＳ２１参照）。その結果、指令バッファメモリ７３ｃには、「Ｃ２０１→Ｃ２０２→Ｃ２０３→Ｃ２０４→Ｃ２０５→Ｃ２０６→Ｃ２０７→Ｃ２０８→Ｃ２０９」というステーションＣ列が記憶される。
【０１９７】
その後、上書開始ポインタ７３ｅに記憶させている位置を新規コマンドポインタ７３ｄが示すように設定されると（図９のＳ２２参照）、動作コマンド生成処理（図９のＳ１８）が実行される。
【０１９８】
ここで、動作コマンド生成処理が実行されると、ｉ＝４なので、「Ｃ２０４→Ｃ２０５→Ｃ２０６」というステーションＣの組み合わせが生成され、その生成された組み合わせに対応する動作コマンド列が生成される。そして、その生成された動作コマンド列が、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。その結果、生成された動作コマンド列が、動作コマンドバッファメモリ７３ａのうち、ステーションＣ２０５で無人搬送車両１を停車させるための動作コマンド列が記憶されている位置から上書きされ追加される。その後、新規コマンドポインタ７３ｄが、次の書き込み位置を示すように更新される。
【０１９９】
そして、ｉ＝５の場合には、「Ｃ２０５→Ｃ２０６→Ｃ２０７」というステーションＣの組み合わせが、ｉ＝６の場合には、「Ｃ２０６→Ｃ２０７→Ｃ２０８」というステーションＣの組み合わせが、ｉ＝７の場合には、「Ｃ２０７→Ｃ２０８→Ｃ２０９」というステーションＣの組み合わせが、ｉ＝８の場合には、「Ｃ２０８→Ｃ２０９→０」というステーションＣの組み合わせが、それぞれ生成される。
【０２００】
そして、生成されたステーションＣの組み合わせ毎に、そのステーションＣに対応する動作コマンド列が生成され、その生成された動作コマンド列が、動作コマンドバッファメモリ７３ａのうち、新規コマンドポインタ７３ｄの示す位置に書き込まれる。更に、生成された動作コマンド列が動作コマンドバッファメモリ７３ａに書き込まれると、その度に、新規コマンドポインタ７３ｄが、次の書き込み位置を示すように更新される。
【０２０１】
その結果、動作コマンドバッファメモリ７３ａには、「Ｃ２０５→Ｃ２０６→Ｃ２０７→Ｃ２０８→Ｃ２０８」という行先指令に対応する動作コマンド列が追加される。より具体的には、動作コマンドバッファメモリ７３ａには、ステーションＣ２０５で無人搬送車両１を停車させずにそのまま通過させ、その後、ステーションＣ２０８で無人搬送車両１を停車させる動作コマンド列が追加される。
【０２０２】
以上説明したように、上述した図９に示す動作コマンド処理、及び、図１０に示す動作コマンド生成処理によれば、１回の行先指令により、３以上のステーションＣが通知される場合でも、無人搬送車両１を走行させるための動作コマンド列を生成できる。
【０２０３】
次に、図１３を参照して、制御装置７０で実行される操舵角自動設定処理について説明する。図１３は、操舵角自動設定処理を示すフローチャートである。この処理は、無人搬送車両１が磁気ガイドＧ上を走行するように、各走行装置５ａ〜５ｌに設けられている車軸６ａの操舵角θ１〜θ１２、および、車輪６ｂの走行速度Ｖ１〜Ｖ１２を設定するための処理であり、無人搬送車両１の運転モードが自動モードに設定されている間、繰り返し実行される。
【０２０４】
まず、ＣＰＵ７１は、無人搬送車両１が走行中であるかを判別する（Ｓ５１）。Ｓ５１の判別が否定される場合は（Ｓ５１：Ｎｏ）、無人搬送車両１が走行中になるまで待機する。一方、Ｓ５１の判別が肯定される場合（Ｓ５１：Ｙｅｓ）、ＣＰＵ７１は、ＲＡＭ７３の基準走行速度メモリ７３ｇから基準走行速度Ｖを取得して（Ｓ５２）、現在設定されている運転モードの種別が、何であるかを判別する（Ｓ５３）。
【０２０５】
Ｓ５３の判別の結果、右倣いモードと判別された場合（Ｓ５３：右倣いモード）、ＣＰＵ７１は、無人搬送車両１の右側最前列および右側最終列の各走行装置５ｂ，５ｌに設けられた各磁気ガイド検出センサ７９ｂ，７９ｄから、磁気ガイドＧの検出結果を取得する（Ｓ５４）。
【０２０６】
次に、ＣＰＵ７１は、右側最前列および右側最終列の各走行装置５ｂ，５ｌごとに、磁気ガイド検出センサ７９ｂ，７９ｄと、磁気ガイドＧとの偏差（横ずれ）を、Ｓ５４の処理で取得した検出結果に基づいて算出する（Ｓ５５）。そして、Ｓ５８の処理へ移行する。
【０２０７】
一方、Ｓ５３の判別の結果、左倣いモードと判別された場合（Ｓ５３：左倣いモード）、ＣＰＵ７１は、無人搬送車両１の左側最前列および左側最終列の各走行装置５ａ，５ｋに設けられた各磁気ガイド検出センサ７９ａ，７９ｃから、磁気ガイドＧの検出結果を取得する（Ｓ５６）。
【０２０８】
次に、ＣＰＵ７１は、左側最前列および左側最終列の各走行装置５ａ，５ｋごとに、磁気ガイド検出センサ７９ａ，７９ｃと、磁気ガイドＧとの偏差（横ずれ）を、Ｓ５６の処理で取得した検出結果に基づいて算出する（Ｓ５７）。そして、Ｓ５８の処理へ移行する。
【０２０９】
Ｓ５８の処理では、ＣＰＵ７１は、Ｓ５５またはＳ５７の処理で算出された偏差を減少させる２つの基準操舵角（前側操舵角θｆ、及び、後側操舵角θｂ）を算出する（Ｓ５８）。尚、Ｓ５５の処理が実行された場合であれば、磁気ガイド検出センサ７９ｂの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｂの操舵角を、前側操舵角θｆとして算出する。また、磁気ガイド検出センサ７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｌの操舵角を、後側操舵角θｂとして算出する。
【０２１０】
一方、Ｓ５７の処理が実行された場合であれば、磁気ガイド検出センサ７９ａの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ａの操舵角を、前側操舵角θｆとして算出する。また、磁気ガイド検出センサ７９ｃの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ｋの操舵角を、後側操舵角θｂとして算出する。
【０２１１】
Ｓ５８の処理において前側操舵角θｆおよび後側操舵角θｂが算出されると、前側操舵角θｆが前側操舵角メモリ７３ｆ１に記憶され、後側操舵角θｂが後側操舵角メモリ７３ｆ２に記憶される。
【０２１２】
尚、上述したように、ここで算出される前側操舵角θｆおよび後側操舵角θｂは、あくまでも、制御装置７０が操舵角設定テーブル７２ｃを参照するための基準操舵角なので、走行装置５ａ，５ｂ，５ｋ，５ｌに対して設定される操舵角と一致するとは限らない。
【０２１３】
次に、ＣＰＵ７１は、Ｓ５８の処理で算出した２つの基準操舵角（前側操舵角θｆ、及び、後側操舵角θｂ）を用いて、各走行装置５ａ〜５ｌに対応する操舵角θ１〜θ１２、および、走行速度比率Ｖａ１〜Ｖａ１２を、操舵角設定テーブル７２ｃから取得する（Ｓ５９）。
【０２１４】
尚、Ｓ５８の処理で算出した前側操舵角θｆがプラスの角度であれば、そのまま、その算出した前側操舵角θｆおよび後側操舵角θｂに対応する各操舵角θ１〜θ１２、及び、各走行速度比率Ｖａ１〜Ｖａ１２を、操舵角設定テーブル７２ｃの中から取得する。
【０２１５】
一方、前側操舵角θｆがマイナスの角度であれば、一旦、前側操舵角θｆおよび後側操舵角θｂにそれぞれ−１を乗じて、前側操舵角θｆの符号をプラスにする。そして、−１乗じた前側操舵角θｆおよび後側操舵角θｂに対応する各操舵角θ１〜θ１２、及び、各走行速度比率Ｖａ１〜Ｖａ１２を、操舵角設定テーブル７２ｃの中から取得する。そして、その取得した各操舵角θ１〜θ１２については、それぞれ−１を乗じ、その結果得られた値を、無人搬送車両１における走行装置５ａ〜５ｌの各列単位で、左右入れ替える。そして、その結果得られた値を、最終的な各操舵角θ１〜θ１２とする。また、各走行速度比率Ｖａ１〜Ｖａ１２については、単に、走行装置５ａ〜５ｌの各列単位で、左右入れ替える。そして、その結果得られた値を、最終的な走行速度比率Ｖａ１〜Ｖａ１２とする。
【０２１６】
そして、ＣＰＵ７１は、Ｓ５２の処理で取得した基準走行速度Ｖと、Ｓ５９の処理で取得した走行速度比率Ｖａ１〜Ｖａ１２とから、各走行装置５ａ〜５ｌの走行速度Ｖ１〜Ｖ１２を算出する（Ｓ６０）。
【０２１７】
次に、ＣＰＵ７１は、各走行装置５ａ〜５ｌについて、Ｓ５９の処理で取得した操舵角θ１〜θ１２を設定すると共に、Ｓ６０の処理で算出した走行速度Ｖ１〜Ｖ１２を設定する（Ｓ６１）。より具体的には、各走行装置５ａ〜５ｌの各車軸６ａの操舵角θ１〜θ１２を、Ｓ５９の処理で取得した操舵角θ１〜θ１２に設定すると共に、各走行装置５ａ〜５ｌの各車輪６ｂの走行速度が、Ｓ６０の処理で算出した走行速度Ｖ１〜Ｖ１２となるように、各車軸６ａの回転速度を設定する。
【０２１８】
以上の図１３に示す操舵角自動設定処理によれば、各走行装置５ａ〜５ｌの車軸６ａに対して操舵角θ１〜θ１２を設定する場合に、各車軸６ａごとに計算式を用いて各操舵角θ１〜θ１２を算出する必要がないため、ＣＰＵ７１に掛かる負担を少なくできる。よって、各操舵角θ１〜θ１２の設定を短い周期で実行することができるので、走行経路Ｒ上を無人搬送車両１に円滑に走行させられる。
【０２１９】
例えば、本実施形態に対して、各操舵角θ１〜θ１２を算出するための計算式を、各車軸６ａごとに予め用意しておき、各走行装置５ａ〜５ｌの車軸６ａの操舵角θ１〜θ１２を設定（補正）する場合に、それらの計算式を用いて各操舵角θ１〜θ１２を個別に算出するように構成しておくことも考えられる。
【０２２０】
しかしながら、走行経路Ｒ上を無人搬送車両１に円滑に走行させるためには、各車軸６ａの操舵角θ１〜θ１２を、より短い周期で設定（補正）する必要があるので、計算式を用いて各操舵角θ１〜θ１２を個別に算出するように構成すると、その設定（補正）を短い周期で実行できないおそれがある。
【０２２１】
即ち、小型車両のように、無人搬送車両１に設けられている走行装置５の数が少ない場合は、計算式を用いて各操舵角θを算出するように構成していても、算出する操舵角θの数が少ないため、演算量も少なく、演算時間も短い。よって、ＣＰＵ７１に掛かる負担が少ない。しかしながら、本実施形態のように、走行装置５ａ〜５ｌの数が多い場合は、計算式により算出する操舵角θ１〜θ１２の数が多いため、演算量が多くなり、演算時間も長くなる。よって、ＣＰＵ７１に大きな負担が掛かる。
【０２２２】
従って、走行装置５ａ〜５ｌの数が多い場合に、仮に、各車軸６ａの操舵角θ１〜θ１２を設定（補正）する周期を短くすると、その周期内に演算を終了できず、制御遅れが発生するおそれがある。一方で、その周期を長くすると、制御遅れは発生しないものの、走行経路Ｒ上を無人搬送車両１に円滑に走行させられなくなる。尚、演算能力の高いＣＰＵを搭載して、演算時間を短くすることも考えられるが、コストが高くなるため、現実的ではない。また、演算能力の高いＣＰＵは、演算時以外には過剰性能となるため、その性能を無駄にしてしまう。
【０２２３】
これに対して、本実施形態では、各走行装置５ａ〜５ｌに対して操舵角θ１〜θ１２を設定する場合に、操舵角設定テーブル７２ｃから、各操舵角θ１〜θ１２を取得している。よって、計算式により各操舵角θ１〜θ１２を算出する場合よりも、演算量を少なくできるので、ＣＰＵ７１に掛かる負担を少なくでき、ＣＰＵ７１の演算時間も短くできる。従って、本実施形態のように、走行装置５ａ〜５ｌの数が多い場合でも、ＣＰＵ７１に掛かる負担が大きくならず、演算時間も長くならない。故に、各操舵角θ１〜θ１２の設定を短い周期で実行することができ、走行経路Ｒ上を無人搬送車両１に円滑に走行させられる。
【０２２４】
また、走行装置５ａ〜５ｌの数が多い場合でも、ＣＰＵ７１に掛かる負担が大きくならないため、ＣＰＵ７１の演算能力が高くなくても、制御遅れを発生させずに、各操舵角θ１〜θ１２の設定を短い周期で実行することができる。よって、ＣＰＵ７１に汎用のＣＰＵを用いることができ、コストを抑制できる。このように、走行装置５ａ〜５ｌの数が多い場合、本発明は特に好適である。
【０２２５】
また、本実施形態では、操舵角θ１〜θ１２に加えて、走行速度比率Ｖａ１〜Ｖ１２も、操舵角設定テーブル７２において、それぞれ予め設定している。これにより、走行速度Ｖ１〜Ｖ１２を算出する場合に、無人搬送車両１が目標とすべき走行速度である基準走行速度Ｖに対して、各走行速度比率Ｖａ１〜Ｖａ１２を乗算するという簡単な演算だけで、各走行速度Ｖ１〜Ｖ１２を算出できる。そのため、ＣＰＵ７１に掛かる負担が大きくならず、演算時間も長くならない。
【０２２６】
よって、各走行速度Ｖ１〜Ｖ１２を算出するための計算式を、各車軸６ａごとに予め用意しておき、各走行速度Ｖ１〜Ｖ１２を設定する場合に、それらの計算式を用いて各走行速度Ｖ１〜Ｖ１２を１つずつ算出するように構成したときと比較して、ＣＰＵ７１に掛かる負担を少なくできる。従って、各操舵角θ１〜θ１２を設定する場合と同様に、走行装置５ａ〜５ｌの数が多い場合でも、各走行速度Ｖ１〜Ｖ１２の設定を短い周期で実行することができ、走行経路Ｒ上を無人搬送車両１に円滑に走行させられる。また、ＣＰＵ７１に汎用のＣＰＵを用いることができ、コストを抑制できる。故に、走行装置５ａ〜５ｌの数が多い場合、本発明は特に好適である。
【０２２７】
尚、各走行装置５の数が、本実施形態より更に多い場合についても、本実施形態と同様に構成すれば、各走行装置５に対して操舵角θや走行速度Ｖを設定する場合に、本実施形態と同様に、ＣＰＵ７１に掛かる負担を少なくでき、ＣＰＵ７１の演算時間も短くできる。よって、各車軸６ａの操舵角θや、各車輪６ｂの走行速度Ｖの設定を短い周期で実行することができ、走行経路Ｒ上を無人搬送車両１に円滑に走行させられる。また、ＣＰＵ７１に汎用のＣＰＵを用いることができ、コストを抑制できる。
【０２２８】
また、上述した操舵角自動設定処理によれば、無人搬送車両１の運転モードが右倣いモードの場合、磁気ガイド検出センサ７９ｂ，７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１の進行方向が制御される。その結果、右側最前列および右側最終列の走行装置５ｂ，５ｌに設けられている各車軸６ａは、常に、走行経路Ｒ上に存在するように制御される。尚、無人搬送車両１の運転モードが左倣いモードの場合についても同様に、左側最前列および左側最終列の走行装置５ａ，５ｋに設けられている各車軸６ａが、常に、走行経路Ｒ上に存在するように制御される。
【０２２９】
よって、走行経路Ｒがカーブ、又は、屈折している場合に、無人搬送車両１がそこを通過したとしても、無人搬送車両１の前面周辺および後面周辺は共に走行経路Ｒ上に存在することとなり、無人搬送車両１の前面および後面のうち、進行方向と反対側の面が走行経路Ｒ上から外れて、その進行方向と反対側の面が、左右に振れることを防止できる。従って、走行経路Ｒの周辺を通行する歩行者などに対する安全性を高められる。
【０２３０】
また、本実施形態では、前側操舵角θｆ、及び、後側操舵角θｂの２つの基準操舵角を基準にして、操舵角設定テーブル７２ｃを構成している。尚、基準操舵角を３つ以上設けて、無人搬送車両１の各車軸６ａの操舵角θ１〜θ１２を設定し、操舵角設定テーブル７２ｃを構成しても良い。
【０２３１】
尚、上記実施形態に記載の「動作コマンドバッファメモリ７３ａに記憶される動作コマンド列」が、特許請求の範囲に記載の「走行データ」に対応する。また、上記実施形態に記載の「走行経路Ｒ上で隣設する３つのステーションＣの組み合わせに対応する動作コマンド列」が、特許請求の範囲に記載の「通過データ」に対応する。また、上記実施形態に記載の「走行経路Ｒ上で隣設する２つのステーションＣの組み合わせに対応する動作コマンド列」が、特許請求の範囲に記載の「出発データ」や「到着データ」に対応する。
【０２３２】
以上、実施形態に基づき本発明を説明したが、本発明は上記実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
【０２３３】
例えば、上記実施形態で挙げた具体的数値は一例であり、他の数値を採用することは当然可能である。
【０２３４】
また、上記実施形態では、磁気ガイド検出センサ７９ａ〜７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させる場合の走行装置５ａ，５ｂの操舵角を前側操舵角θｆとし、走行装置５ｋ，５ｌの操舵角を後側操舵角θｂしている。しかしながら、磁気ガイド検出センサ７９ａ〜７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させることが可能であれば、どの走行装置５ａ〜５ｌの操舵角を、前側操舵角θｆや、後側操舵角θｂとしても良い。
【０２３５】
また、上記実施形態では、磁気ガイド検出センサ７９ａ〜７９ｄを、走行装置５ａ，５ｂ，５ｋ、５ｌに設置しているが、磁気ガイドＧを検出可能な場所であれば、無人搬送車両１のどこに設置しても良い。尚、この場合も、磁気ガイド検出センサ７９ａ〜７９ｄの検出部の中央に磁気ガイドＧが収まるように、無人搬送車両１を走行させることが可能であれば、どの走行装置５ａ〜５ｌの操舵角を、前側操舵角θｆや、後側操舵角θｂとしても良い。
【０２３６】
また、上記実施形態の操舵角設定テーブル７２ｃは、磁気ガイド検出センサ７９ａ〜７９ｄの検出結果に基づいて算出される前側操舵角θｆおよび後側操舵角θｂに対して、操舵角θ１〜θ１２と、走行速度比率Ｖａ１〜Ｖａ１２とを対応付けたテーブルであるが、磁気ガイド検出センサ７９ａ〜７９ｄの検出結果に対して、操舵角θ１〜θ１２と、走行速度比率Ｖａ１〜Ｖａ１２とを対応付けたテーブルとしても良い。これにより、制御装置７０において操舵角設定テーブル７２ｃを用いる場合に、磁気ガイド検出センサ７９ａ〜７９ｄの検出結果そのものを用いて、操舵角θ１〜θ１２と、走行速度比率Ｖａ１〜Ｖａ１２を取得できるので、前側操舵角θｆおよび後側操舵角θｂを算出する手間を省ける。よって、制御装置７０に掛かる負担を軽減できる。
【０２３７】
また、上記実施形態では、前側操舵角θｆおよび後側操舵角θｂの２つの操舵角θｆ，θｂを基準として、操舵角設定テーブル７２ｃを作成しているが、前側操舵角θｆおよび後側操舵角θｂの一方と、無人搬送車両１の旋回半径Ｒとを基準として、操舵角設定テーブル７２ｃを作成しても良い。尚、この場合には、旋回半径Ｒの範囲（例えば、５〜２０ｍ）を予め定めておき、所定ピッチ（例えば、０．２ｍ単位）ごとに、旋回半径Ｒを設定して、操舵角θｆ，θｂの一方と、旋回半径Ｒとを漏れなく組み合わせたテーブル７２ｃを作成する。
【０２３８】
また、上記実施形態の操舵角設定テーブル７２ｃでは、前側操舵角θｆおよび後側操舵角θｂごとに、基準走行速度Ｖに対する走行速度比率Ｖａ１〜Ｖａ１２を記憶しているが、走行速度比率Ｖａ１〜Ｖａ１２に替えて、基準走行速度Ｖに対応する走行速度Ｖ１〜Ｖ１２を記憶しておくように構成しても良い。
【０２３９】
また、上記実施形態では、上位プロコンから無人搬送車両１に対して、１回の行先指令により、ステーションＣが３つ単位で通知されるように構成されているが、１回の行先指令により、任意の数のステーションＣが通知される場合でも、行先指令毎に、通知されるステーションＣの数が変わる場合でも、当然、本発明を適用できる。
【０２４０】
また、上記実施形態では、自動運転処理（図８参照）、動作コマンド設定処理（図９参照）、及び、操舵角自動設定処理（図１３参照）を繰り返し実行するように構成しているが、各処理を定期的（例えば、５ｍｓ毎）に実行するように構成しても良い。
【０２４１】
また、上記実施形態では、本発明を無人搬送車両１に適用した形態について説明したが、有人無人に関わらず、行先指令に基づいて操舵を制御するように構成された搬送車両であれば本発明を適用できる。
【符号の説明】
【０２４２】
１                              無人搬送車両
７０                            制御装置（走行データ生成装置）
７２ａ                          動作情報リンクテーブル（出発データ記憶手段、到着データ記憶手段、通過データ記憶手段）
７２ｂ                          動作コマンドテーブル（出発データ記憶手段、到着データ記憶手段、通過データ記憶手段）
Ｓ１１                          取得手段
Ｓ１８，Ｓ２２                  走行データ生成手段
Ｓ３１，Ｓ３２                  第１特定手段
Ｓ３１〜Ｓ３５，Ｓ４０，Ｓ４１  通過データ取得手段
Ｓ３１，Ｓ４０                  第３特定手段
Ｓ３１，Ｓ４０，Ｓ３９          第２特定手段
Ｓ３３〜Ｓ３５                  第１抽出手段
Ｓ４１，Ｓ３４，Ｓ３５          第２抽出手段
Ｓ４２，Ｓ３４，Ｓ３５          到着データ取得手段、第３抽出手段
【図１】
2012178054.tif 000003
【図２】
2012178054.tif 000004
【図３】
2012178054.tif 000005
【図４】
2012178054.tif 000006
【図５】
2012178054.tif 000007
【図６】
2012178054.tif 000008
【図７】
2012178054.tif 000009
【図８】
2012178054.tif 000010
【図９】
2012178054.tif 000011
【図１０】
2012178054.tif 000012
【図１１】
2012178054.tif 000013
【図１２】
2012178054.tif 000014
【図１３】
2012178054.tif 000015