JP7225647B2 - 自律移動装置、自律移動方法及びプログラム - Google Patents

自律移動装置、自律移動方法及びプログラム Download PDF

Info

Publication number
JP7225647B2
JP7225647B2 JP2018187202A JP2018187202A JP7225647B2 JP 7225647 B2 JP7225647 B2 JP 7225647B2 JP 2018187202 A JP2018187202 A JP 2018187202A JP 2018187202 A JP2018187202 A JP 2018187202A JP 7225647 B2 JP7225647 B2 JP 7225647B2
Authority
JP
Japan
Prior art keywords
feature points
images
thinning
image
mobile device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018187202A
Other languages
English (en)
Other versions
JP2020057187A (ja
Inventor
泰士 前野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2018187202A priority Critical patent/JP7225647B2/ja
Publication of JP2020057187A publication Critical patent/JP2020057187A/ja
Application granted granted Critical
Publication of JP7225647B2 publication Critical patent/JP7225647B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Description

本発明は、自律移動装置、自律移動方法及びプログラムに関する。
周囲の環境の地図を作成して、作成した地図に基づいて自律的に移動する自律移動装置(自律移動ロボット)が知られている。また、このような自律移動ロボットに、画像をパターン認識する処理を組み込むことも知られている。これらの装置において、地図の作成処理及び画像の認識処理は、どちらも処理量が非常に多いため、処理バランスの改善を図る技術開発が進められている。例えば、特許文献1には、地図の作成状況と人の検出状況とに基づいて、地図作成部の処理量と顔認識部の処理量を調整する自律移動装置が記載されている。
特開2018-55167号公報
特許文献1に記載の自律移動装置では、地図の作成処理及び顔の認識処理は、どちらも処理量が非常に多いため、作成済みの地図の大きさや、周囲に人が存在するか否かによって、地図作成部の処理量と顔認識部の処理量とを調整して、処理バランスの改善を図っている。その際、該自律移動装置は、処理負荷を軽減するために、地図の作成頻度を減らしたり、地図の作成を停止したりする場合があるが、そのようなことをすると現在位置をロスト(追跡失敗)する可能性が増大してしまう。しかし、該自律移動装置では、現在位置をロストする可能性を低減するための処理は用意されていない。したがって、従来の自律移動装置では、現在位置をロストする可能性を低減するための対応に改善の余地がある。
本発明は、上記実情に鑑みてなされたものであり、処理負荷を低減しつつロストする可能性を低減することができる自律移動装置、自律移動方法及びプログラムを提供することを目的とする。
上記目的を達成するため、本発明の自律移動装置は、
画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
画像を逐次撮影する撮像部と、
制御部と、
を備え、
前記制御部は、
前記自律移動装置が移動する速度を取得し、
前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
前記撮像部で撮影された画像に含まれる特徴点を抽出し、
前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
前記速度が第1速度閾値より小さければ前記間引き数を増加させ、
前記速度が第2速度閾値より大きければ前記間引き数を減少させる。
また、上記目的を達成するため、本発明の自律移動装置は、
画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
画像を逐次撮影する撮像部と、
制御部と、
を備え、
前記制御部は、
前記自律移動装置が移動する速度を取得し、
前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
前記撮像部で撮影された画像に含まれる特徴点を抽出し、
前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
予め前記記憶部に記憶された前記速度の範囲に対応する間引き数が設定された速度間引き数テーブルを参照し、前記間引き数を前記速度に対応する間引き数に設定する。
また、上記目的を達成するため、本発明の自律移動装置は、
画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
画像を逐次撮影する撮像部と、
制御部と、
を備え、
前記制御部は、
前記逐次撮影された画像から所定の間引き数の間引き画像の情報と、前記逐次撮影された画像から前記間引き画像を間引いた画像の情報と、を記憶部に保存し、
前記撮像部で撮影された画像に含まれる特徴点を抽出し、
前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整し、
前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定する。
本発明によれば、状況に応じて間引き数を調整することにより、処理負荷を低減しつつロストする可能性を低減することができる。
実施形態1に係る自律移動装置の機能構成を示す図である。 実施形態1に係るSLAM処理のフローチャートである。 実施形態1に係るトラッキングスレッドのフローチャートの前半部分である。 実施形態1に係るトラッキングスレッドのフローチャートの後半部分である。 実施形態1に係るマッピングスレッドのフローチャートである。 実施形態1に係るループクロージングスレッドのフローチャートである。 位置(姿勢)推定に成功した場合に間引き数が変化する様子を説明する図である。 位置(姿勢)推定に失敗した場合に間引きデータキューに保存されているデータが使われる様子を説明する図である。 変形例1に係る間引き数テーブルの一例を示す図である。 変形例2に係るトラッキングスレッドのフローチャートの後半部分である。 変形例3に係る速度間引き数テーブルの一例を示す図である。
以下、本発明の実施形態に係る自律移動装置について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
(実施形態1)
本発明の実施形態1に係る自律移動装置は、周囲の地図を作成しながら、用途に応じて自律的に移動する装置である。この用途とは、例えば、警備監視用、屋内掃除用、ペット用、玩具用等である。
図1に示すように、本発明の実施形態1に係る自律移動装置100は、制御部10、記憶部20、撮像部31、駆動部32、通信部33、を備える。
制御部10は、CPU(Central Processing Unit)等で構成され、記憶部20に記憶されたプログラムを実行することにより、後述する各部(SLAM処理部11、間引き数調整部12、間引きデータ破棄部13、移動制御部14)の機能を実現する。また、制御部10は、タイマー(図示せず)を備え、経過時間をカウントすることができる。
記憶部20は、ROM(Read Only Memory)、RAM(Random Access Memory)等で構成され、機能的に、フレームDB(DataBase)21、マップ点DB(DataBase)22及び間引きデータキュー23を含む。ROMには制御部10のCPUが実行するプログラム及びプログラムを実行する上で予め必要なデータが記憶されている。RAMには、プログラム実行中に作成されたり変更されたりするデータが記憶される。
フレームDB21には、撮像部31により撮影された画像(フレーム)のうち、間引きの対象にならずに残った画像(間引かれた画像)が記憶される。ただし、記憶容量を節約するために、記憶対象となる画像(間引かれた画像)の一部のみ(例えば後述するキーフレームのみ)を記憶するようにしてもよいし、画像自体ではなく画像に含まれる特徴点の情報を記憶するようにしてもよい。なお、特徴点とは画像中の、エッジ部分やコーナー部分等、画像内の特徴的な部分の点のことを言う。特徴点は、SIFT(Scale-Invariant Feature Transform)やSURF(Speeded Up Robust Features)等のアルゴリズムを用いて取得することができる。
自律移動装置100は、フレームDB21に記憶された複数の画像(に含まれる特徴点の情報)を用いて、SLAM処理により、SLAM処理用のデータ(後述するマップ点のデータ)の生成及び自己位置の推定を行う。自己位置の推定に用いた画像のうち重要なものはキーフレームと呼ばれ、フレームDB21には、キーフレームの画像の情報(例えばその画像に含まれる特徴点の情報)が、そのキーフレームのキーフレーム番号(キーフレームが登録される度に1ずつ増えていく番号)、そのキーフレームを撮影した時の自律移動装置100の姿勢(これをキーフレームの姿勢ともいい、位置(並進ベクトルt)及び向き(回転行列R)の情報を持つ)の情報等と紐付けられて記憶される。
マップ点DB22には、フレームDB21に記憶されたキーフレームに含まれている特徴点のうち、3次元位置(X,Y,Z)が求められた特徴点の実空間上(3次元空間上)の点(マップ点と言う)の情報が記憶される。マップ点DB22には、マップ点の情報として、その3次元位置と、そのマップ点の特徴量(例えばSIFT等で得た特徴量)と、が紐付けられて記憶される。
SLAM処理では、フレームDB21に記憶されている複数のキーフレーム間で、同一の特徴点の対応を取得し、取得した対応特徴点の3次元位置をマップ点DB22から取得することによって、自己位置の推定を行う。
間引きデータキュー23には、撮像部31により撮影された画像のうち、間引き画像(間引きの対象となった画像)が記憶される。ただし、フレームDB21と同様、記憶容量を節約するために、画像自体ではなく画像に含まれる特徴点の情報を記憶するようにしてもよい。また、間引きデータキュー23のサイズは可変であり、初期化時のサイズ0である。そして、このサイズは、間引き数調整部12により、0以上、最大キューサイズ(例えば10)以下の範囲で調整される。また、間引きデータキュー23は、先入れ先出し(FIFO:First In First Out)でデータの保存と取り出しができるようになっている。
なお、図示しないが、自律移動装置100は、周囲に存在する物体(障害物)を検出する障害物センサを備えてもよい。障害物センサは、例えば、赤外線距離センサ、超音波センサ等、障害物までの距離を測定することができる距離センサである。また、独立した障害物センサを搭載せずに、撮像部31を用いて障害物を検出するようにしてもよい。また、障害物センサとして、距離センサではなく、他の物体に衝突したことを検知するバンパーセンサを備えてもよい。そして、自律移動装置100は、障害物センサからの情報に基づいて、障害物の位置を記録した環境地図を記憶部20に記憶するようにしてもよい。
撮像部31は、単眼の撮像装置(カメラ)を備える。撮像部31は、例えば、30fps(frames per second)で画像(フレーム)を撮影して取得する。自律移動装置100は、撮像部31が逐次撮影して取得した画像に基づいて、SLAM処理により、自己位置と周囲環境とをリアルタイムに認識しながら、自律移動を行う。
駆動部32は、独立2輪駆動の車輪とモータとを備え、制御部10からの指示(制御)により自律移動装置100を移動させる。自律移動装置100は、2つの車輪の同一方向駆動により前後の平行移動(並進移動)を、2つの車輪の逆方向駆動によりその場での回転(向き変更)を、2つの車輪のそれぞれ速度を変えた駆動により旋回移動(並進+回転(向き変更)移動)を、行うことができる。また、各々の車輪にはロータリエンコーダが備えられており、ロータリエンコーダで車輪の回転数を計測し、車輪の直径、車輪間の距離等の幾何学的関係を利用することによって並進移動量及び回転量を計算できる。
例えば、車輪の直径をD、回転数をCとすると、その車輪の接地部分での並進移動量はπ・D・Cとなる。ここで、回転数Cは、駆動部に備えられたロータリエンコーダにより測定可能である。また、車輪の直径をD、車輪間の距離をI、右車輪の回転数をC、左車輪の回転数をCとすると、向き変更の回転量は(右回転を正とすると)360°×D×(C-C)/(2×I)となる。この並進移動量及び回転量をそれぞれ逐次足し合わせていくことで、駆動部32は、メカオドメトリとして機能し、自律移動装置100の位置(移動開始時の位置及び向きを基準とした現在の位置及び向き)を計測することができる。駆動部に備えられたロータリエンコーダは、距離計測部として機能する。また、時間当たりの移動距離を求めることにより、自律移動装置100の速度を取得することができる。
なお、車輪の代わりにクローラを備えるようにしても良いし、複数(例えば二本)の足を備えて足で歩行することによって移動を行うようにしても良い。これらの場合も、二つのクローラの動き、足の動き等に基づいて、車輪の場合と同様に自律移動装置100の位置(移動開始時の位置及び向きを基準とした現在の位置及び向き)の計測や速度の取得が可能である。
通信部33は、外部装置と通信するためのモジュールであり、外部装置と無線通信する場合にはアンテナを含む無線モジュールである。例えば、通信部33は、Bluetooth(登録商標)に基づく近距離無線通信を行うための無線モジュールである。通信部33を用いることにより、自律移動装置100は、外部とデータの受け渡し等を行うことができる。また、自律移動装置100は、外部のサーバ(図示せず)と通信部33で通信することによって、制御部10の機能の一部を外部のサーバで実行させるようにしてもよいし、記憶部20で記憶すべき情報の一部を外部のサーバに記憶させるようにしてもよい。
次に、自律移動装置100の制御部10の機能的構成について説明する。制御部10は、SLAM処理部11、間引き数調整部12、間引きデータ破棄部13、移動制御部14、の機能を実現し、自律移動装置100の移動制御等を行う。また、制御部10は、マルチスレッド機能に対応しており、複数のスレッド(異なる処理の流れ)を並行して実行することができる。
SLAM処理部11は、撮像部31が撮影しフレームDB21に記憶された画像を複数用いて、それらの画像から得られる特徴点の情報に基づき、SLAM処理により自律移動装置100の姿勢(位置及び向き)を推定する。このSLAM処理を行う際には、SLAM処理部11は、画像に含まれる特徴点を抽出し、フレームDB21に該特徴点の情報を保存するとともに、3次元位置を計算できた特徴点(マップ点)については、マップ点DB22に該マップ点の情報を保存する。
間引き数調整部12は、位置(姿勢)推定に用いる画像(フレームDB21に保存する画像)の間引き数を調整する。間引き数の初期値は0で、この場合は、SLAM処理部11は、画像を間引きせずに毎回位置(姿勢)推定を行う(そして、キーフレームをフレームDB21に保存する)。間引き数は、間引きデータキューのサイズと等しく、間引き数調整部12は、間引きデータキューのサイズをnに設定することにより、間引き数をnにする。SLAM処理部11は、ある画像で位置(姿勢)を推定した後、次のn枚の画像(間引き画像)では位置(姿勢)推定せずに、これらのn枚の画像(間引き画像)のデータを間引きデータキュー23に保存する。
間引きデータ破棄部13は、間引きデータキュー23に保存されている画像データ(間引き画像データ)を破棄し、間引きデータキュー23をクリアする。
移動制御部14は、上位アプリケーションプログラムからの指示にしたがって、駆動部32を制御して、自律移動装置100を移動させる。上位アプリケーションプログラムとは、自律移動装置100の用途に応じて決まるソフトウェアであり、例えば屋内掃除用アプリケーションプログラムである。上位アプリケーションプログラムは、用途に応じて様々な処理を行うことが想定されるが、一般的には、自律移動装置100が状況に応じて、地図を作成するために移動したり、掃除等の目的を達成するために移動したりするためのプログラムである。
以上、自律移動装置100の機能構成について説明した。次に、自律移動装置100のSLAM処理について、図2を参照して説明する。自律移動装置100は、電源オフ時は充電器(充電ステーション)に接続して充電されており、電源が投入されると、充電器に接続されていた位置をスタート地点としてSLAM処理が開始される。なお、自律移動装置100は電源が投入されると、このSLAM処理以外に、用途に応じた上位アプリケーションプログラムが別途(別スレッドで)起動し、制御部10は、この上位アプリケーションプログラムから移動等の指示を受ける。
まず、自律移動装置100のSLAM処理部11は、記憶部20に記憶されているSLAM処理用の各種データ(フレームDB21、マップ点DB22等)を初期化する(ステップS101)。
次に、SLAM処理部11は、トラッキングスレッドを起動する(ステップS102)。トラッキングスレッドは、自律移動装置100の現在位置を推定するスレッドである。
そして、SLAM処理部11は、マッピングスレッドを起動する(ステップS103)。マッピングスレッドは、SLAM用の地図のデータ(具体的にはフレームDB21及びマップ点DB22に格納される各種データ)を生成するスレッドである。
次に、SLAM処理部11は、ループクロージングスレッドを起動する(ステップS104)。ループクロージングスレッドは、ループクロージング処理が可能か否かをチェックし続け、ループクロージング処理が可能な場合にはループクロージング処理を行うスレッドである。なお、ループクロージング処理とは、以前来たことのある同じ場所に戻ってきたことを認識した場合に、以前この同じ場所にいた時の姿勢の値と現在の姿勢の値とのずれを用いて、以前来た時から今までの移動の軌跡中のキーフレームや、関連するマップ点の3次元位置を修正することを言う。
これらのスレッド(トラッキングスレッド、マッピングスレッド、ループクロージングスレッド)が並行して動作することにより、SLAM処理部11は、撮像部31が撮影した画像から特徴点を抽出して、自己位置の推定と地図の作成を行う。これらの各スレッドの処理の詳細は後述する。
次に、SLAM処理部11は、ユーザ、上位アプリケーションプログラム等から終了の指示があるか否かを判定する(ステップS105)。終了の指示がなければ(ステップS105;No)、ステップS105に戻って終了の指示を待つ。終了の指示があれば(ステップS105;Yes)、SLAM処理のための各スレッド(トラッキングスレッド、マッピングスレッド、ループクロージングスレッド)を停止させ(ステップS106)、SLAM処理を終了する。
以上がSLAM処理の流れである。次に、SLAM処理で起動される各種スレッド(トラッキングスレッド、マッピングスレッド、ループクロージングスレッド)について、順に説明する。
まず、トラッキングスレッドについて図3及び図4を参照して説明する。このスレッドでは、SLAM処理部11が、最初にトラッキング(位置推定)の初期化処理を行い、その後トラッキング処理(撮像部31で取得した画像を用いてビジュアルオドメトリにより自律移動装置100の姿勢(位置及び向き)を推定する処理)を行い続ける。そして、その際、トラッキング処理に支障が出ないと想定される場合に、撮像部31で取得した画像を間引きする処理を行う。
まず、間引き数調整部12は、間引きデータキュー23のサイズを0に初期化する(ステップS201)。これにより、間引き数は0に初期化される。そして、SLAM処理部11は、SLAM処理の状態を初期状態に初期化する(ステップS202)。なお、SLAM処理の状態には、初期状態、追跡状態、ロスト状態の3種類がある。初期状態は、トラッキング(位置推定)のための初期化がまだ完了していない状態である。追跡状態は、トラッキングが成功している状態である。ロスト状態は、トラッキングが失敗して、位置推定ができない状態である。
次に、SLAM処理部11は、撮像部31で画像(現在のフレーム)を取得(撮影)し、取得した画像内から特徴点を抽出する(ステップS203)。次に、SLAM処理部11は、SLAM処理の状態が初期状態であるか否かを判定する(ステップS204)。初期状態なら(ステップS204;Yes)、SLAMの初期化処理を行う(ステップS210)。SLAMの初期化処理とは、具体的には、前回取得したフレームと今回取得したフレームとで対応が取れる特徴点(対応特徴点)を抽出し、自律移動装置100の相対姿勢(前回取得したフレームを基準とした、今回の取得したフレームの相対的な姿勢(位置及び向き))を求めてフレームDB21に登録するとともに、この時抽出した対応特徴点の3次元位置を求めてマップ点DB22に登録することを言う。
SLAMの初期化処理において抽出した対応特徴点の数が5以上なら、Two-view Structure from Motion法でこの2つのフレーム間の姿勢(それぞれのフレームを取得した位置の差分(並進ベクトルt)及び向きの差分(回転行列R))を推定することができる。すると、この推定した姿勢は、前回取得したフレームを基準とした、今回取得したフレームの相対的な姿勢ということができる。この相対的な姿勢を現在の自律移動装置100の位置(姿勢)としてフレームDB21に登録し、対応特徴点の(現在の自律移動装置100の位置(姿勢)を基準とした)3次元位置をマップ点DB22に登録することになる。
そして、SLAM処理部11は、初期化処理が成功したか否かを判定する(ステップS211)。例えば、前回取得したフレームと今回取得したフレームとで対応が取れる特徴点の数が5点未満だと相対姿勢を求められないので、初期化処理失敗となる。また、対応特徴点の数が5点以上あっても、エラー(本当は対応していないのに対応が取れると判断した場合等)が含まれていること等により、相対姿勢が求められない場合は、初期化処理失敗となる。初期化処理が失敗したら(ステップS211;No)、ステップS203に戻る。初期化処理が成功したら(ステップS211;Yes)、SLAM処理部11は、SLAMの状態を追跡状態に設定して(ステップS212)、ステップS203に戻る。
一方、ステップS204で、初期状態でないなら(ステップS204;No)、SLAM処理部11は、SLAM処理の状態がロスト状態であるか否かを判定する(ステップS205)。ロスト状態なら(ステップS205;Yes)、SLAM処理部11は、ロスト状態からの復帰処理を行う(ステップS213)。ロスト状態からの復帰処理とは、具体的には、フレームDB21に記憶されているフレームの中から、現在の(今回取得した)フレームと類似する(又は一致する)フレームをBag-of-Features等により検索し、見つかったら、その見つかったフレームの情報を用いて現在位置(姿勢)を推定することを言う。
そして、SLAM処理部11は、ロスト状態からの復帰処理が成功したか否かを判定する(ステップS214)。成功したなら(ステップS214;Yes)、ステップS212に進み、失敗したなら(ステップS214;No)、ステップS203に戻る。
一方、ステップS205でロスト状態でないなら(ステップS205;No)、SLAM処理部11は、間引きデータキュー23に空きがあるか否かを判定する(ステップS206)。間引きデータキュー23に空きがあるなら(ステップS206;Yes)、間引きデータキュー23に、ステップS203で抽出した現在のフレームの特徴点の情報を保存し(ステップS207)、ステップS203に戻る。
間引きデータキュー23に空きがないなら(ステップS206;No)、SLAM処理部11は、現在の(今回取得した)フレームの特徴点、前回の(前回取得した)フレームの特徴点及び近傍のマップ点に基づき、現在位置(姿勢)を推定する(ステップS208)。そして、位置(姿勢)の推定が成功したか否かを判定する(ステップS209)。
位置(姿勢)の推定が失敗したら(ステップS209;No)、SLAM処理部11は、間引きデータキュー23が空か否かを判定する(ステップS215)。間引きデータキュー23が空なら(ステップS215;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを0にする(ステップS216)。そして、SLAM処理部11は、SLAMの状態をロスト状態にして(ステップS217)、ステップS203に戻る。
間引きデータキュー23が空でないなら(ステップS215;No)、SLAM処理部11は、間引きデータキュー23から特徴点の情報(間引き画像の特徴点の情報)を取り出す(ステップS230)。そして、SLAM処理部11は、取り出した特徴点、前回のフレームの特徴点及び近傍のマップ点に基づき、現在位置(姿勢)を推定する(ステップS231)。そして、位置(姿勢)の推定が成功したか否かを判定する(ステップS232)。
位置(姿勢)の推定が失敗したなら(ステップS232;No)、SLAM処理部11は、ロスト状態からの復帰処理を行う(ステップS235)。そして、ロスト状態からの復帰処理が成功したか否かを判定する(ステップS236)。成功したなら(ステップS236;Yes)、ステップS233に戻り、失敗したなら(ステップS236;No)、ステップS215に戻る。
一方、ステップS232で位置(姿勢)の推定に成功したと判定したなら(ステップS232;Yes)、SLAM処理部11は、間引きデータキュー23が空か否かを判定する(ステップS233)。空でなければ(ステップS233;No)、ステップS230に戻る。空なら(ステップS233;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを0にし(ステップS234)、ステップS226に進む。
また、ステップS209で位置(姿勢)の推定に成功したと判定したなら(ステップS209;Yes)、間引きデータ破棄部13は、間引きデータキュー23をクリアする(ステップS221)。そして、ステップS208で位置(姿勢)を推定した際の対応特徴点数が、第1閾値(例えば300)より大きいか否かを、間引き数調整部12が判定する(ステップS222)。
該対応特徴点数が第1閾値より大きければ(ステップS222;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1増やし(ステップS223)、ステップS226に進む。間引きデータキュー23のサイズが1増えることにより、間引き数も1増える。ただし、サイズを増やすと、間引きデータキュー23の最大キューサイズを超える場合は、間引きデータキュー23のサイズは最大キューサイズに設定される。
該対応特徴点数が第1閾値以下なら(ステップS222;No)、間引き数調整部12は、該対応特徴点数が第2閾値(例えば200)未満か否かを判定する(ステップS224)。該対応特徴点数が第2閾値以上なら(ステップS224;No)、ステップS226に進む。
該対応特徴点数が第2閾値未満なら(ステップS224;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1減らし(ステップS225)、ステップS226に進む。間引きデータキュー23のサイズが1減ることにより、間引き数も1減る。ただし、サイズを減らすと、サイズが0未満になる場合は、間引きデータキュー23のサイズは0に設定される。
ステップS226では、SLAM処理部11は、SLAM処理の状態を追跡状態に設定する。そして、SLAM処理部11は、今回のフレームをキーフレーム(マッピングスレッドやループクロージングスレッドでの処理対象となるフレーム)とするか否かを判定する(ステップS227)。今回のフレームをキーフレームとするか否かの判定方法は任意の方法を使用可能だが、例えば、前回のキーフレームの位置から現在位置が基準距離以上離れているなら、今回のフレームをキーフレームとし、基準距離未満ならキーフレームとしないといった判定方法が考えられる。
今回のフレームをキーフレームとしないなら(ステップS227;No)、ステップS203に戻る。今回のフレームをキーフレームとするなら(ステップS227;Yes)、SLAM処理部11は、今回のフレーム(キーフレーム)の情報をフレームDB21に登録し(ステップS228)、マッピングスレッドに今回のキーフレームを通知する(ステップS229)。そして、ステップS203に戻る。
以上、トラッキングスレッドの処理内容について説明した。なお、第2閾値は、第1閾値以下の任意の値である。これらの閾値は任意の値だが、SLAM処理部11が取得する画像の解像度や、特徴点の抽出方法等により、適切な値に設定するのが好ましい。例えば、これ以上の値ならSLAM処理部11がほぼ確実に(例えば90%以上の確率で)自己位置の推定に成功すると考えられる対応特徴点数を第1閾値に設定し、これ以下の値だと自己位置の推定に成功する確率が低い(例えば40%以下)と考えられる対応特徴点数を第2閾値に設定する。次に、マッピングスレッドについて、図5を参照して説明する。このスレッドでは、SLAM処理部11が、トラッキングスレッドによってフレームDB21に登録されたキーフレームの中の対応特徴点の3次元位置を計算して、マップ点DB22に登録する処理を行う。
まず、SLAM処理部11は、トラッキングスレッドから通知されたキーフレーム(現キーフレーム)を取得する(ステップS301)。そして、SLAM処理部11は、現キーフレームと前キーフレームとで対応が取れる特徴点(対応特徴点)を抽出する(ステップS302)。なお、前キーフレームは、フレームDB21を参照すれば、キーフレーム番号が現キーフレームより1つ小さいキーフレームとして取得できる。
フレームDB21にはそれぞれのキーフレームの姿勢(並進ベクトルtと回転行列R)も登録されているので、トラッキングスレッドの初期化処理の時と同様の方法で対応特徴点の3次元位置を計算できる。SLAM処理部11は、3次元位置が計算できた対応特徴点をマップ点としてマップ点DB22に登録する(ステップS303)。
次に、SLAM処理部11は、全キーフレームの位置(姿勢)と全マップ点の3次元位置に対して、バンドルアジャストメント処理を行って、精度向上を図る(ステップS304)。バンドルアジャストメント処理とは、カメラ姿勢(キーフレーム姿勢)とマップ点の3次元位置とを同時に推定する非線形最適化法であり、マップ点をキーフレーム上に投影させたときに発生する誤差が最小になるような最適化を行うものである。このバンドルアジャストメントの処理を行うことで、キーフレーム姿勢とマップ点の3次元位置の精度向上を図ることができる。
次に、SLAM処理部11、複数のキーフレームの姿勢と、そのキーフレーム上のマップ点と、そのマップ点の3次元位置と、に基づいてマップ点の3次元位置の誤差を求め、誤差が基準誤差よりも大きなマップ点の情報をマップ点DB22から削除する(ステップS305)。姿勢とマップ点とを固定させると、上述のバンドルアジャストメント処理等により該マップ点の3次元位置を推定できるので、推定した3次元位置と、マップ点DB22に登録されている3次元位置とに基づいて、誤差を計算できる。なお、ステップS305は必ずしもステップS304と別個に行う必要はなく、ステップS304で行われるバンドルアジャストメント処理の中で、誤差の大きいマップ点について、そのマップ点の情報をマップ点DB22から削除するようにしてもよい。
そして、SLAM処理部11は、現キーフレームをループクロージングスレッドに通知し(ステップS306)、ステップS301に戻る。
以上、マッピングスレッドの処理内容について説明した。次に、ループクロージングスレッドについて、図6を参照して説明する。このスレッドでは、SLAM処理部11が、ループクロージング処理が可能か否かをチェックし続け、ループクロージング処理が可能な場合にはループクロージング処理を行う。
まず、SLAM処理部11は、マッピングスレッドから通知されたキーフレーム(現キーフレーム)を取得する(ステップS401)。
そして、SLAM処理部11は、現キーフレームと「キーフレーム自体の特徴」の類似度が基準画像類似度以上になるキーフレームをフレームDB21から検索する(ステップS402)。ここで、この類似度としてどのような値を用いるかは任意だが、例えば、画像(キーフレーム)の特徴を特徴ベクトルで表している場合は、比較対象の2つの画像の特徴ベクトルのノルムを1に正規化したもの同士の内積を、その2つの画像の類似度とすることができる。また、2つの画像の特徴ベクトルの距離(各要素の差の二乗和の平方根)の逆数を、その2つの画像の類似度としてもよい。
そして、SLAM処理部11は、「キーフレーム自体の特徴」の類似度が基準画像類似度以上になるキーフレームが発見されたか否かを判定する(ステップS403)。発見されなければ(ステップS403;No)、ステップS401に戻る。発見されたら(ステップS403;Yes)、発見されたキーフレームと現キーフレームとが同じ位置(姿勢)になるように、フレームDB21内のキーフレームの情報やマップ点DB22内のマップ点の情報を修正し(ステップS404)、ステップS401に戻る。
ステップS404では、例えば、SLAM処理部11は、現キーフレームの姿勢を、発見されたキーフレームの姿勢と同じ姿勢に修正する。そして、発見されたキーフレームの姿勢と現キーフレームの姿勢との差分を用いて、発見されたキーフレームから現キーフレームまでの軌跡中の各キーフレームの姿勢に線形的に補正を加える。さらにこれらの各キーフレームに含まれるマップ点の3次元位置についても各キーフレームの姿勢の補正量に応じて修正する。
以上、ループクロージングスレッドの処理内容について説明した。次に、間引き数が変化する様子について、図7を参照して説明する。
この図では、間引きデータキュー23のサイズ(間引き数)は0で、SLAM処理の状態が追跡状態であるところから始まっている。SLAM処理部11が1番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数は第1閾値より小さく、第2閾値より大きかったとする。この場合、間引きデータキュー23のサイズ(間引き数)は変化せず0のままなので、次は2番目の画像で位置(姿勢)の推定が行われる。なお、SLAM処理部11が位置(姿勢)推定に成功したので、間引きデータ破棄部13は間引きデータキュー23をクリアするが、間引きデータキュー23のサイズが0の場合は、値が書き込まれないので、常にクリアされているのと同じである。したがって、これ以降の説明でも間引きデータキュー23のサイズが0の場合は、間引きデータキュー23のクリア処理についての記載は省略する。
そして、SLAM処理部11は、2番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数が第1閾値より大きかったとする。すると、間引き数調整部12が間引きデータキュー23のサイズ(間引き数)を増やして1にするので、3番目の画像は間引きデータキュー23に保存され、4番目の画像で位置(姿勢)の推定が行われる。
そして、SLAM処理部11は、4番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数も第1閾値より大きかったとする。すると、間引きデータ破棄部13は間引きデータキュー23をクリアし、間引き数調整部12が間引きデータキュー23のサイズ(間引き数)を増やして2にするので、5番目の画像と6番目の画像は間引きデータキュー23に保存され、7番目の画像で位置(姿勢)の推定が行われる。
そして、SLAM処理部11は、7番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数は第2閾値より小さかったとする。すると、間引きデータ破棄部13は間引きデータキュー23をクリアし、間引き数調整部12が間引きデータキュー23のサイズ(間引き数)を減らして1にするので、8番目の画像は間引きデータキュー23に保存され、9番目の画像で位置(姿勢)の推定が行われる。
そして、SLAM処理部11は、9番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数は第1閾値より小さく、第2閾値より大きかったとする。すると間引きデータ破棄部13は間引きデータキュー23をクリアし、間引き数調整部12は間引きデータキュー23のサイズ(間引き数)を変化させず1のままにするので、10番目の画像は間引きデータキュー23に保存され、11番目の画像で位置(姿勢)の推定が行われる。
このように、自律移動装置100は、対応特徴点数の大きさに応じて間引き数を動的に変化させることにより、位置(姿勢)推定をできるだけ失敗させないようにしつつ、位置(姿勢)推定の処理を間引くことができる。位置(姿勢)推定の処理は負荷が大きいため、間引いて処理を行うことができれば、それだけ処理負荷を低減でき、能力の低いハードウェアでも問題無く実行できるようになる。
次に、位置(姿勢)推定に失敗した場合に、間引きデータキュー23に保存された画像データが使われる様子について、図8を参照して説明する。
この図では、間引きデータキュー23のサイズ(間引き数)は3で、SLAM処理の状態が追跡状態であるところから始まっている。SLAM処理部11が1番目の画像で位置(姿勢)推定に成功し、この時の対応特徴点数は第1閾値より小さく、第2閾値より大きかったとする。すると、間引きデータ破棄部13は間引きデータキュー23をクリアし、間引き数調整部12は、間引きデータキュー23のサイズ(間引き数)を3のままにするので、2番目から4番目までの画像は間引きデータキュー23に保存され、5番目の画像で位置(姿勢)の推定が行われる。
そして、SLAM処理部11は、5番目の画像で位置(姿勢)推定に失敗したとする。すると、SLAM処理部11は、間引きデータキュー23から2番目の画像を取り出し、位置(姿勢)の推定を行う。そして、位置(姿勢)の推定に成功したら、間引きデータキュー23から3番目の画像を取り出し、位置(姿勢)の推定を行う。(位置(姿勢)の推定に失敗したら、ロスト状態からの復帰処理をした後に、間引きデータキュー23から3番目の画像を取り出し、位置(姿勢)の推定を行う。)
そして、また位置(姿勢)の推定に成功したら、間引きデータキュー23から4番目の画像を取り出し、位置(姿勢)の推定を行う。(位置(姿勢)の推定に失敗したら、ロスト状態からの復帰処理をした後に、間引きデータキュー23から4番目の画像を取り出し、位置(姿勢)の推定を行う。)
そして、また位置(姿勢)の推定に成功したら、2番目から4番目までの画像は既に取り出し済みで、間引きデータキュー23は空になっているので、間引きデータキュー23のサイズ(間引き数)を0にして、SLAM処理の状態を追跡状態にし、6番目の画像から再度、間引き処理しながら位置(姿勢)推定する処理に戻る。(位置(姿勢)の推定に失敗し、ロスト状態からの復帰にも失敗したら、間引きデータキュー23のサイズ(間引き数)を0にして、SLAM処理の状態をロスト状態にし、ロスト状態からの復帰処理に成功するまで、ロスト状態からの復帰処理を繰り返す。)
以上説明したように、対応特徴点数が多い場合には、間引き数を大きくしても位置(姿勢)推定に成功する可能性が高いため、処理負荷を低減するために、間引き数調整部12は間引き数を大きくしている。逆に、対応特徴点数が少ない場合には、位置(姿勢)推定に失敗する可能性が高まるため、間引き数調整部12は間引き数を小さくして、できるだけ位置(姿勢)推定が失敗しないようにしている。このようにすることにより自律移動装置100は、対応特徴点数に応じて間引き数を適切な値に調整することができる。
また、位置(姿勢)推定に失敗したら、SLAM処理部11は、間引きデータキュー23に保存されている画像データ(特徴点の情報)を用いて再度位置(姿勢)推定をすることにより、ロスト状態になることを回避し、精度を落とさずに位置(姿勢)推定を行うことができる。さらに、位置(姿勢)推定に成功したら、間引きデータ破棄部13が間引きデータキュー23をクリアすることにより、必要以上に記憶容量が圧迫されることを防いでいる。
なお、第1閾値よりも小さい第3閾値(例えば100)を設定しておいて、SLAM処理部11がトラッキングスレッド(図4)のステップS224の直前(又はステップS225の直後)等で対応点数を第3閾値と比較し、対応点数が第3閾値未満で、しかも間引きデータキュー23が空で無ければ、ステップS230に飛ぶようにしてもよい。このようにすると、自己位置をロストした後だけでなく、ロストしそうな場合にも間引きデータキュー23に保存された情報に基づいて自己位置を推定することができるようになる。
(変形例1)
実施形態1では、対応特徴点数が第1閾値より大きければ間引き数を大きくし、対応特徴点数が第2閾値より小さければ間引き数を小さくすることによって、対応特徴点数に応じて間引き数を調整している。しかし、間引き数の調整方法はこれに限られない。例えば、変形例1として、各間引き数に対応した閾値を設定する方法も考えられる。このような変形例1に係る自律移動装置100は、図9に示すような、各間引き数に対応した対応特徴点数の範囲が設定されたテーブル(間引き数テーブル)を記憶部20に記憶させておく。そして、間引き数調整部12は、間引き数テーブルを参照して、対応特徴点数がある閾値の範囲内であれば、その範囲に対応する間引き数を、間引きデータキュー23のサイズとして設定する。
変形例1では、間引きデータキュー23のサイズが、対応特徴点数の大きさに対応した間引き数に素早く変更されるため、対応特徴点数が急激に大きくなったり小さくなったりする環境でも、できるだけ位置(姿勢)推定が失敗しないようにしつつ、間引き数を調整することができる。
(変形例2)
また、実施形態1や変形例1では、対応特徴点数に応じて間引き数を調整しているが、位置(姿勢)推定が成功する可能性の指標として、対応特徴点数以外にも、例えば、自律移動装置100の速度が考えられる。速度が遅ければ、間引き数を大きくしても位置(姿勢)推定に成功する可能性は高いと考えられるが、速度が速ければ間引き数を小さくしないと位置(姿勢)推定に失敗する可能性が高いと考えられるからである。
そこで、変形例2として、自律移動装置100の速度に応じて間引き数を調整する方法も考えられる。変形例2に係る自律移動装置100では、例えば速度の閾値として第1速度閾値(例えば0.5km/時)と第2速度閾値(例えば3km/時)を設定する。そして、実施形態1のトラッキングスレッド(図4)の一部(ステップS222及びステップS224)を、図10に示すステップS251及びステップS252に変更する。
ステップS251では速度が第1速度閾値未満か否かを判定する。速度が第1速度閾値未満なら(ステップS251;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1増やす(ステップS223)。また、ステップS252では速度が第2速度閾値より大きいか否かを判定する。速度が第2速度閾値より大きければ(ステップS252;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1減らす(ステップS225)。なお、速度は、上述したように駆動部32から取得することができる。
変形例2に係る自律移動装置100は、このようにすることにより、速度に応じて間引き数を適切な値に調整することができる。この場合、速度が遅ければ取得画像の変化が小さいため、対応特徴点数は多くなると考えられ、速度が速ければ取得画像の変化が大きいため、対応特徴点数は少なくなると考えられる。したがって、直接的には速度を見て間引き数を調整しているが、間接的には変形例2も対応特徴点数に応じて間引き数を調整していると言える。
変形例2においても、第1速度閾値よりも大きい第3速度閾値(例えば10km/時)を設定しておいて、SLAM処理部11がトラッキングスレッド(図10)のステップS252の直前(又はステップS225の直後)等で速度を第3速度閾値と比較し、速度が第3速度閾値より大きく、しかも間引きデータキュー23が空で無ければ、ステップS230に飛ぶようにしてもよい。このようにすると、自己位置をロストした後だけでなく、ロストしそうな場合にも間引きデータキュー23に保存された情報に基づいて自己位置を推定することができるようになる。
(変形例3)
また、速度に関しても、変形例1のように、各間引き数に対応した閾値を設定する方法が考えられる。このような変形例3に係る自律移動装置100は、図11に示すような、各間引き数に対応した速度の範囲が設定されたテーブル(速度間引き数テーブル)を記憶部20に記憶させておく。そして、間引き数調整部12は、速度間引き数テーブルを参照して、速度がある閾値の範囲内であれば、その範囲に対応する間引き数を、間引きデータキュー23のサイズとして設定する。
変形例3では、間引きデータキュー23のサイズが、速度の大きさに対応した間引き数に素早く変更されるため、速度が急激に早くなったり遅くなったりした場合でも、できるだけ位置(姿勢)推定が失敗しないようにしつつ、間引き数を調整することができる。
また、上述の実施形態1及び各変形例は適宜組み合わせることができる。例えば、実施形態1と変形例1を組み合わせると、間引き数調整部12は、次のように間引き数を調整することができる。
‐対応特徴点数が間引き数テーブルに設定されている対応特徴点数の範囲のいずれかに含まれる場合には、その範囲に対応する間引き数を、間引きデータキュー23のサイズとして設定する。
‐対応特徴点数が間引き数テーブルに設定されている対応特徴点数の範囲のいずれにも含まれない場合には、第1閾値よりも対応特徴点数が大きければ間引きデータキュー23のサイズを1ずつ増やし(ただし最大キューサイズまで)、第2閾値よりも対応特徴点数が小さければ間引きデータキュー23のサイズを1ずつ減らす(ただし0まで)。
また、実施形態1と変形例2を組み合わせると、間引き数調整部12による間引き数の調整方法は、例えば少なくとも以下の2通りの方法が考えられる。
1つ目の方法は間引き数をできるだけ変化させる調整方法である。この場合、トラッキングスレッド(図4)のステップS222では、対応特徴点数が第1閾値より大きいか否かの判定と速度が第1速度閾値未満か否かの判定の論理和を判定する。対応特徴点数が第1閾値より大きいか又は速度が第1速度閾値より小さければ(ステップS222;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1増やす(ステップS223)。また、トラッキングスレッド(図4)のステップS224では対応特徴点数が第2閾値未満か否かの判定と速度が第2速度閾値より大きいか否かの判定の論理和を判定する。対応特徴点数が第2閾値未満か又は速度が第2速度閾値より大きければ(ステップS224;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1減らす(ステップS225)。
2つ目の方法は間引き数をできるだけ変化させない調整方法である。この場合、トラッキングスレッド(図4)のステップS222では、対応特徴点数が第1閾値より大きいか否かの判定と速度が第1速度閾値未満か否かの判定の論理積を判定する。対応特徴点数が第1閾値より大きくかつ速度が第1速度閾値より小さければ(ステップS222;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1増やす(ステップS223)。また、トラッキングスレッド(図4)のステップS224では対応特徴点数が第2閾値未満か否かの判定と速度が第2速度閾値より大きいか否かの判定の論理積を判定する。対応特徴点数が第2閾値未満でかつ速度が第2速度閾値より大きければ(ステップS224;Yes)、間引き数調整部12は、間引きデータキュー23のサイズを1減らす(ステップS225)。
同様に、実施形態1と変形例3を組み合わせることもできるし、変形例1と変形例3を組み合わせることもできる。対応特徴点数だけに頼って間引き数を調整すると、特徴点の対応が間違っていた場合に問題が生じる可能性があるが、上述のように変形例2や変形例3を組み合わせて速度の情報も用いることで、状況に応じて間引き数の調整をさらに適切に行うことできるようになる。
なお、上述の実施形態1及び変形例2の説明において、間引き数調整部12は、間引きデータキュー23のサイズを1ずつ増減していたが、増減する値は任意である。例えば2ずつ増減してもよいし、増やす時は2ずつ増やし減らす時は3ずつ減らす等にしてもよい。また、間引き数テーブルのような形で、間引き数の値の代わりに増減値を設定し、対応特徴点数の大きさに応じて増減値を変化させてもよい。
また、自律移動装置100の各機能は、通常のPC(Personal Computer)等のコンピュータによっても実施することができる。具体的には、上記実施形態では、自律移動装置100が行うSLAM処理等のプログラムが、記憶部20のROMに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical Disc)、メモリカード、USB(Universal Serial Bus)メモリ等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成してもよい。
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
(付記1)
画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
画像を逐次撮影する撮像部と、
制御部と、
を備え、
前記制御部は、
前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
前記撮像部で撮影された画像に含まれる特徴点を抽出し、
前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する、
自律移動装置。
(付記2)
前記制御部は、
前記対応特徴点数が第1閾値より大きければ前記間引き数を増加させ、
前記対応特徴点数が第2閾値より小さければ前記間引き数を減少させる、
付記1に記載の自律移動装置。
(付記3)
前記記憶部には前記対応特徴点数の大きさの範囲に対応する間引き数が設定された間引き数テーブルが記憶されており、
前記制御部は、前記間引き数テーブルを参照し、前記間引き数を前記対応特徴点数の大きさに対応する間引き数に設定する、
付記1又は2に記載の自律移動装置。
(付記4)
前記制御部は、
自律移動装置が移動する速度を取得し、
前記速度が第1速度閾値より小さければ前記間引き数を増加させ、
前記速度が第2速度閾値より大きければ前記間引き数を減少させる、
付記1から3のいずれか1つに記載の自律移動装置。
(付記5)
前記制御部は、
自律移動装置が移動する速度を取得し、
前記記憶部に記憶された前記速度の範囲に対応する間引き数が設定された速度間引き数テーブルを参照し、前記間引き数を前記速度に対応する間引き数に設定する、
付記1から4のいずれか1つに記載の自律移動装置。
(付記6)
前記制御部は、
前記間引き画像の情報も前記記憶部に保存し、
前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定する、
付記1から5のいずれか1つに記載の自律移動装置。
(付記7)
前記制御部は、
前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定することに成功したら、前記記憶部に保存された前記間引き画像の情報を破棄する、
付記6に記載の自律移動装置。
(付記8)
逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動方法であって、
前記逐次撮影した画像から所定の間引き数の間引き画像を間引いた画像の情報を用いて自己位置を推定し、
状況に応じて前記間引き数を調整する、
自律移動方法。
(付記9)
逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置のコンピュータに、
前記逐次撮影した画像から所定の間引き数の間引き画像を間引いた間引かれた画像と前記間引き画像とをそれぞれ記憶部に保存し、
前記間引かれた画像の情報を用いて自己位置を推定し、
状況に応じて前記間引き数を調整し、
前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報を用いて自己位置を推定する、
処理を実行させるためのプログラム。
10…制御部、11…SLAM処理部、12…間引き数調整部、13…間引きデータ破棄部、14…移動制御部、20…記憶部、21…フレームDB、22…マップ点DB、23…間引きデータキュー、31…撮像部、32…駆動部、33…通信部、100…自律移動装置

Claims (10)

  1. 画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
    画像を逐次撮影する撮像部と、
    制御部と、
    を備え、
    前記制御部は、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
    前記撮像部で撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    前記速度が第1速度閾値より小さければ前記間引き数を増加させ、
    前記速度が第2速度閾値より大きければ前記間引き数を減少させる、
    ことを特徴とする自律移動装置。
  2. 画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
    画像を逐次撮影する撮像部と、
    制御部と、
    を備え、
    前記制御部は、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
    前記撮像部で撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    予め前記記憶部に記憶された前記速度の範囲に対応する間引き数が設定された速度間引き数テーブルを参照し、前記間引き数を前記速度に対応する間引き数に設定する、
    ことを特徴とする自律移動装置。
  3. 画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置であって、
    画像を逐次撮影する撮像部と、
    制御部と、
    を備え、
    前記制御部は、
    前記逐次撮影された画像から所定の間引き数の間引き画像の情報と、前記逐次撮影された画像から前記間引き画像を間引いた画像の情報と、を記憶部に保存し、
    前記撮像部で撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整し、
    前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定する、
    ことを特徴とする自律移動装置。
  4. 前記制御部は、
    前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定することに成功したら、前記記憶部に保存された前記間引き画像の情報を破棄する、
    ことを特徴とする請求項に記載の自律移動装置。
  5. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置が実行する自律移動方法であって、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    前記速度が第1速度閾値より小さければ前記間引き数を増加させ、
    前記速度が第2速度閾値より大きければ前記間引き数を減少させる、
    ことを特徴とする自律移動方法。
  6. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置が実行する自律移動方法であって、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画像の情報を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    予め前記記憶部に記憶された前記速度の範囲に対応する間引き数が設定された速度間引き数テーブルを参照し、前記間引き数を前記速度に対応する間引き数に設定する、
    ことを特徴とする自律移動方法。
  7. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置が実行する自律移動方法であって、
    前記逐次撮影された画像から所定の間引き数の間引き画像の情報と、前記逐次撮影された画像から前記間引き画像を間引いた画像の情報と、を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整し、
    前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定する、
    ことを特徴とする自律移動方法。
  8. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置のコンピュータに、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画の情報を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    前記速度が第1速度閾値より小さければ前記間引き数を増加させ、
    前記速度が第2速度閾値より大きければ前記間引き数を減少させる、
    処理を実行させるためのプログラム。
  9. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置のコンピュータに、
    前記自律移動装置が移動する速度を取得し、
    前記逐次撮影された画像から所定の間引き数の間引き画像を間引いた画の情報を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整する際、
    予め前記記憶部に記憶された前記速度の範囲に対応する間引き数が設定された速度間引き数テーブルを参照し、前記間引き数を前記速度に対応する間引き数に設定する、
    処理を実行させるためのプログラム。
  10. 逐次撮影した画像を用いて地図の作成及び自己位置の推定を行って移動する自律移動装置のコンピュータに、
    前記逐次撮影された画像から所定の間引き数の間引き画像の情報と、前記逐次撮影された画像から前記間引き画像を間引いた画の情報と、を記憶部に保存し、
    前記撮影された画像に含まれる特徴点を抽出し、
    前記記憶部に保存された画像の情報に含まれる特徴点と、前記撮影された画像から抽出した特徴点と、の対応を取得して自己位置を推定し、
    前記推定の際に取得した前記対応する特徴点の数である対応特徴点数に応じて前記間引き数を調整し、
    前記自己位置の推定に失敗したら前記記憶部に保存された前記間引き画像の情報に含まれる特徴点の情報を用いて自己位置を推定する、
    処理を実行させるためのプログラム。
JP2018187202A 2018-10-02 2018-10-02 自律移動装置、自律移動方法及びプログラム Active JP7225647B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018187202A JP7225647B2 (ja) 2018-10-02 2018-10-02 自律移動装置、自律移動方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018187202A JP7225647B2 (ja) 2018-10-02 2018-10-02 自律移動装置、自律移動方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020057187A JP2020057187A (ja) 2020-04-09
JP7225647B2 true JP7225647B2 (ja) 2023-02-21

Family

ID=70107357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018187202A Active JP7225647B2 (ja) 2018-10-02 2018-10-02 自律移動装置、自律移動方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7225647B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115963824A (zh) * 2022-12-23 2023-04-14 美的集团(上海)有限公司 目标跟随方法及装置、机器人和可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014192061A1 (ja) 2013-05-27 2014-12-04 パイオニア株式会社 画像処理装置、画像処理方法及び画像処理プログラム
JP2017167625A (ja) 2016-03-14 2017-09-21 カシオ計算機株式会社 自律移動装置、自律移動システム、自律移動方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014192061A1 (ja) 2013-05-27 2014-12-04 パイオニア株式会社 画像処理装置、画像処理方法及び画像処理プログラム
JP2017167625A (ja) 2016-03-14 2017-09-21 カシオ計算機株式会社 自律移動装置、自律移動システム、自律移動方法及びプログラム

Also Published As

Publication number Publication date
JP2020057187A (ja) 2020-04-09

Similar Documents

Publication Publication Date Title
JP6323439B2 (ja) 自律移動装置、自律移動方法及びプログラム
CN106780608B (zh) 位姿信息估计方法、装置和可移动设备
CN110850863B (zh) 自主移动装置、自主移动方法以及存储介质
JP4644248B2 (ja) 多重視野特徴記述子を用いた同時位置決め及びマッピング
US10108199B2 (en) Autonomous movement device, autonomous movement method and non-transitory recording medium
US9442564B1 (en) Motion sensor-based head location estimation and updating
Lim et al. Monocular localization of a moving person onboard a quadrotor mav
CN110874100A (zh) 用于使用视觉稀疏地图进行自主导航的系统和方法
JP6187623B1 (ja) 自律移動装置、自律移動方法及びプログラム
CN107053166B (zh) 自主移动装置、自主移动方法以及存储介质
Stavens et al. Unsupervised learning of invariant features using video
JP2017167625A (ja) 自律移動装置、自律移動システム、自律移動方法及びプログラム
Elinas et al. σMCL: Monte-Carlo Localization for Mobile Robots with Stereo Vision.
JP7225647B2 (ja) 自律移動装置、自律移動方法及びプログラム
CN113984068A (zh) 定位方法、定位装置和计算机可读存储介质
JP2021144359A (ja) 学習装置、推定装置、学習方法、及びプログラム
US10074187B2 (en) Image recognition system and semiconductor integrated circuit
JP7067130B2 (ja) 自律移動装置、メモリ整理方法及びプログラム
JP2018092682A (ja) 自律移動装置、自律移動方法及びプログラム
JP2018156538A (ja) 自律移動装置、画像処理方法及びプログラム
JP7153505B2 (ja) 移動体
CN110580737B (zh) 图像处理方法、系统以及具有存储功能的装置
Hofmeister et al. A comparison of efficient global image features for localizing small mobile robots
CN113587916B (zh) 实时稀疏视觉里程计、导航方法以及系统
JP7283734B2 (ja) 追跡装置、追跡方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230123

R150 Certificate of patent or registration of utility model

Ref document number: 7225647

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150