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