【文献】
萩原良信, 外3名,“SURFを用いたView−Based Navigationによる位置分解能の向上”,電気学会論文誌C,日本,(社)電気学会,2010年08月01日,第130巻, 第8号,p.1395-1403
(58)【調査した分野】(Int.Cl.,DB名)
前記ポイント基盤の特徴点抽出段階は、前記抽出された特徴点周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性に基づいて前記抽出された特徴点に対応するディスクリプタ(descriptor)を生成する段階を含む、請求項1に記載の移動ロボットの制御方法。
前記ブロック基盤の特徴点抽出段階は、前記区分されたそれぞれのブロック単位映像の明るさ勾配(gradient)の分布特性に基づいてそれぞれのブロック別ディスクリプタを生成する段階を含む、請求項1に記載の移動ロボットの制御方法。
前記ブロック基盤の特徴点抽出段階は、前記区分されたそれぞれのブロック単位映像の明るさ勾配(gradient)の分布特性に基づいてそれぞれのブロック別ディスクリプタを生成する段階を含む、請求項6に記載の移動ロボットの制御方法。
前記ポイント基盤の特徴点抽出段階は、前記抽出された特徴点周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性に基づいて前記抽出された特徴点に対応するディスクリプタ(descriptor)を生成する段階を含む、請求項8に記載の移動ロボットの制御方法。
前記ポイント基盤の特徴点抽出段階は、前記抽出された特徴点周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性に基づいて前記抽出された特徴点に対応するディスクリプタ(descriptor)を生成する段階を含む、請求項12に記載の移動ロボットの制御方法。
【発明を実施するための形態】
【0041】
以下では、添付図面に基づいて本発明の実施例を詳細に説明する。しかし、本発明がこのような実施例に限定されるものではなく、多様な形態に変形可能であることは言うまでもない
一方、以下の説明で使われる構成要素に対する接尾辞“モジュール”及び“部”は単にこの明細書作成の容易性のみ考慮して付与するもので、そのものが特別に重要な意味又は役割を付与するものではない。よって、前記“モジュール”及び“部”は互いに混用されることもできる。
【0042】
また、本明細書で、多様な要素を説明するために、第1、第2などの用語を用いることができるが、このような要素はこのような用語によって制限されない。このような用語は一要素を他の要素と区別するためにのみ用いられる。
【0043】
本発明の一実施例による移動ロボット100はコマなどを用いて自ら移動することができるロボットを意味し、家庭用お手伝いロボット及びロボット掃除機などであり得る。以下では、図面に基づき、移動ロボットの中で掃除機能を有するロボット掃除機を例として説明するが、本発明はこれに限定されない。
【0044】
図1は本発明の一実施例による移動ロボットを示す斜視図、
図2は
図1の移動ロボットの平面図、
図3は
図1の移動ロボットの側面図である。
【0045】
図1〜
図3を参照すると、移動ロボット100は一定領域を自ら走行することができる。移動ロボット100は床を掃除する機能を遂行することができる。ここで言う床の掃除には、床のほこり(異物を含む)を吸入するか床を拭き掃除することが含まれる。
【0046】
移動ロボット100は本体110を含む。本体110は外観をなすキャビネットを含む。移動ロボット100は、本体110に備えられた吸入ユニット130及び集塵筒140を含むことができる。移動ロボット100は、移動ロボット周辺の環境についての情報を感知する映像獲得部120を含む。移動ロボット100は、前記本体を移動させる走行部160を含む。移動ロボット100は、移動ロボット100の制御のための制御部150を含む。制御部150は本体110に備えられる。
【0047】
走行部160は、移動ロボット100の走行のためのホイールユニット111を含む。ホイールユニット111は本体110に備えられる。ホイールユニット111によって、移動ロボット100は前後左右に移動するか回転することができる。制御部がホイールユニット111の駆動を制御することにより、移動ロボット100は床を自律走行することができる。ホイールユニット111は、メインホイール111a及びサブホイール111bを含む。
【0048】
メインホイール111aは本体110の両側にそれぞれ備えられ、制御部の制御信号に応じて一方向又は他方向に回転できるように構成される。それぞれのメインホイール111aは互いに独立的に駆動可能に構成されることができる。例えば、それぞれのメインホイール111aは互いに異なるモーターによって駆動されることができる。
【0049】
サブホイール111bはメインホイール111aとともに本体110を支持し、メインホイール111aによる移動ロボット100の走行を補助するように構成される。このようなサブホイール111bは後述する吸入ユニット130にも備えられることができる。
【0050】
吸入ユニット130は本体110の前方Fに突出した形態に配置されることができる。吸入ユニット130はほこりが含まれた空気を吸入するように備えられる。
【0051】
吸入ユニット130は本体110の前方から左右両側方に突出した形態を有することができる。吸入ユニット130の前端部は本体110の一側から前方に離隔した位置に配置されることができる。吸入ユニット130の左右両端部は本体110から左右両側にそれぞれ離隔した位置に配置されることができる。
【0052】
本体110は円形に形成され、吸入ユニット130の後端部両側が本体110から左右両側にそれぞれ突設されることにより、本体110と吸入ユニット130との間には空間、すなわち隙間が形成されることができる。前記空間は本体110の左右両端部と吸入ユニット130の左右両端部間の空間であり、移動ロボット100の内側に陷沒した形態を有する。
【0053】
吸入ユニット130は本体110に着脱可能に結合されることができる。吸入ユニット130が本体110から分離されれば、分離された吸入ユニット130を代替して雑巾モジュール(図示せず)が本体110に着脱可能に結合されることができる。
【0054】
映像獲得部120は本体110に配置されることができる。映像獲得部120は本体110の前方Fに配置されることができる。映像獲得部120は本体110の上下方向に吸入ユニット130とオーバーラップ(overlap)するように配置されることができる。映像獲得部120は吸入ユニット130の上部に配置されることができる。
【0055】
映像獲得部120は移動ロボット100周辺の障害物を感知することができる。映像獲得部120は移動ロボット100の最も前側に位置する吸入ユニット130が障害物とぶつからないように前方の障害物、地形地物などを感知することができる。映像獲得部120はこのような感知機能以外の後述する他のセンシング機能をさらに遂行することができる。
【0056】
また、本発明の一実施例による移動ロボット100の映像獲得部120は、本体110の一面に対して斜めに配置されて前方と上方を一緒に撮影するように構成されたカメラセンサーを含むことができる。すなわち、単一カメラセンサーで前方と上方を一緒に撮影することができる。この場合、制御部150はカメラが撮影して獲得した映像から前方映像と上方映像を画角を基準に分離することができる。分離された前方映像はビジョン(vision)基盤の事物認識に使われることができる。また、分離された上方映像はビジョン(vision)基盤の位置認識及び走行に使われることができる。
【0057】
本発明による移動ロボット100は周辺のイメージをイメージ基盤の既保存の情報と比較するか獲得されるイメージを比較することによって現在位置を認識するビジョンSLAM(Simultaneous localization and mapping、SLAM)を遂行することができる。
【0058】
本体110には集塵筒収容部(図示せず)が備えられることができる。集塵筒収容部には吸入された空気中のほこりを分離して集塵する集塵筒140が着脱可能に結合される。集塵筒収容部は本体110の後方Rに形成されることができる。集塵筒140の一部は集塵筒収容部に収容されるが、集塵筒140の他の一部は本体110の後方Rに向かって突出するように形成されることができる。
【0059】
集塵筒140にはほこりが含まれた空気が流入する入口(図示せず)とほこりが分離された空気が排出される出口(図示せず)が形成される。集塵筒収容部に集塵筒140が装着されるとき、集塵筒140の前記入口と前記出口は集塵筒収容部の内側壁に形成された第1開口(図示せず)及び第2開口(図示せず)とそれぞれ連通するように構成される。
【0060】
吸入ユニット130の吸入口から前記第1開口まで空気を案内する吸入流路(図示せず)が備えられる。前記第2開口から外部に向かって開いている排気口(図示せず)まで空気を案内する排気流路(図示せず)が備えられる。
【0061】
吸入ユニット130を介して流入したほこりが含まれた空気は本体110内部の前記吸気流路を通して集塵筒140に流入し、集塵筒140のフィルター又はサイクロンを経るにつれて空気とほこりが互いに分離される。ほこりは集塵筒140に集塵され、空気は集塵筒140から排出された後、本体110内部の前記排気流路を通して最終的に前記排気口を通して外部に排出される。
【0062】
図4は本発明の一実施例による移動ロボットの主要構成間の制御関係を示すブロック図である。
【0063】
図1〜
図4を参照すると、移動ロボット100は、本体110と、本体110周辺の映像を獲得する映像獲得部120とを含む。
【0064】
移動ロボット100は、本体110を移動させる走行部160を含む。走行部160は、本体110を移動させる少なくとも一つのホイールユニット111を含む。走行部160は、ホイールユニット111に連結されてホイールユニット111を回転させる駆動モーター(図示せず)を含む。
【0065】
映像獲得部120は走行区域を撮影するものであり、カメラモジュールを含むことができる。前記カメラモジュールは、デジタルカメラを含むことができる。デジタルカメラは、少なくとも一つの光学レンズと、光学レンズを通過した光によって像が結ばれる多数の光ダイオード(photodiode、例えばpixel)を含んでなるイメージセンサー(例えば、CMOSイメージセンサー)と、光ダイオードから出力された信号に基づいて映像を構成するデジタル信号処理器(DSP:Digital Signal Processor)を含むことができる。デジタル信号処理器は静止映像はもちろんのこと、静止映像から構成されたフレームからなる動画を生成することも可能である。
【0066】
このようなカメラは、撮影効率のために各部位別に多数が取り付けられることもできる。カメラによって撮像された映像は、該当空間に存在するほこり、髪の毛、床などの物質の種類認識、掃除遂行有無、又は掃除時点を確認するのに使える。
【0067】
カメラは、移動ロボット100の走行方向の前面に存在する障害物又は掃除領域の状況を撮影することができる。
【0068】
本発明の一実施例によれば、前記映像獲得部120は、本体110の周辺を連続的に撮影して複数の映像を獲得することができ、獲得された複数の映像は保存部105に保存されることができる。
【0069】
移動ロボット100は、複数の映像を用いて空間認識、位置認識、障害物認識の正確性を高めるか、複数の映像の中で一つ以上の映像を選択して効果的なデータを使うことによって空間認識、位置認識、障害物認識の正確性を高めることができる。
【0070】
また、移動ロボット100は、移動ロボットの動作及び状態に係わる各種のデータをセンシングするセンサーを含むセンサー部170を含むことができる。
【0071】
例えば、前記センサー部170は、前方の障害物を感知する障害物感知センサーを含むことができる。また、前記センサー部170は、走行区域内の床に段差の存在有無を感知する段差感知センサーと、床の映像を獲得する下部カメラセンサーとをさらに含むことができる。
【0072】
前記障害物感知センサーは、赤外線センサー、超音波センサー、RFセンサー、地磁気センサー、PSD(Position Sensitive Device)センサーなどを含むことができる。
【0073】
一方、前記障害物感知センサーに含まれるセンサーの位置と種類は移動ロボットの機種によって変わることができ、前記障害物感知センサーはもっと多様なセンサーを含むことができる。
【0074】
一方、前記センサー部170は、本体110の駆動による移動ロボット100の走行動作を感知し、動作情報を出力する走行感知センサーをさらに含むことができる。走行感知センサーとしては、ジャイロセンサー(Gyro Sensor)、ホイールセンサー(Wheel Sensor)、加速度センサー(Acceleration Sensor)などを使える。走行感知センサーの少なくとも一つで感知されるデータ又は走行感知センサーの少なくとも一つで感知されるデータに基づいて算出されるデータは走行距離計測(odometry)情報を構成することができる。
【0075】
ジャイロセンサーは、移動ロボット100が運転モードによって動くとき、回転方向を感知し、回転角を検出する。ジャイロセンサーは、移動ロボット100の角速度を検出し、角速度に比例する電圧値を出力する。制御部150は、ジャイロセンサーから出力される電圧値を用いて回転方向及び回転角を算出する。
【0076】
ホイールセンサーはホイールユニット111に連結されてコマの回転数を感知する。ここで、ホイールセンサーはエンコーダ(Encoder)であり得る。
【0077】
制御部140は、回転数を用いて左右側コマの回転速度を演算することができる。また、制御部140は、左右側コマの回転数差を用いて回転角を演算することができる。
【0078】
加速度センサーは、移動ロボット100の速度変化、例えば出発、停止、方向転換、物体との衝突などによる移動ロボット100の変化を感知する。
【0079】
また、加速度センサーは、制御部150に内蔵されて移動ロボット100の速度変化を感知することができる。
【0080】
制御部150は、走行感知センサーから出力された動作情報に基づいて移動ロボット100の位置変化を算出することができる。このような位置は映像情報を用いた絶対位置に対応する相対位置となる。移動ロボットは、このような相対位置認識によって映像情報と障害物情報を用いた位置認識の性能を向上させることができる。
【0081】
一方、移動ロボット100は、充電可能なバッテリーを備えて移動ロボット内に電源を供給する電源供給部(図示せず)を含むことができる。
【0082】
前記電源供給部は、移動ロボット100の各構成要素に駆動電源と動作電源を供給し、電源残量が足りなければ、充電台(図示せず)で電源を受けて充電されることができる。
【0083】
移動ロボット100は、バッテリーの充電状態を感知し、感知結果を制御部150に伝送するバッテリー感知部(図示せず)をさらに含むことができる。バッテリーはバッテリー感知部と連結されることにより、バッテリーの残量及び充電状態が制御部150に伝達される。バッテリー残量は出力部(180)のディスプレイ182に表示されることができる。
【0084】
また、移動ロボット100は、オン/オフ(On/Off)又は各種の命令を入力することができる入力部125を含む。入力部125は、ボタン、ダイヤル、タッチスクリーンなどを含むことができる。入力部125を介して移動ロボット100の作動全般に必要な各種の制御命令を受けることができる。
【0085】
また、移動ロボット100は出力部180を含み、予約情報、バッテリー状態、動作モード、動作状態、エラー状態などをイメージで表示するか音響で出力することができる。
【0086】
出力部180は、オーディオ信号を出力する音響出力部181を含むことができる。音響出力部181は、制御部150の制御によって、警告音、動作モード、動作状態、エラー状態などのお知らせメッセージなどを音響として出力することができる。音響出力部181は、制御部150からの電気信号をオーディオ信号に変換して出力することができる。このために、スピーカーなどを備えることができる。
【0087】
また、出力部180は、予約情報、バッテリー状態、動作モード、動作状態、エラー状態などをイメージで表示するディスプレイ182をさらに含むことができる。
【0088】
図4を参照すると、移動ロボット100は、現在位置を認識するなど、各種情報を処理して判断する制御部150、及び各種のデータを保存する保存部130を含む。また、移動ロボット100は、外部端末機とデータを送受信する通信部190をさらに含むことができる。
【0089】
外部端末機は移動ロボット100を制御するためのアプリケーションを備え、アプリケーションの実行によって移動ロボット100が掃除する走行区域に対するマップを表示し、マップ上に特定領域を掃除するように領域を指定することができる。外部端末機は、マップ設定のためのアプリケーション(application)が組み込まれたリモコン、PDA、ラップトップ(laptop)、スマートフォン、タブレットなどを例として挙げることができる。
【0090】
外部端末機は、移動ロボット100と通信して、マップとともに移動ロボットの現在位置を表示することができ、複数の領域についての情報が表示されることができる。また、外部端末機は、移動ロボットの走行につれてその位置を更新して表示する。
【0091】
制御部150は、移動ロボット100を構成する映像獲得部120、入力部125、走行部160、吸入ユニット130などを制御して移動ロボット100の動作全般を制御する。
【0092】
制御部150は、入力部125のマイクを介して受信される使用者の音声入力信号を処理して音声認識過程を遂行することができる。実施例によって、移動ロボット100は、制御部150の内部又は外部に音声認識を行う音声認識モジュールを備えることができる。
【0093】
実施例によって、簡単な音声認識は移動ロボット100が自ら遂行し、自然語処理などの高次元の音声認識はサーバー70で遂行されることができる。
【0094】
保存部105は移動ロボット100の制御に必要な各種情報を記録するものであり、揮発性又は非揮発性記録媒体を含むことができる。記録媒体はマイクロプロセッサ(micro processor)によって読められるデータを保存したものであり、HDD(Hard Disk Drive)、SSD(Solid State Disk)、SDD(Silicon Disk Drive)、ROM、RAM、CD−ROM、磁気テープ、フロッピーディスク、光データ保存装置などを含むことができる。
【0095】
また、保存部105には走行区域に対するマップ(Map)が保存されることができる。マップは移動ロボット100と有線通信又は無線通信を介して情報を交換することができる外部端末機、サーバーなどによって入力されたものでも、移動ロボット100が自ら学習して生成したものでもあり得る。
【0096】
マップには走行区域内の部屋の位置が表示されることができる。また、移動ロボット100の現在位置がマップ上に表示されることができ、マップ上での移動ロボット100の現在の位置は走行過程で更新されることができる。外部端末機は、保存部105に保存されたマップと同一のマップを保存する。
【0097】
前記保存部105は、掃除履歴情報を保存することができる。このような掃除履歴情報は掃除を行う度に生成されることができる。
【0098】
前記保存部105に保存される走行区域に対するマップ(Map)は走行区域の所定情報を所定形式で保存したデータであり、掃除中の走行に使われるナビゲーションマップ(Navigation map)、位置認識に使われるSLAM(Simultaneous localization and mapping)マップ、障害物などにぶつかれば該当情報を保存して学習掃除時に使用する学習マップ、全域位置認識に使われる全域位置マップ、認識された障害物についての情報が記録される障害物認識マップなどであり得る。
【0099】
前記マップ(Map)は複数のノードを含むノードマップを意味することができる。ここで、ノード(Node)とは、走行区域内のいずれか一位置である地点に対応するマップ上のいずれか一位置を示すデータを意味することができ、グラフ(graph)基盤のSLAMでノードはロボットのポーズ(pose)を意味することができる。また、ポーズ(pose)は座標系上の位置座標情報(X、Y)と方向情報(θ)を含むことができる。
【0100】
前記ノードマップは、各ノードに対応する各種のデータであるノード情報を含むことができる。例えば、ノード情報は、位置情報、ノードに対応する地点で獲得した映像情報などを含むことができる。位置情報(X、Y、θ)は、対応するノードでのロボットのX座標(X)、ロボットのY座標(Y)、及び方向(Direction)情報(θ)を含むことができる。方向情報(θ)は角度情報などとも名付けられることができる。
【0101】
一方、上述したように、用途別に前記保存部130にマップを区分して保存及び管理することができるが、マップが用途別に明確に区分されないこともある。例えば、少なくとも2以上の用途に使えるように単一マップに複数の情報を保存することもできる。
【0102】
制御部150は、走行制御モジュール151、地図生成モジュール152、位置認識モジュール153及び障害物認識モジュール154を含むことができる。
【0103】
図1〜
図4を参照すると、走行制御モジュール151は移動ロボット100の走行を制御するものであり、走行設定によって走行部160の駆動を制御する。また、走行制御モジュール151は、走行部160の動作に基づいて移動ロボット100の走行経路を把握することができる。例えば、走行制御モジュール151は、ホイールユニット111の回転速度に基づいて移動ロボット100の現在又は過去の移動速度、走行した距離などを把握することができ、このように把握された移動ロボット100の走行情報に基づいて、マップ上で移動ロボット100の位置が更新されることができる。
【0104】
地図生成モジュール152は、走行区域のマップを生成することができる。地図生成モジュール152は、映像獲得部120を介して獲得した映像を処理してマップを作成することができる。すなわち、掃除領域と対応する掃除マップを作成することができる。
【0105】
また、地図生成モジュール152は、各位置で映像獲得部120を介して獲得した映像を処理し、マップに関連させて全域位置を認識することができる。
【0106】
位置認識モジュール153は、現在位置を推定して認識する。位置認識モジュール153は、映像獲得部120の映像情報を用いて地図生成モジュール152と関連して位置を把握することにより、移動ロボット100の位置が急に変更される場合にも現在位置を推定して認識することができる。
【0107】
また、位置認識モジュール153は現在位置する領域の属性を認識することができる。すなわち、位置認識モジュール153は空間を認識することができる。
【0108】
移動ロボット100は、位置認識モジュール153を介して連続的な走行中に位置認識が可能であり、また位置認識モジュール153なしに地図生成モジュール152及び障害物認識モジュール154を介してマップを学習し、現在位置などを推定することができる。
【0109】
移動ロボット100が走行するうち、映像獲得部120は移動ロボット100の周辺の映像を獲得する。以下、映像獲得部120によって獲得された映像を‘獲得映像’と定義する。
【0110】
獲得映像には、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などのさまざまな特徴(feature)が含まれる。
【0111】
地図生成モジュール152は獲得映像のそれぞれから特徴を検出し、各特徴点に基づいてディスクリプタ(descriptor)を算出する。ディスクリプタ(descriptor)は、特徴点を示すための所定形式のデータを意味し、ディスクリプタ間の距離又は類似度を算出することができる形式の数学的データを意味する。例えば、ディスクリプタはn次元ベクター(nは自然数)又は行列形式のデータであり得る。
【0112】
また、本発明の一実施例によれば、獲得映像を複数のブロックに分割し、ブロック単位でも特徴を検出することができる。また、このときに検出された特徴点に基づいてもディスクリプタを算出することができる。
【0113】
以下で説明する獲得映像で検出された特徴及びディスクリプタは獲得映像を分割したブロック単位の映像で検出された特徴とこれに基づくディスクリプタを含むことができる。
【0114】
地図生成モジュール152は、各位置の獲得映像によって得たディスクリプタ情報に基づいて、獲得映像ごとに少なくとも一つのディスクリプタを所定の下位分類規則によって複数の群に分類し、所定の下位代表規則によって同じ群に含まれたディスクリプタをそれぞれ下位代表ディスクリプタに変換することができる。
【0115】
他の例で、室(room)のように所定区域内の獲得映像から集まった全てのディスクリプタを所定の下位分類規則によって複数の群に分類し、前記所定の下位代表規則によって同じ群に含まれたディスクリプタをそれぞれ下位代表ディスクリプタに変換することもできる。
【0116】
地図生成モジュール152は、このような過程によって各位置の特徴分布を求めることができる。各位置特徴分布はヒストグラム又はn次元ベクターで表現されることができる。さらに他の例で、地図生成モジュール152は、所定の下位分類規則及び所定の下位代表規則に従わず、各特徴点から算出されたディスクリプタに基づいて未知の現在位置を推定することができる。
【0117】
また、位置跳躍などの理由で移動ロボット100の現在位置が未知の状態になった場合、既保存のディスクリプタ又は下位代表ディスクリプタなどのデータに基づいて現在位置を推定することができる。
【0118】
移動ロボット100は、未知の現在位置で映像獲得部120を介して獲得映像を獲得する。映像によって、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などのさまざまな特徴(feature)が確認される。
【0119】
位置認識モジュール153は、未知の現在位置の獲得映像によって得た少なくとも一つのディスクリプタ情報に基づいて、所定の下位変換規則によって比較対象となる位置情報(例えば、各位置の特徴分布)と比較可能な情報(下位認識特徴分布)に変換する。
【0120】
所定の下位比較規則によって、それぞれの位置特徴分布をそれぞれの認識特徴分布と比較してそれぞれの類似度を算出することができる。それぞれの位置にあたる前記位置別に類似度(確率)を算出し、その中で最大の確率が算出される位置を現在位置に決定することができる。このような類似度算出はブロック段位で遂行されることができる。
【0121】
このように、制御部150は、走行区域を区分して複数の領域から構成されたマップを生成するか、既保存のマップに基づいて本体110の現在位置を認識することができる。
【0122】
制御部150は、マップが生成されれば、生成されたマップを通信部190を介して外部端末機、サーバーなどに伝送することができる。また、制御部150は、前述したように、外部端末機、サーバーなどからマップが受信されれば、保存部105に保存することができる。
【0123】
ここで、マップは、掃除領域を複数の領域に区分し、複数の領域を連結する連結通路を含み、領域内の障害物についての情報を含むことができる。
【0124】
制御部150は、掃除命令が入力されれば、マップ上の位置と移動ロボットの現在位置が一致するかを判断する。掃除命令は、リモコン、入力部又は外部端末機から入力されることができる。
【0125】
制御部150は、現在位置がマップ上の位置と一致しない場合、又は現在位置を確認することができない場合、現在位置を認識して移動ロボット100の現在位置を復旧した後、現在位置に基づいて指定領域に移動するように走行部160を制御することができる。
【0126】
現在位置がマップ上の位置と一致しない場合又は現在位置を確認することができない場合、位置認識モジュール153は、映像獲得部120から入力される獲得映像を分析し、マップに基づいて現在位置を推定することができる。また、障害物認識モジュール154又は地図生成モジュール152も同様な方式で現在位置を認識することができる。
【0127】
位置を認識して移動ロボット100の現在位置を復旧した後、走行制御モジュール151は、現在位置から指定領域に走行経路を算出し、走行部160を制御して指定領域に移動する。
【0128】
サーバーから掃除パターン情報を受信する場合、走行制御モジュール151は、受信した掃除パターン情報によって、全体走行区域を複数の領域に分け、一つ以上の領域を指定領域に設定することができる。
【0129】
また、走行制御モジュール151は、受信した掃除パターン情報によって走行経路を算出し、走行経路に沿って走行して掃除を行うことができる。
【0130】
制御部150は、設定された指定領域に対する掃除が完了すれば、掃除記録を保存部105に保存することができる。
【0131】
また、制御部150は、通信部190を介して移動ロボット100の動作状態又は掃除状態を所定の周期で外部端末機及びサーバーに伝送することができる。
【0132】
それにより、外部端末機は、受信されるデータに基づいて、実行中のアプリケーションの画面上にマップとともに移動ロボットの位置を表示し、また掃除状態についての情報を出力する。
【0133】
本発明の実施例による移動ロボット100は、一方向に障害物又は壁面が感知されるまで移動していて、障害物認識モジュール154が障害物を認識すれば、認識された障害物の属性によって直進、回転などの走行パターンを決定することができる。
【0134】
一方、制御部150は、認識された障害物の属性に基づいて他のパターンで回避走行を遂行するように制御することができる。制御部150は、非危険障害物(一般障害物)、危険障害物、移動可能な障害物などの障害物の属性によって他のパターンで回避走行するように制御することができる。
【0135】
例えば、制御部150は、危険障害物はもっと長い距離の安全距離を確保した状態で迂回して回避するように制御することができる。
【0136】
また、制御部150は、移動可能な障害物の場合、所定の待機時間後にも障害物が移動しなければ、一般障害物に対応する回避走行又は危険障害物に対応する回避走行を遂行するように制御することができる。もしくは、制御部150は、移動可能な障害物に対応する回避走行パターンが別に設定された場合には、これによって走行するように制御することができる。
【0137】
本発明の実施例による移動ロボット100は、マシンラーニング(machine learning)基盤の障害物認識及び回避を遂行することができる。
【0138】
前記制御部150は、入力映像からマシンラーニング(machine learning)で既に学習された障害物を認識する障害物認識モジュール154と、前記認識された障害物の属性に基づいて前記走行部160の駆動を制御する走行制御モジュール151とを含むことができる。
【0139】
一方、
図4では複数のモジュール151、152、153、154が制御部150内に別に備えられる例を示したが、本発明はこれに限定されない。
【0140】
例えば、位置認識モジュール153と障害物認識モジュール154は一つの認識器として統合されて単一認識モジュール155に構成されることができる。この場合、マシンラーニングなどの学習技法を用いて認識器を学習させ、学習された認識器は以後に入力されるデータを分類して領域、事物などの属性を認識することができる。
【0141】
実施例によって、地図生成モジュール152、位置認識モジュール153、及び障害物認識モジュール154が単一統合モジュールに構成されることもできる。
【0142】
以下では、位置認識モジュール153と障害物認識モジュール154は単一認識器に統合されて単一認識モジュール155に構成される実施例を中心に説明するが、位置認識モジュール153と障害物認識モジュール154がそれぞれ備えられる場合にも同様な方式で動作することができる。
【0143】
本発明の実施例による移動ロボット100は、マシンラーニングで事物、空間の属性が学習された認識モジュール155を含むことができる。
【0144】
マシンラーニングはコンピュータにヒトが直接ロジッグ(Logic)を指示しなくてもデータによってコンピュータが学習し、これによりコンピュータが分かって問題を解決するようにすることを意味する。
【0145】
ディープラーニング(Deep Learning)は人工知能(artificial intelligence)を構成するための人工神経網(Artificial Neural Networks:ANN)に基づいてコンピュータにヒトの考え方を教える方法であり、ヒトが教えなくてもコンピュータが自らヒトのように学習することができる人工知能技術である。
【0146】
前記人工神経網(ANN)はソフトウェア形態に具現されるか、チップ(chip)などのハードウェア形態に具現されることができる。
【0147】
認識モジュール155は、空間の属性、障害物などの事物の属性が学習されたソフトウェア又はハードウェア形態の人工神経網(ANN)を含むことができる。
【0148】
例えば、認識モジュール155は、ディープラーニング(Deep Learning)で学習されたCNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)、DBN(Deep Belief Network)などの深層神経網(Deep Neural Network:DNN)を含むことができる。
【0149】
障害物認識モジュール155は、前記深層神経網(DNN)に含まれたノード間の加重値(weight)に基づいて入力される映像データに含まれる空間、事物の属性を判別することができる。
【0150】
一方、前記走行制御モジュール151は、前記認識された空間、障害物の属性に基づいて前記走行部160の駆動を制御することができる。
【0151】
一方、認識モジュール155は、マシンラーニング(machine learning)で既に学習されたデータに基づいて前記選択された特定時点映像に含まれる空間、障害物の属性を認識することができる。
【0152】
一方、保存部105には、空間、事物属性判別のための入力データ及び前記深層神経網(DNN)を学習するためのデータが保存されることができる。
【0153】
保存部105には、映像獲得部120が獲得した原本映像と所定領域が抽出された抽出映像が保存されることができる。
【0154】
また、実施例によって、保存部105には、前記深層神経網(DNN)構造を成すウェイト(weight)、バイアス(bias)が保存されることができる。
【0155】
もしくは、実施例によって、前記深層神経網構造を成すウェイト(weight)、バイアス(bias)は認識モジュール155の組み込みメモリ(embedded memory)に保存されることができる。
【0156】
一方、前記認識モジュール155は、前記映像獲得部120が映像を獲得するか映像の一部領域を抽出する度に所定映像をトレーニング(training)データとして使用して学習過程を遂行するか、所定個数以上の映像が獲得された後、学習過程を遂行することができる。
【0157】
もしくは、移動ロボット100は、通信部190を介して前記所定サーバーからマシンラーニングに係わるデータを受信することができる。
【0158】
この場合、移動ロボット100は、前記所定サーバーから受信されたマシンラーニングに係わるデータに基づいて認識モジュール155をアップデート(update)することができる。
【0159】
図5は本発明の一実施例による移動ロボットの制御方法を示すフローチャートで、マップ生成過程を示すフローチャートであり、
図6〜
図9は
図5の制御方法についての説明に参照される図である。
【0160】
図6及び
図7は、
図5の走行及び情報獲得過程(S501)、ノード生成過程(S502)、ノードマップ生成過程(S503)、境界生成過程(S504)、境界マップ生成過程(S505)及びディスクリプタ生成過程(S506)を例示的に示す概念図である。
【0161】
図6には、前記過程(S501)で獲得した映像と映像内の複数の特徴点f1、f2、f3、f4、f5、f6、f7が示され、前記過程(S506)で複数の特徴点f1、f2、f3、...、f7にそれぞれ対応するn次元ベクターであるディスクリプタ
を生成させる図式が示される。
【0162】
図6及び
図7を参照すると、情報獲得過程(S501)で、移動ロボット100が走行するうちに映像獲得部120は各地点で映像を獲得する。例えば、映像獲得部120は、移動ロボット100の上側に向けて撮影して天井などの映像を獲得することができる。
【0163】
また、情報獲得過程(S501)で、移動ロボット100が走行するうちにセンサー部170、映像獲得部120、その他の公知の手段を用いて走行障害要素を感知することができる。
【0164】
移動ロボット100は、各地点で走行障害要素を感知することができる。例えば、移動ロボットは特定地点で走行障害要素の一つである壁体の外側面を感知することができる。
【0165】
図6及び
図7を参照すると、ノード生成過程(S502)で、移動ロボット100は、各地点に対応するノードを生成する。ノードNa18、Na19、Na20に対応する座標情報は移動ロボット100が測定した走行変位に基づいて生成されることができる。
【0166】
走行変位は、移動ロボットの移動方向と移動距離を含む概念である。走行区域の床面をX軸及びY軸が直交する平面上にあると仮定すると、走行変位は
で表現することができる。
はそれぞれX軸及びY軸方向変位を意味し、θは回転角度を意味する。
【0167】
制御部150は、走行部160の動作に基づいて移動ロボット100の走行変位を測定することができる。例えば、走行制御モジュール151はホイールユニット111の回転速度に基づいて移動ロボット100の現在又は過去の移動速度、走行した距離などを測定することができ、ホイールユニット111の回転方向によって現在又は過去の方向転換過程も測定することができる。
【0168】
また、制御部150は、センサー部170でセンシングされるデータを用いて前記走行変位を測定することも可能である。
【0169】
図6及び
図7を参照すると、境界情報生成過程(S504)で、移動ロボット100は、走行障害要素に対応する境界情報b20を生成する。境界情報生成過程(S504)で、移動ロボット100は、各走行障害要素にそれぞれ対応する各境界情報を生成する。複数の走行障害要素に複数の境界情報が一対一で対応する。境界情報b20は対応するノードの座標情報とセンサー部170が測定した距離値に基づいて生成されることができる。
【0170】
図6及び
図7を参照すると、ノードマップ生成過程(S503)及び境界マップ生成過程(S505)は同時に進行される。ノードマップ生成過程(S503)で、複数のノードNa18、Na19、Na20などを含むノードマップが生成される。境界マップ生成過程(S505)で、複数の境界情報(b20など)を含む境界マップBaが生成される。ノードマップ生成過程(S503)及び境界マップ生成過程(S505)で、ノードマップ及び境界マップBaを含むマップMaが生成される。
図6には、ノードマップ生成過程(S503)及び境界マップ生成過程(S505)を経て生成されているマップMaを示す。
【0171】
図6に示した映像には、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などによるさまざまな特徴点が確認される。移動ロボット100は、映像から特徴点を抽出する。コンピュータビジョン(Computer Vision)技術分野で映像から特徴点を抽出する多様な方法(Feature Detection)がよく知られている。これらの特徴点の抽出に適した様々な特徴検出器(feature detector)が知られている。例えば、Canny、Sobel、Harris&Stephens/Plessey、SUSAN、Shi&Tomasi、Level curve curvature、FAST、Laplacian of Gaussian、Difference of Gaussians、Determinant of Hessian、MSER、PCBR、Grey−level blobs検出器などがある。
【0172】
また、このような特徴点抽出はポイント(point)に基づいて遂行されることができ、ブロック段位でも遂行されることができる。
【0173】
図6を参照すると、ディスクリプタ生成過程(S506)で、獲得された映像から抽出された複数の特徴点f1、f2、f3、...、f7に基づいてディスクリプタ
を生成する。前記ディスクリプタ生成過程(S506)で、獲得された複数の映像から抽出された複数の特徴点f1、f2、f3、...、fmに基づいてディスクリプタ
を生成する(ここで、mは自然数)。複数の特徴点f1、f2、f3、...、fmに複数のディスクリプタ
は一対一で対応する。
【0174】
はn次元ベクターを意味する。
の中括弧{}内のf1(1)、f1(2)、f1(3)、...、f1(n)は
を成す各次元の数値を意味する。残りの
に対する表記もこのような方式であるので、説明を省略する。
【0175】
特徴検出のために、SIFT(Scale Invariant Feature Transform)技法を用いて、複数の特徴点f1、f2、f3、...、fmに対応する複数のディスクリプタ
を生成することができる。
【0176】
例えば、SIFT技法を適用して、映像で識別の容易な特徴点f1、f2、f3、f4、f5、f6、f7を選択した後、各特徴点f1、f2、f3、f4、f5、f6、f7周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性(明るさ変化の方向及び変化の急激な程度)に基づいてn次元ベクターであるディスクリプタを生成することができる。ここで、特徴点の各明るさ変化の方向を各次元と見なし、各明るさ変化の方向に対する変化の急激な程度を各次元に対する数値にするn次元ベクター(ディスクリプタ)を生成することができる。SIFT技法は、撮影対象のスケール(scale)、回転、明るさ変化に対して変わらない特徴を検出することができるので、同じ領域を移動ロボット100の姿勢を変えながら撮影しても変わらない(すなわち、回転不変(Rotation−invariant))特徴を検出することができる。もちろん、これに限定されず、他の多様な技法(例えば、HOG:Histogram of Oriented Gradient、Haar feature、Fems、LBP:Local Binary Pattern、MCT:Modified Census Transform)を適用することも可能である。
【0177】
一方、ブロック単位でも次元ベクターであるディスクリプタを生成することができる。例えば、各ブロックの明るさ勾配(gradient)の分布特性(明るさ変化の方向及び変化の急激な程度)に基づいてn次元ディスクリプタを生成することができる。
【0178】
図8は、移動ロボットが移動しながら生成する複数のノードN及びノード間の変位Cを示す概念図である。
【0179】
図8を参照すると、原点ノードOが設定された状態で走行変位C1が測定されてノードN1の情報が生成される。以後に測定された走行変位C2の時点となるノードN1の座標情報に前記走行変位C2を加えて、前記走行変位C2の終点となるノードN2の座標情報を生成することができる。ノードN2の情報が生成された状態で走行変位C3が測定されてノードN3の情報が生成される。このように、順次測定される走行変位C1、C2、C3、…、C16に基づいてノードN1、N2、N3、…、N16の情報が順次生成される。
【0180】
いずれか一つの走行変位C15の時点となるノードC15を該当走行変位C15の終点となるノード16の‘基礎ノード’に定義すると、ループ変位(Loop Constraint、LC)はいずれか一つのノードN15及び前記いずれか一つのノードN15の前記‘基礎ノードN14ではない’他の隣接したノードN5間の変位が測定された値を意味する。
【0181】
一例として、いずれか一つのノードN15に対応する獲得映像情報と他の隣接したノードN5に対応する獲得映像情報が互いに比較されることにより、二つのノードN15、N5間のループ変位LCが測定されることができる。他の例で、いずれか一つのノードN15の周辺環境との距離情報と他の隣接したノードN5の周辺環境との距離情報が互いに比較されることにより、二つのノードN15、N5間のループ変位LCが測定されることができる。
図8には、ノードN5とノードN15との間で測定されたループ変位LC1、及びノードN4とノードN16との間で測定されたループ変位LC2が例示的に示されている。
【0182】
前記走行変位に基づいて生成されたいずれか一つのノードN5の情報は、ノード座標情報及び該当ノードに対応する映像情報を含むことができる。ノードN5に隣接する他のノードN15があるとき、ノードN15に対応する映像情報をノードN5に対応する映像情報と比較すると、二つのノードN5、N15間のループ変位LC1が測定される。‘ループ変位LC1’と‘既保存の二つのノードN5、N15の座標情報によって算出される変位’が互いに異なる場合、ノード座標情報に誤差があると見なし、二つのノードN5、N15の座標情報を更新することができる。この場合、二つのノードN5、N15と連結された他のノードN6、N7、N8、N9、N10、N11、N12、N13、N14の座標情報も更新されることができる。また、一度更新されたノード座標情報も続いて前記過程を経て繰り返し更新されることができる。
【0183】
より具体的に説明すれば次のようである。ループ変位LCが測定された二つのノードNをそれぞれ第1ループノード及び第2ループノードと定義する。既保存の第1ループノードのノード座標情報及び第2ループノードのノード座標情報によって算出される‘算出変位(Δx1、Δy1、θ1)’(座標値の差によって算出される)とループ変位LC(Δx2、Δy2、θ2)間の差(Δx1−Δx2、Δy1−Δy2、θ1−θ2)が発生し得る。前記差が発生すれば、前記差を誤差と見なしてノード座標情報を更新することができる。ここで、ループ変位LCが前記算出変位より正確な値であるという仮定の下でノード座標情報を更新する。
【0184】
ノード座標情報を更新する場合、前記第1ループノード及び第2ループノードのノード座標情報のみ更新することもできるが、前記誤差の発生は走行変位の誤差が累積して発生したものなので、前記誤差を分散させて他のノードのノード座標情報も更新するように設定することができる。例えば、前記第1ループノードと第2ループノードとの間に前記走行変位によって生成された全てのノードに、前記誤差値を分散させてノード座標情報を更新することができる。
図8を参照すると、ループ変位LC1が測定され、前記誤差が算出された場合、第1ループノードN15と第2ループノードN5間のノードN6〜N14に前記誤差を分散させることにより、ノードN5〜N15のノード座標情報が全て少しずつ更新されることができる。もちろん、このような誤差分散を拡大させて、以外のノードN1〜N4のノード座標情報を一緒に更新することもできるというのは言うまでもない
図9は第1マップMaの一例を示す概念図で、生成されたノードマップを含んでいる図である。
図9には、
図5によるマップ生成過程を経て生成されたいずれか一つのマップMaの一例が示される。前記マップMaは、ノードマップ及び境界マップBaを含む。前記ノードマップは、複数の第1ノードNa1〜Na99を含む。
【0185】
図9を参照すると、いずれか一つのマップMaはノードマップNa1、Na2、…、Na99及び境界マップBaを含むことができる。ノードマップは一つのマップ上のさまざまな情報の中で複数のノードからなる情報を指称するものであり、境界マップは一つのマップ上のさまざまな情報の中で複数の境界情報からなる情報を指称するものである。ノードマップと境界マップは前記マップの構成要素であり、ノードマップの生成過程(S502、S503)と境界マップの生成過程(S504、S505)は同時に進む。例えば、境界情報は、特定地点から離れた走行障害要素の距離を測定した後、前記特定地点に対応する既保存のノードの座標情報を基準に生成されることができる。例えば、ノードのノード座標情報は特定の走行障害要素から離れた特定地点の距離を測定した後、前記特定障害要素に対応する既保存の境界情報を基準に生成することができる。ノード及び境界情報は、既保存のいずれか一つに対する他の一つの相対的座標に基づいて他の一つがマップ上に生成されることができる。
【0186】
また、前記マップは前記過程(S506)で生成された映像情報を含むことができる。複数の映像情報は複数のノードに一対一で対応する。特定の映像情報は特定のノードに対応する。
【0187】
図10〜
図13は本発明の一実施例による位置認識についての説明に参照される図である。
【0188】
図10に基づいて認識映像の獲得過程及び認識ディスクリプタの生成過程を詳細に説明すれば次のようである。
【0189】
位置ジャンピング状況の発生によって、移動ロボット100の現在地点が未知(Unknown)の状態になる場合、認識映像の獲得過程が始まる。映像獲得部120は、未知の現在地点で認識映像を獲得する。もしくは、移動ロボット100の走行中に現在位置認識のために認識映像の獲得過程が始まる。
【0190】
認識映像は移動ロボット100の上側に向かって撮影されることができる。認識映像は天井を撮影したものであり得る。
図10に示した映像は現在地点に対応する認識映像である。
【0191】
図10を参照すると、認識映像から抽出された複数の認識特徴点h1、h2、h3、...、h7に基づいて複数の認識ディスクリプタ
を生成する。認識特徴点h1、h2、h3、...、h7に複数の認識ディスクリプタ
は一対一で対応する。
【0192】
図10で、
はn次元ベクターを意味する。
の中括弧{}内のh1(1)、h1(2)、h1(3)、...、h1(n)は
を成す各次元の数値を意味する。残りの
に対する表記もこのような方式であるので説明を省略する。
【0193】
特徴検出のために、前記SIFT技法を用いて、複数の認識特徴点h1、h2、h3、...、h7に対応する複数の認識ディスクリプタ
を生成することができる。コンピュータビジョン技術分野で映像から特徴を検出する多様な方法及びこれら特徴の検出に適したさまざまな特徴検出器についての説明は前述したようである。
【0194】
図11に基づいて前記特徴点(又はディスクリプタ)マッチング過程を詳細に説明すれば次のようである。前記マッチング過程で、認識映像内の複数の認識ディスクリプタ
にそれぞれ距離上最も近い全域ラベルディスクリプタをマッチングさせる。
図10で、認識ディスクリプタと全域ラベルディスクリプタの対応関係をマッチング線で示す。マッチング過程(S231)を進めれば、複数の認識ディスクリプタ
に複数の全域ラベルディスクリプタ
は一対一で対応する。
【0195】
例えば、認識ディスクリプタ
に距離上最も近い全域ラベルディスクリプタは
であり、認識ディスクリプタ
に全域ラベルディスクリプタ
が対応する。認識ディスクリプタ
に距離上最も近い全域ラベルディスクリプタは
であり、認識ディスクリプタ
に全域ラベルディスクリプタ
が対応する。認識ディスクリプタ
に距離上最も近い全域ラベルディスクリプタは
であり、認識ディスクリプタ
に全域ラベルディスクリプタ
が対応する。認識ディスクリプタ
に距離上最も近い全域ラベルディスクリプタは
であり、認識ディスクリプタ
に全域ラベルディスクリプタ
が対応する。この場合、全域X内の全ての全域ラベルディスクリプタ
の中で複数の認識ディスクリプタ
にマッチングした全域ラベルディスクリプタは
である。
図11には、マッチングした全域ラベルディスクリプタ
の生成根拠となったグループXG1、XG3、XG5、XG32で表示されている。
【0196】
図12に基づいて比較対象ノードの選択過程を詳細に説明すれば次のようである。前記比較対象ノードの選択過程で、マッチングした全域ラベルディスクリプタ
に対応する比較対象ノードを選択する。マッチングした複数の全域ラベルディスクリプタ
に複数のノードは一対多で対応する。
【0197】
例えば、マッチングした複数の全域ラベルディスクリプタ
に対応する比較対象ノードはN1、N14、N15、N38、N62、N63、N64である。選択されるそれぞれの比較対象ノードN1、N14、N15、N38、N62、N63、N64内の複数の全域ラベルディスクリプタは、前記マッチングした全域ラベルディスクリプタ
の少なくとも一つを含む。選択されなかった残りのノード内の複数の全域ラベルディスクリプタは、前記マッチングした全域ラベルディスクリプタ
の全部を含まない。
【0198】
具体的に、マッチングした全域ラベルディスクリプタ
の生成根拠となったディスクリプタを選択し、選択されたディスクリプタの生成根拠となった映像を選択し、選択された映像に対応するノードを比較対象ノードとする。
【0199】
例えば、いずれか一ディスクリプタAが所定の分類規則(第1所定分類規則)にしたがってグループA1G1に分類され、グループA1G1内のディスクリプタに基づいて所定のラベル規則(第1所定ラベル規則)にしたがって地域ラベルディスクリプタBが生成され、その後、地域ラベルディスクリプタBが所定の分類規則(第2所定分類規則)にしたがってグループXG5に分類され、グループXG5内の地域ラベルディスクリプタに基づいて所定のラベル規則(第2所定ラベル規則)にしたがって全域ラベルディスクリプタCが生成されれば、‘ディスクリプタAは全域ラベルディスクリプタCの生成根拠となる’と表現する。また、映像D内の複数のディスクリプタの中でディスクリプタAがあれば、‘映像DはディスクリプタAの生成根拠となる’と表現する。さらに、‘映像Dは全域ラベルディスクリプタCの生成根拠となる’と表現する。
【0200】
前記選択過程で、複数の映像の中で前記マッチングした全域ラベルディスクリプタ
の生成根拠となった映像を選択し、全てのノードの中で前記選択された映像に一対一で対応する比較対象ノードを選択する。
図12には、選択された比較対象ノードN1、N14、N15、N38、N62、N63、N64を黒い点で表示する。
【0201】
図13に基づいて比較対象ノード別に比較過程の一例を説明すれば次のようである。前記比較過程では、前記選択過程で選択された比較対象ノードN1、N14、N15、N38、N62、N63、N64に対応する映像のみ認識映像と比較する。比較結果、類似度が最も高く算出される映像に対応する比較対象ノードを最終ノードとして選択する。
【0202】
前記比較過程では、前記選択過程で選択された比較対象ノードN1、N14、N15、N38、N62、N63、N64に対してのみ各ノードN1、N14、N15、N38、N62、N63、N64に対応する映像特徴分布(例えば、映像特徴分布ベクター)を生成する。また、前記比較過程では、前記比較対象ノードN1、N14、N15、N38、N62、N63、N64の映像特徴分布と比較可能な認識映像特徴分布(例えば、認識映像特徴分布ベクター)を生成する。前記比較過程では、比較対象ノードN1、N14、N15、N38、N62、N63、N64別に映像特徴分布と認識映像特徴分布を比較し、最も高い類似度を有する一つのノードを最終ノード(現在地点と推定されるノード)として選択する。
【0203】
図13で、左側のヒストグラムは前記認識映像特徴分布ヒストグラムの一例を示すものである。認識映像特徴分布は前記マッチングした全域ラベルディスクリプタ
に基づいて生成される。マッチングした全域ラベルディスクリプタ
の認識スコア(Sh)は所定の数学式によって算出することができる。
【0204】
図13で、右側のヒストグラムは比較対象ノード別に映像特徴分布ヒストグラムの一例を示すものである。前記マッチングした全域ラベルディスクリプタ
に基づいて映像特徴分布が生成される。マッチングした全域ラベルディスクリプタ
の認識スコア(Sh)は所定の数学式によって算出することができる。
【0205】
いずれか一比較対象ノードの映像特徴分布は、各全域ラベルディスクリプタの種類を代表値(横軸の値)と見なし、各種類当たりウェイト(w)に基づいて算出されたスコア(s)を度数(縦軸の値)と見なす映像特徴分布ヒストグラムで表現されることができる。
【0206】
一方、映像内の複数の全域ラベルディスクリプタには、前記マッチングした全域ラベルディスクリプタ
の他にも他の全域ラベルディスクリプタ
があり得る。このような他の全域ラベルディスクリプタ
は映像特徴分布ヒストグラムの代表値となる必要がない。ただ、このような他の全域ラベルディスクリプタ
のウェイトは、マッチングした全域ラベルディスクリプタ
のスコア(S)に影響を与えることはできる。
【0207】
前記比較過程の後、比較対象ノードの中で現在位置と推定されるノードを選択することができる。前記比較過程で認識映像特徴分布を各比較対象ノード別に映像特徴分布と比較して、類似度が最も高いノードを選択する。ここで選択された類似度の最も高いノードに対応する位置が現在位置となる。
【0208】
一方、このような類似度が最も高いノードの選択はブロック単位でも遂行されることができる。
【0209】
図14及び
図15は本発明の一実施例によるブロック単位の特徴点抽出及びマッチングについての説明に参照される図である。
【0210】
一般に、SLAM技術のうちカメラセンサーを介して獲得される映像を用いるビジョンSLAM(Vision SLAM)の場合、カメラとポイント(Point)単位の特徴点基盤のマッチングを適用する。
【0211】
ポイント(Point)単位の特徴点は、特徴点の性能が良い場合、前フレーム映像との関係によってその特徴点の3Dポイント(Point)位置を復元することができ、これによりロボットの位置が容易に分かるという利点がある。
【0212】
ポイント(Point)の特徴点は、上述したSIFT、SURF、FAST、BRIEF、ORBなどの特徴点が広く使われ、各特徴点が有する特定のディスクリプタに基づいて映像間の同じ特徴点であるかを判断してマッチング(Matching)を遂行することにより、映像間の距離とディスパリティー(Disparity)によって3D座標を復元することになる。
【0213】
既存に使われるポイント基盤の特徴点は主に映像のピクセル単位の明るさ値変化量(Gradient)に基づいてディスクリプタを記述するから、シーン(Scene)の照明が変わるか映像全般的な明るさ変化量が大きい場合、ディスクリプタ間のマッチング(Matching)がうまくできないことがある。すなわち、ポイント(Point)特徴点基盤の自分位置認識技術の場合、映像の特性変化が頻繁な低照度状況で性能劣化が発生し得る。
【0214】
したがって、本発明は、ブロック単位の特徴点抽出及びマッチングを用いて照度変化及び低照度環境に強靭なマップ生成及び自分位置認識方法を提案する。
【0215】
図14を参照すると、映像獲得部120を介して獲得された映像を既設定の大きさのブロック(Bolck)B1、B2、B3、...、Bn−2、Bn−1、Bnに区分し、各ブロックB1、B2、B3、...、Bn−2、Bn−1、Bn単位で特徴点を抽出して保存することができる。
【0216】
その後、自分位置認識の際、現在位置で獲得された認識映像を既設定の大きさのブロック(Bolck)B1、B2、B3、...、Bn−2、Bn−1、Bnに区分し、各ブロックB1、B2、B3、...、Bn−2、Bn−1、Bn単位で特徴点を抽出して既保存のブロック単位の特徴点情報と比較することにより、自分の位置を認識することができる。
【0217】
より好ましくは、各ブロックB1、B2、B3、...、Bn−2、Bn−1、Bnは同じ大きさを有することができる。これにより、映像1400は同じ大きさのブロックB1、B2、B3、...、Bn−2、Bn−1、Bnから構成される格子形態1410に分割されることができる。
【0218】
ブロックが一定の大きさを有することにより、演算量を減少させ、ブロック間の比較、及び映像間の比較をもっと早く遂行することができる。
【0219】
また、映像獲得部120を介して獲得された映像で、抽出された特徴点に基づいてディスクリプタを算出して保存することができる。その後、自分位置認識の際、現在位置で獲得された認識映像を既設定の大きさのブロックB1、B2、B3、...、Bn−2、Bn−1、Bnに区分し、各ブロックB1、B2、B3、...、Bn−2、Bn−1、Bn単位で特徴点を抽出してディスクリプタを算出し、既保存のブロック単位のディスクリプタと類似度を算出し、最も類似したノードを現在の自分の位置と認識することができる。
【0220】
一般的なポイント(Point)基盤の特徴点に基づく自分位置認識は位置性能が良い反面、照度変化に敏感である。
【0221】
しかし、映像で多数の一定領域をブロック単位で指定し、そのブロック単位特徴点マッチング技術を適用することにより、照度変化に強靭に自分の位置を認識することができる。
【0222】
ビジョンSLAMでは、天井の映像を獲得し、天井の特徴点を抽出して用いることができる。この際、天井の特徴的な線分を用いることが効果的である。
図15は映像1400内の特徴的な線分L1、L2、L3、L4、L5、L6、L7、L8を例示する。
【0223】
ポイント基盤の特徴点抽出及びマッチングは特徴点に対応するピクセルの明るさ値変化量(Gradient)を使うが、低照度の環境で天井の特徴的な線分L1、L2、L3、L4、L5、L6、L7、L8がよく認識できないこともある。例えば、暗い環境で獲得された全体映像でピクセル単位の明るさ値変化によって天井の特徴的な線分、及び線分のクロスの識別が難しい。
【0224】
しかし、本発明の一実施例によれば、ブロック単位の変化量を使ってブロック単位の映像に含まれる特徴的な線分をよりうまく認識することができるので、天井の特徴的な線分をよく認識することができる。また、ブロック内に電灯、装飾物線分などの少なくとも一部がその形態を維持したままでブロックに含まれるので、特徴点の抽出が容易である。
【0225】
本発明の一実施例によれば、天井の線分を用いて映像特徴を回転させてマッチングするかロボットの走行方向を決定することにより、ロボットがもっと知能的な行動を行うもののように見えられる。
【0226】
本発明の一実施例によれば、ブロック基盤の特徴点抽出及びマッチングを遂行することができる。例えば、ブロック別の明るさ値変化量(Gradient)のヒストグラムを積んでブロック単位の類似度によって判断することになる。
【0227】
本発明によれば、制御部150は、映像獲得部120を介して獲得された天井又は全景の映像からカメラパラメーターを用いて天井線分を抽出することができる。
【0228】
また、制御部150は、ブロック単位の特徴点マッチングの際、映像を回転(rotation)して領域を再設定した後、マッチングを進めることができる。この場合、天井の線分情報を用いて移動ロボット100のモーション(motion)がより知能的に見えるようにすることができる。例えば、天井の線分に平行に走行することにより、天井の線分に対応して位置する可能性が高い壁体と一定の間隔を維持しながら安定的に走行することができる。
【0229】
本発明の一実施例によれば、ブロック単位の特徴点基盤マッチングを使うことにより、既存に生成したマップにおいて照明変化が大きくなった場合又は低照度環境でも自分位置認識性能を保障することができる。
【0230】
本発明の一実施例によれば、マップ作成の際、ポイント(Point)基盤の特徴点とブロック(Block)基盤の特徴点を全部抽出してマップに保存することができる。
【0231】
これにより、追後にポイント(Point)基盤の特徴点とブロック(Block)基盤の特徴点を必要によって選択するか混合して使うことにより、多様な照明変化に対応することができる。
【0232】
例えば、ポイント(Point)基盤の特徴点とブロック(Block)基盤の特徴点を全部抽出してマップを作成するとき、ポイント基盤の特徴点で正確な自分位置認識を行い、サービスの際、ブロック基盤の特徴点を活用して照明変化、低照度環境でも強靭に自分の位置認識ができる。
【0233】
また、低照度環境で、自分の位置認識時、ブロック(Block)特徴点を用いてモンテカルロ法(Monte Carlo Localization、MCL)基盤の自分位置認識によって低照度状況でも自分位置認識が可能である。
【0234】
また、ポイント(Point)基盤の特徴点とブロック(Block)基盤の特徴点を全部用いて二重に自分の位置を認識することにより、自分位置認識の正確度を一層高めることができる。
【0235】
実施例によって、走行区域で撮影された映像を多数の一定領域に対するブロック(block)に分けた後、その領域のテキスチャー、模様、輪郭などの情報を抽出した後、これらの情報を各領域の特徴点として生成することができる。このようなテキスチャー、模様、輪郭などの情報は照明の変化にも維持される特徴があるから、このような特徴に基づいてブロック(block)同士類似度を計算してマッチング(Matching)を遂行することにより、照明変化に強靭なマッチングを遂行することができる。
【0236】
図16〜
図21は本発明の多様な実施例による移動ロボットの制御方法を示すフローチャートである。以下では、
図16〜
図21に基づいて本発明の多様な実施例による移動ロボットの制御方法を説明する。
【0237】
図16はマップ生成過程の一例を示す図である。
【0238】
図16を参照すると、本発明の一実施例による移動ロボット100は、一つ以上のカメラセンサー120bを含む映像獲得部120を介して走行中の走行区域内映像を獲得することができる(S1610)。
【0239】
制御部150は、前記獲得された映像からポイント(point)に基づいて特徴点を抽出することができる(S1620)。また、制御部150は、前記獲得された映像を既設定の大きさのブロック(Bolck)に区分し、区分されたそれぞれのブロック単位映像から特徴点を抽出することができる(S1630)。
【0240】
すなわち、本発明の一実施例による移動ロボット100の制御方法は、ビジョンSLAMで多く使われるSIFT、SURF、FAST、BRIEF、ORBなどのポイント基盤の特徴点抽出段階(S1620)を含むことができるだけではなく、区分されたそれぞれのブロック単位映像から特徴点を抽出するブロック基盤の特徴点抽出段階(S1630)をさらに含むことができる。
【0241】
これにより、ポイント基盤の特徴点とブロック基盤の特徴点をSLAMに全部活用することができる。
【0242】
一方、上述したように、制御部150は、抽出された特徴点に対応するディスクリプタ(descriptor)を生成することができる。
【0243】
例えば、ポイント基盤の特徴点抽出段階(S1620)で、制御部150はポイント基盤の特徴点を抽出し、抽出されたポイント基盤の特徴点に対応するピクセル又は周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性に基づいて前記抽出された特徴点に対応するディスクリプタを生成することができる。
【0244】
また、ブロック基盤の特徴点抽出段階(S1630)で、制御部150は、前記ブロック単位映像の明るさ勾配(gradient)の分布特性に基づいてそれぞれのブロック別ディスクリプタを生成することができる。
【0245】
一方、 本発明の一実施例による移動ロボット100は、本体110の移動による走行状態を感知する走行感知センサーを含むことができる。例えば、移動ロボット100は、エンコーダなどのセンサーを備えることができる。
【0246】
制御部150は、エンコーダなどの走行感知センサーから走行中の走行情報を獲得することができる。
【0247】
実施例によって、制御部150は、前記獲得された走行情報に基づいて以前ノードからの移動量が閾値(threshold)より大きくなれば、映像獲得部120を介して映像を獲得するように制御することができる。既に情報が獲得されて認識された以前ノードにあまり隣接した位置で再び映像獲得、分析、位置認識を行うことは非効率的である。よって、以前ノードから閾値(threshold)以上に動けば、再び映像を獲得して特徴点抽出(S1620、S1630)などを行うことが効果的である。
【0248】
もしくは、前記映像獲得段階(S1610)で映像獲得部120は走行中に連続的に走行区域の映像を獲得するか所定の基準又は周期で走行区域の映像を獲得することができる。
【0249】
既に情報が獲得されて認識された以前ノードにあまり隣接した位置で獲得された映像フレーム全部を対象として分析、位置認識を行うことは非効率的である。
【0250】
この場合、制御部150は、前記映像獲得段階(S1610)で映像獲得部120を介して獲得される映像の中で、以前ノードからの移動距離が閾値より大きい位置に対応する映像をキーフレーム(key frame)映像として選択することができる。また、所定のキーフレーム映像が選択されれば、選択されたキーフレーム映像を基準に移動ロボット100が閾値よりもっと移動した距離で獲得される映像の一つを次のキーフレーム映像として選択することができる。
【0251】
これにより、制御部150は、一定の距離以上に離隔した位置に対応して選択されたキーフレーム(key frame)映像を対象として特徴点抽出(S1620、S1630)などを遂行することができる。すなわち、前記ポイント基盤の特徴点抽出段階(S1620)と前記ブロック基盤の特徴点抽出段階(S1630)は、以前ノードから閾値より遠く離れた位置に対応するキーフレーム映像を対象として遂行することができる。
【0252】
一方、制御部150は、ポイント基盤の特徴点抽出段階(S1620)で抽出された特徴点を用い、現在位置に対応するノード及び前記現在位置に対応するノードを基準に既設定の基準距離以内のノードの特徴点をマッチング(matching)することができる(S1640)。
【0253】
また、制御部150は、ブロック基盤の特徴点抽出段階(S1630)で抽出された特徴点を用いて、前記現在位置に対応するノード及び前記現在位置に対応するノードを基準に前記基準距離以内のノードの特徴点をマッチングすることができる(S1650)。
【0254】
すなわち、本発明の一実施例による移動ロボット100の制御方法は、ビジョンSLAMで多く使われるSIFT、SURF、FAST、BRIEF、ORBなどのポイント基盤の特徴点マッチング段階(S1640)を含むことができるだけではなく、区分されたそれぞれのブロック単位映像で特徴点をマッチングするブロック基盤の特徴点マッチング段階(S1650)をさらに含むことができる。
【0255】
これにより、ポイント基盤の特徴点とブロック基盤の特徴点をSLAMに全部活用することができる。
【0256】
一方、制御部150は、前記ポイント基盤の特徴点マッチング結果と前記ブロック基盤の特徴点マッチング結果に基づいて前記現在位置を認識することができる(S1660)。このように、2方式の特徴点マッチング結果を総合的に用いることにより位置認識の正確度を一層高めることができる。
【0257】
また、制御部150は、前記認識された現在位置情報、前記現在位置に対応するノードのポイント基盤の特徴点情報、及び前記現在位置に対応するノードのブロック基盤の特徴点情報をマップ(map)に登録することができる(S1670)。
【0258】
本発明の一実施例によれば、ポイント基盤の特徴点情報とブロック基盤の特徴点情報を全部保存しながらマップを生成することにより、以後の位置認識ではポイント基盤の特徴点情報とブロック基盤の特徴点情報を選択的に用いるか組み合わせて用いることができる。
【0259】
図17はマップ生成過程の一例を示す図である。
【0260】
図17を参照すると、本発明の一実施例による移動ロボット100は、走行中に左側/右側コマに連結されたエンコーダによって走行情報をモニタリングすることができる(S1611)。
【0261】
コマのエンコーダ値によって判別された移動ロボット100の移動量が閾値thより大きければ(S1613)、映像獲得部120はキーフレーム映像を獲得することができる(S1615)。
【0262】
仮に、移動ロボット100の移動量が閾値thより大きくなければ(S1613)、コマのエンコーダ値によって判別された移動ロボット100の移動量が閾値thより大きくなるまでエンコーダによって走行情報をモニタリングすることができる(S1611)。
【0263】
一方、制御部150は、キーフレーム映像からポイント基盤の特徴点を抽出し(S1620)、ブロック基盤の特徴点を抽出することができる(S1630)。
【0264】
また、制御部150は、ポイント基盤の特徴点マッチングを遂行し(S1640)、ブロック基盤の特徴点マッチングを遂行することができる(S1650)。
【0265】
制御部150は、ポイント基盤の特徴点が有する特定のディスクリプタに基づいて映像間の同一特徴点であるかを判断してマッチング(Matching)を遂行することができる(S1640)。
【0266】
制御部150は、各ブロック単位で特徴点を抽出してディスクリプタを算出し、既保存のブロック単位のディスクリプタと類似度を算出して同一特徴点であるかを判断してマッチング(Matching)を遂行することができる(S1650)。
【0267】
一方、制御部150は、映像のポイント基盤の特徴点及び/又はブロック基盤の特徴点の関係によってその特徴点の3Dポイント(Point)位置を復元することができ(S1661)、これにより移動ロボット100の位置が容易に分かる(S1663)。
【0268】
制御部150は、映像に含まれた特徴点が同一特徴点であるかを判断してマッチング(Matching)を遂行することにより、映像間距離とディスパリティー(Disparity)によって3D座標を復元することになる(S1661)。
【0269】
制御部150は、復元された3D座標に基づいて移動ロボット100の位置が易しく分かる(S1663)。
【0270】
自分位置認識(S1663)の後、制御部150は、現在位置の特徴点情報を保存部105に保存することができる(S1670)。例えば、制御部150は、保存部105に保存されるSLAMマップ上に現在位置に対応するノード情報として現在位置の特徴点情報を保存することができる。
【0271】
また、制御部150は、ポイント基盤の特徴点情報とブロック基盤の特徴点情報を全部保存することができる。これにより、以後の自分位置認識でポイント基盤の特徴点情報とブロック基盤の特徴点情報を選択的に用いるか組み合わせて用いることができる。
【0272】
制御部150は、マップ作成が完了しなかったら(S1680)、走行し続けながら上述したS1611段階〜S1670の過程をずっと遂行することができる。S1611段階〜S1670の過程は、マップ作成が完了すれば(S1680)、終了することができる。
【0273】
本発明の実施例によれば、ブロック(Bolck)基盤の特徴点抽出及びマッチングを用いて照明、照度、時間帯、事物位置変化などの多様な環境変化に対して強靭なマップを生成することができる。ブロック(Bolck)基盤の特徴点抽出及びマッチングはポイント基盤の特徴点抽出及びマッチングより天井の特徴的な線分の抽出に有利である。よって、照度環境でも動作することができるビジョン(Vision)SLAM技術を具現することができ、ブロック基盤の特徴点抽出及びマッチングを用いて低照度環境でも優れたSLAM技術を具現することができる。
【0274】
図18及び
図19はマップ生成後の自分位置認識過程を示す図である。
【0275】
図18及び
図19を参照すると、本発明の一実施例による移動ロボット100は、走行中に走行感知センサーを介して走行情報をモニタリングすることができる(S1801)。
【0276】
走行感知センサーとしては、ジャイロセンサー(Gyro Sensor)、ホイールセンサー(Wheel Sensor)、加速度センサー(Acceleration Sensor)などを使える。走行感知センサーの少なくとも一つで感知されるデータ又は走行感知センサーの少なくとも一つで感知されるデータに基づいて算出されるデータは走行距離計測(odometry)情報を構成することができる。
【0277】
例えば、制御部150は、左側/右側コマに連結されたエンコーダなどのホイールセンサーのセンシング値に基づいて移動ロボット100の移動量を判別することができる。また、制御部150は、ホイールセンサーのセンシング値に基づいて移動ロボット100の移動量、及び方向情報を獲得して走行変位を判別することができる。
【0278】
一方、判別された移動ロボット100の移動量が閾値thより大きければ(S1803)、映像獲得部120は走行区域内映像を獲得することができる(S1810)。
【0279】
その後、制御部150は、前記獲得された映像を既設定の大きさのブロック(Bolck)に区分し、区分されたそれぞれのブロック単位映像から特徴点を抽出することができる(S1840)。
【0280】
他の実施例では、前記映像獲得段階(S1810)で映像獲得部120は走行中に連続的に走行区域の映像を獲得するか所定の基準又は周期で走行区域の映像を獲得することができる。
【0281】
この場合、制御部150は、前記映像獲得段階(S1810)で映像獲得部120を介して獲得される映像のうち、以前ノードからの移動距離が閾値thより大きい位置に対応する映像をキーフレーム(key frame)映像として選択することができる。また、所定のキーフレーム映像が選択されれば、制御部150は、選択されたキーフレーム映像を基準に移動ロボット100が閾値thよりもっと移動した距離で獲得される映像の一つを次のキーフレーム映像として選択することができる。
【0282】
以後のブロック基盤の特徴点抽出段階(S1840)は、以前ノードから閾値thより遠く離れた位置に対応するキーフレーム映像を対象として遂行することができる。
【0283】
ブロック基盤の特徴点抽出段階(S1840)で、制御部150は、前記ブロック単位映像の明るさ勾配(gradient)の分布特性(明るさ変化の方向及び変化の急激な程度)を用いて特徴点を抽出することができる。
【0284】
本発明の一実施例によれば、ブロック単位の変化量を使ってブロック単位の映像に含まれる特徴的な線分をよりうまく認識することができるので、天井の特徴的な線分をよく認識することができる。また、ブロック内に電灯、装飾物線分などの少なくとも一部がその形態を維持したままでブロックに含まれるので、特徴点の抽出が容易である。
【0285】
一方、ブロック基盤の特徴点抽出段階(S1840)で、制御部150は、前記ブロック単位映像の明るさ勾配(gradient)の分布特性(明るさ変化の方向及び変化の急激な程度)に基づいてそれぞれのブロック別ディスクリプタを生成することができる。
【0286】
制御部150は、前記ブロック基盤の特徴点抽出段階(S1840)で抽出された特徴点をマップに登録されたブロック基盤の特徴点情報とマッチングすることができ(S1850)、ブロック基盤の特徴点マッチング結果に基づいて移動ロボット100の現在位置を認識することができる(S1860)。
【0287】
ブロック基盤の特徴点マッチング段階(S1850)で、制御部150は、獲得映像と比較対象ノードの映像に含まれるブロック単位映像の明るさ勾配の分布特性を比較して同一特徴点を捜し出すことができる。
【0288】
また、制御部150は、獲得映像と比較対象ノードの映像に含まれるブロック単位映像の明るさ勾配の分布特性に基づくブロック別ディスクリプタを既保存のブロック別ディスクリプタと比較して類似度が最も高いディスクリプタを判別することができる。
【0289】
本発明の一実施例によれば、現在位置で獲得された認識映像を既設定の大きさのブロックに区分し、各ブロック単位で特徴点を抽出し(S1840)、既保存のブロック単位の特徴点情報と比較することにより(S1850)、自分の位置を認識することができる(S1860)。
【0290】
また、映像獲得部120を介して獲得された映像から抽出された特徴点に基づいてディスクリプタを算出して保存した場合、自分位置認識の際、現在位置で獲得された認識映像を既設定の大きさのブロック単位で特徴点を抽出してディスクリプタを算出し(S1840)、既保存のブロック単位のディスクリプタと類似度を算出し(S1850)、最も類似したノードを現在の自分の位置と認識することができる(S1860)。
【0291】
本発明の実施例によれば、ブロック(Bolck)基盤の特徴点抽出及びマッチングを用いてマップ上の移動ロボットの位置を正確に認識することができる。ブロック(Bolck)基盤の特徴点抽出及びマッチングはポイント基盤の特徴点抽出及びマッチングより天井の特徴的な線分抽出に有利である。よって、照度環境でも動作することができるビジョン(Vision)SLAM技術を具現することができ、ブロック基盤の特徴点抽出及びマッチングを用いて低照度環境でも優れたSLAM技術を具現することができる。
【0292】
また、移動ロボット100が掃除作業を行う場合、多様な環境変化に対応することができる一つのマップと正確な位置認識に基づいて効率的な走行及び掃除を行うことができる。
【0293】
本発明の実施例によれば、ブロック(Bolck)基盤の特徴点抽出及びマッチングを用いて照明、照度、時間帯、事物位置変化などの多様な環境変化に対して強靭なマップを生成することができる。
【0294】
一方、本発明は、マップ生成の際、ポイント基盤の特徴点情報とブロック基盤の特徴点情報を全部保存することができる。これにより、自分位置認識においてポイント基盤の特徴点情報とブロック基盤の特徴点情報を選択的に用いるか組み合わせて用いることができる。
【0295】
図19を参照すると、本発明の一実施例による移動ロボット100の制御方法は、映像獲得段階(S1810)で獲得された映像からポイント基盤の特徴点を抽出するポイント(point)基盤の特徴点抽出段階(S1820)と前記ポイント基盤の特徴点抽出段階(S1820)で抽出された特徴点を前記マップに登録されたポイント基盤の特徴点情報とマッチングする段階(S1830)をさらに含むことができる。
【0296】
この場合、現在位置認識段階(S1860)で、制御部150は、前記ポイント基盤の特徴点マッチング結果と前記ブロック基盤の特徴点マッチング結果に基づいて前記現在位置を認識することができる。
【0297】
制御部150は、前記抽出された特徴点周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性に基づいて前記抽出された特徴点に対応するディスクリプタ(descriptor)を生成することができ、生成されたディスクリプタと既保存のディスクリプタを比較して現在位置を認識することができる(S1860)。
【0298】
また、制御部150はポイント基盤の特徴点情報とブロック基盤の特徴点情報を組み合わせて現在位置を認識することができる(S1860)。
【0299】
例えば、制御部150は、ポイント基盤の特徴点マッチング結果とブロック基盤の特徴点マッチング結果の中で類似度が最も高いノードを現在位置と認識することができる。
【0300】
一方、本発明の一実施例によれば、照度環境によってポイント基盤の特徴点情報とブロック基盤の特徴点情報を選択的に用いるか組み合わせて用いることができる。
【0301】
図20を参照すると、本発明の一実施例による移動ロボット100は、映像獲得部120を介して走行区域内映像を獲得することができる(S2010)。
【0302】
本発明の一実施例による移動ロボット100は、走行中に走行感知センサーを介して走行情報をモニタリングすることができる(S2001)。
【0303】
制御部150は、走行感知センサーのセンシング値に基づいて移動ロボット100の移動量を判別することができる(S2001)。
【0304】
実施例によって、判別された移動ロボット100の移動量が閾値thより大きい場合に(S2003)、映像獲得部120は走行区域内のキーフレーム(key frame)映像を獲得することができる(S2010)。
【0305】
もしくは、前記映像獲得段階(S2010)で映像獲得部120を介して獲得される映像のうち、以前ノードからの移動距離が閾値thより大きい位置に対応する映像をキーフレーム(key frame)映像として選択することができる。
【0306】
一方、本発明の一実施例によれば、移動ロボット100のセンサー部170は本体110外部の照度をセンシングする照度センサーを含むことができる。
【0307】
本実施例で、移動ロボット100は、センサー部170の照度センサーを介して照度情報を獲得することができる(S2013)。
【0308】
仮に、前記照度情報が低照度環境に設定された条件を満たさなければ(S2016)、制御部150は、映像獲得部120を介して獲得されたキーフレームの全体映像からポイント(point)に基づいて特徴点を抽出し(S2040)、前記ポイント基盤の特徴点抽出段階(S2040)で抽出された特徴点を前記マップに登録されたポイント基盤の特徴点情報とマッチングすることにより(S2050)、前記ポイント基盤の特徴点マッチング結果に基づいて現在位置を認識することができる(S2060)。
【0309】
仮に、前記照度情報が低照度環境に設定された条件を満たせば(S2016)、制御部150は、映像獲得部120を介して獲得されたキーフレームの全体映像を複数のブロックに分け、ブロック単位で特徴点を抽出することができる(S2020)。
【0310】
また、制御部150は、前記ブロック基盤の特徴点抽出段階(S2020)で抽出された特徴点を前記マップに登録されたブロック基盤の特徴点情報とマッチングすることにより(S2030)、前記ポイント基盤の特徴点マッチング結果に基づいて現在位置を認識することができる(S2060)。
【0311】
実施例によって、低照度環境と判別された場合(S2016)、ブロック基盤の特徴点抽出(S2020)及びマッチング(S2030)とポイント基盤の特徴点抽出(S2040)及びマッチング(S2050)を全部遂行し、その結果を取り合わせて現在位置を認識する(S2060)ことも可能である。
【0312】
本発明の実施例によれば、自分位置認識(S1860、S2060)の際、公知のモンテカルロ(MCL)位置推定法を用いることができる。モンテカルロ(MCL)位置推定方法はパーティクルフィルター(particle filter)アルゴリズムを用いている。
【0313】
図21を参照すると、制御部150は、ブロック基盤の特徴点マッチング(S1850、S2020)に基づいて位置候補である複数のパーティクル(particle)を設定することができる(S2110)。
【0314】
制御部150は、所定の基準によってn個のパーティクルを設定することができる(S2110)。例えば、制御部150は、同じ加重値を有する既設定の個数のパーティクルを設定することができる。
【0315】
その後、制御部150は、前記複数のパーティクルに対する加重値(weight)を算出し(S2120)、前記複数のパーティクルの加重値に基づいて前記現在位置を決定することができる(S2130)。
【0316】
制御部150は、マップ上に仮定の位置候補であるパーティクルをほこりのように振り撤いておき(S2110)、加重値を演算して(S2120)、現在位置を決定することができる(S2130)。
【0317】
制御部150は、ブロック基盤の特徴点マッチング結果の類似度によって各パーティクルの加重値を変更する演算を遂行することができる。例えば、制御部150は類似度に比例して加重値を増加させるか差に反比例して荷重値を増加させることができる。
【0318】
制御部150は、パーティクルの加重値に基づいて特定パーティクルを現在位置に決定するか加重値の高い複数のパーティクルの平均に基づいて現在位置を決定することができる。
【0319】
一方、現在位置が決定されれば(S2130)、以後の位置認識のために、制御部150は、複数のパーティクルをリサンプリング(resampling)することができる(S2140)。例えば、決定された現在位置を基準に複数のパーティクルを設定することができる。
【0320】
実施例によっては、現在位置が決定されなければ(S2130)、位置認識失敗と判定することができる(S2150)。
【0321】
本発明による移動ロボットは、前述した実施例の構成と方法に限って適用されるものではなく、前記実施例は、多様な変形ができるように、各実施例の全部又は一部が選択的に組み合わせられて構成されることもできる。
【0322】
同様に、特定の順に図面に動作を図示しているが、これは、好ましい結果を得るために図示した特定の順に又は順次の順にそのような動作を遂行しなければならないか全ての図示の動作を遂行しなければならないものに理解されてはいけない。特定の場合、マルチタスキングと並列プロセッシングが有利であり得る。
【0323】
一方、本発明の実施例による移動ロボットの制御方法は、プロセッサが読める記録媒体にプロセッサが読めるコードで具現することが可能である。プロセッサが読める記録媒体はプロセッサによって読められるデータが保存される全ての種類の記録装置を含む。また、インターネットを介しての伝送などの搬送波形態に具現されることも含む。また、プロセッサが読める記録媒体はネットワークで連結されたコンピュータシステムに分散され、分散方式でプロセッサが読めるコードが保存されて実行されることができる。
【0324】
また、以上では本発明の好適な実施例について図示して説明したが、本発明は上述した特定の実施例に限定されず、請求範囲で請求する本発明の要旨を逸脱することなしに当該発明が属する技術分野で通常の知識を有する者によって多様な変形実施が可能であることはもちろんのこと、このような変形実施は本発明の技術的思想や見込みから個別的に理解されてはいけないであろう。