以下、本発明による移動体について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるマニピュレータを有する移動体は、移動制御に用いられる現在位置よりも高精度な位置検知を行うことができる位置検知部を備えており、位置検知後の移動体の変化量が大きくなるほど大きくなる誤差を取得し、その誤差を考慮しても、マニピュレータの位置があらかじめ決められた範囲内となる場合にマニピュレータを動作可能に制御するものである。
図1は、本実施の形態による移動体1の外観を示す模式図であり、図2は、移動体1の機能的な構成を示すブロック図である。移動体1は、自律的に移動するものであり、マニピュレータ11と、移動機構12と、位置検知部13と、現在位置取得部14と、移動制御部15と、取得部16と、記憶部17と、マニピュレータ制御部18とを備える。なお、移動体1が自律的に移動するとは、移動体1がユーザ等から受け付ける操作指示に応じて移動するのではなく、自らの判断によって目的地に移動することであってもよい。その目的地は、例えば、手動で決められたものであってもよく、または、自動的に決定されたものであってもよい。また、その目的地までの移動は、例えば、移動経路に沿って行われてもよく、または、そうでなくてもよい。また、自らの判断によって目的地に移動するとは、例えば、進行方向、移動や停止などを移動体1が自ら判断することによって、目的地まで移動することであってもよい。また、例えば、移動体1が、障害物に衝突しないように移動することであってもよい。移動体1は、例えば、台車であってもよく、移動するロボットであってもよい。ロボットは、例えば、エンターテインメントロボットであってもよく、監視ロボットであってもよく、搬送ロボットであってもよく、清掃ロボットであってもよく、動画や静止画を撮影するロボットであってもよく、溶接ロボットであってもよく、塗装ロボットであってもよく、農薬散布ロボットであってもよく、組立ロボットであってもよく、その他のロボットであってもよい。
マニピュレータ11は、モータによって駆動される関節によって連結された複数のアームを有するものであってもよい。マニピュレータ11の先端には、マニピュレータ11によって行われる作業、例えば、溶接や搬送対象の把持、塗装、部品等の組み立てなどに応じた手先効果器(エンドエフェクタ)が設けられていてもよい。マニピュレータ11は、例えば、垂直多関節ロボットのマニピュレータであってもよく、水平多関節ロボットのマニピュレータであってもよい。また、そのマニピュレータ11の軸数は問わない。図1で示されるように、マニピュレータ11の基端側は、移動体1の車体1aに固定されていてもよい。また、マニピュレータ11は、マニピュレータ11の全体を旋回させることができる軸を基端側に有していてもよい。
移動機構12は、移動体1を移動させる。移動機構12は、例えば、移動体1を全方向に移動できるものであってもよく、または、そうでなくてもよい。全方向に移動できるとは、任意の方向に移動できることである。移動機構12は、例えば、走行部(例えば、車輪など)と、その走行部を駆動する駆動手段(例えば、モータやエンジンなど)とを有していてもよい。また、移動機構12は、車輪等の回転数や速度を取得できる機構、例えば、エンコーダ等を有していてもよい。なお、移動機構12が、移動体1を全方向に移動できるものである場合には、その走行部は、全方向移動車輪(例えば、オムニホイール、メカナムホイールなど)であってもよい。また、移動機構12は、移動体1を回転(旋回)できるものであってもよい。この移動機構12としては、公知のものを用いることができるため、その詳細な説明を省略する。
位置検知部13は、現在位置取得部14によって取得される現在位置よりも高い精度で移動体1の位置検知を行う。位置検知部13によって行われる位置の検知は、例えば、移動体1の位置の取得であってもよく、移動体1があらかじめ決められた位置に存在することを検知することであってもよい。後者の場合には、移動体1があらかじめ決められた位置に存在するときに、位置検知部13によって、そのことが確認されることになる。そのあらかじめ決められた位置は、ワールド座標系において決定された位置であってもよく、または、後述する範囲情報によって示される範囲において相対的に決められた位置(例えば、範囲情報によって示される領域におけるローカル座標系によって示される位置等)であってもよい。なお、位置の取得よりも、あらかじめ決められた位置に存在することを検知するほうが容易であるため、位置検知部13は、移動体1があらかじめ決められた位置に存在することを検知するものであることが好適である。
位置検知部13が移動体1の位置を取得する場合に、その位置の取得は、例えば、移動体1の移動領域に配置されたマーカを撮影した撮影画像を用いて行われてもよい。なお、マーカを用いた位置の取得が行われる場合には、マーカは、視覚的に認識可能な2次元の図形であってもよい。マーカの形状は問わないが、例えば、正方形状や、長方形状、その他の多角形状、円形状、楕円形状、また、それらの組み合わせであってもよい。なお、その形状は、特定可能な3以上の特徴点を有していることが好適である。また、その特徴点の少なくとも3点については、特徴点間のサイズが既知であることが好適である。そのサイズは、マーカと、撮影手段(カメラ)との相対的な位置関係を取得するのに必要であるため、移動体1の図示しない記録媒体において保持されており、位置検知部13がアクセス可能になっていることが好適である。なお、上記のように、マーカの3点の特徴点間のサイズが既知であるとすると、そのサイズ(特徴点間の距離)を用いることによって、撮影手段とマーカとの相対的な位置関係を取得できることが知られている。したがって、位置検知部13は、そのようにしてマーカに対するカメラの相対的な位置関係を取得することによって、移動体1の位置を取得することができる。なお、マーカのワールド座標系における位置が既知である場合には、その相対的な位置関係を用いて、移動体1のワールド座標系における位置を取得することもできる。
位置検知部13が、移動体1があらかじめ決められた位置に存在することを検知する場合に、その検知は、例えば、光データ伝送装置を用いて行われてもよく、バンパースイッチ等の物理スイッチを用いて行われてもよく、上記の位置の取得と同様に、マーカを撮影した撮影画像を用いて行われてもよく、AGV(Automated Guided Vehicle)等で使用される、床面に貼着された磁気ガイドテープを検知することによって行われてもよい。
位置検知に光データ伝送装置を用いる場合には、一組の光データ伝送装置のうち、一方を移動体1の移動領域に配置し、他方を移動体1に搭載してもよい。そして、移動領域に配置された光データ伝送装置と、移動体1に搭載された光データ伝送装置との間で光データ伝送を行うことができた時に、位置検知部13は、移動体1があらかじめ決められた位置に存在すると判断してもよい。本実施の形態では、位置検知部13が光データ伝送装置を用いて位置検知を行う場合について主に説明する。図1で示されるように、移動体1の移動領域に配置される光データ伝送装置22は、床面に設置された支持部21によって支持されていてもよい。なお、図1では、光データ伝送が斜め方向に行われるように光データ伝送装置22が設置されているが、光データ伝送は、上下方向(鉛直方向)や、水平方向で行われてもよい。光データ伝送が行われた場合に、移動体1の存在範囲がより狭くなる、すなわち位置検知がより高精度になるという観点からは、光データ伝送装置22と、位置検知部13が有する光データ伝送装置との間での光データ伝送は、水平方向よりも、上下方向に近い方向で行われることが好適である。そのようにすることで、光データ伝送装置22と光データ伝送を行うことができる位置検知部13の範囲を限定することができるからである。
位置検知に物理スイッチを用いる場合には、例えば、移動体1の移動領域に物理スイッチが配置されており、その物理スイッチに移動体1が接触したときに、その接触を伝える情報を位置検知部13が受信することによって、移動体1があらかじめ決められた位置に存在することが検知されてもよい。なお、物理スイッチは、移動体1側に装着されていてもよい。その場合には、例えば、移動体1において、移動領域に配置された特定形状の物体に合うように複数の物理スイッチがそれぞれ配設されており、その特定形状の物体に複数の物理スイッチのそれぞれが同時に接触することによって、位置の検知が行われてもよい。
位置検知に撮影画像を用いる場合には、移動体1の移動領域に配置されたマーカが、撮影画像におけるあらかじめ決められた箇所に存在するときに、位置検知部13は、移動体1があらかじめ決められた位置に存在することを検知してもよい。この場合には、位置検知部13は、周囲の撮影画像を取得するためのカメラを有していてもよい。
位置検知に磁気ガイドテープを用いる場合には、床面に貼着された磁気ガイドテープが、磁気センサによって読み取られたときに、位置検知部13は、移動体1があらかじめ決められた位置に存在することを検知してもよい。なお、磁気センサによって、床面に貼着されたT字状や十字状の磁気ガイドテープの交点部分を検知することによって、検知の精度を向上させるようにしてもよい。このように、磁気ガイドテープを用いた位置検知が行われる場合には、位置検知部13は、磁気ガイドテープを検知する磁気センサを有していてもよい。
現在位置取得部14は、移動体1の現在位置を取得する。現在位置の取得は、例えば、無線通信を用いて行われてもよく、周囲の物体までの距離の測定結果を用いて行われてもよく、周囲の画像を撮影することによって行われてもよく、現在位置を取得できるその他の手段を用いてなされてもよい。無線通信を用いて現在位置を取得する方法としては、例えば、GPS(Global Positioning System)を用いる方法や、屋内GPSを用いる方法、最寄りの無線基地局を用いる方法などが知られている。また、例えば、周囲の物体までの距離の測定結果を用いたり、周囲の画像を撮影したりすることによって現在位置を取得する方法としては、例えば、SLAM(Simultaneous Localization and Mapping)などによって知られている方法を用いてもよい。周囲の物体までの距離の測定結果としては、例えば、測距センサの測定結果を用いてもよい。測距センサは、例えば、移動体1の全方向または所定の角度範囲の方向に関して周囲の物体までの距離を測定するものであり、レーザセンサや、超音波センサ、マイクロ波を用いた距離センサ、ステレオカメラによって撮影されたステレオ画像を用いた距離センサなどであってもよい。レーザセンサは、レーザレンジセンサ(レーザレンジスキャナ)であってもよい。また、あらかじめ作成された地図(例えば、周囲の物体までの距離の測定結果や撮影画像を有する地図など)が記憶されている場合には、現在位置取得部14は、地図を用いて、周囲の物体までの距離の測定結果に対応する位置を特定することによって現在位置を取得してもよく、周囲の画像を撮影し、地図を用いて、その撮影結果に対応する位置を特定することによって現在位置を取得してもよい。また、現在位置取得部14は、例えば、自律航法装置を用いて現在位置を取得してもよい。現在位置取得部14による現在位置の取得は、例えば、確率的なモデルを用いたものであってもよい。例えば、パーティクルフィルタを用いたSLAMによって現在位置を取得する場合には、確率的なモデルを用いて現在位置を取得することになる。このような確率的なモデルを用いた場合には、通常、現在位置の取得精度は、位置検知部13による位置検知ほどは高くならないことになる。また、現在位置取得部14は、移動体1の向き(方向)を含む現在位置を取得することが好適である。その方向は、例えば、北を0度として、時計回りに測定された方位角によって示されてもよく、その他の方向を示す情報によって示されてもよい。その向きは、電子コンパスや地磁気センサによって取得されてもよい。
なお、上記のように、現在位置取得部14によって取得される現在位置は、位置検知部13による位置検知よりも精度の低いものである。したがって、位置検知部13によって位置検知が行われた際には、その位置検知された位置を現在位置とする。すなわち、位置検知が行われた際には、現在位置が、位置検知された位置に更新されることになる。通常、高精度な位置の取得には時間がかかるため、移動制御で用いられる現在位置としては、リアルタイム性を重視して、位置検知される位置よりも低精度のものが用いられることになる。
移動制御部15は、現在位置取得部14によって取得された現在位置を用いて移動機構12を制御することによって、移動体1の移動を制御する。移動の制御は、移動体1の移動の向きや、移動の開始・停止などの制御であってもよい。例えば、移動経路が設定されている場合には、移動制御部15は、移動体1がその移動経路に沿って移動するように、移動機構12を制御してもよい。より具体的には、移動制御部15は、現在位置取得部14によって取得される現在位置が、その移動経路に沿ったものになるように、移動機構12を制御してもよい。また、移動制御部15は、地図を用いて、移動の制御を行ってもよい。移動制御部15による移動機構12の制御は公知であるため、その詳細な説明を省略する。
取得部16は、位置検知部13によって移動体1の位置が検知された時点からの移動機構12による移動体1の変化量が大きくなるほど大きくなる誤差を取得する。移動機構12による移動体1の変化量とは、移動体1の移動量及び回転量の少なくとも一方であってもよい。本実施の形態では、変化量が、移動体1の移動量及び回転量の両方である場合について主に説明する。
移動体1の移動量や回転量は、移動や回転の絶対値を累積した値である。したがって、例えば、移動体1が前方にAメートル前進し、その後、Aメートル後退することによって元の位置に戻った場合でも、移動量は2Aメートルとなる。また、例えば、移動体1が上方から見て時計回りに角度θだけ回転し、その後、反時計回りに角度θだけ回転することによって元の角度に戻った場合でも、回転量は角度2θとなる。
位置検知部13によって移動体1の位置検知が行われた時点からt秒後の移動体1の移動量をα(t)とし、回転量をβ(t)とすると、t秒後の誤差ER(t)は、例えば、次式のように取得されてもよい。なお、以下の関数F(x)、G(x)はそれぞれ変数xに関する増加関数であり、x≧0である場合に、F(x)≧0、G(x)≧0であるとする。また、関数F(x)、G(x)はそれぞれ、F(0)=0、G(0)=0であることが好適である。位置検知の行われた時点(t=0)においては、位置検知された位置が現在位置とされており、高い精度の現在位置が取得されていることになるため、t=0の時点における誤差は、0とされることが好適だからである。なお、位置検知部13による位置検知の誤差が分かっている場合には、t=0の時点の誤差を、その位置検知の誤差に設定してもよい。
ER(t)=F(α(t))+G(β(t))
なお、移動量α(t)は、例えば、現在位置取得部14によって取得される現在位置を用いて取得されてもよく、または、移動機構12に装着されたエンコーダの値を用いて取得されてもよい。また、回転量β(t)は、例えば、現在位置に含まれる移動体1の方向を用いて取得されてもよく、または、移動体1に装着された方位センサや角速度センサの値を用いて取得されてもよい。角速度センサの値を用いて回転量β(t)を算出する場合には、角速度センサの値を積分した値の絶対値を加算することによって、回転量を算出してもよい。また、移動体1が移動を開始してから一度も位置検知が行われていない場合には、上式における「t」は、移動開始時点からの時間であってもよい。
記憶部17では、マニピュレータ11の作業可能な範囲を示す範囲情報が記憶される。範囲情報は、例えば、マニピュレータ11の作業可能な範囲の輪郭を示す情報であってもよい。範囲情報は、通常、2次元平面における範囲を示す情報である。また、範囲情報は、例えば、ワールド座標系における範囲を示す情報であってもよい。
記憶部17に範囲情報が記憶される過程は問わない。例えば、記録媒体を介して範囲情報が記憶部17で記憶されるようになってもよく、通信回線等を介して送信された範囲情報が記憶部17で記憶されるようになってもよく、または、入力デバイスを介して入力された範囲情報が記憶部17で記憶されるようになってもよい。記憶部17での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部17は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
マニピュレータ制御部18は、マニピュレータ11を制御する。マニピュレータ制御部18は、例えば、マニピュレータ11の手先の位置や姿勢に関する制御を行ってもよく、また、マニピュレータ11の手先効果器に関する制御を行ってもよい。マニピュレータ制御部18は、例えば、マニピュレータ11が有する各モータを制御するサーボコントローラを介してマニピュレータ11の制御を行ってもよい。例えば、マニピュレータ11によって行われる作業があらかじめ決められている場合には、マニピュレータ制御部18は、それに応じてマニピュレータ11を制御するようにしてもよい。その作業は、例えば、範囲情報によって示される範囲内において、位置ごとに規定されていてもよい。
マニピュレータ制御部18は、マニピュレータ11の位置を、取得部16によって取得された誤差だけ広げた範囲が、記憶部17で記憶されている範囲情報によって示される範囲内である場合にマニピュレータ11を動作させ、それ以外の場合、すなわち、マニピュレータ11の位置を、取得部16によって取得された誤差だけ広げた範囲が、記憶部17で記憶されている範囲情報によって示される範囲内でない場合にマニピュレータ11を動作させない。
なお、マニピュレータ11の位置がある範囲に含まれるとは、マニピュレータ11のすべての位置(例えば、先端の位置や、基端側の端部の位置、各関節の位置、各リンク(アーム)に含まれる位置等)がその範囲に含まれることを意味していてもよい。マニピュレータ11は通常、複数のリンクが関節でつながった構成となっているため、マニピュレータ11の位置がある範囲に含まれるかどうかは、マニピュレータ11のいくつかの代表点の位置がその範囲に含まれるかどうかによって判断することができる。その代表点は、例えば、マニピュレータ11の先端、各関節、及び基端側の端部であってもよい。また、マニピュレータ制御部18は、通常、マニピュレータ11の各関節の角度を用いることによって、移動体1のローカル座標系における代表点の位置を知ることができる。また、現在位置取得部14によって取得されたワールド座標系における現在位置を用いて、そのローカル座標系における代表点の位置を、ワールド座標系における位置に変換することができる。したがって、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内であるかどうかは、ワールド座標系において、マニピュレータ11の各代表点の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内であるかどうかによって判断されてもよい。そして、各代表点の位置を誤差だけ広げた範囲のそれぞれが、範囲情報によって示される範囲内である場合に、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内であると判断され、各代表点の位置を誤差だけ広げた範囲のいずれかが、範囲情報によって示される範囲内でない場合に、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内でないと判断されてもよい。
マニピュレータ制御部18は、マニピュレータ11のある位置について判断を行う場合に、その位置を中心とする円であって、半径が誤差の大きさである円の領域全体が、範囲情報の示す範囲内となるときに、その位置を誤差だけ広げた範囲が、範囲情報の示す範囲内であると判断し、その円の領域の少なくとも一部が、範囲情報の示す範囲外となるときに、その位置を誤差だけ広げた範囲が、範囲情報の示す範囲内でないと判断してもよい。
図4は、マニピュレータ11の先端11aを誤差だけ広げた範囲が、範囲情報によって示される範囲50内であるかどうかの判断について説明するための図である。図4は、移動体1及び範囲50を上方から見た平面図である。図4で示されるように移動体1及びマニピュレータ11が位置しており、また、誤差がr1である場合には、マニピュレータ11の先端11aを誤差r1だけ広げた範囲は、図4の円C1で示される範囲となる。この場合には、その円C1の領域の全体が、範囲50の内側であるため、マニピュレータ制御部18は、マニピュレータ11の先端11aを誤差r1だけ広げた範囲が、範囲50内であると判断することになる。一方、誤差がr2である場合には、マニピュレータ11の先端11aを誤差r2だけ広げた範囲は、図4の円C2で示される範囲となる。この場合には、その円C2の領域の一部が、範囲50の外側に存在するため、マニピュレータ制御部18は、マニピュレータ11の先端11aを誤差r2だけ広げた範囲が、範囲50内でないと判断することになる。マニピュレータ11の先端11a以外の位置についても、同様にして、誤差だけ広げた範囲が、範囲情報の示す範囲内であるかどうかの判断を行うことができる。
また、その判断で用いられるマニピュレータ11の位置は、その判断時点におけるマニピュレータ11の位置であってもよく、その直後に行われるマニピュレータ11の動作後の位置であってもよい。動作後のマニピュレータ11の位置が、範囲情報の示す範囲内となるようにする観点からは、後者のように制御されることが好適である。また、判断で用いられるマニピュレータ11の位置が、その直後に行われるマニピュレータ11の動作後の位置であり、また、移動体1が移動中にマニピュレータ11を動作させている場合には、マニピュレータ制御部18は、移動体1の移動も考慮した上で、直後のマニピュレータ11の位置を算出し、その算出した位置を用いて、上記の判断を行ってもよい。
現在位置取得部14は、上記のように、位置検知よりも低い精度の現在位置を取得する。したがって、位置検知が行われて現在位置がリセットされてからの移動量や回転量が多くなるほど、現在位置の誤差も大きくなりうる。また、そのような誤差を考慮した上で、マニピュレータ11が範囲情報の示す範囲内に存在するかどうかを判断することによって、実際にはマニピュレータ11が範囲情報の示す範囲外に出ているにも関わらず、マニピュレータ11が範囲情報の示す範囲内に存在すると誤判断することを防止することができる。そのため、そのような誤判断を防止できるように、誤差が取得されることが好適である。すなわち、移動体1の移動や回転に応じて現在位置の誤差が増える程度に応じた誤差が取得されることが好適である。
また、マニピュレータ制御部18は、移動体1の速度が閾値より小さい場合にのみ、マニピュレータ11を動作させるようにしてもよい。すなわち、マニピュレータ制御部18は、移動体1の速度が閾値より小さく、かつ、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内である場合に、マニピュレータ11を動作させ、そうでない場合に、マニピュレータ11を動作させなくてもよい。なお、移動体1の速度が閾値である場合には、マニピュレータ制御部18は、マニピュレータ11を動作させてもよく、または、動作させなくてもよい。閾値が「0」に設定されている場合には、マニピュレータ制御部18は、移動体1の速度が0以下であるときにのみ(すなわち、実質的には移動体1の速度が0であるときにのみ)、マニピュレータ11を動作させ、そうでないとき、すなわち移動体1の速度が0より大きいときに、マニピュレータ11を動作させないようにしてもよい。上記の制御で用いられる移動体1の速度は、例えば、移動機構12のエンコーダ等から取得される実速度であってもよく、移動制御部15が移動の制御で用いる指令速度であってもよい。
次に、移動体1の動作について図3のフローチャートを用いて説明する。
(ステップS101)移動制御部15は、移動を行うかどうか判断する。そして、移動を行う場合には、ステップS102に進み、そうでない場合には、ステップS105に進む。なお、移動制御部15は、例えば、移動経路に応じた自律的な移動を行っている場合に、移動を行うと判断してもよい。また、移動制御部15は、例えば、目的地に到達した場合に、移動を行わないと判断してもよい。
(ステップS102)現在位置取得部14は、現在位置を取得する。
(ステップS103)移動制御部15は、ステップS102で取得された現在位置を用いて移動機構12を制御することによって、移動体1の移動制御を行う。この移動制御は、例えば、目的地に向かう自律的な移動の制御であってもよい。このステップS103の移動制御が繰り返されることによって、移動体1が出発地から目的地に到達してもよい。
(ステップS104)取得部16は、ステップS103での移動制御に応じて、新たな誤差を取得する。取得部16は、例えば、ステップS103の移動制御後の移動量α(t)と回転量β(t)とを用いて、上記のように誤差ER(t)を算出してもよい。それまでに誤差が算出されている場合には、このステップS104の処理によって、誤差が更新されることになる。算出された誤差は、図示しない記録媒体で記憶されてもよい。そして、ステップS101に戻る。
(ステップS105)移動制御部15は、位置検知のための移動を行うかどうか判断する。そして、位置検知のための移動を行う場合には、ステップS106に進み、そうでない場合には、ステップS111に進む。なお、位置検知のための移動とは、位置検知が行われる位置への移動のことである。例えば、後述するステップS112において、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内でないと判断された場合に、移動制御部15は、位置検知のための移動を行うと判断してもよい。また、例えば,マニピュレータ11の動作を開始する前には、移動制御部15は、位置検知のための移動を行うと判断してもよい。
(ステップS106)現在位置取得部14は、現在位置を取得する。
(ステップS107)移動制御部15は、ステップS106で取得された現在位置を用いて移動機構12を制御することによって、移動体1の移動制御を行う。この移動制御は、位置検知を行う位置に向かう自律的な移動の制御であってもよい。このステップS107の移動制御が繰り返されることによって、移動体1が位置検知を行う位置に到達してもよい。なお、この移動制御は現在位置を用いて行われるため、位置検知を行う位置に適切に到達できないこともあり得る。そのような場合には、移動制御部15は、位置検知を行う位置の付近において、目的とする位置を見つけるための試行錯誤の移動を行うように移動機構12を制御してもよい。その試行錯誤の移動は、例えば、あらかじめ決められた移動であってもよい。具体的には、試行錯誤の移動は、現在位置を用いて到達した、位置検知を行う位置を基準位置として、ある方向に所定の距離だけ移動し、その移動先の位置において旋回することなどであってもよい。その移動によっても位置検知を行うことができなかった場合には、移動制御部15は、移動体1を基準位置に一度戻した後に、再度、別の方向について同様の移動を行うようにしてもよい。そのような試行錯誤の移動を行う方向は、例えば、前後左右の4方向であってもよく、または、さらに多くの細かい方向であってもよい。
(ステップS108)位置検知部13は、移動体1があらかじめ決められた位置に存在することを検知したかどうか判断する。そして、移動体1があらかじめ決められた位置に存在することを検知できた場合には、ステップS109に進み、そうでない場合には、ステップS106に戻る。
(ステップS109)取得部16は、誤差をリセットする。具体的には、移動量と回転量とが0にリセットされることによって、誤差も0にリセットされてもよい。
(ステップS110)現在位置取得部14は、ステップS108で位置検知の行われたあらかじめ決められた位置を、その時点の現在位置に設定する。そして、ステップS101に戻る。
(ステップS111)マニピュレータ制御部18は、マニピュレータ11を制御するかどうか判断する。そして、マニピュレータ11を制御する場合には、ステップS112に進み、そうでない場合には、ステップS101に戻る。なお、マニピュレータ制御部18は、例えば、マニピュレータ11による作業を行う位置に到達した場合に、マニピュレータ11を制御すると判断してもよい。
(ステップS112)マニピュレータ制御部18は、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報によって示される範囲内であるかどうか判断する。そして、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報の示す範囲内である場合には、ステップS113に進み、そうでない場合には、ステップS105に進む。なお、判断において用いられるマニピュレータ11の位置は、判断時点におけるマニピュレータ11の位置であってもよく、または、ステップS113における制御が行われた後のマニピュレータ11の位置であってもよい。
(ステップS113)マニピュレータ制御部18は、マニピュレータ11を制御することによって、マニピュレータ11を動作させる。なお、このステップS113の処理が繰り返されることによって、マニピュレータ11による作業が行われてもよい。マニピュレータ11による作業は、例えば、搬送対象物の積み降ろしや、溶接、部品等の組み立て、農薬の散布、清掃作業等であってもよい。そして、ステップS101に戻る。
なお、図3のフローチャートにおいて、ステップS101~S104の移動の処理と、ステップS111~S113のマニピュレータ11の制御の処理とが並列して行われてもよい。その場合には、例えば、移動体1が移動しながら、マニピュレータ11を動作させることができるようになる。その場合においても、上記のように、移動体1の移動速度が閾値より小さいときにのみ、マニピュレータ11による作業が行われるようにしてもよい。また、ステップS101~S104の目的地までの移動の処理と、ステップS111~S113のマニピュレータ11の制御の処理とは、いずれか一方の処理のみが行われるようにしてもよい。その場合には、移動体1が停止しているときにのみ、マニピュレータ11による作業が行われることになる。また、図3のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図3のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、本実施の形態による移動体1の動作について、具体例を用いて説明する。この具体例では、図5の矢印で示されるように、移動体1が、移動体1-1で示される位置から、移動体1-2で示される位置、移動体1-3で示される位置、移動体1-4で示される位置、移動体1-5で示される位置まで順番に移動し、その各位置において、マニピュレータ11による作業を行う場合について説明する。なお、移動体1-1で示される位置が、位置検知の行われるあらかじめ決められた位置であるとする。また、移動体1の移動領域において、範囲情報で示される範囲51が設定されているものとする。また、図5、図6において、取得部16によって取得された誤差を、破線の円の半径によって模式的に示している。すなわち、破線の円の半径が大きいほど、誤差が大きいことが示されていることになる。
まず、移動体1は、位置検知を行う位置に移動すると判断し(ステップS105)、移動体1-1の位置を目的地として移動を行う(ステップS106~S108)。そして、移動体1-1の位置に到達すると、移動体1の移動領域に配置された光データ伝送装置22と、位置検知部13が有する光データ伝送装置との間で光データ伝送が行われることによって、位置検知が行われ(ステップS108)、誤差がリセットされると共に、移動体1-1の位置が移動体1の現在位置として設定される(ステップS109,S110)。すなわち、取得部16は、時間tを0に設定することによって、移動量、回転量、及び誤差を0にリセットする。また、現在位置取得部14は、図示しない記録媒体で記憶されている、移動体1-1の位置(すなわち、あらかじめ決められた位置)の座標値を読み出して、それを現在位置に設定する。それ以降の現在位置は、その現在位置を基準として、取得されることになる。
その後、移動体1は、移動体1-2の位置に移動すると判断して、その移動を行う(ステップS101~S104)。なお、移動体1が移動体1-2の位置に到達した時点における誤差は、移動体1-2の位置の破線の円の半径で示される程度であったとする。その後、マニピュレータ制御部18は、マニピュレータ11の制御を行うと判断し(ステップS111)、直後に行われる制御によるマニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内となるかどうか判断する(ステップS112)。この場合には、範囲51内であったとする。すると、その判断結果に応じて、マニピュレータ11の制御が行われる(ステップS113)。そして、そのマニピュレータ11の制御が繰り返されることによって、マニピュレータ11による作業が行われる(ステップS101,S105,S111~S113)。なお、この作業中は、マニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内であったものとする。
次に、移動体1は、移動体1-3の位置に移動すると判断して、その移動を行う(ステップS101~S104)。なお、移動体1が移動体1-3の位置に到達した時点における誤差は、移動体1-3の位置の破線の円の半径で示される程度であったとする。その後、マニピュレータ制御部18は、マニピュレータ11の制御を行うと判断し(ステップS111)、直後に行われる制御によるマニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内となるかどうか判断する(ステップS112)。この場合にも、範囲51内であったとする。すると、その判断結果に応じて、マニピュレータ11の制御が行われる(ステップS113)。そして、そのマニピュレータ11の制御が繰り返されることによって、マニピュレータ11による作業が行われる(ステップS101,S105,S111~S113)。なお、この作業中も、マニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内であったものとする。
同様にして、移動体1は、移動体1-4の位置に移動する(ステップS101~S104)。また、その移動体1-4の位置におけるマニピュレータ11の制御時にも、マニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内になると判断され、その位置におけるマニピュレータ11による作業を行うことができたとする(ステップS111~S113)。
その後、移動体1は、移動体1-5の位置に移動すると判断して、その移動を行う(ステップS101~S104)。なお、移動体1が移動体1-5の位置に到達した時点における誤差は、移動体1-5の位置の破線の円の半径で示される程度であったとする。そして、マニピュレータ11の制御を行うために、マニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内となるかどうか判断すると、一部が範囲51外であったとする(ステップS111,S112)。そのため、移動体1-5の位置では、マニピュレータ11による作業が行われないことになり、位置検知のための移動が開始される(ステップS105)。そして、移動体1は、図6で示されるように、移動体1-1の位置を目的地として移動を行い(ステップS105~S108)、移動体1-1の位置で位置検知を行う(ステップS108)。その結果、誤差がリセットされると共に、移動体1-1の位置が移動体1の現在位置として設定される(ステップS109,S110)。
その後、移動体1は、再度、移動体1-5の位置に移動すると判断して、その移動を行う(ステップS101~S104)。なお、移動体1が移動体1-5の位置に到達した時点における誤差は、図6の移動体1-5の位置の破線の円の半径で示される程度であり、前回(図5参照)よりも小さくなっている。したがって、マニピュレータ制御部18は、マニピュレータ11の移動先の位置を誤差だけ広げた範囲が、範囲51内となると判断し、マニピュレータ11の制御を行う(ステップS111~S113)。このようにして、一度、位置検知を行ったことによって、移動体1-5の位置においてマニピュレータ11による作業を行うことができるようになる。
以上のように、本実施の形態による移動体1によれば、作業ステーションなどのあらかじめ決められた位置以外においても、マニピュレータ11を動作させることができるようになり、マニピュレータ11の利便性が向上することになる。一方、マニピュレータ11の位置を誤差だけ広げた範囲が、範囲情報の示す範囲内である場合にのみ、マニピュレータ11を動作させることによって、安全性を確保することもできることになる。したがって、本実施の形態による移動体1は、マニピュレータ11の利便性の向上と、安全性の確保とを両立させることができるようになる。また、移動体1の速度が閾値より小さい場合にのみマニピュレータ11を動作させるようにすることによって、より安全性を向上させることができるようになる。
なお、上記実施の形態では、範囲情報の示す範囲や、マニピュレータ11の位置を誤差に応じて広げた範囲が2次元平面上における範囲である場合について説明したが、それらの範囲は、3次元空間における範囲であってもよい。この場合には、例えば、マニピュレータ11の位置を誤差に応じて3次元の球に広げた領域が、3次元空間における範囲情報の示す範囲内であるかどうかの判断が行われてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、移動体1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。