(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-30
(45)【発行日】2022-10-11
(54)【発明の名称】移動ロボット及びその制御方法
(51)【国際特許分類】
G05D 1/02 20200101AFI20221003BHJP
【FI】
G05D1/02 K
(21)【出願番号】P 2020058968
(22)【出願日】2020-03-27
【審査請求日】2020-03-27
(31)【優先権主張番号】10-2019-0035039
(32)【優先日】2019-03-27
(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)【発明者】
【氏名】ノ トンキ
(72)【発明者】
【氏名】イ チェクワン
(72)【発明者】
【氏名】イム ソンウク
(72)【発明者】
【氏名】チェ カヒョン
(72)【発明者】
【氏名】オ キュホ
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2016-162013(JP,A)
【文献】特開2017-117386(JP,A)
【文献】特開2018-156538(JP,A)
【文献】特開2017-054475(JP,A)
【文献】特開2016-024598(JP,A)
【文献】特開2018-017826(JP,A)
【文献】特開2012-242967(JP,A)
【文献】特開2017-228198(JP,A)
【文献】米国特許出願公開第2018/0307232(US,A1)
【文献】米国特許出願公開第2018/0149753(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
(57)【特許請求の範囲】
【請求項1】
本体を移動させる走行部と、
前記本体の外部の地形情報を獲得するLiDARセンサーと、
前記本体の外部の映像を獲得するカメラセンサーと、
前記LiDARセンサーのセンシングデータに基づいて走行距離計測(odometry)情報を生成し、前記走行距離計測情報に基づいて前記カメラセンサーから入力される映像の特徴点マッチングを行って現在位置を推定する制御部と、を含み、
前記制御部は、
前記LiDARセンサーのセンシングデータを受信し、前記LiDARセンサーのセンシングデータに基づく地形情報、及び以前位置情報を用いて位置変位量を判別するLiDARサービスモジュールと、
前記LiDARサービスモジュールから前記位置変位量を受信し、前記カメラセンサーから映像を受信し、前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別し、判別された特徴点位置に基づいて前記現在位置を推定するビジョンサービスモジュールとを含み、
前記ビジョンサービスモジュールは、ノード情報を前記LiDARサービスモジュールに送信し、
前記LiDARサービスモジュールは、前記ノード情報に、前記ビジョンサービスモジュールが前記現在位置を推定するうちに移動ロボットが移動した位置変位量を反映して前記移動ロボットの現在位置を判別
し、
前記制御部は、照度が基準値未満の領域では前記LiDARセンサーのセンシングデータに基づいて現在位置を算出した後、前記照度が前記基準値以上の領域に進入すればループクロージング(loop closing)を行って誤差を補正する、移動ロボット。
【請求項2】
前記本体の移動による走行状態を感知する走行感知センサーをさらに含み、
前記制御部は、前記走行感知センサーでのセンシングデータと前記LiDARセンサーのICP(Iterative Closest Point)マッチング結果を融合して前記走行距離計測情報を生成する、請求項1に記載の移動ロボット。
【請求項3】
前記推定された現在位置の情報を含む前記ノード情報が保存される保存部をさらに含む、請求項1に記載の移動ロボット。
【請求項4】
前記本体の移動による走行状態を感知する走行感知センサーをさらに含み、
前記制御部は、前記走行感知センサーのセンシングデータを読む走行サービスモジュールをさらに含み、
前記走行サービスモジュールは、前記走行感知センサーのセンシングデータを前記LiDARサービスモジュールに伝達し、
前記LiDARサービスモジュールは、前記走行感知センサーのセンシングデータに基づく走行距離計測情報と前記LiDARセンサーのICP結果を融合して前記走行距離計測情報を生成する、請求項3に記載の移動ロボット。
【請求項5】
前記制御部は、前記カメラセンサーから入力される映像間の特徴点マッチングが失敗した場合、前記LiDARセンサーのセンシングデータに基づいて現在ノードと周辺ノードのICP(Iterative Closest Point)マッチングを行ってノード間の相関関係を追加する、請求項1に記載の移動ロボット。
【請求項6】
LiDARセンサーを介して本体の外部の地形情報を獲得する段階と、
カメラセンサーを介して前記本体の外部の映像を獲得する段階と、
前記LiDARセンサーのセンシングデータに基づいて走行距離計測(odometry)情報を生成する段階と、
前記走行距離計測情報に基づいて前記カメラセンサーから入力される映像の特徴点マッチングを行う段階と、
前記特徴点マッチングの結果に基づいて現在位置を推定する段階と、を含み、
前記特徴点マッチングを行う段階は、
制御部のビジョンサービスモジュールがLiDARサービスモジュールから位置変位量を受信する段階と、
前記ビジョンサービスモジュールが前記カメラセンサーから映像を受信する段階と、
前記ビジョンサービスモジュールが前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別する段階と、を含み、
前記ビジョンサービスモジュールがノード情報を前記LiDARサービスモジュールに送信する段階と、
前記ビジョンサービスモジュールが前記現在位置を算出するうちに移動ロボットが移動した位置変位量を前記LiDARサービスモジュールが算出する段階と、
前記LiDARサービスモジュールが、前記算出された位置変位量を前記ノード情報に反映して前記移動ロボットの現在位置を判別する段階と、をさらに含
み、
照度が基準値未満の領域で前記LiDARセンサーのセンシングデータに基づいて現在位置を算出する段階と、
前記本体が移動して、前記照度が前記基準値以上の領域に進入する場合、ループクロージング(loop closing)を行って誤差を補正する段階と、をさらに含む、移動ロボットの制御方法。
【請求項7】
前記LiDARセンサーのセンシングデータに基づく地形情報に基づいて前記推定された現在位置の不確実性(uncertanity)を算出する段階をさらに含む、請求項
6に記載の移動ロボットの制御方法。
【請求項8】
走行感知センサーを介して前記本体の移動による走行状態を感知する段階と、
前記LiDARセンサーのセンシングデータをICP(Iterative Closest Point)アルゴリズムにしたがってマッチングする段階と、をさらに含む、請求項
6に記載の移動ロボットの制御方法。
【請求項9】
前記走行距離計測情報を生成する段階は、前記走行感知センサーでのセンシングデータと前記LiDARセンサーのICP(Iterative Closest Point)マッチング結果を融合して前記走行距離計測情報を生成する、請求項
8に記載の移動ロボットの制御方法。
【請求項10】
前記走行距離計測情報を生成する段階は、
制御部の前記LiDARサービスモジュールが前記LiDARセンサーのセンシングデータを受信する段階と、
前記LiDARサービスモジュールが、前記地形情報及び以前位置情報を用いて前記位置変位量を判別する段階とを含む、請求項
6に記載の移動ロボットの制御方法。
【請求項11】
前記推定された現在位置の情報を含む前記ノード情報を保存部に保存する段階をさらに含む、請求項
6に記載の移動ロボットの制御方法。
【請求項12】
走行感知センサーを介して前記本体の移動による走行状態を感知する段階をさらに含み、
前記走行距離計測情報を生成する段階は、
前記LiDARサービスモジュールが前記走行感知センサーのセンシングデータに基づく走行距離計測情報と前記LiDARセンサーのICP結果を融合して前記走行距離計測情報を生成する、請求項
6に記載の移動ロボットの制御方法。
【請求項13】
前記制御部の走行サービスモジュールが前記走行感知センサーのセンシングデータを前記LiDARサービスモジュールに伝達する段階をさらに含む、請求項
12に記載の移動ロボットの制御方法。
【請求項14】
前記カメラセンサーから入力される映像間の特徴点マッチングが失敗した場合、前記LiDARセンサーのセンシングデータに基づいて現在ノードと周辺ノードのICP(Iterative Closest Point)マッチングを行ってノード間の相関関係を追加する段階をさらに含む、請求項
6に記載の移動ロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は移動ロボット及びその制御方法に関するもので、より詳しくは移動ロボットがマップ(map)を生成及び学習するかマップ上で位置を認識する技術に関するものである。
【背景技術】
【0002】
ロボットは産業用に開発されて工場自動化の一部を担当して来た。最近には、ロボットを応用した分野がもっと拡大して、医療用ロボット、宇宙航空ロボットなどが開発され、一般家庭で使える家庭用ロボットも製作されている。このようなロボットの中で自力で走行可能なものを移動ロボットと言う。
【0003】
家庭で使われる移動ロボットの代表的な例はロボット掃除機である。ロボット掃除機は一定領域を自ら走行しながら、周辺のほこり又は異物を吸入することにより、該当領域を掃除する機器である。
【0004】
移動ロボットは、自ら移動可能であって移動が自由であり、走行中に障害物などを避けるための多数のセンサーを備えることにより、障害物を避けて走行することができる。
【0005】
掃除などの設定された作業を遂行するためには、走行区域のマップ(Map)を正確に生成し、走行区域内のある位置に移動するためにマップ上で移動ロボットの現在位置を正確に把握することができなければならない。
【0006】
また、外部的な要因によって走行中の移動ロボットの位置が強制に変更された場合、移動ロボットは直前位置での走行情報に基づいて未知の現在位置を認識することができなくなる。一例として、使用者が走行中の移動ロボットを持ち上げて移した拉致(Kidnapping)状況が発生した場合がそれである。
【0007】
移動ロボットの現在位置の認識のために、移動ロボットの連続的な移動中に自分の直前位置での走行情報(移動方向及び移動速度についての情報又は連続的に撮影される床写真などの比較など)に基づいて現在位置を持続的に把握する多様な方法が研究されて来た。また、移動ロボットが自らマップを生成して学習する多様な方法に対する研究が進んでいる。
【0008】
また、移動ロボットが現在位置でカメラを介して撮影された映像を用いて未知の現在位置を認識する技術が提案されている。
【0009】
特許文献(韓国公開特許第10-2010-0104581号公報、公開日:2010.9.29)は、走行区域内で撮影された映像から抽出された特徴点から3次元地図を生成し、現在位置でカメラを介して撮影された映像に基づく特徴点を用いて未知の現在位置を認識する技術を開示している。
【0010】
前記特許文献では、走行区域内で撮影された映像から抽出された特徴点から3次元地図を生成し、未知の現在位置で撮影された映像内の特徴点の中で3次元地図内の特徴点とマッチングする3対以上の特徴点対を検出する。その後、現在位置で撮影された映像内のマッチングした3個以上の特徴点の2次元座標、3次元地図上のマッチングした3個以上の特徴点の3次元座標、及び現在位置でカメラの焦点距離情報を用いて、前記マッチングした3個以上の特徴点から距離を算出し、これから現在位置を認識する技術が前記特許文献に開示されている。
【0011】
前記特許文献のように、走行区域上の同じ部分を撮影したいずれか一映像と認識映像を比較して特定ポイント(point)の特徴点で位置を認識する方式は、走行区域内の照明オン/オフ(On/Off)又は太陽光の入射角や量による照度変化などの環境変化によって現在位置の推定正確度が変わることがある問題がある。
【先行技術文献】
【特許文献】
【0012】
【文献】韓国公開特許第10-2010-0104581号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
特許文献のように、走行区域上の同じ部分を撮影したいずれか一映像と認識映像を比較して特定ポイント(point)の特徴点で位置を認識する方式は、走行区域内の照明オン/オフ(On/Off)又は太陽光の入射角や量による照度変化、物品位置の変更などの環境変化によって現在位置の推定正確度が変わることがある問題がある。本発明の目的はこのような環境変化に強靭な位置認識及びマップ生成技術を提供することにある。
【0014】
本発明の目的は、移動ロボットの現在位置認識の成功率を高め、より高い信頼度で現在位置を推定するようにして、効率的で正確な走行区域内位置認識技術を提供することにある。
【0015】
本発明の目的は、異種のセンサーを活用して獲得した異種データを相補的に用いることができるSLAM(Simultaneous localization and mapping)技術を提供することにある。
【0016】
本発明の目的は、カメラを用いるビジョン(vision)基盤の位置認識とレーザーを用いるLiDAR(Light Detection And Ranging)基盤の位置認識技術を効果的に融合して、照度変化、物品位置変更などの環境変化に強靭なSLAM技術を提供することにある。
【課題を解決するための手段】
【0017】
前記又は他の目的を達成するために、本発明の一側面による移動ロボット及びその制御方法は、異種のセンサーを活用して獲得した異種データを相補的に用いて環境変化に強靭なマップを生成してマップ上の位置を正確に認識することができる。
【0018】
前記又は他の目的を達成するために、本発明の一側面による移動ロボット及びその制御方法は、カメラを用いるビジョン(vision)基盤の位置認識とレーザーを用いるLiDAR(Light Detection And Ranging)基盤の位置認識技術を効果的に融合して照度変化、物品位置変更などの環境変化に強靭なSLAM技術を具現することができる。
【0019】
前記又は他の目的を達成するために、本発明の一側面による移動ロボット及びその制御方法は、多様な環境変化に対応することができる一つのマップに基づいて効率的な走行及び掃除を行うことができる。
【0020】
前記又は他の目的を達成するために、本発明の一側面による移動ロボットは、本体を移動させる走行部、前記本体外部の地形情報を獲得するLiDARセンサー、前記本体外部の映像を獲得するカメラセンサー、及び前記LiDARセンサーのセンシングデータに基づいて走行距離計測(odometry)情報を生成し、前記走行距離計測情報に基づいて前記カメラセンサーから入力される映像の特徴点マッチングを行って現在位置を推定する制御部を含むことにより、カメラセンサーとLiDARセンサーを効果的に融合して位置を正確に推定することができる。
【0021】
また、本発明の一側面による移動ロボットは、本体の移動による走行状態を感知する走行感知センサーをさらに含み、前記制御部は、前記走行感知センサーでのセンシングデータと前記LiDARセンサーのICP(Iterative Closest Point)マッチング結果を融合して前記走行距離計測情報を生成することができる。
【0022】
前記制御部は、前記LiDARセンサーのセンシングデータを受信し、前記LiDARセンサーのセンシングデータに基づく地形情報及び以前位置情報を用いて位置変位量を判別するLiDARサービスモジュール、及び前記LiDARサービスモジュールから前記位置変位量を受信し、前記カメラセンサーから映像を受信し、前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別し、判別された特徴点の位置に基づいて前記現在位置を推定するビジョンサービスモジュールを含むことができる。
【0023】
また、本発明の一側面による移動ロボットは、前記推定された現在位置の情報を含むノード情報を含むマップ(map)が保存される保存部をさらに含むことができる。
【0024】
前記ビジョンサービスモジュールは、前記ノード情報を前記LiDARサービスモジュールに送信し、前記LiDARサービスモジュールは、前記ノード情報に、前記ビジョンサービスモジュールが前記現在位置を推定するうちに移動ロボットが移動した位置変位量を反映して前記移動ロボットの現在位置を判別することができる。
【0025】
また、前記本体の移動による走行状態を感知する走行感知センサーを備えた場合、前記制御部は、前記走行感知センサーのセンシングデータを読んで来る走行サービスモジュールをさらに含み、前記走行サービスモジュールは前記走行感知センサーのセンシングデータを前記LiDARサービスモジュールに伝達し、前記LiDARサービスモジュールは前記走行感知センサーのセンシングデータに基づく走行距離計測情報と前記LiDARセンサーのICP結果を融合して前記走行距離計測情報を生成することができる。
【0026】
本発明の一側面によれば、制御部が照度が基準値未満の領域では前記LiDARセンサーのセンシングデータに基づいて現在位置を算出した後、前記照度が前記基準値以上の領域に進入すればループクロージング(loop closing)を行って誤差を補正することができる。
【0027】
また、前記制御部は、前記カメラセンサーから入力される映像間の特徴点マッチングが失敗した場合、前記LiDARセンサーのセンシングデータに基づいて現在ノードと周辺ノードのICP(Iterative Closest Point)マッチングを行ってノード間の相関関係を追加することができる。
【0028】
前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、LiDARセンサーを介して本体の外部の地形情報を獲得する段階、カメラセンサーを介して前記本体の外部の映像を獲得する段階、前記LiDARセンサーのセンシングデータに基づいて走行距離計測(odometry)情報を生成する段階、前記走行距離計測情報に基づいて前記カメラセンサーから入力される映像の特徴点マッチングを行う段階、及び前記特徴点マッチングの結果に基づいて現在位置を推定する段階を含むことができる。
【0029】
また、前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、前記LiDARセンサーのセンシングデータに基づく地形情報に基づいて前記推定された現在位置の不確実性(uncertanity)を算出することができる。
【0030】
また、前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、走行感知センサーを介して前記本体の移動による走行状態を感知する段階、及び前記LiDARセンサーのセンシングデータをICP(Iterative Closest Point)アルゴリズムにしたがってマッチングする段階をさらに含むことができる。
【0031】
ここで、走行距離計測情報を生成する段階は、前記走行感知センサーでのセンシングデータと前記LiDARセンサーのICP(Iterative Closest Point)マッチング結果を融合して前記走行距離計測情報を生成することができる。
【0032】
一方、走行距離計測情報を生成する段階は、制御部のLiDARサービスモジュールが前記LiDARセンサーのセンシングデータを受信する段階、及び前記LiDARサービスモジュールが前記地形情報及び以前位置情報を用いて位置変位量を判別する段階を含むことができる。
【0033】
ここで、特徴点マッチングを行う段階は、制御部のビジョンサービスモジュールが前記LiDARサービスモジュールから前記位置変位量を受信する段階、前記ビジョンサービスモジュールが前記カメラセンサーから映像を受信する段階、及び前記ビジョンサービスモジュールが前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別する段階を含むことができる。
【0034】
一方、前記推定された現在位置の情報を含むノード情報を保存部に保存してマップに登録することができる。
【0035】
また、前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、前記ビジョンサービスモジュールが前記ノード情報を前記LiDARサービスモジュールに送信する段階、前記ビジョンサービスモジュールが前記現在位置を算出するうちに移動ロボットが移動した位置変位量を前記LiDARサービスモジュールが算出する段階、前記LiDARサービスモジュールが前記算出された位置変位量を前記ノード情報に反映して前記移動ロボットの現在位置を判別する段階をさらに含むことができる。
【0036】
また、走行感知センサーを介して前記本体の移動による走行状態を感知する場合、走行距離計測情報を生成する段階は、前記LiDARサービスモジュールが前記走行感知センサーのセンシングデータに基づく走行距離計測情報と前記LiDARセンサーのICP結果を融合して前記走行距離計測情報を生成することができる。
【0037】
また、前記制御部の走行サービスモジュールは、前記走行感知センサーのセンシングデータを前記LiDARサービスモジュールに伝達することができる。
【0038】
また、前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、照度が基準値未満の領域で前記LiDARセンサーのセンシングデータに基づいて現在位置を算出する段階、及び前記本体が移動して前記照度が前記基準値以上の領域に進入すればループクロージング(loop closing)を行って誤差を補正する段階をさらに含むことができる。
【0039】
また、前記又は他の目的を達成するために、本発明の一側面による移動ロボットの制御方法は、前記カメラセンサーから入力される映像間の特徴点マッチングが失敗した場合、前記LiDARセンサーのセンシングデータに基づいて現在ノードと周辺ノードのICP(Iterative Closest Point)マッチングを行ってノード間の相関関係を追加する段階をさらに含むことができる。
【発明の効果】
【0040】
本発明の実施例の少なくとも一つによれば、異種のセンサーを活用して獲得した異種データを融合して、照明、照度、時間帯、事物位置変化などの多様な環境変化に対して強靭なマップを生成することができる。
【0041】
また、本発明の実施例の少なくとも一つによれば、異種のセンサーを活用して獲得した異種データを相補的に用いて多様な環境変化に強靭なマップ上の移動ロボットの位置を正確に認識することができる。
【0042】
また、本発明の実施例の少なくとも一つによれば、カメラを用いるビジョン(vision)基盤の位置認識とレーザーを用いるLiDAR基盤の位置認識技術を効果的に融合して、照度変化、物品位置変更などの環境変化に強靭なSLAM技術を具現することができる。
【0043】
また、本発明の実施例の少なくとも一つによれば、多様な環境変化に対応することができる一つのマップと正確な位置認識に基づいて効率的な走行及び掃除を行うことができる。
【0044】
一方、それ以外の多様な効果は後述する本発明の実施例による詳細な説明で直接的に又は暗示的に開示する。
【図面の簡単な説明】
【0045】
【
図1】本発明の一実施例による移動ロボット及び移動ロボットを充電させる充電台を示す斜視図である。
【
図2】
図1に示した移動ロボットの上面部を示す図である。
【
図3】
図1に示した移動ロボットの正面部を示す図である。
【
図4】
図1に示した移動ロボットの底面部を示す図である。
【
図5】本発明の実施例による移動ロボットの主要構成間の制御関係を示すブロック図である。
【
図6】本発明の一実施例による移動ロボットの制御方法を示すフローチャートである。
【
図7】
図6の制御方法についての説明に参照される図である。
【
図8】
図6の制御方法についての説明に参照される図である。
【
図9】
図6の制御方法についての説明に参照される図である。
【
図10】
図6の制御方法についての説明に参照される図である。
【
図11】本発明の一実施例による移動ロボットの制御方法を示すフローチャートである。
【
図12】本発明の実施例による移動ロボットの制御方法のソフトウェア的プロセスを示すフローチャートである。
【
図13】本発明の実施例による移動ロボットの制御方法のソフトウェア的プロセスを示すフローチャートである。
【
図14】本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【
図15】本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【
図16】本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【
図17】本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【
図18】本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【
図19】本発明の実施例によるSLAMについての説明に参照される図である。
【
図20】本発明の実施例によるSLAMについての説明に参照される図である。
【発明を実施するための形態】
【0046】
以下では、添付図面に基づいて本発明の実施例を詳細に説明する。しかし、本発明がこのような実施例に限定されるものではなく、多様な形態に変形可能であることは言うまでもない。
【0047】
一方、以下の説明で使われる構成要素に対する接尾辞“モジュール”及び“部”は単にこの明細書作成の容易性のみ考慮して付与するもので、そのものが特別に重要な意味又は役割を付与するものではない。よって、前記“モジュール”及び“部”は互いに混用されることもできる。
【0048】
また、本明細書で、多様な要素を説明するために、第1、第2などの用語を用いることができるが、このような要素はこのような用語によって制限されない。このような用語は一要素を他の要素と区別するためにのみ用いられる。
【0049】
本発明の一実施例による移動ロボット100はコマなどを用いて自ら移動することができるロボットを意味し、家庭用お手伝いロボット及びロボット掃除機などであり得る。以下では、図面に基づき、移動ロボットの中で掃除機能を有するロボット掃除機を例として説明するが、本発明はこれに限定されない。
【0050】
図1は本発明の一実施例による移動ロボット及び移動ロボットを充電させる充電台を示す斜視図である。
【0051】
図2は
図1に示した移動ロボットの上面部を示す図、
図3は
図1に示した移動ロボットの正面部を示す図、
図4は
図1に示した移動ロボットの底面部を示す図である。
【0052】
図5は本発明の実施例による移動ロボットの主要構成間の制御関係を示すブロック図である。
【0053】
図1~
図5を参照すると、移動ロボット100は、本体110を移動させる走行部160を含む。走行部160は、本体110を移動させる少なくとも一つの駆動コマ136を含む。走行部160は、駆動コマ136に連結されて駆動コマを回転させる駆動モーター(図示せず)を含む。例えば、駆動コマ136は本体110の左右側にそれぞれ備えられることができ、以下で、それぞれを左コマ136(L)と右コマ136(R)と言う。
【0054】
左コマ136(L)と右コマ136(R)は単一駆動モーターによって駆動されることもできるが、必要によって左コマ136(L)を駆動させる左コマ駆動モーターと、右コマ136(R)を駆動させる右コマ駆動モーターがそれぞれ備えられることもできる。左コマ136(L)と右コマ136(R)の回転速度に差を与えて左側又は右側への本体110の走行方向を転換することができる。
【0055】
移動ロボット100は、所定のサービスを提供するためのサービス部150を含む。
図1~
図5ではサービス部150が掃除作業を行うものとして、例えば本発明を説明するが、本発明はこれに限定されない。例えば、サービス部150は掃除(掃き掃除、吸入掃除、拭き掃除など)、皿洗い、料理、洗濯、ごみ処理などの家事サービスを使用者に提供するように備えられることができる。また、他の例として、サービス部150は周辺の外部侵入者、危険状況などを感知する保安機能を果たすことができる。
【0056】
移動ロボット100は走行区域を移動しながらサービス部150によって床を掃除することができる。サービス部150は、異物を吸入する吸入装置、掃き掃除を行うブラシ184、185、吸入装置又はブラシによって収去された異物を保存する集塵筒(図示せず)及び/又は拭き掃除を行う雑巾部(図示せず)などを含むことができる。
【0057】
本体110の底面部には、空気が吸入される吸入口150hが形成されることができ、本体110内には、吸入口150hを通して空気が吸入できるように吸入力を提供する吸入装置(図示せず)と、吸入口150hを通して空気とともに吸入されたほこりを集塵する集塵筒(図示せず)とが備えられることができる。
【0058】
本体110は、移動ロボット100を構成する各種の部品を収容する空間を形成するケース111を含むことができる。ケース111には、前記集塵筒の挿入及び除去のための開口部が形成されることができ、開口部を開閉する集塵筒カバー112がケース111に対して回転可能に備えられることができる。
【0059】
吸入口150hを通して露出されるブラシを有するロール型のメインブラシ154と、本体110の底面部の前方側に位置し、放射状に延びた多数の羽からなるブラシを有する補助ブラシ155とが備えられることができる。これらのブラシ154、155の回転によって走行区域内の床からほこりが分離され、このように床から分離されたほこりは吸入口150hを通して吸入されて集塵筒に収集される。
【0060】
バッテリー138は、駆動モーターだけではなく、移動ロボット100の作動全般に必要な電源を供給する。バッテリー138が放電されるとき、移動ロボット100は充電のために充電台200に復帰する走行を実施することができ、このような復帰走行中、移動ロボット100は自ら充電台200の位置を探知することができる。
【0061】
充電台200は、所定の復帰信号を送出する信号送出部(図示せず)を含むことができる。復帰信号は超音波信号又は赤外線信号であり得るが、必ずしもこれに限定されるものではない。
【0062】
移動ロボット100は、復帰信号を受信する信号感知部(図示せず)を含むことができる。充電台200は信号送出部を介して赤外線信号を送出し、信号感知部は赤外線信号を感知する赤外線センサーを含むことができる。移動ロボット100は、充電台200から送出された赤外線信号に応じて充電台200の位置に移動して充電台200とドッキング(docking)する。このようなドッキングによって移動ロボット100の充電端子133と充電台200の充電端子210との間で充電が行われる。
【0063】
移動ロボット100は、移動ロボット100の内部/外部の情報を感知するセンシング部170を含むことができる。
【0064】
例えば、センシング部170は、走行区域についての各種の情報を感知する一つ以上のセンサー171、175、及び走行区域についての映像情報を獲得する映像獲得部120を含むことができる。実施例によって、映像獲得部120はセンシング部170の外部に別に備えられることができる。
【0065】
移動ロボット100は、センシング部170が感知した情報によって、走行区域をマッピング(Mapping)することができる。例えば、移動ロボット100は、映像獲得部120が獲得した走行区域の天井映像に基づいてビジョン(vision)基盤の位置認識及びマップ生成を遂行することができる。また、移動ロボット100は、レーザーを用いるLiDAR(Light Detection And Ranging)センサー175基盤の位置認識及びマップ生成を遂行することができる。
【0066】
より好ましくは、本発明による移動ロボット100は、カメラを用いるビジョン基盤の位置認識とレーザーを用いるLiDAR基盤の位置認識技術を効果的に融合して、照度変化、物品位置変更などの環境変化に強靭な位置認識及びマップ生成を遂行することができる。
【0067】
一方、映像獲得部120は走行区域を撮影するものであり、本体110の外部の映像を獲得する一つ以上のカメラセンサーを含むことができる。
【0068】
また、映像獲得部120は、カメラモジュールを含むことができる。前記カメラモジュールは、デジタルカメラを含むことができる。デジタルカメラは、少なくとも一つの光学レンズと、光学レンズを通過した光によって像が結ばれる多数の光ダイオード(photodiode、例えばpixel)を含んでなるイメージセンサー(例えば、CMOSイメージセンサー)と、光ダイオードから出力された信号に基づいて映像を構成するデジタル信号処理器(DSP:Digital Signal Processor)を含むことができる。デジタル信号処理器は静止映像はもちろんのこと、静止映像から構成されたフレームからなる動画を生成することも可能である。
【0069】
本実施例で、映像獲得部120は、本体110の前方の映像を獲得するように備えられる前面カメラセンサー120aと、本体110の上面部に備えられ、走行区域内の天井に対する映像を獲得する上部カメラセンサー120bとを備えるが、映像獲得部120の位置と撮影範囲が必ずしもこれに限定されなければならないものではない。
【0070】
例えば、移動ロボット100は走行区域内の天井に対する映像を獲得する上部カメラセンサー120bのみ備えて、ビジョン(vision)基盤の位置認識及び走行を遂行することができる。
【0071】
もしくは、本発明の一実施例による移動ロボット100の映像獲得部120は、本体110の一面に対して斜めに配置されて前方と上方を一緒に撮影するように構成されたカメラセンサー(図示せず)を含むことができる。すなわち、単一カメラセンサーで前方と上方を一緒に撮影することができる。この場合、制御部140は、カメラが撮影して獲得した映像から前方映像と上方映像を画角を基準に分離することができる。分離された前方映像は前面カメラセンサー120aで獲得された映像とともにビジョン(vision)基盤の事物認識に使われることができる。また、分離された上方映像は上部カメラセンサー120bで獲得された映像とともにビジョン(vision)基盤の位置認識及び走行に使われることができる。
【0072】
本発明による移動ロボット100は、周辺のイメージをイメージ基盤の既保存の情報と比較するか獲得されるイメージを比較して現在位置を認識するビジョンSLAMを遂行することができる。
【0073】
一方、映像獲得部120は、前面カメラセンサー120a及び/又は上部カメラセンサー120bを複数備えることも可能である。もしくは、映像獲得部120は、前方と上方を一緒に撮影するように構成されたカメラセンサー(図示せず)を複数備えることも可能である。
【0074】
本実施例の場合、移動ロボットの一部部位(例えば、前方、後方、底面)にカメラが取り付けられており、掃除時に撮像映像を持続的に獲得することができる。このようなカメラは、撮影効率のために各部位別に多数が取り付けられることもできる。カメラによって撮像された映像は、該当空間に存在するほこり、髪の毛、床などの物質の種類認識、掃除遂行有無、又は掃除時点を確認するのに使える。
【0075】
前面カメラセンサー120aは、移動ロボット100の走行方向の前面に存在する障害物又は掃除領域の状況を撮影することができる。
【0076】
本発明の一実施例によれば、前記映像獲得部120は、本体110の周辺を連続的に撮影して複数の映像を獲得することができ、獲得された複数の映像は保存部130に保存されることができる。
【0077】
移動ロボット100は、複数の映像を用いて障害物認識の正確性を高めるか、複数の映像の中で一つ以上の映像を選択して効果的なデータを使うことによって障害物認識の正確性を高めることができる。
【0078】
センシング部170は、レーザーを用いて本体110の外部の地形情報を獲得するLiDARセンサー175を含むことができる。
【0079】
LiDARセンサー175は、レーザーを出力してレーザーを反射させた客体との距離、位置方向、材質などの情報を提供し、走行区域の地形情報を獲得することができる。移動ロボット100は、LiDARセンサー175によって360度の地形(Geometry)情報を得ることができる。
【0080】
本発明の一実施例による移動ロボット100は、LiDARセンサー175がセンシングした客体の距離、位置、方向などを把握してマップを生成することができる。
【0081】
本発明の一実施例による移動ロボット100は、外部から反射されて受信されるレーザーの時間差又は信号強度などのレーザー受信パターンを分析して走行区域の地形情報を獲得することができる。また、移動ロボット100は、LiDARセンサー175を介して獲得した地形情報を用いてマップを生成することができる。
【0082】
例えば、本発明による移動ロボット100は、LiDARセンサー175を介して現在位置で獲得された周辺地形情報をLiDARセンサー基盤の既保存の地形情報と比較するか獲得される地形情報を比較することによって現在位置を認識するLiDAR SLAMを遂行することができる。
【0083】
より好ましくは、本発明による移動ロボット100は、カメラを用いるビジョン基盤の位置認識とレーザーを用いるLiDAR基盤の位置認識技術を効果的に融合して、照度変化、物品位置変更などの環境変化に強靭な位置認識及びマップ生成を遂行することができる。
【0084】
このように、ビジョンSLAMとLiDAR SLAMを融合したSLAM技術については、
図6~
図20を参照して詳細に後述する。
【0085】
一方、センシング部170は、移動ロボットの動作、状態に係わる各種のデータをセンシングするセンサー171、172、179を含むことができる。
【0086】
例えば、前記センシング部170は、前方の障害物を感知する障害物感知センサー171を含むことができる。また、前記センシング部170は、走行区域内の床に段差の存在有無を感知する段差感知センサー172と、底の映像を獲得する下部カメラセンサー179とをさらに含むことができる。
【0087】
図1及び
図3を参照すると、前記障害物感知センサー171は、移動ロボット100の外周面に一定間隔で取り付けられる複数のセンサーを含むことができる。
【0088】
前記障害物感知センサー171は、赤外線センサー、超音波センサー、RFセンサー、地磁気センサー、PSD(Position Sensitive Device)センサーなどを含むことができる。
【0089】
一方、前記障害物感知センサー171に含まれるセンサーの位置と種類は移動ロボットの機種によって変えることができ、前記障害物感知センサー171はもっと多様なセンサーを含むことができる。
【0090】
前記障害物感知センサー171は室内の壁や障害物との距離を感知するセンサーであり、本発明はその種類に限定されないが、以下では超音波センサーを例示して説明する。
【0091】
前記障害物感知センサー171は、移動ロボットの走行(移動)方向に存在する物体、特に障害物を感知して障害物情報を制御部140に伝達する。すなわち、前記障害物感知センサー171は、移動ロボットの移動経路、前方又は側面に存在する突出物、家内の什物、家具、壁面、壁角などを感知してその情報を制御ユニットに伝達することができる。
【0092】
ここで、制御部140は、超音波センサーを介して受信された少なくとも2以上の信号に基づいて障害物の位置を感知し、感知された障害物の位置によって移動ロボット100の動きを制御することができる。
【0093】
実施例によって、ケース111の外側面に備えられる障害物感知センサー171は発信部と受信部を含んでなることができる。
【0094】
例えば、超音波センサーは、少なくとも一つ以上の発信部及び少なくとも2以上の受信部が互いにずれるように備えられることができる。これにより、多様な角度で信号を放射し、障害物で反射された信号を多様な角度で受信することができる。
【0095】
実施例によって、障害物感知センサー171で受信された信号は、増幅、フィルタリングなどの信号処理過程を経ることができ、その後、障害物までの距離及び方向が算出されることができる。
【0096】
一方、前記センシング部170は、本体110の駆動による移動ロボット100の走行動作を感知し、動作情報を出力する走行感知センサーをさらに含むことができる。走行感知センサーとしては、ジャイロセンサー(Gyro Sensor)、ホイールセンサー(Wheel Sensor)、加速度センサー(Acceleration Sensor)などを使える。走行感知センサーの少なくとも一つで感知されるデータ又は走行感知センサーの少なくとも一つで感知されるデータに基づいて算出されるデータは走行距離計測(odometry)情報を構成することができる。
【0097】
ジャイロセンサーは、移動ロボット100が運転モードによって動くとき、回転方向を感知し、回転角を検出する。ジャイロセンサーは、移動ロボット100の角速度を検出し、角速度に比例する電圧値を出力する。制御部140は、ジャイロセンサーから出力される電圧値を用いて回転方向及び回転角を算出する。
【0098】
ホイールセンサーは左コマ136(L)と右コマ136(R)に連結されてコマの回転数を感知する。ここで、ホイールセンサーはエンコーダ(Encoder)であり得る。エンコーダは左コマ136(L)と右コマ136(R)の回転数を感知して出力する。
【0099】
制御部140は、回転数を用いて左右側コマの回転速度を演算することができる。また、制御部140は、左コマ136(L)と右コマ136(R)の回転数差を用いて回転角を演算することができる。
【0100】
加速度センサーは、移動ロボット100の速度変化、例えば出発、停止、方向転換、物体との衝突などによる移動ロボット100の変化を感知する。加速度センサーは、主コマ又は補助コマの隣接位置に付着され、コマの滑り又は空回りを検出することができる。
【0101】
また、加速度センサーは、制御部140に内蔵されて移動ロボット100の速度変化を感知することができる。すなわち、加速度センサーは、速度変化による衝撃量を検出し、これに対応する電圧値を出力する。よって、加速度センサーは、電子式バンパーの機能を遂行することができる。
【0102】
制御部140は、走行感知センサーから出力された動作情報に基づいて移動ロボット100の位置変化を算出することができる。このような位置は映像情報を用いた絶対位置に対応する相対位置となる。移動ロボットは、このような相対位置認識によって映像情報と障害物情報を用いた位置認識の性能を向上させることができる。
【0103】
一方、移動ロボット100は、充電可能なバッテリー138を備えてロボット掃除機内に電源を供給する電源供給部(図示せず)を含むことができる。
【0104】
前記電源供給部は、移動ロボット100の各構成要素に駆動電源と動作電源を供給し、電源残量が足りなければ、充電台200で充電電流を受けて充電されることができる。
【0105】
移動ロボット100は、バッテリー138の充電状態を感知し、感知結果を制御部140に伝送するバッテリー感知部(図示せず)をさらに含むことができる。バッテリー138はバッテリー感知部と連結されることにより、バッテリーの残量及び充電状態が制御部140に伝達される。バッテリー残量は出力部(図示せず)の画面に表示されることができる。
【0106】
また、移動ロボット100は、オン/オフ(On/Off)又は各種の命令を入力することができる操作部137を含む。操作部137を介して移動ロボット100の作動全般に必要な各種の制御命令を受けることができる。また、移動ロボット100は出力部(図示せず)を含み、予約情報、バッテリー状態、動作モード、動作状態、エラー状態などを表示することができる。
【0107】
図5を参照すると、移動ロボット100は、現在位置を認識するなど、各種情報を処理して判断する制御部140、及び各種のデータを保存する保存部130を含む。また、移動ロボット100は、他の機器とデータを送受信する通信部190をさらに含むことができる。
【0108】
移動ロボット100と通信する機器のうち外部端末機は移動ロボット100を制御するためのアプリケーションを備え、アプリケーションの実行によって移動ロボット100が掃除する走行区域に対するマップを表示し、マップ上に特定領域を掃除するように領域を指定することができる。外部端末機は、マップ設定のためのアプリケーション(application)が組み込まれたリモコン、PDA、ラップトップ(laptop)、スマートフォン、タブレットなどを例として挙げることができる。
【0109】
外部端末機は、移動ロボット100と通信して、マップとともに移動ロボットの現在位置を表示することができ、複数の領域についての情報が表示されることができる。また、外部端末機は、移動ロボットの走行につれてその位置を更新して表示する。
【0110】
制御部140は、移動ロボット100を構成するセンシング部170、操作部137及び走行部160を制御して移動ロボット100の動作全般を制御する。
【0111】
保存部130は移動ロボット100の制御に必要な各種情報を記録するものであり、揮発性又は非揮発性記録媒体を含むことができる。記録媒体はマイクロプロセッサ(micro processor)によって読められるデータを保存したものであり、その種類又は具現方式に限定されない。
【0112】
また、保存部130には走行区域に対するマップ(Map)が保存されることができる。マップは移動ロボット100と有線通信又は無線通信を介して情報を交換することができる外部端末機、サーバーなどによって入力されたものでも、移動ロボット100が自ら学習して生成したものでもあり得る。
【0113】
マップには走行区域内の部屋の位置が表示されることができる。また、移動ロボット100の現在位置がマップ上に表示されることができ、マップ上での移動ロボット100の現在の位置は走行過程で更新されることができる。外部端末機は、保存部130に保存されたマップと同一のマップを保存する。
【0114】
前記保存部130は、掃除履歴情報を保存することができる。このような掃除履歴情報は掃除を行う度に生成されることができる。
【0115】
前記保存部130に保存される走行区域に対するマップ(Map)は、掃除中の走行に使われるナビゲーションマップ(Navigation map)、位置認識に使われるSLAM(Simultaneous localization and mapping)マップ、障害物などにぶつかれば該当情報を保存して学習掃除時に使用する学習マップ、全域位置認識に使われる全域位置マップ、認識された障害物についての情報が記録される障害物認識マップなどであり得る。
【0116】
一方、上述したように、用途別に前記保存部130にマップを区分して保存及び管理することができるが、マップが用途別に明確に区分されないこともある。例えば、少なくとも2以上の用途に使えるように単一マップに複数の情報を保存することもできる。
【0117】
制御部140は、走行制御モジュール141、位置認識モジュール142、地図生成モジュール143及び障害物認識モジュール144を含むことができる。
【0118】
図1~
図5を参照すると、走行制御モジュール141は移動ロボット100の走行を制御するものであり、走行設定によって走行部160の駆動を制御する。また、走行制御モジュール141は、走行部160の動作に基づいて移動ロボット100の走行経路を把握することができる。例えば、走行制御モジュール141は、駆動コマ136の回転速度に基づいて移動ロボット100の現在又は過去の移動速度、走行した距離などを把握することができ、各駆動コマ136(L)、136(R)の回転方向によって現在又は過去の方向転換過程も把握することができる。このように把握された移動ロボット100の走行情報に基づいて、マップ上で移動ロボット100の位置が更新されることができる。
【0119】
地図生成モジュール143は、走行区域のマップを生成することができる。地図生成モジュール143は、映像獲得部120を介して獲得した映像を処理してマップを作成することができる。例えば、走行区域に対応するマップ、及び掃除領域と対応する掃除マップを作成することができる。
【0120】
また、地図生成モジュール143は、各位置で映像獲得部120を介して獲得した映像を処理し、マップに関連させて全域位置を認識することができる。
【0121】
また、地図生成モジュール143は、LiDARセンサー175を介して獲得した情報に基づいてマップを作成し、各位置でLiDARセンサー175を介して獲得した情報に基づいて位置を認識することができる。
【0122】
より好ましくは、地図生成モジュール143は、映像獲得部120とLiDARセンサー175を介して獲得した情報に基づいてマップを作成し、位置認識を遂行することができる。
【0123】
位置認識モジュール142は、現在位置を推定して認識する。位置認識モジュール142は、映像獲得部120の映像情報を用いて地図生成モジュール143と関連して位置を把握することにより、移動ロボット100の位置が急に変更される場合にも現在位置を推定して認識することができる。
【0124】
移動ロボット100は、位置認識モジュール142を介して連続的な走行中に位置認識が可能であり、また位置認識モジュール142なしに走行制御モジュール141、地図生成モジュール143及び障害物認識モジュール144を介してマップを学習し、現在位置を推定することができる。
【0125】
移動ロボット100が走行するうち、映像獲得部120は移動ロボット100の周辺の映像を獲得する。以下、映像獲得部120によって獲得された映像を‘獲得映像’と定義する。
【0126】
獲得映像には、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などのさまざまな特徴(feature)が含まれる。
【0127】
地図生成モジュール143は、獲得映像のそれぞれから特徴を検出する。コンピュータビジョン(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検出器などがある。
【0128】
地図生成モジュール143は、各特徴点に基づいてディスクリプタを算出する。地図生成モジュール143は、特徴検出のために、SIFT(Scale Invariant Feature Transform)技法を用いて特徴点をディスクリプタ(descriptor)に変換することができる。ディスクリプタはn次元ベクター(vector)で表記されることができる。
【0129】
SIFTは撮影対象のスケール(scale)、回転、明るさ変化に対して変わらない特徴を検出することができるので、同じ領域を移動ロボット100の姿勢を変えて撮影しても変わらない(すなわち、回転不変(Rotation-invariant))特徴を検出することができる。もちろん、これに限定されず、他の多様な技法(例えば、HOG:Histogram of Oriented Gradient、Haar feature、Fems、LBP:Local Binary Pattern、MCT:Modified Census Transform)が適用されることもできる。
【0130】
地図生成モジュール143は、各位置の獲得映像によって得たディスクリプタ情報に基づいて、獲得映像ごとに少なくとも一つのディスクリプタを所定の下位分類規則によって複数の群に分類し、所定の下位代表規則によって同じ群に含まれたディスクリプタをそれぞれ下位代表ディスクリプタに変換することができる。
【0131】
他の例で、室(room)のように所定区域内の獲得映像から集まった全てのディスクリプタを所定の下位分類規則によって複数の群に分類し、前記所定の下位代表規則によって同じ群に含まれたディスクリプタをそれぞれ下位代表ディスクリプタに変換することもできる。
【0132】
地図生成モジュール143は、このような過程によって各位置の特徴分布を求めることができる。各位置特徴分布はヒストグラム又はn次元ベクターで表現されることができる。さらに他の例で、地図生成モジュール143は、所定の下位分類規則及び所定の下位代表規則に従わず、各特徴点から算出されたディスクリプタに基づいて未知の現在位置を推定することができる。
【0133】
また、位置跳躍などの理由で移動ロボット100の現在位置が未知の状態になった場合、既保存のディスクリプタ又は下位代表ディスクリプタなどのデータに基づいて現在位置を推定することができる。
【0134】
移動ロボット100は、未知の現在位置で映像獲得部120を介して獲得映像を獲得する。映像によって、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などのさまざまな特徴(feature)が確認される。
【0135】
位置認識モジュール142は、獲得映像から特徴を検出する。コンピュータビジョン技術分野で、映像から特徴を検出する多様な方法及びこれらの特徴の検出に適したさまざまな特徴検出器についての説明は前述したとおりである。
【0136】
位置認識モジュール142は、各認識特徴点に基づいて認識ディスクリプタ算出段階を経て認識ディスクリプタを算出する。ここで、認識特徴点及び認識ディスクリプタは位置認識モジュール142で行う過程を説明するためのものであり、地図生成モジュール143で行う過程を説明する用語と区分するためのものである。ただ、移動ロボット100の外部世界の特徴がそれぞれ異なる用語に定義されたものに過ぎない。
【0137】
位置認識モジュール142は、本特徴検出のために、SIFT(Scale Invariant Feature Transform)技法を用いて認識特徴点を認識ディスクリプタに変換することができる。認識ディスクリプタはn次元ベクター(vector)で表記されることができる。
【0138】
SIFTは、前述したように、獲得映像でコーナー点など、識別の容易な特徴点を選択した後、各特徴点周辺の一定区域に属するピクセルの明るさ勾配(gradient)の分布特性(明るさ変化の方向及び変化の急激な程度)に対して、各方向に対する変化の急激な程度を各次元に対する数値にするn次元ベクター(vector)を求める映像認識技法である。
【0139】
位置認識モジュール142は、未知の現在位置の獲得映像によって得た少なくとも一つの認識ディスクリプタ情報に基づいて、所定の下位変換規則によって比較対象となる位置情報(例えば、各位置の特徴分布)と比較可能な情報(下位認識特徴分布)に変換する。
【0140】
所定の下位比較規則によって、それぞれの位置特徴分布をそれぞれの認識特徴分布と比較してそれぞれの類似度を算出することができる。それぞれの位置にあたる前記位置別に類似度(確率)を算出し、その中で最大の確率が算出される位置を現在位置に決定することができる。
【0141】
このように、制御部140は、走行区域を区分して複数の領域から構成されたマップを生成するか、既保存のマップに基づいて本体110の現在位置を認識することができる。
【0142】
また、制御部140は、映像獲得部120とLiDARセンサー175を介して獲得した情報を融合してマップを作成し、位置認識を遂行することができる。
【0143】
制御部140は、マップが生成されれば、生成されたマップを通信部190を介して外部端末機、サーバーなどに伝送することができる。また、制御部140は、前述したように、外部端末機、サーバーなどからマップが受信されれば、保存部に保存することができる。
【0144】
また、制御部140は、走行中にマップが更新される場合、更新された情報を外部端末機に伝送して、外部端末機と移動ロボット100に保存されるマップが同一になるようにする。外部端末機と移動ロボット100に保存されたマップが同一に維持されることにより、移動端末機からの掃除命令に対して、移動ロボット100が指定領域を掃除することができ、また、外部端末機に移動ロボットの現在位置が表示できるようにするためである。
【0145】
ここで、マップは、掃除領域を複数の領域に区分し、複数の領域を連結する連結通路を含み、領域内の障害物についての情報を含むことができる。
【0146】
制御部140は、掃除命令が入力されれば、マップ上の位置と移動ロボットの現在位置が一致するかを判断する。掃除命令は、リモコン、操作部又は外部端末機から入力されることができる。
【0147】
制御部140は、現在位置がマップ上の位置と一致しない場合、又は現在位置を確認することができない場合、現在位置を認識して移動ロボット100の現在位置を復旧した後、現在位置に基づいて指定領域に移動するように走行部160を制御することができる。
【0148】
現在位置がマップ上の位置と一致しない場合又は現在位置を確認することができない場合、位置認識モジュール142は、映像獲得部120から入力される獲得映像及び/又はLiDARセンサー175を介して獲得された地形情報を分析し、マップに基づいて現在位置を推定することができる。また、障害物認識モジュール144又は地図生成モジュール143も同様な方式で現在位置を認識することができる。
【0149】
位置を認識して移動ロボット100の現在位置を復旧した後、走行制御モジュール141は、現在位置から指定領域に走行経路を算出し、走行部160を制御して指定領域に移動する。
【0150】
サーバーから掃除パターン情報を受信する場合、走行制御モジュール141は、受信した掃除パターン情報によって、全体走行区域を複数の領域に分け、一つ以上の領域を指定領域に設定することができる。
【0151】
また、走行制御モジュール141は、受信した掃除パターン情報によって走行経路を算出し、走行経路に沿って走行して掃除を行うことができる。
【0152】
制御部140は、設定された指定領域に対する掃除が完了すれば、掃除記録を保存部130に保存することができる。
【0153】
また、制御部140は、通信部190を介して移動ロボット100の動作状態又は掃除状態を所定の周期で外部端末機及びサーバーに伝送することができる。
【0154】
それにより、外部端末機は、受信されるデータに基づいて、実行中のアプリケーションの画面上にマップとともに移動ロボットの位置を表示し、また掃除状態についての情報を出力する。
【0155】
本発明の実施例による移動ロボット100は、一方向に障害物又は壁面が感知されるまで移動していて、障害物認識モジュール144が障害物を認識すれば、認識された障害物の属性によって直進、回転などの走行パターンを決定することができる。
【0156】
例えば、認識された障害物の属性が越えることができる種類の障害物であれば、移動ロボット100は続けて直進することができる。もしくは、認識された障害物の属性が越えることができない種類の障害物であれば、移動ロボット100は回転して一定距離移動し、また最初移動方向の反対方向に障害物が感知される距離まで移動してジグザグ形に走行することができる。
【0157】
本発明の実施例による移動ロボット100は、マシンラーニング(machine learning)基盤のヒト及び事物認識及び回避を遂行することができる。
【0158】
前記制御部140は、入力映像からマシンラーニング(machine learning)で既に学習された障害物を認識する障害物認識モジュール144と、前記認識された障害物の属性に基づいて前記走行部160の駆動を制御する走行制御モジュール141とを含むことができる。
【0159】
本発明の実施例による移動ロボット100は、マシンラーニングで障害物の属性が学習された障害物認識モジュール144を含むことができる。
【0160】
マシンラーニングはコンピュータにヒトが直接ロジッグ(Logic)を指示しなくてもデータによってコンピュータが学習し、これによりコンピュータが分かって問題を解決するようにすることを意味する。
【0161】
ディープラーニング(Deep Learning)は人工知能を構成するための人工神経網(Artificial Neural Networks:ANN)に基づいてコンピュータにヒトの考え方を教える方法であり、ヒトが教えなくてもコンピュータが自らヒトのように学習することができる人工知能技術である。
【0162】
前記人工神経網(ANN)はソフトウェア形態に具現されるか、チップ(chip)などのハードウェア形態に具現されることができる。
【0163】
障害物認識モジュール144は、障害物の属性が学習されたソフトウェア又はハードウェア形態の人工神経網(ANN)を含むことができる。
【0164】
例えば、障害物認識モジュール144は、ディープラーニング(Deep Learning)で学習されたCNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)、DBN(Deep Belief Network)などの深層神経網(Deep Neural Network:DNN)を含むことができる。
【0165】
障害物認識モジュール144は、前記深層神経網(DNN)に含まれたノード間の加重値(weight)に基づいて入力される映像データに含まれる障害物の属性を判別することができる。
【0166】
前記制御部140は、前記映像獲得部120、特に前面カメラセンサー120aが獲得した映像全体を使うものではなく、一部領域のみ使用して移動方向に存在する障害物の属性を判別することができる。
【0167】
また、前記走行制御モジュール141は、前記認識された障害物の属性に基づいて前記走行部160の駆動を制御することができる。
【0168】
一方、保存部130には、障害物属性判別のための入力データ及び前記深層神経網(DNN)を学習するためのデータが保存されることができる。
【0169】
保存部130には、映像獲得部120が獲得した原本映像と所定領域が抽出された抽出映像が保存されることができる。
【0170】
また、実施例によって、保存部130には、前記深層神経網(DNN)構造を成すウェイト(weight)、バイアス(bias)が保存されることができる。
【0171】
もしくは、実施例によって、前記深層神経網構造を成すウェイト(weight)、バイアス(bias)は前記障害物認識モジュール144の組み込みメモリ(embedded memory)に保存されることができる。
【0172】
一方、前記障害物認識モジュール144は、前記映像獲得部120が獲得する映像の一部領域を抽出する度に前記抽出された映像をトレーニング(training)データとして使用して学習過程を遂行するか、所定個数以上の抽出映像が獲得された後、学習過程を遂行することができる。
【0173】
すなわち、前記障害物認識モジュール144は、障害物を認識する度に認識結果を追加してウェイト(weight)などの深層神経網(DNN)構造をアップデート(update)するか、所定回数のトレーニングデータが確保された後に確保されたトレーニングデータで学習過程を行ってウェイト(weight)などの深層神経網(DNN)構造をアップデートすることができる。
【0174】
もしくは、移動ロボット100は、通信部190を介して前記映像獲得部120が獲得した原本映像又は抽出された映像を所定サーバーに伝送し、前記所定サーバーからマシンラーニングに係わるデータを受信することができる。
【0175】
この場合、移動ロボット100は、前記所定サーバーから受信されたマシンラーニングに係わるデータに基づいて障害物認識モジュール144をアップデート(update)することができる。
【0176】
一方、移動ロボット100は出力部180をさらに含むことにより、所定情報を映像で表示するか音響として出力することができる。
【0177】
出力部180は、使用者の命令入力に対応する情報、使用者の命令入力に対応する処理結果、動作モード、動作状態、エラー状態などを映像で表示するディスプレイ(図示せず)を含むことができる。
【0178】
実施例によっては、前記ディスプレイはタッチパッドと互いにレイヤー構造を成してタッチスクリーンで構成されることができる。この場合、タッチスクリーンで構成されるディスプレイは出力装置以外に使用者のタッチによる情報入力が可能な入力装置としても使われることができる。
【0179】
また、出力部180は、オーディオ信号を出力する音響出力部(図示せず)を含むことができる。音響出力部は、制御部140の制御によって、警告音、動作モード、動作状態、エラー状態などのお知らせメッセージ、使用者の命令入力に対応する情報、使用者の命令入力に対応する処理結果などを音響として出力することができる。音響出力部は、制御部140からの電気信号をオーディオ信号に変換して出力することができる。このために、スピーカーなどを備えることができる。
【0180】
図6は本発明の一実施例による移動ロボットの制御方法を示すフローチャートで、マップ生成過程を示すフローチャートであり、
図7~
図10は
図6の制御方法についての説明に参照される図である。
【0181】
図7及び
図8は、
図6の走行及び情報獲得過程(S601)、ノード生成過程(S602)、ノードマップ生成過程(S603)、境界生成過程(S604)、境界マップ生成過程(S605)及びディスクリプタ生成過程(S606)を例示的に示す概念図である。
【0182】
図7には、前記過程(S601)で獲得した映像と映像内の複数の特徴点f1、f2、f3、f4、f5、f6、f7が示され、前記過程(S606)で複数の特徴点f1、f2、f3、...、f7にそれぞれ対応するn次元ベクターであるディスクリプタ
を生成させる図式が示される。
【0183】
図7及び
図8を参照すると、情報獲得過程(S601)で、移動ロボット100が走行するうちに映像獲得部120は各地点で映像を獲得する。例えば、映像獲得部120は、移動ロボット100の上側に向けて撮影して天井などの映像を獲得することができる。
【0184】
また、情報獲得過程(S601)で、移動ロボット100が走行するうちにセンシング部170、映像獲得部120、その他の公知の手段を用いて走行障害要素を感知することができる。
【0185】
移動ロボット100は、各地点で走行障害要素を感知することができる。例えば、移動ロボットは特定地点で走行障害要素の一つである壁体の外側面を感知することができる。
【0186】
図7及び
図8を参照すると、ノード生成過程(S602)で、移動ロボット100は、各地点に対応するノードを生成する。ノードNa18、Na19、Na20に対応する座標情報は移動ロボット100が測定した走行変位に基づいて生成されることができる。
【0187】
ノード(Node)は、走行区域内の所定地点に対応するマップ上のいずれか一位置を示すデータを意味することができ、グラフ(graph)基盤のSLAMでノードはロボットのポーズ(pose)を意味することができる。また、ポーズ(pose)は座標系上の位置座標情報(X、Y)と方向情報(θ)を含むことができる。
【0188】
ノード情報は前記ノードに対応する各種のデータを意味することができる。マップは複数のノード及びこれに対応するノード情報を含むことができる。
【0189】
走行変位は、移動ロボットの移動方向と移動距離を含む概念である。走行区域の床面をX軸及びY軸が直交する平面上にあると仮定すると、走行変位は
で表現することができる。
【0190】
はそれぞれX軸及びY軸方向変位を意味し、θは回転角度を意味する。
【0191】
制御部140は、走行部160の動作に基づいて移動ロボット100の走行変位を測定することができる。例えば、走行制御モジュール141は駆動コマ136の回転速度に基づいて移動ロボット100の現在又は過去の移動速度、走行した距離などを測定することができ、駆動コマ136の回転方向によって現在又は過去の方向転換過程も測定することができる。
【0192】
また、制御部140は、センシング部170でセンシングされるデータを用いて前記走行変位を測定することも可能である。例えば、左コマ136(L)と右コマ136(R)に連結され、回転数を感知して出力するエンコーダ(Encoder)などのホイールセンサーを用いて走行変位を測定することができる。
【0193】
制御部140は、回転数を用いて左右側コマの回転速度を演算することができる。また、制御部140は、左コマ136(L)と右コマ136(R)の回転数差を用いて回転角を演算することができる。
【0194】
通常エンコーダは積分を遂行し続けるにつれて誤差が累積する限界があった。よって、より好ましくは、制御部140は、LiDARセンサー175のセンシングデータに基づいて走行変位などの走行距離計測(odometry)情報を生成することができる。
【0195】
制御部140は、前記ホイールセンサーで感知されるセンシングデータに前記LiDARセンサー175のセンシングデータを融合してもっと正確な走行距離計測情報を生成することができる。例えば、前記制御部140は、前記走行感知センサーでのセンシングデータと前記LiDARセンサー175のICP(Iterative Closest Point)マッチング結果を融合して走行距離計測情報を生成することができる。
【0196】
これにより、単にコマの回転にのみ依存して走行距離計測情報を生成する場合にコマが空回りするか、滑り、衝突、拘束、拉致状況などで発生し得るエラーを防止し、累積するエラー(error)を最小化してもっと正確な走行距離計測情報を生成することができる。
【0197】
図7及び
図8を参照すると、境界情報生成過程(S604)で、移動ロボット100は、走行障害要素に対応する境界情報b20を生成する。境界情報生成過程(S604)で、移動ロボット100は、各走行障害要素にそれぞれ対応する各境界情報を生成する。複数の走行障害要素に複数の境界情報が一対一で対応する。境界情報b20は対応するノードの座標情報とセンシング部170が測定した距離値に基づいて生成されることができる。
【0198】
図7及び
図8を参照すると、ノードマップ生成過程(S603)及び境界マップ生成過程(S605)は同時に進行される。ノードマップ生成過程(S603)で、複数のノードNa18、Na19、Na20などを含むノードマップが生成される。境界マップ生成過程(S605)で、複数の境界情報(b20など)を含む境界マップBaが生成される。ノードマップ生成過程(S603)及び境界マップ生成過程(S605)で、ノードマップ及び境界マップBaを含むマップMaが生成される。
図6には、ノードマップ生成過程(S603)及び境界マップ生成過程(S605)を経て生成されているマップMaを示す。
【0199】
図7に示した映像には、天井に位置する照明、境界(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検出器などがある。
【0200】
図7を参照すると、ディスクリプタ生成過程(S606)で、獲得された映像から抽出された複数の特徴点f1、f2、f3、...、f7に基づいてディスクリプタ
を生成する。前記ディスクリプタ生成過程(S606)で、獲得された複数の映像から抽出された複数の特徴点f1、f2、f3、...、fmに基づいてディスクリプタ
を生成する(ここで、mは自然数)。複数の特徴点f1、f2、f3、...、fmに複数のディスクリプタ
は一対一で対応する。
【0201】
【0202】
の中括弧{}内のf1(1)、f1(2)、f1(3)、...、f1(n)は
を成す各次元の数値を意味する。残りの
に対する表記もこのような方式であるので、説明を省略する。
【0203】
特徴検出のために、SIFT(Scale Invariant Feature Transform)技法を用いて、複数の特徴点f1、f2、f3、...、fmに対応する複数のディスクリプタ
を生成することができる。
【0204】
例えば、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)を適用することも可能である。
【0205】
図9は、移動ロボットが移動しながら生成する複数のノードN及びノード間の変位Cを示す概念図である。
【0206】
図9を参照すると、原点ノードOが設定された状態で走行変位C1が測定されてノードN1の情報が生成される。以後に測定された走行変位C2の時点となるノードN1の座標情報に前記走行変位C2を加えて、前記走行変位C2の終点となるノードN2の座標情報を生成することができる。ノードN2の情報が生成された状態で走行変位C3が測定されてノードN3の情報が生成される。このように、順次測定される走行変位C1、C2、C3、…、C16に基づいてノードN1、N2、N3、…、N16の情報が順次生成される。
【0207】
いずれか一つの走行変位C15の時点となるノードC15を該当走行変位C15の終点となるノード16の‘基礎ノード’に定義すると、ループ変位(Loop Constraint、LC)はいずれか一つのノードN15及び前記いずれか一つのノードN15の前記‘基礎ノードN14ではない’他の隣接したノードN5間の変位が測定された値を意味する。
【0208】
一例として、いずれか一つのノードN15に対応する獲得映像情報と他の隣接したノードN5に対応する獲得映像情報が互いに比較されることにより、二つのノードN15、N5間のループ変位LCが測定されることができる。他の例で、いずれか一つのノードN15の周辺環境との距離情報と他の隣接したノードN5の周辺環境との距離情報が互いに比較されることにより、二つのノードN15、N5間のループ変位LCが測定されることができる。
図8には、ノードN5とノードN15との間で測定されたループ変位LC1、及びノードN4とノードN16との間で測定されたループ変位LC2が例示的に示されている。
【0209】
前記走行変位に基づいて生成されたいずれか一つのノードN5の情報は、ノード座標情報及び該当ノードに対応する映像情報を含むことができる。ノードN5に隣接する他のノードN15があるとき、ノードN15に対応する映像情報をノードN5に対応する映像情報と比較すると、二つのノードN5、N15間のループ変位LC1が測定される。‘ループ変位LC1’と‘既保存の二つのノードN5、N15の座標情報によって算出される変位’が互いに異なる場合、ノード座標情報に誤差があると見なし、二つのノードN5、N15の座標情報を更新することができる。この場合、二つのノードN5、N15と連結された他のノードN6、N7、N8、N9、N10、N11、N12、N13、N14の座標情報も更新されることができる。また、一度更新されたノード座標情報も続いて前記過程を経て繰り返し更新されることができる。
【0210】
より具体的に説明すれば次のようである。ループ変位LCが測定された二つのノードNをそれぞれ第1ループノード及び第2ループノードと定義する。既保存の第1ループノードのノード座標情報及び第2ループノードのノード座標情報によって算出される‘算出変位(Δx1、Δy1、θ1)’(座標値の差によって算出される)とループ変位LC(Δx2、Δy2、θ2)間の差(Δx1-Δx2、Δy1-Δy2、θ1-θ2)が発生し得る。前記差が発生すれば、前記差を誤差と見なしてノード座標情報を更新することができる。ここで、ループ変位LCが前記算出変位より正確な値であるという仮定の下でノード座標情報を更新する。
【0211】
ノード座標情報を更新する場合、前記第1ループノード及び第2ループノードのノード座標情報のみ更新することもできるが、前記誤差の発生は走行変位の誤差が累積して発生したものなので、前記誤差を分散させて他のノードのノード座標情報も更新するように設定することができる。例えば、前記第1ループノードと第2ループノードとの間に前記走行変位によって生成された全てのノードに、前記誤差値を分散させてノード座標情報を更新することができる。
図8を参照すると、ループ変位LC1が測定され、前記誤差が算出された場合、第1ループノードN15と第2ループノードN5間のノードN6~N14に前記誤差を分散させることにより、ノードN5~N15のノード座標情報が全て少しずつ更新されることができる。もちろん、このような誤差分散を拡大させて、以外のノードN1~N4のノード座標情報を一緒に更新することもできるというのは言うまでもない
図10は第1マップMaの一例を示す概念図で、生成されたノードマップを含んでいる図である。
図10には、
図6によるマップ生成過程を経て生成されたいずれか一つのマップMaの一例が示される。前記マップMaは、ノードマップ及び境界マップBaを含む。前記ノードマップは、複数の第1ノードNa1~Na99を含む。
【0212】
図10を参照すると、いずれか一つのマップMaはノードマップNa1、Na2、…、Na99及び境界マップBaを含むことができる。ノードマップは一つのマップ上のさまざまな情報の中で複数のノードからなる情報を指称するものであり、境界マップは一つのマップ上のさまざまな情報の中で複数の境界情報からなる情報を指称するものである。ノードマップと境界マップは前記マップの構成要素であり、ノードマップの生成過程(S602、S603)と境界マップの生成過程(S604、S605)は同時に進む。例えば、境界情報は、特定地点から離れた走行障害要素の距離を測定した後、前記特定地点に対応する既保存のノードの座標情報を基準に生成されることができる。例えば、ノードのノード座標情報は特定の走行障害要素から離れた特定地点の距離を測定した後、前記特定障害要素に対応する既保存の境界情報を基準に生成することができる。ノード及び境界情報は、既保存のいずれか一つに対する他の一つの相対的座標に基づいて他の一つがマップ上に生成されることができる。
【0213】
また、前記マップは前記過程(S606)で生成された映像情報を含むことができる。複数の映像情報は複数のノードに一対一で対応する。特定の映像情報は特定のノードに対応する。
【0214】
図11は本発明の一実施例による移動ロボットの制御方法を示すフローチャートである。
【0215】
本発明の一実施例による移動ロボット100は、本体110の外部地形情報を獲得するLiDARセンサー175と本体110の外部の映像を獲得するカメラセンサー120bとを含むことができる。
【0216】
移動ロボット100は、動作中にLiDARセンサー175を介して走行区域の地形情報を獲得することができる(S1110)。
【0217】
また、移動ロボット100は、動作中にカメラセンサー120bなどの映像獲得部120を介して走行区域の映像情報を獲得することができる(S1120)。
【0218】
一方、制御部140は、前記LiDARセンサー175のセンシングデータに基づいて走行距離計測(odometry)情報を生成することができる(S1130)。
【0219】
例えば、制御部140は、特定位置で前記LiDARセンサー175を介して感知されるセンシングデータに基づく周辺地形情報をLiDARセンサー基盤の既保存の地形情報と比較して走行変位などの走行距離計測情報を生成することができる。
【0220】
より好ましくは、制御部140は、本体110の移動による走行状態を感知するホイールセンサーなどの走行感知センサーのセンシングデータと前記LiDARセンサー175のセンシングデータを融合してもっと正確な走行距離計測情報を生成することができる。
【0221】
ホイールセンサーとしては、左コマ136(L)と右コマ136(R)に連結されて回転数を感知して出力するエンコーダ(Encoder)を用いることができる。通常エンコーダは積分を遂行し続けるにつれて誤差が累積する限界があった。
【0222】
前記制御部140は、前記走行感知センサーでのセンシングデータと前記LiDARセンサーのICP(Iterative Closest Point)マッチング結果を融合して走行距離計測情報を生成することができる。
【0223】
これにより、ホイールセンサーにのみ依存する場合よりもっと正確な走行距離計測情報を生成することができ、走行変位を正確に算出することによって位置認識の正確度も向上することができる。
【0224】
本発明の一実施例によれば、前記LiDARセンサー175のセンシングデータをICP(Iterative Closest Point)アルゴリズムにしたがってマッチングし、前記走行距離計測情報を生成する段階(S1130)で、制御部140は、前記走行感知センサーでのセンシングデータと前記LiDARセンサー175のICP(Iterative Closest Point)マッチング結果を融合して前記走行距離計測情報を生成することができる。
【0225】
制御部140は、LiDARセンサー175を介して他の時点で獲得された情報間に距離が最も近い2地点を検出することができる。制御部140は、検出された2地点を対応点(Corresponding point)に設定することができる。
【0226】
制御部140は、前記設定された対応点の位置を同一にする運動量を用いて、移動ロボット100の走行変位に係わる走行距離計測情報を検出することができる。
【0227】
制御部140は、移動を始めた地点(以前位置)についての位置情報と前記検出された走行変位を用いて移動ロボット100の現在地点についての位置情報を検出することができる。
【0228】
本発明の一実施例によれば、関連のデータを整合して合わせるアルゴリズムとして広く活用されているICP(Iterative Closest Point)アルゴリズムを用いて、走行距離計測情報を生成し、移動ロボット100の位置を推定することができる。
【0229】
例えば、ICPアルゴリズムによるデータのマッチング結果として、LiDARセンサー175で獲得されるデータと既保存のデータとの間にポイントの距離が最も近くなる位置にマッチングがなされることができる。これにより、移動ロボット100の位置を推定することができる。また、以前位置を基準に走行距離計測情報を生成することができる。
【0230】
もしくは、他のアルゴリズムを活用して前記LiDARセンサー175のセンシングデータに基づく走行距離計測情報を生成することもできる。
【0231】
一方、制御部140は、前記走行距離計測情報に基づいて前記カメラセンサー120bから入力される映像の特徴点マッチングを遂行し(S1140)、前記特徴点マッチング結果に基づいて現在位置を推定することができる(S1150)。
【0232】
制御部140は、前記カメラセンサー120bから入力される映像から、天井に位置する照明、境界(edge)、コーナー(corner)、染み(blob)、屈曲(ridge)などのさまざまな特徴(feature)を検出する。
【0233】
図5~
図10を参照して説明したように、制御部140は、それぞれの認識特徴点に基づいて認識ディスクリプタ算出段階を経て認識ディスクリプタを算出し、少なくとも一つの認識ディスクリプタ情報に基づいて、所定の下位変換規則によって比較対象となる位置情報(例えば、各位置の特徴分布)と比較可能な情報(下位認識特徴分布)に変換する。
【0234】
制御部140は、前記カメラセンサー120bから入力される映像間の特徴点をマッチングするか現在位置で前記カメラセンサー120bから入力される映像から抽出された特徴点とマップに登録された映像情報の特徴点とマッチングすることができる。
【0235】
所定の下位比較規則によって、それぞれの位置特徴分布をそれぞれの認識特徴分布と比較してそれぞれの類似度を算出することができる。それぞれの位置に相当する前記位置別に類似度(確率)を算出し、その中で最大確率が算出される位置を現在位置に決定することができる。
【0236】
また、制御部140は、判別された現在位置に対応するノードをマップに登録することができる(S1160)。
【0237】
マップ生成及び更新過程で、リソース管理の側面で必要でないノードを登録することは無駄使いなので、ノード登録可否を所定基準によって決定することができる。
【0238】
例えば、制御部140は、ノードマップで現在位置に対応するノードを基準に既設定の基準距離内のノードを確認してノード登録可否を決定することができる。ここで、ノードマップはセンシング情報を用いて計算されたロボットの位置を示すノード(node)を複数含むマップで、SLAMマップであり得る。
【0239】
制御部140は、マップ上に意味ある追加情報が必要な場合にのみノードを登録するように構成することができる。
【0240】
制御部140は、現在位置を基準に所定距離内の全てのノードと現在ノード間のエッジ(edge、constraint)が存在するかを判別することができる。これは現在ノードが周辺ノードと特徴点マッチング(feature matching)するものがないかを確認することであり得る。例えば、特徴点としてコーナー地点があれば、以前のコーナー地点と比較した後、ロボットの相対的な座標があるかを判断することによって相関関係存在有無を判断することができる。
【0241】
一方、グラフ(graph)基盤のSLAMでノードを連結するエッジ(edge)はロボットの位置間の走行変位情報、走行距離計測情報であり、constraintとも言える。
【0242】
ノード間の相関関係を生成して追加することは、ノードを連結するエッジを生成することである。一例として、ノード間の相関関係の生成は二つのノード間の相対位置と相対位置のエラー値を算出することを意味することができる。
【0243】
すなわち、エッジ(edge、constraint)はノードとロボットの相対的な座標でノード間の関係性を示すことができる。また、エッジ(edge、constraint)が存在するというのはノード間に一定の部分が重なるセンシング情報があることを意味することができる。
【0244】
制御部140は、現在ロボット位置に対応する現在ノードを基準に所定距離内の候補ノードと現在ノードを比較してエッジが存在するかをチェック(check)することができる。
【0245】
仮に、エッジが存在すれば、ノードの間で共通して見える特徴(feature)があり、特徴点マッチング(feature matching)までできるということを意味することができる。その後、現在位置でノードに連結されたエッジ(edge)と既存マップのノード情報を比較する。
【0246】
制御部140は、既存マップのノード情報を確認して、現在位置に対応するノードに連結されたエッジ(edge)の全てが一致(consistent)すれば、マップにノードを登録しないでマップにノードを登録するかを確認する過程を終了することができる。
一方、制御部140は、前記カメラセンサー120bから入力される映像間の特徴点マッチングが失敗した場合、前記LiDARセンサー175のセンシングデータに基づいて現在ノードと周辺ノードのICP(Iterative Closest Point)マッチングを行ってノード間の相関関係を追加することができる。
【0247】
また、制御部140は、映像特徴点マッチング成功可否に無関係にマップ生成及びアップデート過程でノード間の相関関係判別及び生成に前記LiDARセンサー175のセンシングデータを用いることができる。
【0248】
このように、制御部140は、マップを生成するか、既保存のマップに基づいて移動ロボット100の現在位置を認識することができる。
【0249】
本発明は多様な環境での高い位置認識性能を確保する技術によって物理的特性の異なる異種のセンサーを活用して位置認識アルゴリズムを具現した。
【0250】
本発明によれば、カメラセンサー120bの映像情報とLiDARセンサー175の距離情報を活用して異種のデータを相補的に適用する。これにより、SLAMで映像のみ使う場合、低照度に脆弱な欠点を補完し、LiDARセンサー175のみ使う場合に発生する動的環境に対応して補完することができる。
【0251】
SLAM技術は、ビジョン(Vision)基盤、レーザー(Laser)基盤、SLAMに分けることができる。
【0252】
このうち、ビジョン(Vision)基盤のSLAMは、映像から特徴点を抽出してからマッチングして3次元座標を計算し、これに基づいてSLAMを行う。映像に多くの情報があって環境が明るい場合、自分の位置認識を行うのに優れた性能を有するが、暗い所では動作が難しく、近くにある小さな物体と遠くにある大きな物体を類似しているものと認識するなどのスケールドリフト(Scale Drift)問題がある。
【0253】
そして、レーザー(Laser)基盤のSLAMはレーザーで角度別距離を測定して周辺環境の地形(geometry)を計算する原理で動作する。レーザー基盤のSLAMは暗い環境でもうまく動作する。しかし、地形(geometry)情報のみ持って位置を認識するので、オフィス(Office)環境のように繰り返される領域が多い空間では、初期位置条件がない場合、自分の位置を捜しにくい場合が多い。また、家具が移されるなどの動的環境変化に対する対応が難しい。
【0254】
すなわち、ビジョン(Vision)基盤のSLAMの場合、暗い環境(光がない環境)では正確な動作が難しい。また、レーザー(Laser)基盤のSLAMの場合、動的環境(動く物体など)と繰り返される環境(類似パターン)で自分の位置認識が難しく、既存のマップと現在フレームのマッチング及びループクロージング(loop closing)の正確度が低下し、ランドマークを作りにくいから、拉致(kidnap)問題のような状況に対処しにくい。
【0255】
本発明は、カメラセンサー120bとLiDARセンサー175の異種センサーの特徴を相補的に適用してSLAM性能を画期的に向上させることができる。
【0256】
例えば、コマエンコーダのみ使ったときの累積するエラーを最小化するために、エンコーダ情報とLiDARセンサー175のICP(Iterative Closest Point)結果を融合して走行距離計測(Odometry)情報を生成することができる。
【0257】
また、この走行距離計測(Odometry)情報に基づいて入力される映像間特徴点マッチングによって3D復元を行った後、現在位置(ロボットの変位量)を計算することにより、正確に現在位置を推定することができる。
【0258】
実施例によって、推定された現在位置を補正して最終の現在位置を判別することができる(S1170)。例えば、LiDARセンサー175のセンシングデータに基づいて周辺地形情報を見て推定された現在位置の不確実性(uncertainty)を計算し、不確実性値が最小化するように補正する方式で正確な最終の現在位置を判別することができる。ここで、現在位置の不確実性(uncertanity)は予測された現在位置の信頼値によって確率又は分散形態に算出されることができる。例えば、推定された現在位置の不確実性(uncertainty)は共分散(covariance)として算出されることができる。
【0259】
また、最終に判別された現在位置に対応するノードでノード情報を補正してマップに登録することができる。
【0260】
実施例によって、前記制御部140は、前記LiDARセンサー175のセンシングデータを受信し、前記LiDARセンサー175のセンシングデータに基づく地形情報、及び以前位置情報を用いて位置変位量を判別するLiDARサービスモジュール(
図12の1020参照)、及び前記LiDARサービスモジュール1020から前記位置変位量を受信し、前記カメラセンサー120bから映像を受信し、前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別し、判別された特徴点位置に基づいて前記現在位置を推定するビジョンサービスモジュール(
図12の1030参照)を含むことができる。ここで、位置変位量は上述した走行変位であり得る。
【0261】
一方、前記算出された現在位置情報を含むノード情報が保存部130に保存されることができる。
【0262】
一方、前記ビジョンサービスモジュール1030は前記ノード情報を前記LiDARサービスモジュール1020に送信し、前記LiDARサービスモジュール1020は、前記ノード情報に、前記ビジョンサービスモジュール1030が前記現在位置を算出するうちに移動ロボット100が移動した位置変位量を反映して前記移動ロボット100の現在位置を判別することができる。すなわち、現在位置を補正して最終的な現在位置を判別することができる(S1170)。
【0263】
本発明の一実施例による移動ロボット100は、本体110の移動による走行状態を感知する走行感知センサーを含むことができる。例えば、移動ロボット100は、エンコーダなどのセンサーを備えることができる。
【0264】
この場合、制御部140は、前記走行感知センサーのセンシングデータを読んで来る走行サービスモジュール(
図12の1010参照)をさらに含み、前記走行サービスモジュール1010は、前記走行感知センサーのセンシングデータを前記LiDARサービスモジュール1020に伝達し、前記LiDARサービスモジュール1020は、前記走行感知センサーのセンシングデータに基づく走行距離計測情報と前記LiDARセンサー175のICP結果を融合して前記走行距離計測情報を生成することができる。
【0265】
移動ロボット100は、グラフ(Graph)基盤のSLAM技術を用いて、二つの隣接したノードの相対位置に基づいてループクロージングを遂行することができる。制御部140は、経路グラフを構成するノードの相関関係のエラー値の和が最小となるようにそれぞれのノードの位置データを補正することができる。
【0266】
実施例によって、制御部140は、照度が基準値未満の領域では前記LiDARセンサー175のセンシングデータに基づいて現在位置を算出した後、前記照度が前記基準値以上の領域に進入すれば、ループクロージング(loop closing)を行って誤差を補正することができる。すなわち、低照度の暗い領域ではLiDAR基盤の位置認識を遂行することができる。LiDARセンサー175は照度に影響されないので、低照度環境でも同一性能の位置認識が可能である。
【0267】
しかし、LiDAR基盤のSLAMはループクロージングの正確度が下がる欠点がある。よって、照度が充分に高い領域に進入した後、ループクロージングを遂行することができる。ここで、カメラセンサー120bを介して獲得される映像情報を用いてループクロージングを遂行することができる。すなわち、低照度環境ではLiDARに基づいてSLAMを遂行し、そうではない環境ではビジョンに基づいてループクロージングなどのSLAMを遂行することができる。
【0268】
走行区域の一部領域は暗く、一部領域は明るい場合がある。この場合、本発明の一実施例による移動ロボット100は、暗い領域を通るときにはLiDARセンサー175のみを持ってノード(Node)を生成し、自分の位置を計算する。ここで、位置誤差は累積することができる。よって、移動ロボット100が明るい領域に進入する場合、ループクロージングによってビジョン基盤で生成されたノードのノード情報とLiDAR基盤で生成されたノードのノード情報を含む全体ノード情報を最適化して累積した誤差を最小化させることができる。仮に、暗い領域が一定期間持続する場合、移動ロボット100の速度を低めるか止めた後、カメラセンサー120bの露出を最大化して、できるだけ明るい映像を得てビジョン基盤のSLAMを進めることもできる。
【0269】
一方、走行サービスモジュール1010、LiDARサービスモジュール1020、ビジョンサービスモジュール1030はソフトウェア的プロセス又はソフトウェア的プロセスを行う主体を意味することができる。
【0270】
図12及び
図13は本発明の実施例による移動ロボットの制御方法のソフトウェア的プロセスを示すフローチャートで、ビジョンとLiDARの融合シーケンスを示す図である。ここで、走行サービスモジュール1010、LiDARサービスモジュール1020、ビジョンサービスモジュール1030などはソフトウェア的プロセスであり得る。
【0271】
図14~
図18は本発明の実施例による移動ロボットの制御方法についての説明に参照される図である。
【0272】
まず、
図12を参照すると、走行サービスモジュール1010は、エンコーダなどの走行感知センサーでのセンシングデータをLiDARサービスモジュール1020とビジョンサービスモジュール1030に伝達することができる(S1210)。
【0273】
走行感知センサーを介して本体110の移動による走行状態を感知し、走行サービスモジュール1010は、走行感知センサーのセンシングデータをLiDARサービスモジュール1020とビジョンサービスモジュール1030に伝達することができる(S1210)。
【0274】
例えば、走行サービスモジュール1010は、50Hzの速度でコマのエンコーダ値を読み取ってLiDARサービスモジュール1020に伝達することができる。
【0275】
ビジョンサービスモジュール1030は、LiDARサービスモジュール1020に走行距離計測情報を要請することができる(S1220)。
【0276】
LiDARサービスモジュール1020は、ビジョンサービスモジュール1030の要請に応答し(S1225)、走行距離計測情報を生成することができる(S1240)。
【0277】
例えば、LiDARサービスモジュール1020は、LiDARセンサー175のセンシングデータを受信し、受信されたLiDARセンサー175のセンシングデータに基づく地形情報と以前位置情報を用いて移動ロボット100の位置変位量を判別することができる。
【0278】
また、LiDARサービスモジュール1020は、前記走行感知センサーのセンシングデータに基づく走行距離計測情報とLiDARセンサー175のICP結果を融合して走行距離計測情報を生成することにより、単に二つのデータを並列的に使うものではなく、走行距離計測情報の正確な算出に使える。
【0279】
一方、ビジョンサービスモジュール1030は、映像獲得部120が獲得した映像情報を読んでくるカメラサービスモジュール1040に映像データを要請し(S1230)、カメラサービスモジュール1040から映像データを受信することができる(S1235)。
【0280】
一方、LiDARサービスモジュール1020は、判別された位置変位量情報をビジョンサービスモジュール1030に送信することができる(S1245)。
【0281】
ビジョンサービスモジュール1030は、LiDARサービスモジュール1020から位置変位量情報を受信し(S1245)、カメラサービスモジュール1040から映像データを受信し(S1235)、前記位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって特徴点位置を判別する(S1250)ことにより、LiDAR基盤の走行距離計測情報に基づく映像特徴点をマッチングすることができる(S1140)。
【0282】
一方、制御部140は、算出された現在位置情報を含むノード情報をマップに登録し、ノード情報が追加又は更新されたマップを保存部130に保存することができる。
【0283】
一方、ビジョンサービスモジュール1030は前記ノード情報をLiDARサービスモジュール1020に送信することができ(S1260)、LiDARサービスモジュール1020はビジョンサービスモジュール1030が前記現在位置を算出するうちに移動ロボット100が移動した位置変位量を算出して受信したノード情報に反映することにより、移動ロボット100の最終の現在位置を判別することができる(S1270)。すなわち、LiDARサービスモジュール1020は、ビジョンサービスモジュール1030が推定した現在位置を補正して最終の現在位置を判別することができる(S1170、S1270)。
【0284】
LiDARサービスモジュール1020は、判別された最終位置に対応するノード情報をマップに登録するか制御部140内の他のモジュールに出力することができる(S1280)。
【0285】
図13を参照すると、SLAMサービスモジュール1035は、ビジョン基盤のSLAMだけでなくSLAM関連プロセスを総括することができる。SLAMサービスモジュール1035は、ビジョン基盤のSLAMにLiDAR基盤を融合する場合、ビジョンサービスモジュール1030の機能、動作が拡張して具現されることができる。
【0286】
図12及び
図13を参照すると、SLAMサービスモジュール1035とLiDARサービスモジュール1020は、走行サービスモジュール1010からコマのエンコーダ値を受けることができる。
【0287】
SLAMサービスモジュール1035は、LiDARサービスモジュール1020にLiDARデータを要請することができ(S1310)、LiDARサービスモジュール1020は、LiDARデータを準備するという応答をSLAMサービスモジュール1035に送信することができる(S1315)。
【0288】
LiDARサービスモジュール1020は、移動ロボット100の直前位置とコマのエンコーダ値に基づいて現在位置を予測した後、LiDARセンサー175から入力される地形(geometry)情報を用いて位置変位量及び現在位置を予想し(1330)、予想値をSLAMサービスモジュール1035に伝達することができる(S1340)。
【0289】
実施例によって、LiDARサービスモジュール1020は、位置変位量を含む走行距離計測情報及び共分散形態の不確実性確率値をSLAMサービスモジュール1035に送信することができる。
【0290】
SLAMサービスモジュール1035は、カメラサービスモジュール1040に映像を要請することができる(S1320)。ここで、SLAMサービスモジュール1035は、走行サービスモジュール1010から受信したエンコーダ値によって対応する映像情報を要請することができる。
【0291】
SLAMサービスモジュール1035は、カメラサービスモジュール1040から映像を受け(S1325)、LiDARサービスモジュール1020から入力された位置変位量に基づいて現在映像から抽出された特徴点と以前位置で抽出された特徴点のマッチングによって3D特徴点位置を計算することができる(S1350)。
【0292】
また、SLAMサービスモジュール1035は、このように計算された3D点に基づいて移動ロボット100が移動した変位量と現在位置を計算することができる(S1350)。
【0293】
一方、SLAMサービスモジュール1035は、このように計算された結果をノード(Node)形態のノード情報として保存することができる。
【0294】
ここで、保存されるノード情報は登録すべきノードインデックス(index)情報、全域ポーズ情報(X、Y、θ)、全域不確実性値などを含むことができる。
【0295】
実施例によって、SLAMサービスモジュール1035は、計算された結果をノード(Node)形態として保存した後、ノード情報をLiDARサービスモジュール1020に伝達する(S1360)。
【0296】
LiDARサービスモジュール1020は、SLAMサービスモジュール1035で計算するうちに移動ロボットが移動した位置を追加して現在のロボット位置が分かることができる。
【0297】
LiDARセンサー175のセンシングデータを用いるLiDAR SLAMは、照度変化に無関係であるという利点がある。
【0298】
図14のような環境AではLiDAR SLAMのみでマッピング(mapping)及び位置認識が可能であり、LiDARセンサー175は障害物感知及び走行方向設定センサーとしても活用することができる。
【0299】
図14の環境Aは障害物1411、1412、1413、1414を回避しながら走行すれば、ロボットが移動した所に再び帰る環境であるので、エラー(error)が大きくならないので、LiDAR SLAMのみでも正常なマップ作成が可能である。
【0300】
しかし、LiDAR SLAMのみ使用する場合、
図15のような環境Bでは、移動ロボット100がずっと新しい所を見ながら動くから、エラーが大きくなる。移動ロボット100がこの状態で最初出発点1500に戻ったとき、移動ロボット100がある所が最初出発地点であることが分かりにくい。
【0301】
図15の環境Bはさまざまな障害物1511、1512、1513の少なくとも一つ1511が空間中央に大きくある環境であり、LiDAR SLAMのみではループクロージング(Loop closing)の問題のためマップ生成に困難がある。
【0302】
図16を参照すると、移動ロボット100は、所定経路1610に移動した後、いずれか一地点Pxが出発地点Poと一致するかを判別し、同じ地点と確認される場合、エラーを最小化する最適化作業を行ってグラフ基盤のSLAMを遂行することができる。
【0303】
地点Pxが出発地点Poと一致すれば、エラー訂正アルゴリズムにしたがってエラーを訂正して正確な経路1620に経路情報を修正することにより、正確な位置認識及びマップ作成が可能である。
【0304】
したがって、LiDAR SLAMを用いるためには、正確なループクロージングアルゴリズムとエラー訂正(Error Correction)アルゴリズムが必要である。
【0305】
一方、映像獲得部120を介して獲得した映像を用いるビジョンSLAMの場合、
図14の環境A及び
図15の環境Bともに正確なループクロージングができてマッピング及び位置認識が可能である。
【0306】
しかし、ビジョンSLAMは照度による性能変化があるから、照度が低くて映像で検出される特徴の量が減少することによって性能に差が発生し得る。特に、照度が非常に低ければ獲得映像から特徴抽出が不可能であり、マッピング及び位置認識も不可能な欠点がある。
【0307】
したがって、ビジョンSLAMを用いる場合、低照度以下の環境で動作しにくい限界点をLiDARセンサー175を用いる位置認識技術によって克服することができる。
【0308】
また、LiDAR SLAMのマップをビジョンSLAMのループクロージングとエラー訂正で補正することにより、
図15の環境Bのような空間でLiDARマッピングエラーを改善することができる。
【0309】
本発明の一実施例によれば、LiDARセンサー175を用いたLiDAR SLAMと映像獲得部120を用いたビジョンSLAMを相補的に活用してロボットが移動するとき、暗い領域と明るい領域でも安定的な自分の位置認識が可能である。
【0310】
図17を参照すると、LiDARセンサー175を用いたLiDAR SLAMを先に遂行し(S1710)、ループクロージングに利点があるビジョンSLAMを遂行し(S1720)、マップを生成して保存することができる(S1730)。
【0311】
すなわち、LiDAR SLAMでマップを生成し(S1710)、LiDAR SLAMで生成されたマップをビジョンSLAMのループクロージングとエラー訂正で補正することにより(S1720)、最終マップを生成することができる(S1730)。
【0312】
図18はLiDAR SLAMで生成されたマップ1810とループクロージングとエラー訂正が遂行されたマップ1820を例示する。
【0313】
好ましくは、
図1~
図13に基づいて説明したように、LiDARセンサー175のセンセングデータに基づく走行距離計測(odometry)情報に基づいてビジョンSLAMを遂行することができる。また、ビジョンSLAM演算過程の所要時間の間に移動ロボット100の移動量をさらに反映して移動ロボット100の現在位置を判別することができる。
【0314】
本発明の一実施例によれば、映像基盤の特徴点マッチングがうまくできない場合にも周辺ノードとの相関関係をLiDARセンサー175で計算することができる。すなわち、映像基盤の特徴点マッチングがうまくできない場合、LiDARサービスモジュール1020に情報を知らせ、LiDARサービスモジュール1020で相関関係(Constraint)を生成することができる。これにより、もっと豊かな相関関係を用いた最適化が可能であるという利点がある。
【0315】
明るい領域でも映像の特徴点マッチングの限界のためマッチングが不完全であるときがある。よって、現在ビジョンサービスモジュール1030が思う位置と周辺ノードが一定距離以下であるにもかかわらずマッチングがうまくできない場合、ビジョンサービスモジュール1030がLiDARサービスモジュール1020で相関関係の追加を要請することができる。
【0316】
LiDARサービスモジュール1020は、現在ノードと周辺ノード間のICPマッチング(Matching)を行ってConstraintを追加することができる。これにより、ノード間のConstraintを追加することにより、もっと多いノード間のconstraintを用いて正確な位置推定が可能となる。
【0317】
映像に基づいて計算した走行距離計測(Odometry)情報の場合、スケールドリフト(Scale Drift)が発生し得るが、LiDAR基盤の地形情報を一緒に考慮することにより、スケールドリフト(Scale Drift)の最小化も可能である。
【0318】
また、本発明の一実施例によれば、映像基盤のビジョンSLAMとLiDAR基盤のLiDAR SLAM間のビューポイント(View Point)に対する精密な校正(Calibration)の必要なしにフュージョン(fusion)SLAMが可能な利点がある。
【0319】
図19は本発明の実施例によるSLAMについての説明に参照される図であり、カメラセンサー120bとLiDARセンサー175で獲得されたデータに基づく相関関係であるconstraintsを一つのSLAMフレームワーク(Framework)であるSLAMサービスモジュール1035で最適化する実施例を開示する。
【0320】
図19のSLAMサービスモジュール1035はビジョン基盤のSLAMだけでなくSLAM関連プロセスを総括するものであり、ビジョンサービスモジュール1030の機能及び動作が拡張して具現されることができ、Visual-LiDAR SLAMサービスとも名付けられることができる。
【0321】
SLAMサービスモジュール1035は、カメラセンサー120bから映像データを受信することができる。また、LiDARサービスモジュール1020はLiDARセンサー175からセンシングデータを受信することができる。
【0322】
一方、LiDARサービスモジュール1020とSLAMサービスモジュール1035は走行サービスモジュール1010から走行サービスモジュール1010で獲得された走行距離計測情報を受けることができる。例えば、エンコーダ1011は、移動ロボット100の走行中にコマ動作に基づく走行距離計測情報をLiDARサービスモジュール1020とSLAMサービスモジュール1035に伝達することができる。
【0323】
SLAMサービスモジュール1035は、LiDARサービスモジュール1020にLiDARサービスモジュール1020で取得された相関関係情報を要請することができる(S1910)。
【0324】
SLAMサービスモジュール1035は、LiDARサービスモジュール1020に直前フレーム(frame)からの相対的な位置情報(relative pose)を要請することができる。直前フレームからの相対的な位置情報は移動ロボット100の直前位置から現在位置までの相対的な位置情報であり、位置変位量でも、ICPマッチング結果から出た情報でもあり得る。
【0325】
また、SLAMサービスモジュール1035は、LiDARサービスモジュール1020にループ変位(Loop Constraint)を要請することができる。例えば、マッチング対象フレーム(frame)のインデックス(index)、ローカルマップ(localmap)の範囲内でマッチングするループ変位(Loop Constraint)を要請することができる。
【0326】
LiDARサービスモジュール1020はSLAMサービスモジュール1035の要請に応答することができる(S1920)。例えば、LiDARサービスモジュール1020は、SLAMサービスモジュール1035に直前フレーム(frame)からの相対的な位置情報(relative pose)、ローカルマップ(local map)の範囲内でマッチングするループ変位(Loop Constraint)を応答することができる。
【0327】
一方、SLAMサービスモジュール1035は、カメラセンサー120bとLiDARセンサー175から取得されたそれぞれのconstraintsを統合することができる。
【0328】
SLAMサービスモジュール1035は、LiDARサービスモジュール1020で受信した情報にビジョンSLAM結果を融合して現在位置を判別することができる。
【0329】
SLAMサービスモジュール1035は、LiDARサービスモジュール1020で受信した情報にビジョンSLAM結果を融合してノード情報をアップデートし、SLAMマップを生成することができる。
【0330】
SLAMサービスモジュール1035は、現在補正された位置を判別し、全体ノードのポーズ(pose)を含むポーズ-グラフ(pose-graph)を補正することができる。
【0331】
すなわち、SLAMサービスモジュール1035は、移動ロボット100の現在位置を判別し、SLAMマップのノード情報を追加、削除及び変更してSLAMマップを生成するか、生成されたSLAMマップをアップデートすることができる。
【0332】
一方、SLAMサービスモジュール1035は、移動ロボット100の現在位置、補正されたポーズ-グラフ情報、現在位置に対応するローカルマップに相当するフレームインデックス情報、現在ノード、削除されたノード及び連結ノード情報などをLiDARサービスモジュール1020に送信することができる(S1930)。
【0333】
図20は本発明の実施例によるSLAMについての説明に参照される図で、ビジョン-LiDARフュージョンSLAMサービス2000の構成概念図である。
【0334】
図20で例示したビジョン-LiDARフュージョンSLAMサービス2000の構成はソフトウェア的なサービスであり、ビジョンSLAMとLiDAR SLAMは互いに異なるスレッド(thread)であり、非同期式で動作することができる。
【0335】
これにより、ビジョンSLAMとLiDAR SLAM方式のそれぞれの固有の性能は基本的に確保し、これをビジョン-LiDARフュージョンSLAMサービス2000で統合してもっと向上した性能を確保することができる。
【0336】
図20を参照すると、SLAMメイン2010は、フュージョンSLAMサービス2000内の各サービスモジュールでデータを受けて必要なサービスモジュールに伝達し、応答を受信するハブ(hub)として動作することができる。
【0337】
視覚的走行距離計測(Visual Odometry、VO)2050は、カメラセンサー120bから獲得される映像から走行距離などを推定するビジョン基盤の走行距離計測判別を遂行することができる。
【0338】
視覚的走行距離計測2050は、カメラセンサー120bから獲得される映像から特徴点を抽出し、特徴点マッチング(Feature extraction matching、FEM)2010を遂行することができる。しかし、低照度環境で獲得された映像では特徴点抽出及びマッチング2010が難しいことがある。
【0339】
したがって、LiDARサービスモジュール2015でICPマッチング2085を行って走行距離計測情報を獲得し、これに基づいてフュージョンSLAMを行うことが好ましい。
【0340】
このように、ローカルマップ範囲内で、視覚的走行距離計測2050によって獲得した走行距離計測情報及び/又はLiDARサービスモジュール2015がICPマッチング2085を行って獲得した走行距離計測情報を用いて全域位置を判別することができる。
【0341】
例えば、Global Pose Tracker(GPT)2020は走行距離計測情報を呼んで来て全域位置を判別することができる。
【0342】
一方、Global Mapper(GM)2030は、ローカルマップ範囲内で判別された情報を取り合わせて最適化することができる。また、Global Mapper2030は、特徴点辞書であるVocabulary tree(VT)2060を生成することができる。
【0343】
一方、Kidnap Recovery(KR)2040は、ローカルマップ範囲内で判別された情報を取り合わせて最適化することができる。
【0344】
SLAMメイン2010は、Global Pose Tracker2020からループ変位(Loop Constraint)を持って来ることができる。また、SLAMメイン2010は、新しいフレーム、位置変化量、ループ変位(Loop Constraint)をGlobal Mapper2030のスレッドに伝達することができる。
【0345】
SLAMメイン2010は、視覚的走行距離計測2050から新しいフレームの特徴点情報と補正された位置を持ってくることができ、新しいフレームをGlobal Mapper2030のポーズ-グラフノードとマッチングしてループ変位(Loop Constraint)を生成することができる。
【0346】
Global Pose Tracker2020では位置推定を遂行し、SLAMメイン2010は推定された位置情報によってポーズ-グラフのノード情報を更新することができる。
【0347】
SLAMメイン2010は、現在補正された位置を判別し、全体ノードのポーズ(pose)を含むポーズ-グラフ(pose-graph)を補正することができる。
【0348】
SLAMメイン2010は、移動ロボット100の現在位置を判別し、SLAMマップのノード情報を追加、削除及び変更してSLAMマップを生成するか、生成されたSLAMマップをアップデートすることができる。
【0349】
本発明による移動ロボットは、前述した実施例の構成と方法に限って適用されるものではなく、前記実施例は、多様な変形ができるように、各実施例の全部又は一部が選択的に組み合わせられて構成されることもできる。
【0350】
同様に、特定の順に図面に動作を図示しているが、これは、好ましい結果を得るために図示した特定の順に又は順次の順にそのような動作を遂行しなければならないか全ての図示の動作を遂行しなければならないものに理解されてはいけない。特定の場合、マルチタスキングと並列プロセッシングが有利であり得る。
【0351】
一方、本発明の実施例による移動ロボットの制御方法は、プロセッサが読める記録媒体にプロセッサが読めるコードで具現することが可能である。プロセッサが読める記録媒体はプロセッサによって読められるデータが保存される全ての種類の記録装置を含む。また、インターネットを介しての伝送などの搬送波形態に具現されることも含む。また、プロセッサが読める記録媒体はネットワークで連結されたコンピュータシステムに分散され、分散方式でプロセッサが読めるコードが保存されて実行されることができる。
【0352】
また、以上では本発明の好適な実施例について図示して説明したが、本発明は上述した特定の実施例に限定されず、請求範囲で請求する本発明の要旨を逸脱することなしに当該発明が属する技術分野で通常の知識を有する者によって多様な変形実施が可能であることはもちろんのこと、このような変形実施は本発明の技術的思想や見込みから個別的に理解されてはいけないであろう。
【符号の説明】
【0353】
100 移動ロボット
110 本体
137 操作部
140 制御部
150 サービス部
160 走行部
170 センシング部
190 通信部