(57)【要約】【課題】目標位置への移動体の到達精度を向上させる技術を提供する。【解決手段】移動体（１０１）は、駆動装置（１０９）と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサ（１０３）と、センサデータと予め用意された地図データとを照合して、照合結果に基づき移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置（１０５）と、位置推定装置から出力された位置情報を参照しながら、予め設定されたコースに沿って駆動装置を制御して移動体を移動させるコントローラ（１０７）とを有している。コントローラは、移動体の位置とコースとの位置誤差が駆動装置の制御可能量よりも大きいときは、位置および角度を用いる比例制御により駆動装置を駆動させ、位置誤差が制御可能量以下のときは位置および角度を用いる積分制御により駆動装置を駆動させる。【選択図】図１
2020166701.tif 000002
【特許請求の範囲】
【請求項１】
自律的に移動することが可能な移動体であって、
前記移動体を移動させる駆動装置と、
周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、
前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、
前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させるコントローラと
を備え、
前記コントローラは、
前記移動体の位置と前記コースとの位置誤差が前記駆動装置の制御可能量よりも大きいときは、前記位置および前記角度を用いる比例制御により前記駆動装置を駆動させ、
前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御により前記駆動装置を駆動させる、移動体。
【請求項２】
前記コース上の目標点から予め定められた範囲内に到達したときは、
前記コントローラは、前記位置のみを用いる比例制御または積分制御に切り替える、請求項１に記載の移動体。
【請求項３】
前記コース上の目標点から予め定められた範囲内に到達し、かつ前記位置誤差が前記制御可能量より大きいときは、
前記コントローラは、前記位置のみを用いる比例制御に切り替える、請求項２に記載の移動体。
【請求項４】
前記コース上の目標点から予め定められた範囲内に到達し、かつ前記位置誤差が前記制御可能量以下のときは、
前記コントローラは、前記位置のみを用いる積分制御に切り替える、請求項２に記載の移動体。
【請求項５】
前記コース上の目標点から予め定められた範囲内に到達したときは、
前記コントローラは、前記位置誤差が前記制御可能量よりも大きいか否かにかかわらず、前記位置のみを用いる積分制御に切り替える、請求項１に記載の移動体。
【請求項６】
前記駆動装置は第１モータおよび第２モータを有し、
前記第１モータの単位時間当たりの回転数をＲ１、前記第２モータの単位時間当たりの回転数をＲ２、位置に関する比例ゲインをＫｐｐ、角度に関する比例ゲインをＫｐａ、位置誤差をｄｘ、角度誤差をｄθ、補正係数をｋ（＞０）としたとき、
前記コントローラは、前記位置誤差が前記制御可能量より大きいときは、
前記位置および前記角度を用いる比例制御として、補正係数ｋをｋ＝Ｋｐｐ＊ｄｘ＋Ｋｐａ＊ｄθによって算出し、
前記第２モータの回転数Ｒ２を、Ｒ２＝Ｒ１＊（１−ｋ）によって算出し、
前記駆動装置は、前記第１モータを前記回転数Ｒ１で回転させ、前記第２モータを前記回転数Ｒ２で回転させる、請求項１から５のいずれかに記載の移動体。
【請求項７】
前記位置誤差は、前記コース上の第１位置と第２位置とを結ぶ直線に垂直な方向へのずれ量であり、
前記角度誤差は、所定の方向を基準とした前記移動体の現在の角度と、前記移動体の現在の位置から前記コースの終点まで直線で向かうときの前記移動体の角度との差分である、請求項６に記載の移動体。
【請求項８】
前記駆動装置は第１モータおよび第２モータを有し、
前記第１モータの単位時間当たりの回転数をＲ１、前記第２モータの単位時間当たりの回転数をＲ２、位置に関する積分ゲインをＫｉｐ、角度に関する積分ゲインをＫｉａ、位置誤差積分値をＳｐ、角度誤差積分値をＳａ、補正係数をｋ（＞０）としたとき、
前記コントローラは、前記位置誤差が前記制御可能量以下のときは、
前記位置および前記角度を用いる比例制御として、補正係数ｋをｋ＝Ｋｉｐ＊Ｓｐ＋Ｋｉａ＊Ｓａによって算出し、
前記第２モータの回転数Ｒ２を、Ｒ２＝Ｒ１＊（１−ｋ）によって算出し、
前記駆動装置は、前記第１モータを前記回転数Ｒ１で回転させ、前記第２モータを前記回転数Ｒ２で回転させる、請求項１から７のいずれかに記載の移動体。
【請求項９】
前記位置誤差積分値Ｓｐは、時系列に並べた位置誤差の所定個数の和であり、
前記角度誤差積分値Ｓａは、時系列に並べた角度誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第１位置と第２位置とを結ぶ直線に垂直な方向へのずれ量であり、
前記角度誤差は、所定方向を基準とした前記移動体の現在の角度と、前記移動体の現在の位置から前記コースの終点まで直線で向かうときの前記移動体の角度との差分である、請求項８に記載の移動体。
【請求項１０】
前記駆動装置は第１モータおよび第２モータを有し、
前記第１モータの単位時間当たりの回転数をＲ１、前記第２モータの単位時間当たりの回転数をＲ２、位置に関する比例ゲインをＫｐｐ、位置誤差をｄｘ、補正係数をｋ（＞０）としたとき、
前記コントローラは、前記位置誤差が前記制御可能量より大きいときは、
前記位置のみを用いる比例制御として、補正係数ｋをｋ＝Ｋｐｐ＊ｄｘによって算出し、
前記第２モータの回転数Ｒ２を、Ｒ２＝Ｒ１＊（１−ｋ）によって算出し、
前記駆動装置は、前記第１モータを前記回転数Ｒ１で回転させ、前記第２モータを前記回転数Ｒ２で回転させる、請求項２または３に記載の移動体。
【請求項１１】
前記位置誤差は、前記コース上の第１位置と第２位置とを結ぶ直線に垂直な方向へのずれ量である、請求項１０に記載の移動体。
【請求項１２】
前記駆動装置は第１モータおよび第２モータを有し、
前記第１モータの単位時間当たりの回転数をＲ１、前記第２モータの単位時間当たりの回転数をＲ２、位置に関する積分ゲインをＫｉｐ、位置誤差積分値をＳｐ、補正係数をｋ（＞０）としたとき、
前記コントローラは、前記位置誤差が前記制御可能量以下のときは、
前記位置のみを用いる積分制御として、補正係数ｋをｋ＝Ｋｉｐ＊Ｓｐによって算出し、
前記第２モータの回転数Ｒ２を、Ｒ２＝Ｒ１＊（１−ｋ）によって算出し、
前記駆動装置は、前記第１モータを前記回転数Ｒ１で回転させ、前記第２モータを前記回転数Ｒ２で回転させる、請求項２または４に記載の移動体。
【請求項１３】
前記位置誤差積分値Ｓｐは、時系列に並べた位置誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第１位置と第２位置とを結ぶ直線に垂直な方向へのずれ量である、請求項１２に記載の移動体。
【請求項１４】
前記駆動装置は第１モータおよび第２モータを有し、
前記第１モータの単位時間当たりの回転数をＲ１、前記第２モータの単位時間当たりの回転数をＲ２、位置に関する積分ゲインをＫｉｐ、位置誤差積分値をＳｐ、補正係数をｋ（＞０）としたとき、
前記コントローラは、前記位置誤差が前記制御可能量よりも大きいか否かにかかわらず、
前記位置のみを用いる積分制御として、補正係数ｋをｋ＝Ｋｉｐ＊Ｓｐによって算出し、
前記第２モータの回転数Ｒ２を、Ｒ２＝Ｒ１＊（１−ｋ）によって算出し、
前記駆動装置は、前記第１モータを前記回転数Ｒ１で回転させ、前記第２モータを前記回転数Ｒ２で回転させる、請求項５に記載の移動体。
【請求項１５】
前記位置誤差積分値Ｓｐは、時系列に並べた位置誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第１位置と第２位置とを結ぶ直線に垂直な方向へのずれ量である、請求項１４に記載の移動体。
【請求項１６】
前記制御可能量は、前記駆動装置が前記移動体を移動させるために、前記移動体の位置および／または姿勢を比例制御によって変更可能な最小の値である、請求項１から１５のいずれかに記載の移動体。
【請求項１７】
前記コントローラは、さらに、前記移動体の位置と前記コースとの位置誤差および前記移動体の位置および姿勢と前記コースの目的位置とによって決定される角度誤差を利用して、前記比例制御および前記積分制御の一方を選択する、請求項１から１６のいずれかに記載の移動体。
【請求項１８】
自律的に移動することが可能な移動体に搭載されたコンピュータであるコントローラに実行されるコンピュータプログラムであって、
前記移動体は、
前記移動体を移動させる駆動装置と、
周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、
前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、
前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させる、前記コントローラと
を備え、
前記コンピュータプログラムは前記コントローラに、
前記移動体の位置と前記コースとの位置誤差と、前記駆動装置の制御可能量とを比較させ、
前記位置誤差が前記制御可能量よりも大きいときは前記位置および前記角度を用いる比例制御を実行させ、
前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御を実行させる、コンピュータプログラム。
【請求項１９】
前記コンピュータプログラムは前記コントローラに、
前記移動体が前記コース上の目標点から予め定められた範囲内に到達したか否かを判定させ、
前記移動体が前記予め定められた範囲内に到達したときは、前記コントローラに、前記位置のみを用いる比例制御または積分制御に切り替えさせる、請求項１８に記載のコンピュータプログラム。
【請求項２０】
前記コンピュータプログラムは前記コントローラに、
前記移動体が前記コース上の目標点から予め定められた範囲内に到達したか否かを判定させ、
前記移動体が前記予め定められた範囲内に到達したときは、前記コントローラに、前記位置のみを用いる積分制御に切り替えさせる、請求項１８に記載のコンピュータプログラム。
【請求項２１】
前記コンピュータプログラムは前記コントローラに、さらに、前記移動体の位置と前記コースとの位置誤差および前記移動体の位置および姿勢と前記コースの目的位置とによって決定される角度誤差を利用して、前記比例制御および前記積分制御の一方を選択させる、請求項１８から２０のいずれかに記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、移動体およびコンピュータプログラムに関する。
【背景技術】
【０００２】
所定の経路に沿って自律的に空間を移動する自律移動ロボットが開発されている。自律移動ロボットは、レーザ距離センサ等の外界センサを用いて周囲の空間をセンシングし、センシング結果と、予め用意された地図とのマッチングを行い、自身の現在の位置および姿勢を推定（同定）する。自律移動ロボットは、自身の現在の位置および姿勢を制御しながら、当該経路に沿って移動することができる。
【０００３】
特開２００５−１１２４９８号公報は、走行する移動棚の姿勢制御技術を開示する。移動棚のコントローラは、移動棚１の左右方向のずれ（移動棚１の位置）に関するずれ量が所定量に達するまでは移動棚１の姿勢を修正し、所定量に達すると移動棚１の左右方向のずれを修正する。
【０００４】
特開平０１−０６７６０９号公報は、ロボットの姿勢制御技術を開示する。予め設定されている目標地点の座標と、ロボットに設けている加速度計の値を２回積分して得た現在地点の座標Ｐとを比較して位置偏差が求められる。また、予め設定されている目標位置における目標姿勢と、ロボットに設けた回転速度計の値を積分して求めた現在の姿勢とを比較して角度偏差が求められる。位置偏差および角度偏差は復元力であるモーメントの算出に利用される。当該モーメントを含む種々のモーメントを用いて、ロボットは目標位置に目標角度で到達する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１１２４９８号公報
【特許文献２】特開平０１−０６７６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本願の、限定的ではない例示的なある実施形態は、目標位置への移動体の到達精度を向上させる技術を提供する。
【課題を解決するための手段】
【０００７】
本開示の例示的な実施形態における移動体は、非限定的で例示的な実施形態において、自律的に移動することが可能な移動体であって、前記移動体を移動させる駆動装置と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させるコントローラとを備え、前記コントローラは、前記移動体の位置と前記コースとの位置誤差が前記駆動装置の制御可能量よりも大きいときは、前記位置および前記角度を用いる比例制御により前記駆動装置を駆動させ、前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御により前記駆動装置を駆動させる。
【０００８】
本開示の例示的な実施形態におけるコンピュータプログラムは、非限定的で例示的な実施形態において、自律的に移動することが可能な移動体に搭載されたコンピュータであるコントローラに実行されるコンピュータプログラムであって、前記移動体は、前記移動体を移動させる駆動装置と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させる、前記コントローラとを備え、前記コンピュータプログラムは前記コントローラに、前記移動体の位置と前記コースとの位置誤差と、前記駆動装置の制御可能量とを比較させ、前記位置誤差が前記制御可能量よりも大きいときは前記位置および前記角度を用いる比例制御を実行させ、前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御を実行させる。
【発明の効果】
【０００９】
本開示の実施形態によれば、目標位置への移動体の到達精度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本開示の例示的な実施形態における移動体１０１の概略構成を示すブロック図である。
【図２】図２は、移動体１０１の動作の概要を示すフローチャートである。
【図３】図３は、本開示による、各ＡＧＶの走行を制御する制御システムの概要を示す図である。
【図４】図４は、ＡＧＶが存在する移動空間Ｓの一例を示す図である。
【図５Ａ】図５Ａは、接続される前のＡＧＶおよび牽引台車を示す図である。
【図５Ｂ】図５Ｂは、接続されたＡＧＶおよび牽引台車を示す図である。
【図６】図６は、本実施形態にかかる例示的なＡＧＶの外観図である。
【図７Ａ】図７Ａは、ＡＧＶの第１のハードウェア構成例を示す図である。
【図７Ｂ】図７Ｂは、ＡＧＶの第２のハードウェア構成例を示す図である。
【図８Ａ】図８Ａは、移動しながら環境地図を生成するＡＧＶを示す図である。
【図８Ｂ】図８Ｂは、移動しながら環境地図を生成するＡＧＶを示す図である。
【図８Ｃ】図８Ｃは、移動しながら環境地図を生成するＡＧＶを示す図である。
【図８Ｄ】図８Ｄは、移動しながら環境地図を生成するＡＧＶを示す図である。
【図８Ｅ】図８Ｅは、移動しながら環境地図を生成するＡＧＶを示す図である。
【図８Ｆ】図８Ｆは、完成した環境地図の一部を模式的に示す図である。
【図９】図９は、複数の部分地図によって１つのフロアの地図が構成される例を示す図である。
【図１０】図１０は、運行管理装置のハードウェア構成例を示す図である。
【図１１】図１１は、運行管理装置によって決定されたＡＧＶの移動経路の一例を模式的に示す図である。
【図１２】図１２は、位置誤差および角度誤差を説明するための図である。
【図１３】図１３は、ＡＧＶ１０の走行時の課題を説明するための図である。
【図１４】図１４は、ＡＧＶ１０を送稿させたときの位置および角度の推移を表す図である。
【図１５】図１５は、マイコン１４ａに算出させた２つの駆動輪の回転数でＡＧＶ１０を走行させたときのＡＧＶ１０の挙動を示す図である。
【図１６】図１６は、ＡＧＶ１０の角度誤差（ｄθ）の変化を示す図である。
【図１７】図１７は、ＡＧＶ１０の位置（ｘ，ｙ）および角度（θ）の変化を示す図である。
【図１８】図１８は、補正係数および残存距離に応じて採用され得る制御タイプの分類を示す図である。
【図１９】図１９は、制御タイプ１および２を切り替えて動作するＡＧＶ１０の挙動を示す図である。
【図２０】図２０は、制御タイプ３および４を切り替えて動作するＡＧＶ１０の挙動を示す図である。
【図２１】図２１は、制御方法を切り替えながら走行するＡＧＶ１０の挙動を示す図である。
【図２２Ａ】位置のみを用いる比例制御によるＡＧＶ１０の位置に関する挙動を示す図である。
【図２２Ｂ】図２２Ｂは、減衰振動的な収束軌道の一例を示す図である。
【図２３】図２３は、変形例による制御タイプの分類を示す図である。
【発明を実施するための形態】
【００１１】
＜用語＞
本開示の実施形態を説明する前に、本明細書において使用する用語の定義を説明する。
【００１２】
「無人搬送車」（ＡＧＶ）とは、本体に人手または自動で荷物を積み込み、指示された場所まで自動走行し、人手または自動で荷卸しをする無軌道車両を意味する。「無人搬送車」は、無人牽引車および無人フォークリフトを含む。
【００１３】
「無人」の用語は、車両の操舵に人を必要としないことを意味しており、無人搬送車が「人（たとえば荷物の積み下ろしを行う者）」を搬送することは除外しない。
【００１４】
「無人牽引車」とは、人手または自動で荷物の積み込み荷卸しをする台車を牽引して、指示された場所まで自動走行する無軌道車両である。
【００１５】
「無人フォークリフト」とは、荷物移載用のフォークなどを上下させるマストを備え、フォークなどに荷物を自動移載し指示された場所まで自動走行し、自動荷役作業をする無軌道車両である。
【００１６】
「無軌道車両」とは、車輪と、車輪を回転させる電気モータまたはエンジンを備える移動体（vehicle）である。
【００１７】
「移動体」とは、人または荷物を載せて移動する装置であり、移動のための駆動力(traction)を発生させる車輪、二足または多足歩行装置、プロペラなどの駆動装置を備える。本開示における「移動体」の用語は、狭義の無人搬送車のみならず、モバイルロボット、サービスロボット、およびドローンを含む。
【００１８】
「自動走行」は、無人搬送車が通信によって接続されるコンピュータの運行管理システムの指令に基づく走行と、無人搬送車が備える制御装置による自律的走行とを含む。自律的走行には、無人搬送車が所定の経路に沿って目的地に向かう走行のみならず、追尾目標に追従する走行も含まれる。また、無人搬送車は、一時的に作業者の指示に基づくマニュアル走行を行ってもよい。「自動走行」は、一般には「ガイド式」の走行および「ガイドレス式」の走行の両方を含むが、本開示では「ガイドレス式」の走行を意味する。
【００１９】
「ガイド式」とは、誘導体を連続的または断続的に設置し、誘導体を利用して無人搬送車を誘導する方式である。
【００２０】
「ガイドレス式」とは、誘導体を設置せずに誘導する方式である。本開示の実施形態における無人搬送車は、自己位置推定装置を備え、ガイドレス式で走行することができる。
【００２１】
「自己位置推定装置」は、レーザレンジファインダなどの外界センサによって取得されたセンサデータに基づいて環境地図上における自己位置を推定する装置である。
【００２２】
「外界センサ」は、移動体の外部の状態をセンシングするセンサである。外界センサには、たとえば、レーザレンジファインダ（測域センサともいう）、カメラ（またはイメージセンサ）、ＬＩＤＡＲ（Light Detection and Ranging）、ミリ波レーダ、および磁気センサがある。
【００２３】
「内界センサ」は、移動体の内部の状態をセンシングするセンサである。内界センサには、たとえばロータリエンコーダ（以下、単に「エンコーダ」と称することがある）、加速度センサ、および角加速度センサ（たとえばジャイロセンサ）がある。
【００２４】
「ＳＬＡＭ（スラム）」とは、Simultaneous Localization and Mappingの略語であり、自己位置推定と環境地図作成を同時に行うことを意味する。
【００２５】
＜例示的な実施形態＞
以下、添付の図面を参照しながら、本開示による移動体および移動体管理システムの一例を説明する。なお、必要以上に詳細な説明は省略する場合がある。たとえば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。本発明者らは、当業者が本開示を十分に理解するために添付図面および以下の説明を提供する。これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
【００２６】
図１は、移動体１０１の概略構成を示すブロック図である。
【００２７】
移動体１０１は、外界センサ１０３と、位置推定装置１０５と、コントローラ１０７と、駆動装置１０９とを備えている。ある実施形態では位置推定装置１０５およびコントローラ１０７は、それぞれ別個の半導体集積回路チップであるが、他の実施形態では、位置推定装置１０５およびコントローラ１０７は１つの半導体集積回路チップであり得る。
【００２８】
駆動装置１０９は、移動体１０１を移動させる機構を備えている。駆動装置１０９は、例えば少なくとも１台の駆動用電気モータ（以下、単に「モータ」と称する）、および、当該モータを制御するモータ制御回路を備え得る。
【００２９】
外界センサ１０３は、例えばレーザレンジファインダ、カメラ、レーダ、またはＬＩＤＡＲなどの、外部環境をセンシングするセンサである。外界センサ１０３は、所定の角度範囲で周囲の空間を繰り返しスキャンしてセンサデータを出力する。
【００３０】
位置推定装置１０５は、不図示の記憶装置に地図データを格納している。地図データは、例えば、移動体１０１の動作開始前に取得されたセンサデータを用いて生成されている。センサデータは、実際に移動体１０１が空間を移動しながら取得され得る。
【００３１】
位置推定装置１０５は、外界センサ１０３から出力されたセンサデータと当該地図データとを照合して、照合結果に基づき移動体の位置および姿勢を推定する。位置推定装置１０５は、推定した移動体の位置および姿勢（orientation）を示す情報（本明細書において「位置情報」と称する）を順次出力する。位置推定装置１０５は、センサデータと地図データとを照合した際、両者が一致した程度を示す信頼度を出力してもよい。
【００３２】
コントローラ１０７は、例えば、半導体集積回路であるマイクロコントローラユニット（マイコン）である。コントローラ１０７は、予め定められたコースに沿って移動体１０１を移動させる。具体的にはコントローラ１０７は、移動体１０１の位置とコースとの誤差を解消するための補正係数の大きさが駆動装置１０９の「制御可能量」よりも大きいときは位置および角度のそれぞれについて比例制御を実行する。コントローラ１０７は、移動体１０１の位置とコースとの誤差を解消するための補正係数の大きさが駆動装置１０９の「制御可能量」以下のときは位置および角度のそれぞれについて積分制御を実行する。
【００３３】
駆動装置１０９の「制御可能量」とは、本開示では、駆動装置１０９が移動体１０１の位置および／または姿勢を比例制御によって変更可能な最小の値を言う。「制御可能量」は駆動装置１０９として実装されているハードウェアおよび／またはソフトウェアの制約によって決定され得る。
【００３４】
いま、左右の２つの駆動輪の単位時間当たりの回転数（以下、本開示では「回転数」と略記する。）を変化させることによって移動体１０１の進行方向を調整する例を考える。右の駆動輪の回転数Ｒ１を基準として、左の駆動輪の回転数Ｒ２を決定するとする。つまり、回転数Ｒ１に対し、回転数Ｒ２をＲ２＝（１−ｋ）＊Ｒ１によって決定するとする。ｋ（＞０）を補正係数または補正倍率と呼ぶ。補正係数ｋを小さくしてゆくと、ある補正係数ｋ０以下では、理論上は異なる値であっても実際の回転数Ｒ２は回転数Ｒ１と同じになる。その理由の一例として、コントローラ１０７の数値演算によって、求められる回転数が整数に丸められて、実際にはＲ１＝Ｒ２になるからである。
【００３５】
本願発明者は、ある補正係数ｋ０以下の補正係数ｋを用いても、回転数Ｒ１＝回転数Ｒ２になるため、左右の駆動輪の回転数を独立して調整できないことを見出した。逆に、補正係数ｋがｋ０よりも大きければ、駆動装置１０９は、左右の駆動輪を互いに異なる回転数Ｒ１およびＲ２で回転させることができ、移動体１０１の位置および／または姿勢を制御可能である。つまり、補正係数ｋ０を境界として、解消可能な最小の位置誤差が決定され得る。例えば、補正係数ｋ０よりも大きい補正係数を用いれば１０ｍｍよりも大きい位置誤差を解消することができるが、補正係数ｋ０以下では１０ｍｍ以下の位置誤差を解消することはできない。補正係数ｋ０によって変更可能な移動体１０１の位置および／または姿勢は、例えばコントローラ１０７において行われる数値演算で用いられる変数の型により、各移動体１０１について一意に決定され得る。
【００３６】
図２は、移動体１０１の動作の概要を示すフローチャートである。
【００３７】
ステップＳ２において移動体１０１の外界センサ１０３は、周囲の空間を繰り返しスキャンしてスキャン毎に得られたセンサデータを出力する。ステップＳ４において位置推定装置１０５はセンサデータと環境地図データとを照合する。ステップＳ６において、位置推定装置１０５は、推定した位置情報を出力する。
【００３８】
ステップＳ８において、コントローラ１０７は、移動体１０１の位置とコースとの位置誤差が、駆動装置１０９の制御可能量よりも大きいか否かを判定する。位置誤差が制御可能量よりも大きい場合には処理はステップＳ１０に進み、位置誤差が制御可能量以下の場合には処理はステップＳ１２に進む。
【００３９】
ステップＳ１０において、コントローラ１０７は移動体１０１の位置および角度を用いる比例制御により駆動装置１０９を駆動させる。比例制御とは、移動体１０１の位置誤差に所定の比例ゲインを乗算し、角度誤差に所定の比例ゲインを乗算して両者を加算し、得られた値（補正係数ｋ）を用いて駆動装置１０９を駆動させる制御である。
【００４０】
一方、ステップＳ１２において、コントローラ１０７は移動体１０１の位置および角度を用いる積分制御により駆動装置１０９を駆動させる。積分制御とは、位置誤差の累積値に所定の積分ゲインを乗算し、角度誤差の累積値に所定の積分ゲインを乗算して両者を加算し、得られた値（補正係数ｋ）を用いて駆動装置１０９を駆動させる制御である。位置誤差が駆動装置１０９の制御可能量よりも小さいため、上述の比例制御によっては駆動装置１０９の動作を調整できない。そのため、コントローラ１０７は異なる制御方法に切り替えて移動体１０１の位置および／または姿勢を調整する。
【００４１】
以下、移動体が無人搬送車である場合のより具体的な例を説明する。本明細書では、略語を用いて、無人搬送車を「ＡＧＶ」と記述することがある。なお、以下の説明は、矛盾がない限り、ＡＧＶ以外の移動体、例えば移動ロボット、ドローン、または有人の車両などにも同様に適用することができる。以下では主として環境地図を単に「地図」と略記することがある。
【００４２】
（１）システムの基本構成
図３は、本開示による例示的な移動体管理システム１００の基本構成例を示している。移動体管理システム１００は、少なくとも１台のＡＧＶ１０と、ＡＧＶ１０の運行管理を行う運行管理装置５０とを含む。図３には、ユーザ１によって操作される端末装置２０も記載されている。
【００４３】
ＡＧＶ１０は、走行に磁気テープなどの誘導体が不要な「ガイドレス式」走行が可能な無人搬送台車である。ＡＧＶ１０は、自己位置推定を行い、推定の結果を端末装置２０および運行管理装置５０に送信することができる。ＡＧＶ１０は、運行管理装置５０からの指令に従って移動空間Ｓ内を自動走行することが可能である。ＡＧＶ１０は、さらに、人または他の移動体に追従して移動する「追尾モード」で動作することが可能である。
【００４４】
運行管理装置５０は各ＡＧＶ１０の位置をトラッキングし、各ＡＧＶ１０の走行を管理するコンピュータシステムである。運行管理装置５０は、デスクトップ型ＰＣ、ノート型ＰＣ、および／または、サーバコンピュータであり得る。運行管理装置５０は、複数のアクセスポイント２を介して、各ＡＧＶ１０と通信する。たとえば、運行管理装置５０は、各ＡＧＶ１０が次に向かうべき位置の座標のデータを各ＡＧＶ１０に送信する。各ＡＧＶ１０は、定期的に、たとえば１００ミリ秒ごとに自身の位置および姿勢（orientation）を示すデータを運行管理装置５０に送信する。指示した位置にＡＧＶ１０が到達すると、運行管理装置５０は、さらに次に向かうべき位置の座標のデータを送信する。ＡＧＶ１０は、端末装置２０に入力されたユーザ１の操作に応じて移動空間Ｓ内を走行することも可能である。端末装置２０の一例はタブレットコンピュータである。典型的には、端末装置２０を利用したＡＧＶ１０の走行は地図作成時に行われ、運行管理装置５０を利用したＡＧＶ１０の走行は地図作成後に行われる。
【００４５】
図４は、３台のＡＧＶ１０ａ、１０ｂおよび１０ｃが存在する移動空間Ｓの一例を示している。いずれのＡＧＶも図中の奥行き方向に走行しているとする。ＡＧＶ１０ａおよび１０ｂは天板に載置された荷物を搬送中である。ＡＧＶ１０ｃは、前方のＡＧＶ１０ｂに追従して走行している。なお、説明の便宜のため、図４では参照符号１０ａ、１０ｂおよび１０ｃを付したが、以下では、「ＡＧＶ１０」と記述する。
【００４６】
ＡＧＶ１０は、天板に載置された荷物を搬送する方法以外に、自身と接続された牽引台車を利用して荷物を搬送することも可能である。図５Ａは接続される前のＡＧＶ１０および牽引台車５を示している。牽引台車５の各足にはキャスターが設けられている。ＡＧＶ１０は牽引台車５と機械的に接続される。図５Ｂは、接続されたＡＧＶ１０および牽引台車５を示している。ＡＧＶ１０が走行すると、牽引台車５はＡＧＶ１０に牽引される。牽引台車５を牽引することにより、ＡＧＶ１０は、牽引台車５に載置された荷物を搬送できる。
【００４７】
ＡＧＶ１０と牽引台車５との接続方法は任意である。ここでは一例を説明する。ＡＧＶ１０の天板にはプレート６が固定されている。牽引台車５には、スリットを有するガイド７が設けられている。ＡＧＶ１０は牽引台車５に接近し、プレート６をガイド７のスリットに差し込む。差し込みが完了すると、ＡＧＶ１０は、図示されない電磁ロック式ピンをプレート６およびガイド７に貫通させ、電磁ロックをかける。これにより、ＡＧＶ１０と牽引台車５とが物理的に接続される。
【００４８】
再び図３を参照する。各ＡＧＶ１０と端末装置２０とは、たとえば１対１で接続されてＢｌｕｅｔｏｏｔｈ（登録商標）規格に準拠した通信を行うことができる。各ＡＧＶ１０と端末装置２０とは、１または複数のアクセスポイント２を利用してＷｉ−Ｆｉ（登録商標）に準拠した通信を行うこともできる。複数のアクセスポイント２は、たとえばスイッチングハブ３を介して互いに接続されている。図３には２台のアクセスポイント２ａ、２ｂが記載されている。ＡＧＶ１０はアクセスポイント２ａと無線で接続されている。端末装置２０はアクセスポイント２ｂと無線で接続されている。ＡＧＶ１０が送信したデータはアクセスポイント２ａで受信され、スイッチングハブ３を介してアクセスポイント２ｂに転送され、アクセスポイント２ｂから端末装置２０に送信される。また、端末装置２０が送信したデータは、アクセスポイント２ｂで受信され、スイッチングハブ３を介してアクセスポイント２ａに転送され、アクセスポイント２ａからＡＧＶ１０に送信される。これにより、ＡＧＶ１０および端末装置２０の間の双方向通信が実現される。複数のアクセスポイント２はスイッチングハブ３を介して運行管理装置５０とも接続されている。これにより、運行管理装置５０と各ＡＧＶ１０との間でも双方向通信が実現される。
【００４９】
（２）環境地図の作成
自己位置を推定しながらＡＧＶ１０が走行できるようにするため、移動空間Ｓ内の地図が作成される。ＡＧＶ１０には位置推定装置およびレーザレンジファインダが搭載されており、レーザレンジファインダの出力を利用して地図を作成できる。
【００５０】
ＡＧＶ１０は、ユーザの操作によってデータ取得モードに遷移する。データ取得モードにおいて、ＡＧＶ１０はレーザレンジファインダを用いたセンサデータの取得を開始する。レーザレンジファインダは周期的にたとえば赤外線または可視光のレーザビームを周囲に放射して周囲の空間Ｓをスキャンする。レーザビームは、たとえば、壁、柱等の構造物、床の上に置かれた物体等の表面で反射される。レーザレンジファインダは、レーザビームの反射光を受けて各反射点までの距離を計算し、各反射点の位置が示された測定結果のデータを出力する。各反射点の位置には、反射光の到来方向および距離が反映されている。測定結果のデータは「計測データ」または「センサデータ」と呼ばれることがある。
【００５１】
位置推定装置は、センサデータを記憶装置に蓄積する。移動空間Ｓ内のセンサデータの取得が完了すると、記憶装置に蓄積されたセンサデータが外部装置に送信される。外部装置は、たとえば信号処理プロセッサを有し、かつ、地図作成プログラムがインストールされたコンピュータである。
【００５２】
外部装置の信号処理プロセッサは、スキャンごとに得られたセンサデータ同士を重ね合わせる。信号処理プロセッサが重ね合わせる処理を繰り返し行うことにより、空間Ｓの地図を作成することができる。外部装置は、作成した地図のデータをＡＧＶ１０に送信する。ＡＧＶ１０は、作成した地図のデータを内部の記憶装置に保存する。外部装置は、運行管理装置５０であってもよいし、他の装置であってもよい。
【００５３】
外部装置ではなくＡＧＶ１０が地図の作成を行ってもよい。上述した外部装置の信号処理プロセッサが行った処理を、ＡＧＶ１０のマイクロコントローラユニット（マイコン）などの回路が行えばよい。ＡＧＶ１０内で地図を作成する場合には、蓄積されたセンサデータを外部装置に送信する必要が無くなる。センサデータのデータ容量は一般には大きいと考えられる。センサデータを外部装置に送信する必要がないため、通信回線の占有を回避できる。
【００５４】
なお、センサデータを取得するための移動空間Ｓ内の移動は、ユーザの操作に従ってＡＧＶ１０が走行することによって実現し得る。たとえば、ＡＧＶ１０は、端末装置２０を介して無線でユーザから前後左右の各方向への移動を指示する走行指令を受け取る。ＡＧＶ１０は走行指令にしたがって移動空間Ｓ内を前後左右に走行し、地図を作成する。ＡＧＶ１０がジョイスティック等の操縦装置と有線で接続されている場合には、当該操縦装置からの制御信号にしたがって移動空間Ｓ内を前後左右に走行し、地図を作成してもよい。レーザレンジファインダを搭載した計測台車を人が押し歩くことによってセンサデータを取得してもよい。
【００５５】
なお、図３および図４には複数台のＡＧＶ１０が示されているが、ＡＧＶは１台であってもよい。複数台のＡＧＶ１０が存在する場合、ユーザ１は端末装置２０を利用して、登録された複数のＡＧＶのうちから一台のＡＧＶ１０を選択して、移動空間Ｓの地図を作成させることができる。
【００５６】
地図が作成されると、以後、各ＡＧＶ１０は当該地図を利用して自己位置を推定しながら自動走行することができる。自己位置を推定する処理の説明は後述する。
【００５７】
（３）ＡＧＶの構成
図６は、本実施形態にかかる例示的なＡＧＶ１０の外観図である。ＡＧＶ１０は、２つの駆動輪１１ａおよび１１ｂと、４つのキャスター１１ｃ、１１ｄ、１１ｅおよび１１ｆと、フレーム１２と、搬送テーブル１３と、走行制御装置１４と、レーザレンジファインダ１５とを有する。２つの駆動輪１１ａおよび１１ｂは、ＡＧＶ１０の右側および左側にそれぞれ設けられている。４つのキャスター１１ｃ、１１ｄ、１１ｅおよび１１ｆは、ＡＧＶ１０の４隅に配置されている。なお、ＡＧＶ１０は、２つの駆動輪１１ａおよび１１ｂに接続される複数のモータも有するが、複数のモータは図６には示されていない。また、図６には、ＡＧＶ１０の右側に位置する１つの駆動輪１１ａおよび２つのキャスター１１ｃおよび１１ｅと、左後部に位置するキャスター１１ｆとが示されているが、左側の駆動輪１１ｂおよび左前部のキャスター１１ｄはフレーム１２の蔭に隠れているため明示されていない。４つのキャスター１１ｃ、１１ｄ、１１ｅおよび１１ｆは、自由に旋回することができる。以下の説明では、駆動輪１１ａおよび駆動輪１１ｂを、それぞれ車輪１１ａおよび車輪１１ｂとも称する。
【００５８】
ＡＧＶ１０は、さらに、障害物を検知するための少なくとも１つの障害物センサ１９を備えている。図６の例では、フレーム１２の４隅に４つの障害物センサ１９が設けられている。障害物センサ１９の個数および配置は、図６の例とは異なっていてもよい。障害物センサ１９は、例えば、赤外線センサ、超音波センサ、またはステレオカメラなどの、距離計測が可能な装置であり得る。障害物センサ１９が赤外線センサである場合、例えば一定時間ごとに赤外線を出射し、反射された赤外線が戻ってくるまでの時間を計測することにより、一定距離以内に存在する障害物を検知することができる。ＡＧＶ１０は、少なくとも１つの障害物センサ１９から出力された信号に基づいて経路上の障害物を検知したとき、その障害物を回避する動作を行う。
【００５９】
走行制御装置１４は、ＡＧＶ１０の動作を制御する装置であり、主としてマイコン（後述）を含む集積回路、電子部品およびそれらが搭載された基板を含む。走行制御装置１４は、上述した、端末装置２０とのデータの送受信、および前処理演算を行う。
【００６０】
レーザレンジファインダ１５は、たとえば赤外線または可視光のレーザビーム１５ａを放射し、当該レーザビーム１５ａの反射光を検出することにより、反射点までの距離を測定する光学機器である。本実施形態では、ＡＧＶ１０のレーザレンジファインダ１５は、たとえばＡＧＶ１０の正面を基準として左右１３５度（合計２７０度）の範囲の空間に、０．２５度ごとに方向を変化させながらパルス状のレーザビーム１５ａを放射し、各レーザビーム１５ａの反射光を検出する。これにより、０．２５度ごと、合計１０８１ステップ分の角度で決まる方向における反射点までの距離のデータを得ることができる。なお、本実施形態では、レーザレンジファインダ１５が行う周囲の空間のスキャンは実質的に床面に平行であり、平面的（二次元的）である。しかしながら、レーザレンジファインダ１５は高さ方向のスキャンを行ってもよい。
【００６１】
ＡＧＶ１０の位置および姿勢（向き）と、レーザレンジファインダ１５のスキャン結果とにより、ＡＧＶ１０は、空間Ｓの地図を作成することができる。地図には、ＡＧＶの周囲の壁、柱等の構造物、床の上に載置された物体の配置が反映され得る。地図のデータは、ＡＧＶ１０内に設けられた記憶装置に格納される。
【００６２】
一般に、移動体の位置および姿勢は、ポーズ（ｐｏｓｅ）と呼ばれる。二次元面内における移動体の位置および姿勢は、ＸＹ直交座標系における位置座標（ｘ, ｙ）と、Ｘ軸に対する角度θによって表現される。ＡＧＶ１０の位置および姿勢、すなわちポーズ（ｘ, ｙ, θ）を、以下、単に「位置」と呼ぶことがある。
【００６３】
レーザビーム１５ａの放射位置から見た反射点の位置は、角度および距離によって決定される極座標を用いて表現され得る。本実施形態では、レーザレンジファインダ１５は極座標で表現されたセンサデータを出力する。ただし、レーザレンジファインダ１５は、極座標で表現された位置を直交座標に変換して出力してもよい。
【００６４】
レーザレンジファインダの構造および動作原理は公知であるため、本明細書ではこれ以上の詳細な説明は省略する。レーザレンジファインダ１５によって検出され得る物体の例は、人、荷物、棚、壁である。
【００６５】
レーザレンジファインダ１５は、周囲の空間をセンシングしてセンサデータを取得するための外界センサの一例である。そのような外界センサの他の例としては、イメージセンサおよび超音波センサが考えられる。
【００６６】
走行制御装置１４は、レーザレンジファインダ１５の測定結果と、自身が保持する地図データとを比較して、自身の現在位置を推定することができる。なお、保持されている地図データは、他のＡＧＶ１０が作成した地図データであってもよい。
【００６７】
図７Ａは、ＡＧＶ１０の第１のハードウェア構成例を示している。また図７Ａは、走行制御装置１４の具体的な構成も示している。
【００６８】
ＡＧＶ１０は、走行制御装置１４と、レーザレンジファインダ１５と、２台のモータ１６ａおよび１６ｂと、駆動装置１７と、車輪１１ａおよび１１ｂと、２つのロータリエンコーダ１８ａおよび１８ｂとを備えている。
【００６９】
走行制御装置１４は、マイコン１４ａと、メモリ１４ｂと、記憶装置１４ｃと、通信回路１４ｄと、位置推定装置１４ｅとを有している。マイコン１４ａ、メモリ１４ｂ、記憶装置１４ｃ、通信回路１４ｄおよび位置推定装置１４ｅは通信バス１４ｆで接続されており、相互にデータを授受することが可能である。レーザレンジファインダ１５もまた通信インタフェース（図示せず）を介して通信バス１４ｆに接続されており、計測結果である計測データを、マイコン１４ａ、位置推定装置１４ｅおよび／またはメモリ１４ｂに送信する。
【００７０】
マイコン１４ａは、走行制御装置１４を含むＡＧＶ１０の全体を制御するための演算を行うプロセッサまたは制御回路（コンピュータ）である。典型的にはマイコン１４ａは半導体集積回路である。マイコン１４ａは、制御信号であるＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）信号を駆動装置１７に送信して駆動装置１７を制御し、モータに印加する電圧を調整させる。これによりモータ１６ａおよび１６ｂの各々が所望の回転速度で回転する。
【００７１】
左右のモータ１６ａおよび１６ｂの駆動を制御する１つ以上の制御回路（たとえばマイコン）を、マイコン１４ａとは独立して設けてもよい。たとえば、モータ駆動装置１７が、モータ１６ａおよび１６ｂの駆動をそれぞれ制御する２つのマイコンを備えていてもよい。それらの２つのマイコンは、エンコーダ１８ａおよび１８ｂから出力されたエンコーダ情報を用いた座標計算をそれぞれ行い、所与の初期位置からのＡＧＶ１０の移動距離を推定してもよい。また、当該２つのマイコンは、エンコーダ情報を利用してモータ駆動回路１７ａおよび１７ｂを制御してもよい。
【００７２】
メモリ１４ｂは、マイコン１４ａが実行するコンピュータプログラムを記憶する揮発性の記憶装置である。メモリ１４ｂは、マイコン１４ａおよび位置推定装置１４ｅが演算を行う際のワークメモリとしても利用され得る。
【００７３】
記憶装置１４ｃは、不揮発性の半導体メモリ装置である。ただし、記憶装置１４ｃは、ハードディスクに代表される磁気記録媒体、または、光ディスクに代表される光学式記録媒体であってもよい。さらに、記憶装置１４ｃは、いずれかの記録媒体にデータを書き込みおよび／または読み出すためのヘッド装置および当該ヘッド装置の制御装置を含んでもよい。
【００７４】
記憶装置１４ｃは、走行する空間Ｓの地図データＭ、および、１または複数の走行経路のデータ（走行経路データ）Ｒを記憶する。地図データＭは、ＡＧＶ１０が地図作成モードで動作することによって作成され記憶装置１４ｃに記憶される。走行経路データＲは、地図データＭが作成された後に外部から送信される。本実施形態では、地図データＭおよび走行経路データＲは同じ記憶装置１４ｃに記憶されているが、異なる記憶装置に記憶されてもよい。
【００７５】
走行経路データＲの例を説明する。
【００７６】
端末装置２０がタブレットコンピュータである場合には、ＡＧＶ１０はタブレットコンピュータから走行経路を示す走行経路データＲを受信する。このときの走行経路データＲは、複数のマーカの位置を示すマーカデータを含む。「マーカ」は走行するＡＧＶ１０の通過位置（経由点）を示す。走行経路データＲは、走行開始位置を示す開始マーカおよび走行終了位置を示す終了マーカの位置情報を少なくとも含む。走行経路データＲは、さらに、１以上の中間経由点のマーカの位置情報を含んでもよい。走行経路が１以上の中間経由点を含む場合には、開始マーカから、当該走行経由点を順に経由して終了マーカに至る経路が、走行経路として定義される。各マーカのデータは、そのマーカの座標データに加えて、次のマーカに移動するまでのＡＧＶ１０の向き（角度）および走行速度のデータを含み得る。ＡＧＶ１０が各マーカの位置で一旦停止し、自己位置推定および端末装置２０への通知などを行う場合には、各マーカのデータは、当該走行速度に達するまでの加速に要する加速時間、および／または、当該走行速度から次のマーカの位置で停止するまでの減速に要する減速時間のデータを含み得る。
【００７７】
端末装置２０ではなく運行管理装置５０（たとえば、ＰＣおよび／またはサーバコンピュータ）がＡＧＶ１０の移動を制御してもよい。その場合には、運行管理装置５０は、ＡＧＶ１０がマーカに到達する度に、次のマーカへの移動をＡＧＶ１０に指示してもよい。たとえば、ＡＧＶ１０は、運行管理装置５０から、次に向かうべき目的位置の座標データ、または、当該目的位置までの距離および進むべき角度のデータを、走行経路を示す走行経路データＲとして受信する。
【００７８】
ＡＧＶ１０は、作成された地図と走行中に取得されたレーザレンジファインダ１５が出力したセンサデータとを利用して自己位置を推定しながら、記憶された走行経路に沿って走行することができる。
【００７９】
通信回路１４ｄは、たとえば、Ｂｌｕｅｔｏｏｔｈ（登録商標）および／またはＷｉ−Ｆｉ（登録商標）規格に準拠した無線通信を行う無線通信回路である。いずれの規格も、２．４ＧＨｚ帯の周波数を利用した無線通信規格を含む。たとえばＡＧＶ１０を走行させて地図を作成するモードでは、通信回路１４ｄは、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に準拠した無線通信を行い、１対１で端末装置２０と通信する。
【００８０】
位置推定装置１４ｅは、地図の作成処理、および、走行時には自己位置の推定処理を行う。位置推定装置１４ｅは、ＡＧＶ１０の位置および姿勢とレーザレンジファインダのスキャン結果とにより、移動空間Ｓの地図を作成する。走行時には、位置推定装置１４ｅは、レーザレンジファインダ１５からセンサデータを受け取り、また、記憶装置１４ｃに記憶された地図データＭを読み出す。レーザレンジファインダ１５のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データＭとのマッチングを行うことにより、地図データＭ上における自己位置（ｘ, ｙ, θ）を同定する。位置推定装置１４ｅは、局所的地図データが地図データＭに一致した程度を表す「信頼度」のデータを生成する。自己位置（ｘ, ｙ, θ）、および、信頼度の各データは、ＡＧＶ１０から端末装置２０または運行管理装置５０に送信され得る。端末装置２０または運行管理装置５０は、自己位置（ｘ, ｙ, θ）、および、信頼度の各データを受信して、内蔵または接続された表示装置に表示することができる。
【００８１】
本実施形態では、マイコン１４ａと位置推定装置１４ｅとは別個の構成要素であるとしているが、これは一例である。マイコン１４ａおよび位置推定装置１４ｅの各動作を独立して行うことが可能な１つのチップ回路または半導体集積回路であってもよい。図７Ａには、マイコン１４ａおよび位置推定装置１４ｅを包括するチップ回路１４ｇが示されている。以下では、マイコン１４ａおよび位置推定装置１４ｅが別個独立に設けられている例を説明する。
【００８２】
２台のモータ１６ａおよび１６ｂは、それぞれ２つの車輪１１ａおよび１１ｂに取り付けられ、各車輪を回転させる。つまり、２つの車輪１１ａおよび１１ｂはそれぞれ駆動輪である。本明細書では、モータ１６ａおよびモータ１６ｂは、それぞれＡＧＶ１０の右輪および左輪を駆動するモータであるとして説明する。
【００８３】
移動体１０は、さらに、車輪１１ａおよび１１ｂの回転位置または回転速度を測定するエンコーダユニット１８をさらに備えている。エンコーダユニット１８は、第１ロータリエンコーダ１８ａおよび第２ロータリエンコーダ１８ｂを含む。第１ロータリエンコーダ１８ａは、モータ１６ａから車輪１１ａまでの動力伝達機構のいずれかの位置における回転を計測する。第２ロータリエンコーダ１８ｂは、モータ１６ｂから車輪１１ｂまでの動力伝達機構のいずれかの位置における回転を計測する。エンコーダユニット１８は、ロータリエンコーダ１８ａおよび１８ｂによって取得された信号を、マイコン１４ａに送信する。マイコン１４ａは、位置推定装置１４ｅから受信した信号だけでなく、エンコーダユニット１８から受信した信号を利用して、移動体１０の移動を制御してもよい。
【００８４】
駆動装置１７は、２台のモータ１６ａおよび１６ｂの各々に印加される電圧を調整するためのモータ駆動回路１７ａおよび１７ｂを有する。モータ駆動回路１７ａおよび１７ｂの各々はいわゆるインバータ回路を含む。モータ駆動回路１７ａおよび１７ｂは、マイコン１４ａまたはモータ駆動回路１７ａ内のマイコンから送信されたＰＷＭ信号によって各モータに流れる電流をオンまたはオフし、それによりモータに印加される電圧を調整する。
【００８５】
図７Ｂは、ＡＧＶ１０の第２のハードウェア構成例を示している。第２のハードウェア構成例は、レーザ測位システム１４ｈを有する点、および、マイコン１４ａが各構成要素と１対１で接続されている点において、第１のハードウェア構成例（図７Ａ）と相違する。
【００８６】
レーザ測位システム１４ｈは、位置推定装置１４ｅおよびレーザレンジファインダ１５を有する。位置推定装置１４ｅおよびレーザレンジファインダ１５は、たとえばイーサネット（登録商標）ケーブルで接続されている。位置推定装置１４ｅおよびレーザレンジファインダ１５の各動作は上述した通りである。レーザ測位システム１４ｈは、ＡＧＶ１０のポーズ（ｘ, ｙ, θ）を示す情報をマイコン１４ａに出力する。
【００８７】
マイコン１４ａは、種々の汎用Ｉ／Ｏインタフェースまたは汎用入出力ポート（図示せず）を有している。マイコン１４ａは、通信回路１４ｄ、レーザ測位システム１４ｈ等の、走行制御装置１４内の他の構成要素と、当該汎用入出力ポートを介して直接接続されている。
【００８８】
図７Ｂに関して上述した構成以外は、図７Ａの構成と共通である。よって共通の構成の説明は省略する。
【００８９】
本開示の実施形態におけるＡＧＶ１０は、図示されていないバンパースイッチなどのセーフティセンサを備えていてもよい。ＡＧＶ１０は、ジャイロセンサなどの慣性計測装置を備えていてもよい。ロータリエンコーダ１８ａおよび１８ｂまたは慣性計測装置などの内界センサによる測定データを利用すれば、ＡＧＶ１０の移動距離および姿勢の変化量(角度)を推定することができる。これらの距離および角度の推定値は、オドメトリデータと呼ばれ、位置推定装置１４ｅによって得られる位置および姿勢の情報を補助する機能を発揮し得る。
【００９０】
（４）地図データ
図８Ａ〜図８Ｆは、センサデータを取得しながら移動するＡＧＶ１０を模式的に示す。ユーザ１は、端末装置２０を操作しながらマニュアルでＡＧＶ１０を移動させてもよい。あるいは、図７Ａおよび図７Ｂに示される走行制御装置１４を備えるユニット、または、ＡＧＶ１０そのものを台車に載置し、台車をユーザ１が手で押す、または牽くことによってセンサデータを取得してもよい。
【００９１】
図８Ａには、レーザレンジファインダ１５を用いて周囲の空間をスキャンするＡＧＶ１０が示されている。所定のステップ角毎にレーザビームが放射され、スキャンが行われる。なお、図示されたスキャン範囲は模式的に示した例であり、上述した合計２７０度のスキャン範囲とは異なっている。
【００９２】
図８Ａ〜図８Ｆの各々では、レーザビームの反射点の位置が、記号「・」で表される複数の黒点４を用いて模式的に示されている。レーザビームのスキャンは、レーザレンジファインダ１５の位置および姿勢が変化する間に短い周期で実行される。このため、現実の反射点の個数は、図示されている反射点４の個数よりも遥かに多い。位置推定装置１４ｅは、走行に伴って得られる黒点４の位置を、たとえばメモリ１４ｂに蓄積する。ＡＧＶ１０が走行しながらスキャンを継続して行うことにより、地図データが徐々に完成されてゆく。図８Ｂから図８Ｅでは、簡略化のためスキャン範囲のみが示されている。当該スキャン範囲は例示であり、上述した合計２７０度の例とは異なる。
【００９３】
地図は、地図作成に必要な量のセンサデータを取得した後、そのセンサデータに基づいて、このＡＧＶ１０内のマイコン１４ａまたは外部のコンピュータを用いて作成してもよい。あるいは、移動しつつあるＡＧＶ１０が取得したセンサデータに基づいてリアルタイムで地図を作成してもよい。
【００９４】
図８Ｆは、完成した地図４０の一部を模式的に示す。図８Ｆに示される地図では、レーザビームの反射点の集まりに相当する点群(Point Cloud)によって自由空間が仕切られている。地図の他の例は、物体が占有している空間と自由空間とをグリッド単位で区別する占有格子地図である。位置推定装置１４ｅは、地図のデータ（地図データＭ）をメモリ１４ｂまたは記憶装置１４ｃに蓄積する。なお図示されている黒点の数または密度は一例である。
【００９５】
こうして得られた地図データは、複数のＡＧＶ１０によって共有され得る。
【００９６】
ＡＧＶ１０が地図データに基づいて自己位置を推定するアルゴリズムの典型例は、ＩＣＰ(Iterative Closest Point)マッチングである。前述したように、レーザレンジファインダ１５のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データＭとのマッチングを行うことにより、地図データＭ上における自己位置（ｘ, ｙ, θ）を推定することができる。
【００９７】
ＡＧＶ１０が走行するエリアが広い場合、地図データＭのデータ量が多くなる。そのため、地図の作成時間が増大したり、自己位置推定に多大な時間を要するなどの不都合が生じる可能性がある。そのような不都合が生じる場合には、地図データＭを、複数の部分地図のデータに分けて作成および記録してもよい。
【００９８】
図９は、４つの部分地図データＭ１、Ｍ２、Ｍ３、Ｍ４の組み合わせによって１つの工場の１フロアの全域がカバーされる例を示している。この例では、１つの部分地図データは５０ｍ×５０ｍの領域をカバーしている。Ｘ方向およびＹ方向のそれぞれにおいて隣接する２つの地図の境界部分に、幅５ｍの矩形の重複領域が設けられている。この重複領域を「地図切替エリア」と呼ぶ。１つの部分地図を参照しながら走行しているＡＧＶ１０が地図切替エリアに到達すると、隣接する他の部分地図を参照する走行に切り替える。部分地図の枚数は４枚に限らず、ＡＧＶ１０が走行するフロアの面積、地図作成および自己位置推定を実行するコンピュータの性能に応じて適宜設定してよい。部分地図データのサイズおよび重複領域の幅も、上記の例に限定されず、任意に設定してよい。
【００９９】
（５）運行管理装置の構成例
図１０は、運行管理装置５０のハードウェア構成例を示している。運行管理装置５０は、ＣＰＵ５１と、メモリ５２と、位置データベース（位置ＤＢ）５３と、通信回路５４と、地図データベース（地図ＤＢ）５５と、画像処理回路５６とを有する。
【０１００】
ＣＰＵ５１、メモリ５２、位置ＤＢ５３、通信回路５４、地図ＤＢ５５および画像処理回路５６は通信バス５７で接続されており、相互にデータを授受することが可能である。
【０１０１】
ＣＰＵ５１は、運行管理装置５０の動作を制御する信号処理回路（コンピュータ）である。典型的にはＣＰＵ５１は半導体集積回路である。
【０１０２】
メモリ５２は、ＣＰＵ５１が実行するコンピュータプログラムを記憶する、揮発性の記憶装置である。メモリ５２は、ＣＰＵ５１が演算を行う際のワークメモリとしても利用され得る。
【０１０３】
位置ＤＢ５３は、各ＡＧＶ１０の行き先となり得る各位置を示す位置データを格納する。位置データは、たとえば管理者によって工場内に仮想的に設定された座標によって表され得る。位置データは管理者によって決定される。
【０１０４】
通信回路５４は、たとえばイーサネット（登録商標）規格に準拠した有線通信を行う。通信回路５４はアクセスポイント２(図３)と有線で接続されており、アクセスポイント２を介して、ＡＧＶ１０と通信することができる。通信回路５４は、ＡＧＶ１０に送信すべきデータを、バス５７を介してＣＰＵ５１から受信する。また通信回路５４は、ＡＧＶ１０から受信したデータ（通知）を、バス５７を介してＣＰＵ５１および／またはメモリ５２に送信する。
【０１０５】
地図ＤＢ５５は、ＡＧＶ１０が走行する工場等の内部の地図のデータを格納する。当該地図は、地図４０（図８Ｆ）と同じであってもよいし、異なっていてもよい。各ＡＧＶ１０の位置と１対１で対応関係を有する地図であれば、データの形式は問わない。たとえば地図ＤＢ５５に格納される地図は、ＣＡＤによって作成された地図であってもよい。
【０１０６】
位置ＤＢ５３および地図ＤＢ５５は、不揮発性の半導体メモリ上に構築されてもよいし、ハードディスクに代表される磁気記録媒体、または光ディスクに代表される光学式記録媒体上に構築されてもよい。
【０１０７】
画像処理回路５６はモニタ５８に表示される映像のデータを生成する回路である。画像処理回路５６は、専ら、管理者が運行管理装置５０を操作する際に動作する。本実施形態では特にこれ以上の詳細な説明は省略する。なお、モニタ５９は運行管理装置５０と一体化されていてもよい。また画像処理回路５６の処理をＣＰＵ５１が行ってもよい。
【０１０８】
（６）運行管理装置の動作
図１１を参照しながら、運行管理装置５０の動作の概要を説明する。図１１は、運行管理装置５０によって決定されたＡＧＶ１０の移動経路の一例を模式的に示す図である。
【０１０９】
ＡＧＶ１０および運行管理装置５０の動作の概要は以下のとおりである。以下では、あるＡＧＶ１０が現在、位置Ｍ１におり、幾つかの位置を通過して、最終的な目的地である位置Ｍｎ＋１（ｎ：１以上の正の整数）まで走行する例を説明する。なお、位置ＤＢ５３には位置Ｍ１の次に通過すべき位置Ｍ２、位置Ｍ２の次に通過すべき位置Ｍ３等の各位置を示す座標データが記録されている。
【０１１０】
運行管理装置５０のＣＰＵ５１は、位置ＤＢ５３を参照して位置Ｍ２の座標データを読み出し、位置Ｍ２に向かわせる走行指令を生成する。通信回路５４は、アクセスポイント２を介して走行指令をＡＧＶ１０に送信する。
【０１１１】
ＣＰＵ５１は、ＡＧＶ１０から、アクセスポイント２を介して、定期的に現在位置および姿勢を示すデータを受信する。こうして運行管理装置５０は、各ＡＧＶ１０の位置をトラッキングすることができる。ＣＰＵ５１は、ＡＧＶ１０の現在位置が位置Ｍ２に一致したと判定すると、位置Ｍ３の座標データを読み出し、位置Ｍ３に向かわせる走行指令を生成してＡＧＶ１０に送信する。つまり運行管理装置５０は、ＡＧＶ１０がある位置に到達したと判定すると、次に通過すべき位置に向かわせる走行指令を送信する。これにより、ＡＧＶ１０は最終的な目的位置Ｍｎ＋１に到達することができる。上述した、ＡＧＶ１０の通過位置および目的位置は「マーカ」と呼ばれることがある。
【０１１２】
（７）ＡＧＶの制御例
次に、ＡＧＶ１０の動作のより具体的な例を説明する。下記のＡＧＶ１０の動作は、移動体１０１の動作として本欄冒頭に説明した内容を含む。ＡＧＶ１０と移動体１０１との関係は以下のとおりである。
【０１１３】
ＡＧＶ１０のマイコン１４ａ、位置推定装置１４ｅおよびレーザレンジファインダ１５はそれぞれ、移動体１０１（図１）のコントローラ１０７、位置推定装置１０５、外界センサ１０３に対応する。またＡＧＶ１０のモータ１６ａおよび１６ｂは、移動体１０１の駆動装置１０９に対応する。なお、ＡＧＶ１０のモータ駆動回路１７ａおよび１７ｂを、移動体１０１の駆動装置１０９に含めてもよいし、２つの駆動輪１１ａおよび１１ｂを駆動装置１０９に含めてもよい。
【０１１４】
ＡＧＶ１０のマイコン１４ａはコンピュータであり、以下の説明する制御方法の手順を記述したコンピュータプログラムをメモリ１４ｂから読み出して実行する。コンピュータプログラムはマイコン１４ａに、条件に応じた制御方法を実行させる。
【０１１５】
まず、図１２を適宜参照しながら、本開示で使用する用語を以下のように定義する。図１２は、位置誤差および角度誤差を説明するための図である。
【０１１６】
「位置誤差」（ｄｘ）とは、選択した移動経路（ルート）の始点Ｍｋと終点Ｍｋ＋１とを結ぶ直線と、ＡＧＶ１０の現在地Ｊ（ｘ，ｙ）との距離（法線方向のずれ量）をいう。本開示では理解の便宜のため、直線状のルートを想定して説明する。図１１に示す例ではルートは折れ線状であるが、あるマーカを始点とし、その次のマーカを終点と見なせば、隣接する２つのマーカの間のコースは直線である。つまり図１２のように表現し得る。
【０１１７】
「角度誤差」（ｄθ）とは、現在のＡＧＶ１０の角度と、現在地Ｊから終点Ｍｋ＋１まで直線で向かうときのＡＧＶ１０の角度の差をいう。「角度誤差」（ｄθ）は、例えばＡＧＶ１０の正面方向を０度としたときの、現在値Ｊ（ｘ，ｙ）から終点Ｍｋ＋１に向かう方向の角度として取得し得る。
【０１１８】
「位置誤差積分値」とは、位置誤差を時間積分した値である。積分範囲は、例えば最新の位置誤差の値を１個目として所定個数分（例えば過去１０００個分）である。
【０１１９】
「角度誤差積分値」とは、角度誤差を時間積分した値である。積分範囲は、例えば最新の角度誤差の値を１個目として所定個数分（例えば過去１０００個分）である。
【０１２０】
次に、図１３〜図１７を参照しながら、本願発明者が見出した課題を説明する。
【０１２１】
図１３は、ＡＧＶ１０の走行時の課題を説明するための図である。ＡＧＶ１０がマーカＭ１、・・・、Ｍｍを経由して、目的地Ｍｍ＋１まで走行する例を考える。各マーカは一直線上に配置されているとする。
【０１２２】
ＡＧＶ１０と目的地Ｍｍ＋１とを結ぶ太破線は、ＡＧＶ１０の理想軌道を示している。一方、実線はＡＧＶ１０が実際に走行する経路を示している。本願発明者は２つの課題を見出した。
【０１２３】
第１の課題は、ＡＧＶ１０が走行すると、走行途中に０ではない位置誤差および角度誤差が発生することである。例えば現在地からマーカＭｍまでの区間では、ＡＧＶ１０は理想軌道からずれた位置（最大誤差Ｅｒ）を走行している。
【０１２４】
第２の課題は、マーカＭｍから目的地Ｍｍ＋１までの区間でＡＧＶ１０の姿勢（角度）が大きく変化することである。
【０１２５】
本願発明者が検討したところ、これらの課題は制御誤差に起因することが分かった。ＡＧＶ１０が走行する際には２種類の誤差、すなわち測位誤差および制御誤差、が存在する。測位誤差は、位置推定装置１４ｅの測位および演算によって生じる、実際の座標と算出された座標との誤差である。制御誤差は、制御したとしても目的地に正しく向かわないことで生じる誤差である。制御誤差は、例えばマイコン１４ａが、モータ駆動回路１７ａ、１７ｂがモータ１６ａ、１６ｂを回転させるために必要とされる回転数を求めるための演算の過程で、数値を丸めることによって生じ得る。測位誤差が十分小さく信頼度が十分高い場合でも、制御誤差が存在することによってＡＧＶ１０は理想軌道を走行できない。そこで本願発明者は制御誤差を抑制し、目標位置への到達精度を向上させる制御方法を検討した。
【０１２６】
まず上述の第１の課題の原因について、本願発明者は、現在地からマーカＭｍまでの区間では位置誤差および角度誤差が徐々に蓄積したためであると判断した。位置推定装置１４ｅから出力される座標が正しい場合、ＡＧＶ１０のマイコン１４ａは位置誤差および角度誤差の発生を認識し、各誤差が０になるよう位置および姿勢を補正するはずである。しかしながらこのような誤差が蓄積されたということは、そのような補正が効かなかったことを意味する。
【０１２７】
上述の第２の課題の原因は、マーカＭｍを通過した時点で角度誤差が拡大し、それによって角度誤差を低減するための制御（角度制御）が効き始めたからであると判断できる。結果的には目的地Ｍｍ＋１に到達しているものの、理想軌道と比較すると目的地Ｍｍ＋１には斜めに入っている。理想軌道で入った場合と比較すると、ＡＧＶ１０の姿勢（角度）が異なる。ＡＧＶ１０に荷物を載置したり、ＡＧＶ１０上の荷物をピックアップする場合などを想定すると、ＡＧＶ１０の姿勢の乱れを抑制することが必要とされる。
【０１２８】
第１の課題および第２の課題の各々は独立した原因に起因すると考えられるため、一方の課題を解消すればＡＧＶ１０の姿勢の乱れを抑制し得る。もちろん、第１の課題および第２の課題を両方解決すれば、目標位置へのＡＧＶ１０の到達精度をより向上させることができる。以下、それぞれの課題を解決するための制御手法を説明する。
【０１２９】
第１の課題について検討する。
【０１３０】
図１４は、ＡＧＶ１０を送稿させたときの位置および角度の推移を表している。太実線は位置（ｘ，ｙ）の推移を表し、細破線は角度（θ）の推移を表している。横軸はＡＧＶ１０の走行距離を表す。本例ではＡＧＶ１０を約４ｍ程度走行させた。左の縦軸は理想軌道を０としたときのずれ量、すなわち位置誤差を表す。右の縦軸はＡＧＶ１０の姿勢（角度）を表す。９０度を基準とすれば、９０度からのずれ量を角度誤差として捉えてもよい。
【０１３１】
図１４には３つの区間（ａ）、（ｂ）、（ｃ）が示されている。区間（ａ）は位置誤差が±１０ｍｍ以内の区間である。区間（ｂ）は位置誤差が±１０ｍｍを超えた区間である。区間（ｃ）は位置誤差が再び±１０ｍｍ以内に戻った区間である。
【０１３２】
区間（ａ）では、位置誤差は総じて単調に変化しており、位置誤差が０になるような制御は行われていないことが分かる。一方、区間（ｂ）では位置誤差が小さくなるよう制御が行われていることが分かる。区間（ｃ）では再び単調に変化している。
【０１３３】
区間（ａ）から理解されるように、位置誤差が±１０ｍｍ以内であれば、ＡＧＶ１０の位置誤差は０に収束せず、理想軌道（位置誤差＝０）を横切るように概ね直進していることが分かる。誤差が小さいときは、ＡＧＶ１０は直進すると言える。
【０１３４】
ここでＡＧＶ１０の駆動方法を説明する。図７Ａおよび図７Ｂから理解されるように、本実施形態にかかるＡＧＶ１０は左右の２つの駆動輪１１ａおよび１１ｂを有している。各駆動輪１１ａおよび１１ｂには、それぞれモータ駆動回路１７ａ、１７ｂによって駆動されるモータ１６ａ、１６ｂの回転が伝達される。各モータ１６ａ、１６ｂをどのような回転数で回転させるかは、マイコン１４ａからの指令に基づいて決定される。
【０１３５】
ＡＧＶ１０は、左右の駆動輪１１ａおよび１１ｂの速度差を利用して位置および角度の制御を行う。マイコン１４ａは、位置誤差および角度誤差のそれぞれの大きさに応じて、各モータ１６ａ、１６ｂの回転速度に差を与える。
【０１３６】
いま、補正係数をｋとし、右駆動輪の回転数をＲ１とし、左の駆動輪の回転数をＲ２とする。例えば駆動輪１１ａを右駆動輪、駆動輪１１ｂを左駆動輪と呼ぶ。便宜的に各モータ１６ａ、１６ｂの回転数と各駆動輪１１ａ、１１ｂの回転数とは一致するとして説明する。マイコン１４ａは、外部から与えられた走行速度、またはＡＧＶ１０の現在の速度に応じて基準速度を決定する。基準速度を決定すると、マイコン１４ａは基準速度で走行するための回転数（基準回転数）を算出する。
【０１３７】
そしてマイコン１４ａは、補正係数ｋ＜０のときは、
式（１）：  右駆動輪の回転数Ｒ１＝基準回転数＊(１＋補正係数ｋ) 
式（２）：  左駆動輪の回転数Ｒ２＝基準回転数
によって各モータ１６ａ、１６ｂの回転数を決定する。これによりＡＧＶ１０は右折し、または右方向に弧を描いて進む。
【０１３８】
また、マイコン１４ａは、補正係数ｋ≧０のときは、
式（３）：  右駆動輪の回転数Ｒ１＝基準回転数
式（４）：  左駆動輪の回転数Ｒ２＝基準回転数＊(１−補正係数ｋ) 
によって各モータ１６ａ、１６ｂの回転数を決定する。これによりＡＧＶ１０は左折し、または左方向に弧を描いて進む。
【０１３９】
上述の補正係数ｋを含む式では、補正係数ｋの値が０に近いほど左右の駆動輪の回転数差が０に近付くことが分かる。補正係数ｋの値が０に近い場合とは、微小な位置誤差量・角度誤差量の補正が行われることを意味する。すなわち位置誤差量・角度誤差量が小さいことを意味する。補正係数ｋを利用して算出される回転数Ｒ１またはＲ２は、整数値として算出され得る。つまり、マイコン１４ａが数値演算を行う際、小数点以下の数値は丸められる。そのため、補正係数ｋの大きさによっては、整数値化されると回転数はＲ１＝Ｒ２になる場合がある。
【０１４０】
図１５は、マイコン１４ａに算出させた２つの駆動輪の回転数でＡＧＶ１０を走行させたときのＡＧＶ１０の挙動を示している。横軸はＡＧＶ１０の走行距離を表し、縦軸は走行開始時の正面方向からのずれ量の大きさを表す。
【０１４１】
曲線Ａ〜Ｃの違いは、右駆動輪の回転数Ｒ１を１としたときの左駆動輪の回転数Ｒ２の大きさの違いである。すなわち曲線Ａは１：０．９５、曲線Ｂは１：０．９７５、曲線Ｃは１：０．９９である。
【０１４２】
曲線ＡおよびＢでは、ずれ量が拡大している。これは、マイコン１４ａが算出した各回転数の値の違いが各モータの回転の違いとして反映されていることを意味する。
【０１４３】
一方、曲線Ｃは、ずれ量は拡大しておらず、ＡＧＶ１０はほぼ直進している。これは、マイコン１４ａが算出した各回転数の値の違いが各モータの回転の違いとして反映されず、位置制御および角度制御が効かなかったことを意味する。
【０１４４】
本願発明者はさらに実験を行い、その結果、回転数比が１：０．９８以下になるとき、つまり補正係数が±０．０２以下になるとき、制御が効かず直進することを確認した。本開示では、位置制御および角度制御が効く範囲の補正係数を、モータ１６ａ、１６ｂの「制御可能量」と表現する。なおモータ１６ａ、１６ｂは、駆動装置１０９（図１）の一部に含まれ得る。
【０１４５】
制御可能量は、補正係数についてのみならず、実際の位置誤差にも対応付けることが可能である。補正係数が±０．０２以下の場合とは、本願発明者が検証した環境では、１０ｍｍ以下の位置誤差に相当する。つまり、位置誤差が１０ｍｍ以下の状況下ではＡＧＶ１０の左右の駆動輪の回転数は一致し直進するため、位置誤差を０にするための制御が効かない。左右の駆動輪の回転数差を利用した制御量は０である。
【０１４６】
この検証の結果は、図１４に示すＡＧＶ１０の挙動によく現れている。区間（ａ）の位置誤差が±１０ｍｍ以内ではＡＧＶ１０はほぼ直進しており、位置制御は効いていない。一方、区間（ｂ）では補正係数または位置誤差が制御可能量より大きくなったため、位置制御および角度制御が効き、再度、位置誤差が±１０ｍｍ以内に戻っている。
【０１４７】
既に説明したように、本願発明者は、整数値化された場合にＲ１＝Ｒ２になる境界となる補正係数または位置誤差を求め、補正係数または位置誤差の値に応じてＡＧＶ１０の制御を切り替えることを見出した。詳細は後述する。
【０１４８】
次に、第２の課題について検討する。
【０１４９】
本願発明者は、ＡＧＶ１０を５ｍ先の目的位置まで走行させた。このときの位置誤差（ｄｘ）は１０ｍｍであった。ＡＧＶ１０は、目的位置の方向と台車の向きを一致させるように制御を行う。しかしながら、上述のとおり位置誤差（ｄｘ）が１０ｍｍの場合、位置制御は効かずＡＧＶ１０は直進する。直進するだけでは、目的位置に到達することは当然できない。
【０１５０】
図１６は、ＡＧＶ１０の角度誤差（ｄθ）の変化を示している。目的位置に到達する直前から角度誤差が急激に大きくなり発散していることが確認できる。このような角度誤差を利用して制御を行うとＡＧＶ１０の挙動が安定せず、位置誤差が小さいにもかかわらず過剰な制御が行われる可能性があり得る。
【０１５１】
図１７は、ＡＧＶ１０の位置（ｘ，ｙ）および角度（θ）の変化を示している。ＡＧＶ１０を５ｍ先の目的位置まで走行させた。実線は位置を表し、破線は角度を表す。目的位置から距離Ｌよりも近い範囲に入ると、角度（θ）が大きく変化すると共に、位置（ｘ，ｙ）の結果も乱れていることが分かる。目的位置到着時の位置誤差は１５ｍｍ、角度誤差は９度であった。
【０１５２】
位置誤差が０の状況を維持しながら目的位置に到達することが好ましいが、制御が効かない範囲の位置誤差が存在することは避けられない。つまり、角度誤差が急激に大きくなる状況は発生し得る。そのため本願発明者は、角度誤差が急激に大きくなる範囲では角度誤差を用いた制御を行わないことが妥当であると考えた。
【０１５３】
図１６および図１７には、角度制御を停止する位置Ｌが示されている。ＡＧＶ１０は、コース上の目標点から予め定められた範囲Ｌ内に到達した後は、角度制御を停止し位置制御のみに切り替える。具体的には、角度誤差が１度になる６００ｍｍ手前の位置で角度制御を停止し位置制御のみに切り替える。
【０１５４】
以上説明したように、本開示では、第１の課題への対応として、補正係数または位置誤差の大きさに応じて制御を切り替える。また、第２の課題への対応として、コース上の目標点から予め定められた範囲内に到達したときは、角度を用いた制御を停止し、位置のみを用いた制御に切り替える。予め定められた範囲は、ＡＧＶ１０が走行する「残存距離」として記載されている。
【０１５５】
図１８は、補正係数および残存距離に応じて採用され得る制御タイプの分類を示している。参考として、境界となる閾値ＴＨ１として、制御可能量である位置誤差ｄｘを１０ｍｍまたは補正係数ｋ０を０．０２としている。また、目的位置から予め定められた範囲の閾値ＴＨ２、つまり残存距離Ｌの閾値を、６００ｍｍとしている。これらは一例である。実際に利用されるＡＧＶに応じて制御可能量を与える補正係数または位置誤差を決定し得るし、角度誤差が発散する距離に応じて残存距離を決定し得る。
【０１５６】
以下の説明では、比例制御を「Ｐ制御」と記述し、積分制御を「Ｉ制御」と記述する場合がある。説明に当たっては、位置Ｐ制御量をＰｏｓ＿ｐ、位置Ｉ制御量をＰｏｓ＿ｉ、角度Ｐ制御量をＡｎｇ＿ｐ、角度Ｉ制御量をＡｎｇ＿ｉとおく。各制御量は以下の式で計算される。
Ｐｏｓ＿ｐ  ＝  比例ゲインＫｐｐ  ＊  位置誤差ｄｘ
Ａｎｇ＿ｐ  ＝  比例ゲインＫｐａ  ＊  角度誤差ｄθ
Ｐｏｓ＿ｉ  ＝  積分ゲインＫｉｐ  ＊  位置誤差積分値Ｓｐ
Ａｎｇ＿ｉ  ＝  積分ゲインＫｉａ  ＊  角度誤差積分値Ｓａ
【０１５７】
比例ゲインＫｐｐおよびＫｐａ、積分ゲインＫｉｐおよびＫｉａはいずれも、環境に応じて異なり得る。具体的な値の例示は省略する。
【０１５８】
以下、ＡＧＶ１０において行われる各制御タイプを詳細に説明する。なお、説明の便宜上、ＡＧＶ１０は制御タイプ１〜４を切り替え可能であるとして説明するが、全ての制御タイプ１〜４を実装することは必須ではない。制御タイプ１および２を切り替えるが制御タイプ３および４を行わないＡＧＶが存在してもよいし、制御タイプ１および２を行わず制御タイプ３および４を切り替えるＡＧＶが存在してもよい。
【０１５９】
以下、各制御タイプ（図１８）を説明する。
【０１６０】
制御タイプ１
制御タイプ１は、位置誤差または補正係数が閾値ＴＨ１よりも大きく、かつＡＧＶ１０が目的位置から予め定められた範囲ＴＨ２内に到達していない場合に該当する。位置誤差または補正係数が閾値ＴＨ１よりも大きいため、各駆動輪の回転数を独立して制御することが可能である。
【０１６１】
マイコン１４ａは、位置および角度を用いる比例制御により各モータ１６ａ、１６ｂを駆動させる。比例制御に当たって用いられる補正係数ｋは以下の式で求められる。
補正係数ｋ  ＝  Ｐｏｓ＿ｐ  ＋  Ａｎｇ＿ｐ
【０１６２】
位置Ｐ制御量Ｐｏｓ＿ｐおよび角度Ｐ制御量Ａｎｇ＿ｐの内容は上述の通りである。
【０１６３】
得られた補正係数ｋは上述の式（１）または式（４）で利用されて、いずれか一方の駆動輪の回転数を算出するために用いられる。
【０１６４】
制御タイプ２
制御タイプ２は、位置誤差または補正係数が閾値ＴＨ１以下で、かつＡＧＶ１０が目的位置から予め定められた範囲ＴＨ２内に到達していない場合に該当する。位置誤差または補正係数が閾値ＴＨ１以下であるため、制御タイプ１の補正係数ｋでは各駆動輪の回転数を独立して制御することができない。
【０１６５】
マイコン１４ａは、位置および角度を用いる積分制御により各モータ１６ａ、１６ｂを駆動させる。積分制御では以下の補正係数ｋが利用される。
補正係数ｋ  ＝  Ｐｏｓ＿ｉ  ＋  Ａｎｇ＿ｉ
【０１６６】
上述のとおり、位置Ｉ制御量Ｐｏｓ＿ｉには位置誤差積分値Ｓｐが用いられ、角度Ｉ制御量Ａｎｇ＿ｉには角度誤差積分値Ｓａが用いられている。位置および角度の各々について、微小な誤差量の累積値を利用して各モータ１６ａ、１６ｂの回転を制御することで、位置誤差または補正係数が閾値ＴＨ１以下であっても位置および角度を用いてＡＧＶ１０の制御できる。
【０１６７】
制御タイプ３
制御タイプ３は、位置誤差または補正係数が閾値ＴＨ１よりも大きく、かつＡＧＶ１０が目的位置から予め定められた範囲ＴＨ２内に到達した場合に該当する。
【０１６８】
マイコン１４ａは、角度を用いる制御を行わず、位置のみを用いる比例制御により各モータ１６ａ、１６ｂを駆動させる。比例制御に当たって用いられる補正係数ｋは以下の式で求められる。
補正係数ｋ  ＝  Ｐｏｓ＿ｐ
【０１６９】
角度制御を行わないことにより、発散する角度誤差の影響を受けることなく、ＡＧＶ１０を走行させることができる。
【０１７０】
制御タイプ４
制御タイプ２は、位置誤差または補正係数が閾値ＴＨ１以下で、かつＡＧＶ１０が目的位置から予め定められた範囲ＴＨ２内に到達した場合に該当する。
【０１７１】
マイコン１４ａは、位置のみを用いる積分制御により各モータ１６ａ、１６ｂを駆動させる。積分制御では以下の補正係数ｋが利用される。
補正係数ｋ  ＝  Ｐｏｓ＿ｉ
【０１７２】
上述のとおり、位置Ｉ制御量Ｐｏｓ＿ｉには位置誤差積分値Ｓｐが用いられ、角度Ｉ制御量Ａｎｇ＿ｉには角度誤差積分値Ｓａが用いられている。発散する角度誤差を利用せず、微小な位置誤差量の累積値を利用して各モータ１６ａ、１６ｂの回転を制御することで、位置誤差または補正係数が閾値ＴＨ１以下であっても、位置を用いてＡＧＶ１０を制御できる。
【０１７３】
図１９は、制御タイプ１および２を切り替えて動作するＡＧＶ１０の挙動を示している。太実線および細破線はそれぞれ位置（ｘ，ｙ）および角度（θ）の推移を表している。横軸、右の縦軸および左の縦軸は図１４の例と同じである。図１４に示される、本開示の制御を行わない場合のＡＧＶ１０の挙動との相違を説明する。
【０１７４】
図１９に示す挙動のうち、位置誤差が±１０ｍｍを超えている区間（ａ）では、制御タイプ１による比例制御が行われ、位置誤差が±１０ｍｍ以内に入った区間（ｂ）では、制御タイプ２による積分制御が行われる。区間（ｂ）の挙動をみると、特に角度が安定して９０の方向に向かうよう遷移していることが分かる。位置誤差も０に近付くよう遷移している。つまり、位置誤差が±１０ｍｍ以内であっても、ＡＧＶ１０は理想軌道を跨いで直進するのではなく、理想軌道に収束するよう位置制御が有効に機能していると言うことができる。この結果は、ＡＧＶ１０が±１０ｍｍ以内の位置誤差を低減できるよう動作したことを意味する。
【０１７５】
図２０は、制御タイプ３および４を切り替えて動作するＡＧＶ１０の挙動を示している。実線および破線はそれぞれ位置（ｘ，ｙ）および角度（θ）の推移を表している。横軸、右の縦軸および左の縦軸は図１７の例と同じである。５ｍ先の目的位置からＬ以内（ＴＨ２内）の部分に注目すると、図１７に示される、本開示の制御を行わない場合のＡＧＶ１０の挙動と対照的に、図２０に示す挙動は非常に安定している。角度の発散はなく、かつ位置制御が適切に機能していることが把握される。
【０１７６】
図２０の例では、目的位置到着時の位置誤差は４ｍｍ、角度誤差は１度であった。図１７の例では位置誤差が１５ｍｍ、角度誤差が９度であったことと比較すると、目標位置への到達精度が向上している。なお位置誤差が４ｍｍであるから、目的位置到着時には制御タイプ４の積分制御が行われたことになる。
【０１７７】
図２１は、制御方法を切り替えながら走行するＡＧＶ１０の挙動を示している。５ｍ先の目的位置まで走行する例である。実線、破線、横軸および左右の縦軸は図１９の記載と同じである。図１９との相違点は、５ｍ先の目的位置まで走行させたことである。
【０１７８】
図示される例では、区間（ａ）において制御タイプ１の比例制御、区間（ｂ）において制御タイプ（２）の積分制御、区間（ｃ）において制御タイプ（４）の積分制御が行われた。目標位置到達時の位置誤差は２ｍｍ、角度誤差は０．５度であった。
【０１７９】
（変形例）
本願発明者は、上述の制御タイプ３が適用される条件下での制御にはさらに改善の余地があると考えた。
【０１８０】
図２２Ａは、位置のみを用いる比例制御によるＡＧＶ１０の位置に関する挙動を示している。図示されるように、ＡＧＶ１０は振動しながら移動している。補正係数によっては発散する場合もあり得る。軌道が振動しまたは発散しないよう、つまり減衰するよう制御すれば、目的位置への到達精度をより向上させることができる。図２２Ｂは減衰振動的な収束軌道の一例を示している。  
【０１８１】
本願発明者は、制御タイプ３を制御タイプ４に統合し、位置のみを用いる積分制御に切り替えるよう、制御方法を改良した。
【０１８２】
図２３は、変形例による制御タイプの分類を示している。図１８に示す制御タイプ３および４が、制御タイプ５に置き換えられている。制御タイプ５は、位置誤差または補正係数が閾値ＴＨ１以下であるかどうかにかかわらず、ＡＧＶ１０が目的位置から予め定められた範囲ＴＨ２内に到達した場合に選択される。
【０１８３】
制御タイプ５の具体的な内容は、制御タイプ４と同じである。すなわち、補正係数ｋ  は以下の式で求められる。
補正係数ｋ  ＝  Ｐｏｓ＿ｉ
【０１８４】
制御タイプ５によれば、ＡＧＶ１０は減衰振動的な軌道を走行するため、振動または発散する軌道を走行するよりも、精度良く目的位置に到達することが可能になる。
【０１８５】
従来の制御方法（本開示の制御方法の適用前）、および本開示の制御方法（適用後）を１０回ずつ試行し、実証した有効性を以下に示す。数値（％）は、適用後誤差／適用前誤差により算出した、改善効果を示している。
（ｉ）目標位置平均絶対誤差：１１．１％
（ii）目標位置最大誤差：    ５０．０％
（iii）走行中の平均絶対誤差：２２．４％
（iv）走行中の最大誤差：    ７６．９％
（v）平均角度誤差：        ５４．５％
【０１８６】
本開示の制御方法の適用後は、明らかに位置誤差が低減されていることが理解される。本開示の制御方法を採用することにより目的位置への到達精度をより向上できることが確認された。
【０１８７】
上述の実施形態では、閾値ＴＨ１を位置誤差、または、比例制御では当該位置誤差の補正が効かなくなる補正係数ｋを用いた例を説明した。さらなる変形例として、角度誤差を利用して、比例制御および積分制御の一方を選択してもよい。例えば、位置誤差１０ｍｍより大きく、かつ角度誤差が１度より大きければ、マイコン１４ａは制御タイプ１（比例制御）を選択する。また、位置誤差１０ｍｍ以下であって、かつ角度誤差が１度以下であれば、マイコン１４ａは制御タイプ２（積分制御）を選択する。「角度誤差が１度」は一例であり、補正が効かない境界の角度値を設定することができる。なお、位置誤差１０ｍｍより大きいが、角度誤差が１度以下の場合、または、位置誤差１０ｍｍ以下だが、角度誤差が１度より大きい場合にどの制御を選択するかは任意に決定できる。その場合には、例えば位置誤差を優先して、図１８または図２３に記載の基準で比例制御または積分制御を選択してもよい。
【０１８８】
以上、本開示にかかるＡＧＶ（移動体）の実施形態を説明した。
【０１８９】
上記の包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラム、または記録媒体によって実現されてもよい。あるいは、システム、装置、方法、集積回路、コンピュータプログラム、および記録媒体の任意な組み合わせによって実現されてもよい。
【産業上の利用可能性】
【０１９０】
本開示の例示的な移動体および移動体システムは、工場、倉庫、建設現場、物流、病院などで荷物、部品、完成品などの物の移動および搬送に好適に利用され得る。
【符号の説明】
【０１９１】
１００  移動体管理システム、  １０１  移動体、  １０３  外界センサ、  １０５  位置推定装置、  １０７  コントローラ、  １０９  駆動装置
【図１】
2020166701.tif 000003
【図２】
2020166701.tif 000004
【図３】
2020166701.tif 000005
【図４】
2020166701.tif 000006
【図５Ａ】
2020166701.tif 000007
【図５Ｂ】
2020166701.tif 000008
【図６】
2020166701.tif 000009
【図７Ａ】
2020166701.tif 000010
【図７Ｂ】
2020166701.tif 000011
【図８Ａ】
2020166701.tif 000012
【図８Ｂ】
2020166701.tif 000013
【図８Ｃ】
2020166701.tif 000014
【図８Ｄ】
2020166701.tif 000015
【図８Ｅ】
2020166701.tif 000016
【図８Ｆ】
2020166701.tif 000017
【図９】
2020166701.tif 000018
【図１０】
2020166701.tif 000019
【図１１】
2020166701.tif 000020
【図１２】
2020166701.tif 000021
【図１３】
2020166701.tif 000022
【図１４】
2020166701.tif 000023
【図１５】
2020166701.tif 000024
【図１６】
2020166701.tif 000025
【図１７】
2020166701.tif 000026
【図１８】
2020166701.tif 000027
【図１９】
2020166701.tif 000028
【図２０】
2020166701.tif 000029
【図２１】
2020166701.tif 000030
【図２２Ａ】
2020166701.tif 000031
【図２２Ｂ】
2020166701.tif 000032
【図２３】
2020166701.tif 000033