(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-26
(45)【発行日】2023-10-04
(54)【発明の名称】移動ロボット及びその制御方法
(51)【国際特許分類】
G05D 1/02 20200101AFI20230927BHJP
A47L 9/28 20060101ALI20230927BHJP
【FI】
G05D1/02 L
A47L9/28 E
(21)【出願番号】P 2022502504
(86)(22)【出願日】2020-07-15
(86)【国際出願番号】 KR2020009343
(87)【国際公開番号】W WO2021010757
(87)【国際公開日】2021-01-21
【審査請求日】2022-03-07
(31)【優先権主張番号】10-2019-0085477
(32)【優先日】2019-07-16
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】502032105
【氏名又は名称】エルジー エレクトロニクス インコーポレイティド
【氏名又は名称原語表記】LG ELECTRONICS INC.
【住所又は居所原語表記】128, Yeoui-daero, Yeongdeungpo-gu, 07336 Seoul,Republic of Korea
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100165191
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100159259
【氏名又は名称】竹本 実
(72)【発明者】
【氏名】チェ チウン
【審査官】今井 貞雄
(56)【参考文献】
【文献】特開2017-083663(JP,A)
【文献】米国特許出願公開第2010/0070078(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
A47L 9/28
(57)【特許請求の範囲】
【請求項1】
本体を移動させる走行部と、
本体外部の物体との距離に関するデータを取得する距離測定センサと、
前記距離測定センサがセンシングしたセンサデータに基づいてノードデータを生成し、
前記センサデータ及び前記ノードデータに基づいてグリッドマップを作成し、
前記ノードデータに基づいて第1マップデータを作成し、
前記第1マップデータに基づいて前記グリッドマップをアップデートし、
アップデートしたグリッドマップをイメージ処理して第2マップデータを生成する、制御部とを含
み、
前記ノードデータは、複数のノードのうち少なくともいずれか1つのノードに対して、ノード位置に対する座標値と、既に設定された複数の移動方向のそれぞれに関するデータ値を含み、
前記複数の移動方向のそれぞれに関するデータ値は、オープン(open)された移動方向を示す第1データ値、移動ロボットの走行不可能な移動方向を示す第2データ値、及び他のノードを示す第3データ値のいずれか1つに設定される、移動ロボット。
【請求項2】
前記制御部は、
前記ノードデータを生成しながら、前記ノード位置に対する座標値を基準に前記
距離測定センサのセンシング範囲内において前記グリッドマップを生成する、請求項
1に記載の移動ロボット。
【請求項3】
前記移動ロボットは、
前記ノードデータ、前記第1マップデータ、前記グリッドマップ及び前記第2マップデータが保存される保存部をさらに含む、請求項
2に記載の移動ロボット。
【請求項4】
前記本体の外部の映像を取得する少なくとも1つのカメラを備える映像取得部をさらに含み、
前記制御部は、
前記映像取得部により取得した映像から特徴を抽出し、
前記特徴を前記第2マップデータにマッピング(mapping)し、
前記第2マップデータにマッピング(mapping)された特徴に基づいて、前記移動ロボットの位置を判断することを特徴とする、請求項
3に記載の移動ロボット。
【請求項5】
前記制御部は、
前記ノードデータに基づいて、前記設定された複数の移動方向のうち、前記オープン(open)された移動方向が少なくとも1つ存在するか否かを判断し、
前記オープン(open)された移動方向が少なくとも1つ存在する場合、既に設定された条件に従って、前記ノードデータに新しいノードを生成し、
前記オープン(open)された移動方向のいずれか1つを、前記移動ロボットの本体が移動する走行方向として決定し、
前記オープンされた移動方向が存在しない場合、前記ノードデータに基づいて、アップデート(update)が必要なノードが少なくとも1つ存在するか否かを判断し、
前記アップデート(update)が必要なノードが存在しない場合、前記ノードデータに基づいて、少なくとも1つのノードを含む前記第1マップデータを生成する、請求項
3に記載の移動ロボット。
【請求項6】
前記制御部は、
前記アップデート(update)が必要なノードが存在する場合、前記アップデート(update)が必要なノードのいずれか1つに前記移動ロボットが移動するように、前記走行部を制御し、
前記アップデートが必要なノードは、
前記複数の移動方向のそれぞれに関するデータ値のうち少なくとも1つが、前記オープン(open)された移動方向を示す前記第1データ値に設定されたノードである、請求項
5に記載の移動ロボット。
【請求項7】
前記制御部は、
前記複数の移動方向のそれぞれに対して、前記移動ロボットの走行が可能であるか否かを判断し、
前記複数の移動方向のそれぞれに対して、前記移動ロボットが既に走行していた移動方向であるか否かを判断し、
前記複数の移動方向のうち、前記移動ロボットの走行が可能であり、前記移動ロボットが既に走行していない移動方向を、前記オープン(open)された移動方向と判断する、請求項
5に記載の移動ロボット。
【請求項8】
前記制御部は、
前記オープン(open)された移動方向が少なくとも1つ存在する場合、前記走行方向として決定された移動方向が前記オープン(open)された移動方向に該当するか否かを判断し、
前記走行方向として決定された移動方向が前記オープン(open)された移動方向に該当しない場合、前記新しいノードを生成する、請求項
7に記載の移動ロボット。
【請求項9】
前記制御部は、
前記走行方向として決定された移動方向が前記オープン(open)された移動方向に該当する場合、前記複数の移動方向のうち、前記走行方向と決定された移動方向のみ前記オープン(open)された移動方向に該当するか否かを判断し、
前記走行方向として決定された移動方向のみが前記オープン(open)された移動方向に該当する場合、前記新しいノードを生成せず、前記移動ロボットが前記走行方向に移動するように前記走行部を制御し、
前記走行方向と決定された移動方向を含む複数の移動方向が前記オープン(open)された移動方向に該当する場合、前記新しいノードを生成することを特徴とする、請求項
8に記載の移動ロボット。
【請求項10】
前記制御部は、
前記新しいノードを生成する場合、前記ノードデータに含まれた前記少なくとも1つのノードのそれぞれの、前記複数の移動方向に関するデータ値をアップデート(update)することを特徴とする、請求項
9に記載の移動ロボット。
【請求項11】
前記制御部は、
前記センサデータに基づいて生成されたグリッドマップを、前記センサがセンシングした結果から空き領域である第1領域、前記センサがセンシングした結果から障害物が存在する空間である第2領域及び前記センサがセンシングしていない第3領域に区分し、
前記第1領域と前記第3領域の間に境界線を生成する前記イメージ処理を行い、
前記境界線が1つ以上存在する場合、最適の境界線を選択し、
前記最適の境界線までの経路計画(Path-plannig)を行い、
前記経路に沿って移動しながら前記グリッドマップをアップデートして前記第2マップデータを生成する、請求項
3に記載の移動ロボット。
【請求項12】
前記制御部は、
前記境界線が存在しないと判断すると、前記第2マップデータの生成を完了し、前記第2マップデータを前記保存部に保存する、請求項
11に記載の移動ロボット。
【請求項13】
前記イメージ処理は、
各領域の色を異なるように表示するものの、前記第1領域の色と前記第3領域の色の違いを最も大きく示し、
前記第1領域と前記第3領域の間に線分を表示するイメージ処理を含み、
前記制御部は、
前記線分を前記境界線と判断する、請求項
12に記載の移動ロボット。
【請求項14】
前記制御部は、
前記第1領域と前記第3領域の間の長さと前記移動ロボットの幅を比較し、
前記第1領域と前記第3領域の間の長さが前記移動ロボットの幅より長いと判断すると、前記線分を表示するイメージ処理を行う、請求項
13に記載の移動ロボット。
【請求項15】
前記最適の境界線は、
前記1つ以上の境界線のいずれか1つの境界線において取得できる環境に関する情報である第1情報及び前記いずれか1つの境界線までの距離に関する情報である第2情報から計算したコスト値に基づいて、
前記コスト値が最大である前記いずれか1つの境界線である、請求項
11に記載の移動ロボット。
【請求項16】
前記コスト値は、
前記第1情報及び前記第2情報に関する加重関数(weight function)により決定される値である、請求項
15に記載の移動ロボット。
【請求項17】
前記制御部は、
前記最適の境界線の中心点を設定し、
現在位置から前記中心点までの経路を生成して前記経路計画を行う、請求項
11に記載の移動ロボット。
【請求項18】
前記制御部は、
前記経路を生成する前にグリッドウェーブを発生して前記移動ロボットが位置する空間が存在するか否かを確認し、
前記グリッドウェーブが閉じる空間内でのみ経路を生成する、請求項
17に記載の移動ロボット。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動ロボット及びその制御方法に関し、より詳しくは、移動ロボットが自動でマップ(map)を生成する技術に関する。
【背景技術】
【0002】
ロボットは、産業用に開発されて工場自動化の一部を担当してきた。最近は、ロボットを応用した分野がさらに拡大されて、医療用ロボット、宇宙航空ロボットなどが開発され、一般家庭で使用できる家庭用ロボットも生産されている。このようなロボットのうち自力で走行可能なものを移動ロボットという。
【0003】
家庭で使われる移動ロボットの代表例はロボット掃除機であり、ロボット掃除機は、一定の領域を自分で走行しながら、周辺のほこり又は異物を吸い込むことにより該当領域を掃除する機器である。
【0004】
移動ロボットは、自分で移動可能であるため、移動が自由であり、走行中に障害物などを避けるための多数のセンサが備えられて障害物を避けて走行することができる。
【0005】
掃除などの設定された作業を行うためには、走行区域のマップ(map)を正確に生成し、走行区域内のある位置に移動するためにマップ上において移動ロボットの現在位置を正確に把握できなければならない。
【0006】
移動ロボットの現在位置の認識のために、移動ロボットの連続的な移動中に自分の直前位置での走行情報(移動方向及び移動速度に関する情報又は連続的に撮影される床の写真などの比較など)に基づいて現在位置を継続的に把握する様々な方法が研究されてきた。また、移動ロボットが自らマップを生成及び学習する様々な方法に関する研究が行われている。
【0007】
例えば、従来技術1(韓国公開特許公報第10-2010-0070582号)の場合、周辺環境の距離情報を検出する距離センサにより初期マップを生成し、初期マップのピクセル処理によりノードを設定することにより、全域的位相マップ(topological map)を生成する技術を開示する。
【0008】
例えば、従来技術2(韓国公開特許公報第10-2010-0031878号)の場合、移動ロボットが未知の環境を探索する時に取得される映像から抽出される特徴点の位置の不確実度に基づく経路を生成し、生成された経路に沿って走行する技術を開示する。各特徴点の不確実度に基づく経路は、移動ロボットの特徴点地図の正確性を高めるか、自分の位置認識の正確度を高めるために生成される。
【0009】
しかしながら、従来技術1のような従来技術は、単に移動中に取得した距離情報に基づいて初期マップを全体的に生成し、生成された初期マップに基づいてノードを決定することにより位相マップを生成するため、ノード間の全体の連結関係が多少不正確であるという短所がある。
【0010】
また、距離情報の取得時に一時的に位置していた動的障害物と、固定された障害物が正確に区分して処理しにくく、移動経路が交差する地点に関する情報を正確に取得しにくい問題点がある。
【0011】
従来技術2のような従来技術は、特徴点を抽出して探索経路を生成するが、特徴の少ない特定環境の不確実度は当該領域の探索可否に関係なく高くなる可能性があるため、同じ領域を継続して探索する問題点がある。
【0012】
また、既存のグリッドマップを活用した探索走行の場合、不確実性が高い地点を特徴点として利用することにより、探索した空き(empty)領域と未検索領域の間の境界を正確に抽出できない問題点がある。
【0013】
また、ノードに関する情報のみでマップを作成する場合、方向制限により特定形態の環境は地図の生成が不可能である問題点がある。
【0014】
また、セルに関する情報のみでマップを作成する場合、探索環境の中央に移動しないため、障害物との衝突の可能性が高いという問題点及び非効率的な経路の繰り返しが発生する問題点がある。
【先行技術文献】
【特許文献】
【0015】
【文献】KR10-2010-0070582
【文献】KR10-2010-0031878
【発明の概要】
【発明が解決しようとする課題】
【0016】
前記問題点を解決するために、本発明の目的は、位相マップを生成するにおいて、移動ロボットの移動中にリアルタイムでノードを生成することにより、ノード間の連結関係を正確に設定できる移動ロボット及びその制御方法を提供することにある。
【0017】
本発明の目的は、グリッドマップに対するイメージ処理により、マップの複雑性に関係なく探索した空き(empty)領域と未検索領域の間の境界を迅速に探し出す技術を提供することにある。
【0018】
本発明の他の目的は、ノードに関するデータを利用したノードマップ作成とセルに関するデータを利用したグリッドマップ作成を並行して、ノードマップの長所とグリッドマップの長所を融合した最終マップデータを生成する技術を提供することにある。
【0019】
本発明の他の目的は、指定された方向(4つ又は8つの方向)に動くという仮定の下に、ノードベースマップ生成を優先し、その後、生成されたマップに基づいてセルベースマップ生成を連続することにより全ての環境に対するマップデータを生成する技術を提供することにある。
【課題を解決するための手段】
【0020】
前記目的を達成するための本発明の一側面による移動ロボットは、本体を移動させる走行部と、前記本体の外部の地形情報を取得するLiDARセンサと、前記LiDARセンサがセンシングしたLiDARデータに基づいてノードデータを生成し、前記ノードデータに基づいて第1マップデータを生成し、前記第1マップデータに基づいてグリッドマップを生成し、前記グリッドマップをイメージ処理して第2マップデータを生成する制御部とを含む。
【0021】
前記目的を達成するための本発明の一側面による移動ロボットは、第1マップデータ生成が終了した時点のグリッドマップに基づいて第2マップデータを生成する制御部を含む。
【0022】
前記目的を達成するための本発明の一側面による移動ロボットは、LiDARセンサを介して取得した外部の地形情報に基づいて、既に設定された複数の移動方向のそれぞれに対するオープン(open)の可否を判断し、判断結果に応じて新しいノードを生成して、第1マップデータを生成する制御部を含む。
【0023】
前記目的を達成するための本発明の一側面による移動ロボットは、LiDARデータ及びノードデータに基づいて、既に設定された複数の移動方向のうち、オープン(open)された移動方向が少なくとも1つ存在するか否かを判断し、オープン(open)された移動方向が少なくとも1つ存在する場合、既に設定された条件に応じて、ノードデータに新しいノードを生成し、オープン(open)された移動方向のいずれか1つを、本体が移動する走行方向として決定し、オープン(open)された移動方向が存在しない場合、ノードデータに基づいて、少なくとも1つのノードのうちアップデート(update)が必要なノードが少なくとも1つ存在するか否かを判断し、アップデートが必要なノードが存在する場合、アップデートが必要なノードのいずれか1つに移動ロボットが移動するように走行部を制御し、アップデートが必要なノードが存在しない場合、ノードデータに基づいて、少なくとも1つのノードを含む第1マップデータの生成を完了する制御部を含む。
【0024】
前記目的を達成するための本発明の一側面による移動ロボットは、グリッドマップを第1領域、第2領域及び第3領域に区分して、第1領域と第3領域の間に境界線を生成するイメージ処理を行い、境界線を判断し、境界線が1つ以上であると、最適の境界線を選択し、最適の境界線まで経路計画を実行し、生成された経路に沿って移動しながら前記グリッドマップをアップデートして第2マップデータの生成を完了する制御部を含む。
【0025】
前記目的を達成するための本発明の一側面による移動ロボットは、前記各領域の色を異なるように示すものの、第1領域の色と第3領域の色の違いを最も大く示し、第1領域と第3領域の間に線分を表示するイメージ処理により境界線を生成する制御部を含む。
【0026】
前記目的を達成するための本発明の一側面による移動ロボットは、アップデートされたグリッドマップ上においてこれ以上境界線が存在しない場合、第2マップデータの生成を完了し、最終マップデータとして保存する制御部を含む。
【0027】
前記目的を達成するための本発明の一側面による移動ロボットは、LiDARセンサと一緒に異種のセンサを活用して取得した異種データを相互補完的に利用して環境変化に強いマップを生成し、マップ上の位置を正確に認識することができる。
【発明の効果】
【0028】
本発明によれば、以下のような効果が1つあるいはそれ以上存在する。
【0029】
第1に、第1マップデータ生成の構成により、通路の中央を判断し、リアルタイムセンサを活用して走行するので、安全かつ迅速にマップ生成を完了できる効果がある。
【0030】
第2に、第1マップデータに基づいてグリッドマップを更新する構成により、第1マップデータ及び第2マップデータの生成をそれぞれ行う場合の短所を克服できる効果がある。
【0031】
第3に、第1マップデータ生成を優先し、その後、第2マップデータ生成を連続することにより、環境制約のない全ての環境に対するマップデータを生成することができる。
【0032】
一方、本発明の効果は以上に言及した効果に制限されず、言及されていない他の効果は請求範囲の記載から当業者に明確に理解できるであろう。
【図面の簡単な説明】
【0033】
【
図1d】本発明の一実施形態による、移動ロボット及び移動ロボットを充電させる充電台の外観を示す図である。
【
図2】本発明の他の一実施形態による、移動ロボットの例示を示す図である。
【
図3】本発明の実施形態による、移動ロボットの主要構成間の制御関係を示すブロック図である。
【
図4b】
図4aは、本発明の一実施形態による、移動ロボットに備えられたLiDARセンサの説明に参照される図であり、
図4bは、本発明の一実施形態による、移動ロボットの走行に関する説明に参照される図である。
【
図5】本発明の一実施形態による、移動ロボットのマップ生成過程に関するフローチャートである。
【
図6j】本発明の一実施形態による、移動ロボットの第1マップデータ生成過程を示す図である。
【
図7】本発明の一実施形態による、移動ロボットの第1マップデータ生成方法に関するフローチャートを示す図である。
【
図8b】本発明の一実施形態による、移動ロボットの第1マップデータ生成方法に関するフローチャートを示す図である。
【
図9】本発明の一実施形態による、移動ロボットの第2マップ生成過程の理解に参照されるフローチャートである。
【
図10】本発明の一実施形態による、グリッドマップに対するイメージ処理ステップを詳細に示す図である。
【
図11】本発明の一実施形態による、グリッドウェーブ発生ステップの理解に役立つ図である。
【
図12f】本発明の実施形態による第2マップデータの生成過程を示す図である。
【発明を実施するための形態】
【0034】
以下では、添付の図面を参照して、本発明の実施形態を詳細に説明する。しかしながら、本発明はこのような実施形態に限定されるものではなく、様々な形態に変形できることは言うまでもない。
【0035】
一方、以下の説明において使用される構成要素に対する接尾辞「モジュール」及び「部」は、単に本明細書の作成を容易にするためのものに過ぎず、それ自体として特に重要な意味又は役割を付与するものではない。従って、前記「モジュール」及び「部」は互いに混用して使用されてもよい。
【0036】
また、本明細書において、様々な要素を説明するために第1、第2などの用語が利用されるが、このような要素はこのような用語により制限されない。このような用語はある要素を他の要素から区別するために用いられるだけである。
【0037】
本発明の一実施形態による移動ロボット100は、車輪などを用いて自分で移動可能なロボットを意味し、ホームヘルパーロボット及びロボット掃除機などがある。以下では、図面を参照して、移動ロボットのうち掃除機能を有するロボット掃除機を例にして説明するが、本発明はこれに限定されない。
【0038】
図1aないし
図1dは、本発明の一実施形態による、移動ロボット及び移動ロボットを充電させる充電台の外観を示す図である。
【0039】
図1aは、本発明の一実施形態による移動ロボット及び移動ロボットを充電する充電台を示す斜視図である。
図1bは、
図1aに示した移動ロボットの上面部を示す図であり、
図1cは、
図1aに示した移動ロボットの正面部を示す図であり、
図1dは、
図1aに示した移動ロボットの底面部を示す図である。
【0040】
図1aないし
図1dに示すように、移動ロボット100は、例えば、本体110を移動させる少なくとも1つの駆動輪136を含む。駆動輪136は、例えば、駆動輪136に連結された少なくとも1つのモータ(図示せず)により駆動されて回転する。
【0041】
駆動輪136は、例えば、本体110の左、右側にそれぞれ備えられ、以下、それぞれ左輪136(L)と右輪136(R)という。
【0042】
左輪136(L)と右輪136(R)は、1つの駆動モータにより駆動されてもよく、必要に応じて、左輪136(L)を駆動させる左輪駆動モータと右輪136(R)を駆動させる右輪駆動モータがそれぞれ備えられてもよい。左輪136(L)と右輪136(R)の回転速度に差をつけて左側又は右側に本体110の走行方向を切り替えることができる。
【0043】
移動ロボット100は、例えば、異物を吸入する吸入ユニット330、掃き掃除をするブラシ154、155、集められた異物を溜めるダストボックス、雑巾がけを行う雑巾部などを含む。
【0044】
例えば、本体110の底面部には空気が吸入される吸入口150hが形成され、本体110の内部には吸入口150hを介して空気が吸入されるように吸入力を提供する吸入装置と、吸入口150hを介して空気と一緒に吸入されたほこりを集塵するダストボックスが備えられる。
【0045】
移動ロボット100は、例えば、移動ロボット100を構成する各種部品が収容される空間を形成するケース111を含む。ケース111にはダストボックスの挿入と脱去のための開口部(図示せず)が形成され、開口部を開閉するダストボックスカバー112がケース111に対して回転可能に備えられる。
【0046】
移動ロボット100は、例えば、吸入口150hから露出するブラシを有するロール型のメインブラシ154と、本体110の底面部前方側に位置し、放射状に延長された多数の翼からなるブラシを有する補助ブラシ155とを備える。これらのブラシ154、155の回転により走行区域内の床からほこりが分離され、このように床から分離されたほこりは吸入口150hを介して吸い込まれ、吸入ユニット330からダストボックスに流入される。
【0047】
ダストボックスのフィルタ又はサイクロンを経て空気とほこりが分離され、分離されたほこりはダストボックスに集塵され、空気はダストボックスから排出された後、本体110の内部の排気流路(図示せず)を経て最終的に排気口(図示せず)を介して外部に排出される。
【0048】
バッテリ138は、例えば、駆動モータだけでなく、移動ロボット100の作動全般に必要な電源を供給する。一方、バッテリ138が放電した場合、移動ロボット100は充電のために充電台200に復帰する走行を行い、その復帰走行中に、移動ロボット100は自分で充電台200の位置を感知することができる。
【0049】
充電台200は、例えば、所定の復帰信号を送出する信号送出部(図示せず)を含む。復帰信号は、例えば、超音波信号又は赤外線信号であるが、必ずしもこれに限定されるものではない。
【0050】
移動ロボット100は、例えば、復帰信号を受信する信号感知部(図示せず)を含む。
【0051】
例えば、信号感知部は、赤外線信号を感知する赤外線センサを含み、充電台200の信号送出部から送出された赤外線信号を受信する。この時、移動ロボット100は、充電台200から送出された赤外線信号に従って充電台200の位置に移動して充電台200とドッキング(docking)する。このようなドッキングにより、移動ロボット100の充電端子133と充電台200の充電端子210に接触してバッテリ138が充電される。
【0052】
移動ロボット100は、例えば、移動ロボット100の内/外部の情報を感知する構成を備える。
【0053】
移動ロボット100は、例えば、走行区域に対する映像情報を取得するカメラ120を備える。
【0054】
例えば、移動ロボット100は、本体110前方の映像を取得するように備えられる前面カメラ120aを備える。
【0055】
例えば、移動ロボット100は、本体110の上面部に備えられて、走行区域内の天井に対する映像を取得する上部カメラ120bを備える。
【0056】
例えば、移動ロボット100は、本体110の底面部に備えられて、床の映像を取得する下部カメラ179をさらに備える。
【0057】
一方、移動ロボット100に備えられたカメラ120の個数、配置される位置、撮影範囲などが必ずしもこれに限定されるものではなく、走行区域に対する映像情報を取得するために様々な位置に配置されてもよい。
【0058】
例えば、移動ロボット100は、本体110の一面に対して傾斜して配置されて前方と上方を一緒に撮影するように構成されたカメラ(図示せず)を含むこともできる。
【0059】
例えば、移動ロボット100は、前面カメラ120a及び/又は上部カメラ120bを複数備えてもよく、前方と上方を一緒に撮影するように構成されたカメラを複数備えてもよい。
【0060】
本発明の様々な実施形態によれば、移動ロボット100の一部部位(例えば、前方、後方、底面)にカメラ120が設置され、走行時や掃除時に映像を持続的に取得することができる。このようなカメラ120は、撮影効率のために各部位別に複数設置されてもよく、カメラ120により撮影された映像は、該当空間に存在するほこり、髪の毛、床などの物質の種類認識、掃除の有無、又は掃除の時点の確認のために使用される。
【0061】
移動ロボット100は、例えば、レーザーを利用して本体110の外部の地形情報を取得するライダー(light detection and ranging:LiDAR)センサ175を含む。
【0062】
LiDARセンサ175は、例えば、レーザーを出力し、オブジェクトから反射されたレーザーを受信することにより、レーザーを反射させたオブジェクトとの距離、位置方向、材質などの情報を取得し、走行区域の地形情報を取得することができる。移動ロボット100は、例えば、LiDARセンサ175により取得した情報に基づいて、360度の地形(geometry)情報を取得することができる。
【0063】
移動ロボット100は、例えば、移動ロボット100の動作、状態に関連する各種データをセンシングするセンサ171、172、179を含む。
【0064】
例えば、移動ロボット100は、前方の障害物を感知する障害物感知センサ171、走行区域内の床に段差の存否を感知する段差感知センサ172などを含む。
【0065】
移動ロボット100は、例えば、移動ロボット100の電源オン/オフ(on/off)などの各種命令を入力できる操作部137を含み、操作部137を介して移動ロボット100の作動全般に必要な各種制御命令を受信する。
【0066】
移動ロボット100は、例えば、出力部(図示せず)を含み、予約情報、バッテリ状態、動作モード、動作状態、エラー状態などを表示する。
【0067】
図2は、本発明の他の一実施形態による、移動ロボットの例示を示す図である。
【0068】
図2は、本発明の他の一実施形態による、移動ロボット100の例示を示す図であり、
図2に示した移動ロボット100は、
図1aないし
図1dに開示された移動ロボット100と同一又は類似の構成を備えるので、これに関する詳細な説明は省略する。
【0069】
図3は、本発明の実施形態による、移動ロボットの主要構成間の制御関係を示すブロック図である。
【0070】
図3に示すように、移動ロボット100は、例えば、保存部305、映像取得部320、入力部325、吸入ユニット330、制御部350、走行部360、センサ部370、出力部380、及び/又は通信部390を含む。
【0071】
保存部305は、例えば、移動ロボット100の制御に必要な各種情報を保存する。
【0072】
保存部305は、例えば、揮発性又は不揮発性記録媒体を含む。記録媒体は、マイクロプロセッサ(microprocessor)により読み取れるデータを保存したものであり、その種類や実現方式に限定されない。
【0073】
保存部305は、例えば、走行区域に対するマップ(map)を保存する。保存部305に保存されるマップは、例えば、移動ロボット100と有線又は無線通信を介して情報を交換する外部端末機、サーバなどから入力されたものであってもよく、移動ロボット100が自分で学習して生成したものであってもよい。
【0074】
保存部305は、例えば、ノード(node)に関するデータを保存する。ここで、ノードは、例えば、走行区域上の一地点を意味する。ノードに関するデータは、例えば、ノードに対する走行区域上の座標、ノードでの複数の移動方向に関する情報、他のノードとの関係に関する情報などを含む。
【0075】
例えば、マップには走行区域内の部屋の位置が表示される。また、移動ロボット100の現在位置がマップ上に表示され、マップ上での移動ロボット100の現在位置は走行過程で更新される。外部端末機は保存部305に保存されたマップと同一のマップを保存する。
【0076】
保存部305は、例えば、掃除履歴情報を保存する。このような掃除の履歴情報は掃除を行うたびに生成される。
【0077】
保存部305は、例えば、ノード(node)ベースの第1マップデータ、グリッド(grid)ベースの第2マップデータを保存する。
【0078】
保存部305に保存される走行区域に対するマップ(map)は、例えば、掃除中の走行に使用されるナビゲーションマップ(navigation map)、位置認識に使用されるSLAM(simultaneous localization and mapping:SLAM)マップ、障害物などにぶつかると当該情報を保存して学習掃除時に使用する学習マップ、全域的位置認識に使用される全域的位相マップ(topological map)、セルデータベースのグリッドマップ(grid map)、認識された障害物に関する情報が記録される障害物認識マップなどがある。
【0079】
一方、前述のように、用途別に保存部305にマップを区分して保存及び管理できるが、マップが用途別に明確に区分されない可能性もある。例えば、少なくとも2つ以上の用途として使用できるように1つのマップに複数の情報が保存されることもある。
【0080】
映像取得部320は、例えば、移動ロボット100の周辺の映像を取得することができる。映像取得部320は、例えば、少なくとも1つのカメラ(例:
図1aのカメラ120)を備える。以下、映像取得部320により取得した映像を「取得映像」と言える。
【0081】
映像取得部320は、例えば、デジタルカメラを含む。デジタルカメラは、少なくとも1つの光学レンズと、光学レンズを通過した光により像が結ばれる多数の光ダイオード(photodiode、例えば、pixel)を含んで構成されるイメージセンサ(例えば、CMOS image sensor)と、光ダイオードから出力された信号に基づいて映像を構成するデジタル信号処理機(digital signal processor:DSP)を含む。デジタル信号処理機は、例えば、静止画だけでなく、静止画で構成されたフレームからなる動画を生成することも可能である。
【0082】
映像取得部320は、例えば、移動ロボット100の走行方向前面に存在する障害物又は掃除領域の状況を撮影する。
【0083】
本発明の一実施形態によれば、映像取得部320は、本体110の周辺を連続的に撮影することにより複数の映像を取得し、取得された複数の映像は保存部305に保存される。
【0084】
移動ロボット100は、例えば、複数の映像を用いて障害物認識の正確性を高めるか、複数の映像のうち1つ以上の映像を選択して効果的なデータを使用することにより障害物認識の正確性を高めることができる。
【0085】
入力部325は、例えば、ユーザ入力を受信できる入力装置(例:キー、タッチパネルなど)を備える。例えば、入力部325は、移動ロボット100の電源オン/オフ(on/off)などの各種命令を入力できる操作部137を含む。
【0086】
入力部325は、例えば、入力装置を介して、ユーザ入力を受信し、受信されたユーザ入力に対応する命令を制御部350に送信する。
【0087】
吸入ユニット330は、例えば、ほこりが含まれた空気を吸入する。吸入ユニット330は、例えば、異物を吸入する吸入装置(図示せず)、掃き掃除を行うブラシ154、155、吸入装置やブラシ(例:
図1cのブラシ154、155)により集められた異物を溜めるダストボックス(図示せず)、空気が吸入される吸入口(例:
図1dの吸入口150h)などを含む。
【0088】
走行部360は、例えば、移動ロボット100を移動させることができる。走行部360は、例えば、移動ロボット100を移動させる少なくとも1つの駆動輪(例:
図1cの駆動輪136)と、駆動輪を回転させる少なくとも1つのモータ(図示せず)とを含む。
【0089】
センサ部370は、本体110の外部の物体との距離を測定する距離測定センサを含む。距離測定センサは、本体110の外部の地形に関する情報を取得するLiDARセンサ175を含む。以下、距離測定センサは、LiDARセンサ175を基準に理解される。
【0090】
センサ部370は、例えば、移動ロボット100の内/外部の情報を感知する多様なセンサを含む。
【0091】
センサ部370は、例えば、レーザーを利用して本体110の外部の地形情報を取得するライダー(LiDAR)センサ(例:
図1aのLiDARセンサ175)を含む。
【0092】
センシング部170は、レーザーを利用して本体110の外部の地形情報を取得するLiDARセンサ175を含む。
【0093】
LiDARセンサ175は、レーザーを出力してレーザーを反射させたオブジェクトの距離、位置方向、材質などの情報を提供し、走行区域の地形情報を取得できる。移動ロボット100は、LiDARセンサ175により360度の地形(Geometry)情報を得る。
【0094】
本発明の一実施形態による移動ロボット100は、LiDARセンサ175がセンシングしたオブジェクトの距離と位置、方向などを把握してマップを生成する。
【0095】
本発明の一実施形態による移動ロボット100は、外部から反射されて受信されるレーザーの時間差又は信号強度などのレーザー受信パターンを分析して走行区域の地形情報を取得できる。また、移動ロボット100は、LiDARセンサ175により取得した地形情報を利用してマップを生成する。
【0096】
例えば、本発明による移動ロボット100は、LiDARセンサ175により、現在位置において取得した周辺地形情報を分析して移動方向を決定するLiDAR SLAMを行うことができる。
【0097】
より好ましくは、本発明による移動ロボット100は、カメラを利用するビジョンベースの位置認識とレーザーを利用するLiDARベースの位置認識技術及び超音波センサにより障害物を効果的に認識し、変化量の小さい最適の移動方向を抽出してマップ生成を行う。
【0098】
センサ部370は、例えば、前方の障害物を感知する障害物感知センサ(例:
図1aの障害物感知センサ171)、走行区域内の床に段差の存否を感知する段差感知センサ(例:
図1dの段差感知センサ172)などを含む。
【0099】
障害物感知センサ171は、例えば、移動ロボット100の外周面に一定間隔で複数配置されてもよい。障害物感知センサ171は、例えば、赤外線センサ、超音波センサ、RF(radio frequency)センサ、地磁気センサ、PSD(position sensitive device)センサなどを含む。
【0100】
障害物感知センサ171は、例えば、室内の壁や障害物との距離を感知するセンサであり、本発明はその種類に限定されないが、以下では超音波センサを例示して説明する。
【0101】
障害物感知センサ171は、例えば、移動ロボット100の走行(移動)方向に存在する物体、特に、障害物を感知して障害物情報を制御部350に伝達する。すなわち、障害物感知センサ171は、移動ロボット100の移動経路、移動ロボット100の前方や側面に存在する突出物、家の中の什器、家具、壁面、壁の角などを感知してその情報を制御部350に伝達する。
【0102】
センサ部370は、例えば、移動ロボット100の走行動作を感知して動作情報を出力する走行感知センサ(図示せず)をさらに含む。走行感知センサは、例えば、ジャイロセンサ(gyro sensor)、ホイールセンサ(wheel sensor)、加速度センサ(acceleration sensor)などを含む。
【0103】
ジャイロセンサは、例えば、移動ロボット100が運転モードによって動くとき、回転方向を感知し、回転角を検出する。ジャイロセンサは、例えば、移動ロボット100の角速度を検出して角速度に比例する電圧値を出力する。
【0104】
ホイールセンサは、例えば、駆動輪136(例:
図1dの左輪136(L)と右輪136(R))に連結されて駆動輪136の回転数を感知することができる。ここで、ホイールセンサは、例えば、エンコーダ(encoder)であり得る。エンコーダは、左輪136(L)と右輪136(R)の回転数を感知して出力することができ、
【0105】
加速度センサは、例えば、移動ロボット100の速度変化を検出できる。加速度センサは、例えば、駆動輪136の隣接した位置に取り付けられてもよく、制御部350に内蔵されてもよい。
【0106】
出力部380は、例えば、オーディオ信号を出力する音響出力部381を含む。音響出力部は、制御部350の制御により警告音、動作モード、動作状態、エラー状態などの通知メッセージ、ユーザの命令入力に対応する情報、ユーザの命令入力に対応する処理結果などを音響で出力することができる。
【0107】
音響出力部381は、例えば、制御部150からの電気信号をオーディオ信号に変換して出力する。このために、スピーカーなどを備える。
【0108】
出力部380は、例えば、ユーザの命令入力に対応する情報、ユーザの命令入力に対応する処理結果、動作モード、動作状態、エラー状態などを映像で表示するディスプレイ382を含む。
【0109】
実施形態によっては、ディスプレイ382はタッチパッドと相互レイヤ構造をなしてタッチスクリーンで構成されてもよい。この場合、タッチスクリーンで構成されるディスプレイ382は、出力装置以外に、ユーザのタッチにより情報入力が可能な入力装置として使用されることもできる。
【0110】
通信部390は、例えば、少なくとも1つの通信モジュール(図示せず)を備え、外部機器とデータを送受信する。移動ロボット100と通信する外部機器のうち外部端末機は、例えば、移動ロボット100を制御するためのアプリケーションを備え、アプリケーションの実行により移動ロボット100が掃除する走行区域に対するマップを表示し、マップ上に特定領域を掃除するように領域を指定することができる。外部端末機は、例えば、マップ設定のためのアプリケーション(application)が搭載されたリモコン、PDA、ラップトップ、スマートフォン、タブレットなどがある。
【0111】
通信部390は、例えば、ワイファイ(Wi-fi)、ブルートゥース(登録商標)(bluetooth)、ビーコン(beacon)、ジグビー(zigbee)、RFID(radio frequency identification)などの無線通信方式で信号を送受信できる。
【0112】
一方、移動ロボット100は、例えば、充電可能なバッテリ(例:
図1dのバッテリ138)を備えてロボット掃除機内に電源を供給する電源供給部(図示せず)を含む。
【0113】
電源供給部は、例えば、移動ロボット100の各構成要素に駆動電源と動作電源を供給する。
【0114】
移動ロボット100は、例えば、バッテリ138のバッテリ残量、充電状態などを感知し、感知結果を制御部350に送信するバッテリ感知部(図示せず)をさらに含む。一方、バッテリ残量に関する情報は、例えば、出力部380を介して出力される。
【0115】
制御部350は、例えば、移動ロボット100に備えられた各構成に接続される。制御部350は、例えば、移動ロボット100に備えられた各構成と互いに信号を送受信し、各構成の全般的な動作を制御する。
【0116】
制御部350は、例えば、センサ部370により取得した情報に基づいて、移動ロボット100の内/外部に対する状態を判断する。
【0117】
制御部350は、例えば、ジャイロセンサから出力される電圧値を用いて回転方向及び回転角を算出する。
【0118】
制御部350は、例えば、ホイールセンサから出力される回転数に基づいて、駆動輪136の回転速度を演算する。また、制御部350は、例えば、左輪136(L)と右輪136(R)の回転数の差に基づいて回転角を演算することもできる。
【0119】
制御部350は、例えば、加速度センサから出力される値に基づいて、移動ロボット100の出発、停止、方向転換、物体との衝突などの移動ロボット100の状態変化を判断できる。一方、制御部350は、例えば、加速度センサから出力される値に基づいて、速度変化に伴う衝撃量が検出できるため、加速度センサは電子式バンパーセンサの機能を果たすこともできる。
【0120】
制御部350は、例えば、超音波センサを介して受信された少なくとも2以上の信号に基づいて、障害物の位置を感知し、感知された障害物の位置に応じて移動ロボット100の動きを制御する。
【0121】
実施形態によっては、移動ロボット100の外側面に備えられる障害物感知センサ131は発信部と受信部を含んで構成される。
【0122】
例えば、超音波センサは、少なくとも1つ以上の発信部及び少なくとも2つ以上の受信部が互いに交互に備えられる。これにより、発信部は多様な角度から超音波信号を放射し、障害物に反射された超音波信号を少なくとも2つ以上の受信部が多様な角度から受信することができる。
【0123】
実施形態によっては、超音波センサから受信された信号は、増幅、フィルタリングなどの信号処理過程を経ることができ、その後、障害物までの距離及び方向が算出される。
【0124】
一方、制御部350は、例えば、走行制御モジュール351、地図生成モジュール352、位置認識モジュール353及び/又は障害物認識モジュール354を含む。本図においては、説明の便宜上、走行制御モジュール351、地図生成モジュール352、位置認識モジュール353及び/又は障害物認識モジュール354に区分して説明しているが、本発明はこれに限定されるものではない。
【0125】
例えば、位置認識モジュール353と障害物認識モジュール354は1つの認識機として統合されて1つの認識モジュール355で構成されてもよい。この場合、マシンラーニングなどの学習技法を利用して認識機を学習させ、学習された認識機はその後に入力されるデータを分類して領域、物体などの属性を認識することができる。
【0126】
実施形態によって、地図生成モジュール352、位置認識モジュール353及び、障害物認識モジュール354が1つの統合モジュールで構成されてもよい。
【0127】
走行制御モジュール351は、例えば、移動ロボット100の走行を制御し、走行設定に従って走行部360の駆動を制御する。
【0128】
走行制御モジュール351は、例えば、走行部360の動作に基づいて移動ロボット100の走行経路を把握する。例えば、走行制御モジュール351は、駆動輪136の回転速度に基づいて移動ロボット100の現在又は過去の移動速度、走行距離などを把握し、このように把握された移動ロボット100の走行情報に基づいて、マップ上における移動ロボット100の位置が更新される。
【0129】
地図生成モジュール352は、例えば、走行区域に対するマップを生成する。
【0130】
地図生成モジュール352は、例えば、移動ロボット100の走行中に、取得した情報に基づいてマップをリアルタイムで生成/又は更新する。
【0131】
地図生成モジュール352は、例えば、複数の移動方向を設定できる。例えば、地図生成モジュール352は、走行区域に対するマップを生成する機能(以下、マップ生成機能)が実行される場合、機能が実行される時点に移動ロボット100の前面が向く方向を第1移動方向に設定してもよい。また、地図生成モジュール352は、例えば、機能が実行される時点に移動ロボット100の左側面が向く方向を第2移動方向に、移動ロボット100の右側面が向く方向を第3移動方向に、第1方向の反対方向である移動ロボット100の背面が向く方向を第4移動方向に設定してもよい。
【0132】
一方、既に設定された複数の移動方向は、例えば、マップを生成する機能の実行中に、移動ロボット100が移動するか、回転する場合にも変更されずに固定されて設定される。
【0133】
例えば、複数の移動方向が設定された後、移動ロボット100が反時計回りに回転した場合、移動ロボット100の前面が向いている方向は第2移動方向となり、移動ロボット100が直進する場合、移動ロボット100の走行方向は第2移動方向であり得る。
【0134】
一方、本図においては、複数の移動方向を4つの方向に設定されるものと説明しているが、本発明はこれに限定されるものではなく、様々な実施形態によって、8つ、16個などの多様な方向に設定されてもよい。
【0135】
地図生成モジュール352は、例えば、映像取得部320により取得した映像に基づいてマップを作成する。例えば、地図生成モジュール352は、移動ロボット100の走行中に、映像取得部320により取得した取得映像に基づいてマップを作成する。
【0136】
地図生成モジュール352は、例えば、映像取得部320により取得した取得映像のそれぞれに含まれた、走行区域に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などの様々な特徴(feature)を検出する。
【0137】
地図生成モジュール352は、例えば、取得映像から特徴を検出する特徴検出器(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検出器などを含む。
【0138】
地図生成モジュール352は、例えば、取得映像から検出した走行区域に対する特徴に基づいて、マップを作成することができる。一方、本発明の様々な実施形態によれば、取得映像から特徴を検出する動作は、位置認識モジュール353において行われてもよい。
【0139】
地図生成モジュール352は、例えば、LiDARセンサ175により取得した情報に基づいてマップを作成する。
【0140】
例えば、地図生成モジュール352は、LiDARセンサ175を介して出力され、外部オブジェクトに反射されて受信されるレーザーの受信時間差、信号強度のような受信パターンを分析して、走行区域の地形情報を取得する。走行区域の地形情報は、例えば、移動ロボット100の周辺に存在するオブジェクトの位置、距離、方向などを含む。
【0141】
地図生成モジュール352は、例えば、LiDARセンサ175により取得した走行区域の地形情報に基づいてノードを生成し、生成されたノードを含む第1マップデータを生成する。
【0142】
地図生成モジュール352は、例えば、LiDARセンサ175を介して障害物が存在する領域と存在しない領域に対するセルデータが異なるグリッドマップを生成する。
【0143】
地図生成モジュール352は、例えば、LiDARセンサ175を介して第1マップデータとグリッドマップを融合して第2マップデータを生成する。
【0144】
位置認識モジュール353は、例えば、移動ロボット100の位置を判断することができる。位置認識モジュール353は、例えば、移動ロボット100の走行中に、移動ロボット100の位置を判断する。
【0145】
位置認識モジュール353は、例えば、映像取得部320により取得した取得映像に基づいて、移動ロボット100の位置を判断する。
【0146】
例えば、位置認識モジュール353は、移動ロボット100の走行中に、取得映像から検出した走行区域の各位置に対する特徴を、地図生成モジュール352により生成されたマップデータに基づいて各位置にマッピング(mapping)させ、マップの各位置にマッピングされた走行区域の各位置に対する特徴に関するデータを位置認識データとして保存部305に保存する。
【0147】
一方、例えば、位置認識モジュール353は、取得映像から検出した走行区域に対する特徴と、保存部305に保存された位置認識データに含まれた走行領域のそれぞれの位置に対する特徴を比較して、位置別の類似度(確率)を算出し、算出された位置別の類似度(確率)に基づいて、類似度が最も大きい位置を移動ロボット100の位置として判断する。
【0148】
本発明の一例によれば、移動ロボット100は、映像取得部320により取得した映像から特徴を抽出し、前記抽出した特徴を第1マップデータにマッピング(mapping)し、第1マップデータにマッピング(mapping)された特徴に基づいて、移動ロボット100の位置を判断する。
【0149】
本発明の一実施形態によれば、移動ロボット100は、映像取得部320により取得した映像から特徴を抽出し、前記抽出した特徴を第2マップデータにマッピング(mapping)し、第2マップデータにマッピング(mapping)された特徴に基づいて、移動ロボット100の位置を判断する。
【0150】
一方、移動ロボット100は、例えば、位置認識モジュール353なしに走行制御モジュール351、地図生成モジュール352及び/又は障害物認識モジュール354によりマップを学習して、現在位置を判断することもできる。
【0151】
障害物認識モジュール354は、例えば、移動ロボット100の周辺の障害物を感知する。例えば、障害物認識モジュール354は、映像取得部320を介して取得した取得映像及び/又はセンサ部370を介して取得したセンシングデータに基づいて、移動ロボット100の周辺の障害物を感知する。
【0152】
例えば、障害物認識モジュール354は、LiDARセンサ175により取得した走行区域の地形情報に基づいて、移動ロボット100の周辺の障害物を感知する。
【0153】
障害物認識モジュール354は、例えば、移動ロボット100の走行中に、移動ロボット100の走行を妨げる障害物が存在するか否かを判断する。
【0154】
障害物認識モジュール354は、例えば、障害物が存在すると判断される場合、障害物の属性に応じて直進、回転などの走行パターンを決定し、決定された走行パターンを走行制御モジュール351に伝達する。
【0155】
例えば、障害物の属性が移動ロボット100の走行が可能な種類の障害物(例:床に存在する突出物など)である場合、障害物認識モジュール354は、移動ロボット100が走行し続けるように走行パターンを決定する。
【0156】
または、例えば、障害物の属性が移動ロボット100の走行が不可能な種類の障害物(例:壁面、家具など)である場合、障害物認識モジュール354は、移動ロボット100が回転するように走行パターンを決定する。
【0157】
本発明の実施形態による移動ロボット100は、マシンラーニング(machine learning)ベースの人、物体認識及び回避を行うことができる。ここで、マシンラーニングは、コンピュータに人が直接ロジック(Logic)を指示しなくてもデータからコンピュータが学習し、これによりコンピュータが自分で問題を解決するようにすることを意味する。
【0158】
ディープラーニング(Deep Learning)は、人工知能を構成するための人工ニューラルネットワーク(artificial neural networks:ANN)に基づいてコンピュータに人の考え方を教える方法でアリ、人が教えなくてもコンピュータが自分で人間のように学習できる人工知能技術を意味する。
【0159】
人工ニューラルネットワーク(ANN)は、ソフトウェア形態で実現されるか、チップ(chip)などのハードウェア形態で実現される。
【0160】
障害物認識モジュール354は、例えば、障害物の属性が学習されたソフトウェア又はハードウェア形態の人工ニューラルネットワーク(ANN)を含む。
【0161】
例えば、障害物認識モジュール354は、ディープラーニングにより学習されたCNN(convolutional neural network)、RNN(recurrent neural network)、DBN(deep belief network)などのディープニューラルネットワーク(deep neural network:DNN)を含む。
【0162】
障害物認識モジュール354は、例えば、ディープニューラルネットワーク(DNN)に含まれたノード間の加重値(weight)に基づいて入力される映像データに含まれる障害物の属性を判別する。
【0163】
障害物認識モジュール354は、例えば、映像取得部320、特に前面カメラセンサ120aが取得した映像全体を使用するのではなく、一部の領域のみを使用することで移動方向に存在する障害物の属性を判別することができる。
【0164】
また、走行制御モジュール351は、例えば、認識された障害物の属性に基づいて走行部360の駆動を制御することができる。
【0165】
保存部305には、例えば、障害物属性判別のための入力データ、前記ディープニューラルネットワーク(DNN)を学習するためのデータが保存される。
【0166】
保存部305には、例えば、映像取得部320が取得した原本映像と所定領域が抽出された抽出映像が保存される。
【0167】
保存部305には、例えば、ディープニューラルネットワーク(DNN)構造をなす加重値(weight)、バイアス(bias)が保存される。
【0168】
例えば、ディープニューラルネットワーク構造をなす加重値(weight)、バイアス(bias)は、障害物認識モジュール354の組み込みメモリ(embedded memory)に保存される。
【0169】
障害物認識モジュール354は、例えば、映像取得部320が取得する映像の一部領域を抽出するたびに、前記抽出された映像をトレーニング(training)データとして使用して学習過程を行うか、所定数以上の抽出映像を取得してから学習過程を行うことができる。
【0170】
すなわち、障害物認識モジュール354は、例えば、障害物を認識するたびに認識結果を追加して、加重値(weight)などのディープニューラルネットワーク(DNN)構造をアップデートするか、所定回数のトレーニングデータが確保された後に確保されたトレーニングデータで学習を行って、加重値(weight)などのディープニューラルネットワーク(DNN)構造をアップデートする。
【0171】
または、移動ロボット100は、例えば、通信部390を介して映像取得部320が取得した原本映像又は抽出された映像を所定サーバに送信し、所定サーバからマシンラーニングに関連するデータを受信する。
【0172】
この場合に、移動ロボット100は、所定サーバから受信されたマシンラーニングに関連するデータに基づいて障害物認識モジュール354をアップデート(update)することができる。
【0173】
図4aは、本発明の一実施形態による、移動ロボットに備えられたLiDARセンサの説明に参照される図であり、
図4bは、本発明の一実施形態による、移動ロボットの走行に関する説明に参照される図である。
【0174】
図4aに示すように、LiDARセンサ175は、例えば、360度全方向に対してレーザーを出力し、オブジェクトから反射されたレーザーを受信することにより、レーザーを反射させたオブジェクトとの距離、位置方向、材質などの情報を取得し、走行区域の地形情報を取得することができる。
【0175】
移動ロボット100は、例えば、LiDARセンサ175の性能及び設定による、一定距離以内の地形情報を取得できる。例えば、移動ロボット100は、LiDARセンサ175を基準に一定距離(610)の半径を有する円の領域内の地形情報を取得できる。
【0176】
移動ロボット100は、例えば、円の領域を複数の移動方向によって区分する。例えば、複数の移動方向が4つの領域に設定される場合、円の領域を第1移動方向(501)ないし第4移動方向(504)に対応する4つの領域に区分し、走行区域の地形情報を各領域に対して区分する。
【0177】
図4bは、本発明の一実施形態による、移動ロボットの走行に関する説明に参照される図である。
【0178】
図4bに示すように、移動ロボット100は、走行区域の地形情報を取得する。例えば、移動ロボット100は、走行命令に従って走行中に、LiDARセンサ175を介して走行区域の地形情報を取得することができる。
【0179】
移動ロボット100は、LiDARセンサ175を介して取得した4つの移動方向に対する地形情報から、自由縁(free edge)を抽出することができる。ここで、自由縁(free edge)は、例えば、移動ロボット100の走行可能な、レーザーを反射させたオブジェクト間の空間に関する情報を意味し得る。
【0180】
図4bに示すように、移動ロボット100は、それぞれの移動方向に対して、移動通路の両端点と、LiDARセンサ175を基準に一定距離の半径を有する円の領域により描かれる弧に基づいて自由縁(free edge)を抽出することができる。
【0181】
自由縁(E1、E2、E3)は、各移動方向の移動通路の幅、移動通路の位置情報、移動通路の中央点に関する情報などを含み、移動通路の両端点と移動ロボット100の中心線の間の角度に関する情報も含む。ここで、移動ロボット100の中心線は、例えば、移動ロボット100を基準に、複数の移動方向に向かって延長した直線を意味し得る。
【0182】
一方、移動ロボット100は、自由縁(free edge)において壁面のような障害物に対応する特徴点(以下、エッジ(edge))を抽出することができる。この時、移動ロボット100は、エッジ間の間隔に基づいて、移動通路の幅、障害物間の間隔などを判断することができる。
【0183】
一方、移動ロボット100は、移動通路の中央に沿って移動するために、自由縁(free edge)に基づいて移動通路の中央点を検出し、中央点に従って走行することができる。
【0184】
図5は、本発明の一実施形態による、移動ロボットのマップ生成過程に関するフローチャートである。
【0185】
図5に示すように、移動ロボット100は、移動しながらノードベースの第1マップデータ及びグリッドベースの第2マップデータを生成する。
【0186】
移動ロボット100は、ノードベースの第1マップデータとグリッドベースの第2マップデータを独立的に生成することができる。第1マップデータの生成は、
図6aないし
図6jから理解できる。第2マップデータ生成は、
図12aないし
図12fから理解できる。
【0187】
移動ロボット100は、ノードベースの第1マップデータとグリッドベースの第2マップデータを融合することができる。移動ロボット100は、LiDARデータ受信ステップ(S501)、ノードデータ生成ステップ(S502)、グリッドマップ生成ステップ(S503)、第1マップデータ生成ステップ(S504)、グリッドマップ更新ステップ(S505)、第2マップデータ生成ステップ(S506)により第1マップデータと第2マップデータを融合する。
【0188】
以下、第1マップデータと第2マップデータの融合方法について詳細に説明する。
【0189】
LiDARデータ受信ステップ(S501)は、制御部350が距離測定センサのうちLiDARセンサ175によりセンシングしたLiDARデータを受信する過程である。LiDARセンサ175は、レーザーを出力してレーザーを反射させたオブジェクトの距離、位置方向、材質などの情報を提供し、走行区域の地形情報を取得する。
【0190】
本発明の実施形態によるLiDARデータはLiDARセンサ175がセンシングした障害物の距離と位置、方向などの情報を意味する。
【0191】
ノードデータ生成ステップ(S502)は、LiDARデータに基づいてノードに関するデータであるノードデータを生成する過程である。
【0192】
ノードは、例えば、走行区域上の一地点を意味する。ノードに関するデータは、例えば、ノード位置に対する走行区域上の座標、ノードにおける複数の移動方向に関する情報、他のノードとの関係に関する情報などを含む。
【0193】
ノードデータは、少なくとも1つのノードのそれぞれに対して、ノード位置の座標値と、前記複数の移動方向のそれぞれに関するデータ値を含む。複数の移動方向のそれぞれに関するデータ値は、オープン(open)された移動方向を示す第1データ値、前記移動ロボットの走行が不可能な移動方向を示す第2データ値、及び他のノードを示す第3データ値のいずれか1つに設定されることを意味する。
【0194】
例えば、オープン(open)された移動方向を示す第1データ値は-2、前記移動ロボットの走行が不可能な移動方向を示す第2データ値は-1、及び他のノードを示す第3データ値はノード生成の順に従って1、2、3などであり得る。
【0195】
グリッドマップ生成ステップ(S503)は、LiDARデータ及びノードデータに基づいてセルベースのグリッドマップを生成する過程である。
【0196】
グリッドマップは、移動ロボット100の周辺環境認識のためのマップであり、周辺空間を同一のサイズの格子又はセル(以下、セル)で表現し、各セルに物体の存否を表示したマップを意味する。移動ロボット100は、距離測定センサを利用して周辺環境に対するグリッドマップを生成する。
【0197】
グリッドマップ400は、所定の空間を同一サイズのセルに分け、各セルに物体の存否を表示した地図である。物体の存否は色で表示する。例えば、白色セルは物体のない領域を、灰色セルは物体のある領域を示す。従って、灰色セルを連結した線はある空間の境界線(壁、障害物など)を示すことができる。セルの色はイメージ処理の過程により変更されることもある。
【0198】
制御部350は、ノードを生成すると同時にグリッドマップを生成することができる。
【0199】
制御部350は、ノードの生成が完了した後にグリッドマップを生成することができる。
【0200】
以下、グリッドマップ生成ステップ(S503)は、ノードを生成すると同時にグリッドマップを生成する過程を意味する。
【0201】
制御部350は、ノードデータを生成するとともに、前記ノード位置に対する座標値を基準に前記LiDARセンサのセンシング範囲内において前記グリッドマップを生成する。すなわち、制御部350は、ノードが生成され、生成されたノードに移動しながらLiDARセンサのセンシング範囲内においてグリッドマップを生成する。
【0202】
グリッドマップを生成する場合のLiDARセンサのセンシング範囲は、ノードデータを生成する場合のセンシング範囲と異なる。例えば、グリッドマップを生成する時のLiDARセンサのセンシング範囲は11mであり得る。例えば、ノードデータを生成する場合のセンシング範囲は3mであり得る。
【0203】
制御部350は、ノードデータベースでグリッドマップを生成する場合、センシング範囲を、ノードデータを生成する場合のセンシング範囲に設定することができる。例えば、制御部350は、ノードが生成され、生成されたノードに移動しながらLiDARセンサのセンシング範囲である3m内においてグリッドマップを生成する。
【0204】
制御部350は、ノードベースの第1マップデータ生成が完了するまでノードデータベースでグリッドマップを生成する。制御部350は、第1マップデータの生成が完了すると、ノードデータベースのグリッドマップを最終的に更新し、保存する。
【0205】
第1マップデータ生成ステップ(S504)は、生成されたノードデータに基づいて、ノードに関するマップを生成する過程である。
【0206】
制御部350は、LiDARセンサのセンシングデータであるLiDARデータを受信し、LiDARデータ及びノードデータに基づいて、既に設定された複数の移動方向のうち、オープン(open)された移動方向が少なくとも1つ存在するか否かを判断する。
【0207】
制御部350は、前記複数の移動方向のうち、前記移動ロボット100の走行が可能であり、移動ロボットが既に走行していない移動方向を、前記オープン(open)された移動方向と判断することができる。
【0208】
制御部350は、オープン(open)された移動方向が少なくとも1つ存在する場合、既に設定された条件に従って、ノードデータをアップデートし、前記オープン(open)された移動方向のいずれか1つを、前記本体110が移動する走行方向として決定する。
【0209】
ノードデータをアップデートすることは、新しいノードを生成するか、少なくとも1つのノードのそれぞれに対するノード位置の座標値と、複数の移動方向のそれぞれに関するデータ値を更新することを含む。
【0210】
制御部350は、オープン(open)された移動方向が存在しない場合、ノードデータに基づいて、少なくとも1つのノードのうちアップデート(update)が必要なノードが少なくとも1つ存在するか否かを判断することができる。
【0211】
制御部350は、複数の移動方向のそれぞれに関するデータ値のうち少なくとも1つが、オープン(open)された移動方向を示す第1データ値に設定されたノードを、アップデート(update)が必要なノードと判断する。
【0212】
制御部350は、アップデートが必要なノードが存在する場合、アップデートが必要なノードのいずれか1つに移動ロボット100が移動するように走行部360を制御することができる。
【0213】
制御部350は、アップデートが必要なノードが存在しない場合、ノードデータに基づいて、少なくとも1つのノードを含む第2マップデータの生成を完了する。
【0214】
第1マップデータ生成ステップ(S504)は、以下、
図6aないし
図6jを参照してより詳細に説明される。
【0215】
グリッドマップ更新ステップ(S505)は、第1マップデータの生成が完了し、ノードデータベースのグリッドマップを最終的に更新する過程である。
【0216】
制御部350は、更新されたノードデータベースのグリッドマップを保存部305に保存する。最終更新されたノードデータベースのグリッドマップは、ノードの生成が完了しており、ノードを生成するために移動ロボット100が移動しながらLiDARセンサのセンシング範囲(例:3m)内においてセルを表示したマップを意味する。
【0217】
更新されたグリッドマップは、すべての領域が探索されている可能性がある。更新されたグリッドマップは、未探索領域が存在している可能性がある。探索領域と未検索領域を確認し、未検索領域に対するマップを生成するために、前記更新されたグリッドマップに基づいて第2マップデータ生成過程を経ることができる。
【0218】
第2マップデータ生成ステップ(S506)は、最終更新されたノードデータベースのグリッドマップを、イメージ処理過程によりアップデートする過程である。
【0219】
制御部350は、更新されたグリッドマップを、LiDARセンサがセンシングした結果から空き領域である第1領域と、LiDARセンサがセンシングした結果から障害物が存在する空間である第2領域と、LiDARセンサがセンシングしていない第3領域とに区分する。
【0220】
制御部350は、第1領域と第3領域の間に境界線を生成するイメージ処理を行う。
【0221】
制御部350は、各領域の色を異なるように示すものの、第1領域の色と第3領域の色の違いを最も大きく示し、第1領域と第3領域の間に線分を表示するイメージ処理を行う。
【0222】
制御部350は、イメージ処理された線分を境界線と判断する。
【0223】
制御部350は、境界線が1つ以上であると、最適の境界線を選択し、最適の境界線までの経路計画を行い、経路に沿って移動しながらグリッドマップをアップデートする。
【0224】
制御部350は、これ以上境界線が存在しないと判断すると、グリッドマップを保存し、第2マップデータの生成を完了する。
【0225】
第2マップデータ生成ステップ(S506)を完了した第2マップデータは、ノードベースの第1マップデータとグリッドベースの第2マップデータが融合されたマップデータであり得る。
【0226】
第2マップデータ生成ステップ(S506)は独立的に行われてもよい。以下、
図12aないし
図12fを参照してより詳細に説明される。
【0227】
第1マップデータは、迅速かつ安全なマップデータ生成が長所であるノードベースのマップ生成方法により生成される。第2マップデータは、第1マップデータに基づいて環境制約のないマップデータ生成が長所であるグリッドマップ生成方法により生成される。
【0228】
すなわち、最終的に生成された第2マップデータは、迅速かつ安全でありながら、環境制約のないノードベースのマップ生成方法及びグリッドベースのマップ生成方法が融合されたマップデータであり得る。
【0229】
図6aないし
図6jは、本発明の一実施形態による、移動ロボットの第1マップデータ生成過程を示す図である。
【0230】
本図において説明する移動ロボット100の動作は、移動ロボット100に備えられた構成(例:
図3の制御部350)の動作から理解できる。
【0231】
図6aに示すように、移動ロボット100は、マップ生成機能が実行される場合、複数の移動方向を設定することができる。
【0232】
例えば、移動ロボット100は、マップ生成機能が実行される場合、マップ生成機能が実行される時点に移動ロボット100の前面が向く方向を第1移動方向(501)、移動ロボット100の左側面が向く方向を第2移動方向(502)、移動ロボット100の右側面が向く方向を第3移動方向(503)、第1方向の反対方向である移動ロボット100の背面が向く方向を第4移動方向(504)に設定する。
【0233】
一方、移動ロボット100は、マップ生成機能が実行される場合、移動ロボット100の位置を調整し、調整された位置を基準に複数の移動方向(501ないし504)を設定する。
【0234】
例えば、移動ロボット100は、走行区域内の天井に対する映像を取得する上部カメラ(例:
図1aの上部カメラ120b)により天井に対する映像の特徴(例:天井方向)を検出し、検出された特徴に基づいて移動ロボット100の位置を調整することができる。
【0235】
一方、移動ロボット100は、マップ生成機能が実行される場合、現在の移動ロボット100の位置に対応する第1ノードN1を生成する。例えば、移動ロボット100は、第1ノードN1の座標を(0,0)に設定し、以後に生成されるノードの座標を第1ノードN1の座標を基準に設定する。ここで、ノードの座標は、例えば、座標平面上の座標であり得る。
【0236】
移動ロボット100は、LiDARセンサ(例:
図4aのLiDARセンサ175)により、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを判断する。
【0237】
ここで、オープン(open)された移動方向は、例えば、移動ロボット100の走行が可能であり、移動ロボット100が既に走行していない移動方向を意味し得る。
【0238】
例えば、移動ロボット100から一定距離(例:3m)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在するか、移動通路の幅が移動ロボット100の走行が可能な所定基準幅未満である場合、移動ロボット100は走行不可能であると判断する。
【0239】
図6bに示すように、移動ロボット100は、LiDARセンサ175により取得した、一定距離(610)以内の走行区域の地形情報に基づいて、複数の移動方向(501ないし504)に対する移動通路の幅をそれぞれ確認する。
【0240】
移動ロボット100は、複数の移動方向(501ないし504)に対応するそれぞれの領域において、移動通路の幅の算出の基準となるエッジ(edge)を決定し、各エッジ間の間隔に基づいて、移動通路の幅を確認する。
【0241】
このとき、移動通路の幅が基準幅(例:移動ロボット100の直径)以上である場合、移動ロボット100は走行可能な移動通路であると判断する。
【0242】
移動ロボット100は、第1移動方向(501)に対応する領域において2つのエッジ(e11、e12)を決定し、2つのエッジ(e11、e12)間の距離に基づいて、第1移動方向(501)に対する移動通路の幅(L1)が基準幅以上であると判断することができる。
【0243】
一方、第3移動方向(503)に対する移動通路の幅(L3)は基準幅以上であるが、移動ロボット100から一定距離(610)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在することを確認することができる。
【0244】
また、第4移動方向(504)も、移動ロボット100から一定距離(610)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在することを確認することができる。
【0245】
従って、移動ロボット100は、第1移動方向(501)及び第2移動方向(502)をオープン(open)された移動方向と判断する。
【0246】
移動ロボット100は、例えば、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを判断し、判断結果に基づいてノードを生成することもある。
【0247】
例えば、移動ロボット100は、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれていない場合、又は、オープン(open)された移動方向に移動ロボット100の現在の走行方向を含む複数の移動方向が含まれている場合、ノードを生成することができる。
【0248】
一方、例えば、移動ロボット100の現在の走行方向に設定された移動方向のみがオープン(open)された場合、移動ロボット100はノードを生成せず、設定された走行方向に従って直進する。
【0249】
一方、例えば、移動ロボット100は、現在位置に対応するノードが存在する場合、ノードを生成しない。この時、
図6aにおいて第1ノードN1を生成したので、移動ロボット100はノードを生成しなくてもよい。
【0250】
一方、
図6aにおいては、マップ生成機能が実行される場合、移動ロボット100が現在の移動ロボット100の位置に対応して第1ノードN1を生成すると説明しているが、本発明はこれに限定されるものではない。
【0251】
従って、マップ生成機能が実行される場合、移動ロボット100の走行方向が設定されていないため、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれていない場合に該当するので、移動ロボット100は、複数の移動方向(501ないし504)のうちにオープン(open)された移動方向が存在するか否かを判断した後に第1ノードN1を生成することもできる。
【0252】
移動ロボット100は、例えば、マップ生成機能が実行される時点に移動ロボット100の前面が向く方向を走行方向と決定することもできる。
【0253】
移動ロボット100は、例えば、オープン(open)された移動方向のいずれか1つを走行方向と決定することもできる。移動ロボット100は、例えば、オープン(open)された移動方向のそれぞれの費用(cost)を確認でき、オープン(open)された移動方向の費用を比較して、走行方向を決定することができる。ここで、費用(cost)は、例えば、オープン(open)された移動方向のそれぞれに対する移動通路の幅、現在走行方向として設定されているか否かなどを含む。
【0254】
例えば、移動ロボット100は、オープン(open)された移動方向のそれぞれに対する移動通路の幅を比較することができ、最も広い幅の移動通路の移動方向を走行方向として決定する。本図においては、第1移動方向(501)に対する移動通路の幅(L1)が最も広いので、第1移動方向(501)が走行方向として決定される。
【0255】
例えば、移動ロボット100は、オープン(open)された移動方向のうち、現在走行方向に設定されている移動方向を走行方向に維持することもできる。
【0256】
一方、移動ロボット100に保存されたノードに関するデータについて、以下の表1を参照して説明する。
【0257】
【0258】
表1を参照すると、第1ノードN1の座標は(0,0)に設定され、第1及び第2移動方向(501、502)はオープン(open)を示す-2、第3及び第4移動方向(503、504)はオープン(open)されていないことを示す-1に設定される。一方、本図においては、座標の基準数値をセンチメートル(cm)として説明しているが、本発明はこれに限定されるものではない。
【0259】
一方、第3移動方向(503)の場合、移動ロボット100から一定距離(610)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在するが、移動通路の幅(L3)が基準幅以上で、移動ロボット100が走行できる領域が存在するので、第1ノードN1から第3移動方向(503)に所定距離離隔された位置に第2ノードN2を生成する。このとき、生成されるノードの位置は、例えば、移動ロボット100と障害物の間の距離(L4)を考慮して決定される。
【0260】
第1ノードN1及び第2ノードN2に関するデータは、以下の表2のように設定される。
【0261】
【0262】
表2を参照すると、第1ノードN1の第3移動方向(503)に第2ノードN2が生成されることにより、第1ノードN1の第3移動方向(503)に関するデータ値は第2ノードN2を示す2にアップデート(update)される。
【0263】
一方、第2ノードN2の座標は(0,-200)に設定され、第2移動方向(502)に第1ノードN1が位置することにより、第2ノードN2の第2移動方向(502)に関するデータ値は1に設定される。
【0264】
移動ロボット100は、走行方向と決定された第1移動方向に走行できる。移動ロボット100は、走行方向の移動通路を走行中に、移動通路の中央に沿って走行する。
【0265】
例えば、移動ロボット100は、走行方向の移動通路を走行中に、移動通路の幅の算出の基準となるエッジ(edge)に基づいて移動通路の中央点を検出し、中央点に沿って走行することができる。
【0266】
一方、移動ロボット100は、走行方向の移動通路を走行中に、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを判断する。例えば、移動ロボット100は、走行方向の移動通路を走行中に、複数の移動方向(501ないし504)にオープン(open)された移動方向が存在するか否かを所定周期によって持続的に判断することができる。
【0267】
図6cを参照すると、第3移動方向(503)に対する移動通路の幅(L3)は基準幅以上であるが、移動ロボット100から一定距離(610)以内に移動ロボット100の走行が不可能な種類の障害物e33が存在することが確認できる。
【0268】
一方、第4移動方向(504)は、走行方向の反対方向に該当して、移動ロボット100が既に走行していた移動方向に該当するので、移動ロボット100は、オープン(open)されていない移動方向と判断することができる。
【0269】
従って、移動ロボット100は、複数の移動方向(501ないし504)のうち走行方向である第1移動方向(501)のみがオープン(open)されたことを確認し、現在の走行方向に走行し続けることができる。
【0270】
図6dを参照すると、移動ロボット100は、走行方向の移動通路を走行中に、複数の移動方向(501ないし504)のうち、第1及び第2移動方向(501、502)がオープン(open)された移動方向であることが確認できる。
【0271】
現在の走行方向である第1走行方向(501)を含む複数の移動方向がオープン(open)された移動方向に該当するので、移動ロボット100は第3ノードN3を生成することができる。
【0272】
第1ノードN1ないし第3ノードN3に関するデータは、以下の表3のように設定される。
【0273】
【0274】
表3を参照すると、第1ノードN1の第1移動方向(501)に第3ノードN3が生成されることにより、第1ノードN1の第1移動方向(501)に関するデータ値は第3ノードN3を示す3にアップデート(update)される。
【0275】
一方、第3ノードN3の座標は、移動ロボット100の走行距離に基づいて(400,0)に設定され、第4移動方向(504)に第1ノードN1が位置することにより、第3ノードN3の第4移動方向(504)に関するデータ値は第1ノードN1を示す1に設定されることができる。
【0276】
移動ロボット100は、オープン(open)された第1及び第2移動方向(501、502)のそれぞれに対する移動通路の幅(L1、L2)を比較して、第1移動方向(501)を走行方向と決定することができる。
【0277】
図6eを参照すると、移動ロボット100は、走行方向に沿って走行中に、
図6dにおいて第3ノードN3を生成したのと同様に、第4ノードN4を生成する。
【0278】
一方、第1ノードN1ないし第4ノードN4に関するデータは、以下の表4のように設定される。
【0279】
【0280】
表4を参照すると、第3ノードN3の第1移動方向(501)に第4ノードN4が生成されることにより、第3ノードN3の第1移動方向(501)に関するデータ値は第4ノードN4を示す4にアップデート(update)される。
【0281】
一方、第4ノードN4の座標は、移動ロボット100の走行距離に基づいて、(800,0)に設定され、第4移動方向(504)に第3ノードN3が位置することにより、第4ノードN4の第4移動方向(504)に関するデータ値は第3ノードN3を示す3に設定されることができる。
【0282】
一方、移動ロボット100は、走行方向に沿って走行中に、走行方向である第1移動方向(501)に対して一定距離(610)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在することが確認できる。
【0283】
この時、移動ロボット100は、走行方向に沿って走行する状態であり、移動通路の幅(L1)が基準幅以上であるので、
図6bにおいて第1ノードN1を生成したのとは異なり、障害物に接近するまで移動し続けることができる。
【0284】
移動ロボット100が障害物に接近中にも、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在しない場合、移動ロボット100は、障害物に接近した位置に新しいノードを生成する。
【0285】
また、移動ロボット100は、ノードに関するデータに基づいて、ノードのうちアップデート(update)が必要なノードが存在するか否かを判断する。ここで、アップデート(update)が必要なノードは、例えば、ノードに関連するデータ値のうち、オープン(open)を示す-2を含むノードが存在する場合、当該ノードはアップデート(update)が必要なノードであると判断される。
【0286】
一方、
図6fのように、移動ロボット100が障害物に接近中に、複数の移動方向(501ないし504)のうち、走行方向である第1移動方向(501)はオープン(open)されておらず、他の移動方向(502)がオープン(open)されていることを確認する場合、移動ロボット100は第5ノードN5を生成することができる。
【0287】
一方、第1ノードN1ないし第5ノードN3に関するデータは、以下の表5のように設定される。
【0288】
【0289】
表5を参照すると、第4ノードN4の第1移動方向(501)に第5ノードN5が生成されることにより、第4ノードN4の第1移動方向(501)に関するデータ値は第5ノードN5を示す5にアップデート(update)される。
【0290】
一方、第5ノードN5の座標は、移動ロボット100の走行距離に基づいて、(1100,0)に設定され、第4移動方向(504)に第4ノードN4が位置することにより、第5ノードN5の第4移動方向(504)に関するデータ値は第4ノードN4を示す4に設定されることができる。
【0291】
一方、移動ロボット100は、複数の移動方向(501ないし504)のうちオープン(open)された移動方向である第2移動方向(502)を走行方向と決定し、第2移動方向(502)に走行することができる。
【0292】
図6gを参照すると、移動ロボット100は、走行方向に沿って走行中に、
図6cないし
図6eにおいて第3ノードN3ないし第5ノードN5を生成したのと同様に、第6ノードN6ないし第9ノードN9を生成することができる。
【0293】
このとき、本発明の図面においては、全空間の入口に設置されたドアが閉鎖されていることを基準に説明し、ドアが開放されている場合、移動ロボット100の移動経路は異なる可能性がある。
【0294】
一方、第1ノードN1ないし第9ノードN9に関するデータは、以下の表6のように設定される。
【0295】
【0296】
一方、移動ロボット100は、第9ノードN9において第3移動方向(503)に走行中に、第1ノードN1に復帰することを確認できる。
【0297】
移動ロボット100は、第1ノードN1に対応する位置においてオープン(open)された移動方向が存在しないことが確認できる。このとき、該当位置に第1ノードN1が既に設定されているので、移動ロボット100は新しいノードを生成することなく、ノードに関するデータに基づいて、ノードのうちアップデート(update)が必要なノードが存在するか否かを判断する。
【0298】
移動ロボット100は、アップデート(update)が必要なノードが存在する場合、アップデート(update)が必要なノードのいずれか1つに移動することができる。このとき、移動ロボット100は、アップデート(update)が必要なノードのうち、移動ロボット100の現在位置から最短距離に位置するノードを決定する。
【0299】
例えば、移動ロボット100は、ノードに関するデータに含まれたノード間の距離を確認し、移動ロボット100の現在位置から最短距離に位置するノードを決定する。
【0300】
一方、移動ロボット100は、アップデート(update)が必要なノードのいずれか1つに移動した後、複数の移動方向(501ないし504)のうちオープンされた移動方向が存在するか否かを判断する。
【0301】
前記表6を参照すると、移動ロボット100は、ノードに関連するデータ値にオープン(open)を示す-2が含まれている第3ノードN3、第4ノードN4、第7ノードN7、及び第8ノードN8をアップデート(update)が必要なノードと判断する。
【0302】
図6hに示すように、移動ロボット100は、アップデート(update)が必要なノードのうち、最短距離に位置する第3ノードN3に移動し、第3ノードN3においてオープン(open)された移動方向である第2移動方向(502)を走行方向と決定して走行する。
【0303】
移動ロボット100は、走行方向である第2移動方向(502)に走行中に、複数の移動方向(501ないし504)のうち走行方向である第2移動方向(502)のみがオープン(open)されていることを確認し、第2移動方向(502)に走行し続けることができる。
【0304】
一方、移動ロボット100は、所定距離以上を走行方向にのみ走行する場合、所定距離に従って新しいノードを生成することができる。
【0305】
移動ロボット100は、走行方向に走行中に、第10ノードN10を生成することができる。
【0306】
例えば、移動ロボット100は、走行方向に走行中に、所定距離以上複数の移動方向(501ないし504)のうち走行方向のみがオープン(open)されている場合、新しいノードを生成して、より正確なマップを作成することができる。
【0307】
移動ロボット100は、第8ノードN8に対応する位置に到着したことを確認できる。
【0308】
一方、第1ノードN1ないし第10ノードN10に関するデータは、以下の表7のように設定される。
【0309】
【0310】
移動ロボット100は、第8ノードN8に対応する位置においてオープン(open)された移動方向が存在しないことが確認することができる。このとき、当該位置に第8ノードN8が既に設定されているので、移動ロボット100は新しいノードを生成することなく、ノードに関するデータに基づいて、ノードのうちアップデート(update)が必要なノードが存在するか否かを判断する。
【0311】
前記表7を参照すると、移動ロボット100は、ノードに関連するデータ値にオープン(open)を示す-2が含まれている第4ノードN4及び第7ノードN7をアップデート(update)が必要なノードと判断する。
【0312】
図6iに示すように、移動ロボット100は、アップデート(update)が必要なノードのうち、最短距離に位置する第7ノードN7に移動し、第7ノードN7においてオープン(open)された移動方向である第3移動方向(503)を走行方向と決定して走行する。
【0313】
図6hにおいてのように、移動ロボット100は、走行方向である第3移動方向(503)に走行中に、複数の移動方向(501ないし504)のうち走行方向である第3移動方向(503)のみがオープン(open)されていることを確認し、現在の走行方向に走行し続けることができる。
【0314】
一方、移動ロボット100は、走行方向に走行中に、より正確なマップ作成のために、第11ノードN11を生成することができる。
【0315】
移動ロボット100は、第4ノードN4に対応する位置に到着したことを確認し、第4ノードN4に対応する位置においてオープン(open)された移動方向が存在しないことを確認することができる。また、該当位置に第4ノードN4が既に設定されているので、移動ロボット100は新しいノードを生成することなく、ノードに関するデータに基づいて、ノードのうちアップデート(update)が必要なノードが存在するか否かを判断する。
【0316】
一方、第1ノードN1ないし第11ノードN11に関するデータは、以下の表8のように設定される。
【0317】
【0318】
移動ロボット100は、ノードに関するデータに基づいて、アップデート(update)が必要なノードがそれ以上存在しないことを確認し、生成された全域位相マップ(topological map)を保存部305に保存することにより、第1マップデータの生成を完了する。
【0319】
図6jを参照すると、移動ロボット100は、生成された全域的位相マップ(topological map)に基づいてノード間の関係を確認し、移動経路を決定することもできる。
【0320】
図面に示されていないが、制御部350は、各ノードを生成し、ノードデータに基づいて移動ロボット100を移動させながら、同時にグリッドマップを生成することができる。
【0321】
グリッドマップ生成方法は、4方向または8方向に既に設定されたノードベースのマップ生成方法と異なり、方向の制限がなく、三又路のような環境でも円滑なマップ生成が可能である。
【0322】
しかしながら、グリッドマップベースのマップ生成方法によれば、移動ロボット100は、通路の中央に移動することができず、経路繰り返しによるマップ生成の遅延可能性があるため、優先的にノードベースの第1マップデータを生成し、その後にグリッドベースの第2マップデータを生成する。
【0323】
図7は、本発明の一実施形態による、移動ロボットの第1マップデータ生成方法に関するフローチャートを示す図である。
【0324】
図7に示すように、移動ロボット100は、S701動作において、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを判断する。
【0325】
例えば、移動ロボット100は、既に設定された複数の移動方向(501ないし504)のそれぞれに対して、移動ロボット100から一定距離(例:3m)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在せず、移動通路の幅が移動ロボット100の走行が可能な所定基準幅以上であり、移動ロボット100が既に走行していない方向であるか否かを判断することができる。
【0326】
移動ロボット100は、S702動作において、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在する場合、既に設定された条件に従ってノードを生成する。
【0327】
例えば、移動ロボット100は、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれていない場合、又は、オープン(open)された移動方向に移動ロボット100の現在の走行方向を含む複数の移動方向が含まれている場合、ノードを生成することができる。
【0328】
一方、例えば、移動ロボット100の現在の走行方向に設定された移動方向のみがオープン(open)された場合、移動ロボット100はノードを生成せず、設定された走行方向に従って直進する。
【0329】
一方、例えば、移動ロボット100は、現在位置に対応するノードが存在する場合、ノードを生成しないことがある。
【0330】
一方、ノードに関するデータは、ノードに対応する位置において複数の移動方向(501ないし504)がオープン(open)であるか否かに関するデータ値を含む。
【0331】
移動ロボット100は、S703動作で、オープン(open)された移動方向のうちいずれか1つを移動ロボット100の走行方向として決定する。
【0332】
例えば、移動ロボット100は、オープン(open)された移動方向のそれぞれに対する移動通路の幅を比較することができ、幅が最も広い移動通路の移動方向を走行方向として決定する。
【0333】
または、例えば、移動ロボット100は、オープン(open)された移動方向のうち、現在走行方向に設定されている移動方向を走行方向として維持することもできる。
【0334】
移動ロボット100は、S704動作において、走行方向として決定された移動方向に移動する。
【0335】
この時、移動ロボット100は、走行方向の移動通路を走行中に、移動通路の中央に沿って走行する。
【0336】
例えば、移動ロボット100は、走行方向の移動通路を走行中に、移動通路の幅の算出の基準となるエッジ(edge)に基づいて移動通路の中央点を検出し、中央点に従って走行する。
【0337】
一方、移動ロボット100は、走行方向の移動通路を走行中に、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを持続的に判断することができる。
【0338】
一方、移動ロボット100は、S705動作において、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在しない場合、ノードのうちアップデート(update)が必要なノードが存在するか否かを判断する。
【0339】
例えば、移動ロボット100は、それぞれのノードに関するデータ値を確認して、複数の移動方向(501ないし504)に関するデータ値のうちオープン(open)された移動方向を示すデータ値が含まれたノードが存在する場合、そのノードをアップデート(update)が必要なノードと判断する。
【0340】
移動ロボット100は、S706動作において、アップデート(update)が必要なノードが存在する場合、アップデート(update)が必要なノードのいずれか1つに移動される。
【0341】
例えば、移動ロボット100は、アップデート(update)が必要なノードのうち、移動ロボット100の現在位置から最短距離に位置するノードに移動する。
【0342】
一方、移動ロボット100は、S707動作において、アップデート(update)が必要なノードが存在しない場合、生成された全域位相マップ(topological map)を保存部305に保存することによりマップ生成を完了する。
【0343】
図8a及び
図8bは、本発明の一実施形態による、移動ロボットの第1マップデータ生成方法に対するフローチャートを示す図である。
【0344】
図8aに示すように、移動ロボット100は、S801動作において、マップ生成機能を行う。例えば、移動ロボット100は、電源がオン(on)になった場合、又は、ユーザからマップ生成機能を実行する命令が入力される場合、マップ生成機能を実行する。
【0345】
移動ロボット100は、S802動作において、複数の移動方向(501ないし504)を設定する。
【0346】
例えば、移動ロボット100は、マップ生成機能が実行される場合、マップ生成機能が実行される時点に移動ロボット100の前面が向く方向を第1移動方向(501)、移動ロボット100の左側面が向く方向を第2移動方向(502)、移動ロボット100の右側面が向く方向を第3移動方向(503)、第1方向の反対方向である移動ロボット100の背面が向く方向を第4移動方向(504)に設定する。
【0347】
移動ロボット100は、S803動作において、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを判断する。
【0348】
例えば、移動ロボット100は、既に設定された複数の移動方向(501ないし504)のそれぞれに対して、移動ロボット100から一定距離(例:3m)以内に移動ロボット100の走行が不可能な種類の障害物(例:壁面)が存在せず、移動通路の幅が移動ロボット100の走行可能な所定基準幅以上であり、移動ロボット100が既に走行していない方向であるか否かを判断することができる。
【0349】
図8bに示すように、移動ロボット100は、S804動作において、オープン(open)された移動方向が存在する場合、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれるか否かを確認する。
【0350】
この時、マップ生成機能が実行される時点では走行方向が設定されないことがあり、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれていない場合と判断される。
【0351】
移動ロボット100は、S805動作において、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれていない場合、移動ロボット100の現在位置に対するノードを生成する。
【0352】
移動ロボット100は、S806動作において、オープン(open)された移動方向のうちいずれか1つを走行方向と決定することもできる。
【0353】
例えば、移動ロボット100は、オープン(open)された移動方向のそれぞれに対する移動通路の幅を比較し、幅が最も広い移動通路の移動方向を走行方向と決定する。
【0354】
移動ロボット100は、S807動作において、走行方向と決定された移動方向にする。
【0355】
この時、移動ロボット100は、走行方向の移動通路を走行中に、移動通路の中央に沿って走行する。
【0356】
例えば、移動ロボット100は、走行方向の移動通路を走行中に、移動通路の幅の算出の基準となるエッジ(edge)に基づいて移動通路の中央点を検出し、中央点に従って走行する。
【0357】
一方、移動ロボット100は、走行方向の移動通路を走行中に、複数の移動方向(501ないし504)のうちオープン(open)された移動方向が存在するか否かを持続的に判断する。
【0358】
一方、移動ロボット100は、S808動作において、オープン(open)された移動方向に移動ロボット100の現在の走行方向が含まれている場合、現在の走行方向のみがオープン(open)された移動方向であるか否かを確認する。
【0359】
このとき、現在の走行方向を含む複数のオープン(open)された移動方向が存在する場合、S805動作に分岐して、移動ロボット100の現在位置に対するノードを生成する。
【0360】
一方、複数の移動方向(501ないし504)のうち現在の走行方向のみがオープン(open)された移動方向である場合、S807動作で分岐して、走行方向と決定された移動方向に移動し続ける。
【0361】
一方、
図8aを再び参照すると、移動ロボット100は、S809の動作において、オープン(open)された移動方向が存在しない場合、ノードを生成することができる。
【0362】
この時、当該位置にノードが既に設定されている場合、移動ロボット100は、新しいノードを生成しなくてもよい。
【0363】
移動ロボット100は、S810動作において、ノードのうちアップデート(update)が必要なノードが存在しているか否かを判断する。
【0364】
例えば、移動ロボット100は、それぞれのノードに関するデータ値を確認して、複数の移動方向(501ないし504)に関するデータ値のうちオープン(open)された移動方向を示すデータ値が含まれたノードが存在する場合、当該ノードをアップデート(update)が必要なノードと判断する。
【0365】
移動ロボット100は、S811動作において、アップデート(update)が必要なノードが存在する場合、アップデート(update)が必要なノードのいずれか1つを決定する。
【0366】
例えば、移動ロボット100は、アップデート(update)が必要なノードのうち、移動ロボット100の現在位置から最短距離に位置するノードを決定する。
【0367】
移動ロボット100は、S812動作において、S811動作で決定されたノードに移動する。
【0368】
例えば、移動ロボット100は、アップデート(update)が必要なノードのうち、移動ロボット100の現在位置から最短距離に位置するノードに移動する。
【0369】
一方、移動ロボット100は、S813動作において、アップデート(update)が必要なノードが存在しない場合、生成された全域的位相マップ(topological map)を保存部305に保存してマップ生成を完了する。
【0370】
前記のように、本発明の多様な実施形態によれば、移動ロボット100が移動中に、リアルタイムでノードを生成することができ、ノード間の連結関係を正確に設定することができる。
【0371】
また、本発明の多様な実施形態によれば、位相マップの生成中に、移動ロボット100が移動通路の中央に沿って走行することにより、障害物を回避する動作を最小化しながら移動することができるため、より安定的な移動経路を提供する位相マップを生成することができる。
【0372】
また、本発明の多様な実施形態によれば、移動ロボット100は、複数の移動方向(501ないし504)に関するデータ値のような、ノードのそれぞれに関する情報を正確に設定することができるため、より正確な移動経路を提供する位相マップを生成することができる。
【0373】
図9は、本発明の一実施形態による、移動ロボットの第2マップ生成過程の理解に参照されるフローチャートである。
【0374】
図9に示すように、移動ロボット100は、距離測定センサにより外部の物体との距離に関するセンサデータを受信するステップ(S901)、前記センサデータに基づいてセル単位のグリッドマップを生成するステップ(S902)、前記グリッドマップにおいて領域を区分し、前記領域間に境界線を生成するイメージ処理ステップ(S903)、1つ以上の境界線が存在するか否かを判断するステップ(S904)、1つ以上の前記の境界線が存在すると、最適の境界線を選択するステップ(S905)、前記最適の境界線まで経路を計画するステップ(S906)及び前記計画された経路に沿って移動しながら前記グリッドマップをアップデートするステップ(S907)を介して自動的にマップを生成することができる。
【0375】
移動ロボット100は、1つ以上の境界線が存在するか否かを判断するステップ(S904)において、1つ以上の前記境界線が存在しない場合はマップ生成を完了(S908)し、保存部305に前記完了したマップを保存する。
【0376】
図9のセンサデータ受信ステップ(S901)は、
図5のLiDARデータ受信ステップ(S501)を含む。前記センサデータはLiDARデータとともに、LiDARデータから生成されたノードデータを含む。
【0377】
センサデータ受信ステップ(S901)は、制御部350が距離測定センサのうちLiDARセンサ175によりセンシングしたLiDARデータを受信する過程である。LiDARセンサ175は、レーザーを出力してレーザーを反射させたオブジェクトの距離、位置方向、材質などの情報を提供し、走行区域の地形情報を取得する。
【0378】
本発明の実施形態によるLiDARデータはLiDARセンサ175がセンシングした障害物の距離と位置、方向などの情報を意味する。
【0379】
図9のグリッドマップ生成ステップ(S902)は、
図5のグリッドマップ生成ステップ(S503)及びグリッドマップ更新ステップ(S505)を含む。すなわち、独立的なグリッドマップ生成ステップ(S902)は、ノードベースのマップとグリッドベースのマップが融合したマップ生成過程におけるグリッドマップ生成ステップ(S503)及びグリッドマップ更新ステップ(S505)を含む。
【0380】
図9のグリッドマップ生成ステップ(S902)が完了すると、
図5のグリッドマップ更新ステップ(S505)が完了した更新されたグリッドマップが生成される。
【0381】
グリッドマップに対するイメージ処理ステップ(S903)は、グリッドマップの領域を区分するステップ(S903-1)、区分された領域に対して色によりイメージ処理を行うステップ(S903-2)及び第1領域と第3領域の間に線分を表示するイメージ処理ステップ(S903-3)を含む。以下、詳細な説明は
図10を参照する。
【0382】
本発明の実施形態によれば、グリッドマップに対するイメージ処理ステップ(S903)により、グリッドマップは、探索された空き空間の第1領域、探索された障害物が存在する第2領域及び未検索の第3領域に区分され、第1領域は白色、第2領域は灰色、第3領域は黒色でイメージ処理される。
【0383】
制御部350は、第1領域と第3領域の間に線分を表示するイメージ処理を行う。制御部350は、イメージ処理された線分を境界線として判断する。
【0384】
1つ以上の境界線が存在するか否かを判断するステップ(S400)は、線分を介して境界線の個数を判断する過程である。すなわち、制御部350がイメージ処理された線分の個数を判断することであり得る。
【0385】
境界線が1つ以上存在しない場合、制御部350は、マップ生成を完了し、保存部305に保存する。すなわち、第2マップデータ生成を完了する。
【0386】
境界線が1つ以上存在する場合、1つ以上の境界線のうち最適の境界線を選択するステップ(S905)に移動する。最適の境界線は、NBV(Next Best View)と呼ばれてもよい。
【0387】
最適の境界線選択ステップ(S905)は、コスト関数(Cost function)を利用する。コスト関数は、R(f)で表現され、以下の数式1により計算される。
【0388】
【0389】
数式1を参照すると、I(f)はInformation Costであり、いずれか1つの境界線に移動して得られる境界線周囲の環境情報(以下、第1情報)に関する関数である。
【0390】
I(f)は、境界線の長さ及び第3領域のセルの個数又は割合により計算される。境界線の長さ(l)が長い場合は、大きな空間である可能性が高く、コスト値は大きくなる。一定半径内の第3領域のセルの個数(u)が多い場合、未探索領域比率が大きく、コスト値は大きくなる。
【0391】
すなわち、I(f)は、1つ以上の境界線のいずれか1つの境界線に移動した時、前記いずれか1つの境界線の周囲の空間が広いか、未探索領域の割合が大きいため、優先的に探索する必要性があるか否かを決定する環境情報に関する関数であり得る。
【0392】
I(f)は、境界線の長さ(l)及び一定半径内の第3領域のセルの個数(u)に対する加重関数(weight function)である。
【0393】
【0394】
N(f)は、Navigation Costであり、現在の移動ロボット100の位置からいずれか1つの境界線の中心点までの距離情報(第2情報)に関する関数である。現在の移動ロボット100の位置からいずれか1つの境界線の中心点までの距離が近いほどN(f)の値は大きくなる。
【0395】
N(f)が大きいほどコスト値が大きくなる場合、現在の移動ロボット100の位置から近い地点からマップを生成することができる。ユーザの観点からはN(f)が一定レベル以上大きいことが有利である。しかしながら、N(f)が大きくなりすぎると、狭小な空間まで隅々探索を行う可能性が高いため、効率的なマップ生成のためにI(f)と加重値を置いて計算することができる。
【0396】
aはI(f)とN(f)の加重値を意味する。言い換えれば、コスト関数は前記第1情報及び前記第2情報に関する加重関数(weight function)であり、前記コスト値は、前記第1情報及び前記第2情報に関する加重関数(weight function)により決定される。加重値はユーザの入力信号により選択される。
【0397】
ユーザは、大きな空間中心に迅速なマップ生成のためにI(f)に加重値を置くことができ、近い空間中心に隅々のマップ生成のためにN(f)に加重値置くことができる。このような原理はマップ生成だけでなく、掃除を行う過程においても適用できる。
【0398】
HはHysteresis Gainであり、センシング範囲に応じる境界線の位置による利得を意味する。LiDARセンサ175のセンシング半径は11mである。
【0399】
境界線が現在の移動ロボット100の位置を基準にセンシング範囲内にあると、H>1であり、センシング範囲外にあると、H=1である。Hはロボットの進行方向に位置する境界線を選択できるようにして方向をあちらこちらに変えていく非効率な走行を防止できるようにする。
【0400】
図12cに示すように、移動ロボット100は、最適の境界線選択ステップ(S905)により複数の境界線のうちコスト値が最も大きい1つの境界線を選択する。第1線分、第2線分及び第3線分のそれぞれは図示してはいないが、制御部350は、前記第1線分、第2線分及び第3線分のそれぞれを第1境界線(F1)、第2境界線(F2)及び第3境界線(F3)と判断することができる。
【0401】
第1境界線(F1)の長さが最も長く、第3境界線(F3)の長さが最も短くてもよい。
【0402】
最適の境界線は、コスト関数を介して複数の境界線のうちコスト値が最も大きい第1境界線(F1)として選択される。N(f)値の加重値を大きく置かなければ、第1境界線(F1)の長さが最も長いため、I(f)値が大きいからである。
【0403】
経路計画ステップ(S906)は、最適の境界線(NBV)までの経路を計画する過程であり得る。前記経路は、最適の境界線(NBV)の中心点を設定し、現在位置から前記中心点までの経路を意味し得る。
【0404】
最適の境界線(NBV)の中心点は、前記境界線の長さを二等分する地点であり得る。制御部350は、境界線の長さを二等分する地点を中心点として設定し、現在の移動ロボット100の位置から前記中心点までの経路を生成することができる。
【0405】
経路計画ステップ(S906)は、経路生成ステップを含む。
【0406】
図11は、本発明の一実施形態による、グリッドウェーブ発生ステップの理解に役立つ図である。
【0407】
図11を参照すると、経路を生成するステップは、グリッドウェーブ1101を発生して前記移動ロボット100が位置する空間が存在するか否かを優先的に確認するウェーブ発生ステップをさらに含む。
【0408】
制御部350は、グリッドウェーブが閉じない空間を移動ロボット100が位置できない空間と判断し、前記グリッドウェーブが閉じる空間内においてのみ経路を生成する。
【0409】
例えば、
図11のように、障害物1102、1103によりウェーブが途切れ、第1空間1104へグリッドウェーブ1101が閉じないことがある。そうすると、第1空間内での経路生成は行われない。
【0410】
制御部350は、グリッドウェーブ1101が閉じない空間を移動ロボット100が位置できない空間と判断し、グリッドウェーブ1101が閉じない空間にある第1領域と第3領域の間で線分を表示するイメージ処理ステップ(S903-3)を経ない。すなわち、制御部350は、グリッドウェーブ1101が閉じない空間において境界線を判断することができない。
【0411】
グリッドマップアップデートステップ(S907)は、生成された経路に沿って移動しながら前記グリッドマップをアップデートするステップである。移動ロボット100は、最適の境界線(NBV)の中心点までの計画された経路に沿って移動するが、既に設定された距離の前まで移動できる。
【0412】
例えば、移動ロボット100は、最適の境界線(NBV)の中心点前の1mまで移動できる。
【0413】
LiDARセンサ175は、グリッドマップを生成する場合、11mのセンシング半径を有することができる。LiDARセンサ175は、第2マップデータを生成する場合、11mのセンシング半径を有することができる。
【0414】
従って、移動ロボット100が最適の境界線(NBV)の中心点の端まで移動する動作は、不必要な作業であり得る。移動ロボット100は、最適の境界線(NBV)の中心点から既に設定された距離の前まで移動して移動時間を短縮することにより、効率的なマップ生成を行うことができる。
【0415】
移動ロボット100は、経路計画ステップ(S906)により生成された経路に沿って移動しながら、グリッドマップをアップデートする。すなわち、移動ロボット100は、最適の境界線(NBV)から既に設定された距離の前まで移動しながらセンシングしたLiDARデータに基づいてグリッドマップをアップデートする。
【0416】
移動ロボット100は、アップデートされたグリッドマップを再びイメージ処理し、境界線を判断し、最適の境界線を選択して経路計画及びマップをアップデートする過程を繰り返す。
【0417】
移動ロボット100は、アップデートされたマップにおいて1つ以上の境界線が存在しないと判断すればマップ生成が完了し、アップデートされたマップを保存部305に保存する。すなわち、移動ロボット100は、1つ以上の境界線が存在しないとき、第2マップデータ生成を完了(S908)する。
【0418】
図10は、本発明の一実施形態による、グリッドマップに対するイメージ処理ステップを詳細に示す図である。
【0419】
図10を参照すると、グリッドマップに対するイメージ処理ステップ(S903)は、グリッドマップの領域を区分するステップ(S903-1)、区分された領域に対して色によりイメージ処理を行うステップ(S903-2)及び第1領域と第3領域の間に線分によりイメージ処理を行うステップ(S903-3)を含む。
【0420】
グリッドマップの領域を区分するステップ(S903-1)は、グリッドマップ生成ステップ(S902)において生成されたグリッドマップを複数の領域に区分する過程である。
【0421】
グリッドマップの領域を区分するステップ(S903-1)は、
図5のグリッドマップ更新ステップ(S505)において更新されたグリッドマップを複数の領域に区分する過程である。
【0422】
制御部350は、グリッドマップを、センサ部370がセンシングした結果から空き空間であれば第1領域に、センサ部370がセンシングした結果から障害物が存在する空間であれば第2領域に、センサ部370がセンシングしていない未探色空間であれば第3領域に区分する。前記領域はさらに多様になり得る。
【0423】
区分された領域に対して色によりイメージ処理を行うステップ(S903-2)は、各領域別に異なる色で表示する過程である。前記イメージ処理は、各領域に存在するセルに色を表示することである。この場合、第1領域と第3領域の色の違いは他の領域の色の違いより大きい。
【0424】
色によるイメージ処理は、明度の差によるイメージ処理も含む。
【0425】
例えば、グレースケール(Grey scale)により各領域を区分することができる。
図12cに示すように、第1領域1201は白色、第2領域1202は灰色、第3領域1203は黒色で表示する。第1領域1201と第3領域1203の明度差は、他の領域の明度差より大きい。
【0426】
第1領域1201と第3領域1203の間に線分によりイメージ処理を行うステップ(S903-3)は、第1領域1201と第3領域1203の間を区分する線分を描く過程である。
【0427】
制御部350は、イメージ処理された線分を境界線として判断する。すなわち、
図12cに示すように、境界線は第1境界線(F1)、第2境界線(F2)、第3境界線(F3)が存在する。
【0428】
線分によりイメージ処理を行うステップ(S903-3)は、第1領域と第3領域の間の長さと前記移動ロボット100の幅を比較するステップをさらに含む。制御部350は、第1領域と第3領域間の長さが移動ロボット100の幅より短いと判断すれば、第1領域と第3領域間に線分を表示するイメージ処理を行わない。
【0429】
制御部350は、移動ロボット100の幅より長い第1領域と第3領域の間を抽出して線分を表示するイメージ処理を行う。これにより、移動ロボット100が移動できる空間のみを目標と設定して効率的なマップ生成を実行できる効果がある。
【0430】
線分によるイメージ処理ステップ(S903-3)は、グリッドウェーブを発生して移動ロボット100が位置する空間が存在するか否かを確認するウェーブ発生ステップをさらに含む。
【0431】
制御部350は、グリッドウェーブが閉じない空間を移動ロボット100が位置できない空間と判断し、前記グリッドウェーブが閉じない空間内の第1領域と第3領域の間には線分を表示するイメージ処理を行わないことがある。これにより、移動ロボット100が移動できる空間のみを探索しながら効率的なマップ生成を実行できる効果がある。
【0432】
図12aないし
図12fは、本発明の実施形態による第2マップデータの生成過程を示す図である。
【0433】
図12aないし
図12fは、時間の流れに沿って探索された空き空間である第1領域1201、探索された障害物が存在する空間である第2領域1202及び未検索空間である第3領域1203が変化する様子である。
【0434】
第1領域1201は白色、第2領域1202は灰色、第3領域1203は黒色で表示され、制御部350は、第1領域1201と第3領域1203の間のイメージ処理された線分により境界線(F1、F2、F3)を判断する。
【0435】
図12aは、移動ロボット100が探索を開始する直前のステップを示す。センシングを開始する前であるため、黒色の第3領域1203のみが存在する。
【0436】
図12bは、移動ロボット100が探索を開始したステップを示す。第2マップデータの生成ステップ(S506)において、LiDARセンサのセンシング半径は11mである。
【0437】
制御部350は、アップデートされたグリッドマップをイメージ処理して、白色の第1領域1201、灰色の第2領域1202、黒色の第3領域1203に区分する。
【0438】
また、制御部350は、グリッドマップをイメージ処理する過程により、第1境界線(F1)、第2境界線(F2)、第3境界線(F3)を判断することができる。
【0439】
最適の境界線(NBV)はコスト値が最も高い境界線であり得る。例えば、制御部350は、境界線の長さが最も長い第1境界線(F1)を最適の境界線として選択することができる。最適の境界線は、加重値をどのように設定するかによって変わる。
【0440】
次に、制御部350は、第1境界線(F1)の中心点まで経路計画を立てる。この場合、グリッドウェーブを介して優先的に移動ロボット100が位置できる空間が存在するか否かを判断する。
【0441】
図12cは、移動ロボット100が計画された経路に沿って移動しながらセンシングしたデータに基づいてグリッドマップをアップデートした結果を示す。
【0442】
制御部350は、アップデートされたグリッドマップをイメージ処理して、白色の第1領域1201、灰色の第2領域1202、黒色の第3領域1203に区分する。
【0443】
また、制御部350は、グリッドマップをイメージ処理する過程により、第1境界線(F1)、第2境界線(F2)、第3境界線(F3)を判断する。この場合、第1領域1201と第3領域1203の間に、移動ロボット100の幅より狭い第4境界(F4)が存在し得る。
【0444】
制御部350は、第4境界(F4)に線分を表示するイメージ処理ステップ(S903-3)を省略することができる。第4境界(F4)には、線分が表示されず、制御部350は、第4境界(F4)を境界線と判断しない。
【0445】
最適の境界線(NBV)は、コスト値が最も高い境界線であり得る。例えば、制御部350は、境界線の長さが最も長い第1境界線(F1)を最適の境界線として選択することができる。
【0446】
次に、制御部350は第1境界線(F1)の中心点まで経路計画を立てる。この場合、グリッドウェーブを介して優先的に移動ロボット100が位置できる空間が存在するか否かを判断できる。
【0447】
図12dは、移動ロボット100が計画された経路に沿って移動しながらセンシングしたデータに基づいてグリッドマップをアップデートした結果を示す。
【0448】
制御部350は、アップデートされたグリッドマップをイメージ処理して、白色の第1領域1201、灰色の第2領域1202、黒色の第3領域1203に区分する。
【0449】
また、制御部350はグリッドマップをイメージ処理する過程により、第2境界線(F2)、第3境界線(F3)を判断する。
【0450】
最適の境界線(NBV)はコスト値が最も高い境界線である。例えば、制御部350は、境界線の長さが最も長い第2境界線(F2)を最適の境界線として選択する。
【0451】
LiDARセンサのセンシング半径は11mであり得る。従って、第2境界線(F2)の中心点に経路計画に従って移動しながら第3境界線(F3)の位置までLiDARデータを収集する。
【0452】
移動ロボット100は、LiDARセンサにより、第3境界線(F3)の位置まで行かずにグリッドマップを生成することにより、効率的なマップ生成を行うことができる。
【0453】
次に、制御部350は、第2境界線(F2)の中心点まで経路計画を立てる。この場合、グリッドウェーブを介して優先的に移動ロボット100が位置できる空間が存在するか否かを判断することができる。
【0454】
図12eは、移動ロボット100が計画された経路に沿って移動しながらセンシングしたデータに基づいてグリッドマップをアップデートした結果を示す。
【0455】
制御部350は、アップデートされたグリッドマップをイメージ処理して、白色の第1領域1201、灰色の第2領域1202、黒色の第3領域1203に区分する。
【0456】
また、制御部350は、グリッドマップをイメージ処理する過程により、第2境界線(F2)を判断する。境界線の個数が1つであるので、当該境界線は最適の境界線(NBV)であり得る。
【0457】
次に、制御部350は、第2境界線(F2)の中心点まで経路計画を立てる。この場合、グリッドウェーブを介して優先的に移動ロボット100が位置できる空間が存在するか否かを判断することができる。
【0458】
図12fは、移動ロボット100が計画された経路に沿って移動しながらセンシングしたデータに基づいてグリッドマップ生成を完了するステップを示す。
【0459】
制御部350は、アップデートされたグリッドマップをイメージ処理して、白色の第1領域1201、灰色の第2領域1202、黒色の第3領域1203に区分する。この場合、第1領域1201と第3領域1203の間の境界線がこれ以上存在しないこともある。
【0460】
制御部350は、第2マップデータ生成を完了し、第2マップデータを保存部305に保存する。
【0461】
生成が完了した第2マップデータは、第2領域1202が廃ループを形成するイメージを含む。生成が完了した第2マップデータは、線分によるイメージ処理ステップ(S903-3)を省略した第4境界(F4)及び第2領域1202が廃ループを形成するイメージを含む。
【0462】
本発明による移動ロボットは、前述の実施形態の構成と方法が限定的に適用されるものではなく、前記実施形態は様々な変形が行われるように各実施形態の全部又は一部が選択的に組み合わせられて構成されることもできる。
【0463】
同様に、特定の順序で図面において動作を示しているが、これは好ましい結果を得るために示された特定順序や順次的な順序でその動作を行わなければならない、又は、全ての図示された動作が行わなければならないと理解されてはならない。特定の場合、マルチタスクと並列プロセッシングが有利であることもある。
【0464】
一方、本発明の実施形態による移動ロボットの制御方法は、プロセッサが読み取り可能な記録媒体にプロセッサが読み取り可能なコードとして実現することが可能である。プロセッサが読み取り可能な記録媒体は、プロセッサにより読み取りできるデータが保存される全ての種類の記録装置を含む。また、インターネットを介する送信などのキャリアウェーブの形態で実現されるものも含む。また、プロセッサが読み取り可能な記録媒体はネットワークで接続されたコンピュータシステムに分散されて、分散方式でプロセッサが読み取り可能なコードが保存されて実行されることができる。
【0465】
また、以上では本発明の好ましい実施形態について図示して説明したが、本発明は前述の特定の実施形態に限定されず、請求範囲において請求する本発明の要旨を逸脱することなく、当該発明の属する技術分野において通常の知識を有する者により様々な変形実施が可能であることはもちろん、このような変形実施は本発明の技術的思想や展望から個別に理解されてはならない。
【0466】
本発明によれば、以下のような効果が1つあるいはそれ以上存在する。
【0467】
第1に、第1マップデータ生成の構成により、通路の中央を判断し、リアルタイムセンサを活用して走行するので、安全かつ迅速にマップ生成を完了できる効果がある。
【0468】
第2に、第1マップデータに基づいてグリッドマップを更新する構成により、第1マップデータ及び第2マップデータの生成をそれぞれ行う場合の短所を克服できる効果がある。
【0469】
第3に、第1マップデータ生成を優先し、その後、第2マップデータ生成を連続することにより、環境制約のない全ての環境に対するマップデータを生成することができる。
【0470】
一方、本発明の効果は以上に言及した効果に制限されず、言及されていない他の効果は請求範囲の記載から当業者に明確に理解できるであろう。