(58)【調査した分野】(Int.Cl.,DB名)
前記教示走行モードにおいて、前記教示データ作成部は、所定のタイムスケジュール毎に、前記環境地図上の自己位置と姿勢とを前記通過点データとして、前記障害物の位置情報を取得した時刻に対応させる、請求項1に記載の自律移動体。
前記再現走行モードにおいて、前記地図作成部は、所定のタイムスケジュール毎に、現在の通過点よりも先の時刻に対応する前記環境地図復元用データを読み出して、読み出した環境地図復元用データに基づいて既に作成した環境地図を更新する、請求項1又は2に記載の自律移動体。
前記障害物情報取得部により取得された障害物の位置情報に基づいて局所地図を作成し、前記更新された環境地図と前記作成された局所地図とを比較するマップマッチング部をさらに有し、
前記地図作成部は、前記マップマッチング部の比較結果に応じて、前記環境地図上の自己位置と姿勢及び前記環境地図上の自己位置に対応する前記走行スケジュールの中の通過点データを推定する、請求項3に記載の自律移動体。
【発明を実施するための形態】
【0017】
(1)概略構成
(1−1)構成
以下、図面を参照して本発明の実施形態について詳細に説明する。なお、各図において、同一要素には同一符号を付して重複する説明を省略する。
【0018】
図1は、本発明の一実施形態による自律移動体の概略構成を示すブロック図である。
自律移動体1は、走行車本体内に設けられる制御部11、測距センサ31、操作部32、表示部33、走行部27を備えている。
【0019】
測距センサ31は、自律移動体1の走行方向前側にある障害物を検出するセンサである。測距センサ31は、例えば、レーザ発振器によりパルス発振されたレーザ光を目標物に照射し、目標物から反射した反射光をレーザ受信器により受信することにより、目標物までの距離を算出するレーザレンジファインダ(LRF:Laser Range Finder)である。測距センサ31は、照射するレーザ光を回転ミラーを用いて所定の角度で扇状にレーザ光を操作することができる。このような測距センサ31は、自律移動体1の後方にも配置することができる。
【0020】
操作部32は、自律移動体1を手動操作により走行させる際に、操作者が操作するユーザインターフェイスであって、走行速度の指示を受け付けるスロットル、走行方向の指示を受け付けるハンドルなどを備える。
表示部33は、現在の走行状況に関する情報、その他の各種情報を表示するものであって、液晶ディスプレイ、LEDランプなどで構成される。
走行部27は、走行経路を走行するための複数の走行車輪(図示せず)を備え、これら走行車輪を駆動するためのアクチュエータとしての複数の走行モータ(図示せず)を備えている。
【0021】
制御部11は、CPU、RAM、ROMを備えるコンピュータであり、所定のプログラムを実行することで走行制御を行う。
制御部11は、障害物情報取得部21、地図作成部22、自己位置推定部23、教示データ作成部24、記憶部25、走行制御部26を備える。
【0022】
障害物情報取得部21は、測距センサ31の検出信号に基づいて、自機の周囲に存在する障害物の位置情報を取得する。
地図作成部22は、障害物情報取得部21により取得した障害物の位置情報に基づいて、自律移動体1の走行経路を含む環境地図をグローバルマップとして作成する。
【0023】
自己位置推定部23は、グローバルマップ上の自己位置を推定する。
走行制御部26は、入力される走行命令を解釈し、アクチュエータの制御量を生成して走行部27に入力する。
教示データ作成部24は、通過時刻と通過時刻に対応する通過点データの集合とからなる走行スケジュールを作成する。
記憶部25は、前述の走行スケジュールと、環境地図復元用データとを記憶する。環境地図復元用データとは、自機の周囲における障害物の位置情報を取得した時刻に対応させてなるデータであり、地図作成部22によって作成される。
【0024】
(1−2)教示走行モード
この自律移動体1は、操作者の手動操作に基づいて走行駆動する教示走行モードを実行する。教示走行モードでは、走行開始位置から走行終了位置までの間、操作者の手動操作による走行命令を操作部32を介して受け付けて、走行制御部26によりアクチュエータの制御量を生成する。その結果、走行部27により走行が実行される。
この時、所定のタイムスケジュール毎に、障害物情報取得部21が、測距センサ31からの出力信号に基づいて、障害物の位置情報を取得する。
自己位置推定部23は、所定のタイムスケジュール毎に、走行部27による移動量に基づいて自己位置及び姿勢を推定し、さらにグローバルマップと障害物情報取得部21により取得した障害物の位置情報に基づいて、推定した自己位置の補正を行う。
教示データ作成部24は、グローバルマップ上の自己位置及び姿勢を通過点データとし、それに通過時刻に対応させた走行スケジュールを、記憶部25に記憶させる。
【0025】
(1−3)再現走行モード
自律移動体1は、記憶部25に記憶された走行スケジュールに基づいて、自律走行を行う再現走行モードを実行する。
再現走行モードでは、所定のタイムスケジュール毎に以下の動作が実行される。最初に、自己位置推定部23がグローバルマップ上の自己位置を推定し、次に、障害物情報取得部21が自機の周囲における障害物の位置情報を取得する。さらに地図作成部22は、推定された自己位置に基づいて、記憶部25に記憶された環境地図復元用データを読み出してグローバルマップを更新する。そして、走行制御部26が、更新されたグローバルマップ上を走行スケジュールに沿って走行するようにアクチュエータの制御量を作成して、それを走行部27に入力する。
【0026】
(2)機能ブロック
本発明の第1実施形態による自律移動体を以下に説明する。
図2は、本発明の第1実施形態が採用される清掃用ロボットの制御ブロック図である。
清掃用ロボット40は、自律移動体1と、スロットル42、清掃部ユーザインターフェイス43を備える。清掃用ロボット40は、さらに、清掃部(図示せず)を有している。清掃部は、自律移動体1の下部に設けられており、自律移動体1の移動と共に床面を清掃するための装置である。
【0027】
スロットル42は、
図1の操作部32に対応するものであり、操作者の手動操作による指示入力を受け付ける。スロットル42は、軸周りの回転角度により制御の指示入力を受け付けるスロットルグリップを左右独立して設けることができる。また、スロットル42は、前進速度を受け付けるスロットルグリップと、操舵方向の指示を受け付けるハンドルの組合せとすることも可能である。さらに、スロットル42は、スロットルレバーやその他の入力手段を組み合わせたものとすることができる。
【0028】
清掃部ユーザインターフェイス43は、清掃部(図示せず)による清掃動作の指示を操作者から受け付けるものであり、例えば、操作ボタン、タッチパネル、その他操作スイッチの組合せで構成できる。
【0029】
自律移動体1は、コントロールボード51、ブレーカ52、前方レーザレンジセンサ53、後方レーザレンジセンサ54、バンパースイッチ55、非常停止スイッチ56、スピーカ57、走行部27を備える。
【0030】
ブレーカ52は、主電源スイッチであって、操作者の操作に基づいて、自律移動体1の各部にバッテリ(図示せず)からの電源電圧供給のオン、オフを行う。
前方レーザレンジセンサ53は、自律移動体1の前方に位置する障害物の位置情報を検出するものであり、所定の角度範囲で水平方向にレーザ光を照射して、障害物から反射される反射光を受信して、自機から障害物までの距離を測定する。
後方レーザレンジセンサ54は、自律移動体1の後方に位置する障害物の位置情報を検出するものであり、所定の角度範囲で水平方向にレーザ光を照射して、障害物から反射される反射光を受信して、自機から障害物までの距離を測定する。
【0031】
バンパースイッチ55は、自律移動体1の車体外周に取り付けられた感圧スイッチとすることができ、障害物に接触したことを検出して、検出信号を出力する。
非常停止スイッチ56は、自律移動体1の動作を緊急停止させる指示を受け付けるものであって、操作者による操作が可能なスイッチである。
スピーカ57は、自律移動体1の動作中における各種情報を音により操作者に通知する。
【0032】
コントロールボード51は、CPU、ROM、RAMを搭載する回路基板であり、制御部11、教示データ作成部24、SLAM処理部63、不揮発メモリ64、障害物情報取得部21、記憶部25、走行制御部26を含む。
【0033】
記憶部25は、各種データを記憶するものであり、教示走行モードにおいて作成された走行スケジュール及び環境地図復元用データを、時刻又は時刻に関連付けた識別子に関連付けて記憶する。
また、記憶部25は、教示データ作成部24(後述)により作成された走行スケジュールと、地図作成部22(後述)により作成された環境地図復元用データとを記憶する。
【0034】
制御部11は、コントロールボード51に搭載されるマイクロプロセッサであり、所定のプログラムを実行することにより、自律移動体1の各部の動作を制御する。
教示データ作成部24は、教示走行モードにおける通過時刻と通過時刻に対応する通過点データの集合である走行スケジュールを作成する。
【0035】
SLAM処理部63は、自己位置推定と環境地図作成を同時に行うSLAM(Simultaneous Localization and Mapping)処理を実行する機能ブロックであって、地図作成部22、自己位置推定部23、マップマッチング部73を備える。
【0036】
地図作成部22は、障害物情報取得部21により取得した障害物の位置情報に基づいて、ローカルマップ(局所地図)及びグローバルマップ(環境地図)を作成する。地図作成部22は、教示走行モードにおいて、自機の周囲に位置する障害物の位置情報を取得した時刻に対応させ、それを環境地図復元用データとして記憶部25に記憶する。また、地図作成部22は、再現走行モードにおいて、現在の通過点よりも先の時刻に対応する環境地図復元用データを記憶部25から読み出して、それに基づいてグローバルマップを更新する。
【0037】
自己位置推定部23は、前回の自己位置からの移動量を前回の自己位置に加算することで、現在の自己位置を推定する。
マップマッチング部73は、自機の周囲に位置する障害物の位置情報に基づいて作成されたローカルマップ(局所地図)を、次に地図作成部22により更新されたグローバルマップ(環境地図)と比較することで、自己位置推定部23により推定された自己位置を補正する。
【0038】
不揮発メモリ64は、主制御部61のブートプログラム、走行制御に関するプログラム、各種パラメータなどを記憶する。
障害物情報取得部21は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54の検出信号に基づいて、自機の周囲に位置する障害物の位置情報を取得する
。
【0039】
走行制御部(モーションコントローラ)26は、入力される走行命令に基づいて走行部27のアクチュエータの制御量を生成して、それを走行部27に入力する。入力される走行命令は、教示走行モードにおいては、スロットル42を介して入力される操作者からの指示入力である。また、入力される走行命令は、再現走行モードにおいては、SLAM処理部63により推定されるグローバルマップ上の自己位置、更新されたグローバルマップ及び走行スケジュールに基づいて生成される走行命令である。
走行制御部26は、演算部81、判断部82、移動制御部83を備えている。判断部82は、入力された走行命令を解釈する。演算部81は、判断部82により解釈された走行命令に基づいて、走行部27のアクチュエータの制御量を算出する。移動制御部83は、演算部81により算出された制御量を走行部27に出力する。
【0040】
走行部27は、2つの走行車輪(図示せず)に対応して、一対のモータ93、94を有し、それぞれの回転位置を検出するエンコーダ95、96と、モータ駆動部91、92を備えている。
モータ駆動部(モータドライバ)91は、走行制御部26から入力される制御量と、エンコーダ95により検出されるモータ93の回転位置とに基づいて、モータ93をフィードバック制御する。モータ駆動部92は、同様に、走行制御部26から入力される制御量と、エンコーダ96により検出されるモータ94の回転位置とに基づいて、モータ94をフィードバック制御する。
【0041】
教示データ作成部24、障害物情報取得部21、走行制御部26、及びSLAM処理部63は、それぞれ制御部11がプログラムを実行することにより実現される機能ブロックとすることができ、また、それぞれ独立した集積回路で構成することも可能である。
【0042】
(3)制御動作
図3は、自律移動体の制御動作の概略を示す制御フローチャートである。以下、
図2における制御部11が所定のプログラムを実行することにより、教示データ作成部24、SLAM処理部63、障害物情報取得部21、及び走行制御部26の各機能ブロックを実現するものとして説明する。
【0043】
ステップS31において、制御部11は、操作者によりモード選択が行われたか否かを判別する。具体的には、操作者による操作部32の操作により指示入力を受け付けた場合、又はリモコンからの指示入力信号を受信した場合に、制御部11はステップS32に移行する。
【0044】
ステップS32において、制御部11は選択されたモードが教示走行モードであるか否かを判別する。制御部11は、教示走行モードを選択する指示入力を受け付けたと判断した場合、ステップS33に移行し、そうでない場合にはステップS34に移行する。
ステップS33において、制御部11は教示走行モードを実行し、その後、ステップS36に移行する。
ステップS34において、制御部11は選択されたモードが再現走行モードであるか否かを判別する。制御部11は、再現走行モードを選択する指示入力を受け付けたと判断した場合、ステップS35に移行する。
【0045】
ステップS35において、制御部11は再現走行モードを実行し、その後、ステップS36に移行する。
ステップS36において、制御部11は、終了指示を受け付けたか否か、もしくは教示された走行スケジュールを終えたか否かを判別する。具体的には、制御部11は、操作者による操作部32の操作により処理終了する旨の指示入力があった場合、リモコンにより処理終了する旨の指示入力信号を受信した場合、あるいは、教示走行モードにより作成された走行スケジュールを終了したと判断した場合には、処理を終了し、そうでない場合には、ステップS31に移行する。
【0046】
(3−1)教示走行モード
図4は、教示走行モードにおける自律移動体の制御フローチャートである。
ステップS40において、制御部11は、初期設定を行う。具体的に、制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54の検出信号に基づいて、自機の周囲に位置する障害物の位置情報を取得し、これに基づいて自機の周囲におけるローカルマップを作成する。
【0047】
図5は、レーザレンジセンサの走査範囲の一例を示す説明図である。
自律移動体1は、前端部に前方レーザレンジセンサ53が取り付けられており、パルス発振されたレーザ光を回転ミラーにより扇状に走査して、そして自律移動体1の前方に位置する障害物から反射する反射光を受信する。
図5に示す例では、前方レーザレンジセンサ53は、前方約180度の走査領域101にレーザ光を送信する。前方レーザレンジセンサ53は、障害物から反射した反射光を所定周期で受信し、送信したレーザ光の発信パルスと受信した反射光の受信パルスとを比較して、障害物までの距離を検出する。
【0048】
自律移動体1には、後端部に後方レーザレンジセンサ54が取り付けられている。後方レーザレンジセンサ54は、前方レーザレンジセンサ53と同様に、パルス発振されたレーザ光を回転ミラーにより扇状に走査して、その結果、自律移動体1の後方に位置する障害物から反射する反射光を受信する。
図5に示す例では、後方レーザレンジセンサ54は、後方約180度の走査領域103にレーザ光を送信する。ただし、自律移動体1は、後述する教示走行モードにおいて、障害物の検出を行わないマスク領域105を設け、第1走査領域115及び第2走査領域117に位置する障害物の位置情報を検出する。なお、マスク領域150は、自律移動体1の後方に位置する操作者に対応させて設けられている。
【0049】
図6は、レーザレンジセンサの走査範囲の他の例を示す説明図である。
図5に示す例では、前方レーザレンジセンサ53及び後方レーザレンジセンサ54が、約180度の角度でレーザ光の走査を行っているのに対して、
図6に示す例では、それぞれ約240度の角度でレーザ光の走査を行っている点で異なる。
具体的には、前方レーザレンジセンサ53による走査領域101は前方240度の角度範囲である。また、後方レーザレンジセンサ54による走査領域103は後方240度の角度範囲であり、マスク領域105を除く第1走査領域115及び第2走査領域117に位置する障害物の位置情報を検出する。
【0050】
図7は、レーザレンジセンサにより検出した障害物の位置情報の一例を示すテーブルである。
前方レーザレンジセンサ53及び後方レーザレンジセンサ54は、所定の走査領域にレーザ光を照射し、さらに障害物からの反射光を受信して、その後に照射したレーザ光の発信パルスと受信した反射光の受信パルスとに基づいて、障害物までの距離Rを出力値として算出する。また、前方レーザレンジセンサ53及び後方レーザレンジセンサ54は、障害物までの距離Rを得た時のセンサ角度Nも出力する。
制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54の出力を、所定の角度毎に取得し、それに基づいてセンサ角度Nと障害物までの距離Rとを対応付けた位置情報テーブルを作成する。
図7に示す位置情報テーブルは、0.72度毎にセンサ出力を取得して障害物の位置情報テーブルとしたものである。
【0051】
制御部11は、センサ座標系によるローカルマップの作成処理を実行する。具体的には、制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により取得した障害物の位置情報テーブル(例えば、
図7に示す障害物の位置情報テーブル)に基づいて、センサを中心とした座標系における自己位置近傍の環境地図であるローカルマップを作成する。
【0052】
例えば、
図5及び
図6に示すように、制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により走査される走査領域101、103内を、所定の面積のグリッドに分割し、次に、障害物の位置情報テーブルに基づいて、各グリッドにおける障害物存在確率を算出する。
【0053】
図8は、センサを中心とした座標系でのローカルマップの説明図である。
制御部11は、前方レーザレンジセンサ53又は後方レーザレンジセンサ54のセンサ中心を原点132とし、障害物の位置情報テーブルのセンサ角度Nに対応する走査線131上のグリッドに対して障害物存在確率を決定する。ここで、障害物が存在するグリッドの障害物存在確率を「1.0」とし、障害物が存在するか否か不明であるグリッドの障害物存在確率を「0」とし、障害物と原点との間に位置するグリッドの障害物存在確率を「−1+(r/R)
2=−1.0〜0」とする。
【0054】
制御部11は、走査線131上であって、原点132からの距離rが障害物までの距離Rと一致するグリッドを検出グリッド133として、そのグリッドの障害物存在確率を「1.0」とする。
制御部11は、走査線131上であって、原点132からの距離rが障害物までの距離R未満にあるグリッドには障害物が存在しないと判断する。
図8において、原点132と検出グリッド133との間に位置する中間グリッド134〜138の障害物存在確率を「−1+(r/R)
2=−1.0〜0」とする。
制御部11は、走査線131上であって、原点132からの距離rが障害物までの距離Rよりも遠くにあるグリッドには、障害物が存在するか否かは不明であると判断して、不明グリッド139の障害物存在確率を「0」とする。
【0055】
このことにより、
図5又は
図6に示すように、前方レーザレンジセンサ53及び後方レーザレンジセンサ54を中心として、障害物存在確率が「1.0」である検出グリッド107と、障害物存在確率が「−1.0〜0」である中間グリッド109と、障害物存在確率が「0」である不明グリッド111とを含むセンサ座標系によるローカルマップが作成される。
ただし、後方レーザレンジセンサ54のマスク領域105に位置するグリッドは、不明グリッド113として障害物存在確率が「0」に設定される。
図5及び
図6に示す例では、自律移動体1の前方に位置して直線状に検出グリッド107が存在しており、したがって走行経路を構成する壁面又は大型の障害物が存在すると推定することができる。
このようにして、センサ座標系のローカルマップ作成処理では、前方レーザレンジセンサ53及び後方レーザレンジセンサ54を中心とする周囲に位置する各グリッドの障害物存在確率を算出して、これをセンサ座標系のローカルマップとして出力する。
【0056】
ステップS40における初期設定では、前述したように、制御部11では、障害物情報取得部21が、前方レーザレンジセンサ53及び後方レーザレンジセンサ54の検出信号から障害物の位置情報を取得し、さらに、地図作成部22が自機の周囲に位置するローカルマップを作成する。制御部11は、障害物の位置情報を取得した時刻(t1)における自己位置の座標と姿勢を含む自己位置(x1,y1,θ1)が絶対座標系の原点(あるいは所定の座標)になるように、ローカルマップをグローバルマップとして置き換える。
【0057】
この時、制御部11は、グローバルマップにおける現在の自己位置(x1,y1,θ1)が走行開始位置として適切であるか否かの判断を行う。例えば、自己位置の周辺に障害物がほとんど存在しない場合又は単純形状が連続する場合には、再現走行モードにおいて走行開始位置を判定することが困難であることから、制御部11は表示部(図示せず)又はスピーカ57を通じて、走行開始位置として不適切である旨の通知を行って、操作者に走行開始位置の変更を促す。
【0058】
制御部11は、自己位置(x1,y1,θ1)が走行開始位置として適切であると判断した場合には、障害物情報取得部21により取得した障害物の位置情報を時刻(t1)と関係付けて環境地図復元用データとして、それを記憶部25に記憶させる。また、制御部11は、自己位置の座標(x1,y1)と自機の姿勢(θ1)及び時刻(t1)を関係付けた通過点データ(x1,y1,θ1,t1)を走行スケジュールとして、記憶部25に記憶させる。
さらに、制御部11は、地図作成部22により作成された自己位置(x1,y1,θ1)を中心としたグローバルマップの一部を、記憶部25に一時的に記憶させる。
【0059】
ステップS41において、制御部11は、操作者が入力した走行命令に基づいて、走行部27のアクチュエータの制御量を作成し、それを走行部27に出力する。教示走行モードでは、制御部11は、操作者がスロットル42を操作することにより入力する走行速度及び操舵に関する指示入力を受け付け、走行経路内における走行制御を行う。操作者による指示入力は、リモコンによる無線での指示入力信号を受信する方式でもよい。
【0060】
ステップS42において、制御部11はデータ計測処理を実行する。具体的には、制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により、レーザ光を照射し、さらに障害物から反射した反射光を受信することで、障害物の距離及び方向に関する障害物情報を得る。
また、制御部11は、さらに自律移動体1の一定時間内の移動量に関する情報を取得する。具体的には、制御部11は、走行部27のエンコーダ95、96から、それぞれ対応するモータ93、94の回転位置に関する情報を取得し、一定時間内の移動量を算出する。
【0061】
一定時間内の移動量は、自律移動体1の前回の計測時点(t−1)の2次元座標(x(t−1),y(t−1))からの移動量と、進行方向の変更量とを備える移動量(dx,dy,dθ)として表すことができる。
【0062】
ステップS43において、制御部11は、センサ座標系によるローカルマップの作成処理を実行する。具体的には、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により取得した障害物の位置情報テーブル(例えば、
図7に示す障害物の位置情報テーブル)に基づいて、センサを中心とした座標系における自機の周囲に位置する所定範囲を所定の大きさのグリッドに分割し、さらに各グリッドに算出された障害物存在確率を対応付けたローカルマップを作成する。
【0063】
ステップS44において、制御部11は、自己位置推定部23により、時刻(t−1)における自己位置に時刻(t−1)〜時刻(t)間の移動量(dx,dy,dθ)を加算することで時刻(t)の自己位置を推定する。また、制御部11は、自己位置のパラメータとして、2次元座標(x,y)と進行方向(θ)を有する3次元のグリッド空間(x,y,θ)を想定し、さらに移動前後における各グリッドの自己位置の確率分布を算出することで、マップマッチングを行う。
【0064】
図9は、自己位置推定処理の制御フローチャートである。
ステップS91において、制御部11は、事前確率計算処理を実行する。
制御部11は、現在時刻である時刻(t)を用いて、時刻(t−1)の事後確率分布と、時刻(t−1)〜時刻(t)間の移動量(dx,dy,dθ)とに基づいて、時刻(t)における自己位置の事前確率分布を算出する。
【0065】
図10は、事後確率分布の一例を示す説明図であり、
図11は、事前確率分布の一例を示す説明図である。
制御部11は、
図10に示す時刻(t−1)の事後確率分布に、時刻(t−1)〜時刻(t)間の移動量(dx,dy,dθ)を加算して、座標をシフトさせる。
制御部11は、さらに、正規分布を畳み込み演算することによって、
図11に示すような時刻(t)における事前確率分布を得る。
制御部11は、このような事前確率計算処理を3次元グリッド空間(x,y,θ)内の各グリッドに対して実行することにより、車輪のスリップなどを考慮しながら、エンコーダ95、96から取得した移動量(dx,dy,dθ)を加えた自己位置の確率分布を更新する。
【0066】
ステップS92において、制御部11は尤度計算処理を実行する。
図12は、尤度計算処理の制御ブローチャートである。
ステップS121において、制御部11は、仮の自己位置座標を抽出する。具体的には、制御部11は、事前確率分布処理により算出された時刻(t)における事前確率のうち閾値を超える座標を1つ抽出し、これを仮の自己位置座標とする。制御部11は、時刻(t)の事前確率分布、ローカルマップ、及び作成中のグルーバルマップに基づいて、抽出した仮の自己位置座標における尤度を算出する。
【0067】
ステップS122において、制御部11は、座標変換処理を実行する。具体的には、制御部11は、センサ座標系によるローカルマップを、仮の自己位置座標に基づいて、絶対座標系のローカルマップに変換する。
制御部11は、事前確率分布に基づいて抽出された仮の自己位置座標を(x,y,θ)とし、センサ座標系によるローカルマップの各グリッドの座標を(lx,ly)として、絶対座標系のローカルマップの各グリッドの座標(gx,gy)を数式1により算出する。
【数1】
【0068】
ステップS123において、制御部11は、マップマッチング処理を実行する。
制御部11は、作成中のグローバルマップと絶対座標系のローカルマップとのマップマッチング処理を行い、それに基づいて絶対座標系のローカルマップ上における各グリッドの障害物存在確率を算出する。
制御部11は、絶対座標系のローカルマップにおいて、障害物存在確率「1.0」のグリッドがN個存在した場合、i番目のグリッドの座標を(gx_occupy(i),gy_occupy(i))とし、グローバルマップ上の座標(gx_occupy(i),gy_occupy(i))における障害物存在確率をGMAP(gx_occupy(i),gy_occupy(i))として、以下の数式2により一致度を表すスコアsを算出する。
【数2】
制御部11は、複数の仮の自己位置に対してそれぞれスコアsを算出して、それを自己位置の尤度分布とする。
図13は、尤度計算処理により得られた尤度分布の一例を示す説明図である。
【0069】
ステップS93において、制御部11は、事後確率計算処理を実行する。具体的に、制御部11は、絶対座標系のローカルマップの各グリッドに対して、時刻(t)における事前確率分布に、時刻(t)における尤度分布を掛けることにより、時刻(t)における事後確率を算出する。
【0070】
図14は、事後確率計算処理により得られた事後確率分布の一例を示す説明図である。
図14では、
図11に示す時刻(t)における事前確率分布と、
図13に示す時刻(t)における尤度分布とを掛けて得られた事後確率分布を示している。
制御部11は、複数の仮の自己位置に対して事後確率計算処理を実行し、その結果事後確率が最大となるものを自己位置とすることができる。
【0071】
上述のような構成とすることにより、尤度が同程度の値を持つ仮の自己位置に対して、事前確率の差を事後確率に反映させることができ、さらに、前方レーザレンジセンサ53、後方レーザレンジセンサ54と走行部27のエンコーダ95,96の出力信号に基づいてデッドレコニング(Dead−Reckoning)により、自己推定を推定することが可能となる。また、時刻(t)における事前確率計算を行う際に、時刻(t−1)の事後確率を用いていることから、走行部27における車輪(図示せず)のスリップや前方レーザレンジセンサ53、後方レーザレンジセンサ54のノイズなどの外乱要因を阻止でき、つまり自己位置を正確に推定できる。
【0072】
ステップS45において、制御部11は、障害物情報取得部21により、グローバルマップ上における現在の自己位置の周囲に位置する障害物の位置情報を取得する。
【0073】
ステップS46において、制御部11は、障害物情報取得部21により取得した障害物の位置情報を時刻に対応させて環境地図復元用データを作成し、それを記憶部25に記憶させる。
ここで、記憶部25に記載される環境地図復元用データは、グローバルマップ上の自己位置の周囲を所定面積の単位グリッドで分割し、さらに各グリッドに障害物存在確率を対応付けて、障害物の位置情報を取得した時刻(t)と関連つけたものとすることができる。
【0074】
ステップS47において、制御部11は、グローバルマップ更新処理を実行する。具体的に、制御部11は、時刻(t−1)におけるグローバルマップに対して、自己位置推定処理により推定された自己位置により座標変換を行った絶対座標系のローカルマップを足し合わせすることで、時刻(t)におけるグローバルマップを作成する。
【0075】
図15は、グローバルマップ更新処理の概念構成を示す説明図である。
図15に示す例では、自己位置近傍の4×4のグリッドを対象にしており、(a)は時刻(t−1)におけるグローバルマップ、(b)は時刻(t)における絶対座標系のローカルマップ、(c)は更新された時刻(t)におけるグローバルマップを示す。
図15に示すように、時刻(t−1)におけるグローバルマップ及び時刻(t)におけるローカルマップでは、それぞれのグリッドに障害物存在確率が記憶されている。前述したように、障害物が存在していると推定されるグリッドの障害物存在確率は「1.0」、障害物が存在していないと推定されるグリッドの障害物存在確率は「−1.0〜0」、障害物の存在が不明であるグリッドの障害物存在確率は「0」に設定されるものとする。
【0076】
グローバルマップ更新処理では、制御部11は、自己位置推定処理により推定された自己位置に基づいて、絶対座標系に変換されたローカルマップの各グリッド(
図15(b))をグローバルマップの各グリッド(
図15(a))に対応させ、各グリッドの障害物存在確率を加算する。
制御部11は、各グリッドの障害物存在確率が演算により「1.0」以上になる場合、及び「−1.0」以下になる場合には、切り捨て計算を行って、それぞれ「1.0」、「−1.0」とする。このことにより、繰り返し障害物が存在すると判別されたグリッドの障害物存在確率は「1.0」に近い値となり、繰り返し障害物が存在しないと判別されたグリッドの障害物存在確率は「−1.0」に近い値となる。
このようにして、制御部11は、
図15(c)に示す時刻(t)におけるグローバルマップの各グリッドの障害物存在確率を算出することで、グローバルマップを更新する。
【0077】
時刻(t)におけるグローバルマップは、少なくとも次の時刻(t+1)において、制御部11が自己位置推定処理を実行するために必要な範囲を含むものであり、一時的に記憶部25に記憶される。
このグローバルマップ更新処理では、グローバルマップの各グリッドの障害物存在確率が、絶対座標系のローカルマップの対応する各グリッドの障害物存在確率を加算することで更新するので、車輪のスリップやセンサの計測誤差に基づくノイズの影響を極力少なくすることができる。
【0078】
ステップS48において、制御部11は、自律移動体1が通過後の通過点におけるグローバルマップを削除する。
前述したように、時刻(t)において更新されるグローバルマップが本当に必要なのは、次の時刻(t+1)において、制御部11が自己位置推定処理を実行するために必要な範囲だけである。したがって、次の時刻(t+1)において、制御部が自己位置推定処理を実行するために必要でない範囲は、ステップS48において削除される。このため、環境地図において、環状経路が閉じないという問題を考慮する必要がなくなる。
【0079】
図16は、走行スケジュールの説明図、
図17は、グローバルマップの更新・削除の説明図、
図18は、環状の走行経路の説明図である。
図16に示すように、教示走行モードにおいて、自律移動体1が操作者の手動操作に基づいて、環状の走行経路1601上の通過点1611−1・・・に沿って走行するものとする。
【0080】
図17に示すように、時刻(t1)における通過点1611−1において、制御部11は自己位置の周囲に位置する所定の範囲でローカルマップ1712−1を作成し、これによりグローバルマップを更新する。同様にして、時刻(tn)における通過点1611−nにおいて、制御部11は自己位置の周囲に位置する所定の範囲でローカルマップ1712−nを作成し、これによりグローバルマップを更新する。この時、制御部11は、グローバルマップのうち、現在の通過点1611−nから一定の距離が離れた領域のデータを削除する。
【0081】
図18に示すように、時刻(tm)における通過点1611−mでは、ローカルマップ1712−mによりグローバルマップが更新されるが、時刻(t1)のローカルマップ1712−1により更新されるグローバルマップと重複する部分を含む。
前述したように、グローバルマップのうち、現在の自己位置から一定の距離が離れた領域を削除していることから、時刻(tm)において自律移動体1が通過点1611−mに到達した時には、時刻(t1)においてローカルマップ1712−1に基づいて更新された
グローバルマップのデータは既に削除されている。したがって、ローカルマップにより更新されるグローバルマップが、前に作成された同一座標近傍のグローバルマップと重複することが防止され、車輪のスリップやセンサの計測誤差などがあっても、環状経路が閉じないという問題を防止できる。
【0082】
ステップS49において、制御部11は、教示データ作成部24により、走行スケジュールを作成し記憶部25に記憶させる。具体的には、
図17に示すような走行経路1601上の通過点1611−1・・・に沿って走行する場合、制御部11は、時刻tにおいて走行経路1601上の通過点1611のグローバルマップ上における座標(x,y)と、自律移動体1の走行方向を示す姿勢(θ)及び時刻(t)でなる通過点データ(x,y,θ,t)を、記憶部25に記憶させる。
【0083】
所定の時間間隔(タイムスケジュール)に基づいて、時刻t1、t2・・・において、自律移動体1が通過点1611−1、1611−2・・・1611−nを通過する場合、教示データ作成部24は、第1通過点1611−1、第2通過点1611−2、・・・第n通過点1611−nにおける通過点データ(x1,y1,θ1,t1)、(x2,y2,θ2,t2)・・・(xn,yn,θn,tn)の集合でなる走行スケジュールを記憶部25に記憶させる。
【0084】
ステップS50において、制御部11は、終了指示を受け付けたか否かを判別する。具体的には、制御部11は、操作者による操作部32の操作により処理終了する旨の指示入力があった場合、又はリモコンにより処理終了する旨の指示入力信号を受信した場合には、終了処理を実行することで処理を終了し、そうでない場合には、プロセスはステップS41に移行する。
【0085】
(3−2)再現走行モード
図19は、再現走行モードにおける自律移動体の制御フローチャートである。
ステップS191において、制御部11は、データ計測処理を実行する。具体的には、制御部11は、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により、レーザ光を照射しさらに障害物から反射した反射光を受信することで、障害物の距離及び方向に関する障害物情報を得る。ここでのデータ計測処理は、教示走行モードにおけるデータ計測処理と同様であり、詳細説明は省略する。
【0086】
ステップS192において、制御部11は、センサ座標系によるローカルマップの作成処理を実行する。具体的には、前方レーザレンジセンサ53及び後方レーザレンジセンサ54により取得した障害物の位置情報テーブル(例えば、
図7に示す障害物の位置情報テーブル)に基づいて、センサを中心とした座標系における自己位置近傍の各グリッドに障害物存在確率を対応させたローカルマップを作成する。
【0087】
ステップS193において、制御部11は、自己位置推定部23により、グローバルマップ上の自己位置を推定する。自己位置の推定処理は、教示走行モードにおける自己位置の推定処理と同様に、時刻(t−1)における自己位置に時刻(t−1)〜時刻(t)間の移動量(dx,dy,dθ)を加算することで時刻(t)の自己位置として推定する。また、制御部11は、自己位置のパラメータとして、2次元座標(x,y)と進行方向(θ)を有する3次元のグリッド空間(x,y,θ)を想定した上で、移動前後における各グリッドの自己位置の確率分布を算出することでマップマッチングを行って、それにより自己位置の補正を行うことができる。
【0088】
ステップS194において、制御部11は、推定された自己位置に対応する環境地図復元用データを用いてグローバルマップを復元し、このグローバルマップと、障害物情報取得部21により取得した障害物の位置情報から作成したローカルマップとを比較することで、現在の自己位置に対応する走行スケジュール中の時刻を推定する。
ステップS194において、制御部11は、記憶部25に記憶されている走行スケジュールのうち推定した時刻に対応する通過点データを、記憶部25から読み出す。
【0089】
ステップS195において、制御部11は、推定された自己位置に対応する環境地図復元用データを用いて、グローバルマップを更新する。具体的には、既に作成されているグローバルマップの各グリッドの障害物存在確率に、復元されたグローバルマップの各グリッドの障害物存在確率を加算することで、グローバルマップの各グリッドの障害物存在確率を更新する。
【0090】
ステップ196において、制御部11は、自律移動体1が通過後の通過点におけるグローバルマップを削除する。ここでは、教示走行モードと同様に、時刻(t)においてグローバルマップを更新する際に、次の時刻(t+1)において、制御部11が自己位置推定処理を実行するために必要でない範囲が、グローバルマップから削除される。
【0091】
ステップS198において、制御部11は、走行部27のアクチュエータの制御量を作成し、それを走行部27に出力する。具体的には、制御部11は、グローバルマップ上の自己位置と、記憶部25から読み出された通過点データとに基づいて、走行スケジュールに沿うようにアクチュエータの制御量を決定し、これに基づく走行命令を走行部27に入力する。
【0092】
ステップS199において、制御部11は、再現走行モードを終了するか否かを判別する。具体的には、制御部11は、記憶部25に記憶された走行スケジュールのうち最終の通過点データに到達した場合、操作者により非常停止スイッチ56が操作された場合、バンパースイッチ55により障害物に衝突したことを検出した場合、障害物情報取得部21により検出された障害物の位置情報が所定距離以下に近接した場合などにおいて、制御部11は再現走行モードを終了すると判断する。制御部11は、再現走行モードを終了しないと判断した場合にはステップS191に移行する。
【0093】
以上のようにして、教示走行モードにおいて、グローバルマップを復元するための環境地図復元用データと、通過点データの集合である走行スケジュールとを、記憶部25に記憶させている。このことにより、再現走行モードにおいて、環境地図復元用データを用いて自己位置の周囲近傍のグローバルマップを復元して、さらに復元されたグローバルマップ上の自己位置の推定を行う。この場合に、通過した後のグローバルマップのデータは削除していることから、環状経路問題を排除することができ、つまり、車輪のスリップやセンサの計測誤差などに基づくグローバルマップのずれによる不整合を防止できる。
また、再現走行モードにおいて、走行スケジュールの通過点データに沿って走行制御を行っていることから、グローバルマップの座標系から外れて自律走行に支障を来すことがない。
【0094】
(4)実施形態の特徴
上記実施形態は、下記の構成及び機能を有している。
自律移動体1(自律移動体の一例)は、教示走行モードと、再現走行モードとを実行する。教示走行モードは、操作者の手動操作により、走行開始位置から走行終了位置まで自律移動体1を手動走行させながら、
複数の通過時刻と
複数の通過時刻における通過点データ(例えば、通過点データ(x,y,θ,t))の集合でなる走行スケジュールを作成する。再現走行モードは、走行スケジュールを再現しながら、走行開始位置から走行終了位置まで自律移動体1が自律的に走行する。
自律移動体
1は、記憶部25(記憶部の一例)、走行部27(走行部の一例)、教示データ作成部24(走行データ作成部の一例)、走行制御部26(走行制御部の一例)、障害物情報取得部21(障害物情報取得部の一例)、地図作成部22(地図作成部の一例)、自己位置推定部23(自己位置推定部の一例)を備える。記憶部25は、データを記憶する。走行部27は、制御量が入力される複数のモータ93,94(アクチュエータの一例)を有する。教示データ作成部24は、走行スケジュールを作成
して記憶部25に記憶する。走行制御部26は、走行命令を解釈してアクチュエータに入力する制御量を作成し走行部27に入力する。障害物情報取得部21は、自機の周囲に存在する障害物の位置情報を取得する。地図作成部22は、障害物情報取得部21により取得した障害物の位置情報から環境地図を作成する。自己位置推定部23は、環境地図上の自己位置を推定する。
【0095】
自律移動体は、教示走行モードにおいて、所定のタイムスケジュール毎に、
(a)走行制御部26が、操作者から入力された走行命令からモータ93,94の制御量を作成してそれを走行部27に出力し(例えば、ステップS41)、
(b)自己位置推定部23が、環境地図上の自己位置を推定し(例えば、ステップS44)、
(c)障害物情報取得部21が、自機の周囲における障害物の位置情報を取得し(例えば、ステップS45)、
(d)地図作成部22が、障害物の位置情報を取得した時刻に対応させて障害物の位置情報を環境地図復元用データとして記憶部25に記憶させ(例えば、ステップS46)、
(e)教示データ作成部24が、走行スケジュールを作成して記憶部25に記憶させる(例えば、ステップS49)。
【0096】
また、自律移動体1は、再現走行モードにおいて、所定のタイムスケジュール毎に、
(f)自己位置推定部23が、環境地図上の自己位置を推定し(ステップS193)、
(g)障害物情報取得部21が、自機の周囲における障害物の位置情報を取得し(例えば、ステップS195)、
(h)地図作成部22が、推定された自己位置に対応する環境地図復元用データを読み出して環境地図を更新し(例えば、ステップS196)、
(i)走行制御部26が、更新された環境地図上を走行スケジュールに沿って走行するようにモータ93,94の制御量を作成して走行部27に入力する(例えば、ステップS198)。
【0097】
この自律移動体1では、操作者が手動操作により自律移動体1を操作することで、環境地図復元用データを生成して記憶部25に格納している。また、自律移動体1は、再現走行モードにおいて、環境地図上の自己位置を推定して、推定された自己位置に対応する環境地図復元用データを用いて環境地図を更新しながら、走行スケジュールに沿って
走行している。このことから、操作者が環境地図の作成方法を考慮することなく、操作性を容易にし、走行経路が環状である場合であっても、車輪のスリップやセンサの計測誤差による環状経路が閉じないという問題を考慮する必要がなくなる。
【0098】
(5)他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
【0099】
(5−1)環境地図の更新・削除処理
制御部10は、環境地図を、静的環境地図と動的環境地図の2層構造で管理することが可能である。静的環境地図は、教示走行モードで作成される地図復元用データに基づいて復元することができる。また、動的環境地図は、時刻(t)の動的環境地図と、時刻(t+1)において障害物情報取得部21が取得する自己位置の周辺における障害物の位置情報に基づくローカルマップとの重ね合わせにより作成することができる。
【0100】
例えば、時刻(t)の動的環境地図の各グリッドにおける障害物存在確率を、DynamicMap(t)とし、静的環境地図の各グリッドにおける障害物存在確率を、StaticMapとする。また、時刻(t)において、静的環境地図からの障害物の配置変化を示す差分地図の各グリッドにおける障害物存在確率を、DiffMap(t)とする。
さらに、動的環境地図の各グリッドの値の範囲を決定するパラメータをP1とすると、
DynamicMap(t)=StaticMap・P1+DiffMap(t)
として算出できる。
【0101】
制御部10は、障害物情報取得部21により取得した自機の周囲に位置する障害物情報と、環境地図復元用データから復元された静的環境地図を用いて自己位置を推定し、絶対座標系のローカルマップを作成する。
時刻(t+1)における動的環境地図は、時刻(t)における動的環境地図と、時刻(t+1)におけるローカルマップとを用いて、各グリッドの障害物存在確率が算出される。絶対座標系のローカルマップにおける各グリッドの障害物存在確率をLocalMap(t+1)とすると、
DynamicMap(t+1)=DynamicMap(t)+LocalMap(t+1)
として算出できる。
【0102】
制御部10は、時刻(t+1)における動的環境地図と、静的環境地図との差分を求めて、時刻(t+1)における差分地図の各グリッドの障害物存在確率であるDiffMap(t+1)を
DiffMap(t+1)=DynamicMap(t+1)−StaticMap・P1
として作成し、これを用いて動的環境地図を更新する。
【0103】
図20は、動的環境地図の更新処理の説明図である。
図20に示す例では、自己位置近傍の4×4のグリッドを対象にしており、(a)は時刻(t)における動的環境地図、(b)は静的環境地図、(c)は時刻(t)における差分地図を示す。
図20に示すように、時刻(t)における差分地
図DiffMap(t)中の各グリッドの障害物存在確率と、静的環境地
図StaticMap中の各グリッドの障害物存在確率にパラメータP1を乗算した値とを加算して、時刻(t)における動的環境地
図DynamicMap(t)が算出される。各グリッドの障害物存在確率は、−1.0〜1.0の範囲の値であり、パラメータP1を「0.5」としている。
このことから、DynamicMap(t)=StaticMap・P1+DiffMap(t)で算出された動的環境地図の各グリッドの障害物存在確率は、
図20(c)のようになる。
【0104】
図21は、自己位置推定時における尤度計算の説明図である。
図21に示す例では、自己位置近傍の4×4のグリッドを対象にしており、(a)は絶対座標系のローカルマップ、(b)は静的環境地図、(c)は動的環境地図である。
障害物情報取得部21により取得した自機の周辺における障害物位置情報に基づいて、絶対座標系のローカルマップに変換した後の各グリッドの障害物存在確率が、
図21(a)に示される。
【0105】
絶対座標系のローカルマップにおいて、障害物存在確率が「1.0」であるグリッドがN個存在する時、i番目のグリッドの座標を(gx_occupy(i),gy_occupy(i))とする。静的環境地図の座標(gx_occupy(i),gy_occupy(i))における障害物存在確率をStaticMap(gx_occupy(i),gy_occupy(i))とし、動的環境地図の座標(gx_occupy(i),gy_occupy(i))における障害物存在確率をDynamicMap(gx_occupy(i),gy_occupy(i))とする。
【0106】
絶対座標系のローカルマップにおいて、障害物存在確率が「1.0」になるグリッドのそれぞれに対し、静的環境地図と動的環境地図のうち、障害物存在確率が高い方を用いて、以下の数式により尤度計算を行う。
【数3】
このことにより、
図21に示す例では、s=(1.0+1.0+0.3+0.3)/4=0.65として尤度を算出することができる。
【0107】
図17に示すような走行経路を走行する場合、時刻(t1)における通過点1611−1において、制御部11は自己位置の周囲に位置する所定の範囲でローカルマップ1712−1により更新された動的環境地図を作成する。同様にして、時刻(tn)における通過点1611−nにおいて、制御部11は自己位置の周囲に位置する所定の範囲でローカルマップ1712−nにより更新された部分グローバルマップを作成する。この時、制御部11は、時刻(tn−1)における通過点(図示せず)において作成された動的環境地図を削除し、さらに、時刻(tn)におけるローカルマップ1712−nを用いて動的環境地図を更新することができる。
【0108】
このように、グローバルマップとして静的環境地図と動的環境地図の2層で構成する場合にも、
図18の時刻(tm)における通過点1611−mでは、時刻(t1)において作成された動的環境地図が削除されていることから、環状経路が閉じないという問題を防止できる。
また、教示走行モードで作成された環境地図復元用データを用いて静的環境地図を復元した際に、障害物の位置情報が変化しているような場合であっても、差分地図を用いて障害物の配置の変化を検知することが可能となる。従って、自律移動体1は、走行経路上のレイアウト変更や移動体の存在に対応して、障害物との接触を回避することが可能となる。