(58)【調査した分野】(Int.Cl.,DB名)
前記終点セルと前記始点セルとを接続するステップにおいて、前記次に走行すべき矩形領域として複数の矩形領域が候補として存在する場合には、当該複数の矩形領域の候補のうち、前記終点セルと最短距離にて接続される前記始点セルを有する矩形領域を、前記次に走行すべき矩形領域と決定する、請求項1又は2に記載の走行経路作成方法。
【発明を実施するための形態】
【0017】
1.第1実施形態
(1)自律走行装置の全体構成
まず、本実施形態に係る自律走行装置100の全体構成について、説明する。本実施形態に係る自律走行装置100は、設定された清掃条件と走行経路とを自律的に再現する清掃機である。
自律走行装置100は、走行部1を備える。走行部1は、自律走行装置100を走行させる装置である。走行部1は、自律走行装置100の本体を構成する本体Bを有する。走行部1は、本体Bの底部の左右端にそれぞれ、走行モータ11と、走行モータ11の出力回転軸に取り付けられ、走行モータ11の回転に従って回転する主輪13と、を有する。
【0018】
他の実施形態において、走行部1は、例えば、本体Bの底部の左右端に主輪13よりも後方に、回転可能に取り付けられた補助輪15を有してもよい。これにより、自律走行装置100をより安定にできる。さらなる他の実施形態として、自律走行装置100の重心位置などを考慮して、補助輪15を主輪13よりも前方に取り付けてもよい。
【0019】
自律走行装置100は、清掃部3を備える。清掃部3は、本体Bの底部に設けられ、指定された清掃条件に従って床面Fを清掃する装置である。本実施形態の清掃部3は、洗浄液吐出口31と、スキージ33と、洗浄用部材35と、を有する。
洗浄液吐出口31は、洗浄液供給タンク311から洗浄液供給ポンプ313により供給された洗浄液(例えば、水)を、本体Bの前方側の床面Fに吐出する。スキージ33は、本体Bの底面後方に設けられ、床面F上に残留する洗浄液を収集する。洗浄用部材35は、本体Bの底面の前方側に設けられ、洗浄用部材回転モータ351の回転にて洗浄液が存在する床面F上にて回転することにより、床面Fを洗浄する。
上記の清掃部3を備えることにより、自律走行装置100は、洗浄液を用いて床面Fを洗浄用部材35にて磨く清掃作業を実行できる。
【0020】
他の実施形態において、スキージ33には吸引口O2が設けられていてもよい。吸引口O2は、吸引モータ331により回収部材333を負圧状態にすることにより、スキージ33により収集された洗浄液やゴミなどを吸引して、回収部材333へと搬送できる。
【0021】
自律走行装置100は、制御部5を有する。制御部5は、CPU、記憶装置(RAM、ROM、ハードディスクドライブ、SSDなど)、各種インターフェースなどを備えたコンピュータシステムである。制御部5は、自律走行装置100に関する各種制御を行う。制御部5の構成については後ほど詳しく説明する。
【0022】
自律走行装置100は、走行経路教示部7を備える。走行経路教示部7は、操作者による走行部1の移動操作を受け付ける装置である。走行経路教示部7は、取付部材8を介して、本体Bの上方後側に取り付けられている。これにより、操作者は、走行経路教示部7を操作して走行部1を移動操作できる。本実施形態の走行経路教示部7の詳細については、後ほど説明する。
【0023】
他の実施形態として、走行経路教示部7は、本体Bに取り付けられていなくともよい。この場合、走行経路教示部7は、例えば、ジョイスティックなどのコントローラとできる。これにより、操作者は、自律走行装置100を遠隔操作できる。
【0024】
さらなる他の実施形態として、自律走行装置100は、上記の走行経路教示部7と、本体Bに取り付けられていないコントローラとの両方により操作可能となっていてもよい。
【0025】
自律走行装置100は、設定部9を備える。設定部9は、自律走行装置100に関する各種設定を行うための操作盤であり、本体Bの上方後側の表面に取り付けられている。また、設定部9は、走行経路教示部7の近傍に設けられている。これにより、操作者は、走行経路教示部7を操作して走行部1を操作しつつ、設定部9を操作できる。
【0026】
他の実施形態として、設定部9は、本体Bに取り付けられていなくてもよい。この場合、設定部9は、例えば、ポータブル端末などの無線通信可能なコンソールとできる。これにより、操作者は、自律走行装置100を遠隔にて設定できる。
さらなる他の実施形態として、上記の走行経路教示部7と設定部9とを一体としてもよい。これにより、走行部1と設定部とを同時に操作しやすくできる。
【0027】
(2)走行経路教示部の構成
次に、本実施形態に係る走行経路教示部7の構成の一例について、
図2を用いて説明する。
図2は、走行経路教示部の構成の一例を示す図である。
走行経路教示部7は、ハンドル71a、71bを有する。ハンドル71a、71bは、それぞれ、筐体73の左右側面に取り付けられている。ハンドル71a、71bは、ユーザが自律走行装置100を操作するときに使用される。
【0028】
例えば、ハンドル71a、71bを把持する操作者は、ハンドル71a、71bを介して、自律走行装置100を操作者の方へ引張る力、又は、自律走行装置100を押し出す力のいずれかを加えることができる。ハンドル71a、71bのそれぞれにかける力を調節することにより、操作者は、自律走行装置100の走行方向を調整できる。例えば、自律走行装置100の前方方向から見て左側のハンドル71aに対して、自律走行装置100を引張る力を加えれば、自律走行装置100は左へと方向転換する。
【0029】
ハンドル71a、71bは、筐体73に回動可能に取り付けられている。また、ハンドル71a、71bは、走行制御指令算出部75を介して制御部5に接続されている。走行制御指令算出部75は、ハンドル71a、71bの回動を電気信号に変換し、制御部5に出力する。これにより、操作者は、ハンドル71a、71bの回動操作によって、自律走行装置100(走行部1)を操作できる。
【0030】
例えば、ハンドル71a、71bの回動方向を調整することにより、操作者は、自律走行装置100の前進と後進とを切り替え可能となっていてもよい。また、ハンドル71a、71bの回動量を調節することにより、自律走行装置100の走行速度を調整可能となっていてもよい。さらに、ハンドル71aの回動量と、ハンドル71bの回動量とを異ならせて、自律走行装置100の進行方向を変更してもよい。
【0031】
他の実施形態として、ハンドル71aを進行方向への走行速度を指示するための入力インターフェースとし、ハンドル71bを操舵角を指示するための入力インターフェースとしてもよい。
【0032】
(3)設定部の構成
次に、設定部9の構成について、
図3を用いて説明する。
図3は、設定部の構成を示す図である。
設定部9は、切替部91を有する。切替部91は、自律走行装置100の動作モードを選択し、制御部に出力する。自律走行装置100の動作モードとしては、自律走行モードと手動操作モードとがある。自律走行モードは、自律走行装置100が、自律的に走行し床面Fを洗浄する動作モードである。一方、手動操作モードは、自律走行装置100が操作者により手動操作可能な状態にある動作モードである。
【0033】
切替部91は、例えば、
図3に示すような切り替えスイッチにて構成できる。この場合、自律走行モードの選択は、例えば、切り替えスイッチにて構成された切替部91を
図3に示す「自動」に切り替えることにより可能となる。一方、手動操作モードの選択は、例えば、切替部91を
図3に示す「手動」に切り替えることにより可能となる。
【0034】
設定部9は、手動操作記憶スイッチ92を有する。手動操作記憶スイッチ92は、操作者による自律走行装置100の手動操作の記憶を開始又は終了するためのスイッチである。具体的には、切替部91により動作モードが手動操作モードに設定された後に手動操作記憶スイッチ92が押されると、操作者の手動操作により実行された清掃条件および走行経路を、自律走行装置100に教示する手動操作教示モードが、手動操作モードのサブ動作モードとして開始される。一方、手動操作教示モードを実行中に手動操作記憶スイッチ92が切り替わると、手動操作教示モードが停止される。
【0035】
手動操作記憶スイッチ92により手動操作教示モードの開始と停止とが可能となることにより、手動操作教示モードを任意のタイミングにて開始又は停止できる。その結果、操作者が所望する走行スケジュール500(走行領域内経路の一例)を作成できる。
【0036】
手動操作記憶スイッチ92としては、例えば、
図3に示すような押ボタンスイッチとすることができる。この場合、手動操作記憶スイッチ92の切り替えは、当該押ボタンスイッチを押すことにより切り替わる。
【0037】
他の実施形態において、手動操作教示モードの実行時に手動操作記憶スイッチ92が切り替わったら、動作モードが手動操作教示モードから手動操作モードに切り替わってもよい。これにより、操作者は、手動操作教示モードが手動操作モードに切り替わっても、継続して自律走行装置100を手動操作できる。
【0038】
設定部9は、設定操作部93を有する。設定操作部93は、例えば押圧スイッチなどにより構成され、自律走行装置100に関する各種設定の入力を受け付けて、設定変換部94を介して、制御部5に出力する。
設定変換部94は、設定操作部93にて受け付けた入力を、制御部5が解読可能な信号に変換する信号変換回路、又は、コンピュータシステムである。
【0039】
設定部9はディスプレイ95を有する。ディスプレイ95は、現在設定されている自律走行装置100に関する各種設定情報を表示する。ディスプレイ95は、例えば、液晶ディスプレイ、有機ELディスプレイなどのディスプレイである。
【0040】
他の実施形態において、ディスプレイ95は、現在の動作モード(自律走行モード/手動操作モード/手動操作教示モード)、運転時間、自律走行装置100を駆動するバッテリー残量などをさらに表示してもよい。さらなる他の実施形態において、ディスプレイ95は、設定操作部93により自律走行装置100の各種設定を行う際に、各種設定手順を表示してもよい。これにより、自律走行装置100に関する情報を視覚的にユーザに提供し、ユーザは表示された情報に基づいて、設定部9を操作できる。
【0041】
他の実施形態において、ディスプレイ95にはタッチパネルが設けられていてもよい。この場合、上記の切替部91、手動操作記憶スイッチ92、及び/又は設定操作部93は、当該タッチパネルにより実現されてもよい。
【0042】
設定部9は、清掃条件教示部96を有してもよい。清掃条件教示部96は、操作者による清掃条件の入力を受け付けて、清掃制御指令算出部97へ出力する。清掃制御指令算出部97は、清掃条件教示部96にて受け付けた清掃条件を、制御部5が解読可能な信号に変換して制御部5に出力する信号変換回路、又は、コンピュータシステムである。
これにより、操作者は、清掃条件教示部96を用いて、自律走行装置100に対して清掃条件を設定するか、又は、清掃条件を教示できる。
【0043】
(4)制御部の構成
(4−1)制御部の全体構成
以下、制御部5の構成について説明する。まず、制御部5の全体構成について、
図4を用いて説明する。
図4は、制御部の全体構成を示す図である。以下に説明する制御部5の各機能ブロックの全部又は一部は、制御部5を構成するコンピュータシステムにて実行可能なプログラムにより実現されてもよい。この場合、当該プログラムは、メモリ部及び/又は記憶装置に記憶されていてもよい。制御部5の各機能ブロックの全部又は一部は、SoC(System on Chip)などのカスタムICとして実現されていてもよい。
【0044】
制御部5は、1つのコンピュータシステムにより構成されていてもよいし、複数のコンピュータシステムにより構成されていてもよい。複数のコンピュータシステムにより制御部5を構成する場合、例えば、制御部5の複数の機能ブロックにて実現される機能を複数のコンピュータシステムに任意の割合で振り分けて実行させることができる。
【0045】
制御部5は、清掃制御部51を有する。清掃制御部51は、洗浄用部材回転モータ351と、洗浄液供給ポンプ313と、吸引モータ331に対して、回転速度や出力などを制御する電力を供給する。
設定部9が清掃条件教示部96を有する場合、清掃制御部51は、清掃制御指令算出部97を介して清掃条件教示部96から教示清掃条件を入力し、当該教示清掃条件に基づいて、洗浄用部材回転モータ351と、洗浄液供給ポンプ313と、吸引モータ331と、を制御してもよい。
【0046】
他の実施形態において、清掃制御部51は、自律走行モードの実行時に、制御統括部55から、自律走行モードにおける清掃条件の設定値を示す再現清掃条件を入力し、当該再現清掃条件に基づいて、清掃部3を制御してもよい。
【0047】
制御部5は、走行制御部53を有する。走行制御部53は、走行経路教示部7から入力したハンドル71a、71bの回動量及び回動方向に基づく走行制御指令、又は、制御統括部55から入力した走行制御指令に基づき、走行モータ11を制御する。
また、走行制御部53は、走行モータ11の出力回転軸に取り付けられたエンコーダ111から出力されるパルス信号に基づいて、走行モータ11の回転速度を算出する。これにより、走行制御部53は、走行モータ11の回転速度(すなわち、主輪13の回転速度)をモニターしながら、走行モータ11を制御できる。
【0048】
制御部5は、制御統括部55を有する。制御統括部55は、自律走行装置100による走行を統括する。具体的には、制御統括部55は、前方検出器5551a、後方検出器5551b、及び/又はエンコーダ111にて取得された情報に基づいて、自律走行装置100が床面Fのどの位置を移動しているかを示す位置情報を算出する。
【0049】
制御統括部55は、手動操作教示モードの実行時における上記の位置情報を用いて、走行スケジュール500を作成する。他の実施形態において、制御統括部55は、自律走行モードにおける清掃条件を算出し、走行スケジュール500と関連付けてもよい。
【0050】
一方、自律走行モードの実行時においては、制御統括部55は、走行スケジュール500に記憶されたデータに基づいて再現走行制御指令を算出し、走行制御部53に出力する。これにより、自律走行モードの実行時においては、走行制御部53は、再現走行制御指令に基づいて走行モータ11を制御することで、自律走行装置100を自律的に移動させることができる。
【0051】
走行スケジュール500に清掃条件が関連付けられているとき、他の実施形態において、制御統括部55は、自律走行モードの実行時において、走行スケジュール500に記憶された清掃条件に基づいて、清掃制御部51を制御してもよい。これにより、自律走行装置100は、走行スケジュール500に従って自律的に走行中に、当該清掃条件に従って自律的に清掃作業を実行できる。
【0052】
制御部5は、記憶部57を有する。記憶部57は、制御部5を構成するコンピュータシステムの記憶装置の記憶領域の一部又は全部であり、自律走行装置100に関する各種情報を記憶する。具体的には、記憶部57は、制御統括部55において作成された走行スケジュール500、及び、設定操作部93や設定変換部94から入力された自律走行装置100に関する各種設定を記憶する。
【0053】
走行制御部53、及び制御統括部55は、記憶部57に記憶された自律走行装置100に関する各種設定、及び/又は、走行スケジュール500を必要に応じて読み出して、これらに基づいて各種の調整及び制御を実行できる。
【0054】
他の実施形態において、制御部5は、記憶部57に記憶された走行スケジュール500などの情報を他の記憶媒体に記憶するためのデータ書き込み装置(図示せず)を有していてもよい。さらなる他の実施形態において、制御部5は、例えば、USB(Universal Serial Bus)ポートなどの、データ書き込み装置を接続可能な接続端子を有していてもよい。
これにより、記憶部57に記憶された走行スケジュール500などの情報を、他の記憶媒体に記憶できる。
【0055】
(4−2)走行制御部の構成
以下、走行部1を制御する走行制御部53の構成について、
図5を用いて詳細に説明する。
図5は、走行制御部の詳細構成を示す図である。
走行制御部53は、走行切替部531を有する。走行切替部531は、3つの端子d、e、及びfを有している。端子dは走行経路教示部7に接続され、端子eはモータ制御部533に接続され、端子fは制御統括部55に接続されている。
【0056】
走行切替部531は、切替部91により選択されている動作モードに基づいて、端子eと端子dとを接続するか、あるいは、端子eと端子fとを接続するかのいずれかを選択する。
【0057】
具体的には、切替部91において手動操作モードが選択されていれば、走行切替部531は、端子eと端子dとを接続することで、走行経路教示部7をモータ制御部533に接続する。これにより、走行切替部531は、手動操作モード又は手動操作教示モードの実行時には、走行経路教示部7のハンドル71a、71bの回動量及び/又は回転方向を示す信号を、モータ制御部533に送信できる。
【0058】
一方、切替部91において自律走行モードが選択されていれば、走行切替部531は、端子eと端子fとを接続することで、制御統括部55をモータ制御部533に接続する。これにより、走行切替部531は、自律走行モードの実行時には、制御統括部55から出力される再現走行制御指令を、モータ制御部533に送信できる。
【0059】
モータ制御部533は、入力されたハンドル71a、71bの回動量/回動方向、又は、再現走行制御指令に基づいて、走行モータ11の目標回転速度を算出し、当該目標回転速度にて走行モータ11を回転させるための駆動電力を、走行モータ11に出力する。
モータ制御部533は、エンコーダ111からのパルス信号に基づいて実際の走行モータ11の回転速度を算出しフィードバックして、走行モータ11に出力すべき駆動電力を算出する。従って、モータ制御部533は、例えば、PI(Proportional Integral)制御理論や、PID(Proportional Integral Differential)制御理論などを用いて走行モータ11を制御する。
【0060】
本実施形態においては、本体Bの底部の左右端のそれぞれに、走行モータ11及び主輪13が設けられている。このような場合、モータ制御部533は、左右2つの走行モータ11のそれぞれの回転速度及び回転方向を独立に制御して、自律走行装置100の進行方向を決定する。
【0061】
他の実施形態において、制御部5が複数のコンピュータシステムにて構成される場合、モータ制御部533は、当該複数のコンピュータシステムのうちの1つであってもよい。すなわち、モータ制御部533の機能のみを1つのコンピュータシステムにて実現してもよい。この場合、モータ制御部533は、例えば、PI制御理論又はPID制御理論を用いたモータ制御装置である。
【0062】
(4−3)制御統括部の構成
以下、制御統括部55の構成について、
図6を用いて詳細に説明する。
図6は、制御統括部の詳細構成を示す図である。
制御統括部55は、走行領域取得部551を有する。走行領域取得部551は、手動操作教示モードの実行時に、所定時間毎(例えば、制御部5における制御周期毎)に、SLAM部555(後述)から、SLAM部555にて推定された位置情報(後述)を入力する。
【0063】
走行領域取得部551は、走行環境において自律走行装置100が走行する領域を表す走行領域TAを、取得した複数の位置情報の点列として取得する。走行領域取得部551は、取得した複数の位置情報の点列を、走行領域TAの境界を表す点列として、走行領域内経路作成部553に出力する。
【0064】
他の実施形態において、走行領域取得部551は、予め作成したグローバルマップ(走行環境を表す地図情報)をディスプレイ95に表示させてもよい。このとき、走行領域取得部551は、操作者に対して、ディスプレイ95に表示されたグローバルマップ上に、走行領域TAを表す閉じられた領域を描画するように指示をしてもよい。
【0065】
この場合、走行領域取得部551は、例えば、ディスプレイ95上にて描画された走行領域TAの座標値(例えば、ディスプレイ95のピクセル座標値)を取得し、当該座標値を座標変換により走行環境上の座標値に変換して、走行領域TAを表す(座標値の)点列を取得してもよい。
【0066】
制御統括部55は、走行領域内経路作成部553を有する。走行領域内経路作成部553は、走行領域取得部551から取得した走行領域TA内に、自律走行装置100が当該走行領域TAをまんべんなく(「塗りつぶす」ように)走行する走行スケジュール500を作成し、記憶部57に記憶する。走行スケジュール500の具体的な作成方法については、後ほど詳しく説明する。
【0067】
制御統括部55は、SLAM部555を有する。SLAM部555は、本体Bの前方に設けられた前方検出器5551a(
図1)にて取得した自律走行装置100の前方に存在する障害物に関する情報と、本体Bの後方に設けられた後方検出器5551b(
図1)にて取得した自律走行装置100の後方に存在する障害物に関する情報と、エンコーダ111にて取得した走行モータ11の回転量に基づいて、自律走行装置100の所定の座標上の位置に関する情報(位置情報)を推定する。
【0068】
前方検出器5551a及び後方検出器5551bは、例えば、その検出範囲が180°以上のレーザーレンジファインダ(Laser Range Finder、LRF)である。レーザーレンジファインダを前方検出器5551a及び後方検出器5551bとして用いた場合、走行部1と障害物との距離と、当該障害物が存在する方向とが、障害物に関する情報として取得される。
【0069】
前方検出器5551a及び後方検出器5551bにて取得される情報は、所定の平面上における障害物の存在位置を表す二次元的な情報であってもよいし、さらに高さ方向における障害物の存在位置を表す情報を含めて三次元的な情報であってもよい。
【0070】
他の実施形態において、前方検出器5551aの検出範囲(検出角度及び/又は検出距離)を、後方検出器5551bの検出範囲よりも広くしてもよい。これにより、自律走行装置100の前方方向であってより広範囲に存在する障害物に関する情報を取得できる。
【0071】
さらなる他の実施形態において、前方検出器5551a及び後方検出器5551bは、TOF(Time Of Flight)カメラなどであってもよい。
【0072】
制御統括部55は、走行再現部557を有する。走行再現部557は、自律走行モードを実行する時に、走行スケジュール500に記憶された情報と、SLAM部555から取得した推定された位置情報とに基づいて、自律走行装置100が走行スケジュール500に示された走行経路を自律的に走行すための制御指令(再現走行制御指令)を算出する。走行再現部557は、算出した再現走行制御指令を走行制御部53に出力する。
【0073】
他の実施形態において、走行再現部557は、走行スケジュール500に関連付けられた清掃条件を、清掃制御部51に出力してもよい。
【0074】
(4−4)SLAM部の構成
以下、SLAM部555の構成の詳細について、
図6を用いて説明する。本実施形態に係るSLAM部555は、SLAM(Simultaneous Localization and Mapping)法にて、走行部1(自律走行装置100)の位置(位置情報)推定と地図情報の作成とを実行する。
SLAM部555は、地図作成部5553を有する。地図作成部5553は、前方検出器5551aにて取得された前方の障害物(例えば、壁など)に関する情報、後方検出器5551bにて取得された後方の障害物に関する情報と、を用いて地図情報を作成する。地図情報は、位置推定部5555において位置情報を推定する際に用いられる。地図情報としては、ローカルマップとグローバルマップ(環境地図の一例)とが存在する。
【0075】
ローカルマップは、走行部1の周囲に存在する障害物(の存在位置)に関する地図情報である。ローカルマップは、前方検出器5551aにて取得された前方の障害物に関する情報と、後方検出器5551bにて取得された後方の障害物に関する情報とを、必要に応じて座標変換することにより作成される。
【0076】
グローバルマップは、走行部1が走行する環境(走行環境)に存在する障害物(の存在位置)に関する地図情報である。本実施形態において、グローバルマップは、手動操作教示モードの実行時に走行領域TAを表す位置情報の点列を取得したときに取得したローカルマップに基づいて生成される。
【0077】
具体的には、地図作成部5553は、走行領域TAを表す位置情報の点列とともに取得したローカルマップを、当該位置情報に対応する位置に配置することでグローバルマップを作成する。
【0078】
走行領域TAを表す位置情報の点列を取得する際に、手動操作教示モードの初期に取得した位置情報と、手動操作教示モードの終盤に取得した位置情報との間には、誤差が生じる場合がある。具体的には、例えば、閉じられた領域である走行領域TAを位置情報の点列として取得する際に、手動操作教示モードの開始時の走行部1の位置と終了時の走行部1の位置とが同一であるかからわず、推定された位置情報が一致しないことがある(いわゆる、環状経路問題)。
【0079】
上記の推定された位置情報の不一致を解消するため、地図作成部5553は、ローカルマップを対応する位置に配置して作成したグローバルマップを修正する。具体的には、例えば、以下のようにしてグローバルマップを修正する。
【0080】
まず、地図作成部5553は、手動操作教示モードの開始時と終了時に、前方検出器5551aにて取得された障害物に関する情報、及び/又は、後方検出器5551bにて取得された障害物に関する情報を取得する。
【0081】
次に、地図作成部5553は、手動操作教示モードの開始時に得られた障害物に関する情報と終了時に得られた障害物に関する情報との差分などに基づいて、手動操作教示モードの開始時と終了時における走行部1の実際の位置のずれを算出する。
【0082】
その後、地図作成部5553は、算出した実際の位置のずれに基づいて、例えばGraphSLAMなどのアルゴリズムを用いて、ローカルマップの配置位置を修正し、修正した新たな配置位置にローカルマップを配置して、新たなグローバルマップを作成する。
【0083】
このとき、地図作成部5553は、手動操作教示モードを実行することにより取得した走行領域TAを表す点列の位置情報(座標値)も、GraphSLAMなどのアルゴリズムを用いて同時に修正し、修正した新たな位置情報の点列を走行領域TAを表す点列としてもよい。
【0084】
上記のようにしてグローバルマップを修正することにより、走行環境をより適切に表したグルーバルマップを作成できる。また、グローバルマップの修正時に、走行領域TAを表す位置情報を修正することにより、閉じられた領域である走行領域TAをより適切に表した位置情報の点列を取得できる。
【0085】
他の実施形態において、グローバルマップは、専用のソフトウェア又はCADなどを用いて作成されて記憶部57に記憶されてもよい。この場合、当該ソフトウェアなどで作成したグローバルマップは、走行部1の制御部5が解釈できるようなデータに変換される。
【0086】
SLAM部555は、位置推定部5555を有する。位置推定部5555は、地図作成部5553が生成したグローバルマップと、ローカルマップと、走行モータ11の回転量と、に基づいて、所定の座標上の走行部1の存在位置及び当該位置における走行部1の姿勢に関する位置情報を推定する。
【0087】
具体的には、以下のようにして位置情報が推定される。ここでは、走行部1がある所定の時刻(時刻t
kとする)における(推定)位置から移動して、次の時刻(時刻t
k+1とする)にて走行部1が到達する位置を推定する場合を例として考える。
まず、位置推定部5555は、時刻t
kから時刻t
k+1までの間にエンコーダ111から出力されたパルス数から、時刻t
kから時刻t
k+1までの間の主輪13の回転量を算出し、当該回転量に基づいて、主輪13の回転による走行部1の移動距離と姿勢変化とを推定する(デッドレコニング)。
【0088】
次に、位置推定部5555は、時刻t
kにおける事後確率(走行部1の位置と、時刻t
kにおいて当該位置に走行部1が存在する確率と、の関係を表した確率分布に対応する)を、主輪13の回転による走行部1の移動距離分及び姿勢変化分だけ移動させて、時刻t
k+1における事前確率を算出する。
他の実施形態において、位置推定部5555は、主輪13の回転による移動距離分及び姿勢変化分だけ移動後の事後確率の確率分布の幅(標準偏差)を拡大して、時刻t
k+1における事前確率としてもよい。これにより、主輪13と床面Fとの滑りを考慮した事前確率を算出できる。
【0089】
その後、位置推定部5555は、時刻t
k+1におけるローカルマップとグローバルマップとを地図作成部5553から取得し、時刻t
k+1におけるローカルマップとグローバルマップとをマップマッチングし、時刻t
k+1における走行部1の位置情報を推定する。
【0090】
具体的には、例えば、グローバルマップ上において、主輪13の回転量に基づいて算出された推定位置の近傍のいくつかの位置に、時刻t
k+1におけるローカルマップを配置し、当該ローカルマップをその中心回りに取りうる姿勢変化に対応する角度だけ回転させて、マップマッチングを行う。
位置推定部5555は、当該マップマッチングの結果に基づいて、尤度(ローカルマップ情報を配置した位置と、当該位置におけるグローバルマップとローカルマップ情報との一致度と、の関係を表すものに対応)を算出する。
【0091】
その後、位置推定部5555は、尤度と時刻t
k+1における事前確率とを乗算することにより、時刻t
k+1における事後確率を算出する。位置推定部5555は、時刻t
k+1における事後確率が最大値となる位置及び姿勢、すなわち、走行部1が存在する可能性が最も高いと推定される位置、及び、当該位置において走行部1がとりうる最も可能性が高い姿勢を、時刻t
k+1における走行部1の存在位置(推定位置)及び当該存在位置における姿勢(推定姿勢)と推定する。
時刻t
k+1における事後確率は、次の位置推定において事前確率として使用される。
【0092】
上記のように、位置推定部5555が、主輪13の回転量に基づいた移動距離と、前方検出器5551a及び後方検出器5551bとを用いて得られた地図情報と、を用いて位置推定を実行することにより、主輪13の回転量に基づいた移動距離に含まれる誤差(主に、主輪13と床面Fとの間の滑りに起因)と、地図情報に含まれる誤差(主に、前方検出器5551a及び後方検出器5551bにて取得した情報に含まれるノイズ成分に起因)とを相補的に減少させて、精度のよい位置推定を実行できる。
【0093】
SLAM部555は、経過時間決定部5557を有する。経過時間決定部5557は、自律走行モードの実行開始からの経過時間を決定する。具体的には、経過時間決定部5557は、自律走行モードの実行開始からの経過時間を、位置推定部5555にて推定された位置情報に基づき決定する。
【0094】
より具体的には、例えば、走行スケジュール500に記憶されている位置情報のうち、位置推定部5555にて推定された走行部1の位置情報に最も近い位置情報に関連付けられている時間を、自律走行モードの実行開始からの経過時間とする。
【0095】
他の実施形態において、上記の経過時間は、位置推定部5555にて推定された位置情報に近い2つの位置情報を走行スケジュール500から抽出し、走行スケジュール500において当該2つの位置情報に関連付けられた時間の線形補間により算出されてもよい。これにより、より正確な経過時間を算出できる。
【0096】
(5)自律走行装置の動作
(5−1)基本動作
以下、自律走行装置100の動作について説明する。まず、自律走行装置100の基本的な動作を、
図7を用いて説明する。
図7は、自律走行装置の基本的な動作を示すフローチャートである。
自律走行装置100が動作を開始すると、制御部5は、切替部91の状態を確認する(ステップS1)。切替部91が「自動」を選択している場合(ステップS1において「自律走行モード」の場合)、自律走行モードが実行され(ステップS2)、記憶部57に記憶された走行スケジュール500に従って、自律走行装置100は自律的に清掃作業を実行する。
【0097】
一方、切替部91が「手動」を選択している場合(ステップS1において「手動操作モード」の場合)、制御部5は、実行すべき動作モードが手動操作モードと判断する。
手動操作モードを実行中に手動操作記憶スイッチ92が押されたことを検知すると(ステップS3において「Yes」の場合)、制御部5は、動作モードを手動操作教示モードに移行させる(ステップS4)。その結果、手動操作記憶スイッチ92が押されたタイミング以降の操作者による走行部1の操作が記憶される。
【0098】
また、手動操作教示モードにおいては、制御統括部55は、操作者による走行部1の操作にて決定した走行領域TA内を自律走行装置100に走行させるための走行スケジュール500を作成する。
【0099】
一方、手動操作記憶スイッチ92が押されない場合(ステップS3において「No」の場合)には、操作者の操作を記憶しない手動操作モードの実行を維持する(ステップS5)。
【0100】
上記のステップS4において手動操作教示モードを実行中に、制御部5は、手動操作記憶スイッチ92が押されたか否かをモニターする。手動操作教示モードの実行中に手動操作記憶スイッチ92が押された場合には、そのタイミングで動作モードが手動操作モードに切り替わり、当該タイミング以降の清掃作業が走行スケジュール500に記憶されなくなる。すなわち、手動操作教示モードの実行時に手動操作記憶スイッチ92を押すことにより、操作者は、清掃作業の途中の任意のタイミングにてその記憶(教示)を停止できる。
【0101】
上記のように、本実施形態に係る自律走行装置100は、切替部91における動作モードの選択、及び、手動操作記憶スイッチ92が押されたか否かに応じて、自律走行モード、手動操作モード、及び手動操作教示モードを実行できる。
【0102】
(5−2)手動操作教示モードの動作
以下、上記のステップS4において実行される手動操作教示モードの動作について、
図8を用いて説明する。
図8は、手動操作教示モードの動作を示すフローチャートである。
以下の説明では、
図9に示すような走行環境において設定された走行領域TA内をまんべんなく「塗りつぶす」走行領域内経路を計画し、走行スケジュール500として作成する。
図9は、走行環境の一例である。
【0103】
手動操作教示モードにおいて走行スケジュール500を作成するにあたり、制御統括部55は、走行環境を表すグローバルマップを作成する(ステップS41)。具体的には、以下のようにしてグローバルマップを作成する。
【0104】
まず、手動操作記憶スイッチ92が押された後に自律走行装置100の手動操作を開始するか、又は、手動操作中に手動操作記憶スイッチ92が押されて、手動操作教示モードが開始されると、操作者は、走行経路教示部7を用いて自律走行装置100を操作する。操作者は、走行領域TAとしたい領域の境界線に沿って、自律走行装置100を走行させる。
【0105】
操作者による操作により自律走行装置100が走行中、地図作成部5553が、所定の時間毎に、ローカルマップを取得する。
図9に示すように、自律走行装置100が走行を開始した開始点STから、走行領域TAの境界線とする閉じられた経路を走行し、再度開始点ST又はその近傍まで戻ってきた後、地図作成部5553は、取得したローカルマップを対応する位置に配置してグローバルマップを作成する。その後、地図作成部5553は、必要に応じて、GraphSLAMアルゴリズムなどを用いて、当該グローバルマップを修正する。
【0106】
他の実施形態において、地図作成部5553は、CADなどを用いて作成された移動環境を表すCADデータなどを、適切なデータ変換と座標変換とを行って、グローバルマップとして取得してもよい。
【0107】
上記のようにしてグローバルマップを取得後、地図作成部5553は、取得したグローバルマップを、多数のセルの集合体に変換する。グローバルマップを構成する当該セルは、走行環境においては、所定の面積を有する小領域に対応するものである。また、制御部5を構成するコンピュータシステムにおいては、当該セルを、例えばセルに関するパラメータ(例えば、セルを識別するパラメータ、セルの位置情報、セルの有効無効、セルに付与されたスコア、など)を含む「構造体」として定義できる。
【0108】
具体的には、例えば
図10に示すように、地図作成部5553は、グローバルマップを定義する座標平面上にセルを配置し、セルを配置した当該座標平面上にグローバルマップを投影する。地図作成部5553は、座標平面上のセルのうち、グローバルマップにおいて障害物がない領域のセルについては有効セル(
図10では白色のセル)であると決定し、それ以外のセルについては無効セル(
図10では灰色のセル)であると決定する。
図10は、グローバルマップをセルの集合体に変換した一例を示す図である。
【0109】
グローバルマップは、
図10に示すように、x−y平面上に定義するものとする。
【0110】
グローバルマップにおいて、障害物の表面(壁面など)は、前方検出器5551a及び/又は後方検出器5551bにて取得された情報が直線状に配置された点列として表される。また、障害物のない空間は、一般的に、間隔を空けて配置された2つの表面(壁面)間に形成される。
従って、地図作成部5553は、前方検出器5551a及び/又は後方検出器5551bにて取得された情報が直線状に配置された点列が間隔を空けて2つ存在するときに、当該2つの点列の間に存在するセルを有効セルと決定する。
【0111】
その一方、障害物の表面に対して、有効セルが存在する領域とは反対側に存在するセルを無効セルとする。無効セルとされたセルに対しては、自律走行装置100が走行できないことを示す「スコア」(例えば、0、又は、−1などの負数)を付与しておく。
【0112】
本実施形態において、地図作成部5553は、前方検出器5551a及び/又は後方検出器5551bにて取得された情報からは有効セルか無効セルかが判定できないセル(例えば、1つの障害物の表面しか認識できない領域内にあるセル)については、有効セルであると見なす。
【0113】
他の実施形態において、地図作成部5553は、有効セルと決定したセルに対して、有効であることを示す「スコア」を予め付与してもよい。この場合、前方検出器5551a及び/又は後方検出器5551bにて取得された情報からは有効セルか無効セルかが判定できず有効セルと見なしたセルに対して、有効であることを示す「スコア」を予め付与してもよいし、付与しなくともよい。
【0114】
この場合、有効であると見なしたセルに予め「スコア」を付与するかしないかに関わらず、後述する矩形領域内経路の作成時には、当該有効セルと見なしたセルに対しても「スコア」が付与される。その結果、矩形領域内経路は、当該有効セルと見なしたセルも通過することとなる。
【0115】
多数のセルの集合体として表されたグローバルマップを作成後、走行環境において自律走行装置100が走行する領域を表す走行領域TAを、グローバルマップ上に画定する(ステップS42)。具体的には、以下のようにして、走行領域TAをグローバルマップ上に画定する。
【0116】
まず、上記のステップS41を実行中、すなわち、自律走行装置100を走行領域TAの境界線に沿って走行させる間に、走行領域取得部551が、所定の時間毎に、位置推定部5555にて推定された位置情報を走行領域TAの境界を表す点として取得する。
【0117】
これにより、走行領域取得部551は、自律走行装置100が開始点ST(
図9)から点線にて示す経路に沿って走行し、開始点ST又はその近傍まで戻ってくるまでの間に取得した複数の位置情報を、走行領域TAの境界線を表す点列として取得できる。走行領域取得部551は、走行領域TAの境界線を表す位置情報の点列を、走行領域内経路作成部553に出力する。
【0118】
他の実施形態において、走行領域取得部551は、例えば、ディスプレイ95にグローバルマップを表示させ、ユーザに対してグローバルマップが表示されたディスプレイ95上にて走行領域TAの境界線を描画させてもよい。走行領域取得部551は、当該描画された走行領域TAの境界線を、適切な座標変換などを行って走行領域TAの境界線を表す点列として取得してもよい。
【0119】
また、例えば、広い空間にある柱などの障害物の周りに対して走行領域TAの境界線を画定するために、
図11の一点鎖線のような経路を自律走行装置100が走行した場合に、走行領域取得部551は、当該一点鎖線にて示す経路、つまり走行領域TAの外周境界線と障害物の表面境界線とこれらを接続する接続線のうち表面境界線と接続線を削除する処理を実行して、外周境界線のみを切り出してもよい。
図11は、不適切な経路が形成されたときの一例を示す図である。
【0120】
走行領域TA(矩形領域RA)内に障害物が存在する場合には、柱などの障害物上を走行するような矩形領域内経路を作成することになるが、自律走行時には自律走行装置100の障害物回避機能を利用して当該障害物を避けながら走行すればよい。
【0121】
次に、走行領域内経路作成部553は、多数のセルにて構成したグローバルマップ上に、走行領域TAの境界線を表す点列を配置する。走行領域TAの境界線を表す位置情報が、グローバルマップ中のどのセルに配置されるかは、例えば、位置情報(グローバルマップ)を定義した座標系において、セルがどの座標値に存在するかにより決定できる。
【0122】
その後、走行領域内経路作成部553は、
図12に示すように、走行領域TAの境界線が配置された有効セルと、走行領域TAの境界線に対して障害物のない空間とは反対側に存在する有効セルと、を新たに無効とする。
図12においては、ハッチングにて示したセルが新たに無効となったセルである。
図12は、グローバルマップ上に走行領域を画定する様子の一例を示す図である。
このようにして、走行領域内経路作成部553は、走行領域TAには含まれないセルを新たに無効セルとすることにより、走行領域TAを多数の有効セル(
図12においては、白色のセル)にて構成される領域として、グローバルマップ上に画定できる。
【0123】
グローバルマップ上に走行領域TAを画定後、走行領域内経路作成部553は、走行領域TAを矩形の領域(矩形領域RA)に分割する(ステップS43)。走行領域TAを矩形領域RAに分割するにあたり、走行領域内経路作成部553は、走行領域TAのどの部分に矩形領域RAが存在するかを探索する。
【0124】
所定の基準軸(
図13Aではy軸に垂直な軸)に対して所定の角度だけ傾いた矩形において、基準軸方向の矩形の境界間の長さ(「直線長さ」と呼ぶことにする)と、基準軸に垂直な軸方向(y軸)における位置との関係をグラフに表すと、
図13Aの(1)に示すように、上に凸形状のグラフとなる。
図13Aに示す例では、上に凸の三角形に類似した形状となっている。
図13A〜
図13Bは、矩形領域の主方向の探索方法を模式的に示す図である。
【0125】
一方、所定の角度だけ傾いた矩形を回転させて、矩形の長手方向が基準軸と平行になったとき(
図13Aの例では、Θだけ左に回転)、直線長さとy軸方向の位置との関係を表すグラフは、
図13Aの(2)に示すように上に凸の矩形となる。すなわち、所定のy軸方向の位置範囲にわたり、直線長さが一定となっている。
【0126】
なお、直線長さが一定となったときの矩形の回転角度とは符号が反対となる角度(
図13Aの例では、−Θ)を、当該矩形の主方向とする。
【0127】
また、直線長さが最大値(例えば、矩形領域の対角線の長さ)(
図13Bでは、L
max)と当該最大値に対して所定の割合だけ短い長さ(
図13Bではα*L
max)との間に含まれるy軸座標値の範囲における矩形領域の面積は、
図13Bに示すように、矩形領域の長手方向が基準軸と平行になったときに最大となる。すなわち、直線長さとy座標値との関係を表すグラフを、直線長さが最大値(L
max)と所定の割合だけ短い長さ(α*L
max)との間に含まれるy座標値の範囲にて定積分したときの値は、矩形領域の長手方向が基準軸と平行になったときに最大となる。
【0128】
なお、
図13Cに示すように、矩形領域の短手方向が基準軸と平行となるときには、上記の定積分値は0となる。なぜなら、どのy座標値においても、直線長さがα*L
maxを下回るからである。
【0129】
従って、走行領域内経路作成部553は、グローバルマップ上に画定した走行領域TAを回転させて、ある特定角度だけ回転後の走行領域TAのx軸方向における走行領域TAの境界線間の距離を、直線長さとして、各y軸方向の位置(y軸方向の各座標値)に対して算出する。
【0130】
その後、走行領域内経路作成部553は、当該特定角度において、直線長さがL
maxとα*L
maxとの間に含まれるy座標値の範囲内の直線長さを積算する。グローバルマップ上に画定した走行領域TAを所定の角度範囲(例えば、0°〜180°の範囲)で回転させた後、走行領域内経路作成部553は、ある矩形領域RAについて上記の直線長さの積算値が最大となったときの走行領域TAの回転角度(とは符号が逆の角度)を、当該ある矩形領域RAの主方向と決定する。
【0131】
走行領域内経路作成部553は、直線長さの積算値が最大となったときの走行領域TAの回転角度(とは符号が逆の角度)における直線長さ(一定値)を、この矩形領域RAの長手方向の長さとし、直線長さが一定であるy軸方向の位置範囲間の長さをこの矩形領域RAの短手方向の長さとする。
【0132】
走行領域TAの回転角度を変化させつつ、直線長さとy軸方向の位置との関係とを算出しつつ上記のようにして各矩形領域RAの主方向を探索することで、走行領域内経路作成部553は、例えば、
図12に示すように画定された走行領域TAを、
図14に示すように3つの矩形領域RA1〜RA3に分割できる。
図14は、走行領域を矩形領域に分割した状態の一例を示す図である。
【0133】
走行領域TAを矩形領域RA1〜RA3に分割後、走行領域内経路作成部553は、各矩形領域RA1〜RA3に対して、当該各矩形領域RA1〜RA3内おける矩形領域内経路(後述)の始点となる有効セル(始点セルSCと呼ぶことにする)を決定する(ステップS44)。
【0134】
走行領域内経路作成部553は、各矩形領域RA1〜RA3の四隅のいずれかに始点セルSCを定める。最初に矩形領域内経路を作成する矩形領域RA1については、例えば、
図15に示すように、走行領域TAの境界線を表す点列を取得する際に自律走行装置100が走行を開始した位置に対応する有効セルを、当該矩形領域RA1の始点セルSCとする。
図15は、最初に矩形領域内経路を作成する矩形領域において決定された始点セルの一例を示す図である。
【0135】
他の矩形領域RA2、RA3の始点セルSCは、後述するステップS47において決定される。
【0136】
矩形領域内経路を作成する対象の矩形領域RA1〜RA3について始点セルSCを決定後、走行領域内経路作成部553は、当該始点セルSCから開始し、対象の各矩形領域RA1〜RA2に含まれる全ての有効セルを通過する走行経路である矩形領域内経路を作成する(ステップS45)。
走行領域内経路作成部553は、具体的には、
図16のフローチャートに示す処理に従って、矩形領域内経路を作成する。
図16は、矩形領域内経路の作成方法を示すフローチャートである。
【0137】
以下の説明においては、矩形領域RA1について矩形領域内経路を作成する方法を例にとって説明する。他の矩形領域RA2、RA3についても、矩形領域RA1に対して実行される作成方法により、矩形領域内経路を作成できる。
【0138】
走行領域内経路作成部553は、まず、矩形領域内経路を作成しようとしている矩形領域RA1の主方向を決定する(ステップS451)。矩形領域RA1の主方向は、例えば、上記のステップS43において走行領域TAを矩形領域RA1〜RA3に分割するときに決定した主方向とできる。
図15に示すように、矩形領域RA1の主方向は、x軸に平行な方向である。
【0139】
次に、走行領域内経路作成部553は、矩形領域RA1内の有効セルにスコアを付与する(ステップS452)。具体的には、走行領域内経路作成部553は、始点セルから、主方向とは垂直な方向に離れた有効セルほど高いスコアを付与する。その一方、主方向に沿って配置される有効セルに対しては、同一のスコアを付与する。
その結果、走行領域内経路作成部553は、矩形領域RA1内の有効セルに対しては、
図17に示すようなスコアを付与する。
図17は、矩形領域内のセルに付与したスコアの一例を示す図である。
【0140】
図17に示す例において、始点セルSCから主方向に沿った方向に配置された有効セルには、「11」とのスコアが付与されている。これは、矩形領域RA1においては、主方向に11個の有効セルが存在することを意味している。
【0141】
他の有効セルについては、始点セルSCから主方向とは垂直な方向に離れる従い、11の倍数でスコアが増加する。
具体的には、主方向とは垂直な方向に始点セルSCと隣接する有効セルに対しては、「22」とのスコアが付与されている。また、当該「22」のスコアが付与された有効セルに対して主方向に沿った方向に配置された有効セルには、これと同じ「22」とのスコアが付与されている。
【0142】
主方向とは垂直な方向に始点セルSCから2セル分離れた有効セルに対しては、「33」とのスコアが付与されている。また、当該「33」のスコアが付与された有効セルに対して主方向に沿った方向に配置された有効セルには、これと同じ「33」とのスコアが付与されている。
【0143】
主方向とは垂直な方向に始点セルSCから3セル分離れた有効セルに対しては、「44」とのスコアが付与されている。また、当該「44」のスコアが付与された有効セルに対して主方向に沿った方向に配置された有効セルには、これと同じ「44」とのスコアが付与されている。
【0144】
主方向とは垂直な方向に始点セルSCから4セル分離れた有効セルに対しては、「55」とのスコアが付与されている。また、当該「55」のスコアが付与された有効セルに対して主方向に沿った方向に配置された有効セルには、これと同じ「55」とのスコアが付与されている。
【0145】
次に、走行領域内経路作成部553は、始点セルSCから、各有効セルへと経路を延ばしていく。具体的には、走行領域内経路作成部553は、始点セルSCからは、始点セルSCの主方向又は主方向とは垂直な方向に存在する有効セルのうち、最高のスコアが付与された有効セルへ経路を延ばす(ステップS453)。
【0146】
図17に示す例では、始点セルSCから主方向(x軸方向)に隣接する有効セルには「11」とのスコアが付与され、主方向に対して垂直な方向(y軸方向)に隣接する有効セルには「22」とのスコアが付与されている。従って、走行領域内経路作成部553は、始点セルSCからy軸方向に隣接する有効セルに経路を延ばす。
【0147】
その後、走行領域内経路作成部553は、当該「22」とのスコアが付与された有効セルに対してy軸方向に隣接した「33」とのスコアが付与された有効セルに経路をさらに延ばす。さらに、当該「33」とのスコアが付与された有効セルに対してy軸方向に隣接した「44」とのスコアが付与された有効セルに経路を延ばし、当該「44」とのスコアが付与された有効セルからy軸方向に隣接した「55」とのスコアが付与された有効セルに経路を延ばす。
【0148】
走行領域内経路作成部553は、経路がすでに延びた有効セルに対しては、当該有効セルを再度通過しないと経路が計画できないなど特別な事情がない限り、再度経路が延びないようにする。
【0149】
走行領域内経路作成部553が上記の規則に沿って経路を延ばすことにより、
図18において太矢印にて示すようなy軸方向(主方向に対して垂直な方向)に延びる経路が、始点セルSCから、矩形領域RA1において始点セルSCに対してy軸方向の反対側の端部にある有効セルへと延びる。このように、自律走行装置100を直進させる経路のことを「直進経路」と呼ぶ。また、直進経路のうち、主方向に対して垂直な方向に延びる経路を「第2経路」と呼ぶ。
図18は、矩形領域内経路の一例を示す図である。
【0150】
上記の規則に従って経路を延ばした場合、「55」とのスコアが付与された、始点セルSCに対してy軸方向の反対側の端部にある有効セルからは、
図18に示すように、当該有効セルに対して主方向に隣接して存在する「55」とのスコアが付与された有効セルへと経路が延びる。
すなわち、始点セルSCに対してy軸方向の反対側の端部にある有効セルにおいては、経路が延びる方向が、y軸方向からx軸方向へと転換している。このように、y軸方向に延びる経路とx軸方向に延びる経路とを組み合わせることにより、自律走行装置100の走行方向を転換できる。
【0151】
上記にように、y軸方向に延びる経路とx軸方向に延びる経路とを組み合わせて形成される経路を、自律走行装置100の右折又は左折に対応する「方向転換経路」と呼ぶことにする。また、直進経路のうち、主方向に延びる経路を「第1経路」と呼ぶ。
【0152】
その後も、矩形領域RA1内に経路が通過していない有効セルが存在する限り(ステップS454において「No」である限り)、走行領域内経路作成部553が上記の規則に従って経路を延ばすことにより、矩形領域RA1内には、
図18の太矢印に示すような、始点セルSCから開始し矩形領域RA1に含まれる全ての有効セルを通過する矩形領域内経路が作成される。
【0153】
他の実施形態において、走行領域内経路作成部553は、矩形領域内経路を作成するときに、各有効セルに対して清掃条件を設定し、当該清掃条件を矩形領域内経路と関連付けてもよい。
【0154】
図18に示すように、矩形領域内経路は、主方向に延びる第1経路と、主方向に対して垂直に延びる第2経路と、を組み合わせることにより作成されている。すなわち、矩形領域内経路は、自律走行装置100の直進に対応する直進経路と、自律走行装置100の右折又は左折に対応する方向転換経路と、を組み合わせることにより作成されている。
これにより、矩形領域RA1をまんべんなく通過する矩形領域内経路を、自律走行装置100の直進と方向転換との単純な動作の組み合わせにより作成できる。
【0155】
また、
図18に示す矩形領域内経路においては、第1経路は主方向に沿って複数の有効セルにわたり延びる一方、主方向に対して垂直な方向に延びる第2経路は、始点セルSCから開始される経路を除き、1つのセル分しか延びていない。このように、矩形領域RA1の主方向に沿って第1経路を複数の有効セルにわたり延ばすことにより、すなわち、主方向に沿ってより長い経路を作成することにより、矩形領域内経路に含まれる方向転換経路の数を最小にできる。
【0156】
上記のステップS451〜S454を実行して1つの矩形領域RA1内に矩形領域内経路を作成後、走行領域内経路作成部553は、矩形領域内経路を未だ作成していない矩形領域RA1〜RA3が存在するか否かを判定する(ステップS46)。
【0157】
矩形領域内経路を作成していない矩形領域RA1〜RA3が存在していない場合(ステップS46において「No」の場合)には、手動操作教示モードを終了する。
その一方、矩形領域内経路を作成していない矩形領域RA1〜RA3が存在する場合(ステップS46において「Yes」の場合)、次にどの矩形領域RA2、RA3内を自律走行装置100に走行させるかを決定する(ステップS47)。以下では、矩形領域RA1の矩形領域内経路の作成が終了した場合を例にとって説明する。
【0158】
次にどの矩形領域RA2、RA3内を自律走行装置100に走行させるかを決定するにあたり、走行領域内経路作成部553は、障害物の存在などを考慮して、矩形領域RA1内に作成された矩形領域内経路の終点である終点セルECと、矩形領域RA2及び矩形領域RA3の四隅に対応する有効セルのそれぞれとの間に接続経路を計画する。
【0159】
走行領域内経路作成部553は、計画された接続経路のうち、最短の接続経路にて矩形領域RA1の終点セルECと接続する有効セルを次の矩形領域についての始点セルSCと決定する。
図19に示す例では、矩形領域RA1の終点セルECに隣接し矩形領域RA3に含まれる有効セルを始点セルSCと決定できる。すなわち、矩形領域RA3を、次に自律走行装置100を走行させる矩形領域と決定できる。
図19は、次に走行すべき矩形領域の決定方法の一例を模式的に示す図である。
【0160】
このように、自律走行装置100が次に走行すべき矩形領域RA2、RA3として複数の矩形領域RA2、RA3が候補として存在する場合に、複数の矩形領域RA2、RA3の候補のうち、矩形領域RA1の終点セルECと最短距離にて接続される始点セルSCを有する矩形領域RA3を、次に走行すべき矩形領域と決定することにより、最短距離である走行効率がよい走行領域内経路を作成できる。
【0161】
上記のようにして次に走行すべき矩形領域を決定後、走行領域内経路作成部553は、矩形領域RA1の終点セルEC1と、当該次に走行すべきと決定した矩形領域RA3の始点セルSCとを、上記にて計画した接続経路にて接続する(ステップS48)。
その後、矩形領域RA3において矩形領域内経路が作成される。
【0162】
その後、矩形領域内経路が全ての矩形領域RA1〜RA3において作成されるまで、上記のステップS45(ステップS451〜S454)〜S48が繰り返し実行される。その結果、
図12などにて示した走行領域TAに対して、最終的に
図20の太矢印にて示すような、設定された走行領域TA内を自律走行装置100がまんべんなく走行する走行領域内経路が作成される。
図20は、走行領域内経路の一例を示す図である。
【0163】
走行領域内経路を作成後、走行領域内経路作成部553は、作成した走行領域内経路を、自律走行装置100が通過する通過点の集合に変換する。その後、走行領域内経路作成部553は、走行領域内経路を変換して生成した各通過点に対して当該通過点を通過する時間を関連付け、さらに、必要に応じて、各通過点における清掃条件を対応する通過点に関連付けることで、
図21に示すような走行スケジュール500を作成する。
図21は、走行スケジュールの一例を示す図である。
【0164】
図21に示す走行スケジュール500において、T
0、T
1、・・・T
nは、走行経路内経路の各通過点を通過する時間である。(x
0,y
0)、(x
1,y
1)、・・・(x
n,y
n)は、走行経路内経路の各通過点の座標値である。θ
0、θ
1、・・・θ
nは、走行経路内経路の各通過点における自律走行装置100の姿勢である。
【0165】
走行スケジュール500において、S
0、S
1、・・・S
nは、走行経路内経路の各通過点における洗浄液の供給量である。W
0、W
1、・・・W
nは、走行経路内経路の各通過点における床面Fの洗浄力である。P
0、P
1、・・・P
nは、走行経路内経路の各通過点における吸引口O2の吸引力である。
【0166】
手動操作教示モードにおいて、上記のステップS41〜S48(及び、ステップS451〜S454)を実行することにより、走行環境を表すグローバルマップ上において走行領域TAを指定するとの容易な方法により、自律走行装置100が走行領域TAをまんべんなく走行できる走行経路、すなわち、走行領域内経路を精度よく作成できる。
【0167】
(5−3)自律走行モードの動作
次に、
図7のステップS2において実行される、手動操作教示モードにおいて作成された走行領域内経路を再現する自律走行モードの実行時における自律走行装置100の動作について、
図22を用いて説明する。
図22は、自律走行モードの実行時の自律走行装置の動作を示すフローチャートである。
【0168】
切替部91において「自動」が選択されて自律走行モードを実行すると決定すると、自律走行装置100は、走行スケジュール500に従って自律的に走行する自律走行モードを開始する。自律走行モードは、具体的には、以下のようにして実行される。
【0169】
以下の説明においては、自律走行モードの実行開始からの経過時間t
m−1までの走行が実行済みであるとする。ここで、mは、m番目の走行のための制御を示す。まず、SLAM部555が、前方検出器5551a及び後方検出器5551bから、前方の障害物に関する情報及び後方の障害物に関する情報を取得する(ステップS21)。
【0170】
その後、位置推定部5555が、エンコーダ111にて測定された走行モータ11の回転量、グローバルマップ、及び上記のステップS21において取得された情報に基づいて得られたローカルマップに基づいて、走行部1のx−y座標上の位置を推定する(ステップS22)。例えば、自律走行装置100の位置が、x−y座標上において、(x
m’,y
m’、θ
m’)と推定されたとする。
【0171】
走行部1の位置を推定後、経過時間決定部5557が、自律走行モードの実行開始からの経過時間t
mを決定し(ステップS23)、走行再現部557が、経過時間t
mにおける再現走行制御指令を、以下のように算出する(ステップS24)。
【0172】
今、経過時間t
mが、走行スケジュール500に記憶された時間T
L(に最も近い)であると決定されたとする。この場合、走行再現部557は、次の時間T
L+1に関連付けられた位置情報(x
L+1,y
L+1,θ
L+1)を、走行スケジュール500から読み出し、経過時間t
mにおける再現走行制御指令を、推定された位置情報と目標とする位置情報との差分(x
L+1−x
m’,y
L+1−y
m’,θ
L+1−θ
m’)に基づいて算出する。
【0173】
再現走行制御指令を算出後、走行再現部557は、再現走行制御指令を走行制御部53に出力する(ステップS25)。これにより、走行制御部53は、受信した再現走行制御指令に基づいて走行モータ11を制御することで、走行部1を走行スケジュール500に従って自律的に移動させる。
【0174】
他の実施形態において、走行スケジュール500に清掃条件が関連付けられている場合には、上記のステップS24〜S25において、走行再現部557は、再現清掃条件を算出し、当該再現清掃条件に基づいて清掃制御部51を制御してもよい。
【0175】
具体的には、走行再現部557は、時間T
Lに関連付けられた清掃条件(S
L,W
L,P
L)を走行スケジュール500から読み出し、当該清掃条件(S
L,W
L,P
L)を経過時間t
mにおける再現清掃条件として決定する。その後、走行再現部557は、再現清掃条件を清掃制御部51に出力する。これにより、再現清掃条件に従って、清掃部3を制御できる。
【0176】
走行部1を再現走行制御指令に基づいて制御後、走行再現部557は、走行スケジュール500に記憶された走行動作を全て実行したかどうかを確認する(ステップS26)。
走行スケジュール500に記憶された走行動作が全て終了したかどうかは、例えば、走行スケジュール500の末尾にある識別子(例えば、「エンド・オブ・ファイル」を示す識別子など)を検出することにより確認できる。
【0177】
走行スケジュール500に記憶された走行動作が全て実行されていないと判定される限り(ステップS26において「No」である限り)、上記のステップS21〜S25が繰り返し実行される。
一方、走行スケジュール500に記憶された全ての走行動作が実行されたと判定されたとき、すなわち、自律走行装置100が走行領域内経路を全て走行したと判定されたとき(ステップS26において「Yes」の場合)に、自律走行モードの実行を終了する。
【0178】
これにより、自律走行装置100は、走行スケジュール500に記憶された走行動作を忠実に再現して、設定された走行領域内を自律的にまんべんなく走行できる。
【0179】
他の実施形態において、走行スケジュール500に記憶された走行動作を全て実行した場合のみでなく、例えば、自律走行装置100にて異常が発生した場合、ユーザにより自律走行モードの実行停止が指令された場合などにおいても、自律走行モードの実行が停止されてもよい。
【0180】
2.第2実施形態
(1)第2実施形態の概要
上記の第1実施形態においては、走行スケジュール500として一度作成された走行領域内経路は、変更されることはなかった。これにより、自律走行装置100は、同じ走行領域内経路を自律的に再現走行できる。
ただし、例えば柔らかい表面(例えば、地表面)などを自律走行装置100が走行すると、同一の走行経路を繰り返し走行するために、走行部1の主輪13により当該同一の走行経路の轍が柔らかい表面にできることがある。
【0181】
従って、第2実施形態に係る自律走行装置100においては、同一の走行経路を走行することによって轍ができることを回避するために、自律走行モードの実行毎、又は、自律走行モードを所定の回数実行する毎に、自律走行装置100が走行する経路を自律的に変更する。
【0182】
第2実施形態に係る自律走行装置100においては、自律走行モードの実行毎、又は、所定の回数実行する毎に、走行経路を変更すること以外は、第1実施形態に係る自律走行装置100と同じ構成及び機能を有する。従って、以下においては、自律走行モードの実行毎、又は、所定の回数実行する毎に、どのように走行経路を変更するかについてのみを説明し、自律走行装置100の構成要素及びその機能などの説明は省略する。
【0183】
(2)走行経路の変更方法
以下、一度作成された走行領域内経路を変更する方法について、
図23を用いて説明する。
図23は、走行領域内経路を変更する方法を示すフローチャートである。以下の説明では、
図24に示すように、セルが配置されたx−y座標平面上に配置され、主方向がy軸方向に延びる矩形領域RA4に作成された矩形領域内経路を変更する実施例について説明する。
図24は、変更前の走行領域内経路の一例を示す図である。
【0184】
以下に説明する矩形領域内経路の変更は、自律走行モードが開始されてから自律走行装置100が走行開始するまでの間に実行されてもよいし、手動操作教示モードの実行時に複数回実行され、作成された矩形領域内経路毎に走行スケジュール500として記憶されてもよい。
【0185】
矩形領域内経路の変更を開始すると、走行領域内経路作成部553は、例えば座標の回転を表す数式などを用いて、矩形領域RA4を所定の角度だけ回転して回転矩形領域RA4’を作成する(ステップS201)。
ステップS201を実行することにより、例えば、
図25の太実線に示すような回転矩形領域RA4’が、x−y座標平面上に作成される。
図25は、回転矩形領域の一例を示す図である。
【0186】
上記の矩形領域(あるいは、回転矩形領域)を回転させる所定の角度は、矩形領域内経路(回転矩形領域内経路)の作成毎に変化させる。これにより、矩形領域内経路(回転矩形領域内経路)の変更毎に、異なる走行経路を作成できる。
【0187】
次に、走行領域内経路作成部553は、回転矩形領域RA4’に含まれるセルにスコアを付与する(ステップS202)。
本実施形態において、走行領域内経路作成部553は、回転矩形領域RA4’に含まれるセルのうち、x軸方向に配置されるセルについては始点セルSCから離れるほど高いスコアを付与すると決定する。一方、y軸方向に配置されるセルについては同一のスコアを付与すると決定する。
【0188】
その結果、走行領域内経路作成部553は、例えば、回転矩形領域RA4’内に含まれるセルに対して、
図26に示すようなスコアを付与する。
図26は、回転矩形領域に含まれるセルに付与したスコアの一例を示す図である。
【0189】
次に、走行領域内経路作成部553は、始点セルSCから各セルへと経路を延ばしていく(ステップS203)。具体的には、走行領域内経路作成部553は、例えば、以下の条件(i)〜(iv)に従って経路を延ばしていく。
【0190】
(i)x軸方向又はy軸方向に隣接するセルのうち、最高のスコアが付与されたセルへ経路を延ばす。
(ii)経路が複数方向に延びることができるときは延びが最短の方向に延ばす。
(iii)y軸の負方向に同一スコアのセルがある場合には当該セルに経路を延ばす。
(iv)経路がすでに延びたセルに対しては、当該セルを再度通過しないと経路が計画できないなど特別な事情がない限り、再度経路を延ばさない。
【0191】
回転矩形領域RA4’内の全てのセルを経路が通過するまで(ステップS204において「Yes」となるまで)、走行領域内経路作成部553は、上記の条件に従ってセル間に経路を延ばす。
【0192】
上記のステップS201〜S204を実行することにより、
図25などに示した回転矩形領域RA4’に対しては、
図27の太矢印にて示すような、回転前の矩形領域RA4に対して作成されていた矩形領域内経路とは異なる回転矩形領域内経路が作成される。
図27は、回転矩形領域内経路の一例を示す図である。
【0193】
図27に示すように、回転矩形領域内経路は、y軸方向(走行環境の第1方向の一例)に延びる経路(第3経路の一例)と、x軸方向(第1方向に対して垂直な第2方向の一例)に延びる経路(第4経路の一例)と、を組み合わせることにより作成されている。すなわち、回転矩形領域内経路は、自律走行装置100の直進に対応する直進経路と、自律走行装置100の右折又は左折に対応する方向転換経路(第3経路と第4経路を組み合わせて形成される)と、を組み合わせることにより作成されている。
これにより、回転矩形領域RA4’をまんべんなく通過する回転矩形領域内経路を、自律走行装置100の直進と方向転換との単純な動作の組み合わせにより簡単に作成できる。
【0194】
3.他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。また、上記の第1実施形態においてフローチャートにて示した各処理の内容、処理の順番等は、発明の要旨を逸脱しない範囲で変更できる。また、必要に応じてフローチャートにて示した処理のいずれかを省略できる。
【0195】
(A)自律走行装置100は、自律的に清掃作業を実行する清掃機以外の走行装置であってもよい。例えば、自律走行装置100は、宣伝用ロボットであってもよい。その他、自律走行装置100は、自律的に走行するための走行部(とそれを制御する制御部)のみにて構成されていてもよい。この場合は、例えば、当該自律走行装置と、所望の機能を発揮するためのロボットシステムと、を組み合わせて、所望の機能を有するロボット(装置)を構成できる。
【0196】
自律走行装置100が清掃作業を自律的に行う装置以外である場合には、走行スケジュール500には、清掃条件が記憶されない。または、清掃条件の代えて、自律走行装置100の用途に応じた制御に関する情報が記憶されていてもよい。
【0197】
(B)位置推定部5555は、前方検出器5551a、後方検出器5551bから得られた情報のみを用いて、レーザーオドメトリによる位置推定により走行部1の位置推定を実行してもよい。レーザオドメトリによる位置推定方法としては、例えば、ICP(Iterative Closest Point)法などがある。
【0198】
(C)例えば、床面Fと主輪13との間の滑りが少ない場合、前方検出器5551a及び後方検出器5551bにより得られる情報から十分な地図情報が得られない場合などには、位置推定部5555は、走行モータ11の回転量のみに基づいて、走行部1の位置推定を行ってもよい。
【0199】
(D)第1実施形態においては、主方向がx軸方向又はy軸方向に対して平行な矩形領域RA1〜RA3のみが存在していた。例えば、第1実施形態において、主方向がx軸方向にもy軸方向にも平行ではない矩形領域が作成された場合には、以下のようにして当該矩形領域内の有効セルにスコアを付与し、第1実施形態及び第2実施形態において説明した条件に従って経路を延ばすことにより矩形領域内経路を作成できる。
【0200】
まず、走行領域内経路作成部553は、当該矩形領域の主方向(すなわち、長手方向)のx軸方向成分及びy軸方向成分のいずれが長いかを決定する。主方向のy軸方向成分の方が長い場合には、当該矩形領域に含まれるセルのうち、x軸方向に配置されるセルについては始点セルSCから離れるほど高いスコアを付与する。一方、y軸方向に配置されるセルについては同一のスコアを付与する。
【0201】
一方、主方向のx軸方向成分の方が長い場合には、当該矩形領域に含まれるセルのうち、y軸方向に配置されるセルについては始点セルSCから離れるほど高いスコアを付与し、x軸方向に配置されるセルについては同一のスコアを付与する。