(57)【要約】【課題】移動ロボットが作業を実行するための作業領域の幾何学的関係を記述した地図を作成すること。【解決手段】人間がその領域を表現するグラフを定義するステップ２０１と、人間がそのグラフ中の辺に沿ってロボットを誘導した後、人間とロボットのチームが頂点で停止するステップ２０３と、その頂点が新しい場合には頂点記録を生成するステップ２０５と、その頂点が既に生成されたものである場合にはロボットと頂点との位置・方向を補正するステップ２０６と、新しい辺が完成した場合には辺記録を生成するステップ２０８と、最後に、ロボットによって生成された頂点記録の集合と辺記録の集合を含む地図を出力するステップ２１０とを含む、人間とロボットとがチームを構成することによりその領域の地図を生成する方法２００。ロボットが人間を追跡するステップ２０３は、人間の動作を検出したセンサから２自由度の運動コマンド得る副ステップと、その運動コマンドを基にして２自由度の運動をロボットが実行する副ステップを含む。【選択図】図８
2010507169.tif 000002
【特許請求の範囲】
【請求項１】
人間の動作を検出したセンサから２変数の運動コマンドを得るステップと、ロボットの平行移動方向をロボット本体の方向に等しく保ちながらその運動コマンドに基づいて平行移動速度と回転速度を制御して運動を実行するステップからなる、ある作業領域内でロボットが人間を追跡する方法。
【請求項２】
請求項１において、更に平行移動速度を非負に制限した方法。
【請求項３】
請求項１において、更に平行移動速度を非正に制限した方法。
【請求項４】
ある作業領域が与えられたとき、その領域内に埋め込まれたグラフを人間が定義するステップと、ロボットが請求項２に記載された方法により人間を追跡しながらそのグラフ中の辺を辿るステップと、そのグラフ中の辺を辿っている間にロボットが両側にある物体の幾何学的特徴を抽出するステップと、辺を辿る動作が終わったときにそのグラフ中の頂点で停止するステップと、人間とロボットのチームが頂点で停止したときにその頂点の番号を人間がロボットに伝えるステップと、そのチームが停止した頂点が新しいときには、頂点番号とアンカーと人間が与えた名前と頂点位置とを含む頂点記録をロボットが生成するステップと、そのチームが停止した頂点が既に存在しているときには、ロボットがロボットと頂点の位置方角の誤差を修正するステップと、そのチームが新たな辺を辿り終えたときには、頂点番号対と辺長と両側の物体の幾何学的特徴とを含む辺記録をロボットが生成するステップと、以上のセッションの最後に、生成された頂点記録の集合と生成された辺記録の集合とを含む情報をこの作業領域の地図としてロボットが出力するステップとから成る、人間とロボットのチームが一つの作業領域の地図を作成する方法。
【請求項５】
請求項１に記載された方法において、更に各運動制御サイクルにおいて平行移動速度と回転速度とを含む運動記録を生成するステップと、その人間追跡動作の最後に、生成された運動記録の集合を出力するステップとを加えた方法。
【請求項６】
請求項５に記載された方法において、更にその運動記録の集合を用いてその人間追跡運動を再生するステップを加えた方法。
【請求項７】
請求項５に記載された方法において、更にその運動記録の集合を用いて、その人間追跡運動を逆の向きに再生するステップを加えた方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動ロボットが与えられた作業領域の地図を作成する課題に関する。
【背景技術】
【０００２】
移動ロボットは次第に人々の日常生活に入り込んできた。エンターテインメント・ロボット、床掃除ロボット、警備ロボットなどの商業ロボットが手に入るようになっている。人間型ロボット（ヒューマノイド）は日本の研究所で安定した走行を見せている（例えば、WO/2006/062948は二足歩行ロボットに関する技術を開示している）。これらの自律ロボットにその環境を理解させようという努力が鋭意積み重ねられてきた。
【０００３】
特許WO/2006/046053, WO/2006/046049, およびWO/2006/046044は、専用のハードウェアを用いて、決められた床の領域を清掃する方法を述べている。しかし、これらは、ロボットがどのような方法でその環境を認識するかについては言及していない。
【０００４】
別の特許WO/2005/092632は、予め決められた間隔で床上に貼られた２次元バーコードを用いて、移動ロボットを運行する方法を開示している。しかし、余分なハードウェアを床に貼るのは、ユーザにとって、費用が嵩み、かつ時間が掛かる。
【０００５】
別の特許WO/2005/098476は、ロボットに搭載された発光装置とその反射光を検出するセンサを用いて、ロボットの位置を推定する方法を開示している。しかし、この方法でどの程度の位置精度が得られるかは不明である上、この方法の応用可能性については限界がある。
【０００６】
また別の特許、WO/99/59042 および WO/2000/043186は、作業領域の境界にマーカーを貼り、それを検出することにより、移動ロボットがその領域をカバーすることを可能にしている。しかし、マーカーを貼るという作業は高価で面倒であるから、応用面が限られる。
【０００７】
更に別の特許、WO/2005/081074, WO/2005/006098, およびWO/1999/028800は移動ロボットがベース・ステーションにドッキングする方法を開示している。この方法はロボットがベース・ステーションの周辺の幾何学的関係を理解する助けにはなるが、作業領域全体の幾何学的関係を理解することは期待できない。
【０００８】
更に別の特許WO/2001/038945は複数台の移動ロボットを用いて、周囲の地図を生成する方法を開示している。しかし、ただ一台のロボットによってそれが可能ならば、はるかに有用である。
【０００９】
また別の特許US/6009359は、未知の屋内環境内の詳細な幾何３次元モデルを生成することによって地図を生成する方法を述べている。しかし、移動ロボットのオドメトリ誤差をどのようにして回避するのか、については述べられていない。
【００１０】
更に別の特許US/6965209は、持ち運び可能な境界信号発生器を用いて、ロボットを特定の空間内に閉じ込める方法を開示している。しかし、そのようなハードウェア機器を用いない方法のほうが明らかに望ましい。
【００１１】
特許の開示、WO/88/004081 および US/4821192はノード地図を用いたロボット運行法について述べている。このノード地図は人間があらかじめ設計して、ロボットにデータとして与える。このノード地図の使用によってどのような利点が得られるかについては述べられていない。
【００１２】
従来、ロボット工学の研究分野においては、未知の作業領域の地図作成を目的として、Simultaneous Localization And Mapping (SLAM)法が研究されてきた。この方法は、自立型の自律ロボットが未知の領域の地図を自力で生成するものと期待されている。
【００１３】
特許WO/2004/059900はイメージセンサを用いたSLAM法を開示している。別の特許WO/2001/078951は、完全に未知の、予測できない、かつ部分的に動的で大規模な環境において、準最適な経路を発見するための方法を開示している。さらに別の特許US/7015831は、視覚センサとSLAM法を用いて地図を生成し、更新する方法を述べている。
【００１４】
しかし、SLAM法には限界がある：（１）ロボットのオドメトリ機能が劣るために、生成される地図の精度に限界がある（"オドメトリ"とは、移動ロボットがサンプリングサイクルごとの微小移動量を累積することにより、それ自身の座標系((x, y), θ) の推定値を求める機能である）。（２）ロボットは、オドメトリの誤差の累積ために、複雑な作業領域では自己位置の同定が困難になり、そのために、複雑な領域の自律的地図作成は非常に困難になる。（３）更に、この方法は地図作成における基本的問題にたいする配慮をまったく欠いている：ロボットが、与えられた環境の中で、複数個の作業領域を取り扱わなければならない場合がある。人間からの指示なしに、ロボットが自律的に異なる作業領域を知ることは決してできない。
【００１５】
移動ロボットが、曲率を制御することによって直線または円を追跡するアルゴリズムが特許US/6134486において開示された。このアルゴリズムは、v ≠ 0である場合、つまり曲率が定義されている場合に有効である。しかし、本発明においては、この条件（v ≠ 0）は保障されていない。従って、本発明にこの先発明の手法を採用することはできない。
【００１６】
手動で駆動されるロボットの運動を記録するアルゴリズムが特許US/6314341において開示されている。この先発明においては、モーターの電源をオフにした状態で、人間の物理的な力によってロボットの運動が生成される。この運動生成手法は、ロボットが重いために人間がそれを手で動かすことが不可能であるときには、有効でない。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】WO/2006/062948
【特許文献２】WO/2006/046053
【特許文献３】WO/2006/046049
【特許文献４】WO/2006/046044
【特許文献５】WO/2005/092632
【特許文献６】WO/2005/098476
【特許文献７】WO/99/59042
【特許文献８】WO/2000/043186
【特許文献９】WO/2005/081074
【特許文献１０】WO/2005/006098
【特許文献１１】WO/1999/028800
【特許文献１２】WO/2001/038945
【特許文献１３】US/6009359
【特許文献１４】US/6965209
【特許文献１５】WO/88/004081
【特許文献１６】US/4821192
【特許文献１７】WO/2004/059900
【特許文献１８】WO/2001/078951
【特許文献１９】US/7015831
【特許文献２０】US/6134486
【特許文献２１】US/6314341
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明が解決しようとする課題は、移動ロボットが作業領域Aの地図をいかにして生成するか、というものである。この課題は更に次の３つの副課題に分割できる：
（副課題１）ロボットがいかにしてAの境界線を知るのか？
（副課題２）ロボットがいかにしてA内部の幾何学的特徴を知るのか？
（副課題３）ロボットがいかにしてAの地図を生成するのか？
【課題を解決するための手段】
【００１９】
解決方法を述べる前に、（１）２自由度運動および2自由度運動コマンド、と（２）グラフおよび地図、についての定義を導入する必要がある。
【００２０】
２自由度運動および2自由度運動コマンドの定義：図１に示すように、世界直角座標系２が定義された平面上に、剛体移動ロボット１が置かれているとする。このロボットには“本体方向”θ３が本体上に定義されている。"ロボット座標系” (XR, YR) 4はロボット本体上に貼り付けられ、そのX軸の方向はその本体方向と定義されている。さらにロボット座標系は世界座標系においては F  ＝（(x, y), θ) と定義される。ここで、ｘ４とｙ５は(XR, YR)の原点の世界座標系におけるX座標とY座標、θ３は、(XR, YR)のX方向の世界座標系における方向と等しい。一方、ロボットの各時点における運動は
【００２１】
【数１】
2010507169.tif 000003
【００２２】
と表される。図１に示されているように、ここで、ｖ７は"平行移動速度"、μ８はロボット座標系(XR, YR)でみた"平行移動方向"、ω -= dθ/dt ９は"回転速度"である。
このロボット本体の平行移動はv とμによって表される。この運動は３つの変数を持つので、ロボットの"３自由度運動"と呼ばれる。この平行移動方向 μ 8 は -π/2 < μ ≦ π/2と規準化されるものとする。もしv<0であれば、ロボットはμ+πの方向に、速度|v|で移動しているものと考える。多脚ロボットは通常この３自由度の運動能力を持っている。車輪型ロボットがこの３自由度の運動能力を持っている場合には、"全方向移動車"と呼ばれる。
【００２３】
仮にあるロボットの平行移動方向がつねにそのロボットの身体の方向と等しくなるように制限された場合、つまりμ = 0なる制限を受けた場合、式（１）であらわされる運動は
【００２４】
【数２】
2010507169.tif 000004
【００２５】
となる。 この運動は２変数v および ωしか含まないから、"２自由度の運動"と呼ばれる。自動車、自転車、三輪車、速度差制御車などの、通常の車両はこの制限された、２自由度の運動しかできない。これらの車両は側方向には運動できない。曖昧さを惹き起こさない限り、２自由度の運動をM = (v, ω)と表すことにする。
【００２６】
本特許において作業領域の地図を作成するのに、人間がロボットを誘導して領域内を案内する。そのミッションのためには（仮にそのロボットが３自由度の運動能力をもっている場合でも）３自由度でなく２自由度の運動を使うほうが望ましい。その理由は： （１）ロボットの身体の方向が、グラフの辺の方向と一致しているので、ロボットの左右、側方に装着されたセンサは側方の物体を真っ直ぐにセンスすることになる。ロボットのこの姿勢が側方物体の幾何学的特徴を抽出するのに最も望ましい。（２）ロボットの前面が常に人間に向いているので、人間を検出するセンサの個数を最小にできる。（３）人間追跡のセッションにおいて、ロボットが人間の検出に成功すると、ロボットは人間の方を向く。人間はそれを見て、ロボットが正常に機能していることが確認できる。（４）人間検出センサの出力が２変数だけで十分なので、そのシステムが簡単になる。
【００２７】
移動ロボットが３自由度の運動能力を持っていたとしても、本特許の、人間教示による地図作成の目的のためには、その３自由度を発揮することの利益はない。したがって、本発明はすべての移動ロボットに適用可能である。
【００２８】
ロボットが人間を追跡するためには、センサは人間の動作を検出して、ロボットが適当な追跡運動を実行するための情報を返さねばならない。運動の自由度が２個しかないので、センサは"２自由度の運動コマンド"CMを返すだけでよい：
【００２９】
【数３】
2010507169.tif 000005
【００３０】
ここで、cv は平行移動速度 v を制御するための変数であり、cω は回転速度 ω を制御するための変数である（図２）。後述するように、２自由度の運動コマンド CM は任意のセンサの機能２０３１と運動機能２０３２の間の標準インターフェイスとなるように特に定義されている。
【００３１】
グラフと地図の定義：グラフを活用して作業領域を表現していつる点が、本発明のもう一つの特徴である。グラフGは、“頂点”の集合Vと“辺”の集合Eの組(V, E)である。頂点には作業領域内の世界座標系で表された点 (x, y) が関連している。辺は相異なる頂点、P と Qの組 (P, Q) である。これらの２頂点をこの辺の"端点"と呼ぶ。(P, Q) が辺ならば、(Q, P)も辺である。もしk = 0, … , n-1について、(Pk, P k+1)が辺であれば、頂点の系列H = (P0, P1, … , Pn) (n-1)は"経路″と呼ばれる。経路H においてP0 = Pn かつ n≧2であれば、Hは"サイクル”と呼ばれる。あるサイクルにおいて、その系列内の全ての頂点が、最後のものを除いて相異なるときは、そのサイクルは"単純サイクル"と呼ばれる。
【００３２】
サイクルH 中の辺は有限の領域を囲む。その領域をH の"閉領域”と呼ぶ。一つのグラフ中の２つの単純サイクルは、もしそれらの閉領域に共通部分が存在しないとき、それらは互いに"独立"である、といわれる。ある辺について、２個の独立なサイクルが存在して、その辺がその両者に属するときは、その辺は“内部辺”と呼ばれる; そうでないときは、 “境界辺”と呼ばれる。ある頂点Pにおいて、境界辺Eが存在して、PがEの端点であるとき、Pは “境界頂点”と呼ばれる。境界頂点でない頂点は “内部頂点”と呼ばれる。
【００３３】
一つのグラフ中の全ての境界辺はサイクル、“境界サイクル”Hbを構成する。任意のグラフGにおいて、二個以上の境界サイクルが存在する。与えられたグラフGにおいてすべての頂点と辺をカバーする経路は複数個ある。後述のロボットへの教示において、どの経路を用いるかは、教示する人間に完全に任されている。しかしながら、G 中の境界サイクルを最初にカバーすることが一般に望ましい。その境界サイクルでカバーされなかった頂点と辺は、後でカバーすればよい。その場合、境界頂点の位置は他の頂点の位置決めをするためのランドマークとして働く。
【００３４】
本発明は、ある作業領域Aが与えられたとき、人間がまず次のグラフGを定義することを提唱する：
【００３５】
【数４】
2010507169.tif 000006
【００３６】
このグラフGはAの中に埋め込まれており、Vは頂点の集合、Eは辺の集合である。このグラフGは領域Aの幾何学的特徴を適切に反映するものでなければならない。地図生成プロセスの最終出力は次の地図ファイルZである：
【００３７】
【数５】
2010507169.tif 000007
【００３８】
ここでRV はVに属する頂点の記録の集合、RE はEに属する辺の記録の集合である。これらの２集合は地図生成のプロセスにおいて、段階的に生成される。この地図データは、グラフ構造を基礎にしているので、コンパクトであり、かつ整理された構造となっている。
【００３９】
頂点記録のデータ構造：頂点記録は、頂点番号、アンカー、頂点座標系、名前（ストリング）を含んでいる。この記録は一般に、vertex(ｎ, anchor, p, name)の形式をとる。これを簡単にvertex(ｎ)と表すことがある。各頂点に付けられた固有の頂点番号ｎ（＝０，１，２， …）はその頂点が生成された順序を表している。第ｎ番目の頂点をvertex(n)と表すことがある。ある頂点の"アンカー"は、その頂点がvertex(ｍ)に依存して位置決めされたときには、ｍに等しい。ある頂点が新たに生成されたときは、そのアンカーは∞と定義されるが、それは、その位置が他の頂点の位置情報に依存してはいないことを意味する。唯一の例外はvertex(0)であって、そのアンカーは０と定義される。アンカーの値が∞である頂点を“アンカーレス”と呼ぶ。そうでない頂点を“アンカー付き”と呼ぶ。地図生成セッションが進行するにつれて、頂点記録中の位置とアンカーはローカリゼーション・タスク２０６によって修正される。地図生成セッションの最後には、すべての頂点のアンカーは０となる。すべての頂点の名前は人間によって与えられる。全ての頂点の名前の集合は人間とロボットによって共有される記号的知識であって、これによって、人間とロボットの間で知的で能率の良いコミュニケーションが可能となる。
【００４０】
辺記録のデータ構造：辺記録は、辺番号、２端点の頂点番号、辺の距離、左右両側の物体の幾何学的特徴を含む。ここで言う距離は、２端点間のユークリッド距離である。
【００４１】
作業領域とそのグラフの例：作業領域の例３つと、それらのグラフの例を挙げる。
【００４２】
図３に示した作業領域A1 110 は掃除すべき領域である。この作業領域は一部分だけが壁で区切られている。この作業領域A1は、そこに埋め込まれたグラフ
G1111 によって記述するのが適当である(図4)。このグラフはG1= (V1, E1) = ({A, B, C, D, E}, {(A, B), (B, C), (C, D), (D, E), (E, A)})として定義できる。このグラフには、内部辺は存在しない。たとえば、H1b= (A, B, C, D, E, A)はG1 111における境界サイクルである。時計回りの、あるいは、右手法で描いた境界サイクルは (A, E, D, C, B, A)であり、これも、後述の地図教示法のために有効に働く。実際の場面では、各頂点に、A, B, Cなどでなく、内容を意味するような名前をつけることができる。
【００４３】
図５に示す環境の中には、２つの作業領域 A2 およびA3 が示されている。A3 130は到達可能な部分全てを含む作業領域である。他方、A2120 はA3 の左半分の領域で、点線で区切られている。移動ロボットは、人間側の要求次第で、全領域A3、あるいは、部分領域 A2を認識することが期待されている。
【００４４】
図６が示すように、作業領域A2 120はグラフ G2 121, によって記述できる: G2 = (V2, E2) = ({A, B, C, D, E, F, G}, {(A, B), (B, C), (C, D), (D, E), (E, F), (F, G), (G, A), (D, G)})。
【００４５】
グラフG2 121には、(A, B, C, D, G, A) 122 および (G, D, E, F, G) 123なる、独立なサイクルがある。これらは辺(D, G) 124を共有しているので、この辺は G2における内部辺となる。内部辺は他には存在しない。すべての境界辺を使って、H2b = (A, B, C, D, E, F, G, A)なる境界サイクルを作ることができる。この中に、内部辺 (D, G)は含まれていない。
【００４６】
図７に示すように、作業領域A3 130 はグラフ G3 131によって記述できる: G3 = (V3, E3) = ( {A, B, C, D, E, F, G, H, I, J, K, L, M}, {(A, B), (A, L), (B, C), (C, D), (C, G), (D, E), (D, F), (G, H), (G, M), (H, I), (I, J), (J, K), (J, M), (K, L), (L, M)})。グラフG3131 には (A, B, C, G, M, L, A) 132, (G, H, I, J, M, G) 133, (J, K, L, M, J) 134なる、３つの互いに独立なサイクルが存在する。辺 (G, M), (J, M), (L, M)は、それぞれ上記のうち２個のサイクルによって共有されているので、内部辺である。グラフG3 131における境界サイクルの一例はH3b= (A, B, C, D, E, D, F, D, C, G, H, I, J, K, L, A)である。このサイクルは上記の内部辺を含んでいない。
【００４７】
解決方法の特長：与えられた作業領域Aを記述するために、その領域に埋め込まれ、その領域を記述するグラフG を人間が定義する点が第一の特長である。すべての地図生成過程はこのGに基づいて行われる。人間がこの問題解決に深く関与する点に本発明の新規性がある。ロボットにとっては、作業領域の幾何学的関係を自ら理解することは極めて難しい。そこを人間が助ける。グラフの複雑さには上限がないから、この方法はどんなに複雑な作業領域をも取り扱える。
【００４８】
同一の環境において、人間がロボットに２つ以上の作業領域を定義する必要性が生ずるかもしれないが、本発明を用いるとこれが可能になる。例えば、一つのオフィス内に、掃除ロボットのために２つのことなる作業領域を、“weekday” および “weekend” と呼ぶことができる。地図中の（作業領域中の）全ての名前の集合は、人間とロボットに共有される知識であり、それが、両者間の知的で能率の良いインターフェイスとなる。これも、本特許の主たる利点の一つである。
【００４９】
人間教示による地図作成方法２００：本特許のトップ・レベル・アルゴリズムは図８のフローチャート２００に示されている。
【００５０】
タスク２０１：与えられた作業領域Aを記述するグラフGを人間が定義する；これが出発点である。グラフG中の全ての頂点と辺はその作業領域の内部になければならない。このグラフGは２次元の広がりをもつ領域Aを最も良く代表するように選ばなければならない。一般に、頂点を、T字路、十字路、曲り角、行き止り点、境界点、などに割り当てるのがよい。というのは、これらの点は幾何学的に重要な意味をもつからである。任意の２頂点について、将来作業を行う段階で移動ロボットが両者を結ぶ線分に沿って移動する必要がある、と人間が判断した場合には、両者間に辺を定義する。
【００５１】
タスク２０２：この初期状態において、移動ロボットはグラフG中の
homeと仮に呼ばれる初期頂点に置かれる。この地図生成プロセス全体の初期化として、このhomeの頂点記録vertex(0, 0, p, name) が、少なくとも、頂点番号０、アンカー０、この頂点の座標系p,人間によって与えられた名前name と共に生成される。 
【００５２】
タスク２０３：人間が一つの辺に沿って前進し、その間ロボットがその人間を追跡するが、次の頂点に達すると停止する。どの経路を選ぶかについては、人間に任されている。生成された地図の精度はこの経路の選択に依存する。人間とロボットのチームによるこのタスク実行は、この辺の端点の一つ（頂点）に達すると終わる。このタスク２０３は後に更に詳しく述べる。
【００５３】
タスク２０４：人間とロボットのチームが立ち止まった頂点は２種類のいずれかに属する。そのチームがその頂点を始めて訪れた場合か、あるいは、その頂点に以前訪れており、今回重ねて訪れた場合である。いずれであるか知るによって、ロボットはグラフの構造を知ることになる。
【００５４】
この頂点が新しい場合は、人間はm=-1を伝えることによってその事実を明示する；これは正当な頂点番号ではないから、この頂点が新しい、という意味に使える。もし、このチームがこの頂点に既に訪れたことがあり、頂点記録vertex(m)としてすでに生成されている場合には、人間がその事実を、その頂点番号自体m (≧0)を伝えることにより、ロボットに教える。
【００５５】
タスク２０５：この頂点は新しいものであり、この場合頂点記録が生成される。ロボットは人間から、その名前を教えてもらう。それにより、ロボットは頂点記録vertex(nv, ∞, p, name)を生成する：ここで、nvは頂点番号であり、アンカーは∞であり、現在のロボットの位置と方向はpであり、人間から授けられた名前はnameである。 
【００５６】
タスク２０６：ロボットが既に存在するvertex(m)に再び戻ってきたとき、制御がここに来る。あらたな頂点記録は生成されない。その代わりに、ロボットと頂点のために位置・方角補正が実行される。この詳細については後述する。
【００５７】
タスク２０７：この場合、現頂点は新たなものではないが、この最後の辺は新しいものである場合がある。この判断を下すのに十分な情報をロボットは持っている。最後の辺が新しい場合には、この後、タスク２０８に制御を移して、辺記録を生成する。
【００５８】
タスク２０８：ロボットは辺記録を生成する。最も重要な情報は、その２端点の頂点番号であり、これがグラフGの連結関係を定義する。左右側方の幾何学的特徴も貴重である。
【００５９】
タスク２０９：グラフG中の全ての辺をカバーしたかどうかを、人間がロボットに教える。人間だけがこのことを知っている。
【００６０】
タスク２１０:最後のタスクとして、ロボットはGの地図Z(G)を出力する。この地図は頂点記録の集合RV と辺記録の集合RE とを含んでいる。前者はタスク２０２および２０５で生成され、タスク２０６で修正されている；後者はタスク２０８で生成されたものである。この地図Z = (RV, RE)には固有の名前がつけられた上で出力される。この地図は後にその名前で呼び出される。
【００６１】
タスク２０６:ロボットとvertex(m)に関する位置・方向の補正(ローカリゼーション)：ロボットは、以前生成されたvertex(m)に達したところである。人間が教示した頂点の同定により、ロボットは曖昧さなく、Gの結合関係を理解することになる。さらに、ロボットは自己位置・方角を補正し、アンカーを修正する。まず、“オドメトリ誤差補正量” e が（頂点ローカリゼーションの準備として）計算され、次に、ロボット位置が補正される：
【００６２】
【数６】
2010507169.tif 000008
【００６３】
ここで(x, y)はロボットの現位置であり、(xm, ym )       は頂点記録vertex(m)に記録された頂点位置である。
【００６４】
【数７】
2010507169.tif 000009
【００６５】
この意味は次のとおりである。前回の頂点位置 (xm, ym), はその時点でのロボットの位置なのであるから、その後のオドメトリ誤差を含まない。従って、この旧位置が現ロボット位置(x, y)よりも‘より正確である’ という判断を下すのである。 
【００６６】
さて、頂点に対するローカリゼーションについて述べる。人間―ロボットチームが実行した経路のHの最後の部分を考える：
【００６７】
【数８】
2010507169.tif 000010
【００６８】
このチームはvertex(n)を生成しようとしていたが、実際のとことはそれが, vertex(m) に等しいことが判明し、新しい頂点は生成されなかったのである。この系列をvertex(n-1)から逆に辿り、vertex(m)自身とアンカーつきの頂点のいずれが先に現れるかを調べる。
【００６９】
(場合I: vertex(m) 自身が先に来る) この場合この経路は:
【００７０】
【数９】
2010507169.tif 000011
【００７１】
となる。ここでn ≧ m+2であり、最初と最後の頂点を除いて、全ての頂点はアンカーレスである。この経路Hはサイクルである。
【００７２】
(場合II: アンカー付きの頂点が最初に来る場合) この場合はさらに２つのサブケースに分かれる。
【００７３】
最初のサブケースは式（８）におけるvertex(n-1)が実際アンカー付きである場合である。このサブケースにおいては、H中にアンカーレス頂点が存在しないので、以下の頂点ローカリゼーションは必要がない。
【００７４】
第二のサブケースは経路が
【００７５】
【数１０】
2010507169.tif 000012
【００７６】
のようになる場合である。ここでvertex(i) はアンカー付きで, k≧0であり, その間の全ての頂点はアンカーレスである。 
【００７７】
両サブケースにおけるローカリゼーション・アルゴリズムは殆ど同一なので、最初のサブケースについて述べる：式（９）のサイクルH中の辺の個数uは
【００７８】
【数１１】
2010507169.tif 000013
【００７９】
である。このuと、式（６）のオドメトリ誤差補正量e を用いると、このサイクル中の各頂点のための補正量は次のように評価できる：
【００８０】
【数１２】
2010507169.tif 000014
【００８１】
これらの値は（９）式のH中の各頂点の位置に加算され、補正される。ここで、 0 = (0, 0)である。このようにして、Hを辿っている間に累積されたオドメトリ誤差はこのサイクル中の各頂点に等しく分配される。H中の全ての頂点のアンカーとして、min(m, anchor(vertex(m)))なる値が代入されるが、vertex(m) のアンカー自体は変わらない。 
【００８２】
これまでのところ、サイクルHの中に “内部サイクル” は存在しないと仮定してきた。 ここで、図９に示すように、H 140中に内部サイクルHI141が存在する場合を考える。
内部サイクル141 はvertex(h) 142から始まっている。この内部サイクルHI 141は、より大きなサイクルH 140が閉じる前に閉じている。従って、HI 141のためのローカリゼーション・タスク 206が実行されており、HI 141中の頂点のアンカーはvertex(h) 自身を除いてｈのアンカーの値と等しくセットされている。 より大きなサイクルH 40に対するローカリゼーションはこの内部サイクルの頂点たちを除いて実行される。その後、式（１２）中のvertex(h)に対する補正値はHI 41中の各頂点に対して、一様に重畳される。さらに、内部サイクル中の各頂点のアンカーはvertex(h)のアンカーと等しくセットされる。このタスク２０６は、このようにして、入れ子になったサイクルに対し、帰納的に適用される。
【００８３】
このローカリゼーション・アルゴリズムの有効性と安定性は本特許の最重要な特長の一つである。人間はこのローカリゼーションにおいて、極めて重要な役割を果たしている；そうでなければ、このレベルの成果は決して得られない。人間教示地図生成アルゴリズム２００とローカリゼーション・アルゴリズム２０６が前出の例題のグラフに対して、どのように働くかを示す。
【００８４】
図４に示したグラフG1 111においてチームが境界サイクルを辿ると、そのサイクルに対して、ローカリゼーション・タスク２０６が実行される。全て頂点の位置はホームの位置を基準として決められるので、そのアンカーはすべて０となる。内部辺は存在せず、全ての辺はカバーされた。
【００８５】
図６に示されたグラフG2121において境界サイクルがカバーされると、ローカリゼーション・タスク２０６が実行される。その後で、内部辺(G, D)124が辿られて、辺記録が生成される。しかしながら、アンカーレスの頂点は存在しないので、ローカリゼーションは実行されない。
【００８６】
図７に示されたグラフG3 131においては、まず境界サイクルが辿られる。この境界サイクルにはいくつかの内部サイクルが含まれている： (D, E, D), (D, F, D), (D, E, D, F, D), および(C, D, E, D, F, D, C)である。ローカリゼーション２０６はこれらの内部サイクルと境界サイクルにたいして帰納的に実行される。これらのサイクルは入れ子構造になっていることに注意したい。その後で内部辺がカバーされる。内部経路(J, M, G)が選ばれたと仮定しよう（この内部経路は直線状なので、側方物体の特徴抽出に有利である）。 すると、この経路実行の最後で、タスク２０６が実行されて、その結果、頂点Mがローカライズされ、そのアンカーは０となる。最後に、残った内部辺 (M, L)がカバーされてその辺記録が作られる。 
【００８７】
人間が辺に沿ってロボットを導くタスク２０３：このタスクのフローチャートが図１０に示されている。
【００８８】
タスク２０３０:ロボットは人間が前進し始めるまで待つ。
【００８９】
タスク２０３１：図２に示されたように、ロボットは人間の動作をセンスして、２次元運動コマンドCM を検出する。このタスク２０３１については以下に詳しく述べる。
【００９０】
タスク２０３２：運動コマンドCM を用いて、ロボットはその２自由度運動を図２に示されたように実行する。このタスク２０３２については以下に詳しく述べる。
【００９１】
タスク２０３３:この辺を辿っている間に、ロボットは左右の側方物体の幾何学的特徴を抽出する。このタスク２０３３については以下に詳しく述べる。
【００９２】
タスク２０３４：ロボットは次のタイマー割り込みを待ち、それが来るとこのタスクを離れる。
【００９３】
タスク２０３５人間がまだ動いている場合には、ロボットは前記の４タスクを再び繰り返す；そうでなければ、タスク２０３を完了する。
【００９４】
運動コマンドの検出タスク２０３１：人間が辺を辿っている間、ロボットはその人間を追跡している。人間を追跡するためには、ロボットは人間の行動をセンサシステムによって検出する。このタスク２０３１は、標準インターフェイスとして、図２に示されるように、サンプリング時間毎に、２次元運動コマンドCM = (cv, cω)を出力する。典型的な４つのセンシング方法についてここで述べる：タスク 20310: 人間位置検出法、タスク20311: 力・トルク検出法、タスク20312: 力検出法、および、タスク20313, ジョイスティック法である。
【００９５】
(タスク 20310) 人間位置検出法: 本法においては、移動ロボットは人間の位置を検出する。これは非接触検出法である。図１１A,  図１１B, 図１１Cに示されるように、人間１０がロボット１の前面に立っているとする。いずれの方法においても、センサシステムは、ロボット座標系４における人間の位置(xh, yh)を検出する。
【００９６】
図１１Aにおいては、複数個の超音波側距器２０が移動ロボット１の前面の周囲に取り付けられている。このセンサシステムが、測距データを解析することにより、人間の位置を検出する。図１１Bにおいては、レーザ測距器２１がロボット１の前面に取り付けられており、人間の位置を検出する。
【００９７】
図１１Cにおいては、人間の位置は複数個のセンサの協調によって検出される：SL, SR, およびSは超音波送受システム２２である。SLとSR はロボットの左前方と右前方の角にそれぞれ装着されており、第３のシステムSは人間１０が持っている。人間の位置(xh, yh) は次の３ステップによって求められる：(1) SLとSR は時刻T0に同時に超音波を送信する。 (2) SがSL または SRから最初の超音波を受信したときに、S はただちに超音波を送信し返す。(3) SL はその返信の受信時刻 TL を記録する。 SR はその返信の受信時刻 TR を記録する。ロボット１はロボット座標系でのオンボード船さシステムの位置と超音波の速度を知っている。従って、三角測量法をもちいると、ロボットはその位置(xh, yh)を計算できる。
【００９８】
上の３方法のいずれを用いても、位置ロボット座標系における人間の位置(xh, yh) が求まる。この直角座標はつぎの標準的な変換法により、極座標 (dh, ρh)に変換できる： 
【００９９】
【数１３】
2010507169.tif 000015
【０１００】
ここで、dh はロボット座標系の原点４から人間までの距離であり、ρhはロボット座標系４内での、人間への方向ある。この極座標はさらに２次元運動コマンドCMに変換される：
【０１０１】
【数１４】
2010507169.tif 000016
【０１０２】
ここでDN は “中立距離” であり、 g0 および g1 は定数の変換係数である。ロボットが追跡しているとき、もし人間が停止すると、ロボットはこの中立距離 DN を保って、いずれ停止する（タスク2032がこの停止機能を、そのタスクの一部として実行する）。かくして、これらのセンサが、人間が前面にいる情況で使われるかぎり、２次元運動コマンドCM が検出される。
【０１０３】
(Task 20310の続き): 人間がロボットを導くのに、ロボット前方以外に立ちたい場合がある。つぎの２例においては、人間は自分をロボット１の左側に立っている（右側の場合も同様のアルゴリズムで扱える）。レーザ・レンジ・ファインダー２１は、図１２Aに示すように、人間の “実際の位置” (xa, ya) 11 を検出する。図１２Bにおいて、SF, SR, および S は、それぞれ図１１Cで紹介された超音波送受システム２２である。SF および SR はロボット１の左前方と左後方にそれぞれ装着されており、三番目のシステムSは人間１０が持っている。図１１Cに示された超音波システムに採用されたものと同様な方法によって、人間の実際の位置(xa, ya) 11 が得られる。 
【０１０４】
この、人間が左側にいる場合においては、もし人間の実際の位置(xa, ya)が(XT, YT)に等しければ、ロボットが動かない、つまりM = (v, ω) = (0, 0)となるような(XT, YT)が存在する。この位置を “中立位置” と呼ぶ(この場合にはYT>0である)。これらの定数を用いて、人間の実際の位置 (xa, ya)を人間の “仮想位置” (xh, yh) に変換する: 
【０１０５】
【数１５】
2010507169.tif 000017
【０１０６】
この値(xh, yh)にたいして、式（１３）、（１４）を再び適用して、２自由度の運動コマンド CM を次のタスク２０３２のために求めることができる。
【０１０７】
(タスク２０３１１)力・トルク検出法：本法においては、人間は力・トルク・センサを通して移動ロボットに接触し、そのセンサは人間がロボットに加えた力とトルクを検出する。その人間はロボットに力とトルクを加えるけれども、人間が力任せにロボットを引いたり、押したり、回転するという意味ではない。ロボットは微小な力とトルクを情報として検出し、その情報が運動制御アルゴリズムに伝えられて重い本体を動かすことになる。
【０１０８】
力がロボット本体の方向に加えられれば、ロボットの平行移動速度vを増大させるように働く。それとは反対方向に加えられれば、ロボットを後退させるように働く。水平面内の、垂直軸まわりの反時計回りのトルクは、ロボット１を左に回すように働く；時計回りのトルクは右に回すように働く。
【０１０９】
このコンセプトを実現するために、 “センサユニット” を導入する。図１３Aに図示されたように、センサユニット３０は３つの部分が直列に左から右に組み立てられた装置である： (a) 移動ロボットに装着された左端の部分31、(b) 力・トルクセンサ32, および(c) 人間が保持するグリッパ 33である。部品(b) 32 は２変数を出力する：(1) このセンサユニットに加えられた力とロボット本体の方向３の向きをもつユニットベクターとの内積fh および (2) 垂直軸まわりのトルク成分qhである。 フルの６軸の力・トルク・センサを使用しても良いが、これらの２成分だけが、運動コマンドを得る目的には必要十分である。これらのセンサユニットにおいて、図には明示されていないが、力fh の方向はロボットの本体方向３と等しくなければならない。
【０１１０】
図１４Aはセンサユニット３０がロボット１の先端の取り付けられた実施例を表している。人間はグリッパ 33を保持して、ロボット１を誘導する。図１４Bは、センサユニットをロボットの左側に装着し、人間とロボットのチームが横並びで歩くもう一つの実施例である。
【０１１１】
もう一つの形式のセンサユニット３４を図１３Ｂに示す。前例を違うのはセンサユニットの (a)の部分だけである。この部分がグリッパ 35 になっており、腕を有するロボットがこれを保持する。 両者がグリッパを掴むことによって、人間がその意図を力とトルクによって伝えることができる。
【０１１２】
図１３Ｃに示す３番目のセンサユニット３６は、(a)部分のグリッパ３７が２個あることが異なっており、ロボットは二本の腕でこれを保持する。人間はロボットの前に立ち、グリッパ３３を保持し、ロボットを誘導する。 
【０１１３】
どのセンサユニットにおいても、力とトルクの組 (fh, qh) が得られるこの組は次式によって２次元運動コマンドに変換される：
【０１１４】
【数１６】
2010507169.tif 000018
【０１１５】
ここで、g2 および g3 は正の変換定数である。この２次元運動コマンド CM がタスク 2031の出力となる。
【０１１６】
(タスク20312) 力検出法：図１５に示されるように、ロボット１上に力センサ４１が装着されており、その位置はロボット座標系４において(a, 0) (a>0)とする。弾性のある紐４０の一端が、この力センサ４１に結び付けられており、他端は人間が保持し、引っ張ることにより、ロボットを誘導する。つまり、人間の意図はこの紐４０を通して伝えられる。ロボットが前進して欲しければ、人間はこの紐を引く；止まって欲しければ、引く。ロボットが左か右に回転してほしければ、紐をその方向に引く。
【０１１７】
ロボットに加えられた力の水平成分４２は、力センサ４１によって２つの直角成分に分解される；ロボット座標系４におけるＸ方向成分 fx 43 とＹ方向成分 fy 44 である。 この２つの力成分が次式によって、２次元運動コマンドに変換される：
【０１１８】
【数１７】
2010507169.tif 000019
【０１１９】
ここで、 g4 と g5 は正の変換定数である。この２次元運動コマンドCM がタスク 2031の出力となる。
【０１２０】
(タスク 20313) ジョイスティック法：人間が、ロボットと結合されてはいないジョイスティックを通して、移動ロボットと通信する。ジョイスティックの変位出力のＸ成分xj とＹ成分yj がロボットに通信路を通して伝達され、次式によって２次元運動コマンドに変換される：
【０１２１】
【数１８】
2010507169.tif 000020
【０１２２】
ここで、 g6 と g7 は正の変換定数である。かくして、タスク20313は２次元運動コマンドを次のタス2032へ送る。
【０１２３】
タスク2032: 運動コマンドの実行: このタスクの目的は、図２に示されたタスク２０３１の出力である、標準化された２次元運動コマンドCM = (cv, cω)が与えられたときに、その運動を実現することである。このタスク2032は２つのサブタスクから成っている: タスク20320はcv を用いて平行移動速度vを制御するタスクであり、タスク20321はcωを用いて回転速度ωを制御するタスクである：
(タスク 20320) 平行移動速度制御：平行移動速度vのための、典型的なフィードバック制御アルゴリズムは次のとおりである:
【０１２４】
【数１９】
2010507169.tif 000021
【０１２５】
【数２０】
2010507169.tif 000022
【０１２６】
ここで、αは加速度、 dt はサンプリング時間間隔, A0, A1, A2 は正のフィードバックゲインである。記号 “=” はこの２式については代入を意味する。すなわち、平行移動速度は２回の積分で得られる。この積分計算によって、ロボットの平行移動速度制御は極めて滑らかなものとなる。 
【０１２７】
この規則によって、 cv>0 (位置検出法ではdh>DN 、力検出法では fh>0 )ならば、ロボットはいずれ前進する。この状態では、人間はロボットを “pull” すると言われる。 一方、 cv<0ならば、ロボットはいずれ後退する。この状態では、人間はロボットを “push” する、と言われる。 
【０１２８】
人間がロボットを“pull”しているときに、停止すると、ロボットは減速し、いずれ停止する。しかし、センサの出力には揺らぎがあり、また制御には遅れがあるので、ロボットの停止動作はきれいにはいかない。その上、式（１９）と（２０）で表される入力cv の速度vに対する効果は正負の方向に対して対称的であるから、真に停止する前に、ロボットは振動気味に振舞う。
【０１２９】
しかし、この対称的な速度制御の振る舞いが望ましくない場合がある。本特許が必要としている、人間がグラフの辺に沿ってロボットを誘導するタスクは、その場合の一つである。ロボットが後退することは不要であり、益がない。人間がやりたいのは、ロボットを“pull”するか、停止させることである。この要請を実現するための簡単な方法は、式（２０）を次で置き換えることである：
【０１３０】
【数２１】
2010507169.tif 000023
【０１３１】
これにより、ロボットは決して後退しない。この規則の下では、cvが負になると、ロボットはいずれ停止し、そこで安定する。
【０１３２】
同様にして、決して前進しないような動作が望ましい場合がある。この要請を実現する簡単な方法は式（２０）を次式で置き換えることである。
【０１３３】
【数２２】
2010507169.tif 000024
【０１３４】
これで、タスク２０３２０の説明を終える。
【０１３５】
(タスク 20321) 回転速度制御：cω を用いた、回転速度ωのための典型的なフィードバック制御アルゴリズムは次のとおりである: 
【０１３６】
【数２３】
2010507169.tif 000025
【０１３７】
【数２４】
2010507169.tif 000026
【０１３８】
ここで、ξ はω の時間微分 (回転加速度)、dt はサンプリング時間間隔、そしてB0、 B1、 B2は正のフィードバックゲインである。最後２式においては、記号 (=) は代入の操作を意味する。ωを得るためのこの２回の積分によって、回転速度の制御は極めて滑らかになる。もし、cω>0であれば (位置検出法においてロボットが人間を左側に検出したか、トルク検出法において版時計周りのトルクを検出したとき)、回転速度 ω ジはいずれ正となり、ロボットは左回転し始める；もしcω<0であれば、 回転速度ω はいずれ負となり、ロボットは右回転をし始める。いずれの場合でも、ロボット本体の方向は人間の方向と等しくなる。
【０１３９】
これで、タスク２０３２１の説明を終わり、かつ、２自由度運動制御アルゴリズム２０３２の説明も終わる。
【０１４０】
タスク2033: 辺に沿った側方の物体の特徴の抽出:  グラフの辺に沿って人間を追跡している間、ロボットは、その側方センサを用いて左右にある物体の幾何学的特徴を抽出することができる。辺のトラバースを終えたとき、この幾何学的情報を、生成する辺記録に蓄える。側方にある典型的な物体は壁とか家具である。
【０１４１】
典型的な側方物体特徴抽出法はソナーと最小二乗当て嵌めアルゴリズムを使うものである。図１６において、ロボット１に、水平面内、左方に向いたソナー２０が、距離d を返している。ソナーの反射を生成したと思われる物体上の２次元の点、ターゲット、の推定値をつぎのようにして求めることができる：Fをロボット座標系４とし、 S 20 をロボット座標系４におけるソナー座標系とする。座標変換 G = ((d, 0), 0) は S と “ターゲット座標系” T ２３の間の関係を表す。３つの座標系（座標変換）、F, S, および G,を合成することによって、ターゲット座標系２３を次のように求めることができる：
【０１４２】
【数２５】
2010507169.tif 000027
【０１４３】
ここで、記号 (#) は２次元座標変換の合成を意味する。この座標系T から位置を抜き出すことによって、“ターゲット位置” Tp が得られる。
【０１４４】
ロボットが動くとソナーは周囲の物体表面を走査することになり、ターゲット位置(Tp)の系列が得られる。この点列に対して、最小二乗当て嵌めアルゴリズムを適用することにより、線分を得ることができる。この抽象的かつ簡潔なデータは辺記録にぴったりと収まり、後に、ロボットを運行し、位置と方角の補正をするのに使える。
【０１４５】
人間が誘導した運動の記録：運動再生のために、あるいは他の目的のために、人間教示によって生成された運動を“運動ファイル” として出力することができる。これは“運動記録”の系列である。第ｎ番目の運動記録は(a) 平行移動速度vnおよび (b) 回転速度ωnを含む。ここで、ｎの変域が[0, N-1]であると仮定する。ここで、Ｎは正整数である。運動ファイルはハードウェアとは独立であることに注意して欲しい；ある移動ロボットの上で生成された運動ファイルを使って、異なるハードウェアを持つ、他のロボットの上で、その運動を再生することができる。
【０１４６】
人間が誘導した運動の再生：運動ファイルがあれば、元の２自由度の運動を、ファイル内の平行移動速度vn と回転速度 ωn を使って、正方向あるいは逆方向に再生することができる：
（０）正方向の運動再生：この再生セッションにおいては、運動M = (vn, ωn) をn = 0 からN-1まで実行する。再生された平行運動の向きは記録されたときの平行移動の向きと等しい。
【０１４７】
（１）逆方向の運動再生：この再生セッションにおいては、運動M = (-vn, -ωn) を n = N-1 から 0まで実行する。 再生された並行運動の向きは、記録されたときの平行移動の向きとは逆になる。
【０１４８】
２自由度運動M = (v, ω) の実現方法を、速度差制御方式の車輪アーキテクチャを用いた移動ロボットを例に用いて、図17に例示した。この移動ロボットは左駆動輪６０と右駆動輪６１を有する（キャスターは本図中には示されていない）。その左車輪速度vL と右車輪速度vR は M = (v, ω) から次のように計算できる:
【０１４９】
【数２６】
2010507169.tif 000028
【０１５０】
【数２７】
2010507169.tif 000029
【０１５１】
ここで、D は車輪間隔の半分の距離である。これらの車輪速度が実現できれば、元の２次元運動 M = (v, ω) が再生される。
【発明の効果】
【０１５２】
この発明の効果は次の通りである：
（１）作業領域の形状がどんなに複雑であっても、人間がグラフを使ってその領域を難なく表現することができる。これはロボットには難しい。
（２）人間がグラフ中のすべての辺と頂点をトラバースして、グラフ構造をロボットに実地で教えるので、ロボットがその構造を誤認する可能性がない。
（３）その際に、ロボットが領域の幾何学的特徴をセンサで抽出するので、最高度の精度を持つ地図が生成できる。
（４）ロボットにとって難しいことをすべて人間がやり、ロボットにとって容易に実行できることだけロボットに任せる。
（５）作業領域の要所々々の地点(すなわち、各頂点)の名前を人間がつけて、ロボットに教え、後に人間・ロボット間で知的で能率の良い会話をするのに使える。
（６）作成された地図はグラフ構造を取っているので、作業領域内での最適経路計画問題をダイクストラのアルゴリズムを用いて、極めて能率よく解くことができる。さらに、その解を使ってロボットを運行することができる。
（７）地図に作業領域の幾何学的特徴が記録されているので、その特徴を用いて、ロボット運行時に、ロボット自身の位置と方向の誤差を実時間で修正することができる。
（８）一度完成した地図の上に、さらに頂点と辺を付加することができる。この操作は何回でもできる。
（９）地図作成時と運行時に用いるロボットは同じものであっても、違うものであってもよい。地図はロボットのハードウェアにたいして、ほぼ独立である。ただし、両セッションで同じものを使うと、ローカリゼーションの結果がより良い。
（１０）地図のデータ量が小さいので、それをセーブし、取り扱うのが容易である。
（１１）グラフを利用した地図のデータ構造はロボット工学におけるスタンダードとなる。
（１２）同じ環境下において、作業領域が異なる２つの作業をロボットにさせたいことがある。その場合、別の名前をつけた２つの異なる地図を作ることが可能である。ロボットは作業毎に、対応した地図を効果的に使うことができる。
（１３）この人間教示による地図作成方法は、一般のロボットユーザにとっても容易に実行可能なので、ロボットを販売した後で、ロボット開発者が、ユーザのために地図を作成してまわる必要がない。
（１４）必要とあらば、毎日新しい地図をロボットのために作成するこさえもできる。
（１５）この地図生成法は、車輪型ロボットにも、人間型ロボットにも適用できる。
（１６）わずか２個の変数を出力するセンサを使うと、人間がロボットと交わって、２自由度の運動をさせることができる。この機能は、車輪型ロボット、人間型ロボット、いずれにも適用できる。
（１７）床や環境に、空間理解を助けるためのマークなどを貼る必要が無い。
（１８）地図を一回作るための費用は殆ど無視できる。
（１９）一度作った地図を保存しておいて、後に、いつでも使うことができる。
【図面の簡単な説明】
【０１５３】
【図１】移動ロボットが平行移動速度v,  平行移動方向μ, および回転速度ω の３自由度を持つことを示す平面図である。
【図２】人間のアクションを検出して２自由度の運動コマンドCM = (cv, cω) を得るタスク 2031と、そのコマンドに基づいて２自由度の運動 (v, ω)を実行するタスク2032を示す概念図である。
【図３】より大きな作業領域から切り出した小さな掃除領域 A1を例示する図である。
【図４】図３の作業領域A1 を表現するグラフG１を示す。
【図５】移動ロボットのための作業領域例２つを示す。A3 は全領域であり、小さな領域A2 は点線で区切られた、半分の領域である。
【図６】図５に示された作業領域A2を代表するグラフG2 を示す。
【図７】図５に示された作業領域A３を代表するグラフG３ を示す。
【図８】人間教示による地図作成アルゴリズム２００の流れ図である。
【図９】内部サイクルHI 41を有するサイクルH 40を含むグラフを示す。
【図１０】人間がロボットを辺に沿って誘導するアルゴリズム２０３の流れ図である。
【図１１Ａ】人間の位置(xh, yh)を検出するための、複数個のソナーからなるシステムが前面に装着された移動ロボットの平面図である。
【図１１Ｂ】人間の位置(xh, yh)を検出するための、レーザ・レンジ・ファインダが前面に装着された移動ロボットの平面図である。
【図１１Ｃ】人間の位置(xh, yh)を検出するための、センサシステムSLおよび SR を装着した移動ロボットの平面図である。人間は第３のセンサシステムSを保持している。
【図１２Ａ】人間の位置(xa, ya)を検出するための、レーザ・レンジ・ファインダ２１が左側面に装着された移動ロボットの平面図である。
【図１２Ｂ】人間の位置(xa, ya)を検出するための、センサシステムSF および SRが左側面に装着された移動ロボットの平面図である。
【図１３Ａ】力・トルク・センサユニットの構成図である。
【図１３Ｂ】別の形式の力・トルク・センサユニットの構成図である。
【図１３Ｃ】更に別の形式の力―トルク・センサユニットの構成図である。
【図１４Ａ】力・トルク・センサユニットを前面に装着したロボットの平面図である。
【図１４Ｂ】力・トルク・センサユニットを左側面に装着したロボットの平面図である。
【図１５】力センサを装着したロボットと、それを紐で制御している人間の位置関係を表す平面図である。
【図１６】側方ターゲットを検出するソナーが装着された移動ロボットの平面図である。
【図１７】速度差制御形式の移動ロボットの平面図である。
【発明を実施するための形態】
【０１５４】
本特許を実施する最良の形態は、図11Aに示した、ソナーを前面に配置した２自由度の車輪型ロボット上に実施したものである。このように配置すると、人間を追跡するためと、側方の物体の幾何学的特徴を抽出するためと、両方の目的のために、これら７個のソナーが効果的に働く。この種のプロトタイプロボット上で本発明のアルゴリズムを実施した結果、次の結果が得られた：（１）ソナーは安価である、（２）ソナーデータの帯域幅はかなり狭いが、それでも、動いているロボットが、これも動いている人間の位置をソナーは動的に認識することができた、(3) 人間とロボットからなるチームが作業領域の精確な地図を作成することができた、（４）この教示による地図作成が、７歳の子供にも可能であった。
【実施例】
【０１５５】
上記の、最良の形態において、ソナーの代わりに、レーザー・レンジ・ファインダーを用いたロボットにたいして、本特許を実施することができる。
【０１５６】
上記２つの実施例において、車輪型でなく、人間型のロボットにたいして、本特許を適用することができる。
【０１５７】
自動車の運動制御に請求項１を応用すれば、通常とは全く違った方法で車を動かすことができる。自動車の前端に２軸の力センサ(図１５)を付け、人がその車に乗らずに、その車の前に立ち、その力センサに軽く触れることによって、その運動を制御することができる。Ｘ方向（自動車本体の進行方向）の力成分で、車のｖを制御し、Ｙ方向の力成分で、ωを制御する。そうすると（１）車の傍に立った人が、車を平行駐車させることができ、（２）同じく、車の外に立ったひとが、非常に狭い車庫に車を納めることができる。その人にとっては、広い視野が得られるので、正確な制御ができるし、その制御方法は直感的で、誰にも理解しやすい。また、（３）そうやって人間が動かした車の運動を、後に請求項７によって、再生し、引き戻すことができる。
【産業上の利用可能性】
【０１５８】
本発明は、個別の移動ロボットに、その作業領域を理解させる知能を授ける。従って、本発明は様々な移動ロボット製品に適用できる。例えば：(1) エンターテインメント・ロボット, (2) 教育ロボット, (3) 研究用の移動ロボットプラットフォーム, (4) 真空掃除ロボット, 床清掃ロボット, 警備ロボット, 知的車椅子、ほかのサービス・ロボット, (5) 知的ショッピング・カートと知的ゴルフカート, (6) 搬送ロボットと物体操作ロボットなどに適用できる。
【符号の説明】
【０１５９】
１  移動ロボット
２  世界座標系
３  ロボット本体の方向
４  ロボット座標系
５  ロボットのＸ座標
６  ロボットのＹ座標
７  ロボットの平行移動速度
８  ロボットの平行移動方向
９  ロボットの回転速度
１０  ロボットの前方に位置する人間
１１  ロボットの側方に位置する人間
２０  ソナー
２１  レーザ・レンジ・ファインダ
２２  センサシステム
２３  ソナーが捕らえたターゲット
３０  力・トルク・センサユニットの一例
３１  力・トルク・センサユニットの一端
３２  力・トルク・センサ
３３  力・トルク・センサユニットの一端にある握り部分
３４  力・トルク・センサユニットの一例
３５  力・トルク・センサユニットの他端にある握り部分
３６  力・トルク・センサユニットの一例
３７  力・トルク・センサユニットの他端にある２個の握り部分
４０  弾性のある紐
４１  ２軸力センサ
４２  紐の張力
４３  力のＸ成分
４４  力のＹ成分
６０  左動輪
６１  右動輪
１１０  掃除領域A1
１１１  グラフＧ1
１２０  作業領域A２
１２１  グラフＧ２
１２２  サイクル(A, B, C, D, G, A) 
１２３  サイクル(G, D, E, F, G)
１２４  内部辺（D，G）
１３０  作業領域A３
１３１  グラフ G3 
１３２  サイクル (A, B, C, G, M, L, A)
１３３  サイクル(G, H, I, J, M, G) 
１３４  サイクル(J, K, L, M, J) 
１４０  サイクル
１４１  内部サイクル
１４２  内部サイクルの基点
２００  人間教示による地図生成アルゴリズム
２０１  作業領域Ａを代表するグラフの、人間による定義ステップ
２０２  初期化ステップ
２０３  人間が辺に沿ってロボットを誘導し、頂点で停止するステップ
２０３０  人間が進み始めるのを待つステップ
２０３１  運動コマンドを検出するステップ
２０３２  運動コマンドを実行するステップ
２０３３  側方の物体の特徴を抽出するステップ
２０３４  次のサンプリング時刻を待つステップ
２０３５  人間が停止したかどうかを判断するステップ
２０４  この頂点が新しいものか、古いものかを人間が教えるステップ
２０５  人間が教えた名前を含む頂点記録をロボットが生成するステップ
２０６  ロボットと頂点をローカライズするステップ
２０７  辺が新しいものかどうかをロボットが判断するステップ
２０８  辺記録をロボットが生成するステップ
２０９  すべての辺をカバーしたかどうかを人間が教えるステップ
２１０  地図を出力するステップ
【図１】
2010507169.tif 000030
【図２】
2010507169.tif 000031
【図３】
2010507169.tif 000032
【図４】
2010507169.tif 000033
【図５】
2010507169.tif 000034
【図６】
2010507169.tif 000035
【図７】
2010507169.tif 000036
【図８】
2010507169.tif 000037
【図９】
2010507169.tif 000038
【図１０】
2010507169.tif 000039
【図１１Ａ】
2010507169.tif 000040
【図１１Ｂ】
2010507169.tif 000041
【図１１Ｃ】
2010507169.tif 000042
【図１２Ａ】
2010507169.tif 000043
【図１２Ｂ】
2010507169.tif 000044
【図１３Ａ】
2010507169.tif 000045
【図１３Ｂ】
2010507169.tif 000046
【図１３Ｃ】
2010507169.tif 000047
【図１４Ａ】
2010507169.tif 000048
【図１４Ｂ】
2010507169.tif 000049
【図１５】
2010507169.tif 000050
【図１６】
2010507169.tif 000051
【図１７】
2010507169.tif 000052
【手続補正書】
【提出日】平成21年10月16日(2009.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定の作業領域内における対象の運動を検出するステップと、
前記検出された運動から２自由度の運動コマンドを得るステップと、
ロボットの平行移動方向をロボット本体の方向に等しく保ちながら前記運動コマンドに基づいて平行移動速度と回転速度を制御してロボットの運動を実行するステップと、
からなる、ロボットが対象を追跡する方法。
【請求項２】
請求項１に記載の方法において、前記平行移動速度を非負に制限した方法。
【請求項３】
請求項１に記載の方法において、前記平行移動速度を非正に制限した方法。
【請求項４】
請求項１に記載の方法において、
更に、予め定められた運動制御サイクル毎に前記平行移動速度と前記回転速度とを含む運動記録を生成するステップと、
前記対象追跡動作の最後に、生成された運動記録の集合を出力するステップと、
を有する方法。
【請求項５】
請求項４に記載の方法において、
更に、前記運動記録の集合を用いて、前記対象追跡運動を再生するステップ、を有する方法。
【請求項６】
請求項４に記載の方法において、
更に、前記運動記録の集合を用いて、前記対象追跡運動を逆の向きに再生するステップを加えた方法。
【請求項７】
所定の作業領域内に埋め込まれたグラフの辺を辿る対象の運動を検出するステップと、
前記検出された運動から２自由度の運動コマンドを得るステップと、
ロボットの平行移動方向をロボット本体の方向に等しく保ちながら前記運動コマンドに基づいて、非負に制限された平行移動速度と回転速度を制御してロボットの運動を実行するステップと、
により前記対象を追跡しながら前記グラフの辺を辿るステップと、
前記グラフの辺を辿っている間にロボットが両側にある物体の幾何学的特徴を抽出するステップと、
前記辺を辿る動作が終わったときにそのグラフの頂点で停止するステップと、
ロボットが頂点で停止したときに当該頂点の番号を記録するステップと、
前記停止した頂点番号が新しいときに、頂点番号とアンカーと名前と頂点位置とを含む頂点記録を生成するステップと、
前記停止した頂点番号が既に存在しているときには、ロボットと頂点の位置方角の誤差を修正するステップと、
新たな辺を辿り終えたときに、頂点番号対と辺長と両側の物体の幾何学的特徴とを含む辺記録を生成するステップと、
最後に、生成された頂点記録の集合と生成された辺記録の集合とを含む情報をこの作業領域の地図として出力するステップとから成る、
ロボットが作業領域の地図を作成する方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動ロボットが与えられた作業領域の地図を作成する課題に関する。
【背景技術】
【０００２】
移動ロボットは次第に人々の日常生活に入り込んできた。エンターテインメント・ロボット、床掃除ロボット、警備ロボットなどの商業ロボットが手に入るようになっている。人間型ロボット（ヒューマノイド）は日本の研究所で安定した走行を見せている（例えばＷＯ／２００６／０６２９４８は、二足歩行ロボットに関する技術を開示している）。これらの自律ロボットにその環境を理解させようという努力が鋭意積み重ねられてきた。
【０００３】
文献ＷＯ／２００６／０４６０５３、ＷＯ／２００６／０４６０４９およびＷＯ／２００６／０４６０４４は、専用のハードウェアを用いて、決められた床の領域を清掃する方法を述べている。しかし、これらは、ロボットがどのような方法でその環境を認識するかについては言及していない。
【０００４】
別の文献ＷＯ／２００５／０９２６３２は、予め決められた間隔で床上に貼られた２次元バーコードを用いて、移動ロボットを運行する方法を開示している。しかし、余分なハードウェアを床に貼るのは、ユーザにとって、費用が嵩み、かつ時間が掛かる。
【０００５】
別の文献ＷＯ／２００５／０９８４７６は、ロボットに搭載された発光装置とその反射光を検出するセンサを用いて、ロボットの位置を推定する方法を開示している。しかし、この方法でどの程度の位置精度が得られるかは不明である上、この方法の応用可能性については限界がある。
【０００６】
また別の文献ＷＯ／９９／５９０４２およびＷＯ／２０００／０４３１８６は、作業領域の境界にマーカーを貼り、それを検出することにより、移動ロボットがその領域をカバーすることを可能にしている。しかし、マーカーを貼るという作業は高価で面倒であるから、応用面が限られる。
【０００７】
更に別の文献、ＷＯ／２００５／０８１０７４、ＷＯ／２００５／００６０９８およびＷＯ／１９９９／０２８８００は、移動ロボットがベース・ステーションにドッキングする方法を開示している。この方法はロボットがベース・ステーションの周辺の幾何学的関係を理解する助けにはなるが、作業領域全体の幾何学的関係を理解することは期待できない。
【０００８】
更に別の文献ＷＯ／２００１／０３８９４５は、複数台の移動ロボットを用いて、周囲の地図を生成する方法を開示している。しかし、ただ一台のロボットによってそれが可能ならば、はるかに有用である。
【０００９】
また別の文献ＵＳ／６００９３５９は、未知の屋内環境内の詳細な幾何３次元モデルを生成することによって地図を生成する方法を述べている。しかし、移動ロボットのオドメトリ（後述）誤差をどのようにして回避するのか、については述べられていない。
【００１０】
更に別の文献ＵＳ／６９６５２０９は、持ち運び可能な境界信号発生器を用いて、ロボットを特定の空間内に閉じ込める方法を開示している。しかし、そのようなハードウェア機器を用いない方法のほうが明らかに望ましい。
【００１１】
文献ＷＯ／８８／００４０８１およびＵＳ／４８２１１９２は、ノード地図を用いたロボット運行法について述べている。このノード地図は人間があらかじめ設計して、ロボットにデータとして与える。このノード地図の使用によってどのような利点が得られるかについては述べられていない。
【００１２】
従来、ロボット工学の研究分野においては、未知の作業領域の地図作成を目的として、Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ（ＳＬＡＭ）法が研究されてきた。この方法は、自立型の自律ロボットが未知の領域の地図を自力で生成するものと期待されている。
【００１３】
文献ＷＯ／２００４／０５９９００は、イメージセンサを用いたＳＬＡＭ法を開示している。別の文献ＷＯ／２００１／０７８９５１は、完全に未知の、予測できない、かつ部分的に動的で大規模な環境にいて、準最適な経路を発見するための方法を開示している。さらに別の文献ＵＳ／７０１５８３１は、視覚センサとＳＬＡＭ法を用いて地図を生成し、更新する方法を述べている。
【００１４】
しかし、ＳＬＡＭ法には以下のような限界がある。
（１）ロボットのオドメトリ機能が劣るために、生成される地図の精度に限界がある。
「オドメトリ」とは、移動ロボットがサンプリングサイクルごとの微小移動量を累積することにより、それ自身の座標系（（ｘ，ｙ），θ）の推定値を求める機能である。
（２）ロボットは、オドメトリの誤差の累積ために、複雑な作業領域では自己位置の同定が困難になり、そのために、複雑な領域の自律的地図作成は非常に困難になる。
（３）更に、この方法は地図作成における基本的問題に対する配慮をまったく欠いている。即ちロボットが、与えられた環境の中で、複数個の作業領域を取り扱わなければならない場合があるが、人間からの指示なしに、ロボットが自律的に異なる作業領域を知ることは決してできない。
【００１５】
移動ロボットが、曲率を制御することによって直線または円を追跡するアルゴリズムが文献ＵＳ／６１３４４８６において開示された。このアルゴリズムは、ｖ≠０である場合、つまり曲率が定義されている場合に有効である。しかし、本発明においては、この条件（ｖ≠０）は保障されていない。従って、本発明にこの先発明の手法を採用することはできない。
【００１６】
手動で駆動されるロボットの運動を記録するアルゴリズムが文献ＵＳ／６３１４３４１において開示されている。この先行文献においては、モーターの電源をオフにした状態で、人間の物理的な力によってロボットの運動が生成される。この運動生成手法は、ロボットが重いために人間がそれを手で動かすことが不可能であるときには、有効でない。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】ＷＯ／２００６／０６２９４８
【特許文献２】ＷＯ／２００６／０４６０５３
【特許文献３】ＷＯ／２００６／０４６０４９
【特許文献４】ＷＯ／２００６／０４６０４４
【特許文献５】ＷＯ／２００５／０９２６３２
【特許文献６】ＷＯ／２００５／０９８４７６
【特許文献７】ＷＯ／９９／５９０４２
【特許文献８】ＷＯ／２０００／０４３１８６
【特許文献９】ＷＯ／２００５／０８１０７４
【特許文献１０】ＷＯ／２００５／００６０９８
【特許文献１１】ＷＯ／１９９９／０２８８００
【特許文献１２】ＷＯ／２００１／０３８９４５
【特許文献１３】ＵＳ／６００９３５９
【特許文献１４】ＵＳ／６９６５２０９
【特許文献１５】ＷＯ／８８／００４０８１
【特許文献１６】ＵＳ／４８２１１９２
【特許文献１７】ＷＯ／２００４／０５９９００
【特許文献１８】ＷＯ／２００１／０７８９５１
【特許文献１９】ＵＳ／７０１５８３１
【特許文献２０】ＵＳ／６１３４４８６
【特許文献２１】ＵＳ／６３１４３４１
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明が解決しようとする課題は、移動ロボットが作業領域Ａの地図をいかにして生成するか、というものである。この課題は更に次の３つの副課題に分割できる。
（副課題１）ロボットがいかにしてＡの境界線を知るのか？
（副課題２）ロボットがいかにしてＡ内部の幾何学的特徴を知るのか？
（副課題３）ロボットがいかにしてＡの地図を生成するのか？
【課題を解決するための手段】
【００１９】
解決方法を述べる前に、（１）２自由度運動および２自由度運動コマンド、と（２）グラフおよび地図、についての定義を導入する。
【００２０】
２自由度運動および２自由度運動コマンドの定義
図１に示すように、世界直角座標系２が定義された平面上に、剛体移動ロボット１が置かれているとする。このロボットには「本体方向」θ３が本体上に定義されている。「ロボット座標系」（ＸＲ，ＹＲ）４はロボット本体上に貼り付けられ、そのＸ軸の方向はその本体方向と定義されている。さらにロボット座標系は世界座標系においてはＦ＝（ｘ，ｙ），θ）と定義される。ここで、ｘ５とｙ６は（ＸＲ，ＹＲ）の原点の世界座標系におけるＸ座標とＹ座標、θ３は、（ＸＲ，ＹＲ）のＸ方向の世界座標系における方向と等しい。一方、ロボットの各時点における運動は
【００２１】
【数１】
2010507169.tif 000053
【００２２】
と表される。図１に示されているように、ここで、ｖ７は「平行移動速度」、μ８はロボット座標系（ＸＲ，ＹＲ）でみた「平行移動方向」、ω＝ｄθ／ｄｔ９は「回転速度」である。
このロボット本体の平行移動はｖとμによって表される。この運動は３つの変数を持つので、ロボットの「３自由度運動」と呼ばれる。この平行移動方向μ８は−π／２＜μ≦π／２と規準化されるものとする。もしｖ＜０であれば、ロボットはμ＋πの方向に、速度｜ｖ｜で移動しているものと考える。多脚ロボットは通常この３自由度の運動能力を持っている。車輪型ロボットがこの３自由度の運動能力を持っている場合には、「全方向移動車」と呼ばれる。
【００２３】
仮にあるロボットの平行移動方向がつねにそのロボットの身体の方向と等しくなるように制限された場合、つまりμ＝０なる制限を受けた場合、式（１）であらわされる運動は
【００２４】
【数２】
2010507169.tif 000054
【００２５】
となる。この運動は２変数ｖおよびωしか含まないから、「２自由度の運動」と呼ばれる。自動車、自転車、三輪車、速度差制御車などの、通常の車両はこの制限された、２自由度の運動しかできない。これらの車両は側方向には運動できない。曖昧さを惹き起こさない限り、２自由度の運動をＭ＝（ｖ，ω）と表すことにする。
【００２６】
本発明において作業領域の地図を作成するのに、人間（ロボットが追跡する対象）がロボットを誘導して領域内を案内する。そのミッションのためには（仮にそのロボットが３自由度の運動能力をもっている場合でも）３自由度でなく２自由度の運動を使うほうが望ましい。その理由は以下の通りである。
（１）ロボットの身体の方向が、グラフの辺の方向と一致しているので、ロボットの左右、側方に装着されたセンサは側方の物体を真っ直ぐにセンスすることになる。ロボットのこの姿勢が側方物体の幾何学的特徴を抽出するのに最も望ましい。
（２）ロボットの前面が常に対象に向いているので、対象を検出するセンサの個数を最小にできる。
（３）対象追跡のセッションにおいて、ロボットが対象の検出に成功すると、ロボットは対象の方を向く。人間はそれを見て、ロボットが正常に機能していることが確認できる。
（４）対象検出センサの出力が２変数だけで十分なので、そのシステムが簡単になる。
【００２７】
移動ロボットが３自由度の運動能力を持っていたとしても、本発明の、人間教示による地図作成の目的のためには、その３自由度を発揮することの利益はない。したがって、本発明はすべての移動ロボットに適用可能である。
【００２８】
ロボットが対象を追跡するためには、センサは対象の動作を検出して、ロボットが適当な追跡運動を実行するための情報を返さねばならない。運動の自由度が２個しかないので、センサは「２自由度の運動コマンド」ＣＭを返すだけでよい。
【００２９】
【数３】
2010507169.tif 000055
【００３０】
ここで、ｃｖは平行移動速度ｖを制御するための変数であり、ｃωは回転速度ωを制御するための変数である（図２）。後述するように、２自由度の運動コマンドＣＭは任意のセンサの機能２０３１と運動機能２０３２の間の標準インターフェイスとなるように特に定義されている。
【００３１】
グラフと地図の定義
グラフを活用して作業領域を表現している点が、本発明のもう一つの特徴である。グラフＧは、「頂点」の集合Ｖと「辺」の集合Ｅの組（Ｖ，Ｅ）である。頂点には作業領域内の世界座標系で表された点（ｘ，ｙ）が関連している。辺は相異なる頂点、ＰとＱの組（Ｐ，Ｑ）である。これらの２頂点をこの辺の「端点」と呼ぶ。（Ｐ，Ｑ）が辺ならば、（Ｑ，Ｐ）も辺である。もしｋ＝０，…，ｎ−１について、（Ｐｋ，Ｐｋ＋１）が辺であれば、頂点の系列Ｈ＝（Ｐ０，Ｐ１，…，Ｐｎ）（ｎ−１）は「経路」と呼ばれる。経路ＨにおいてＰ０＝Ｐｎかつｎ≧２であれば、Ｈは「サイクル」と呼ばれる。あるサイクルにおいて、その系列内の全ての頂点が、最後のものを除いて相異なるときは、そのサイクルは「単純サイクル」と呼ばれる。
【００３２】
サイクルＨ中の辺は有限の領域を囲む。その領域をＨの「閉領域」と呼ぶ。一つのグラフ中の２つの単純サイクルは、もしそれらの閉領域に共通部分が存在しないとき、それらは互いに「独立」である、といわれる。ある辺について、２個の独立なサイクルが存在して、その辺がその両者に属するときは、その辺は「内部辺」と呼ばれる。そうでないときは、「境界辺」と呼ばれる。ある頂点Ｐにおいて、境界辺Ｅが存在して、ＰがＥの端点であるとき、Ｐは「境界頂点」と呼ばれる。境界頂点でない頂点は「内部頂点」と呼ばれる。
【００３３】
一つのグラフ中の全ての境界辺はサイクル、「境界サイクル」Ｈｂを構成する。任意のグラフＧにおいて、二個以上の境界サイクルが存在する。与えられたグラフＧにおいてすべての頂点と辺をカバーする経路は複数個ある。後述のロボットへの教示において、どの経路を用いるかは、教示する人間に完全に任されている。しかしながら、Ｇ中の境界サイクルを最初にカバーすることが一般に望ましい。その境界サイクルでカバーされなかった頂点と辺は、後でカバーすればよい。その場合、境界頂点の位置は他の頂点の位置決めをするためのランドマークとして働く。
【００３４】
本発明は、ある作業領域Ａが与えられたとき、人間がまず次のグラフＧを定義することを提唱する。
【００３５】
【数４】
2010507169.tif 000056
【００３６】
このグラフＧはＡの中に埋め込まれており、Ｖは頂点の集合、Ｅは辺の集合である。このグラフＧは領域Ａの幾何学的特徴を適切に反映するものでなければならない。地図生成プロセスの最終出力は次の地図ファイルＺである。
【００３７】
【数５】
2010507169.tif 000057
【００３８】
ここでＲＶはＶに属する頂点の記録の集合、ＲＥはＥに属する辺の記録の集合である。これらの２集合は地図生成のプロセスにおいて、段階的に生成される。この地図データは、グラフ構造を基礎にしているので、コンパクトであり、かつ整理された構造となっている。
【００３９】
頂点記録のデータ構造
頂点記録は、頂点番号、アンカー、頂点座標系、名前（ストリング）を含んでいる。この記録は一般に、ｖｅｒｔｅｘ（ｎ，ａｎｃｈｏｒ，ｐ，ｎａｍｅ）の形式をとる。これを簡単にｖｅｒｔｅｘ（ｎ）と表すことがある。各頂点に付けられた固有の頂点番号ｎ（＝０，１，２，…）はその頂点が生成された順序を表している。第ｎ番目の頂点をｖｅｒｔｅｘ（ｎ）と表すことがある。ある頂点の「アンカー」は、その頂点がｖｅｒｔｅｘ（ｍ）に依存して位置決めされたときには、ｍに等しい。ある頂点が新たに生成されたときは、そのアンカーは∞と定義されるが、それは、その位置が他の頂点の位置情報に依存してはいないことを意味する。唯一の例外はｖｅｒｔｅｘ（０）であって、そのアンカーは０と定義される。アンカーの値が∞である頂点を「アンカーレス」と呼ぶ。そうでない頂点を「アンカー付き」と呼ぶ。地図生成セッションが進行するにつれて、頂点記録中の位置とアンカーはローカリゼーション・タスク２０６（図８）によって修正される。地図生成セッションの最後には、すべての頂点のアンカーは０となる。すべての頂点の名前は人間によって与えられる。全ての頂点の名前の集合は人間とロボットによって共有される記号的知識であって、これによって、人間とロボットの間で知的で能率の良いコミュニケーションが可能となる。
【００４０】
辺記録のデータ構造
辺記録は、辺番号、２端点の頂点番号、辺の距離、左右両側の物体の幾何学的特徴を含む。ここで言う距離は、２端点間のユークリッド距離である。
【００４１】
作業領域とそのグラフの例
作業領域の例３つと、それらのグラフの例を挙げる。
【００４２】
図３に示した作業領域Ａ１１１０は掃除すべき領域である。この作業領域は一部分だけが壁で区切られている。この作業領域Ａ１は、そこに埋め込まれたグラフＧ１１１１によって記述するのが適当である（図４）。このグラフはＧ１＝（Ｖ１，Ｅ１）＝（｛Ａ，Ｂ，Ｃ，Ｄ，Ｅ｝，｛（Ａ，Ｂ），（Ｂ，Ｃ），（Ｃ，Ｄ），（Ｄ，Ｅ），（Ｅ，Ａ）｝）として定義できる。このグラフには、内部辺は存在しない。たとえば、Ｈ１ｂ＝（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ａ）はＧ１１１１における境界サイクルである。時計回りの、あるいは、右手法で描いた境界サイクルは（Ａ，Ｅ，Ｄ，Ｃ，Ｂ，Ａ）であり、これも、後述の地図教示法のために有効に働く。実際の場面では、各頂点に、Ａ，Ｂ，Ｃなどでなく、内容を意味するような名前をつけることができる。
【００４３】
図５に示す環境の中には、２つの作業領域Ａ２およびＡ３が示されている。Ａ３１３０は到達可能な部分全てを含む作業領域である。他方、Ａ２１２０はＡ３の左半分の領域で、点線で区切られている。移動ロボットは、人間側の要求次第で、全領域Ａ３あるいは、部分領域Ａ２を認識することが期待されている。
【００４４】
図６が示すように、作業領域Ａ２１２０はグラフＧ２１２１によって記述できる。
Ｇ２＝（Ｖ２，Ｅ２）＝（｛Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ｝，｛（Ａ，Ｂ），（Ｂ，Ｃ），（Ｃ，Ｄ），（Ｄ，Ｅ），（Ｅ，Ｆ），（Ｆ，Ｇ），（Ｇ，Ａ），（Ｄ，Ｇ）｝）。
【００４５】
グラフＧ２１２１には、（Ａ，Ｂ，Ｃ，Ｄ，Ｇ，Ａ）１２２および（Ｇ，Ｄ，Ｅ，Ｆ，Ｇ）１２３なる、独立なサイクルがある。これらは辺（Ｄ，Ｇ）１２４を共有しているので、この辺はＧ２における内部辺となる。内部辺は他には存在しない。すべての境界辺を使って、Ｈ２ｂ＝（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ａ）なる境界サイクルを作ることができる。この中に、内部辺（Ｄ，Ｇ）は含まれていない。
【００４６】
図７に示すように、作業領域Ａ３１３０はグラフＧ３１３１によって記述できる。
Ｇ３＝（Ｖ３，Ｅ３）＝（｛Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈ，Ｉ，Ｊ，Ｋ，Ｌ，Ｍ｝，｛（Ａ，Ｂ），（Ａ，Ｌ），（Ｂ，Ｃ），（Ｃ，Ｄ），（Ｃ，Ｇ），（Ｄ，Ｅ），（Ｄ，Ｆ），（Ｇ，Ｈ），（Ｇ，Ｍ），（Ｈ，Ｉ），（Ｉ，Ｊ），（Ｊ，Ｋ），（Ｊ，Ｍ），（Ｋ，Ｌ），（Ｌ，Ｍ）｝）。グラフＧ３１３１には（Ａ，Ｂ，Ｃ，Ｇ，Ｍ，Ｌ，Ａ）１３２，（Ｇ，Ｈ，Ｉ，Ｊ，Ｍ，Ｇ）１３３，（Ｊ，Ｋ，Ｌ，Ｍ，Ｊ）１３４なる、３つの互いに独立なサイクルが存在する。辺（Ｇ，Ｍ），（Ｊ，Ｍ），（Ｌ，Ｍ）は、それぞれ上記のうち２個のサイクルによって共有されているので、内部辺である。グラフＧ３１３１における境界サイクルの一例はＨ３ｂ＝（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｄ，Ｆ，Ｄ，Ｃ，Ｇ，Ｈ，Ｉ，Ｊ，Ｋ，Ｌ，Ａ）である。このサイクルは上記の内部辺を含んでいない。
【００４７】
解決方法の特長
与えられた作業領域Ａを記述するために、その領域に埋め込まれ、その領域を記述するグラフＧに基づいて人間がロボットを案内し、ロボットが当該人間を対象として追跡する点が第一の特長である。すべての地図生成過程はこのＧに基づいて行われる。ロボットにとっては、作業領域の幾何学的関係を自ら理解することは極めて難しい。そこを人間が助ける。グラフの複雑さには上限がないから、この方法はどんなに複雑な作業領域をも取り扱える。
【００４８】
同一の環境において、人間がロボットに２つ以上の作業領域を定義する必要性が生ずるかもしれないが、本発明を用いるとこれが可能になる。例えば、一つのオフィス内に、掃除ロボットのために２つのことなる作業領域を、「ｗｅｅｋｄａｙ」および「ｗｅｅｋｅｎｄ」と呼ぶことができる。地図中の（作業領域中の）全ての名前の集合は、人間とロボットに共有される知識であり、それが、両者間の知的で能率の良いインターフェイスとなる。これも、本発明の主たる利点の一つである。
【００４９】
ロボットによる地図作成方法２００
本発明のトップ・レベル・アルゴリズムは図８のフローチャート２００に示されている。
【００５０】
タスク２０１：
与えられた作業領域Ａを記述するグラフＧが定義される。これが出発点である。グラフＧ中の全ての頂点と辺はその作業領域の内部になければならない。このグラフＧは２次元の広がりをもつ領域Ａを最も良く代表するように選ばなければならない。
一般に、頂点を、Ｔ字路、十字路、曲り角、行き止り点、境界点、などに割り当てるのがよい。というのは、これらの点は幾何学的に重要な意味をもつからである。任意の２頂点について、将来作業を行う段階で移動ロボットが両者を結ぶ線分に沿って移動する必要がある、と判断した場合には、両者間に辺を定義する。
【００５１】
タスク２０２：
この初期状態において、移動ロボットはグラフＧ中のｈｏｍｅと仮に呼ばれる初期頂点に置かれる。この地図生成プロセス全体の初期化として、このｈｏｍｅの頂点記録ｖｅｒｔｅｘ（０，０，ｐ，ｎａｍｅ）が、少なくとも、頂点番号０、アンカー０、この頂点の座標系ｐ、与えられた名前ｎａｍｅと共に生成される。
【００５２】
タスク２０３：
対象が一つの辺に沿って前進し、その間ロボットがその対象を追跡するが、次の頂点に達すると停止する。どの経路を選ぶかについては、対象に任されている。生成された地図の精度はこの経路の選択に依存する。対象とロボットのチームによるこのタスク実行は、この辺の端点の一つ（頂点）に達すると終わる。このタスク２０３は後に更に詳しく述べる。
【００５３】
タスク２０４：
対象とロボットのチームが立ち止まった頂点は２種類のいずれかに属する。そのチームがその頂点を始めて訪れた場合か、あるいは、その頂点に以前訪れており、今回重ねて訪れた場合である。いずれであるか知るによって、ロボットはグラフの構造を知ることになる。
【００５４】
この頂点が新しい場合は、人間はｍ＝−１を伝えることによってその事実を明示する。これは正当な頂点番号ではないから、この頂点が新しい、という意味に使える。もし、このチームがこの頂点に既に訪れたことがあり、頂点記録ｖｅｒｔｅｘ（ｍ）としてすでに生成されている場合には、人間がその事実を、その頂点番号自体ｍ（≧０）を伝えることにより、ロボットに教える。
【００５５】
タスク２０５：
この頂点は新しいものであり、この場合頂点記録が生成される。ロボットは人間から、その名前を教えてもらう。それにより、ロボットは頂点記録ｖｅｒｔｅｘ（ｎｖ，∞，ｐ，ｎａｍｅ）を生成する。ここで、ｎｖは頂点番号であり、アンカーは∞であり、現在のロボットの位置と方向はｐであり、人間から授けられた名前はｎａｍｅである。
【００５６】
タスク２０６：
ロボットが既に存在するｖｅｒｔｅｘ（ｍ）に再び戻ってきたとき、制御がここに来る。あらたな頂点記録は生成されない。その代わりに、ロボットと頂点のために位置・方角補正が実行される。この詳細については後述する。
【００５７】
タスク２０７：
この場合、現頂点は新たなものではないが、この最後の辺は新しいものである場合がある。この判断を下すのに十分な情報をロボットは持っている。最後の辺が新しい場合には、この後、タスク２０８に制御を移して、辺記録を生成する。
【００５８】
タスク２０８：
ロボットは辺記録を生成する。最も重要な情報は、その２端点の頂点番号であり、これがグラフＧの連結関係を定義する。左右側方の幾何学的特徴も貴重である。
【００５９】
タスク２０９：
グラフＧ中の全ての辺をカバーしたかどうかを、人間がロボットに教える。人間だけがこのことを知っている。
【００６０】
タスク２１０：
最後のタスクとして、ロボットはＧの地図Ｚ（Ｇ）を出力する。この地図は頂点記録の集合ＲＶと辺記録の集合ＲＥとを含んでいる。前者はタスク２０２および２０５で生成され、タスク２０６で修正されている。後者はタスク２０８で生成されたものである。この地図Ｚ＝（ＲＶ，ＲＥ）には固有の名前がつけられた上で出力される。この地図は後にその名前で呼び出される。
【００６１】
タスク２０６：ロボットとｖｅｒｔｅｘ（ｍ）に関する位置・方向の補正（ローカリゼーション）
ロボットは、以前生成されたｖｅｒｔｅｘ（ｍ）に達したところである。人間が教示した頂点の同定により、ロボットは曖昧さなく、Ｇの結合関係を理解することになる。さらに、ロボットは自己位置・方角を補正し、アンカーを修正する。まず、「オドメトリ誤差補正量」ｅが（頂点ローカリゼーションの準備として）計算され、次に、ロボット位置が補正される。
【００６２】
【数６】
2010507169.tif 000058
【００６３】
ここで（ｘ，ｙ）はロボットの現位置であり、（ｘｍ，ｙｍ）は頂点記録ｖｅｒｔｅｘ（ｍ）に記録された頂点位置である。
【００６４】
【数７】
2010507169.tif 000059
【００６５】
この意味は次のとおりである。前回の頂点位置（ｘｍ，ｙｍ）はその時点でのロボットの位置なのであるから、その後のオドメトリ誤差を含まない。従って、この旧位置が現ロボット位置（ｘ，ｙ）よりも「より正確である」という判断を下すのである。
【００６６】
さて、頂点に対するローカリゼーションについて述べる。対象―ロボットチームが実行した経路のＨの最後の部分を考える。
【００６７】
【数８】
2010507169.tif 000060
【００６８】
このチームはｖｅｒｔｅｘ（ｎ）を生成しようとしていたが、実際のところはそれが、ｖｅｒｔｅｘ（ｍ）に等しいことが判明し、新しい頂点は生成されなかったのである。この系列をｖｅｒｔｅｘ（ｎ−１）から逆に辿り、ｖｅｒｔｅｘ（ｍ）自身とアンカーつきの頂点のいずれが先に現れるかを調べる。
【００６９】
（場合Ｉ：ｖｅｒｔｅｘ（ｍ）自身が先に来る）この場合この経路は。
【００７０】
【数９】
2010507169.tif 000061
【００７１】
となる。ここでｎ≧ｍ＋２であり、最初と最後の頂点を除いて、全ての頂点はアンカーレスである。この経路Ｈはサイクルである。
【００７２】
（場合ＩＩ：アンカー付きの頂点が最初に来る場合）この場合はさらに２つのサブケースに分かれる。
【００７３】
最初のサブケースは式（８）におけるｖｅｒｔｅｘ（ｎ−１）が実際アンカー付きである場合である。このサブケースにおいては、Ｈ中にアンカーレス頂点が存在しないので、以下の頂点ローカリゼーションは必要がない。
【００７４】
第二のサブケースは経路が
【００７５】
【数１０】
2010507169.tif 000062
【００７６】
のようになる場合である。ここでｖｅｒｔｅｘ（ｉ）はアンカー付きで、ｋ≧０であり、その間の全ての頂点はアンカーレスである。
【００７７】
両サブケースにおけるローカリゼーション・アルゴリズムは殆ど同一なので、最初のサブケースについて述べる。式（９）のサイクルＨ中の辺の個数ｕは
【００７８】
【数１１】
2010507169.tif 000063
【００７９】
である。このｕと、式（６）のオドメトリ誤差補正量ｅを用いると、このサイクル中の各頂点のための補正量は次のように評価できる。
【００８０】
【数１２】
2010507169.tif 000064
【００８１】
これらの値は（９）式のＨ中の各頂点の位置に加算され、補正される。ここで、０＝（０，０）である。このようにして、Ｈを辿っている間に累積されたオドメトリ誤差はこのサイクル中の各頂点に等しく分配される。Ｈ中の全ての頂点のアンカーとして、ｍｉｎ（ｍ，ａｎｃｈｏｒ（ｖｅｒｔｅｘ（ｍ）））なる値が代入されるが、ｖｅｒｔｅｘ（ｍ）のアンカー自体は変わらない。
【００８２】
これまでのところ、サイクルＨの中に「内部サイクル」は存在しないと仮定してきた。ここで、図９に示すように、Ｈ１４０中に内部サイクルＨＩ１４１が存在する場合を考える。内部サイクル１４１はｖｅｒｔｅｘ（ｈ）１４２から始まっている。この内部サイクルＨＩ１４１は、より大きなサイクルＨ１４０が閉じる前に閉じている。従って、ＨＩ１４１のためのローカリゼーション・タスク２０６が実行されており、ＨＩ１４１中の頂点のアンカーはｖｅｒｔｅｘ（ｈ）自身を除いてｈのアンカーの値と等しくセットされている。より大きなサイクルＨ４０に対するローカリゼーションはこの内部サイクルの頂点たちを除いて実行される。その後、式（１２）中のｖｅｒｔｅｘ（ｈ）に対する補正値はＨＩ４１中の各頂点に対して、一様に重畳される。さらに、内部サイクル中の各頂点のアンカーはｖｅｒｔｅｘ（ｈ）のアンカーと等しくセットされる。このタスク２０６は、このようにして、入れ子になったサイクルに対し、帰納的に適用される。
【００８３】
このローカリゼーション・アルゴリズムの有効性と安定性は本発明の最重要な特長の一つである。人間はこのローカリゼーションにおいて、極めて重要な役割を果たしている。そうでなければ、このレベルの成果は決して得られない。ロボットによる地図生成アルゴリズム２００とローカリゼーション・アルゴリズム２０６が前出の例題のグラフに対して、どのように働くかを示す。
【００８４】
図４に示したグラフＧ１１１１においてチームが境界サイクルを辿ると、そのサイクルに対して、ローカリゼーション・タスク２０６が実行される。全て頂点の位置はホームの位置を基準として決められるので、そのアンカーはすべて０となる。内部辺は存在せず、全ての辺はカバーされた。
【００８５】
図６に示されたグラフＧ２１２１において境界サイクルがカバーされると、ローカリゼーション・タスク２０６が実行される。その後で、内部辺（Ｇ，Ｄ）１２４が辿られて、辺記録が生成される。しかしながら、アンカーレスの頂点は存在しないので、ローカリゼーションは実行されない。
【００８６】
図７に示されたグラフＧ３１３１においては、まず境界サイクルが辿られる。この境界サイクルにはいくつかの内部サイクルが含まれている。（Ｄ，Ｅ，Ｄ），（Ｄ，Ｆ，Ｄ），（Ｄ，Ｅ，Ｄ，Ｆ，Ｄ）、および（Ｃ，Ｄ，Ｅ，Ｄ，Ｆ，Ｄ，Ｃ）である。ローカリゼーション２０６はこれらの内部サイクルと境界サイクルにたいして帰納的に実行される。これらのサイクルは入れ子構造になっていることに注意したい。その後で内部辺がカバーされる。内部経路（Ｊ，Ｍ，Ｇ）が選ばれたと仮定しよう（この内部経路は直線状なので、側方物体の特徴抽出に有利である）。すると、この経路実行の最後で、タスク２０６が実行されて、その結果、頂点Ｍがローカライズされ、そのアンカーは０となる。最後に、残った内部辺（Ｍ，Ｌ）がカバーされてその辺記録が作られる。
【００８７】
対象が辺に沿ってロボットを導くタスク２０３：
このタスクのフローチャートが図１０に示されている。
【００８８】
タスク２０３０：
ロボットは対象が前進し始めるまで待つ。
【００８９】
タスク２０３１：
図２に示されたように、ロボットは対象の動作をセンスして、２次元運動コマンドＣＭを検出する。このタスク２０３１については以下に詳しく述べる。
【００９０】
タスク２０３２：
運動コマンドＣＭを用いて、ロボットはその２自由度運動を図２に示されたように実行する。このタスク２０３２については以下に詳しく述べる。
【００９１】
タスク２０３３：
この辺を辿っている間に、ロボットは左右の側方物体の幾何学的特徴を抽出する。このタスク２０３３については以下に詳しく述べる。
【００９２】
タスク２０３４：
ロボットは次のタイマー割り込みを待ち、それが来るとこのタスクを離れる。
【００９３】
タスク２０３５：
対象がまだ動いている場合には、ロボットは前記の４タスクを再び繰り返す。そうでなければ、タスク２０３を完了する。
【００９４】
運動コマンドの検出タスク２０３１：
対象が辺を辿っている間、ロボットはその対象を追跡している。対象を追跡するためには、ロボットは対象の行動をセンサシステムによって検出する。このタスク２０３１は、標準インターフェイスとして、図２に示されるように、サンプリング時間毎に、２次元運動コマンドＣＭ＝（ｃｖ，ｃω）を出力する。典型的な４つのセンシング方法についてここで述べる。タスク２０３１０：対象位置検出法、タスク２０３１１：力・トルク検出法、タスク２０３１２：力検出法、および、タスク２０３１３、ジョイスティック法である。
【００９５】
タスク２０３１０：対象位置検出法
本法においては、移動ロボットは対象の位置を検出する。これは非接触検出法である。図１１Ａ、図１１Ｂ、図１１Ｃに示されるように、対象１０がロボット１の前面に立っているとする。いずれの方法においても、センサシステムは、ロボット座標系４における対象の位置（ｘｈ，ｙｈ）を検出する。
【００９６】
図１１Ａにおいては、複数個の超音波側距器２０が移動ロボット１の前面の周囲に取り付けられている。このセンサシステムが、測距データを解析することにより、対象の位置を検出する。図１１Ｂにおいては、レーザ測距器２１がロボット１の前面に取り付けられており、対象の位置を検出する。
【００９７】
図１１Ｃにおいては、対象の位置は複数個のセンサの協調によって検出される。ＳＬ，ＳＲおよびＳは超音波送受システム２２である。ＳＬとＳＲはロボットの左前方と右前方の角にそれぞれ装着されており、第３のシステムＳは対象１０が持っている。対象の位置（ｘｈ，ｙｈ）は次の３ステップによって求められる。
（１）ＳＬとＳＲは時刻Ｔ０に同時に超音波を送信する。
（２）ＳがＳＬまたはＳＲから最初の超音波を受信したときに、Ｓはただちに超音波を送信し返す。
（３）ＳＬはその返信の受信時刻ＴＬを記録する。ＳＲはその返信の受信時刻ＴＲを記録する。ロボット１はロボット座標系でのオンボードセンサシステムの位置と超音波の速度を知っている。従って、三角測量法をもちいると、ロボットはその位置（ｘｈ，ｙｈ）を計算できる。
【００９８】
上の３方法のいずれを用いても、位置ロボット座標系における対象の位置（ｘｈ，ｙｈ）が求まる。この直角座標はつぎの標準的な変換法により、極座標（ｄｈ，ρｈ）に変換できる。
【００９９】
【数１３】
2010507169.tif 000065
【０１００】
ここで、ｄｈはロボット座標系の原点４から対象までの距離であり、ρｈはロボット座標系４内での、対象への方向である。この極座標はさらに２次元運動コマンドＣＭに変換される。
【０１０１】
【数１４】
2010507169.tif 000066
【０１０２】
ここでＤＮは「中立距離」であり、ｇ０およびｇ１は定数の変換係数である。ロボットが追跡しているとき、もし対象が停止すると、ロボットはこの中立距離ＤＮを保って、いずれ停止する（タスク２０３２がこの停止機能を、そのタスクの一部として実行する）。かくして、これらのセンサが、対象が前面にいる情況で使われるかぎり、２次元運動コマンドＣＭが検出される。
【０１０３】
タスク２０３１０の続き：
人間がロボットを導くのに、ロボット前方以外に立ちたい場合がある。つぎの２例においては、人間は自分をロボット１の左側に立っている（右側の場合も同様のアルゴリズムで扱える）。レーザ・レンジ・ファインダー２１は、図１２Ａに示すように、対象の「実際の位置」（ｘａ，ｙａ）１１を検出する。図１２Ｂにおいて、ＳＦ，ＳＲおよびＳは、それぞれ図１１Ｃで紹介された超音波送受システム２２である。ＳＦおよびＳＲはロボット１の左前方と左後方にそれぞれ装着されており、三番目のシステムＳは対象１０が持っている。図１１Ｃに示された超音波システムに採用されたものと同様な方法によって、対象の実際の位置（ｘａ，ｙａ）１１が得られる。
【０１０４】
この、対象が左側にいる場合においては、もし対象の実際の位置（ｘａ，ｙａ）が（ＸＴ，ＹＴ）に等しければ、ロボットが動かない、つまりＭ＝（ｖ，ω）＝（０，０）となるような（ＸＴ，ＹＴ）が存在する。この位置を「中立位置」と呼ぶ（この場合にはＹＴ＞０である）。これらの定数を用いて、対象の実際の位置（ｘａ，ｙａ）を対象の「仮想位置」（ｘｈ，ｙｈ）に変換する。
【０１０５】
【数１５】
2010507169.tif 000067
【０１０６】
この値（ｘｈ，ｙｈ）にたいして、式（１３）、（１４）を再び適用して、２自由度の運動コマンドＣＭを次のタスク２０３２のために求めることができる。
【０１０７】
タスク２０３１１：力・トルク検出法
本法においては、人間は力・トルク・センサを通して移動ロボットに接触し、そのセンサは対象がロボットに加えた力とトルクを検出する。その人間はロボットに力とトルクを加えるけれども、人間が力任せにロボットを引いたり、押したり、回転するという意味ではない。ロボットは微小な力とトルクを情報として検出し、その情報が運動制御アルゴリズムに伝えられて重い本体を動かすことになる。
【０１０８】
力がロボット本体の方向に加えられれば、ロボットの平行移動速度ｖを増大させるように働く。それとは反対方向に加えられれば、ロボットを後退させるように働く。水平面内の、垂直軸まわりの反時計回りのトルクは、ロボット１を左に回すように働く。時計回りのトルクは右に回すように働く。
【０１０９】
このコンセプトを実現するために、“センサユニット”を導入する。図１３Ａに図示されたように、センサユニット３０は３つの部分が直列に左から右に組み立てられた装置である。（ａ）移動ロボットに装着された左端の部分３１、（ｂ）力・トルクセンサ３２および（ｃ）人間が保持するグリッパ３３である。部品（ｂ）３２は２変数を出力する。（１）このセンサユニットに加えられた力とロボット本体の方向３の向きをもつユニットベクターとの内積ｆｈおよび（２）垂直軸まわりのトルク成分ｑｈである。フルの６軸の力・トルク・センサを使用しても良いが、これらの２成分だけが、運動コマンドを得る目的には必要十分である。これらのセンサユニットにおいて、図には明示されていないが、力ｆｈの方向はロボットの本体方向３と等しくなければならない。
【０１１０】
図１４Ａはセンサユニット３０がロボット１の先端の取り付けられた実施例を表している。人間はグリッパ３３を保持して、ロボット１を誘導する。図１４Ｂは、センサユニットをロボットの左側に装着し、対象とロボットのチームが横並びで歩くもう一つの実施例である。
【０１１１】
もう一つの形式のセンサユニット３４を図１３Ｂに示す。前例と違うのはセンサユニットの（ａ）の部分だけである。この部分がグリッパ３５になっており、腕を有するロボットがこれを保持する。両者がグリッパを掴むことによって、人間がその意図を力とトルクによって伝えることができる。
【０１１２】
図１３Ｃに示す３番目のセンサユニット３６は、（ａ）部分のグリッパ３７が２個あることが異なっており、ロボットは二本の腕でこれを保持する。人間はロボットの前に立ち、グリッパ３３を保持し、ロボットを誘導する。
【０１１３】
どのセンサユニットにおいても、力とトルクの組（ｆｈ，ｑｈ）が得られるこの組は次式によって２次元運動コマンドに変換される。
【０１１４】
【数１６】
2010507169.tif 000068
【０１１５】
ここで、ｇ２およびｇ３は正の変換定数である。この２次元運動コマンドＣＭがタスク２０３１の出力となる。
【０１１６】
タスク２０３１２：力検出法
図１５に示されるように、ロボット１上に力センサ４１が装着されており、その位置はロボット座標系４において（ａ，０）（ａ＞０）とする。弾性のある紐４０の一端が、この力センサ４１に結び付けられており、他端は人間が保持し、引っ張ることにより、ロボットを誘導する。つまり、人間の意図はこの紐４０を通して伝えられる。ロボットが前進して欲しければ、人間はこの紐を引く。止まって欲しければ、引く。ロボットが左か右に回転してほしければ、紐をその方向に引く。
【０１１７】
ロボットに加えられた力の水平成分４２は、力センサ４１によって２つの直角成分に分解される。ロボット座標系４におけるＸ方向成分ｆｘ４３とＹ方向成分ｆｙ４４である。この２つの力成分が次式によって、２次元運動コマンドに変換される。
【０１１８】
【数１７】
2010507169.tif 000069
【０１１９】
ここで、ｇ４とｇ５は正の変換定数である。この２次元運動コマンドＣＭがタスク２０３１の出力となる。
【０１２０】
タスク２０３１３：ジョイスティック法
人間が、ロボットと結合されてはいないジョイスティックを通して、移動ロボットと通信する。ジョイスティックの変位出力のＸ成分ｘｊとＹ成分ｙｊがロボットに通信路を通して伝達され、次式によって２次元運動コマンドに変換される。
【０１２１】
【数１８】
2010507169.tif 000070
【０１２２】
ここで、ｇ６とｇ７は正の変換定数である。かくして、タスク２０３１３は２次元運動コマンドを次のタスク２０３２へ送る。
【０１２３】
タスク２０３２：運動コマンドの実行
このタスクの目的は、図２に示されたタスク２０３１の出力である、標準化された２次元運動コマンドＣＭ＝（ｃｖ，ｃω）が与えられたときに、その運動を実現することである。このタスク２０３２は２つのサブタスクから成っている。タスク２０３２０はｃｖを用いて平行移動速度ｖを制御するタスクであり、タスク２０３２１はｃωを用いて回転速度ωを制御するタスクである。
タスク２０３２０：平行移動速度制御
平行移動速度ｖのための、典型的なフィードバック制御アルゴリズムは次のとおりである。
【０１２４】
【数１９】
2010507169.tif 000071
【０１２５】
【数２０】
2010507169.tif 000072
【０１２６】
ここで、αは加速度、ｄｔはサンプリング時間間隔、Ａ０，Ａ１，Ａ２は正のフィードバックゲインである。記号「＝」はこの２式については代入を意味する。すなわち、平行移動速度は２回の積分で得られる。この積分計算によって、ロボットの平行移動速度制御は極めて滑らかなものとなる。
【０１２７】
この規則によって、ｃｖ＞０（位置検出法ではｄｈ＞ＤＮ、力検出法ではｆｈ＞０）ならば、ロボットはいずれ前進する。この状態では、人間はロボットを「ｐｕｌｌ」すると言われる。一方、ｃｖ＜０ならば、ロボットはいずれ後退する。この状態では、人間はロボットを“ｐｕｓｈ”する、と言われる。
【０１２８】
人間がロボットを「ｐｕｌｌ」しているときに、停止すると、ロボットは減速し、いずれ停止する。しかし、センサの出力には揺らぎがあり、また制御には遅れがあるので、ロボットの停止動作はきれいにはいかない。その上、式（１９）と（２０）で表される入力ｃｖの速度ｖに対する効果は正負の方向に対して対称的であるから、真に停止する前に、ロボットは振動気味に振舞う。
【０１２９】
しかし、この対称的な速度制御の振る舞いが望ましくない場合がある。本発明が必要としている、人間がグラフの辺に沿ってロボットを誘導するタスクは、その場合の一つである。ロボットが後退することは不要であり、益がない。人間がやりたいのは、ロボットを「ｐｕｌｌ」するか、停止させることである。この要請を実現するための簡単な方法は、式（２０）を次で置き換えることである。
【０１３０】
【数２１】
2010507169.tif 000073
【０１３１】
これにより、ロボットは決して後退しない。この規則の下では、ｃｖが負になると、ロボットはいずれ停止し、そこで安定する。
【０１３２】
同様にして、決して前進しないような動作が望ましい場合がある。この要請を実現する簡単な方法は式（２０）を次式で置き換えることである。
【０１３３】
【数２２】
2010507169.tif 000074
【０１３４】
これで、タスク２０３２０の説明を終える。
【０１３５】
タスク２０３２１：回転速度制御
ｃωを用いた、回転速度ωのための典型的なフィードバック制御アルゴリズムは次のとおりである。
【０１３６】
【数２３】
2010507169.tif 000075
【０１３７】
【数２４】
2010507169.tif 000076
【０１３８】
ここで、ξはωの時間微分（回転加速度）、ｄｔはサンプリング時間間隔、そしてＢ０、Ｂ１、Ｂ２は正のフィードバックゲインである。最後２式においては、記号（＝）は代入の操作を意味する。ωを得るためのこの２回の積分によって、回転速度の制御は極めて滑らかになる。もし、ｃω＞０であれば（位置検出法においてロボットが対象を左側に検出したか、トルク検出法において反時計周りのトルクを検出したとき）、回転速度ωジはいずれ正となり、ロボットは左回転し始める。もしｃω＜０であれば、回転速度ωはいずれ負となり、ロボットは右回転をし始める。いずれの場合でも、ロボット本体の方向は対象の方向と等しくなる。
【０１３９】
これで、タスク２０３２１の説明を終わり、かつ、２自由度運動制御アルゴリズム２０３２の説明も終わる。
【０１４０】
タスク２０３３：辺に沿った側方の物体の特徴の抽出
グラフの辺に沿って対象を追跡している間、ロボットは、その側方センサを用いて左右にある物体の幾何学的特徴を抽出することができる。辺のトラバースを終えたとき、この幾何学的情報を、生成する辺記録に蓄える。側方にある典型的な物体は壁とか家具である。
【０１４１】
典型的な側方物体特徴抽出法はソナーと最小二乗当て嵌めアルゴリズムを使うものである。図１６において、ロボット１に、水平面内、左方に向いたソナー２０が、距離ｄを返している。ソナーの反射を生成したと思われる物体上の２次元の点、ターゲット、の推定値をつぎのようにして求めることができる。Ｆをロボット座標系４とし、Ｓ２０をロボット座標系４におけるソナー座標系とする。座標変換Ｇ＝（（ｄ，０），０）はＳと「ターゲット座標系」Ｔ２３の間の関係を表す。３つの座標系（座標変換）、Ｆ，ＳおよびＧを合成することによって、ターゲット座標系２３を次のように求めることができる。
【０１４２】
【数２５】
2010507169.tif 000077
【０１４３】
ここで、記号（＃）は２次元座標変換の合成を意味する。この座標系Ｔから位置を抜き出すことによって、「ターゲット位置」Ｔｐが得られる。
【０１４４】
ロボットが動くとソナーは周囲の物体表面を走査することになり、ターゲット位置（Ｔｐ）の系列が得られる。この点列に対して、最小二乗当て嵌めアルゴリズムを適用することにより、線分を得ることができる。この抽象的かつ簡潔なデータは辺記録にぴったりと収まり、後に、ロボットを運行し、位置と方角の補正をするのに使える。
【０１４５】
人間が誘導した運動の記録
運動再生のために、あるいは他の目的のために、対象によって生成された運動を「運動ファイル」として出力することができる。これは「運動記録」の系列である。第ｎ番目の運動記録は（ａ）平行移動速度ｖｎおよび（ｂ）回転速度ωｎを含む。ここで、ｎの変域が［０，Ｎ−１］であると仮定する。ここで、Ｎは正整数である。運動ファイルはハードウェアとは独立であることに注意して欲しい。ある移動ロボットの上で生成された運動ファイルを使って、異なるハードウェアを持つ、他のロボットの上で、その運動を再生することができる。
【０１４６】
人間が誘導した運動の再生
運動ファイルがあれば、元の２自由度の運動を、ファイル内の平行移動速度ｖｎと回転速度ωｎを使って、正方向あるいは逆方向に再生することができる。
（０）正方向の運動再生：この再生セッションにおいては、運動Ｍ＝（ｖｎ，ωｎ）をｎ＝０からＮ−１まで実行する。再生された平行運動の向きは記録されたときの平行移動の向きと等しい。
【０１４７】
（１）逆方向の運動再生：
この再生セッションにおいては、運動Ｍ＝（−ｖｎ，−ωｎ）をｎ＝Ｎ−１から０まで実行する。再生された並行運動の向きは、記録されたときの平行移動の向きとは逆になる。
【０１４８】
２自由度運動Ｍ＝（ｖ，ω）の実現方法を、速度差制御方式の車輪アーキテクチャを用いた移動ロボットを例に用いて、図１７に例示した。この移動ロボットは左駆動輪６０と右駆動輪６１を有する（キャスターは本図中には示されていない）。その左車輪速度ｖＬと右車輪速度ｖＲはＭ＝（ｖ，ω）から次のように計算できる。
【０１４９】
【数２６】
2010507169.tif 000078
【０１５０】
【数２７】
2010507169.tif 000079
【０１５１】
ここで、Ｄは車輪間隔の半分の距離である。これらの車輪速度が実現できれば、元の２次元運動Ｍ＝（ｖ，ω）が再生される。
【発明の効果】
【０１５２】
この発明の効果は次の通りである：
（１）作業領域の形状がどんなに複雑であっても、人間がグラフを使ってその領域を難なく表現することができる。これはロボットには難しい。
（２）人間がグラフ中のすべての辺と頂点をトラバースして、グラフ構造をロボットに実地で教えるので、ロボットがその構造を誤認する可能性がない。
（３）その際に、ロボットが領域の幾何学的特徴をセンサで抽出するので、最高度の精度を持つ地図が生成できる。
（４）ロボットにとって難しいことをすべて人間がやり、ロボットにとって容易に実行できることだけロボットに任せる。
（５）作業領域の要所々々の地点（すなわち、各頂点）の名前を人間がつけて、ロボットに教え、後に人間・ロボット間で知的で能率の良い会話をするのに使える。
（６）作成された地図はグラフ構造を取っているので、作業領域内での最適経路計画問題をダイクストラのアルゴリズムを用いて、極めて能率よく解くことができる。さらに、その解を使ってロボットを運行することができる。
（７）地図に作業領域の幾何学的特徴が記録されているので、その特徴を用いて、ロボット運行時に、ロボット自身の位置と方向の誤差を実時間で修正することができる。
（８）一度完成した地図の上に、さらに頂点と辺を付加することができる。この操作は何回でもできる。
（９）地図作成時と運行時に用いるロボットは同じものであっても、違うものであってもよい。地図はロボットのハードウェアにたいして、ほぼ独立である。ただし、両セッションで同じものを使うと、ローカリゼーションの結果がより良い。
（１０）地図のデータ量が小さいので、それをセーブし、取り扱うのが容易である。
（１１）グラフを利用した地図のデータ構造はロボット工学におけるスタンダードとなる。
（１２）同じ環境下において、作業領域が異なる２つの作業をロボットにさせたいことがある。その場合、別の名前をつけた２つの異なる地図を作ることが可能である。ロボットは作業毎に、対応した地図を効果的に使うことができる。
（１３）このロボットによる地図作成方法は、一般のロボットユーザにとっても容易に実行可能なので、ロボットを販売した後で、ロボット開発者が、ユーザのために地図を作成してまわる必要がない。
（１４）必要とあらば、毎日新しい地図をロボットのために作成するこさえもできる。
（１５）この地図生成法は、車輪型ロボットにも、人間型ロボットにも適用できる。
（１６）わずか２個の変数を出力するセンサを使うと、人間がロボットと交わって、２自由度の運動をさせることができる。この機能は、車輪型ロボット、人間型ロボット、いずれにも適用できる。
（１７）床や環境に、空間理解を助けるためのマークなどを貼る必要が無い。
（１８）地図を一回作るための費用は殆ど無視できる。
（１９）一度作った地図を保存しておいて、後に、いつでも使うことができる。
【図面の簡単な説明】
【０１５３】
【図１】移動ロボットが平行移動速度ｖ、平行移動方向μ、および回転速度ωの３自由度を持つことを示す平面図である。
【図２】対象のアクションを検出して２自由度の運動コマンドＣＭ＝（ｃｖ，ｃω）を得るタスク２０３１と、そのコマンドに基づいて２自由度の運動（ｖ，ω）を実行するタスク２０３２を示す概念図である。
【図３】より大きな作業領域から切り出した小さな掃除領域Ａ１を例示する図である。
【図４】図３の作業領域Ａ１を表現するグラフＧ１を示す。
【図５】移動ロボットのための作業領域例２つを示す。Ａ３は全領域であり、小さな領域Ａ２は点線で区切られた、半分の領域である。
【図６】図５に示された作業領域Ａ２を代表するグラフＧ２を示す。
【図７】図５に示された作業領域Ａ３を代表するグラフＧ３を示す。
【図８】ロボットによる地図作成アルゴリズム２００の流れ図である。
【図９】内部サイクルＨＩ４１を有するサイクルＨ４０を含むグラフを示す。
【図１０】人間がロボットを辺に沿って誘導するアルゴリズム２０３の流れ図である。
【図１１Ａ】対象の位置（ｘｈ，ｙｈ）を検出するための、複数個のソナーからなるシステムが前面に装着された移動ロボットの平面図である。
【図１１Ｂ】対象の位置（ｘｈ，ｙｈ）を検出するための、レーザ・レンジ・ファインダが前面に装着された移動ロボットの平面図である。
【図１１Ｃ】対象の位置（ｘｈ，ｙｈ）を検出するための、センサシステムＳＬおよびＳＲを装着した移動ロボットの平面図である。対象は第３のセンサシステムＳを保持している。
【図１２Ａ】対象の位置（ｘａ，ｙａ）を検出するための、レーザ・レンジ・ファインダ２１が左側面に装着された移動ロボットの平面図である。
【図１２Ｂ】対象の位置（ｘａ，ｙａ）を検出するための、センサシステムＳＦおよびＳＲが左側面に装着された移動ロボットの平面図である。
【図１３Ａ】力・トルク・センサユニットの構成図である。
【図１３Ｂ】別の形式の力・トルク・センサユニットの構成図である。
【図１３Ｃ】更に別の形式の力―トルク・センサユニットの構成図である。
【図１４Ａ】力・トルク・センサユニットを前面に装着したロボットの平面図である。
【図１４Ｂ】力・トルク・センサユニットを左側面に装着したロボットの平面図である。
【図１５】力センサを装着したロボットと、それを紐で制御している対象の位置関係を表す平面図である。
【図１６】側方ターゲットを検出するソナーが装着された移動ロボットの平面図である。
【図１７】速度差制御形式の移動ロボットの平面図である。
【発明を実施するための形態】
【０１５４】
本発明を実施する最良の形態は、図１１Ａに示した、ソナーを前面に配置した２自由度の車輪型ロボット上に実施したものである。このように配置すると、対象を追跡するためと、側方の物体の幾何学的特徴を抽出するためと、両方の目的のために、これら７個のソナーが効果的に働く。この種のプロトタイプロボット上で本発明のアルゴリズムを実施した結果、次の結果が得られた。（１）ソナーは安価である、（２）ソナーデータの帯域幅はかなり狭いが、それでも、動いているロボットが、これも動いている対象の位置をソナーは動的に認識することができた、（３）対象とロボットからなるチームが作業領域の精確な地図を作成することができた、（４）この教示による地図作成が、７歳の子供にも可能であった。
【実施例】
【０１５５】
上記の、最良の形態において、ソナーの代わりに、レーザー・レンジ・ファインダーを用いたロボットにたいして、本発明を実施することができる。
【０１５６】
上記２つの実施例において、車輪型でなく、人間型のロボットにたいして、本発明を適用することができる。
【０１５７】
自動車の運動制御に請求項１に定義した発明を応用すれば、通常とは全く違った方法で車を動かすことができる。自動車の前端に２軸の力センサ（図１５）を付け、人がその車に乗らずに、その車の前に立ち、その力センサに軽く触れることによって、その運動を制御することができる。Ｘ方向（自動車本体の進行方向）の力成分で、車のｖを制御し、Ｙ方向の力成分で、ωを制御する。そうすると（１）車の傍に立った人が、車を平行駐車させることができ、（２）同じく、車の外に立ったひとが、非常に狭い車庫に車を納めることができる。その
人にとっては、広い視野が得られるので、正確な制御ができるし、その制御方法は直感的で、誰にも理解しやすい。また、（３）そうやって人間が動かした車の運動を、後に請求項７に定義した発明によって、再生し、引き戻すことができる。
【産業上の利用可能性】
【０１５８】
本発明は、個別の移動ロボットに、その作業領域を理解させる知能を授ける。従って、本発明は様々な移動ロボット製品に適用できる。例えば、（１）エンターテインメント・ロボット、（２）教育ロボット、（３）研究用の移動ロボットプラットフォーム、（４）真空掃除ロボット、床清掃ロボット、警備ロボット、知的車椅子、ほかのサービス・ロボット、（５）知的ショッピング・カートと知的ゴルフカート、（６）搬送ロボットと物体操作ロボットなどに適用できる。
【符号の説明】
【０１５９】
１  移動ロボット
２  世界座標系
３  ロボット本体の方向
４  ロボット座標系
５  ロボットのＸ座標
６  ロボットのＹ座標
７  ロボットの平行移動速度
８  ロボットの平行移動方向
９  ロボットの回転速度
１０  ロボットの前方に位置する人間
１１  ロボットの側方に位置する人間
２０  ソナー
２１  レーザ・レンジ・ファインダ
２２  センサシステム
２３  ソナーが捕らえたターゲット
３０  力・トルク・センサユニットの一例
３１  力・トルク・センサユニットの一端
３２  力・トルク・センサ
３３  力・トルク・センサユニットの一端にある握り部分
３４  力・トルク・センサユニットの一例
３５  力・トルク・センサユニットの他端にある握り部分
３６  力・トルク・センサユニットの一例
３７  力・トルク・センサユニットの他端にある２個の握り部分
４０  弾性のある紐
４１  ２軸力センサ
４２  紐の張力
４３  力のＸ成分
４４  力のＹ成分
６０  左動輪
６１  右動輪
１１０  掃除領域Ａ１
１１１  グラフＧ１
１２０  作業領域Ａ２
１２１  グラフＧ２
１２２  サイクル（Ａ，Ｂ，Ｃ，Ｄ，Ｇ，Ａ）
１２３  サイクル（Ｇ，Ｄ，Ｅ，Ｆ，Ｇ）
１２４  内部辺（Ｄ，Ｇ）
１３０  作業領域Ａ３
１３１  グラフＧ３
１３２  サイクル（Ａ，Ｂ，Ｃ，Ｇ，Ｍ，Ｌ，Ａ）
１３３  サイクル（Ｇ，Ｈ，Ｉ，Ｊ，Ｍ，Ｇ）
１３４  サイクル（Ｊ，Ｋ，Ｌ，Ｍ，Ｊ）
１４０  サイクル
１４１  内部サイクル
１４２  内部サイクルの基点
２００  ロボットによる地図生成アルゴリズム
２０１  作業領域Ａを代表するグラフの、人間による定義ステップ
２０２  初期化ステップ
２０３  人間が辺に沿ってロボットを誘導し、頂点で停止するステップ
２０３０  対象が進み始めるのを待つステップ
２０３１  運動コマンドを検出するステップ
２０３２  運動コマンドを実行するステップ
２０３３  側方の物体の特徴を抽出するステップ
２０３４  次のサンプリング時刻を待つステップ
２０３５  対象が停止したかどうかを判断するステップ
２０４  この頂点が新しいものか、古いものかを人間が教えるステップ
２０５  人間が教えた名前を含む頂点記録をロボットが生成するステップ
２０６  ロボットと頂点をローカライズするステップ
２０７  辺が新しいものかどうかをロボットが判断するステップ
２０８  辺記録をロボットが生成するステップ
２０９  すべての辺をカバーしたかどうかを人間が教えるステップ
２１０  地図を出力するステップ
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2010507169.tif 000080
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2010507169.tif 000081
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2010507169.tif 000082
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2010507169.tif 000083
【国際調査報告】
2010507169.tif 000084