JP2020166701A - 移動体およびコンピュータプログラム - Google Patents
移動体およびコンピュータプログラム Download PDFInfo
- Publication number
- JP2020166701A JP2020166701A JP2019068092A JP2019068092A JP2020166701A JP 2020166701 A JP2020166701 A JP 2020166701A JP 2019068092 A JP2019068092 A JP 2019068092A JP 2019068092 A JP2019068092 A JP 2019068092A JP 2020166701 A JP2020166701 A JP 2020166701A
- Authority
- JP
- Japan
- Prior art keywords
- moving body
- error
- motor
- rotation speed
- angle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004590 computer program Methods 0.000 title claims description 21
- 238000012937 correction Methods 0.000 claims description 75
- 230000010354 integration Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 32
- 238000010586 diagram Methods 0.000 description 33
- 230000006854 communication Effects 0.000 description 25
- 238000004891 communication Methods 0.000 description 25
- 239000003550 marker Substances 0.000 description 21
- 230000006399 behavior Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 11
- 230000007613 environmental effect Effects 0.000 description 9
- 238000005259 measurement Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010027146 Melanoderma Diseases 0.000 description 1
- 206010064127 Solar lentigo Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
Abstract
【課題】目標位置への移動体の到達精度を向上させる技術を提供する。【解決手段】移動体(101)は、駆動装置(109)と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサ(103)と、センサデータと予め用意された地図データとを照合して、照合結果に基づき移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置(105)と、位置推定装置から出力された位置情報を参照しながら、予め設定されたコースに沿って駆動装置を制御して移動体を移動させるコントローラ(107)とを有している。コントローラは、移動体の位置とコースとの位置誤差が駆動装置の制御可能量よりも大きいときは、位置および角度を用いる比例制御により駆動装置を駆動させ、位置誤差が制御可能量以下のときは位置および角度を用いる積分制御により駆動装置を駆動させる。【選択図】図1
Description
本開示は、移動体およびコンピュータプログラムに関する。
所定の経路に沿って自律的に空間を移動する自律移動ロボットが開発されている。自律移動ロボットは、レーザ距離センサ等の外界センサを用いて周囲の空間をセンシングし、センシング結果と、予め用意された地図とのマッチングを行い、自身の現在の位置および姿勢を推定(同定)する。自律移動ロボットは、自身の現在の位置および姿勢を制御しながら、当該経路に沿って移動することができる。
特開2005−112498号公報は、走行する移動棚の姿勢制御技術を開示する。移動棚のコントローラは、移動棚1の左右方向のずれ(移動棚1の位置)に関するずれ量が所定量に達するまでは移動棚1の姿勢を修正し、所定量に達すると移動棚1の左右方向のずれを修正する。
特開平01−067609号公報は、ロボットの姿勢制御技術を開示する。予め設定されている目標地点の座標と、ロボットに設けている加速度計の値を2回積分して得た現在地点の座標Pとを比較して位置偏差が求められる。また、予め設定されている目標位置における目標姿勢と、ロボットに設けた回転速度計の値を積分して求めた現在の姿勢とを比較して角度偏差が求められる。位置偏差および角度偏差は復元力であるモーメントの算出に利用される。当該モーメントを含む種々のモーメントを用いて、ロボットは目標位置に目標角度で到達する。
本願の、限定的ではない例示的なある実施形態は、目標位置への移動体の到達精度を向上させる技術を提供する。
本開示の例示的な実施形態における移動体は、非限定的で例示的な実施形態において、自律的に移動することが可能な移動体であって、前記移動体を移動させる駆動装置と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させるコントローラとを備え、前記コントローラは、前記移動体の位置と前記コースとの位置誤差が前記駆動装置の制御可能量よりも大きいときは、前記位置および前記角度を用いる比例制御により前記駆動装置を駆動させ、前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御により前記駆動装置を駆動させる。
本開示の例示的な実施形態におけるコンピュータプログラムは、非限定的で例示的な実施形態において、自律的に移動することが可能な移動体に搭載されたコンピュータであるコントローラに実行されるコンピュータプログラムであって、前記移動体は、前記移動体を移動させる駆動装置と、周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させる、前記コントローラとを備え、前記コンピュータプログラムは前記コントローラに、前記移動体の位置と前記コースとの位置誤差と、前記駆動装置の制御可能量とを比較させ、前記位置誤差が前記制御可能量よりも大きいときは前記位置および前記角度を用いる比例制御を実行させ、前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御を実行させる。
本開示の実施形態によれば、目標位置への移動体の到達精度を向上させることができる。
<用語>
本開示の実施形態を説明する前に、本明細書において使用する用語の定義を説明する。
本開示の実施形態を説明する前に、本明細書において使用する用語の定義を説明する。
「無人搬送車」(AGV)とは、本体に人手または自動で荷物を積み込み、指示された場所まで自動走行し、人手または自動で荷卸しをする無軌道車両を意味する。「無人搬送車」は、無人牽引車および無人フォークリフトを含む。
「無人」の用語は、車両の操舵に人を必要としないことを意味しており、無人搬送車が「人(たとえば荷物の積み下ろしを行う者)」を搬送することは除外しない。
「無人牽引車」とは、人手または自動で荷物の積み込み荷卸しをする台車を牽引して、指示された場所まで自動走行する無軌道車両である。
「無人フォークリフト」とは、荷物移載用のフォークなどを上下させるマストを備え、フォークなどに荷物を自動移載し指示された場所まで自動走行し、自動荷役作業をする無軌道車両である。
「無軌道車両」とは、車輪と、車輪を回転させる電気モータまたはエンジンを備える移動体(vehicle)である。
「移動体」とは、人または荷物を載せて移動する装置であり、移動のための駆動力(traction)を発生させる車輪、二足または多足歩行装置、プロペラなどの駆動装置を備える。本開示における「移動体」の用語は、狭義の無人搬送車のみならず、モバイルロボット、サービスロボット、およびドローンを含む。
「自動走行」は、無人搬送車が通信によって接続されるコンピュータの運行管理システムの指令に基づく走行と、無人搬送車が備える制御装置による自律的走行とを含む。自律的走行には、無人搬送車が所定の経路に沿って目的地に向かう走行のみならず、追尾目標に追従する走行も含まれる。また、無人搬送車は、一時的に作業者の指示に基づくマニュアル走行を行ってもよい。「自動走行」は、一般には「ガイド式」の走行および「ガイドレス式」の走行の両方を含むが、本開示では「ガイドレス式」の走行を意味する。
「ガイド式」とは、誘導体を連続的または断続的に設置し、誘導体を利用して無人搬送車を誘導する方式である。
「ガイドレス式」とは、誘導体を設置せずに誘導する方式である。本開示の実施形態における無人搬送車は、自己位置推定装置を備え、ガイドレス式で走行することができる。
「自己位置推定装置」は、レーザレンジファインダなどの外界センサによって取得されたセンサデータに基づいて環境地図上における自己位置を推定する装置である。
「外界センサ」は、移動体の外部の状態をセンシングするセンサである。外界センサには、たとえば、レーザレンジファインダ(測域センサともいう)、カメラ(またはイメージセンサ)、LIDAR(Light Detection and Ranging)、ミリ波レーダ、および磁気センサがある。
「内界センサ」は、移動体の内部の状態をセンシングするセンサである。内界センサには、たとえばロータリエンコーダ(以下、単に「エンコーダ」と称することがある)、加速度センサ、および角加速度センサ(たとえばジャイロセンサ)がある。
「SLAM(スラム)」とは、Simultaneous Localization and Mappingの略語であり、自己位置推定と環境地図作成を同時に行うことを意味する。
<例示的な実施形態>
以下、添付の図面を参照しながら、本開示による移動体および移動体管理システムの一例を説明する。なお、必要以上に詳細な説明は省略する場合がある。たとえば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。本発明者らは、当業者が本開示を十分に理解するために添付図面および以下の説明を提供する。これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
以下、添付の図面を参照しながら、本開示による移動体および移動体管理システムの一例を説明する。なお、必要以上に詳細な説明は省略する場合がある。たとえば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。本発明者らは、当業者が本開示を十分に理解するために添付図面および以下の説明を提供する。これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
図1は、移動体101の概略構成を示すブロック図である。
移動体101は、外界センサ103と、位置推定装置105と、コントローラ107と、駆動装置109とを備えている。ある実施形態では位置推定装置105およびコントローラ107は、それぞれ別個の半導体集積回路チップであるが、他の実施形態では、位置推定装置105およびコントローラ107は1つの半導体集積回路チップであり得る。
駆動装置109は、移動体101を移動させる機構を備えている。駆動装置109は、例えば少なくとも1台の駆動用電気モータ(以下、単に「モータ」と称する)、および、当該モータを制御するモータ制御回路を備え得る。
外界センサ103は、例えばレーザレンジファインダ、カメラ、レーダ、またはLIDARなどの、外部環境をセンシングするセンサである。外界センサ103は、所定の角度範囲で周囲の空間を繰り返しスキャンしてセンサデータを出力する。
位置推定装置105は、不図示の記憶装置に地図データを格納している。地図データは、例えば、移動体101の動作開始前に取得されたセンサデータを用いて生成されている。センサデータは、実際に移動体101が空間を移動しながら取得され得る。
位置推定装置105は、外界センサ103から出力されたセンサデータと当該地図データとを照合して、照合結果に基づき移動体の位置および姿勢を推定する。位置推定装置105は、推定した移動体の位置および姿勢(orientation)を示す情報(本明細書において「位置情報」と称する)を順次出力する。位置推定装置105は、センサデータと地図データとを照合した際、両者が一致した程度を示す信頼度を出力してもよい。
コントローラ107は、例えば、半導体集積回路であるマイクロコントローラユニット(マイコン)である。コントローラ107は、予め定められたコースに沿って移動体101を移動させる。具体的にはコントローラ107は、移動体101の位置とコースとの誤差を解消するための補正係数の大きさが駆動装置109の「制御可能量」よりも大きいときは位置および角度のそれぞれについて比例制御を実行する。コントローラ107は、移動体101の位置とコースとの誤差を解消するための補正係数の大きさが駆動装置109の「制御可能量」以下のときは位置および角度のそれぞれについて積分制御を実行する。
駆動装置109の「制御可能量」とは、本開示では、駆動装置109が移動体101の位置および/または姿勢を比例制御によって変更可能な最小の値を言う。「制御可能量」は駆動装置109として実装されているハードウェアおよび/またはソフトウェアの制約によって決定され得る。
いま、左右の2つの駆動輪の単位時間当たりの回転数(以下、本開示では「回転数」と略記する。)を変化させることによって移動体101の進行方向を調整する例を考える。右の駆動輪の回転数R1を基準として、左の駆動輪の回転数R2を決定するとする。つまり、回転数R1に対し、回転数R2をR2=(1−k)*R1によって決定するとする。k(>0)を補正係数または補正倍率と呼ぶ。補正係数kを小さくしてゆくと、ある補正係数k0以下では、理論上は異なる値であっても実際の回転数R2は回転数R1と同じになる。その理由の一例として、コントローラ107の数値演算によって、求められる回転数が整数に丸められて、実際にはR1=R2になるからである。
本願発明者は、ある補正係数k0以下の補正係数kを用いても、回転数R1=回転数R2になるため、左右の駆動輪の回転数を独立して調整できないことを見出した。逆に、補正係数kがk0よりも大きければ、駆動装置109は、左右の駆動輪を互いに異なる回転数R1およびR2で回転させることができ、移動体101の位置および/または姿勢を制御可能である。つまり、補正係数k0を境界として、解消可能な最小の位置誤差が決定され得る。例えば、補正係数k0よりも大きい補正係数を用いれば10mmよりも大きい位置誤差を解消することができるが、補正係数k0以下では10mm以下の位置誤差を解消することはできない。補正係数k0によって変更可能な移動体101の位置および/または姿勢は、例えばコントローラ107において行われる数値演算で用いられる変数の型により、各移動体101について一意に決定され得る。
図2は、移動体101の動作の概要を示すフローチャートである。
ステップS2において移動体101の外界センサ103は、周囲の空間を繰り返しスキャンしてスキャン毎に得られたセンサデータを出力する。ステップS4において位置推定装置105はセンサデータと環境地図データとを照合する。ステップS6において、位置推定装置105は、推定した位置情報を出力する。
ステップS8において、コントローラ107は、移動体101の位置とコースとの位置誤差が、駆動装置109の制御可能量よりも大きいか否かを判定する。位置誤差が制御可能量よりも大きい場合には処理はステップS10に進み、位置誤差が制御可能量以下の場合には処理はステップS12に進む。
ステップS10において、コントローラ107は移動体101の位置および角度を用いる比例制御により駆動装置109を駆動させる。比例制御とは、移動体101の位置誤差に所定の比例ゲインを乗算し、角度誤差に所定の比例ゲインを乗算して両者を加算し、得られた値(補正係数k)を用いて駆動装置109を駆動させる制御である。
一方、ステップS12において、コントローラ107は移動体101の位置および角度を用いる積分制御により駆動装置109を駆動させる。積分制御とは、位置誤差の累積値に所定の積分ゲインを乗算し、角度誤差の累積値に所定の積分ゲインを乗算して両者を加算し、得られた値(補正係数k)を用いて駆動装置109を駆動させる制御である。位置誤差が駆動装置109の制御可能量よりも小さいため、上述の比例制御によっては駆動装置109の動作を調整できない。そのため、コントローラ107は異なる制御方法に切り替えて移動体101の位置および/または姿勢を調整する。
以下、移動体が無人搬送車である場合のより具体的な例を説明する。本明細書では、略語を用いて、無人搬送車を「AGV」と記述することがある。なお、以下の説明は、矛盾がない限り、AGV以外の移動体、例えば移動ロボット、ドローン、または有人の車両などにも同様に適用することができる。以下では主として環境地図を単に「地図」と略記することがある。
(1)システムの基本構成
図3は、本開示による例示的な移動体管理システム100の基本構成例を示している。移動体管理システム100は、少なくとも1台のAGV10と、AGV10の運行管理を行う運行管理装置50とを含む。図3には、ユーザ1によって操作される端末装置20も記載されている。
図3は、本開示による例示的な移動体管理システム100の基本構成例を示している。移動体管理システム100は、少なくとも1台のAGV10と、AGV10の運行管理を行う運行管理装置50とを含む。図3には、ユーザ1によって操作される端末装置20も記載されている。
AGV10は、走行に磁気テープなどの誘導体が不要な「ガイドレス式」走行が可能な無人搬送台車である。AGV10は、自己位置推定を行い、推定の結果を端末装置20および運行管理装置50に送信することができる。AGV10は、運行管理装置50からの指令に従って移動空間S内を自動走行することが可能である。AGV10は、さらに、人または他の移動体に追従して移動する「追尾モード」で動作することが可能である。
運行管理装置50は各AGV10の位置をトラッキングし、各AGV10の走行を管理するコンピュータシステムである。運行管理装置50は、デスクトップ型PC、ノート型PC、および/または、サーバコンピュータであり得る。運行管理装置50は、複数のアクセスポイント2を介して、各AGV10と通信する。たとえば、運行管理装置50は、各AGV10が次に向かうべき位置の座標のデータを各AGV10に送信する。各AGV10は、定期的に、たとえば100ミリ秒ごとに自身の位置および姿勢(orientation)を示すデータを運行管理装置50に送信する。指示した位置にAGV10が到達すると、運行管理装置50は、さらに次に向かうべき位置の座標のデータを送信する。AGV10は、端末装置20に入力されたユーザ1の操作に応じて移動空間S内を走行することも可能である。端末装置20の一例はタブレットコンピュータである。典型的には、端末装置20を利用したAGV10の走行は地図作成時に行われ、運行管理装置50を利用したAGV10の走行は地図作成後に行われる。
図4は、3台のAGV10a、10bおよび10cが存在する移動空間Sの一例を示している。いずれのAGVも図中の奥行き方向に走行しているとする。AGV10aおよび10bは天板に載置された荷物を搬送中である。AGV10cは、前方のAGV10bに追従して走行している。なお、説明の便宜のため、図4では参照符号10a、10bおよび10cを付したが、以下では、「AGV10」と記述する。
AGV10は、天板に載置された荷物を搬送する方法以外に、自身と接続された牽引台車を利用して荷物を搬送することも可能である。図5Aは接続される前のAGV10および牽引台車5を示している。牽引台車5の各足にはキャスターが設けられている。AGV10は牽引台車5と機械的に接続される。図5Bは、接続されたAGV10および牽引台車5を示している。AGV10が走行すると、牽引台車5はAGV10に牽引される。牽引台車5を牽引することにより、AGV10は、牽引台車5に載置された荷物を搬送できる。
AGV10と牽引台車5との接続方法は任意である。ここでは一例を説明する。AGV10の天板にはプレート6が固定されている。牽引台車5には、スリットを有するガイド7が設けられている。AGV10は牽引台車5に接近し、プレート6をガイド7のスリットに差し込む。差し込みが完了すると、AGV10は、図示されない電磁ロック式ピンをプレート6およびガイド7に貫通させ、電磁ロックをかける。これにより、AGV10と牽引台車5とが物理的に接続される。
再び図3を参照する。各AGV10と端末装置20とは、たとえば1対1で接続されてBluetooth(登録商標)規格に準拠した通信を行うことができる。各AGV10と端末装置20とは、1または複数のアクセスポイント2を利用してWi−Fi(登録商標)に準拠した通信を行うこともできる。複数のアクセスポイント2は、たとえばスイッチングハブ3を介して互いに接続されている。図3には2台のアクセスポイント2a、2bが記載されている。AGV10はアクセスポイント2aと無線で接続されている。端末装置20はアクセスポイント2bと無線で接続されている。AGV10が送信したデータはアクセスポイント2aで受信され、スイッチングハブ3を介してアクセスポイント2bに転送され、アクセスポイント2bから端末装置20に送信される。また、端末装置20が送信したデータは、アクセスポイント2bで受信され、スイッチングハブ3を介してアクセスポイント2aに転送され、アクセスポイント2aからAGV10に送信される。これにより、AGV10および端末装置20の間の双方向通信が実現される。複数のアクセスポイント2はスイッチングハブ3を介して運行管理装置50とも接続されている。これにより、運行管理装置50と各AGV10との間でも双方向通信が実現される。
(2)環境地図の作成
自己位置を推定しながらAGV10が走行できるようにするため、移動空間S内の地図が作成される。AGV10には位置推定装置およびレーザレンジファインダが搭載されており、レーザレンジファインダの出力を利用して地図を作成できる。
自己位置を推定しながらAGV10が走行できるようにするため、移動空間S内の地図が作成される。AGV10には位置推定装置およびレーザレンジファインダが搭載されており、レーザレンジファインダの出力を利用して地図を作成できる。
AGV10は、ユーザの操作によってデータ取得モードに遷移する。データ取得モードにおいて、AGV10はレーザレンジファインダを用いたセンサデータの取得を開始する。レーザレンジファインダは周期的にたとえば赤外線または可視光のレーザビームを周囲に放射して周囲の空間Sをスキャンする。レーザビームは、たとえば、壁、柱等の構造物、床の上に置かれた物体等の表面で反射される。レーザレンジファインダは、レーザビームの反射光を受けて各反射点までの距離を計算し、各反射点の位置が示された測定結果のデータを出力する。各反射点の位置には、反射光の到来方向および距離が反映されている。測定結果のデータは「計測データ」または「センサデータ」と呼ばれることがある。
位置推定装置は、センサデータを記憶装置に蓄積する。移動空間S内のセンサデータの取得が完了すると、記憶装置に蓄積されたセンサデータが外部装置に送信される。外部装置は、たとえば信号処理プロセッサを有し、かつ、地図作成プログラムがインストールされたコンピュータである。
外部装置の信号処理プロセッサは、スキャンごとに得られたセンサデータ同士を重ね合わせる。信号処理プロセッサが重ね合わせる処理を繰り返し行うことにより、空間Sの地図を作成することができる。外部装置は、作成した地図のデータをAGV10に送信する。AGV10は、作成した地図のデータを内部の記憶装置に保存する。外部装置は、運行管理装置50であってもよいし、他の装置であってもよい。
外部装置ではなくAGV10が地図の作成を行ってもよい。上述した外部装置の信号処理プロセッサが行った処理を、AGV10のマイクロコントローラユニット(マイコン)などの回路が行えばよい。AGV10内で地図を作成する場合には、蓄積されたセンサデータを外部装置に送信する必要が無くなる。センサデータのデータ容量は一般には大きいと考えられる。センサデータを外部装置に送信する必要がないため、通信回線の占有を回避できる。
なお、センサデータを取得するための移動空間S内の移動は、ユーザの操作に従ってAGV10が走行することによって実現し得る。たとえば、AGV10は、端末装置20を介して無線でユーザから前後左右の各方向への移動を指示する走行指令を受け取る。AGV10は走行指令にしたがって移動空間S内を前後左右に走行し、地図を作成する。AGV10がジョイスティック等の操縦装置と有線で接続されている場合には、当該操縦装置からの制御信号にしたがって移動空間S内を前後左右に走行し、地図を作成してもよい。レーザレンジファインダを搭載した計測台車を人が押し歩くことによってセンサデータを取得してもよい。
なお、図3および図4には複数台のAGV10が示されているが、AGVは1台であってもよい。複数台のAGV10が存在する場合、ユーザ1は端末装置20を利用して、登録された複数のAGVのうちから一台のAGV10を選択して、移動空間Sの地図を作成させることができる。
地図が作成されると、以後、各AGV10は当該地図を利用して自己位置を推定しながら自動走行することができる。自己位置を推定する処理の説明は後述する。
(3)AGVの構成
図6は、本実施形態にかかる例示的なAGV10の外観図である。AGV10は、2つの駆動輪11aおよび11bと、4つのキャスター11c、11d、11eおよび11fと、フレーム12と、搬送テーブル13と、走行制御装置14と、レーザレンジファインダ15とを有する。2つの駆動輪11aおよび11bは、AGV10の右側および左側にそれぞれ設けられている。4つのキャスター11c、11d、11eおよび11fは、AGV10の4隅に配置されている。なお、AGV10は、2つの駆動輪11aおよび11bに接続される複数のモータも有するが、複数のモータは図6には示されていない。また、図6には、AGV10の右側に位置する1つの駆動輪11aおよび2つのキャスター11cおよび11eと、左後部に位置するキャスター11fとが示されているが、左側の駆動輪11bおよび左前部のキャスター11dはフレーム12の蔭に隠れているため明示されていない。4つのキャスター11c、11d、11eおよび11fは、自由に旋回することができる。以下の説明では、駆動輪11aおよび駆動輪11bを、それぞれ車輪11aおよび車輪11bとも称する。
図6は、本実施形態にかかる例示的なAGV10の外観図である。AGV10は、2つの駆動輪11aおよび11bと、4つのキャスター11c、11d、11eおよび11fと、フレーム12と、搬送テーブル13と、走行制御装置14と、レーザレンジファインダ15とを有する。2つの駆動輪11aおよび11bは、AGV10の右側および左側にそれぞれ設けられている。4つのキャスター11c、11d、11eおよび11fは、AGV10の4隅に配置されている。なお、AGV10は、2つの駆動輪11aおよび11bに接続される複数のモータも有するが、複数のモータは図6には示されていない。また、図6には、AGV10の右側に位置する1つの駆動輪11aおよび2つのキャスター11cおよび11eと、左後部に位置するキャスター11fとが示されているが、左側の駆動輪11bおよび左前部のキャスター11dはフレーム12の蔭に隠れているため明示されていない。4つのキャスター11c、11d、11eおよび11fは、自由に旋回することができる。以下の説明では、駆動輪11aおよび駆動輪11bを、それぞれ車輪11aおよび車輪11bとも称する。
AGV10は、さらに、障害物を検知するための少なくとも1つの障害物センサ19を備えている。図6の例では、フレーム12の4隅に4つの障害物センサ19が設けられている。障害物センサ19の個数および配置は、図6の例とは異なっていてもよい。障害物センサ19は、例えば、赤外線センサ、超音波センサ、またはステレオカメラなどの、距離計測が可能な装置であり得る。障害物センサ19が赤外線センサである場合、例えば一定時間ごとに赤外線を出射し、反射された赤外線が戻ってくるまでの時間を計測することにより、一定距離以内に存在する障害物を検知することができる。AGV10は、少なくとも1つの障害物センサ19から出力された信号に基づいて経路上の障害物を検知したとき、その障害物を回避する動作を行う。
走行制御装置14は、AGV10の動作を制御する装置であり、主としてマイコン(後述)を含む集積回路、電子部品およびそれらが搭載された基板を含む。走行制御装置14は、上述した、端末装置20とのデータの送受信、および前処理演算を行う。
レーザレンジファインダ15は、たとえば赤外線または可視光のレーザビーム15aを放射し、当該レーザビーム15aの反射光を検出することにより、反射点までの距離を測定する光学機器である。本実施形態では、AGV10のレーザレンジファインダ15は、たとえばAGV10の正面を基準として左右135度(合計270度)の範囲の空間に、0.25度ごとに方向を変化させながらパルス状のレーザビーム15aを放射し、各レーザビーム15aの反射光を検出する。これにより、0.25度ごと、合計1081ステップ分の角度で決まる方向における反射点までの距離のデータを得ることができる。なお、本実施形態では、レーザレンジファインダ15が行う周囲の空間のスキャンは実質的に床面に平行であり、平面的(二次元的)である。しかしながら、レーザレンジファインダ15は高さ方向のスキャンを行ってもよい。
AGV10の位置および姿勢(向き)と、レーザレンジファインダ15のスキャン結果とにより、AGV10は、空間Sの地図を作成することができる。地図には、AGVの周囲の壁、柱等の構造物、床の上に載置された物体の配置が反映され得る。地図のデータは、AGV10内に設けられた記憶装置に格納される。
一般に、移動体の位置および姿勢は、ポーズ(pose)と呼ばれる。二次元面内における移動体の位置および姿勢は、XY直交座標系における位置座標(x, y)と、X軸に対する角度θによって表現される。AGV10の位置および姿勢、すなわちポーズ(x, y, θ)を、以下、単に「位置」と呼ぶことがある。
レーザビーム15aの放射位置から見た反射点の位置は、角度および距離によって決定される極座標を用いて表現され得る。本実施形態では、レーザレンジファインダ15は極座標で表現されたセンサデータを出力する。ただし、レーザレンジファインダ15は、極座標で表現された位置を直交座標に変換して出力してもよい。
レーザレンジファインダの構造および動作原理は公知であるため、本明細書ではこれ以上の詳細な説明は省略する。レーザレンジファインダ15によって検出され得る物体の例は、人、荷物、棚、壁である。
レーザレンジファインダ15は、周囲の空間をセンシングしてセンサデータを取得するための外界センサの一例である。そのような外界センサの他の例としては、イメージセンサおよび超音波センサが考えられる。
走行制御装置14は、レーザレンジファインダ15の測定結果と、自身が保持する地図データとを比較して、自身の現在位置を推定することができる。なお、保持されている地図データは、他のAGV10が作成した地図データであってもよい。
図7Aは、AGV10の第1のハードウェア構成例を示している。また図7Aは、走行制御装置14の具体的な構成も示している。
AGV10は、走行制御装置14と、レーザレンジファインダ15と、2台のモータ16aおよび16bと、駆動装置17と、車輪11aおよび11bと、2つのロータリエンコーダ18aおよび18bとを備えている。
走行制御装置14は、マイコン14aと、メモリ14bと、記憶装置14cと、通信回路14dと、位置推定装置14eとを有している。マイコン14a、メモリ14b、記憶装置14c、通信回路14dおよび位置推定装置14eは通信バス14fで接続されており、相互にデータを授受することが可能である。レーザレンジファインダ15もまた通信インタフェース(図示せず)を介して通信バス14fに接続されており、計測結果である計測データを、マイコン14a、位置推定装置14eおよび/またはメモリ14bに送信する。
マイコン14aは、走行制御装置14を含むAGV10の全体を制御するための演算を行うプロセッサまたは制御回路(コンピュータ)である。典型的にはマイコン14aは半導体集積回路である。マイコン14aは、制御信号であるPWM(Pulse Width Modulation)信号を駆動装置17に送信して駆動装置17を制御し、モータに印加する電圧を調整させる。これによりモータ16aおよび16bの各々が所望の回転速度で回転する。
左右のモータ16aおよび16bの駆動を制御する1つ以上の制御回路(たとえばマイコン)を、マイコン14aとは独立して設けてもよい。たとえば、モータ駆動装置17が、モータ16aおよび16bの駆動をそれぞれ制御する2つのマイコンを備えていてもよい。それらの2つのマイコンは、エンコーダ18aおよび18bから出力されたエンコーダ情報を用いた座標計算をそれぞれ行い、所与の初期位置からのAGV10の移動距離を推定してもよい。また、当該2つのマイコンは、エンコーダ情報を利用してモータ駆動回路17aおよび17bを制御してもよい。
メモリ14bは、マイコン14aが実行するコンピュータプログラムを記憶する揮発性の記憶装置である。メモリ14bは、マイコン14aおよび位置推定装置14eが演算を行う際のワークメモリとしても利用され得る。
記憶装置14cは、不揮発性の半導体メモリ装置である。ただし、記憶装置14cは、ハードディスクに代表される磁気記録媒体、または、光ディスクに代表される光学式記録媒体であってもよい。さらに、記憶装置14cは、いずれかの記録媒体にデータを書き込みおよび/または読み出すためのヘッド装置および当該ヘッド装置の制御装置を含んでもよい。
記憶装置14cは、走行する空間Sの地図データM、および、1または複数の走行経路のデータ(走行経路データ)Rを記憶する。地図データMは、AGV10が地図作成モードで動作することによって作成され記憶装置14cに記憶される。走行経路データRは、地図データMが作成された後に外部から送信される。本実施形態では、地図データMおよび走行経路データRは同じ記憶装置14cに記憶されているが、異なる記憶装置に記憶されてもよい。
走行経路データRの例を説明する。
端末装置20がタブレットコンピュータである場合には、AGV10はタブレットコンピュータから走行経路を示す走行経路データRを受信する。このときの走行経路データRは、複数のマーカの位置を示すマーカデータを含む。「マーカ」は走行するAGV10の通過位置(経由点)を示す。走行経路データRは、走行開始位置を示す開始マーカおよび走行終了位置を示す終了マーカの位置情報を少なくとも含む。走行経路データRは、さらに、1以上の中間経由点のマーカの位置情報を含んでもよい。走行経路が1以上の中間経由点を含む場合には、開始マーカから、当該走行経由点を順に経由して終了マーカに至る経路が、走行経路として定義される。各マーカのデータは、そのマーカの座標データに加えて、次のマーカに移動するまでのAGV10の向き(角度)および走行速度のデータを含み得る。AGV10が各マーカの位置で一旦停止し、自己位置推定および端末装置20への通知などを行う場合には、各マーカのデータは、当該走行速度に達するまでの加速に要する加速時間、および/または、当該走行速度から次のマーカの位置で停止するまでの減速に要する減速時間のデータを含み得る。
端末装置20ではなく運行管理装置50(たとえば、PCおよび/またはサーバコンピュータ)がAGV10の移動を制御してもよい。その場合には、運行管理装置50は、AGV10がマーカに到達する度に、次のマーカへの移動をAGV10に指示してもよい。たとえば、AGV10は、運行管理装置50から、次に向かうべき目的位置の座標データ、または、当該目的位置までの距離および進むべき角度のデータを、走行経路を示す走行経路データRとして受信する。
AGV10は、作成された地図と走行中に取得されたレーザレンジファインダ15が出力したセンサデータとを利用して自己位置を推定しながら、記憶された走行経路に沿って走行することができる。
通信回路14dは、たとえば、Bluetooth(登録商標)および/またはWi−Fi(登録商標)規格に準拠した無線通信を行う無線通信回路である。いずれの規格も、2.4GHz帯の周波数を利用した無線通信規格を含む。たとえばAGV10を走行させて地図を作成するモードでは、通信回路14dは、Bluetooth(登録商標)規格に準拠した無線通信を行い、1対1で端末装置20と通信する。
位置推定装置14eは、地図の作成処理、および、走行時には自己位置の推定処理を行う。位置推定装置14eは、AGV10の位置および姿勢とレーザレンジファインダのスキャン結果とにより、移動空間Sの地図を作成する。走行時には、位置推定装置14eは、レーザレンジファインダ15からセンサデータを受け取り、また、記憶装置14cに記憶された地図データMを読み出す。レーザレンジファインダ15のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データMとのマッチングを行うことにより、地図データM上における自己位置(x, y, θ)を同定する。位置推定装置14eは、局所的地図データが地図データMに一致した程度を表す「信頼度」のデータを生成する。自己位置(x, y, θ)、および、信頼度の各データは、AGV10から端末装置20または運行管理装置50に送信され得る。端末装置20または運行管理装置50は、自己位置(x, y, θ)、および、信頼度の各データを受信して、内蔵または接続された表示装置に表示することができる。
本実施形態では、マイコン14aと位置推定装置14eとは別個の構成要素であるとしているが、これは一例である。マイコン14aおよび位置推定装置14eの各動作を独立して行うことが可能な1つのチップ回路または半導体集積回路であってもよい。図7Aには、マイコン14aおよび位置推定装置14eを包括するチップ回路14gが示されている。以下では、マイコン14aおよび位置推定装置14eが別個独立に設けられている例を説明する。
2台のモータ16aおよび16bは、それぞれ2つの車輪11aおよび11bに取り付けられ、各車輪を回転させる。つまり、2つの車輪11aおよび11bはそれぞれ駆動輪である。本明細書では、モータ16aおよびモータ16bは、それぞれAGV10の右輪および左輪を駆動するモータであるとして説明する。
移動体10は、さらに、車輪11aおよび11bの回転位置または回転速度を測定するエンコーダユニット18をさらに備えている。エンコーダユニット18は、第1ロータリエンコーダ18aおよび第2ロータリエンコーダ18bを含む。第1ロータリエンコーダ18aは、モータ16aから車輪11aまでの動力伝達機構のいずれかの位置における回転を計測する。第2ロータリエンコーダ18bは、モータ16bから車輪11bまでの動力伝達機構のいずれかの位置における回転を計測する。エンコーダユニット18は、ロータリエンコーダ18aおよび18bによって取得された信号を、マイコン14aに送信する。マイコン14aは、位置推定装置14eから受信した信号だけでなく、エンコーダユニット18から受信した信号を利用して、移動体10の移動を制御してもよい。
駆動装置17は、2台のモータ16aおよび16bの各々に印加される電圧を調整するためのモータ駆動回路17aおよび17bを有する。モータ駆動回路17aおよび17bの各々はいわゆるインバータ回路を含む。モータ駆動回路17aおよび17bは、マイコン14aまたはモータ駆動回路17a内のマイコンから送信されたPWM信号によって各モータに流れる電流をオンまたはオフし、それによりモータに印加される電圧を調整する。
図7Bは、AGV10の第2のハードウェア構成例を示している。第2のハードウェア構成例は、レーザ測位システム14hを有する点、および、マイコン14aが各構成要素と1対1で接続されている点において、第1のハードウェア構成例(図7A)と相違する。
レーザ測位システム14hは、位置推定装置14eおよびレーザレンジファインダ15を有する。位置推定装置14eおよびレーザレンジファインダ15は、たとえばイーサネット(登録商標)ケーブルで接続されている。位置推定装置14eおよびレーザレンジファインダ15の各動作は上述した通りである。レーザ測位システム14hは、AGV10のポーズ(x, y, θ)を示す情報をマイコン14aに出力する。
マイコン14aは、種々の汎用I/Oインタフェースまたは汎用入出力ポート(図示せず)を有している。マイコン14aは、通信回路14d、レーザ測位システム14h等の、走行制御装置14内の他の構成要素と、当該汎用入出力ポートを介して直接接続されている。
図7Bに関して上述した構成以外は、図7Aの構成と共通である。よって共通の構成の説明は省略する。
本開示の実施形態におけるAGV10は、図示されていないバンパースイッチなどのセーフティセンサを備えていてもよい。AGV10は、ジャイロセンサなどの慣性計測装置を備えていてもよい。ロータリエンコーダ18aおよび18bまたは慣性計測装置などの内界センサによる測定データを利用すれば、AGV10の移動距離および姿勢の変化量(角度)を推定することができる。これらの距離および角度の推定値は、オドメトリデータと呼ばれ、位置推定装置14eによって得られる位置および姿勢の情報を補助する機能を発揮し得る。
(4)地図データ
図8A〜図8Fは、センサデータを取得しながら移動するAGV10を模式的に示す。ユーザ1は、端末装置20を操作しながらマニュアルでAGV10を移動させてもよい。あるいは、図7Aおよび図7Bに示される走行制御装置14を備えるユニット、または、AGV10そのものを台車に載置し、台車をユーザ1が手で押す、または牽くことによってセンサデータを取得してもよい。
図8A〜図8Fは、センサデータを取得しながら移動するAGV10を模式的に示す。ユーザ1は、端末装置20を操作しながらマニュアルでAGV10を移動させてもよい。あるいは、図7Aおよび図7Bに示される走行制御装置14を備えるユニット、または、AGV10そのものを台車に載置し、台車をユーザ1が手で押す、または牽くことによってセンサデータを取得してもよい。
図8Aには、レーザレンジファインダ15を用いて周囲の空間をスキャンするAGV10が示されている。所定のステップ角毎にレーザビームが放射され、スキャンが行われる。なお、図示されたスキャン範囲は模式的に示した例であり、上述した合計270度のスキャン範囲とは異なっている。
図8A〜図8Fの各々では、レーザビームの反射点の位置が、記号「・」で表される複数の黒点4を用いて模式的に示されている。レーザビームのスキャンは、レーザレンジファインダ15の位置および姿勢が変化する間に短い周期で実行される。このため、現実の反射点の個数は、図示されている反射点4の個数よりも遥かに多い。位置推定装置14eは、走行に伴って得られる黒点4の位置を、たとえばメモリ14bに蓄積する。AGV10が走行しながらスキャンを継続して行うことにより、地図データが徐々に完成されてゆく。図8Bから図8Eでは、簡略化のためスキャン範囲のみが示されている。当該スキャン範囲は例示であり、上述した合計270度の例とは異なる。
地図は、地図作成に必要な量のセンサデータを取得した後、そのセンサデータに基づいて、このAGV10内のマイコン14aまたは外部のコンピュータを用いて作成してもよい。あるいは、移動しつつあるAGV10が取得したセンサデータに基づいてリアルタイムで地図を作成してもよい。
図8Fは、完成した地図40の一部を模式的に示す。図8Fに示される地図では、レーザビームの反射点の集まりに相当する点群(Point Cloud)によって自由空間が仕切られている。地図の他の例は、物体が占有している空間と自由空間とをグリッド単位で区別する占有格子地図である。位置推定装置14eは、地図のデータ(地図データM)をメモリ14bまたは記憶装置14cに蓄積する。なお図示されている黒点の数または密度は一例である。
こうして得られた地図データは、複数のAGV10によって共有され得る。
AGV10が地図データに基づいて自己位置を推定するアルゴリズムの典型例は、ICP(Iterative Closest Point)マッチングである。前述したように、レーザレンジファインダ15のスキャン結果から作成された局所的地図データ(センサデータ)を、より広範囲の地図データMとのマッチングを行うことにより、地図データM上における自己位置(x, y, θ)を推定することができる。
AGV10が走行するエリアが広い場合、地図データMのデータ量が多くなる。そのため、地図の作成時間が増大したり、自己位置推定に多大な時間を要するなどの不都合が生じる可能性がある。そのような不都合が生じる場合には、地図データMを、複数の部分地図のデータに分けて作成および記録してもよい。
図9は、4つの部分地図データM1、M2、M3、M4の組み合わせによって1つの工場の1フロアの全域がカバーされる例を示している。この例では、1つの部分地図データは50m×50mの領域をカバーしている。X方向およびY方向のそれぞれにおいて隣接する2つの地図の境界部分に、幅5mの矩形の重複領域が設けられている。この重複領域を「地図切替エリア」と呼ぶ。1つの部分地図を参照しながら走行しているAGV10が地図切替エリアに到達すると、隣接する他の部分地図を参照する走行に切り替える。部分地図の枚数は4枚に限らず、AGV10が走行するフロアの面積、地図作成および自己位置推定を実行するコンピュータの性能に応じて適宜設定してよい。部分地図データのサイズおよび重複領域の幅も、上記の例に限定されず、任意に設定してよい。
(5)運行管理装置の構成例
図10は、運行管理装置50のハードウェア構成例を示している。運行管理装置50は、CPU51と、メモリ52と、位置データベース(位置DB)53と、通信回路54と、地図データベース(地図DB)55と、画像処理回路56とを有する。
図10は、運行管理装置50のハードウェア構成例を示している。運行管理装置50は、CPU51と、メモリ52と、位置データベース(位置DB)53と、通信回路54と、地図データベース(地図DB)55と、画像処理回路56とを有する。
CPU51、メモリ52、位置DB53、通信回路54、地図DB55および画像処理回路56は通信バス57で接続されており、相互にデータを授受することが可能である。
CPU51は、運行管理装置50の動作を制御する信号処理回路(コンピュータ)である。典型的にはCPU51は半導体集積回路である。
メモリ52は、CPU51が実行するコンピュータプログラムを記憶する、揮発性の記憶装置である。メモリ52は、CPU51が演算を行う際のワークメモリとしても利用され得る。
位置DB53は、各AGV10の行き先となり得る各位置を示す位置データを格納する。位置データは、たとえば管理者によって工場内に仮想的に設定された座標によって表され得る。位置データは管理者によって決定される。
通信回路54は、たとえばイーサネット(登録商標)規格に準拠した有線通信を行う。通信回路54はアクセスポイント2(図3)と有線で接続されており、アクセスポイント2を介して、AGV10と通信することができる。通信回路54は、AGV10に送信すべきデータを、バス57を介してCPU51から受信する。また通信回路54は、AGV10から受信したデータ(通知)を、バス57を介してCPU51および/またはメモリ52に送信する。
地図DB55は、AGV10が走行する工場等の内部の地図のデータを格納する。当該地図は、地図40(図8F)と同じであってもよいし、異なっていてもよい。各AGV10の位置と1対1で対応関係を有する地図であれば、データの形式は問わない。たとえば地図DB55に格納される地図は、CADによって作成された地図であってもよい。
位置DB53および地図DB55は、不揮発性の半導体メモリ上に構築されてもよいし、ハードディスクに代表される磁気記録媒体、または光ディスクに代表される光学式記録媒体上に構築されてもよい。
画像処理回路56はモニタ58に表示される映像のデータを生成する回路である。画像処理回路56は、専ら、管理者が運行管理装置50を操作する際に動作する。本実施形態では特にこれ以上の詳細な説明は省略する。なお、モニタ59は運行管理装置50と一体化されていてもよい。また画像処理回路56の処理をCPU51が行ってもよい。
(6)運行管理装置の動作
図11を参照しながら、運行管理装置50の動作の概要を説明する。図11は、運行管理装置50によって決定されたAGV10の移動経路の一例を模式的に示す図である。
図11を参照しながら、運行管理装置50の動作の概要を説明する。図11は、運行管理装置50によって決定されたAGV10の移動経路の一例を模式的に示す図である。
AGV10および運行管理装置50の動作の概要は以下のとおりである。以下では、あるAGV10が現在、位置M1におり、幾つかの位置を通過して、最終的な目的地である位置Mn+1(n:1以上の正の整数)まで走行する例を説明する。なお、位置DB53には位置M1の次に通過すべき位置M2、位置M2の次に通過すべき位置M3等の各位置を示す座標データが記録されている。
運行管理装置50のCPU51は、位置DB53を参照して位置M2の座標データを読み出し、位置M2に向かわせる走行指令を生成する。通信回路54は、アクセスポイント2を介して走行指令をAGV10に送信する。
CPU51は、AGV10から、アクセスポイント2を介して、定期的に現在位置および姿勢を示すデータを受信する。こうして運行管理装置50は、各AGV10の位置をトラッキングすることができる。CPU51は、AGV10の現在位置が位置M2に一致したと判定すると、位置M3の座標データを読み出し、位置M3に向かわせる走行指令を生成してAGV10に送信する。つまり運行管理装置50は、AGV10がある位置に到達したと判定すると、次に通過すべき位置に向かわせる走行指令を送信する。これにより、AGV10は最終的な目的位置Mn+1に到達することができる。上述した、AGV10の通過位置および目的位置は「マーカ」と呼ばれることがある。
(7)AGVの制御例
次に、AGV10の動作のより具体的な例を説明する。下記のAGV10の動作は、移動体101の動作として本欄冒頭に説明した内容を含む。AGV10と移動体101との関係は以下のとおりである。
次に、AGV10の動作のより具体的な例を説明する。下記のAGV10の動作は、移動体101の動作として本欄冒頭に説明した内容を含む。AGV10と移動体101との関係は以下のとおりである。
AGV10のマイコン14a、位置推定装置14eおよびレーザレンジファインダ15はそれぞれ、移動体101(図1)のコントローラ107、位置推定装置105、外界センサ103に対応する。またAGV10のモータ16aおよび16bは、移動体101の駆動装置109に対応する。なお、AGV10のモータ駆動回路17aおよび17bを、移動体101の駆動装置109に含めてもよいし、2つの駆動輪11aおよび11bを駆動装置109に含めてもよい。
AGV10のマイコン14aはコンピュータであり、以下の説明する制御方法の手順を記述したコンピュータプログラムをメモリ14bから読み出して実行する。コンピュータプログラムはマイコン14aに、条件に応じた制御方法を実行させる。
まず、図12を適宜参照しながら、本開示で使用する用語を以下のように定義する。図12は、位置誤差および角度誤差を説明するための図である。
「位置誤差」(dx)とは、選択した移動経路(ルート)の始点Mkと終点Mk+1とを結ぶ直線と、AGV10の現在地J(x,y)との距離(法線方向のずれ量)をいう。本開示では理解の便宜のため、直線状のルートを想定して説明する。図11に示す例ではルートは折れ線状であるが、あるマーカを始点とし、その次のマーカを終点と見なせば、隣接する2つのマーカの間のコースは直線である。つまり図12のように表現し得る。
「角度誤差」(dθ)とは、現在のAGV10の角度と、現在地Jから終点Mk+1まで直線で向かうときのAGV10の角度の差をいう。「角度誤差」(dθ)は、例えばAGV10の正面方向を0度としたときの、現在値J(x,y)から終点Mk+1に向かう方向の角度として取得し得る。
「位置誤差積分値」とは、位置誤差を時間積分した値である。積分範囲は、例えば最新の位置誤差の値を1個目として所定個数分(例えば過去1000個分)である。
「角度誤差積分値」とは、角度誤差を時間積分した値である。積分範囲は、例えば最新の角度誤差の値を1個目として所定個数分(例えば過去1000個分)である。
次に、図13〜図17を参照しながら、本願発明者が見出した課題を説明する。
図13は、AGV10の走行時の課題を説明するための図である。AGV10がマーカM1、・・・、Mmを経由して、目的地Mm+1まで走行する例を考える。各マーカは一直線上に配置されているとする。
AGV10と目的地Mm+1とを結ぶ太破線は、AGV10の理想軌道を示している。一方、実線はAGV10が実際に走行する経路を示している。本願発明者は2つの課題を見出した。
第1の課題は、AGV10が走行すると、走行途中に0ではない位置誤差および角度誤差が発生することである。例えば現在地からマーカMmまでの区間では、AGV10は理想軌道からずれた位置(最大誤差Er)を走行している。
第2の課題は、マーカMmから目的地Mm+1までの区間でAGV10の姿勢(角度)が大きく変化することである。
本願発明者が検討したところ、これらの課題は制御誤差に起因することが分かった。AGV10が走行する際には2種類の誤差、すなわち測位誤差および制御誤差、が存在する。測位誤差は、位置推定装置14eの測位および演算によって生じる、実際の座標と算出された座標との誤差である。制御誤差は、制御したとしても目的地に正しく向かわないことで生じる誤差である。制御誤差は、例えばマイコン14aが、モータ駆動回路17a、17bがモータ16a、16bを回転させるために必要とされる回転数を求めるための演算の過程で、数値を丸めることによって生じ得る。測位誤差が十分小さく信頼度が十分高い場合でも、制御誤差が存在することによってAGV10は理想軌道を走行できない。そこで本願発明者は制御誤差を抑制し、目標位置への到達精度を向上させる制御方法を検討した。
まず上述の第1の課題の原因について、本願発明者は、現在地からマーカMmまでの区間では位置誤差および角度誤差が徐々に蓄積したためであると判断した。位置推定装置14eから出力される座標が正しい場合、AGV10のマイコン14aは位置誤差および角度誤差の発生を認識し、各誤差が0になるよう位置および姿勢を補正するはずである。しかしながらこのような誤差が蓄積されたということは、そのような補正が効かなかったことを意味する。
上述の第2の課題の原因は、マーカMmを通過した時点で角度誤差が拡大し、それによって角度誤差を低減するための制御(角度制御)が効き始めたからであると判断できる。結果的には目的地Mm+1に到達しているものの、理想軌道と比較すると目的地Mm+1には斜めに入っている。理想軌道で入った場合と比較すると、AGV10の姿勢(角度)が異なる。AGV10に荷物を載置したり、AGV10上の荷物をピックアップする場合などを想定すると、AGV10の姿勢の乱れを抑制することが必要とされる。
第1の課題および第2の課題の各々は独立した原因に起因すると考えられるため、一方の課題を解消すればAGV10の姿勢の乱れを抑制し得る。もちろん、第1の課題および第2の課題を両方解決すれば、目標位置へのAGV10の到達精度をより向上させることができる。以下、それぞれの課題を解決するための制御手法を説明する。
第1の課題について検討する。
図14は、AGV10を送稿させたときの位置および角度の推移を表している。太実線は位置(x,y)の推移を表し、細破線は角度(θ)の推移を表している。横軸はAGV10の走行距離を表す。本例ではAGV10を約4m程度走行させた。左の縦軸は理想軌道を0としたときのずれ量、すなわち位置誤差を表す。右の縦軸はAGV10の姿勢(角度)を表す。90度を基準とすれば、90度からのずれ量を角度誤差として捉えてもよい。
図14には3つの区間(a)、(b)、(c)が示されている。区間(a)は位置誤差が±10mm以内の区間である。区間(b)は位置誤差が±10mmを超えた区間である。区間(c)は位置誤差が再び±10mm以内に戻った区間である。
区間(a)では、位置誤差は総じて単調に変化しており、位置誤差が0になるような制御は行われていないことが分かる。一方、区間(b)では位置誤差が小さくなるよう制御が行われていることが分かる。区間(c)では再び単調に変化している。
区間(a)から理解されるように、位置誤差が±10mm以内であれば、AGV10の位置誤差は0に収束せず、理想軌道(位置誤差=0)を横切るように概ね直進していることが分かる。誤差が小さいときは、AGV10は直進すると言える。
ここでAGV10の駆動方法を説明する。図7Aおよび図7Bから理解されるように、本実施形態にかかるAGV10は左右の2つの駆動輪11aおよび11bを有している。各駆動輪11aおよび11bには、それぞれモータ駆動回路17a、17bによって駆動されるモータ16a、16bの回転が伝達される。各モータ16a、16bをどのような回転数で回転させるかは、マイコン14aからの指令に基づいて決定される。
AGV10は、左右の駆動輪11aおよび11bの速度差を利用して位置および角度の制御を行う。マイコン14aは、位置誤差および角度誤差のそれぞれの大きさに応じて、各モータ16a、16bの回転速度に差を与える。
いま、補正係数をkとし、右駆動輪の回転数をR1とし、左の駆動輪の回転数をR2とする。例えば駆動輪11aを右駆動輪、駆動輪11bを左駆動輪と呼ぶ。便宜的に各モータ16a、16bの回転数と各駆動輪11a、11bの回転数とは一致するとして説明する。マイコン14aは、外部から与えられた走行速度、またはAGV10の現在の速度に応じて基準速度を決定する。基準速度を決定すると、マイコン14aは基準速度で走行するための回転数(基準回転数)を算出する。
そしてマイコン14aは、補正係数k<0のときは、
式(1): 右駆動輪の回転数R1=基準回転数*(1+補正係数k)
式(2): 左駆動輪の回転数R2=基準回転数
によって各モータ16a、16bの回転数を決定する。これによりAGV10は右折し、または右方向に弧を描いて進む。
式(1): 右駆動輪の回転数R1=基準回転数*(1+補正係数k)
式(2): 左駆動輪の回転数R2=基準回転数
によって各モータ16a、16bの回転数を決定する。これによりAGV10は右折し、または右方向に弧を描いて進む。
また、マイコン14aは、補正係数k≧0のときは、
式(3): 右駆動輪の回転数R1=基準回転数
式(4): 左駆動輪の回転数R2=基準回転数*(1−補正係数k)
によって各モータ16a、16bの回転数を決定する。これによりAGV10は左折し、または左方向に弧を描いて進む。
式(3): 右駆動輪の回転数R1=基準回転数
式(4): 左駆動輪の回転数R2=基準回転数*(1−補正係数k)
によって各モータ16a、16bの回転数を決定する。これによりAGV10は左折し、または左方向に弧を描いて進む。
上述の補正係数kを含む式では、補正係数kの値が0に近いほど左右の駆動輪の回転数差が0に近付くことが分かる。補正係数kの値が0に近い場合とは、微小な位置誤差量・角度誤差量の補正が行われることを意味する。すなわち位置誤差量・角度誤差量が小さいことを意味する。補正係数kを利用して算出される回転数R1またはR2は、整数値として算出され得る。つまり、マイコン14aが数値演算を行う際、小数点以下の数値は丸められる。そのため、補正係数kの大きさによっては、整数値化されると回転数はR1=R2になる場合がある。
図15は、マイコン14aに算出させた2つの駆動輪の回転数でAGV10を走行させたときのAGV10の挙動を示している。横軸はAGV10の走行距離を表し、縦軸は走行開始時の正面方向からのずれ量の大きさを表す。
曲線A〜Cの違いは、右駆動輪の回転数R1を1としたときの左駆動輪の回転数R2の大きさの違いである。すなわち曲線Aは1:0.95、曲線Bは1:0.975、曲線Cは1:0.99である。
曲線AおよびBでは、ずれ量が拡大している。これは、マイコン14aが算出した各回転数の値の違いが各モータの回転の違いとして反映されていることを意味する。
一方、曲線Cは、ずれ量は拡大しておらず、AGV10はほぼ直進している。これは、マイコン14aが算出した各回転数の値の違いが各モータの回転の違いとして反映されず、位置制御および角度制御が効かなかったことを意味する。
本願発明者はさらに実験を行い、その結果、回転数比が1:0.98以下になるとき、つまり補正係数が±0.02以下になるとき、制御が効かず直進することを確認した。本開示では、位置制御および角度制御が効く範囲の補正係数を、モータ16a、16bの「制御可能量」と表現する。なおモータ16a、16bは、駆動装置109(図1)の一部に含まれ得る。
制御可能量は、補正係数についてのみならず、実際の位置誤差にも対応付けることが可能である。補正係数が±0.02以下の場合とは、本願発明者が検証した環境では、10mm以下の位置誤差に相当する。つまり、位置誤差が10mm以下の状況下ではAGV10の左右の駆動輪の回転数は一致し直進するため、位置誤差を0にするための制御が効かない。左右の駆動輪の回転数差を利用した制御量は0である。
この検証の結果は、図14に示すAGV10の挙動によく現れている。区間(a)の位置誤差が±10mm以内ではAGV10はほぼ直進しており、位置制御は効いていない。一方、区間(b)では補正係数または位置誤差が制御可能量より大きくなったため、位置制御および角度制御が効き、再度、位置誤差が±10mm以内に戻っている。
既に説明したように、本願発明者は、整数値化された場合にR1=R2になる境界となる補正係数または位置誤差を求め、補正係数または位置誤差の値に応じてAGV10の制御を切り替えることを見出した。詳細は後述する。
次に、第2の課題について検討する。
本願発明者は、AGV10を5m先の目的位置まで走行させた。このときの位置誤差(dx)は10mmであった。AGV10は、目的位置の方向と台車の向きを一致させるように制御を行う。しかしながら、上述のとおり位置誤差(dx)が10mmの場合、位置制御は効かずAGV10は直進する。直進するだけでは、目的位置に到達することは当然できない。
図16は、AGV10の角度誤差(dθ)の変化を示している。目的位置に到達する直前から角度誤差が急激に大きくなり発散していることが確認できる。このような角度誤差を利用して制御を行うとAGV10の挙動が安定せず、位置誤差が小さいにもかかわらず過剰な制御が行われる可能性があり得る。
図17は、AGV10の位置(x,y)および角度(θ)の変化を示している。AGV10を5m先の目的位置まで走行させた。実線は位置を表し、破線は角度を表す。目的位置から距離Lよりも近い範囲に入ると、角度(θ)が大きく変化すると共に、位置(x,y)の結果も乱れていることが分かる。目的位置到着時の位置誤差は15mm、角度誤差は9度であった。
位置誤差が0の状況を維持しながら目的位置に到達することが好ましいが、制御が効かない範囲の位置誤差が存在することは避けられない。つまり、角度誤差が急激に大きくなる状況は発生し得る。そのため本願発明者は、角度誤差が急激に大きくなる範囲では角度誤差を用いた制御を行わないことが妥当であると考えた。
図16および図17には、角度制御を停止する位置Lが示されている。AGV10は、コース上の目標点から予め定められた範囲L内に到達した後は、角度制御を停止し位置制御のみに切り替える。具体的には、角度誤差が1度になる600mm手前の位置で角度制御を停止し位置制御のみに切り替える。
以上説明したように、本開示では、第1の課題への対応として、補正係数または位置誤差の大きさに応じて制御を切り替える。また、第2の課題への対応として、コース上の目標点から予め定められた範囲内に到達したときは、角度を用いた制御を停止し、位置のみを用いた制御に切り替える。予め定められた範囲は、AGV10が走行する「残存距離」として記載されている。
図18は、補正係数および残存距離に応じて採用され得る制御タイプの分類を示している。参考として、境界となる閾値TH1として、制御可能量である位置誤差dxを10mmまたは補正係数k0を0.02としている。また、目的位置から予め定められた範囲の閾値TH2、つまり残存距離Lの閾値を、600mmとしている。これらは一例である。実際に利用されるAGVに応じて制御可能量を与える補正係数または位置誤差を決定し得るし、角度誤差が発散する距離に応じて残存距離を決定し得る。
以下の説明では、比例制御を「P制御」と記述し、積分制御を「I制御」と記述する場合がある。説明に当たっては、位置P制御量をPos_p、位置I制御量をPos_i、角度P制御量をAng_p、角度I制御量をAng_iとおく。各制御量は以下の式で計算される。
Pos_p = 比例ゲインKpp * 位置誤差dx
Ang_p = 比例ゲインKpa * 角度誤差dθ
Pos_i = 積分ゲインKip * 位置誤差積分値Sp
Ang_i = 積分ゲインKia * 角度誤差積分値Sa
Pos_p = 比例ゲインKpp * 位置誤差dx
Ang_p = 比例ゲインKpa * 角度誤差dθ
Pos_i = 積分ゲインKip * 位置誤差積分値Sp
Ang_i = 積分ゲインKia * 角度誤差積分値Sa
比例ゲインKppおよびKpa、積分ゲインKipおよびKiaはいずれも、環境に応じて異なり得る。具体的な値の例示は省略する。
以下、AGV10において行われる各制御タイプを詳細に説明する。なお、説明の便宜上、AGV10は制御タイプ1〜4を切り替え可能であるとして説明するが、全ての制御タイプ1〜4を実装することは必須ではない。制御タイプ1および2を切り替えるが制御タイプ3および4を行わないAGVが存在してもよいし、制御タイプ1および2を行わず制御タイプ3および4を切り替えるAGVが存在してもよい。
以下、各制御タイプ(図18)を説明する。
制御タイプ1
制御タイプ1は、位置誤差または補正係数が閾値TH1よりも大きく、かつAGV10が目的位置から予め定められた範囲TH2内に到達していない場合に該当する。位置誤差または補正係数が閾値TH1よりも大きいため、各駆動輪の回転数を独立して制御することが可能である。
制御タイプ1は、位置誤差または補正係数が閾値TH1よりも大きく、かつAGV10が目的位置から予め定められた範囲TH2内に到達していない場合に該当する。位置誤差または補正係数が閾値TH1よりも大きいため、各駆動輪の回転数を独立して制御することが可能である。
マイコン14aは、位置および角度を用いる比例制御により各モータ16a、16bを駆動させる。比例制御に当たって用いられる補正係数kは以下の式で求められる。
補正係数k = Pos_p + Ang_p
補正係数k = Pos_p + Ang_p
位置P制御量Pos_pおよび角度P制御量Ang_pの内容は上述の通りである。
得られた補正係数kは上述の式(1)または式(4)で利用されて、いずれか一方の駆動輪の回転数を算出するために用いられる。
制御タイプ2
制御タイプ2は、位置誤差または補正係数が閾値TH1以下で、かつAGV10が目的位置から予め定められた範囲TH2内に到達していない場合に該当する。位置誤差または補正係数が閾値TH1以下であるため、制御タイプ1の補正係数kでは各駆動輪の回転数を独立して制御することができない。
制御タイプ2は、位置誤差または補正係数が閾値TH1以下で、かつAGV10が目的位置から予め定められた範囲TH2内に到達していない場合に該当する。位置誤差または補正係数が閾値TH1以下であるため、制御タイプ1の補正係数kでは各駆動輪の回転数を独立して制御することができない。
マイコン14aは、位置および角度を用いる積分制御により各モータ16a、16bを駆動させる。積分制御では以下の補正係数kが利用される。
補正係数k = Pos_i + Ang_i
補正係数k = Pos_i + Ang_i
上述のとおり、位置I制御量Pos_iには位置誤差積分値Spが用いられ、角度I制御量Ang_iには角度誤差積分値Saが用いられている。位置および角度の各々について、微小な誤差量の累積値を利用して各モータ16a、16bの回転を制御することで、位置誤差または補正係数が閾値TH1以下であっても位置および角度を用いてAGV10の制御できる。
制御タイプ3
制御タイプ3は、位置誤差または補正係数が閾値TH1よりも大きく、かつAGV10が目的位置から予め定められた範囲TH2内に到達した場合に該当する。
制御タイプ3は、位置誤差または補正係数が閾値TH1よりも大きく、かつAGV10が目的位置から予め定められた範囲TH2内に到達した場合に該当する。
マイコン14aは、角度を用いる制御を行わず、位置のみを用いる比例制御により各モータ16a、16bを駆動させる。比例制御に当たって用いられる補正係数kは以下の式で求められる。
補正係数k = Pos_p
補正係数k = Pos_p
角度制御を行わないことにより、発散する角度誤差の影響を受けることなく、AGV10を走行させることができる。
制御タイプ4
制御タイプ2は、位置誤差または補正係数が閾値TH1以下で、かつAGV10が目的位置から予め定められた範囲TH2内に到達した場合に該当する。
制御タイプ2は、位置誤差または補正係数が閾値TH1以下で、かつAGV10が目的位置から予め定められた範囲TH2内に到達した場合に該当する。
マイコン14aは、位置のみを用いる積分制御により各モータ16a、16bを駆動させる。積分制御では以下の補正係数kが利用される。
補正係数k = Pos_i
補正係数k = Pos_i
上述のとおり、位置I制御量Pos_iには位置誤差積分値Spが用いられ、角度I制御量Ang_iには角度誤差積分値Saが用いられている。発散する角度誤差を利用せず、微小な位置誤差量の累積値を利用して各モータ16a、16bの回転を制御することで、位置誤差または補正係数が閾値TH1以下であっても、位置を用いてAGV10を制御できる。
図19は、制御タイプ1および2を切り替えて動作するAGV10の挙動を示している。太実線および細破線はそれぞれ位置(x,y)および角度(θ)の推移を表している。横軸、右の縦軸および左の縦軸は図14の例と同じである。図14に示される、本開示の制御を行わない場合のAGV10の挙動との相違を説明する。
図19に示す挙動のうち、位置誤差が±10mmを超えている区間(a)では、制御タイプ1による比例制御が行われ、位置誤差が±10mm以内に入った区間(b)では、制御タイプ2による積分制御が行われる。区間(b)の挙動をみると、特に角度が安定して90の方向に向かうよう遷移していることが分かる。位置誤差も0に近付くよう遷移している。つまり、位置誤差が±10mm以内であっても、AGV10は理想軌道を跨いで直進するのではなく、理想軌道に収束するよう位置制御が有効に機能していると言うことができる。この結果は、AGV10が±10mm以内の位置誤差を低減できるよう動作したことを意味する。
図20は、制御タイプ3および4を切り替えて動作するAGV10の挙動を示している。実線および破線はそれぞれ位置(x,y)および角度(θ)の推移を表している。横軸、右の縦軸および左の縦軸は図17の例と同じである。5m先の目的位置からL以内(TH2内)の部分に注目すると、図17に示される、本開示の制御を行わない場合のAGV10の挙動と対照的に、図20に示す挙動は非常に安定している。角度の発散はなく、かつ位置制御が適切に機能していることが把握される。
図20の例では、目的位置到着時の位置誤差は4mm、角度誤差は1度であった。図17の例では位置誤差が15mm、角度誤差が9度であったことと比較すると、目標位置への到達精度が向上している。なお位置誤差が4mmであるから、目的位置到着時には制御タイプ4の積分制御が行われたことになる。
図21は、制御方法を切り替えながら走行するAGV10の挙動を示している。5m先の目的位置まで走行する例である。実線、破線、横軸および左右の縦軸は図19の記載と同じである。図19との相違点は、5m先の目的位置まで走行させたことである。
図示される例では、区間(a)において制御タイプ1の比例制御、区間(b)において制御タイプ(2)の積分制御、区間(c)において制御タイプ(4)の積分制御が行われた。目標位置到達時の位置誤差は2mm、角度誤差は0.5度であった。
(変形例)
本願発明者は、上述の制御タイプ3が適用される条件下での制御にはさらに改善の余地があると考えた。
本願発明者は、上述の制御タイプ3が適用される条件下での制御にはさらに改善の余地があると考えた。
図22Aは、位置のみを用いる比例制御によるAGV10の位置に関する挙動を示している。図示されるように、AGV10は振動しながら移動している。補正係数によっては発散する場合もあり得る。軌道が振動しまたは発散しないよう、つまり減衰するよう制御すれば、目的位置への到達精度をより向上させることができる。図22Bは減衰振動的な収束軌道の一例を示している。
本願発明者は、制御タイプ3を制御タイプ4に統合し、位置のみを用いる積分制御に切り替えるよう、制御方法を改良した。
図23は、変形例による制御タイプの分類を示している。図18に示す制御タイプ3および4が、制御タイプ5に置き換えられている。制御タイプ5は、位置誤差または補正係数が閾値TH1以下であるかどうかにかかわらず、AGV10が目的位置から予め定められた範囲TH2内に到達した場合に選択される。
制御タイプ5の具体的な内容は、制御タイプ4と同じである。すなわち、補正係数k は以下の式で求められる。
補正係数k = Pos_i
補正係数k = Pos_i
制御タイプ5によれば、AGV10は減衰振動的な軌道を走行するため、振動または発散する軌道を走行するよりも、精度良く目的位置に到達することが可能になる。
従来の制御方法(本開示の制御方法の適用前)、および本開示の制御方法(適用後)を10回ずつ試行し、実証した有効性を以下に示す。数値(%)は、適用後誤差/適用前誤差により算出した、改善効果を示している。
(i)目標位置平均絶対誤差:11.1%
(ii)目標位置最大誤差: 50.0%
(iii)走行中の平均絶対誤差:22.4%
(iv)走行中の最大誤差: 76.9%
(v)平均角度誤差: 54.5%
(i)目標位置平均絶対誤差:11.1%
(ii)目標位置最大誤差: 50.0%
(iii)走行中の平均絶対誤差:22.4%
(iv)走行中の最大誤差: 76.9%
(v)平均角度誤差: 54.5%
本開示の制御方法の適用後は、明らかに位置誤差が低減されていることが理解される。本開示の制御方法を採用することにより目的位置への到達精度をより向上できることが確認された。
上述の実施形態では、閾値TH1を位置誤差、または、比例制御では当該位置誤差の補正が効かなくなる補正係数kを用いた例を説明した。さらなる変形例として、角度誤差を利用して、比例制御および積分制御の一方を選択してもよい。例えば、位置誤差10mmより大きく、かつ角度誤差が1度より大きければ、マイコン14aは制御タイプ1(比例制御)を選択する。また、位置誤差10mm以下であって、かつ角度誤差が1度以下であれば、マイコン14aは制御タイプ2(積分制御)を選択する。「角度誤差が1度」は一例であり、補正が効かない境界の角度値を設定することができる。なお、位置誤差10mmより大きいが、角度誤差が1度以下の場合、または、位置誤差10mm以下だが、角度誤差が1度より大きい場合にどの制御を選択するかは任意に決定できる。その場合には、例えば位置誤差を優先して、図18または図23に記載の基準で比例制御または積分制御を選択してもよい。
以上、本開示にかかるAGV(移動体)の実施形態を説明した。
上記の包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラム、または記録媒体によって実現されてもよい。あるいは、システム、装置、方法、集積回路、コンピュータプログラム、および記録媒体の任意な組み合わせによって実現されてもよい。
本開示の例示的な移動体および移動体システムは、工場、倉庫、建設現場、物流、病院などで荷物、部品、完成品などの物の移動および搬送に好適に利用され得る。
100 移動体管理システム、 101 移動体、 103 外界センサ、 105 位置推定装置、 107 コントローラ、 109 駆動装置
Claims (21)
- 自律的に移動することが可能な移動体であって、
前記移動体を移動させる駆動装置と、
周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、
前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、
前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させるコントローラと
を備え、
前記コントローラは、
前記移動体の位置と前記コースとの位置誤差が前記駆動装置の制御可能量よりも大きいときは、前記位置および前記角度を用いる比例制御により前記駆動装置を駆動させ、
前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御により前記駆動装置を駆動させる、移動体。 - 前記コース上の目標点から予め定められた範囲内に到達したときは、
前記コントローラは、前記位置のみを用いる比例制御または積分制御に切り替える、請求項1に記載の移動体。 - 前記コース上の目標点から予め定められた範囲内に到達し、かつ前記位置誤差が前記制御可能量より大きいときは、
前記コントローラは、前記位置のみを用いる比例制御に切り替える、請求項2に記載の移動体。 - 前記コース上の目標点から予め定められた範囲内に到達し、かつ前記位置誤差が前記制御可能量以下のときは、
前記コントローラは、前記位置のみを用いる積分制御に切り替える、請求項2に記載の移動体。 - 前記コース上の目標点から予め定められた範囲内に到達したときは、
前記コントローラは、前記位置誤差が前記制御可能量よりも大きいか否かにかかわらず、前記位置のみを用いる積分制御に切り替える、請求項1に記載の移動体。 - 前記駆動装置は第1モータおよび第2モータを有し、
前記第1モータの単位時間当たりの回転数をR1、前記第2モータの単位時間当たりの回転数をR2、位置に関する比例ゲインをKpp、角度に関する比例ゲインをKpa、位置誤差をdx、角度誤差をdθ、補正係数をk(>0)としたとき、
前記コントローラは、前記位置誤差が前記制御可能量より大きいときは、
前記位置および前記角度を用いる比例制御として、補正係数kをk=Kpp*dx+Kpa*dθによって算出し、
前記第2モータの回転数R2を、R2=R1*(1−k)によって算出し、
前記駆動装置は、前記第1モータを前記回転数R1で回転させ、前記第2モータを前記回転数R2で回転させる、請求項1から5のいずれかに記載の移動体。 - 前記位置誤差は、前記コース上の第1位置と第2位置とを結ぶ直線に垂直な方向へのずれ量であり、
前記角度誤差は、所定の方向を基準とした前記移動体の現在の角度と、前記移動体の現在の位置から前記コースの終点まで直線で向かうときの前記移動体の角度との差分である、請求項6に記載の移動体。 - 前記駆動装置は第1モータおよび第2モータを有し、
前記第1モータの単位時間当たりの回転数をR1、前記第2モータの単位時間当たりの回転数をR2、位置に関する積分ゲインをKip、角度に関する積分ゲインをKia、位置誤差積分値をSp、角度誤差積分値をSa、補正係数をk(>0)としたとき、
前記コントローラは、前記位置誤差が前記制御可能量以下のときは、
前記位置および前記角度を用いる比例制御として、補正係数kをk=Kip*Sp+Kia*Saによって算出し、
前記第2モータの回転数R2を、R2=R1*(1−k)によって算出し、
前記駆動装置は、前記第1モータを前記回転数R1で回転させ、前記第2モータを前記回転数R2で回転させる、請求項1から7のいずれかに記載の移動体。 - 前記位置誤差積分値Spは、時系列に並べた位置誤差の所定個数の和であり、
前記角度誤差積分値Saは、時系列に並べた角度誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第1位置と第2位置とを結ぶ直線に垂直な方向へのずれ量であり、
前記角度誤差は、所定方向を基準とした前記移動体の現在の角度と、前記移動体の現在の位置から前記コースの終点まで直線で向かうときの前記移動体の角度との差分である、請求項8に記載の移動体。 - 前記駆動装置は第1モータおよび第2モータを有し、
前記第1モータの単位時間当たりの回転数をR1、前記第2モータの単位時間当たりの回転数をR2、位置に関する比例ゲインをKpp、位置誤差をdx、補正係数をk(>0)としたとき、
前記コントローラは、前記位置誤差が前記制御可能量より大きいときは、
前記位置のみを用いる比例制御として、補正係数kをk=Kpp*dxによって算出し、
前記第2モータの回転数R2を、R2=R1*(1−k)によって算出し、
前記駆動装置は、前記第1モータを前記回転数R1で回転させ、前記第2モータを前記回転数R2で回転させる、請求項2または3に記載の移動体。 - 前記位置誤差は、前記コース上の第1位置と第2位置とを結ぶ直線に垂直な方向へのずれ量である、請求項10に記載の移動体。
- 前記駆動装置は第1モータおよび第2モータを有し、
前記第1モータの単位時間当たりの回転数をR1、前記第2モータの単位時間当たりの回転数をR2、位置に関する積分ゲインをKip、位置誤差積分値をSp、補正係数をk(>0)としたとき、
前記コントローラは、前記位置誤差が前記制御可能量以下のときは、
前記位置のみを用いる積分制御として、補正係数kをk=Kip*Spによって算出し、
前記第2モータの回転数R2を、R2=R1*(1−k)によって算出し、
前記駆動装置は、前記第1モータを前記回転数R1で回転させ、前記第2モータを前記回転数R2で回転させる、請求項2または4に記載の移動体。 - 前記位置誤差積分値Spは、時系列に並べた位置誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第1位置と第2位置とを結ぶ直線に垂直な方向へのずれ量である、請求項12に記載の移動体。 - 前記駆動装置は第1モータおよび第2モータを有し、
前記第1モータの単位時間当たりの回転数をR1、前記第2モータの単位時間当たりの回転数をR2、位置に関する積分ゲインをKip、位置誤差積分値をSp、補正係数をk(>0)としたとき、
前記コントローラは、前記位置誤差が前記制御可能量よりも大きいか否かにかかわらず、
前記位置のみを用いる積分制御として、補正係数kをk=Kip*Spによって算出し、
前記第2モータの回転数R2を、R2=R1*(1−k)によって算出し、
前記駆動装置は、前記第1モータを前記回転数R1で回転させ、前記第2モータを前記回転数R2で回転させる、請求項5に記載の移動体。 - 前記位置誤差積分値Spは、時系列に並べた位置誤差の所定個数の和であり、
前記位置誤差は、前記コース上の第1位置と第2位置とを結ぶ直線に垂直な方向へのずれ量である、請求項14に記載の移動体。 - 前記制御可能量は、前記駆動装置が前記移動体を移動させるために、前記移動体の位置および/または姿勢を比例制御によって変更可能な最小の値である、請求項1から15のいずれかに記載の移動体。
- 前記コントローラは、さらに、前記移動体の位置と前記コースとの位置誤差および前記移動体の位置および姿勢と前記コースの目的位置とによって決定される角度誤差を利用して、前記比例制御および前記積分制御の一方を選択する、請求項1から16のいずれかに記載の移動体。
- 自律的に移動することが可能な移動体に搭載されたコンピュータであるコントローラに実行されるコンピュータプログラムであって、
前記移動体は、
前記移動体を移動させる駆動装置と、
周囲の空間を繰り返しスキャンしてスキャンごとにセンサデータを出力する外界センサと、
前記センサデータと予め用意された地図データとを照合して、照合結果に基づき前記移動体の位置および姿勢を示す位置情報を順次出力する位置推定装置と、
前記位置推定装置から出力された前記位置情報を参照しながら、予め設定されたコースに沿って前記駆動装置を制御して前記移動体を移動させる、前記コントローラと
を備え、
前記コンピュータプログラムは前記コントローラに、
前記移動体の位置と前記コースとの位置誤差と、前記駆動装置の制御可能量とを比較させ、
前記位置誤差が前記制御可能量よりも大きいときは前記位置および前記角度を用いる比例制御を実行させ、
前記位置誤差が前記制御可能量以下のときは前記位置および前記角度を用いる積分制御を実行させる、コンピュータプログラム。 - 前記コンピュータプログラムは前記コントローラに、
前記移動体が前記コース上の目標点から予め定められた範囲内に到達したか否かを判定させ、
前記移動体が前記予め定められた範囲内に到達したときは、前記コントローラに、前記位置のみを用いる比例制御または積分制御に切り替えさせる、請求項18に記載のコンピュータプログラム。 - 前記コンピュータプログラムは前記コントローラに、
前記移動体が前記コース上の目標点から予め定められた範囲内に到達したか否かを判定させ、
前記移動体が前記予め定められた範囲内に到達したときは、前記コントローラに、前記位置のみを用いる積分制御に切り替えさせる、請求項18に記載のコンピュータプログラム。 - 前記コンピュータプログラムは前記コントローラに、さらに、前記移動体の位置と前記コースとの位置誤差および前記移動体の位置および姿勢と前記コースの目的位置とによって決定される角度誤差を利用して、前記比例制御および前記積分制御の一方を選択させる、請求項18から20のいずれかに記載のコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019068092A JP2020166701A (ja) | 2019-03-29 | 2019-03-29 | 移動体およびコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019068092A JP2020166701A (ja) | 2019-03-29 | 2019-03-29 | 移動体およびコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020166701A true JP2020166701A (ja) | 2020-10-08 |
Family
ID=72714516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019068092A Pending JP2020166701A (ja) | 2019-03-29 | 2019-03-29 | 移動体およびコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020166701A (ja) |
-
2019
- 2019-03-29 JP JP2019068092A patent/JP2020166701A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6816830B2 (ja) | 位置推定システム、および当該位置推定システムを備える移動体 | |
JP7168211B2 (ja) | 障害物の回避動作を行う移動体およびそのコンピュータプログラム | |
JP6825712B2 (ja) | 移動体、位置推定装置、およびコンピュータプログラム | |
JP7081881B2 (ja) | 移動体および移動体システム | |
JP2019168942A (ja) | 移動体、管理装置および移動体システム | |
CN110998472A (zh) | 移动体以及计算机程序 | |
JP2020057307A (ja) | 自己位置推定のための地図データを加工する装置および方法、ならびに移動体およびその制御システム | |
JP7136426B2 (ja) | 管理装置および移動体システム | |
JP7164085B2 (ja) | 移動体を用いたワークの搬送方法、コンピュータプログラム、および移動体 | |
JP2019053391A (ja) | 移動体 | |
JP7111424B2 (ja) | 移動体、位置推定装置、およびコンピュータプログラム | |
JP2019175137A (ja) | 移動体および移動体システム | |
WO2019194079A1 (ja) | 位置推定システム、当該位置推定システムを備える移動体、およびコンピュータプログラム | |
JPWO2019054209A1 (ja) | 地図作成システムおよび地図作成装置 | |
JP7243014B2 (ja) | 移動体 | |
JP2020166702A (ja) | 移動体システム、地図作成システム、経路作成プログラムおよび地図作成プログラム | |
JP2019179497A (ja) | 移動体および移動体システム | |
JP2019079171A (ja) | 移動体 | |
JP2021056764A (ja) | 移動体 | |
JP2019067001A (ja) | 移動体 | |
WO2020213645A1 (ja) | 地図作成システム、信号処理回路、移動体および地図作成方法 | |
JP2020166701A (ja) | 移動体およびコンピュータプログラム | |
JP2019148871A (ja) | 移動体および移動体システム | |
JPWO2019059299A1 (ja) | 運行管理装置 | |
JP2019175138A (ja) | 移動体および管理装置 |