(57)【要約】【課題】偏荷重等に起因して、移動体が移動に関する指令値から外れた移動を行うことがあるという問題があった。【解決手段】自律的に移動する移動体１は、移動体１を全方向に移動できる移動機構１１と、移動に関する指令値を生成する指令値生成部１３と、指令値に応じて移動機構１１を制御するコントローラ１５と、移動体１の移動に関する測定値を取得するセンサ１４と、測定値と指令値との偏差が低減するように、指令値を補正するフォードバック制御を行う制御部１６とを備え、コントローラ１５は、制御部１６によって補正された指令値に応じて移動機構１１を制御する。このようにして、測定値と指令値との偏差に応じたフィードバック制御を行うことによって、移動体１の指令値への追従性を高めることができる。【選択図】図１
2019114128.tif 000002
【特許請求の範囲】
【請求項１】
自律的に移動する移動体であって、
前記移動体を全方向に移動できる移動機構と、
移動に関する指令値を生成する指令値生成部と、
指令値に応じて前記移動機構を制御するコントローラと、
前記移動体の移動に関する測定値を取得するセンサと、
前記測定値と前記指令値との偏差が低減するように、当該指令値を補正するフォードバック制御を行う制御部と、を備え、
前記コントローラは、前記制御部によって補正された指令値に応じて前記移動機構を制御する、移動体。
【請求項２】
前記制御部は、前記移動体のローカル座標系において、前記移動体の移動速さ、移動方向、及び角速度の少なくともいずれかの指令値についてフィードバック制御を行う、請求項１記載の移動体。
【請求項３】
前記センサは、重力方向を取得可能であり、
前記センサによって取得された重力方向に対応付けて、前記制御部による指令値の補正に関する情報である補正情報を蓄積する蓄積部をさらに備え、
前記制御部は、移動開始時に、前記センサによって取得された重力方向に対応する補正情報に応じて前記指令値を補正する、請求項１または請求項２記載の移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全方向に移動可能な移動体に関する。
【背景技術】
【０００２】
従来、自律的に移動する移動体によって、自動搬送などが行われている。そのような移動体が移動している際に、例えば、偏荷重、走行面の傾きや凹凸等に起因して、移動体が移動に関する指令値から外れた移動を行うことがあった。
【０００３】
なお、関連した技術として、床の凹凸等に起因する外乱の影響下であっても、直進性を高めることができる全方向移動車両の制御装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許５３０６４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に記載された全方向移動車両は、搭乗した乗員によって操作される車両であって、自律的に移動する移動体ではない。一方、指令値に応じて自律的に移動する移動体において、偏荷重等がある場合でも、指令値への追従性（応答性）が高くなるようにしたいという要望があった。
【０００６】
本発明は、上記事情に応じてなされたものであり、移動に関する指令値への追従性を高めることができる、自律的に移動する移動体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明による移動体は、自律的に移動する移動体であって、移動体を全方向に移動できる移動機構と、移動に関する指令値を生成する指令値生成部と、指令値に応じて移動機構を制御するコントローラと、移動体の移動に関する測定値を取得するセンサと、測定値と指令値との偏差が低減するように、指令値を補正するフォードバック制御を行う制御部と、を備え、コントローラは、制御部によって補正された指令値に応じて移動機構を制御する、ものである。
このような構成により、測定値と指令値との偏差に応じたフィードバック制御を行うことによって、移動体がより指令値に応じた移動を行うように制御することができる。その結果、移動体の指令値への追従性を高めることができ、例えば、あらかじめ決められた経路に沿った移動体の移動を実現することができるようになる。
【０００８】
また、本発明による移動体では、制御部は、移動体のローカル座標系において、移動体の移動速さ、移動方向、及び角速度の少なくともいずれかの指令値についてフィードバック制御を行ってもよい。
このような構成により、移動速さや移動方向等についてフィードバック制御を行うことによって、そのフィードバック制御を行う指令値への追従性を高めることができる。
【０００９】
また、本発明による移動体では、センサは、重力方向を取得可能であり、センサによって取得された重力方向に対応付けて、制御部による指令値の補正に関する情報である補正情報を蓄積する蓄積部をさらに備え、制御部は、移動開始時に、センサによって取得された重力方向に対応する補正情報に応じて指令値を補正してもよい。
このような構成により、測定値を測定できない移動開始時においても、過去に蓄積された情報を用いて、現在位置の状況に適した補正を行うことができるようになる。
【発明の効果】
【００１０】
本発明による移動体によれば、移動体の指令値への追従性を高めることができるようになる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態による移動体の構成を示すブロック図
【図２Ａ】同実施の形態における制御部の構成を示す図
【図２Ｂ】同実施の形態における制御部の構成を示す図
【図３】同実施の形態による移動体の動作を示すフローチャート
【図４】同実施の形態による移動体のローカル座標系について説明するための図
【図５】同実施の形態における指令値、測定値、補正値について説明するための図
【図６】同実施の形態における重力方向と補正情報との一例を示す図
【発明を実施するための形態】
【００１２】
以下、本発明による移動体について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による移動体は、全方向に移動可能なものであり、移動に関する指令値について、フィードバック制御を行うものである。
【００１３】
図１は、本実施の形態による移動体１の構成を示すブロック図である。本実施の形態による移動体１は、自律的に移動するものであり、移動機構１１と、現在位置取得部１２と、指令値生成部１３と、センサ１４と、コントローラ１５と、制御部１６と、蓄積部１７と、記憶部１８とを備える。なお、移動体１が自律的に移動するとは、移動体１がユーザ等から受け付ける操作指示に応じて移動するのではなく、自らの判断によって目的地に移動することであってもよい。その目的地は、例えば、手動で決められたものであってもよく、または、自動的に決定されたものであってもよい。また、その目的地までの移動は、例えば、移動経路に沿って行われてもよく、または、そうでなくてもよい。また、自らの判断によって目的地に移動するとは、例えば、進行方向、移動や停止などを移動体１が自ら判断することによって、目的地まで移動することであってもよい。また、例えば、移動体１が、障害物に衝突しないように目的地に移動することであってもよい。移動体１は、例えば、台車であってもよく、移動するロボットであってもよい。ロボットは、例えば、エンターテインメントロボットであってもよく、監視ロボットであってもよく、搬送ロボットであってもよく、清掃ロボットであってもよく、動画や静止画を撮影するロボットであってもよく、その他のロボットであってもよい。
【００１４】
移動機構１１は、移動体１を全方向に移動できるものである。全方向に移動できるとは、任意の方向に移動できることである。移動機構１１は、例えば、走行部（例えば、車輪など）と、その走行部を駆動する駆動手段（例えば、モータやエンジンなど）とを有していてもよい。本実施の形態では、駆動手段がモータである場合について主に説明する。なお、移動機構１１は、移動体１を全方向に移動できるものであるため、その走行部は、全方向移動車輪（例えば、オムニホイール、メカナムホイールなど）であってもよい。全方向移動車輪を有し、全方向に移動可能な移動体については、例えば、特開２０１７−１２８１８７号公報を参照されたい。この移動機構１１としては、公知のものを用いることができるため、その詳細な説明を省略する。本実施の形態では、移動機構１１がオムニホイールである走行部と、その走行部を駆動する駆動手段とを有している場合について主に説明する。
【００１５】
現在位置取得部１２は、移動体１の現在位置を取得する。現在位置の取得は、例えば、無線通信を用いて行われてもよく、周囲の物体までの距離の測定結果を用いて行われてもよく、周囲の画像を撮影することによって行われてもよく、現在位置を取得できるその他の手段を用いてなされてもよい。無線通信を用いて現在位置を取得する方法としては、例えば、ＧＰＳ（Global Positioning System）を用いる方法や、屋内ＧＰＳを用いる方法、最寄りの無線基地局を用いる方法などが知られている。また、例えば、周囲の物体までの距離の測定結果を用いたり、周囲の画像を撮影したりすることによって現在位置を取得する方法としては、例えば、ＳＬＡＭ（Simultaneous Localization and Mapping）などによって知られている方法を用いてもよい。また、あらかじめ作成された地図（例えば、周囲の物体までの距離の測定結果や撮影画像を有する地図など）が記憶されている場合には、現在位置取得部１２は、周囲の物体までの距離を測定し、地図を用いて、その測定結果に対応する位置を特定することによって現在位置を取得してもよく、周囲の画像を撮影し、地図を用いて、その撮影結果に対応する位置を特定することによって現在位置を取得してもよい。また、現在位置取得部１２は、例えば、自律航法装置を用いて現在位置を取得してもよい。また、現在位置取得部１２は、移動体１の向き（方向）を含む現在位置を取得することが好適である。その方向は、例えば、北を０度として、時計回りに測定された方位角によって示されてもよく、その他の方向を示す情報によって示されてもよい。その向きは、電子コンパスや地磁気センサによって取得されてもよい。
【００１６】
指令値生成部１３は、移動に関する指令値を生成する。この指令値は、移動体１のローカル座標系における指令値である。図４は、移動体１のローカル座標系における指令値の一例を示す図であり、移動体１を上方から見た図である。図４を参照して、移動体１のローカル座標系は、３次元のｘｙｚ直交座標系であるとする。なお、ｘｙ平面が、走行面と平行になっており、ｚ軸は、上向き（図４では、紙面の手前向き）が正の方向となっている。指令値生成部１３によって生成される指令値は、例えば、図４で示されるように、移動速さの指令値ｖＣ、移動方向の指令値θＣ、及び角速度の指令値ωＣであってもよい。移動速さは、ベクトルである移動速度の大きさであると考えてもよい。また、移動方向は、ベクトルである移動速度の向きであると考えてもよい。角速度は、移動体１の回転中心の周りでの回転に応じた角速度である。なお、移動速さの指令値ｖＣ、及び移動方向の指令値θＣに代えて、ローカル座標系における、移動速度のｘ成分の指令値ｖＣｘ、及び移動速度のｙ成分の指令値ｖＣｙが生成されてもよい。本実施の形態では、指令値生成部１３によって、移動速さの指令値ｖＣ、移動方向の指令値θＣ、及び角速度の指令値ωＣが生成される場合について主に説明する。指令値生成部１３は、例えば、ワールド座標系における経路に沿って移動体１が移動するように、ワールド座標系における経路と、現在位置取得部１２によって取得された現在位置に相当するワールド座標系における位置とを用いて、移動体１のローカル座標系における指令値を生成してもよい。具体的には、指令値生成部１３は、ワールド座標系（ここでは、ＸＹ直交座標系とする）における移動体１の速度指令（ＶＣＸ，ＶＣＹ）を生成し、その速度指令を、例えば、次式のようにして、移動体１のローカル座標系における速度指令（ｖＣｘ，ｖＣｙ）に変換することによって、ローカル座標系における指令値を生成できる。
ｖＣｘ＝ＶＣＸ・ｃｏｓΘ＋ＶＣＹ・ｓｉｎΘ
ｖＣｙ＝−ＶＣＸ・ｓｉｎΘ＋ＶＣＹ・ｃｏｓΘ
【００１７】
なお、Θは、ワールド座標系であるＸＹ直交座標系に対するローカル座標系であるｘｙ直交座標系の角度である。また、ローカル座標系における移動体１の角速度の指令値ωＣは、ワールド座標系における移動体１の角速度の指令値ΩＣと同じであってもよい。そのような指令値の生成は公知であり、その詳細な説明を省略する。また、速度指令（ｖＣｘ，ｖＣｙ）が分かれば、次のようにして、移動速さの指令値ｖＣ、移動方向の指令値θＣに変換することができる。
ｖＣ＝（ｖＣｘ２＋ｖＣｙ２）１／２
θＣ＝ｔａｎ−１（ｖＣｙ／ｖＣｘ）
【００１８】
センサ１４は、移動体１の移動に関する測定値を取得する。測定値は、生成される指令値に対応するものである。したがって、上記のように、生成される指令値が、移動速さの指令値ｖＣ、移動方向の指令値θＣ、及び角速度の指令値ωＣである場合には、測定値も、移動速さの測定値ｖＤ、移動方向の測定値θＤ、及び角速度の測定値ωＤであることが好適である。また、移動速さの指令値ｖＣ、及び移動方向の指令値θＣに代えて、移動速度のｘ成分の指令値ｖＣｘ、及び移動速度のｙ成分の指令値ｖＣｙが生成される場合には、測定値も、移動速度のｘ成分の測定値ｖＤｘ、及び移動速度のｙ成分の測定値ｖＤｙであってもよい。センサ１４は、加速度センサを含んでいてもよく、ジャイロセンサを含んでいてもよく、エンコーダを含んでいてもよく、その他のセンサを含んでいてもよい。ジャイロセンサは、角速度を測定するものであってもよく、または、角加速度を測定するものであってもよい。移動速度は、例えば、加速度センサによって取得された加速度を積分することによって取得することができる。なお、加速度センサは、例えば、３次元の加速度センサであってもよく、または、２次元の加速度センサであってもよい。加速度センサが３次元の加速度センサである場合には、移動体１の走行面に平行な方向の加速度を用いて、移動速度が取得されてもよい。また、移動速度は、例えば、エンコーダによって測定された車輪の回転数を用いて取得することもできる。移動速度を取得することによって、移動速さの測定値ｖＤ、及び移動方向の測定値θＤを取得したり、移動速度のｘ成分の測定値ｖＤｘ、及び移動速度のｙ成分の測定値ｖＤｙを取得したりできることは言うまでもない。また、角速度は、例えば、ジャイロセンサによって測定したり、ジャイロセンサによって測定された角加速度を積分したりすることによって取得できる。なお、センサ１４は、加速度センサ等に加えて、その加速度センサ等によって取得された加速度等を用いて指令値に対応する測定値を取得する算出手段等を有していてもよい。加速度センサや、ジャイロセンサ等を用いて移動速度や角速度を測定する方法はすでに公知であり、その説明を省略する。本実施の形態では、センサ１４が、３次元の加速度センサと、ジャイロセンサと、それらの測定値を用いて移動速さの測定値ｖＤ、移動方向の測定値θＤ、及び角速度の測定値ωＤを算出する算出手段とを含む場合について主に説明する。
【００１９】
また、センサ１４は、移動体１のローカル座標系における重力方向を取得できるものであってもよい。本実施の形態では、センサ１４によって重力方向を取得できる場合について主に説明する。移動体１が停止している場合には、センサ１４は、３次元の加速度センサによって、重力方向を取得することができる。また、センサ１４は、ジャイロセンサを用いることによって、停止時からの角度変化を取得することができる。その取得した角度変化と、停止時における重力方向とを用いて、センサ１４は、移動時点における重力方向を取得することもできる。なお、停止時からの角度変化は、例えば、ジャイロセンサが角速度センサである場合には、その角速度を積分することによって得ることができ、ジャイロセンサが角加速度センサである場合には、その角加速度を２階積分することによって得ることができる。本実施の形態では、センサ１４が、停止時における重力方向を取得する手段、停止時からの角度変化を取得する手段、及び、停止時の重力方向と停止時からの角度変化とを用いて、移動時点における重力方向を取得する手段をも含む場合、すなわち、センサ１４によって任意の時点における重力方向を取得できる場合について主に説明する。
【００２０】
コントローラ１５は、指令値に応じて移動機構１１を制御する。その指令値は、指令値生成部１３によって生成された指令値であってもよく、後述する制御部１６によって補正された指令値であってもよい。例えば、移動速さの指令値ｖＣ、移動方向の指令値θＣ、及び角速度の指令値ωＣが生成される場合に、コントローラ１５は、補正された移動速さの指令値ｖＭ、補正された移動方向の指令値θＭ、及び補正された角速度の指令値ωＭに応じて移動機構１１を制御してもよく、または、生成された移動速さの指令値ｖＣ、補正された移動方向の指令値θＭ、及び補正された角速度の指令値ωＭに応じて移動機構１１を制御してもよい。このように、複数の指令値が生成される場合に、コントローラ１５は、１以上の補正された指令値に応じて移動機構１１を制御するものであればよく、残りの指令値については、生成された指令値に応じて移動機構１１を制御してもよい。コントローラ１５が移動機構１１を制御するとは、例えば、移動体１のローカル座標系における指令値を、移動機構１１のモータ座標系における移動量に変換することであってもよい。なお、そのような変換はすでに公知であり、その詳細な説明を省略する。
【００２１】
制御部１６は、センサ１４によって取得された測定値と、指令値生成部１３によって生成された指令値との偏差が低減するように、指令値生成部１３によって生成された指令値を補正するフォードバック制御を行う。その補正対象の指令値は、前述のように、指令値生成部１３によって生成されたすべての指令値であってもよく、または、一部の指令値であってもよい。すなわち、制御部１６は、移動体１のローカル座標系において、移動体１の移動速さ、移動方向、及び角速度の少なくともいずれかの指令値についてフィードバック制御を行うものであってもよい。なお、本実施の形態では、制御部１６が、移動速さ、移動方向、及び角速度のそれぞれの指令値についてフィードバック制御を行う場合について主に説明する。
【００２２】
図２Ａは、ある指令値についてフィードバック制御を行う制御部１６の構成を示す図である。図２Ａにおいて、例えば、指令値は、移動速さの指令値であり、測定値は、移動速さの測定値であってもよい。なお、制御部１６が、移動速さの指令値、移動方向の指令値、角速度の指令値のそれぞれについてフィードバック制御を行う場合には、各指令値について、図２Ａで示される構成によるフィードバック制御が行われてもよい。
【００２３】
図２Ａを参照して、制御部１６は、指令値と測定値との偏差を算出する偏差算出部２１と、その偏差が低減するようにフィードバック制御を行うフィードバック制御部２２と、フィードバック制御部２２の出力と、指令値とを加算することによって補正後の指令値を出力する加算器２３とを備える。偏差算出部２１は、指令値生成部１３によって生成された指令値から、センサ１４によって取得された指令値を減算することによって、偏差を算出する。そして、その偏差が低減するように、フィードバック制御部２２によって指令値の補正量が算出される。また、フィードバック制御部２２から出力された補正量と、指令値生成部１３によって生成された指令値とが加算器２３によって加算されることによって、補正後の指令値が生成される。なお、フィードバック制御部２２が行うフィードバック制御は、例えば、ＰＩＤ制御であってもよく、Ｐ制御であってもよく、ＰＩ制御であってもよく、ＰＤ制御であってもよく、その他のフィードバック制御であってもよい。
【００２４】
図５は、移動速さ及び移動方向に関するフィードバック制御について説明するための図である。図５を参照して、指令値生成部１３によって、移動速さの指令値ｖＣ、移動方向の指令値θＣが生成され、センサ１４によって、移動速さの測定値ｖＤ、移動方向の測定値θＤが取得されたとする。この場合には、例えば、制御部１６によって測定値が指令値に近づくためのフィードバック制御が行われ、補正後の移動速さの指令値ｖＭ、補正後の移動方向の指令値θＭが出力されることになる。そのようにして、測定値が指令値に近づくようにフィードバック制御が行われることになる。
【００２５】
図２Ｂは、ある指令値についてフィードバック制御を行う制御部１６の他の構成の一例を示す図である。図２Ｂを参照して、制御部１６は、指令値と測定値との偏差を算出する偏差算出部３１と、その偏差が低減するようにフィードバック制御を行い、補正後の指令値を出力するフィードバック制御部３２とを備える。偏差算出部３１は、偏差算出部２１と同様のものである。なお、フィードバック制御部３２が行うフィードバック制御は、例えば、ＰＩＤ制御であってもよく、ＰＩ制御であってもよく、その他のフィードバック制御であってもよい。
また、制御部１６は、移動開始時に、センサ１４によって取得された重力方向に対応する補正情報に応じて指令値を補正してもよい。その補正の処理については後述する。
【００２６】
蓄積部１７は、センサ１４によって取得された重力方向に対応付けて、制御部１６による指令値の補正に関する情報である補正情報を記憶部１８に蓄積する。例えば、移動体１の移動時におけるある時点Ｔ１において、センサ１４によって取得された重力方向が、（α１，β１）であったとする。なお、そのα１は、例えば、時点Ｔ１における重力方向と、移動体１のローカル座標系（ｘｙｚ座標系）におけるｚ軸とのなす角度であり、β１は、時点Ｔ１における重力方向をｘｙ平面に投影した方向と、ｘ軸とのなす角度であってもよい。また、その時点Ｔ１における移動速さの指令値、移動方向の指令値のそれぞれに関する補正量がΔｖ１，Δθ１であったとすると、補正情報は、例えば、補正量そのものであってもよく、その補正量から得られる値であってもよい。後者の場合には、例えば、その補正量に所定の丸め処理（端数処理）を行ったものであってもよい。その丸め処理は、例えば、補正量が０に近づくように行われてもよい。補正量は、例えば、「補正後の指令値−生成された指令値」によって算出されてもよい。制御部１６が、図２Ａで示されるものである場合には、フィードバック制御部２２の出力が補正量となる。なお、ここでは、補正情報が、移動速さの指令値、及び移動方向の指令値に対応するものである場合について説明したが、補正情報は、移動速度のｘ成分の指令値ｖＣｘ、及び移動速度のｙ成分の指令値ｖＣｙに対応するものであってもよい。また、補正情報には、角速度の指令値に対応するものも含まれていてもよい。
【００２７】
蓄積部１７は、例えば、所定の時間ごとに重力方向と補正情報とを蓄積してもよい。すなわち、蓄積部１７は、所定の時間ごとにセンサ１４によって取得された重力方向と、その重力方向が取得された時点の補正情報とを記憶部１８に蓄積してもよい。また、蓄積部１７は、例えば、重力方向が所定の閾値以上変化した際に、重力方向と補正情報とを蓄積してもよい。すなわち、センサ１４によって取得された重力方向が所定の閾値以上変化した場合に、蓄積部１７は、その重力方向と、その時点の補正情報とを記憶部１８に蓄積してもよい。図６は、蓄積部１７によって蓄積された重力方向と、補正情報との対応の一例を示す図である。
【００２８】
なお、記憶部１８において、あらかじめ複数の重力方向が記憶されていてもよい。そして、蓄積部１７は、補正情報を蓄積する際に、その補正情報が取得された時点の重力方向に最も近い、記憶部１８で記憶されている重力方向に対応付けて、その補正情報を蓄積してもよい。その場合に、すでに蓄積されている補正情報が存在するときには、例えば、上書きで蓄積してもよく、追加で蓄積してもよく、または、蓄積を行わなくてもよい。また、重力方向と補正情報との両方が蓄積部１７によって蓄積される場合にも、例えば、上書きで蓄積されてもよく、近似した重力方向については、一つの重力方向に対応付けて複数の補正情報が蓄積されてもよく、または、すでに蓄積されている重力方向と近似する重力方向に関しては、蓄積が行われなくてもよい。このように、記憶部１８では、重力方向と、その重力方向に対応する補正情報との組が１以上、記憶されることになる。記憶部１８での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部１８は、所定の記録媒体（例えば、半導体メモリや磁気ディスクなど）によって実現されうる。
【００２９】
次に、蓄積された補正情報の使用方法について説明する。移動体１が移動を開始する直前の時点では、まだ移動体１が移動していないため、指令値に対応する測定値を取得することはできず、測定値はすべて０になる。一方、移動体１が斜面に存在している場合や、移動体１に偏荷重がある場合などには、移動体１が傾くことになり、移動体１のローカル座標系において、重力方向がｚ軸方向からずれることがある。そのような場合には、制御部１６は、移動開始時に、センサ１４によって取得された重力方向に対応する補正情報に応じて指令値を補正してもよい。すなわち、制御部１６は、記憶部１８において補正情報に対応付けられている重力方向のうち、センサ１４によって取得された重力方向に最も近い重力方向を特定し、その特定した重力方向に対応付けられている補正情報を読み出し、移動開始時の指令値に、その補正情報に応じた補正値を加算した値をコントローラ１５に出力してもよい。補正情報に応じた補正値は、例えば、補正情報そのものであってもよく、または、補正情報に１より小さい正の係数を乗算した結果であってもよい。例えば、移動開始直前の重力方向に対応する補正情報が（Δｖ１，Δθ１）である場合には、制御部１６は、移動速さの指令値ｖＣ、移動方向の指令値θＣを、次のように補正してもよい。なお、εは、１より小さい正の実数である。
ｖＣ→ｖＣ＋ε×Δｖ１
θＣ→θＣ＋ε×Δθ１
【００３０】
このようにすることで、例えば、移動体１が斜面に存在している場合や、移動体１に偏荷重がある場合などであっても、それらの外乱による影響を低減するための指令値の補正をあらかじめ行うことができ、移動の開始後に、移動体１が指令値と大きく外れた移動を行うような事態を低減することができる。なお、記憶部１８では、鉛直方向を示す重力方向に対応付けて、０を示す補正情報が記憶されていてもよく、または、鉛直方向を示す重力方向に対応する補正情報は記憶されていなくてもよい。また、制御部１６は、移動開始の直前に取得された重力方向が鉛直方向を示すときには、重力方向に対応する補正情報を用いた指令値の補正を行わなくてもよい。また、記憶部１８において、一つの重力方向に対応付けて複数の補正情報が記憶されている場合には、制御部１６は、その複数の補正情報の代表値を、移動開始時の指令値の補正に用いてもよい。その代表値は、例えば、平均値や中間値であってもよく、０に最も近い値（すなわち、絶対値が最小値となる値）であってもよい。
【００３１】
次に、移動体１の動作について図３のフローチャートを用いて説明する。
（ステップＳ１０１）指令値生成部１３は、移動体１が移動を開始するかどうか判断する。そして、移動を開始する場合には、ステップＳ１０２に進み、そうでない場合には、移動を開始するまで、ステップＳ１０１の判断を繰り返す。指令値生成部１３は、例えば、経路に応じた移動を開始する際に、移動を開始すると判断してもよい。
【００３２】
（ステップＳ１０２）センサ１４は、重力方向を取得し、制御部１６に渡す。
【００３３】
（ステップＳ１０３）制御部１６は、記憶部１８を参照し、センサ１４から受け取った重力方向に対応する補正情報を読み出す。
【００３４】
（ステップＳ１０４）指令値生成部１３は、移動に関する指令値を生成し、制御部１６に渡す。
【００３５】
（ステップＳ１０５）センサ１４は、その時点の測定値を取得し、制御部１６に渡す。
【００３６】
（ステップＳ１０６）センサ１４は、その時点の重力方向を取得し、蓄積部１７に渡す。
【００３７】
（ステップＳ１０７）制御部１６は、フィードバック制御によって、指令値生成部１３から受け取った指令値を、センサ１４から受け取った測定値を用いて補正する。なお、移動を開始する際には、その測定値はすべて０であるため、制御部１６は、ステップＳ１０３で取得した補正情報を用いて指令値を補正する。そして、制御部１６は、補正した指令値をコントローラ１５に出力する。また、制御部１６は、その時点の補正に応じた補正量を蓄積部１７に渡す。
【００３８】
（ステップＳ１０８）蓄積部１７は、センサ１４から受け取った重力方向と、制御部１６から受け取った補正量に応じた補正情報とを記憶部１８に蓄積する。なお、移動開始時の補正量は、記憶部１８から読み出された補正情報に応じたものであるため、蓄積部１７は、その補正量に応じた蓄積は行わなくてもよい。
【００３９】
（ステップＳ１０９）コントローラ１５は、制御部１６から受け取った補正後の指令値を、モータ座標系におけるモータの移動量に変換し、その移動量に応じて移動機構１１の各モータを駆動させる。
【００４０】
（ステップＳ１１０）指令値生成部１３は、移動体１が目的地に到達したかどうか判断する。そして、目的地に到達した場合には、指令値の生成を停止してステップＳ１０１に戻り、目的地の到達していない場合には、指令値の生成を継続するため、ステップＳ１０４に戻る。なお、目的地に到達したかどうかは、例えば、現在位置取得部１２によって取得された現在位置が、目的地の位置になったかどうかによって判断されてもよい。
【００４１】
なお、図３のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図３のフローチャートには含まれていないが、現在位置取得部１２による現在位置の取得は、繰り返して行われているものとする。また、図３のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００４２】
以上のように、本実施の形態による移動体１によれば、移動体１の指令値への追従性を高めることができるようになる。また、そのことを、ワールド座標系における経路に応じた指令値を生成するアルゴリズムを変更することなく、移動体１におけるローカルの制御によって実現することができる。また、重力方向と、補正情報とを対応付けて蓄積しておくことにより、測定値を取得できない移動開始時においても、その移動開始時点の重力方向に応じた指令値の補正を行うことができ、移動開始時に、測定値が指令値から大きく外れる事態を回避することができるようになる。
【００４３】
なお、センサ１４は、移動体１の移動時には、重力方向を取得しないものであってもよい。その場合には、蓄積部１７は、移動開始直前の重力方向に対応付けて、移動開始直後の指令値の補正に関する補正情報を蓄積してもよい。その場合であっても、その蓄積された補正情報を用いて移動開始時の指令値の補正を行うことによって、測定値が指令値から大きく外れる事態を回避することができるようになる。なお、この場合には、補正情報の蓄積は、移動開始時に指令値の補正を行っていないときに行われてもよい。すなわち、移動開始時点の重力方向に対応する補正情報が蓄積されている場合には、その補正情報を用いた指令値の補正を行うが、補正情報の蓄積は行わず、移動開始時点の重力方向に対応する補正情報が蓄積されていない場合には、補正情報を用いた指令値の補正は行わないが、補正情報の蓄積を行ってもよい。
【００４４】
また、本実施の形態では、移動開始時にも指令値の補正を行う場合について説明したが、そうでなくてもよい。移動開始時における指令値の補正を行わない場合には、移動体１は、蓄積部１７や記憶部１８を備えていなくてもよい。また、移動開始時における指令値の補正を行わない場合には、センサ１４は、重力方向を取得しなくてもよい。
また、本実施の形態において、指令値の生成などに現在位置を使用しない場合には、移動体１は、現在位置取得部１２を備えていなくてもよい。
【００４５】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００４６】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【００４７】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【００４８】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【００４９】
また、上記実施の形態において、移動体１に含まれる２以上の構成要素が通信デバイスや入力デバイス等を有する場合に、２以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【００５０】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【００５１】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００５２】
以上より、本発明による移動体によれば、移動体の指令値への追従性を高めることができるという効果が得られ、自律的に全方向に移動できる移動体として有用である。
【符号の説明】
【００５３】
１  移動体
１１  移動機構
１２  現在位置取得部
１３  指令値生成部
１４  センサ
１５  コントローラ
１６  制御部
１７  蓄積部
１８  記憶部
【図１】
2019114128.tif 000003
【図２Ａ】
2019114128.tif 000004
【図２Ｂ】
2019114128.tif 000005
【図３】
2019114128.tif 000006
【図４】
2019114128.tif 000007
【図５】
2019114128.tif 000008
【図６】
2019114128.tif 000009