搬送システム、ロボットの制御方法
【課題】ロボットの押し搬送を効率的かつ安定的に実行可能なアルゴリズムを提供する。また、シンプルで、且つ、物体やロボットのサイズに依存しない、汎用性の高い押し搬送アルゴリズムを提供する。
【解決手段】搬送システムは、物体を押すための自走式のロボットと、物体とロボットの現在の位置を検出する位置検出手段と、位置検出手段の検出結果に基づいてロボットの移動方向を制御する制御手段と、を備える。制御手段は、ロボットが物体の位置に向かう方向の第1のベクトルと、第1ベクトルと直交し且つロボットが目標位置から離れる方向の第2のベクトルとを、物体とロボットと目標位置の現在の位置関係に応じた重みで合成することにより、ロボットの移動方向を決定する。
【解決手段】搬送システムは、物体を押すための自走式のロボットと、物体とロボットの現在の位置を検出する位置検出手段と、位置検出手段の検出結果に基づいてロボットの移動方向を制御する制御手段と、を備える。制御手段は、ロボットが物体の位置に向かう方向の第1のベクトルと、第1ベクトルと直交し且つロボットが目標位置から離れる方向の第2のベクトルとを、物体とロボットと目標位置の現在の位置関係に応じた重みで合成することにより、ロボットの移動方向を決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットにより物体を搬送するための技術に関し、詳しくは、物体を押して搬送するロボットの移動方向を制御するための技術に関する。
【背景技術】
【0002】
物体の搬送は、移動ロボットの最も重要なタスクの一つである。ロボットにより任意の場所間での物体搬送が自動化されれば、ユーザの時間と労力を節約できるため、非常に有益である。搬送用ロボットには様々なタイプのものが提案されているが、ここでは、平面上に置かれた物体を自走式のロボットにより押していき、目標位置まで移動させるタイプのものに注目する。搬送タスクのほとんどはこの方法(押し搬送)で対処することが可能であるし、押し搬送は、工場、オフィス、店舗、家庭内など、様々な環境での物体搬送に応用が可能だからである。なお、非特許文献1には、押し搬送を行う家庭用のロボットが開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】S. Zhao, K. Nakamura, K. Ishii, and T. Igarashi, "Magic Cards : A Paper Tag Interface for Implicit Robot Control", Proceedings of the ACM Conference on Human Factors in Computing Systems, CHI2009, pp.173-182, Boston, USA, April, 2009.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットで物体を押していったときに、その物体が予定通りの位置に移動するとは限らない。物体と物体が置かれた面との間の摩擦、物体の外形とロボットの干渉、物体の重心と押し位置のずれなど、様々な要因が物体の移動に影響を与え得るからである。したがって、自走式ロボットによる押し搬送では、システムが物体の位置を常に監視しながら、物体が目標位置に向かって押されていくよう、ロボットの動き(位置、向き)を逐次制御する必要がある。
【0005】
押し搬送の最も単純なアルゴリズムとしては、図9(a)に示すように、最初にロボットRを物体Oの後ろ側の押し位置まで移動させ、その後ロボットRを目標位置Gに向かって移動させるというものが知られている(この方法をbinary mode法とよぶ)。物体Oが
パスから逸れた場合には、ロボットRは押し動作を止めて、押し位置に復帰するよう移動するのである。しかしこのbinary mode法は、復帰動作に大きなオーバーヘッドがかかる
ため、あまり効率的ではない。別のアルゴリズムとして、図9(b)に示すように、物体Oの中心のやや後ろの位置に向かってロボットRを移動させるという方法が考えられる(この方法をtail-following法とよぶ)。この方法は、binary mode法よりは効率的である
ものの、例えばロボットが物体よりも目標位置に近くなってしまった場合などにエラーが生じる可能性がある。また、いずれの方法も、物体とロボットのサイズに依存するアルゴリズムであるため、システムを適用する環境(物体やロボットのサイズなど)に応じてプログラムを変更するか、サイズに依存する各種のパラメータを変更するかしなければならず、非常に煩わしいという問題もある。
【0006】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、ロボットの押し搬送を効率的かつ安定的に実行可能なアルゴリズムを提供することにある。また、本発明のさらなる目的は、シンプルで、且つ、物体やロボットのサイズに依存しない、汎
用性の高い押し搬送アルゴリズムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明では、ロボットが物体を押す動作(押し動作)とロボットが物体の周りを移動して物体の後ろ側の押し位置に向かう動作(周回動作)とを適当な重みで合成することにより、ロボットの移動方向を決定するというアルゴリズムを採用した。
【0008】
具体的には、本発明に係る搬送システムは、ロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムであって、物体を押すための自走式のロボットと、前記物体と前記ロボットの現在の位置を検出する位置検出手段と、前記位置検出手段の検出結果に基づいて前記ロボットの移動方向を制御する制御手段と、を備え、前記制御手段は、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とする搬送システムである。
【0009】
第1のベクトルと第2のベクトルの合成ベクトルに従ってロボットを移動させることで、押し動作と周回動作の両方を同時に実行できるため、効率的な押し搬送が実現される。このとき、ロボット、物体、目標位置の位置関係に応じて押し動作と周回動作の重みを適切に調整すれば、さらなる効率化が期待できる。また、ロボット及び物体の現在位置と目標位置の3つの値からベクトル演算を行うだけでよく、極めてシンプルなアルゴリズムである。さらに、第1のベクトル、第2のベクトル、それらの重み、のいずれもロボットや物体のサイズに依存しないため、本発明のアルゴリズムはいかなるサイズの物体、ロボットにも汎用的に適用可能である。
【0010】
前記制御手段は、前記物体から前記目標位置へのベクトルと前記物体から前記ロボットへのベクトルとのなす角θ(0度≦θ≦180度)に応じて前記重みを連続的に変化させることが好ましい。
【0011】
ロボット、物体、目標位置の位置関係が変化するたびに、ロボットの移動方向が更新される。このとき、θに応じて重みを連続的に変化させるようにすれば、ロボットの移動方向が滑らかに変化するため、ロボットの動作が安定する。
【0012】
前記制御手段は、θが180度の場合に、前記第1のベクトルの重みを最大にするとともに、前記第2のベクトルの重みをゼロにすることが好ましい。
【0013】
θが180度というのは、目標位置からみてロボットが物体の真後ろに位置する場合である。このような位置関係の場合に、周回動作を止めて、押し動作のみ行うことで、押し搬送の効率を最大にすることができる。
【0014】
例えば、前記第1のベクトルが、(−cosθ,−sinθ)であり、前記第2のベクトルが、(−sinθ,cosθ)であり、前記第1のベクトルの重みが、−cosθであり、前記第2のベクトルの重みが、sinθであることが好ましい。
【0015】
これにより、θに応じて重みが連続的に変化するとともに、θが180度のときに第1のベクトルの重みが最大値1をとり、第2のベクトルの重みがゼロをとる。さらに、θが180度より小さくなるに従って、第2のベクトルの重みが徐々に大きくなり、その分、第1のベクトルの重みが徐々に小さくなるので、ロボットが物体の真後ろから離れるほど周回動作成分が大きくなり、最適な押し位置(θ=180度)への復帰が促進される。そ
して、θが90度の場合、つまりロボットが物体の真横にある場合に、第1のベクトルの重みがゼロとなり、第2のベクトルの重みが最大となるため、物体を目標位置から遠ざけることがなく、且つ、最適な押し位置への迅速な復帰が期待できる。
【0016】
前記制御手段は、θが90度以下の場合に、前記第1のベクトルの重みをゼロにすることが好ましい。
【0017】
θが90度以下の場合、第1のベクトルの重みがゼロより大きいと物体を目標位置から遠ざけることとなるし、第1のベクトルの重みがゼロより小さいとロボット自身が物体から遠ざかることとなり、いずれも非効率的である。その点、θが90度以下の場合に第1のベクトルの重みをゼロに固定し、周回動作のみを行うようにすれば、押し搬送の効率化を図ることができる。
【0018】
前記制御手段は、前記物体が前記目標位置に近づいた場合に前記第2のベクトルの重みを増大させることが好ましい。典型的には、前記制御手段は、前記物体と前記目標位置の距離が近くなるほど大きくなる係数a(a≧1)を、前記第2のベクトルの重みに乗じればよい。
【0019】
これにより、目標位置の近傍では周回動作成分が増大し、相対的に押し動作成分が小さくなるため、押し動作が慎重に(少しずつ)行われることとなる。したがって、物体がパスから外れたり、目標位置を行き過ぎてしまったりすることが防止され、結果として、目標位置への収束が早くなる。
【0020】
搬送システムが、自走式の第2のロボットをさらに備え、前記位置検出手段が、前記第2のロボットの現在の位置をさらに検出し、前記制御手段が、前記ロボットを前記第2のロボットが搬送する物体とみなして、前記ロボットの移動方向の場合と同じアルゴリズムを用いて前記第2のロボットの移動方向を制御することによって、前記ロボットと前記第2のロボットとが直列につながって前記物体を押すことも好ましい。
【0021】
これにより、1台のロボットでは搬送困難な重い物体を、複数のロボットの協働により搬送することが可能となる。しかも、先頭のロボットが物体を押すアルゴリズムと、第2のロボットが先頭のロボットを押すアルゴリズムとを同じにできるため、プログラムの作成及び実装が容易である。
【0022】
なお、本発明は、上記手段の少なくとも一部を有する搬送システムまたはロボット制御システムとして捉えることができる。また、本発明は、上記処理の少なくとも一部を含むロボット制御方法、または、その方法の各ステップをコンピュータに実行させるためのプログラムや同プログラムを記録した記録媒体として捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【0023】
例えば、本発明の一態様としてのロボット制御方法は、自走式のロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムにおける、ロボットの制御方法であって、前記物体と前記ロボットの現在の位置を検出するステップと、前記位置検出ステップの検出結果に基づいて前記ロボットの移動方向を制御する制御ステップと、を含み、前記制御ステップでは、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とするロボットの制御方法である。
【発明の効果】
【0024】
本発明によれば、ロボットの押し搬送を効率的かつ安定的に実行可能なアルゴリズムを提供できる。また、本発明によれば、シンプルで、且つ、物体やロボットのサイズに依存しない、汎用性の高い押し搬送アルゴリズムを提供できる。
【図面の簡単な説明】
【0025】
【図1】搬送システムのハードウエア構成を示す図であり、(a)は側面図、(b)は平面図である。
【図2】搬送システムの機能構成を示すブロック図である。
【図3】ロボット、物体、目標位置の位置関係の一例を示す図である。
【図4】(a)はロボットと物体の位置関係を変えたときのロボットの移動方向の変化を示す図、(b)はベクトル場(cos2θ,sin2θ)を示す図である。
【図5】搬送システムのフローチャートである。
【図6】(a)は直線形状のバンパーと物体の干渉を示す図、(b)は円形のバンパーによる搬送動作を示す図である。
【図7】第3実施形態の係数aの定義を説明するための図である。
【図8】第4実施形態における直列搬送の様子を示す図である。
【図9】(a)はbinary mode法を示す図、(b)はtail-following法を示す図である。
【発明を実施するための形態】
【0026】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0027】
<第1実施形態>
(システム構成)
図1は、本発明の実施形態に係る搬送システムのハードウエア構成を示している。(a)は側面図であり、(b)はステージSを上方からみた平面図である。このシステムは、ステージSの上に置かれた物体OをロボットRにより目標位置Gまで搬送するための搬送システムであって、自走式のロボットRと、撮像装置2と、コンピュータ3とから構成される。ロボットR及び撮像装置2は、それぞれ、無線又は有線によりコンピュータ3に接続されている。
【0028】
ロボットRは、車輪、駆動モータ等から構成される移動機構と、コンピュータ3からの制御コマンドに基づき移動機構を制御するマイクロコントローラとを備える、自走式のロボットである。本実施形態のロボットRは、略円盤状の外形を有しており、搬送対象の物体Oへの引っ掛かりや物体Oの損傷を防ぐために、ロボットRの外周には円形のバンパーが取り付けられている。ロボットRの移動機構は、少なくとも「前進」「右回り」「左回り」「停止」の動作が可能である。これらの動作は、マイクロコントローラ内に予めプログラムされており、コンピュータ3から各動作に対応する制御コマンドを送出することで、ロボットRの動作を制御することができる。
【0029】
撮像装置2は、CCDやCMOSなどの撮像素子を備える小型のカメラであり、平面ステージSの上方に、ステージSを画角におさめるように設置されている。本実施形態では、ステージSと撮像装置2の光軸がほぼ直交するように撮像装置2を固定したが、必ずしもこの構成に限らず、ステージSを斜めに俯瞰するように撮像装置2を設置してもよいし、また撮像装置2の画角や光軸の向きを可変にしてもよい。撮像装置2で取得した画像は、ロボットR及び物体Oの位置検出に利用される(詳細は後述する)。
【0030】
図2は、搬送システムの機能構成を示すブロック図である。本システムは、その機能として、概略、位置検出部30、移動方向算出部31、コマンド送信部32を備えている。
これらの機能は、コンピュータ3のCPUが記憶装置に格納されたプログラムをロードし実行することで実現されるものである。なお、コンピュータ3としては、CPU、メモリ、補助記憶装置、入力装置、表示装置などを備える汎用のパーソナル・コンピュータを用いることができる。ただし、専用のコンピュータや、ロボットに実装するオンボードマイコンなどを用いることも好ましい。またプログラムの一部または全部を専用ICで構成することも可能である。
【0031】
位置検出部30は、ロボットRと物体Oの現在の位置を検出するための位置検出手段である。ここで、ロボットRの位置とは、ロボットR上に設定された代表点の位置をさす。また物体Oの位置とは、物体O上に設定された代表点の位置をさす。それぞれの代表点は任意に設定できるが、ロボットR及び物体Oの動きの安定を考慮すると、ロボットRの回転中心と物体Oの質量中心(重心)をそれぞれ代表点に設定することが好ましい。本実施形態では、図1に示すように、ロボットR及び物体Oには、それぞれ、所定の図形が描画されたマーカMr、Moが取り付けられている。マーカの取り付け位置は上記代表点を基準に決められている。位置検出部30は、撮像装置2から取り込まれた画像からマーカMr、Moを認識することによって、ロボットR及び物体Oの位置・向きを検出する。なお、マーカの認識には公知の図形認識手法を利用できるので、ここでは詳しい説明を省略する。
【0032】
移動方向算出部31は、位置検出部30の検出結果に基づいてロボットRの最適な移動方向を計算する機能である。また、コマンド送信部32は、ロボットRの現在の向きと、移動方向算出部31で計算した移動方向とから、ロボットRの制御コマンド(ここでは、「前進」「右回り」「左回り」「停止」の組み合わせ)を生成し、ロボットRのマイクロコントローラに送信する機能である。本実施形態では、この移動方向算出部31及びコマンド送信部32が、本発明の制御手段を構成している。以下では、本実施形態の移動方向算出部31が採用する押し搬送アルゴリズムについて詳しく説明した後、システム全体の処理フローについて説明する。
【0033】
(押し搬送アルゴリズム)
押し搬送アルゴリズムは、例えば図3に示すような位置関係が与えられたときに、物体Oを目標位置Gに到達させるためのロボットRの好適な移動方向を算出するための計算手法である。本アルゴリズムの入力は、物体Oの目標移動方向Do(物体Oから目標位置Gへのベクトルの向き)と、ロボットR及び物体Oの位置関係であり、本アルゴリズムの出力は、ロボットRの移動方向Drである。ここで、ロボットRと物体Oの位置は位置検出部30から都度取得されるものであり、目標位置Gについては予めわかっているものとする。なお、ロボットRを物理的に駆動するためには、モータトルクとかタイミングといったパラメータの調整が必要となるが、ロボットRの移動方向Drの計算は、これらのローレベルな駆動制御の問題とは独立に取り扱うことが可能である。
【0034】
本システム(移動方向算出部31)は、ロボットRと物体Oの位置を取得すると、まずローカル座標系を定義する。物体Oの位置をローカル座標系の原点にとり、物体Oの目標移動方向Doに対して平行にx軸をとる。ここで、ロボットRの位置ベクトル(物体OからロボットRへのベクトル)がx軸となす角をθとおき、ロボットRと物体Oの距離を1とすると、ロボットRの座標は(cosθ,sinθ)で表される。
【0035】
ロボットRの基本的な動作として、ロボットRが物体Oを押す動作(押し動作)と、ロボットRが物体Oの周りを移動して物体Oの後ろ側に回り込む動作(周回動作)とを考えると、上記座標系においては、押し動作の移動方向は、ロボットRが物体Oの位置に向かう方向のベクトル、具体的にはベクトルV1=(−cosθ,−sinθ)で与えられる。また、周回動作の移動方向は、ベクトルV1と直交するベクトルのうちロボットRが目
標位置Gから離れる方向のベクトル、具体的には、ベクトルV2=(−sinθ,cosθ)で与えられる。従来のbinary mode法は押し動作と周回動作を別々に実行するもので
あったのに対し、本アルゴリズムは、2つのベクトルV1、V2を適当な重みで合成することで、押しながら周回する(あるいは、周回しながら押す)というロボットRの動きを実現する。
【0036】
目標位置GからみてロボットRが物体Oの後ろ側にいる場合(つまり、−cosθが大きい場合)は、ロボットRによる押し動作を支配的にするべきである。一方、ロボットRが物体Oの真後ろの位置から離れるほど(つまり、sinθが大きいほど)、ロボットRの周回動作を支配的にするべきである。そこで、本アルゴリズムでは、ベクトルV1、V2それぞれの重みとして−cosθ、sinθを選ぶ。そうすると、ロボットRの移動方向Drは、下記式のように、(cos2θ,sin2θ)で与えられることとなる。
【数1】
【0037】
図4(a)は、ロボットRと物体Oの位置関係を変えたときのロボットRの移動方向Drの変化を示すものである。また図4(b)は、ベクトル場(cos2θ,sin2θ)を図示したものである。これらの図から、ロボットRが物体Oの後ろ側にいくほど押し動作が支配的となること、ロボットRと物体Oの位置関係に応じて移動方向Drが連続的に変化することなどがわかる。
【0038】
さらに興味深いのは、図4(b)のベクトル場が物理学におけるダイポールに似ていることである(従って、本アルゴリズムをダイポール法ともよぶ)。物理学におけるダイポールとは、例えば、プラスとマイナスの電荷が離れて存在する場合に観測される電界のことである。幾何学的には、図4(b)に示すように、ダイポールは、ある直線上の1点で当該直線に接する多数の円で描画される。
【0039】
(処理フロー)
図5のフローチャートを参照して、本システムの処理の流れを説明する。なお、ロボットR及び物体Oはステージ上に予め配置され、且つ、それらに対して位置検出用のマーカMr、Moが取り付けられているものとする。また、搬送のゴールとなる目標位置Gについては予めシステムに教示されているものとする。
【0040】
ステップS10において、位置検出部30は、撮像装置2から画像を取り込むと、マーカMr、Moを認識することによりロボットR及び物体Oの現在の位置・向きを特定する。次に、移動方向算出部31が、目標位置GとステップS10で得られた物体Oの現在位置とから、物体Oの目標移動方向Doを計算する(ステップS12)。そして、移動方向算出部31は、上述した押し搬送アルゴリズム(ダイポール法)を用いて、ロボットRの移動方向Drを計算する(ステップS13)。
【0041】
次に、コマンド送信部32が、ステップS13で計算した移動方向Drに従って、ロボットRの動きを制御する。具体的には、コマンド送信部32は、ステップS10で得られたロボットRの向きと移動方向Drとを比較し(ステップS14)、その差が所定の閾値Th2より小さい場合は、ロボットRを所定距離だけ前進させる(ステップS15)。一方、差が閾値Th2以上の場合は、コマンド送信部32は、右回り又は左回りコマンドを送出してロボットRの向きを調整する(ステップS16)。
【0042】
システムは、上記処理を繰り返し、物体Oと目標位置Gの距離が所定の閾値Th1よりも小さくなったら、搬送完了と判断し、処理を終了する(ステップS11)。
【0043】
(本実施形態の利点)
上述した本実施形態の構成(アルゴリズム)によれば、次のような利点が得られる。
ベクトルV1とV2の合成ベクトルに従ってロボットRを移動させたことにより、押し動作と周回動作の両方を同時に実行することができるため、従来のアルゴリズムに比べて、効率的な押し搬送が実現される。加えて、ベクトルV1、V2の重みをそれぞれ−cosθ、sinθに選んだことにより、θ(ロボット、物体、目標位置の位置関係)に応じてロボットの移動方向が滑らかに変化することとなり、ロボットの動作が安定する。また、θが180度のときにベクトルV1(押し)の重みが最大値1をとり、ベクトルV2(周回)の重みがゼロをとるため、ロボットが物体の真後ろにあるときに押し動作のみが行われることとなり、押し搬送の効率を最大にすることができる。さらに、θが180度より小さくなるに従って、ベクトルV2(周回)の重みが徐々に大きくなり、その分、ベクトルV1(押し)の重みが徐々に小さくなるので、ロボットが物体の真後ろから離れるほど周回動作成分が大きくなり、最適な押し位置(θ=180度)への復帰が促進される。そして、θが90度の場合、つまりロボットが物体の真横にある場合に、ベクトルV1の重みがゼロとなり、ベクトルV2の重みが最大となるため、物体を目標位置から遠ざけることがなく、且つ、最適な押し位置への迅速な復帰が期待できる。
【0044】
また、本アルゴリズムは、ロボット及び物体の現在位置と目標位置の3つの値からベクトル演算を行うだけでよく、極めてシンプルであるとともに、計算量も非常に少ない。さらに、ロボットの移動方向Drは(cos2θ,sin2θ)で与えられ、ロボットや物体のサイズ、ロボットと物体間の距離などに依存しない。したがって、本アルゴリズムによれば、いかなるサイズの物体、ロボットに対しても同一のプログラムコードを利用でき、サイズ依存パラメータの調整といった煩雑な作業が不要となる。これにより、実用に際しての労力を大幅に軽減することができる。
【0045】
また、本実施形態のロボットは、円形のバンパーを有しているため、直線形状のバンパーに比べ効率的な押し搬送が可能である。この点について、図6を参照して説明する。ロボットRが物体Oの真後ろにいる場合は、いずれのバンパー形状でも同じように搬送することができる。しかしながら、ロボットRの位置が物体Oの真後ろからずれてしまった場合、ロボットRが周回動作のために転回すると、直線形状のバンパーでは物体Oに干渉し、物体Oを目標位置から遠ざけてしまうおそれがある(図6(a)参照)。バンパーの干渉を防ぐには、ロボットRを後退させて物体Oから一旦離した後、周回動作を行う必要があるが、このような動作は多大なオーバーヘッドを生むため好ましくない。これに対して、図6(b)に示すように、円形のバンパーの場合は、ロボットRの転回時にバンパーと物体Oの干渉が生じることはないし、ロボットRが転回を終えて前進すると、物体Oが目標位置方向へと押される。よって、本実施形態の押し搬送アルゴリズムには、円形バンパーのほうが好適である。
【0046】
<第2実施形態>
ロボットRが物体Oの前方にある場合、第1実施形態のアルゴリズムでは、ロボットRは物体Oから離れる方向へと移動し、大きな弧を描いて物体Oの後ろに回り込む、という非効率的な軌道をとる(図4(b)参照)。例えば、ロボットRが目標位置Gの手前で物体Oを押しすぎ、物体Oが目標位置Gを通り越してしまった場合などに、上記の問題が発生する。
【0047】
かかる問題を解決するために、第2実施形態のアルゴリズムでは、角度θが90度以下の場合に、下記式のとおり、押し動作方向のベクトルV1の重みをゼロにする。これは、
第1実施形態のアルゴリズムで得られたロボットの移動方向Drが物体Oのほうを向いていなかった場合に、Drの径方向成分をゼロにする、と言い換えることもできる。
【数2】
【0048】
この方法は理解が容易であり実装が簡単であるという以外にも、次のような利点をもつ。第一に、0度<θ≦90度におけるベクトル場(−sin2θ,sinθcosθ)と、90度<θ≦180度におけるダイポール場(cos2θ,sin2θ)とが、その境界(θ=90度)において滑らかに接続する。このことは、境界付近のロボットRの動作を安定にする効果がある。第二に、本実施形態のアルゴリズムも、第1実施形態のものと同様、ロボットや物体のサイズに依存しないため、汎用性に優れている。
【0049】
<第3実施形態>
第1及び第2実施形態のアルゴリズムでは、物体Oが目標位置Gに収束するのに時間がかかることがある。最悪なケースでは、ロボットRと物体Oが目標位置Gの周囲を無限に回り続けることもある。このような現象が起きるのは、ダイポール法では、ロボットRが物体Oの後ろに回り込むのと同時に物体Oを押して移動させてしまうからである。
【0050】
かかる問題を解決するために、第3実施形態のアルゴリズムでは、物体Oが目標位置Gに近づいた場合に周回動作成分のベクトルV2の重みを増大させることとする。本実施形態のロボットRの移動方向Drは下記式で表される。ここで、係数a(a≧1)は、物体Oと目標位置Gの距離に応じて決められるパラメータである。
【数3】
【0051】
係数aが大きくなるほど周回動作成分が増大し、相対的に押し動作成分が小さくなるため、押し動作が慎重に(少しずつ)行われることとなる。したがって、目標位置Gの近傍で係数aを大きくすれば、物体Oが搬送パスから外れたり、目標位置Gを行き過ぎてしまったりすることが防止され、結果として、目標位置Gへの収束が早くなる。なお、上記式から明らかなように、本実施形態のアルゴリズムも、ロボットRや物体Oのサイズに依存しないという利点をもつ。
【0052】
本実施形態では、係数aを、a=|β|/|α|のように定義する。ここで、αはロボットRから物体OへのベクトルとロボットRから目標位置Gへのベクトルの間の角度であり、βは物体OからロボットRへのベクトルと目標位置Gから物体Oへのベクトルの間の角度である(図7参照)。この係数aは、次のような特徴をもつ。第一に、係数aは角度αに反比例するため、物体Oが目標位置Gに近づくほど係数aは大きくなる傾向を示す。第二に、角度βを乗じることで、ロボットR、物体O、目標位置Gがほぼ一直線に並んだときに係数aが無限大になってしまうことを防いでいる。そして、第三に、角度α、βで
定義したことで、ロボットや物体のサイズに依存しないパラメータである。
【0053】
<第4実施形態>
図8は、第4実施形態における物体搬送の様子を示している。この実施形態では、2台のロボットを用いて1つの物体の押し搬送を行う。
【0054】
本実施形態のシステムは、撮像装置2で得られた画像から、1番目のロボット(先頭のロボット)R1、2番目のロボット(後続のロボット)R2、物体Oそれぞれの位置及び向きを特定する。そして、システムは、第1〜第3実施形態と同じアルゴリズムを用いて、ロボットR1の移動方向を決定する。さらにシステムは、同じアルゴリズムをロボットR2の移動方向の算出にも適用する。このとき、物体Oではなく、ロボットR1を、ロボットR2の搬送対象物体に設定する(具体的には、アルゴリズムの入力としてロボットR2とロボットR1の位置を与える)だけで、2台のロボットR1、R2が直列につながって物体Oを押すこととなる。
【0055】
これにより、1台のロボットでは搬送困難な重い物体を、複数のロボットの協働により搬送することが可能となる。しかも、先頭のロボットが物体を押すアルゴリズムと、後続のロボットが先頭のロボットを押すアルゴリズムとを同じにできるため、プログラムの作成及び実装が容易である。なお、本実施形態では2台のロボットによる直列搬送を例示したが、3台以上のロボットによる直列搬送も可能であることはいうまでもない。
【0056】
<その他の変形例>
上記実施形態は本発明の一具体例を例示したものにすぎない。本発明の範囲は上記実施形態に限られるものではなく、その技術思想の範囲内で種々の変形が可能である。
【0057】
例えば、ロボットの形状は円盤状でなくてもよい。またバンパーは、ロボットの外周の一部分だけに設けられていてもよいし、円形でなくフラットな形状のものでもよい。またロボットの移動機構は、車輪に限らず、キャタピラ、浮上装置、歩行装置のようなものでもかまわない。平面上を2次元的に移動して、物体に当接することで当該物体を押すことができさえすれば、ロボットの構成はいかなるものでも採用できる。また、搬送対象の物体の外形も円形である必要はなく、楕円形、矩形、多角形など、ロボットのバンパーと当接可能な外形をもつ物体であれば搬送可能である。
【0058】
上記実施形態では、撮像装置2で得られた画像から物体等の位置を検出しているが、位置検出手段はこの構成に限られない。例えば、ステージにセンサを内蔵し、物体やロボットのステージ上の2次元座標をセンサで検知してもよい。あるいは、物体やロボット自体に位置センサを内蔵してもよい。
【0059】
第3実施形態で用いる係数aの定義は、上述したものに限られない。また、物体と目標位置の距離に応じて係数aの値を連続的に変化させる必要はなく、数個の値を段階的に切り替える構成でもかまわない。例えば、物体Oと目標位置Gの距離が所定の閾値以上の場合(目標位置の非近傍の場合)はa=1とし、所定の閾値より小さい場合(目標位置の近傍の場合)にa=2とする、という方法でもよい。
【符号の説明】
【0060】
R,R1,R2:ロボット、O:物体、G:目標位置、S:ステージ、2:撮像装置、3:コンピュータ、30:位置検出部、31:移動方向算出部、32:コマンド送信部
【技術分野】
【0001】
本発明は、ロボットにより物体を搬送するための技術に関し、詳しくは、物体を押して搬送するロボットの移動方向を制御するための技術に関する。
【背景技術】
【0002】
物体の搬送は、移動ロボットの最も重要なタスクの一つである。ロボットにより任意の場所間での物体搬送が自動化されれば、ユーザの時間と労力を節約できるため、非常に有益である。搬送用ロボットには様々なタイプのものが提案されているが、ここでは、平面上に置かれた物体を自走式のロボットにより押していき、目標位置まで移動させるタイプのものに注目する。搬送タスクのほとんどはこの方法(押し搬送)で対処することが可能であるし、押し搬送は、工場、オフィス、店舗、家庭内など、様々な環境での物体搬送に応用が可能だからである。なお、非特許文献1には、押し搬送を行う家庭用のロボットが開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】S. Zhao, K. Nakamura, K. Ishii, and T. Igarashi, "Magic Cards : A Paper Tag Interface for Implicit Robot Control", Proceedings of the ACM Conference on Human Factors in Computing Systems, CHI2009, pp.173-182, Boston, USA, April, 2009.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットで物体を押していったときに、その物体が予定通りの位置に移動するとは限らない。物体と物体が置かれた面との間の摩擦、物体の外形とロボットの干渉、物体の重心と押し位置のずれなど、様々な要因が物体の移動に影響を与え得るからである。したがって、自走式ロボットによる押し搬送では、システムが物体の位置を常に監視しながら、物体が目標位置に向かって押されていくよう、ロボットの動き(位置、向き)を逐次制御する必要がある。
【0005】
押し搬送の最も単純なアルゴリズムとしては、図9(a)に示すように、最初にロボットRを物体Oの後ろ側の押し位置まで移動させ、その後ロボットRを目標位置Gに向かって移動させるというものが知られている(この方法をbinary mode法とよぶ)。物体Oが
パスから逸れた場合には、ロボットRは押し動作を止めて、押し位置に復帰するよう移動するのである。しかしこのbinary mode法は、復帰動作に大きなオーバーヘッドがかかる
ため、あまり効率的ではない。別のアルゴリズムとして、図9(b)に示すように、物体Oの中心のやや後ろの位置に向かってロボットRを移動させるという方法が考えられる(この方法をtail-following法とよぶ)。この方法は、binary mode法よりは効率的である
ものの、例えばロボットが物体よりも目標位置に近くなってしまった場合などにエラーが生じる可能性がある。また、いずれの方法も、物体とロボットのサイズに依存するアルゴリズムであるため、システムを適用する環境(物体やロボットのサイズなど)に応じてプログラムを変更するか、サイズに依存する各種のパラメータを変更するかしなければならず、非常に煩わしいという問題もある。
【0006】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、ロボットの押し搬送を効率的かつ安定的に実行可能なアルゴリズムを提供することにある。また、本発明のさらなる目的は、シンプルで、且つ、物体やロボットのサイズに依存しない、汎
用性の高い押し搬送アルゴリズムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明では、ロボットが物体を押す動作(押し動作)とロボットが物体の周りを移動して物体の後ろ側の押し位置に向かう動作(周回動作)とを適当な重みで合成することにより、ロボットの移動方向を決定するというアルゴリズムを採用した。
【0008】
具体的には、本発明に係る搬送システムは、ロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムであって、物体を押すための自走式のロボットと、前記物体と前記ロボットの現在の位置を検出する位置検出手段と、前記位置検出手段の検出結果に基づいて前記ロボットの移動方向を制御する制御手段と、を備え、前記制御手段は、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とする搬送システムである。
【0009】
第1のベクトルと第2のベクトルの合成ベクトルに従ってロボットを移動させることで、押し動作と周回動作の両方を同時に実行できるため、効率的な押し搬送が実現される。このとき、ロボット、物体、目標位置の位置関係に応じて押し動作と周回動作の重みを適切に調整すれば、さらなる効率化が期待できる。また、ロボット及び物体の現在位置と目標位置の3つの値からベクトル演算を行うだけでよく、極めてシンプルなアルゴリズムである。さらに、第1のベクトル、第2のベクトル、それらの重み、のいずれもロボットや物体のサイズに依存しないため、本発明のアルゴリズムはいかなるサイズの物体、ロボットにも汎用的に適用可能である。
【0010】
前記制御手段は、前記物体から前記目標位置へのベクトルと前記物体から前記ロボットへのベクトルとのなす角θ(0度≦θ≦180度)に応じて前記重みを連続的に変化させることが好ましい。
【0011】
ロボット、物体、目標位置の位置関係が変化するたびに、ロボットの移動方向が更新される。このとき、θに応じて重みを連続的に変化させるようにすれば、ロボットの移動方向が滑らかに変化するため、ロボットの動作が安定する。
【0012】
前記制御手段は、θが180度の場合に、前記第1のベクトルの重みを最大にするとともに、前記第2のベクトルの重みをゼロにすることが好ましい。
【0013】
θが180度というのは、目標位置からみてロボットが物体の真後ろに位置する場合である。このような位置関係の場合に、周回動作を止めて、押し動作のみ行うことで、押し搬送の効率を最大にすることができる。
【0014】
例えば、前記第1のベクトルが、(−cosθ,−sinθ)であり、前記第2のベクトルが、(−sinθ,cosθ)であり、前記第1のベクトルの重みが、−cosθであり、前記第2のベクトルの重みが、sinθであることが好ましい。
【0015】
これにより、θに応じて重みが連続的に変化するとともに、θが180度のときに第1のベクトルの重みが最大値1をとり、第2のベクトルの重みがゼロをとる。さらに、θが180度より小さくなるに従って、第2のベクトルの重みが徐々に大きくなり、その分、第1のベクトルの重みが徐々に小さくなるので、ロボットが物体の真後ろから離れるほど周回動作成分が大きくなり、最適な押し位置(θ=180度)への復帰が促進される。そ
して、θが90度の場合、つまりロボットが物体の真横にある場合に、第1のベクトルの重みがゼロとなり、第2のベクトルの重みが最大となるため、物体を目標位置から遠ざけることがなく、且つ、最適な押し位置への迅速な復帰が期待できる。
【0016】
前記制御手段は、θが90度以下の場合に、前記第1のベクトルの重みをゼロにすることが好ましい。
【0017】
θが90度以下の場合、第1のベクトルの重みがゼロより大きいと物体を目標位置から遠ざけることとなるし、第1のベクトルの重みがゼロより小さいとロボット自身が物体から遠ざかることとなり、いずれも非効率的である。その点、θが90度以下の場合に第1のベクトルの重みをゼロに固定し、周回動作のみを行うようにすれば、押し搬送の効率化を図ることができる。
【0018】
前記制御手段は、前記物体が前記目標位置に近づいた場合に前記第2のベクトルの重みを増大させることが好ましい。典型的には、前記制御手段は、前記物体と前記目標位置の距離が近くなるほど大きくなる係数a(a≧1)を、前記第2のベクトルの重みに乗じればよい。
【0019】
これにより、目標位置の近傍では周回動作成分が増大し、相対的に押し動作成分が小さくなるため、押し動作が慎重に(少しずつ)行われることとなる。したがって、物体がパスから外れたり、目標位置を行き過ぎてしまったりすることが防止され、結果として、目標位置への収束が早くなる。
【0020】
搬送システムが、自走式の第2のロボットをさらに備え、前記位置検出手段が、前記第2のロボットの現在の位置をさらに検出し、前記制御手段が、前記ロボットを前記第2のロボットが搬送する物体とみなして、前記ロボットの移動方向の場合と同じアルゴリズムを用いて前記第2のロボットの移動方向を制御することによって、前記ロボットと前記第2のロボットとが直列につながって前記物体を押すことも好ましい。
【0021】
これにより、1台のロボットでは搬送困難な重い物体を、複数のロボットの協働により搬送することが可能となる。しかも、先頭のロボットが物体を押すアルゴリズムと、第2のロボットが先頭のロボットを押すアルゴリズムとを同じにできるため、プログラムの作成及び実装が容易である。
【0022】
なお、本発明は、上記手段の少なくとも一部を有する搬送システムまたはロボット制御システムとして捉えることができる。また、本発明は、上記処理の少なくとも一部を含むロボット制御方法、または、その方法の各ステップをコンピュータに実行させるためのプログラムや同プログラムを記録した記録媒体として捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【0023】
例えば、本発明の一態様としてのロボット制御方法は、自走式のロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムにおける、ロボットの制御方法であって、前記物体と前記ロボットの現在の位置を検出するステップと、前記位置検出ステップの検出結果に基づいて前記ロボットの移動方向を制御する制御ステップと、を含み、前記制御ステップでは、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とするロボットの制御方法である。
【発明の効果】
【0024】
本発明によれば、ロボットの押し搬送を効率的かつ安定的に実行可能なアルゴリズムを提供できる。また、本発明によれば、シンプルで、且つ、物体やロボットのサイズに依存しない、汎用性の高い押し搬送アルゴリズムを提供できる。
【図面の簡単な説明】
【0025】
【図1】搬送システムのハードウエア構成を示す図であり、(a)は側面図、(b)は平面図である。
【図2】搬送システムの機能構成を示すブロック図である。
【図3】ロボット、物体、目標位置の位置関係の一例を示す図である。
【図4】(a)はロボットと物体の位置関係を変えたときのロボットの移動方向の変化を示す図、(b)はベクトル場(cos2θ,sin2θ)を示す図である。
【図5】搬送システムのフローチャートである。
【図6】(a)は直線形状のバンパーと物体の干渉を示す図、(b)は円形のバンパーによる搬送動作を示す図である。
【図7】第3実施形態の係数aの定義を説明するための図である。
【図8】第4実施形態における直列搬送の様子を示す図である。
【図9】(a)はbinary mode法を示す図、(b)はtail-following法を示す図である。
【発明を実施するための形態】
【0026】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0027】
<第1実施形態>
(システム構成)
図1は、本発明の実施形態に係る搬送システムのハードウエア構成を示している。(a)は側面図であり、(b)はステージSを上方からみた平面図である。このシステムは、ステージSの上に置かれた物体OをロボットRにより目標位置Gまで搬送するための搬送システムであって、自走式のロボットRと、撮像装置2と、コンピュータ3とから構成される。ロボットR及び撮像装置2は、それぞれ、無線又は有線によりコンピュータ3に接続されている。
【0028】
ロボットRは、車輪、駆動モータ等から構成される移動機構と、コンピュータ3からの制御コマンドに基づき移動機構を制御するマイクロコントローラとを備える、自走式のロボットである。本実施形態のロボットRは、略円盤状の外形を有しており、搬送対象の物体Oへの引っ掛かりや物体Oの損傷を防ぐために、ロボットRの外周には円形のバンパーが取り付けられている。ロボットRの移動機構は、少なくとも「前進」「右回り」「左回り」「停止」の動作が可能である。これらの動作は、マイクロコントローラ内に予めプログラムされており、コンピュータ3から各動作に対応する制御コマンドを送出することで、ロボットRの動作を制御することができる。
【0029】
撮像装置2は、CCDやCMOSなどの撮像素子を備える小型のカメラであり、平面ステージSの上方に、ステージSを画角におさめるように設置されている。本実施形態では、ステージSと撮像装置2の光軸がほぼ直交するように撮像装置2を固定したが、必ずしもこの構成に限らず、ステージSを斜めに俯瞰するように撮像装置2を設置してもよいし、また撮像装置2の画角や光軸の向きを可変にしてもよい。撮像装置2で取得した画像は、ロボットR及び物体Oの位置検出に利用される(詳細は後述する)。
【0030】
図2は、搬送システムの機能構成を示すブロック図である。本システムは、その機能として、概略、位置検出部30、移動方向算出部31、コマンド送信部32を備えている。
これらの機能は、コンピュータ3のCPUが記憶装置に格納されたプログラムをロードし実行することで実現されるものである。なお、コンピュータ3としては、CPU、メモリ、補助記憶装置、入力装置、表示装置などを備える汎用のパーソナル・コンピュータを用いることができる。ただし、専用のコンピュータや、ロボットに実装するオンボードマイコンなどを用いることも好ましい。またプログラムの一部または全部を専用ICで構成することも可能である。
【0031】
位置検出部30は、ロボットRと物体Oの現在の位置を検出するための位置検出手段である。ここで、ロボットRの位置とは、ロボットR上に設定された代表点の位置をさす。また物体Oの位置とは、物体O上に設定された代表点の位置をさす。それぞれの代表点は任意に設定できるが、ロボットR及び物体Oの動きの安定を考慮すると、ロボットRの回転中心と物体Oの質量中心(重心)をそれぞれ代表点に設定することが好ましい。本実施形態では、図1に示すように、ロボットR及び物体Oには、それぞれ、所定の図形が描画されたマーカMr、Moが取り付けられている。マーカの取り付け位置は上記代表点を基準に決められている。位置検出部30は、撮像装置2から取り込まれた画像からマーカMr、Moを認識することによって、ロボットR及び物体Oの位置・向きを検出する。なお、マーカの認識には公知の図形認識手法を利用できるので、ここでは詳しい説明を省略する。
【0032】
移動方向算出部31は、位置検出部30の検出結果に基づいてロボットRの最適な移動方向を計算する機能である。また、コマンド送信部32は、ロボットRの現在の向きと、移動方向算出部31で計算した移動方向とから、ロボットRの制御コマンド(ここでは、「前進」「右回り」「左回り」「停止」の組み合わせ)を生成し、ロボットRのマイクロコントローラに送信する機能である。本実施形態では、この移動方向算出部31及びコマンド送信部32が、本発明の制御手段を構成している。以下では、本実施形態の移動方向算出部31が採用する押し搬送アルゴリズムについて詳しく説明した後、システム全体の処理フローについて説明する。
【0033】
(押し搬送アルゴリズム)
押し搬送アルゴリズムは、例えば図3に示すような位置関係が与えられたときに、物体Oを目標位置Gに到達させるためのロボットRの好適な移動方向を算出するための計算手法である。本アルゴリズムの入力は、物体Oの目標移動方向Do(物体Oから目標位置Gへのベクトルの向き)と、ロボットR及び物体Oの位置関係であり、本アルゴリズムの出力は、ロボットRの移動方向Drである。ここで、ロボットRと物体Oの位置は位置検出部30から都度取得されるものであり、目標位置Gについては予めわかっているものとする。なお、ロボットRを物理的に駆動するためには、モータトルクとかタイミングといったパラメータの調整が必要となるが、ロボットRの移動方向Drの計算は、これらのローレベルな駆動制御の問題とは独立に取り扱うことが可能である。
【0034】
本システム(移動方向算出部31)は、ロボットRと物体Oの位置を取得すると、まずローカル座標系を定義する。物体Oの位置をローカル座標系の原点にとり、物体Oの目標移動方向Doに対して平行にx軸をとる。ここで、ロボットRの位置ベクトル(物体OからロボットRへのベクトル)がx軸となす角をθとおき、ロボットRと物体Oの距離を1とすると、ロボットRの座標は(cosθ,sinθ)で表される。
【0035】
ロボットRの基本的な動作として、ロボットRが物体Oを押す動作(押し動作)と、ロボットRが物体Oの周りを移動して物体Oの後ろ側に回り込む動作(周回動作)とを考えると、上記座標系においては、押し動作の移動方向は、ロボットRが物体Oの位置に向かう方向のベクトル、具体的にはベクトルV1=(−cosθ,−sinθ)で与えられる。また、周回動作の移動方向は、ベクトルV1と直交するベクトルのうちロボットRが目
標位置Gから離れる方向のベクトル、具体的には、ベクトルV2=(−sinθ,cosθ)で与えられる。従来のbinary mode法は押し動作と周回動作を別々に実行するもので
あったのに対し、本アルゴリズムは、2つのベクトルV1、V2を適当な重みで合成することで、押しながら周回する(あるいは、周回しながら押す)というロボットRの動きを実現する。
【0036】
目標位置GからみてロボットRが物体Oの後ろ側にいる場合(つまり、−cosθが大きい場合)は、ロボットRによる押し動作を支配的にするべきである。一方、ロボットRが物体Oの真後ろの位置から離れるほど(つまり、sinθが大きいほど)、ロボットRの周回動作を支配的にするべきである。そこで、本アルゴリズムでは、ベクトルV1、V2それぞれの重みとして−cosθ、sinθを選ぶ。そうすると、ロボットRの移動方向Drは、下記式のように、(cos2θ,sin2θ)で与えられることとなる。
【数1】
【0037】
図4(a)は、ロボットRと物体Oの位置関係を変えたときのロボットRの移動方向Drの変化を示すものである。また図4(b)は、ベクトル場(cos2θ,sin2θ)を図示したものである。これらの図から、ロボットRが物体Oの後ろ側にいくほど押し動作が支配的となること、ロボットRと物体Oの位置関係に応じて移動方向Drが連続的に変化することなどがわかる。
【0038】
さらに興味深いのは、図4(b)のベクトル場が物理学におけるダイポールに似ていることである(従って、本アルゴリズムをダイポール法ともよぶ)。物理学におけるダイポールとは、例えば、プラスとマイナスの電荷が離れて存在する場合に観測される電界のことである。幾何学的には、図4(b)に示すように、ダイポールは、ある直線上の1点で当該直線に接する多数の円で描画される。
【0039】
(処理フロー)
図5のフローチャートを参照して、本システムの処理の流れを説明する。なお、ロボットR及び物体Oはステージ上に予め配置され、且つ、それらに対して位置検出用のマーカMr、Moが取り付けられているものとする。また、搬送のゴールとなる目標位置Gについては予めシステムに教示されているものとする。
【0040】
ステップS10において、位置検出部30は、撮像装置2から画像を取り込むと、マーカMr、Moを認識することによりロボットR及び物体Oの現在の位置・向きを特定する。次に、移動方向算出部31が、目標位置GとステップS10で得られた物体Oの現在位置とから、物体Oの目標移動方向Doを計算する(ステップS12)。そして、移動方向算出部31は、上述した押し搬送アルゴリズム(ダイポール法)を用いて、ロボットRの移動方向Drを計算する(ステップS13)。
【0041】
次に、コマンド送信部32が、ステップS13で計算した移動方向Drに従って、ロボットRの動きを制御する。具体的には、コマンド送信部32は、ステップS10で得られたロボットRの向きと移動方向Drとを比較し(ステップS14)、その差が所定の閾値Th2より小さい場合は、ロボットRを所定距離だけ前進させる(ステップS15)。一方、差が閾値Th2以上の場合は、コマンド送信部32は、右回り又は左回りコマンドを送出してロボットRの向きを調整する(ステップS16)。
【0042】
システムは、上記処理を繰り返し、物体Oと目標位置Gの距離が所定の閾値Th1よりも小さくなったら、搬送完了と判断し、処理を終了する(ステップS11)。
【0043】
(本実施形態の利点)
上述した本実施形態の構成(アルゴリズム)によれば、次のような利点が得られる。
ベクトルV1とV2の合成ベクトルに従ってロボットRを移動させたことにより、押し動作と周回動作の両方を同時に実行することができるため、従来のアルゴリズムに比べて、効率的な押し搬送が実現される。加えて、ベクトルV1、V2の重みをそれぞれ−cosθ、sinθに選んだことにより、θ(ロボット、物体、目標位置の位置関係)に応じてロボットの移動方向が滑らかに変化することとなり、ロボットの動作が安定する。また、θが180度のときにベクトルV1(押し)の重みが最大値1をとり、ベクトルV2(周回)の重みがゼロをとるため、ロボットが物体の真後ろにあるときに押し動作のみが行われることとなり、押し搬送の効率を最大にすることができる。さらに、θが180度より小さくなるに従って、ベクトルV2(周回)の重みが徐々に大きくなり、その分、ベクトルV1(押し)の重みが徐々に小さくなるので、ロボットが物体の真後ろから離れるほど周回動作成分が大きくなり、最適な押し位置(θ=180度)への復帰が促進される。そして、θが90度の場合、つまりロボットが物体の真横にある場合に、ベクトルV1の重みがゼロとなり、ベクトルV2の重みが最大となるため、物体を目標位置から遠ざけることがなく、且つ、最適な押し位置への迅速な復帰が期待できる。
【0044】
また、本アルゴリズムは、ロボット及び物体の現在位置と目標位置の3つの値からベクトル演算を行うだけでよく、極めてシンプルであるとともに、計算量も非常に少ない。さらに、ロボットの移動方向Drは(cos2θ,sin2θ)で与えられ、ロボットや物体のサイズ、ロボットと物体間の距離などに依存しない。したがって、本アルゴリズムによれば、いかなるサイズの物体、ロボットに対しても同一のプログラムコードを利用でき、サイズ依存パラメータの調整といった煩雑な作業が不要となる。これにより、実用に際しての労力を大幅に軽減することができる。
【0045】
また、本実施形態のロボットは、円形のバンパーを有しているため、直線形状のバンパーに比べ効率的な押し搬送が可能である。この点について、図6を参照して説明する。ロボットRが物体Oの真後ろにいる場合は、いずれのバンパー形状でも同じように搬送することができる。しかしながら、ロボットRの位置が物体Oの真後ろからずれてしまった場合、ロボットRが周回動作のために転回すると、直線形状のバンパーでは物体Oに干渉し、物体Oを目標位置から遠ざけてしまうおそれがある(図6(a)参照)。バンパーの干渉を防ぐには、ロボットRを後退させて物体Oから一旦離した後、周回動作を行う必要があるが、このような動作は多大なオーバーヘッドを生むため好ましくない。これに対して、図6(b)に示すように、円形のバンパーの場合は、ロボットRの転回時にバンパーと物体Oの干渉が生じることはないし、ロボットRが転回を終えて前進すると、物体Oが目標位置方向へと押される。よって、本実施形態の押し搬送アルゴリズムには、円形バンパーのほうが好適である。
【0046】
<第2実施形態>
ロボットRが物体Oの前方にある場合、第1実施形態のアルゴリズムでは、ロボットRは物体Oから離れる方向へと移動し、大きな弧を描いて物体Oの後ろに回り込む、という非効率的な軌道をとる(図4(b)参照)。例えば、ロボットRが目標位置Gの手前で物体Oを押しすぎ、物体Oが目標位置Gを通り越してしまった場合などに、上記の問題が発生する。
【0047】
かかる問題を解決するために、第2実施形態のアルゴリズムでは、角度θが90度以下の場合に、下記式のとおり、押し動作方向のベクトルV1の重みをゼロにする。これは、
第1実施形態のアルゴリズムで得られたロボットの移動方向Drが物体Oのほうを向いていなかった場合に、Drの径方向成分をゼロにする、と言い換えることもできる。
【数2】
【0048】
この方法は理解が容易であり実装が簡単であるという以外にも、次のような利点をもつ。第一に、0度<θ≦90度におけるベクトル場(−sin2θ,sinθcosθ)と、90度<θ≦180度におけるダイポール場(cos2θ,sin2θ)とが、その境界(θ=90度)において滑らかに接続する。このことは、境界付近のロボットRの動作を安定にする効果がある。第二に、本実施形態のアルゴリズムも、第1実施形態のものと同様、ロボットや物体のサイズに依存しないため、汎用性に優れている。
【0049】
<第3実施形態>
第1及び第2実施形態のアルゴリズムでは、物体Oが目標位置Gに収束するのに時間がかかることがある。最悪なケースでは、ロボットRと物体Oが目標位置Gの周囲を無限に回り続けることもある。このような現象が起きるのは、ダイポール法では、ロボットRが物体Oの後ろに回り込むのと同時に物体Oを押して移動させてしまうからである。
【0050】
かかる問題を解決するために、第3実施形態のアルゴリズムでは、物体Oが目標位置Gに近づいた場合に周回動作成分のベクトルV2の重みを増大させることとする。本実施形態のロボットRの移動方向Drは下記式で表される。ここで、係数a(a≧1)は、物体Oと目標位置Gの距離に応じて決められるパラメータである。
【数3】
【0051】
係数aが大きくなるほど周回動作成分が増大し、相対的に押し動作成分が小さくなるため、押し動作が慎重に(少しずつ)行われることとなる。したがって、目標位置Gの近傍で係数aを大きくすれば、物体Oが搬送パスから外れたり、目標位置Gを行き過ぎてしまったりすることが防止され、結果として、目標位置Gへの収束が早くなる。なお、上記式から明らかなように、本実施形態のアルゴリズムも、ロボットRや物体Oのサイズに依存しないという利点をもつ。
【0052】
本実施形態では、係数aを、a=|β|/|α|のように定義する。ここで、αはロボットRから物体OへのベクトルとロボットRから目標位置Gへのベクトルの間の角度であり、βは物体OからロボットRへのベクトルと目標位置Gから物体Oへのベクトルの間の角度である(図7参照)。この係数aは、次のような特徴をもつ。第一に、係数aは角度αに反比例するため、物体Oが目標位置Gに近づくほど係数aは大きくなる傾向を示す。第二に、角度βを乗じることで、ロボットR、物体O、目標位置Gがほぼ一直線に並んだときに係数aが無限大になってしまうことを防いでいる。そして、第三に、角度α、βで
定義したことで、ロボットや物体のサイズに依存しないパラメータである。
【0053】
<第4実施形態>
図8は、第4実施形態における物体搬送の様子を示している。この実施形態では、2台のロボットを用いて1つの物体の押し搬送を行う。
【0054】
本実施形態のシステムは、撮像装置2で得られた画像から、1番目のロボット(先頭のロボット)R1、2番目のロボット(後続のロボット)R2、物体Oそれぞれの位置及び向きを特定する。そして、システムは、第1〜第3実施形態と同じアルゴリズムを用いて、ロボットR1の移動方向を決定する。さらにシステムは、同じアルゴリズムをロボットR2の移動方向の算出にも適用する。このとき、物体Oではなく、ロボットR1を、ロボットR2の搬送対象物体に設定する(具体的には、アルゴリズムの入力としてロボットR2とロボットR1の位置を与える)だけで、2台のロボットR1、R2が直列につながって物体Oを押すこととなる。
【0055】
これにより、1台のロボットでは搬送困難な重い物体を、複数のロボットの協働により搬送することが可能となる。しかも、先頭のロボットが物体を押すアルゴリズムと、後続のロボットが先頭のロボットを押すアルゴリズムとを同じにできるため、プログラムの作成及び実装が容易である。なお、本実施形態では2台のロボットによる直列搬送を例示したが、3台以上のロボットによる直列搬送も可能であることはいうまでもない。
【0056】
<その他の変形例>
上記実施形態は本発明の一具体例を例示したものにすぎない。本発明の範囲は上記実施形態に限られるものではなく、その技術思想の範囲内で種々の変形が可能である。
【0057】
例えば、ロボットの形状は円盤状でなくてもよい。またバンパーは、ロボットの外周の一部分だけに設けられていてもよいし、円形でなくフラットな形状のものでもよい。またロボットの移動機構は、車輪に限らず、キャタピラ、浮上装置、歩行装置のようなものでもかまわない。平面上を2次元的に移動して、物体に当接することで当該物体を押すことができさえすれば、ロボットの構成はいかなるものでも採用できる。また、搬送対象の物体の外形も円形である必要はなく、楕円形、矩形、多角形など、ロボットのバンパーと当接可能な外形をもつ物体であれば搬送可能である。
【0058】
上記実施形態では、撮像装置2で得られた画像から物体等の位置を検出しているが、位置検出手段はこの構成に限られない。例えば、ステージにセンサを内蔵し、物体やロボットのステージ上の2次元座標をセンサで検知してもよい。あるいは、物体やロボット自体に位置センサを内蔵してもよい。
【0059】
第3実施形態で用いる係数aの定義は、上述したものに限られない。また、物体と目標位置の距離に応じて係数aの値を連続的に変化させる必要はなく、数個の値を段階的に切り替える構成でもかまわない。例えば、物体Oと目標位置Gの距離が所定の閾値以上の場合(目標位置の非近傍の場合)はa=1とし、所定の閾値より小さい場合(目標位置の近傍の場合)にa=2とする、という方法でもよい。
【符号の説明】
【0060】
R,R1,R2:ロボット、O:物体、G:目標位置、S:ステージ、2:撮像装置、3:コンピュータ、30:位置検出部、31:移動方向算出部、32:コマンド送信部
【特許請求の範囲】
【請求項1】
ロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムであって、
物体を押すための自走式のロボットと、
前記物体と前記ロボットの現在の位置を検出する位置検出手段と、
前記位置検出手段の検出結果に基づいて前記ロボットの移動方向を制御する制御手段と、を備え、
前記制御手段は、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とする搬送システム。
【請求項2】
前記制御手段は、前記物体から前記目標位置へのベクトルと前記物体から前記ロボットへのベクトルとのなす角θに応じて前記重みを連続的に変化させることを特徴とする請求項1に記載の搬送システム。
【請求項3】
前記制御手段は、θが180度の場合に、前記第1のベクトルの重みを最大にするとともに、前記第2のベクトルの重みをゼロにすることを特徴とする請求項2に記載の搬送システム。
【請求項4】
前記第1のベクトルが、(−cosθ,−sinθ)であり、
前記第2のベクトルが、(−sinθ,cosθ)であり、
前記第1のベクトルの重みが、−cosθであり、
前記第2のベクトルの重みが、sinθであることを特徴とする請求項2または3に記載の搬送システム。
【請求項5】
前記制御手段は、θが90度以下の場合に、前記第1のベクトルの重みをゼロにすることを特徴とする請求項2〜4のいずれかに記載の搬送システム。
【請求項6】
前記制御手段は、前記物体が前記目標位置に近づいた場合に前記第2のベクトルの重みを増大させることを特徴とする請求項1〜5のいずれかに記載の搬送システム。
【請求項7】
自走式の第2のロボットをさらに備え、
前記位置検出手段が、前記第2のロボットの現在の位置をさらに検出し、
前記制御手段が、前記ロボットを前記第2のロボットが搬送する物体とみなして、前記ロボットの移動方向の場合と同じアルゴリズムを用いて前記第2のロボットの移動方向を制御することによって、
前記ロボットと前記第2のロボットとが直列につながって前記物体を押すことを特徴とする請求項1〜6のいずれかに記載の搬送システム。
【請求項8】
自走式のロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムにおける、ロボットの制御方法であって、
前記物体と前記ロボットの現在の位置を検出するステップと、
前記位置検出ステップの検出結果に基づいて前記ロボットの移動方向を制御する制御ステップと、を含み、
前記制御ステップでは、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とするロボットの制
御方法。
【請求項9】
請求項8に記載のロボットの制御方法の各ステップをコンピュータに実行させるためのプログラム。
【請求項1】
ロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムであって、
物体を押すための自走式のロボットと、
前記物体と前記ロボットの現在の位置を検出する位置検出手段と、
前記位置検出手段の検出結果に基づいて前記ロボットの移動方向を制御する制御手段と、を備え、
前記制御手段は、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とする搬送システム。
【請求項2】
前記制御手段は、前記物体から前記目標位置へのベクトルと前記物体から前記ロボットへのベクトルとのなす角θに応じて前記重みを連続的に変化させることを特徴とする請求項1に記載の搬送システム。
【請求項3】
前記制御手段は、θが180度の場合に、前記第1のベクトルの重みを最大にするとともに、前記第2のベクトルの重みをゼロにすることを特徴とする請求項2に記載の搬送システム。
【請求項4】
前記第1のベクトルが、(−cosθ,−sinθ)であり、
前記第2のベクトルが、(−sinθ,cosθ)であり、
前記第1のベクトルの重みが、−cosθであり、
前記第2のベクトルの重みが、sinθであることを特徴とする請求項2または3に記載の搬送システム。
【請求項5】
前記制御手段は、θが90度以下の場合に、前記第1のベクトルの重みをゼロにすることを特徴とする請求項2〜4のいずれかに記載の搬送システム。
【請求項6】
前記制御手段は、前記物体が前記目標位置に近づいた場合に前記第2のベクトルの重みを増大させることを特徴とする請求項1〜5のいずれかに記載の搬送システム。
【請求項7】
自走式の第2のロボットをさらに備え、
前記位置検出手段が、前記第2のロボットの現在の位置をさらに検出し、
前記制御手段が、前記ロボットを前記第2のロボットが搬送する物体とみなして、前記ロボットの移動方向の場合と同じアルゴリズムを用いて前記第2のロボットの移動方向を制御することによって、
前記ロボットと前記第2のロボットとが直列につながって前記物体を押すことを特徴とする請求項1〜6のいずれかに記載の搬送システム。
【請求項8】
自走式のロボットにより物体を押して該物体を所定の目標位置まで搬送する搬送システムにおける、ロボットの制御方法であって、
前記物体と前記ロボットの現在の位置を検出するステップと、
前記位置検出ステップの検出結果に基づいて前記ロボットの移動方向を制御する制御ステップと、を含み、
前記制御ステップでは、前記ロボットが前記物体の位置に向かう方向の第1のベクトルと、前記第1ベクトルと直交し且つ前記ロボットが前記目標位置から離れる方向の第2のベクトルとを、前記物体と前記ロボットと前記目標位置の現在の位置関係に応じた重みで合成することにより、前記ロボットの移動方向を決定することを特徴とするロボットの制
御方法。
【請求項9】
請求項8に記載のロボットの制御方法の各ステップをコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2011−108003(P2011−108003A)
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願番号】特願2009−262645(P2009−262645)
【出願日】平成21年11月18日(2009.11.18)
【出願人】(503360115)独立行政法人科学技術振興機構 (1,734)
【Fターム(参考)】
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願日】平成21年11月18日(2009.11.18)
【出願人】(503360115)独立行政法人科学技術振興機構 (1,734)
【Fターム(参考)】
[ Back to top ]