(57)【要約】【課題】走行面に対する作業品質を改善しつつ、互いに隣接する場所の作業間隔を、より短くすることが可能な自走式装置、当該自走式装置の制御方法、および、当該自走式装置の制御プログラムを提供する。【解決手段】走行面に対して作業を行なう自走式装置１００は、仮想的に設定された互いに隣接する平行な４本の走行経路のうちの２本目（たとえば、走行経路Ｌ２）または３本目（たとえば、走行経路Ｌ３）から走行を開始する。自走式装置は、走行中の走行経路から隣接する走行経路に移動しないように４本の走行経路（走行経路Ｌ１〜Ｌ４）を順に走行する。自走式装置１００は、走行経路Ｌ１〜Ｌ４の４本の走行経路の走行が完了すると、次の４本の走行経路（走行経路Ｌ５〜Ｌ８）を同様の順序で走行する。【選択図】図４
2015225507.tif 000002
【特許請求の範囲】
【請求項１】
自走式装置であって、
前記自走式装置を駆動するための駆動部と、
前記自走式装置の走行中に走行面に対して作業を行なうための作業部と、
前記駆動部を駆動して前記自走式装置の走行を制御するための走行制御部とを備え、
前記走行制御部は、
仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から前記自走式装置の走行を開始させ、
前記自走式装置が走行中の経路から隣接する経路に移動しないように前記４本の経路を順に走行させる、自走式装置。
【請求項２】
前記自走式装置は、当該自走式装置の進行方向に存在する物体と当該自走式装置との間の距離を検出するための距離検出部をさらに備え、
前記走行制御部は、前記距離が予め定められた距離よりも短くなった場合に、走行中の経路から次の経路に移動するように前記自走式装置を制御する、請求項１に記載の自走式装置。
【請求項３】
前記作業部は、走行面に対して作業を行なうための第１の作業装置および第２の作業装置を含み、
前記第１の作業装置は、前記第２の作業装置よりも、前記自走式装置の進行方向側に設けられている、請求項１または２に記載の自走式装置。
【請求項４】
前記距離検出部は、経路に対して垂直な方向に存在する物体と前記自走式装置との間の距離をさらに検出し、
前記自走式装置は、
当該自走式装置が前記４本の経路のうちの４本目の経路に位置する場合に、経路に対して垂直な方向に存在する物体と前記自走式装置との間の距離を用いて、前記４本の経路の次に前記自走式装置が走行する経路の数を算出するための算出部と、
前記経路の数が４本よりも少ない場合に、未走行の経路の走行順序を決定するための決定部とをさらに備える、請求項２に記載の自走式装置。
【請求項５】
前記決定部は、走行中の経路から隣接する経路に移動しないように、前記未走行の経路の走行順序を決定する、請求項４に記載の自走式装置。
【請求項６】
前記自走式装置は、前記自走式装置の位置を検出するための位置検出部をさらに備え、
前記駆動部は、駆動輪を含み、
前記走行制御部は、前記自走式装置の位置から特定された前記作業部の中心位置が、前記４本の経路の各経路内を通るように前記駆動輪を制御する、請求項１〜５のいずれか１項に記載の自走式装置。
【請求項７】
自走式装置の制御方法であって、
前記自走式装置は、
前記自走式装置を駆動するための駆動部と、
前記自走式装置の走行中に走行面に対して作業を行なうための作業部と、
前記駆動部を駆動して前記自走式装置の走行を制御するための制御装置とを備え、
前記制御方法は、
仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から前記自走式装置の走行を開始させるステップと、
前記自走式装置が走行中の経路から隣接する経路に移動しないように前記４本の経路を順に走行させるステップとを含む、制御方法。
【請求項８】
自走式装置の制御プログラムであって、
前記自走式装置は、
前記自走式装置を駆動するための駆動部と、
前記自走式装置の走行中に走行面に対して作業を行なうための作業部と、
前記駆動部を駆動して前記自走式装置の走行を制御するための制御装置とを備え、
前記制御プログラムは、前記制御装置に、
仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から前記自走式装置の走行を開始させるステップと、
前記自走式装置が走行中の経路から隣接する経路に移動しないように前記４本の経路を順に走行させるステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、自走式装置の制御に関し、特に、走行面に対して作業を行なう自走式装置の制御に関する。
【背景技術】
【０００２】
近年、走行面に対して作業を行なう様々な自走式装置が開発されている。たとえば、特許文献１は、自走式の芝刈り機を開示している。当該芝刈り機は、所定の作業エリアに対し作業を行なう場合に、可能な限り走行距離を少なくすることを目的としている。当該芝刈り機は、所定の作業エリアを複数の平行な直線経路に分割し、これらの経路を順に走行する。当該芝刈り機は、走行中の経路から次の経路に移動するときに、２本以上の間隔を空けることで、余分な旋回動作を抑制する。
【０００３】
特許文献２は、自走式のロボット掃除機を開示している。当該ロボット掃除機は、掃除空間をセルに区画し、これらのセルをらせん状に走行することで、セルに対する掃除能力を向上させることを目的とする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−３２００４５号公報
【特許文献２】特開２００６−３０２２５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１が開示する芝刈り機や、特許文献２が開示するロボット掃除機の他に、走行面に散水しながらブラシがけを行なうことが可能な自走式装置がある。当該自走式装置は、ブラシよりも後ろに設けられたスキージを用いて、散水した水を回収する。このような自走式装置においては、旋回するときに生じる内輪差に起因して、散水した水を回収できないという問題がある。
【０００６】
ここで、特許文献２に開示するロボット掃除機は、らせん状に走行するので、内輪差が大きくなってしまう。このため、このロボット掃除機のような走行方法を上記の自走式装置に適用した場合には、水残りが生じてしまう。したがって、水残りが生じない自走式装置が望まれている。
【０００７】
一方で、当該自走式装置は、走行面に対する清掃を均一に仕上げるには、走行面が乾く前に隣接する場所を清掃する必要がある。すなわち、隣接する場所は、時間間隔を空けずに清掃される必要がある。
【０００８】
ここで、特許文献１が開示する芝刈り機は、複数の直線経路に分割された作業エリアを、２本以上の直線経路を飛ばしながら走行し、作業エリアの最後の直線経路まで進んでから、２列目の直線経路に戻る。このため、この芝刈り機のような走行方法では、隣接する直線経路間で清掃の時間間隔が空いてしまい、自走式装置は、走行面の清掃を均一に仕上げることができない。このため、走行面の清掃を均一に仕上げることが可能な自走式装置が望まれている。
【０００９】
本開示は上述のような問題点を解決するためになされたものであって、その目的は、走行面に対する作業品質を改善しつつ、互いに隣接する場所の作業間隔を、より短くすることが可能な自走式装置、当該自走式装置の制御方法、および、当該自走式装置の制御プログラムを提供することである。
【課題を解決するための手段】
【００１０】
一実施の形態に従うと、自走式装置を駆動するための駆動部と、自走式装置の走行中に走行面に対して作業を行なうための作業部と、駆動部を駆動して自走式装置の走行を制御するための走行制御部とを備える自走式装置が提供される。走行制御部は、仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から自走式装置の走行を開始させ、自走式装置が走行中の経路から隣接する経路に移動しないように４本の経路を順に走行させる。
【００１１】
好ましくは、自走式装置は、当該自走式装置の進行方向に存在する物体と当該自走式装置との間の距離を検出するための距離検出部をさらに備える。走行制御部は、距離が予め定められた距離よりも短くなった場合に、走行中の経路から次の経路に移動するように自走式装置を制御する。
【００１２】
好ましくは、作業部は、走行面に対して作業を行なうための第１の作業装置および第２の作業装置を含む。第１の作業装置は、第２の作業装置よりも、自走式装置の進行方向側に設けられている。
【００１３】
好ましくは、距離検出部は、経路に対して垂直な方向に存在する物体と自走式装置との間の距離をさらに検出する。自走式装置は、当該自走式装置が４本の経路のうちの４本目の経路に位置する場合に、経路に対して垂直な方向に存在する物体と自走式装置との間の距離を用いて、４本の経路の次に自走式装置が走行する経路の数を算出するための算出部と、経路の数が４本よりも少ない場合に、未走行の経路の走行順序を決定するための決定部とをさらに備える。
【００１４】
好ましくは、決定部は、走行中の経路から隣接する経路に移動しないように、未走行の経路の走行順序を決定する。
【００１５】
好ましくは、自走式装置は、自走式装置の位置を検出するための位置検出部をさらに備える。駆動部は、駆動輪を含む。走行制御部は、自走式装置の位置から特定された作業部の中心位置が、４本の経路の各経路内を通るように駆動輪を制御する。
【００１６】
他の実施の形態に従うと、自走式装置の制御方法が提供される。自走式装置は、自走式装置を駆動するための駆動部と、自走式装置の走行中に走行面に対して作業を行なうための作業部と、駆動部を駆動して自走式装置の走行を制御するための制御装置とを備える。制御方法は、仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から自走式装置の走行を開始させるステップと、自走式装置が走行中の経路から隣接する経路に移動しないように４本の経路を順に走行させるステップとを含む。
【００１７】
さらに他の実施の形態に従うと、自走式装置の制御プログラムが提供される。自走式装置は、自走式装置を駆動するための駆動部と、自走式装置の走行中に走行面に対して作業を行なうための作業部と、駆動部を駆動して自走式装置の走行を制御するための制御装置とを備える。制御プログラムは、制御装置に、仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から自走式装置の走行を開始させるステップと、自走式装置が走行中の経路から隣接する経路に移動しないように４本の経路を順に走行させるステップとを実行させる。
【発明の効果】
【００１８】
ある局面において、走行面に対する作業品質を改善しつつ、互いに隣接する場所の作業間隔を、より短くすることができる。
【００１９】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００２０】
【図１】第１の実施の形態に従う自走式装置の外観を概略的に表した図である。
【図２】第１の実施の形態に従う自走式装置の上側から見た透視図である。
【図３】旋回半径の違いによる、ブラシとスキージとの通過領域の違いを示した図である。
【図４】第１の実施の形態に従う自走式装置が作業領域を走行している様子を概略的に示した概念図である。
【図５】第１の実施の形態に従う自走式装置の主要なハードウェア構成を示すブロック図である。
【図６】第１の実施の形態に従う自走式装置の機能構成を示すブロック図である。
【図７】作業マップを中心とした座標系を示した図である。
【図８】車体を中心とした座標系を示した図である。
【図９】第１の実施の形態に従う自走式装置の平面図である。
【図１０】第１の実施の形態に従う自走式装置が実行する処理の一部を表わすフローチャートである。
【図１１】第１の実施の形態に従う自走式装置の清掃開始から終了までの大まかな処理の手順を示すフローチャートである。
【図１２】第１の実施の形態に従う自走式装置の清掃処理の手順を示すフローチャートである。
【図１３】第１の実施の形態に従う自走式装置の旋回処理の手順を示すフローチャートである。
【図１４】残りの経路に対する走行順序の決定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、図面を参照しつつ、本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態、および／または、各変形例は、選択的に組み合わされてもよい。
【００２２】
＜第１の実施の形態＞
［概要］
図１を参照して、第１の実施の形態に従う自走式装置１００の概要について説明する。図１は、自走式装置１００の外観を概略的に表した図である。
【００２３】
図１に示されるように、自走式装置１００は、駆動輪３５Ｒ，３５Ｌと、駆動ユニット３７と、レーザレンジファインダ３９と、キャスタ４１と、ブラシ４３と、スキージ４５と、ボタン４７と、ＬＣＤ（Liquid  Crystal  Display）４９とを有する。
【００２４】
自走式装置１００は、走行面に接触させたブラシ４３を回転させつつ走行することで、走行面を清掃する。走行面は、たとえば、床面、地面などを含む。自走式装置１００は、車体下面の前側（すなわち、進行方向側）に左右２つのキャスタ４１を有する。また、自走式装置１００は、車体下面の後ろ側（すなわち、進行方向の反対側）に左右２つの駆動輪３５Ｌ，３５Ｒを有する。２個のキャスタ４１と、駆動輪３５Ｌと、駆動輪３５Ｒとの４個の車輪は接地し、自走式装置１００を支持する。
【００２５】
自走式装置１００は、車体下面にブラシ４３、スキージ４５、および水散布部（図示しない）を有する。水散布部は、床面に水を散布する。自走式装置１００は、ブラシ４３を回転させて床を磨き、スキージ４５を通して汚水を回収しながら走行する。自走式装置１００は、自走式装置１００の周囲にある物体との距離を測定するレーザレンジファインダ３９を車体の前面に設けられる。
【００２６】
自走式装置１００は、内部に充電池（図示しない）を有し、走行、水の散布、ブラシの回転、汚水の回収を電力によって行なう。自走式装置１００は、装置内部に洗浄タンクと、汚水タンクとを有する。自走式装置１００は、予め洗浄タンクに注入した水を散布し、回収した汚水を汚水タンクに貯める。自走式装置１００は、車体上面にボタン４７を有し、自走式装置１００のユーザのボタン押下を受けると清掃を開始する。また、自走式装置１００は、車体上面にＬＣＤ４９を有し、エラーの発生時などにエラー情報などをユーザに向けて表示する。
【００２７】
以下では、図２を参照して、自走式装置１００が有する各構成についてさらに詳細に説明する。図２は、自走式装置１００を上側から見た透視図である。図２には、駆動輪３５Ｌと、駆動輪３５Ｒと、ブラシ４３と、スキージ４５と、レーザレンジファインダ３９との位置関係が示される。
【００２８】
駆動ユニット３７は、駆動輪３５Ｌを駆動するモータＲ（図示しない）と、駆動輪３５Ｒを駆動するモータＬ（図示しない）と、駆動輪３５Ｌの回転量を検出するエンコーダＲ（図示しない）と、駆動輪３５Ｒの回転量を検出するエンコーダＬ（図示しない）とを有する。駆動輪３５Ｌおよび駆動輪３５Ｒの回転軸は、同軸上に設けられる。駆動輪３５Ｌは、回転軸に設けられた駆動軸を介してモータＬと接続される。当該モータＬは、エンコーダＬに電気的に接続される。モータＬの回転数は、エンコーダＬにより読み取られる。同様に、駆動輪３５Ｒは、回転軸に設けられた駆動軸を介してモータＲに接続される。当該モータＲは、エンコーダＲに電気的に接続される。モータＲの回転数は、エンコーダＲにより読み取られる。
【００２９】
レーザレンジファインダ３９は、光学式の距離測定機である。レーザレンジファインダ３９は、１軸のレーザ測距計を測距軸に垂直な回転軸に沿って回転させることで、平面内の各方位の距離を測定する。すなわち、レーザレンジファインダ３９は、進行方向上に存在する物体と自走式装置１００との間の距離（以下、「物体距離」とも称する。）を測定する。より具体的には、レーザレンジファインダ３９は、自走式装置１００の進行方向を中心とする左右±９０度の視野を有し、所定の角度ごと（たとえば、１度ごと）に壁または障害物までの距離を測定する。これにより、レーザレンジファインダ３９は、１スキャンで合計１８０個の距離情報を出力する。
【００３０】
ブラシ４３は、水平面内で回転する円形のブラシである。ブラシ４３は、ブラシ４３の上方に設けられたブラシモータ（図示しない）によって回転駆動される。自走式装置１００は、昇降機構（図示しない）を有し、当該昇降機構は、ブラシ４３を上下方向（重力方向）に移動する。これにより、自走式装置１００は、移動用にブラシを床面から離した状態と、清掃用にブラシを床面に接地させた状態とを切り替えることができる。
【００３１】
スキージ４５は、三日月状の形状を有し、汚水を回収する機構を有する。スキージ４５の外周は、板上のゴムで形成される。ゴムの下端は、床面に均一に押しつけられる。スキージ４５の内部は、中空になっており、スキージ４５の上方に設けられた配管と接続される。配管は、汚水タンクに接続され、汚水タンクから吸引ブロア（図示しない）へと接続される。吸引ブロアが稼働すると汚水タンク内が低圧になり、自走式装置１００は、スキージ４５を通して床面の水とゴミを回収する。スキージ４５は、自走式装置１００が走行しているときに、ブラシ４３と同じ領域を通過するように設けられる。すなわち、ブラシ４３とスキージ４５とは、それらの中心が進行方向上に位置するように設けられる。
【００３２】
［自走式装置１００の走行方法］
図３を参照して、自走式装置１００の走行方法の概要について説明する。図３は、旋回半径の違いによる、ブラシ４３とスキージ４５との通過領域の違いを示した図である。
【００３３】
ブラシ４３は、スキージ４５よりも、自走式装置１００の進行方向側に設けられる。このため、自走式装置１００の折り返し時や旋回時に、内輪差が生じ、ブラシ４３とスキージ４５との間には通過領域に差がでる。すなわち、車体の前側にあるブラシ４３に対して後ろ側にあるスキージ４５が、内輪差の分だけ内側を通り、外側に水残りが生じる。自走式装置１００は、床面を綺麗に清掃できないことになる。水残りの領域は、ブラシ４３とスキージ４５との前後の距離が大きいほど、自走式装置１００の内輪差が大きいほど、旋回半径が小さいほど、大きくなる。
【００３４】
図３（Ａ）および図３（Ｂ）には、自走式装置１００の折り返し時における水残りの様子が示される。図３（Ａ）および図３（Ｂ）の例においては、自走式装置１００は、紙面の上方向に進行し、紙面の左側の走行経路に向かって１８０度旋回している。
【００３５】
図３（Ａ）には、水を散布するブラシ通過領域６１と、散布した水を回収するスキージ通過領域６３とが示される。図３（Ａ）に示されるように、自走式装置１００の折り返し幅が走行経路の幅と同じであると、ブラシ通過領域６１がスキージ通過領域６３から大きくはみ出し、水が回収されない領域が残る。
【００３６】
図３（Ｂ）には、水を散布するブラシ通過領域６５と、散布した水を回収するスキージ通過領域６７とが示される。図３（Ｂ）に示されるように、自走式装置１００の折り返し幅が走行経路の幅の２倍にすると、ブラシ通過領域６５がスキージ通過領域６７に覆われて、自走式装置１００は、もれなく水を回収できる。
【００３７】
このように、水残りを少なくするには、旋回半径をなるべく大きくする走行方法が有効である。このため、本実施の形態に従う自走式装置１００は、以下で説明するように、走行中の経路から隣接する経路に移動しないように旋回する。これにより、旋回半径が大きくなり、自走式装置１００は、水残しを無くすことができる。
【００３８】
［自走式装置１００の走行経路］
図４を参照して、自走式装置１００の走行経路について説明する。図４は、自走式装置１００が作業領域５０を走行している様子を概略的に示した概念図である。
【００３９】
図４には、自走式装置１００が清掃を行なう作業領域５０が示される。自走式装置１００は、作業領域５０に仮想的な走行経路を設定し、設定した走行経路上を走行する。作業領域５０は、たとえば、屋内領域における壁で囲まれた平坦な床である。一例として、作業領域５０は、略四角形の形状を有する。
【００４０】
自走式装置１００は、仮想的に設定された互いに隣接する平行な４本の走行経路のうちの２本目または３本目から走行を開始し、自走式装置１００が走行中の走行経路から隣接する走行経路に移動しないように４本の走行経路を順に走行する。自走式装置１００は、その４本の走行経路の走行が完了すると、次の４本の走行経路を同様の順序で走行する。自走式装置１００は、４本の走行経路ごとに作業を行なうため、隣接する走行経路の作業時間を短くすることができ、床面が乾く前に隣接する走行経路を清掃することができる。この結果、自走式装置１００は、床面の清掃を均一に仕上げることができる。
【００４１】
また、自走式装置１００は、走行中の走行経路から隣接する走行経路に移動しないように走行することで、折り返し動作の半径を走行経路の間隔よりも大きくすることができる。これにより、内輪差が小さくなり、水残しが減る。また、自走式装置１００は、旋回半径を大きくすることで、旋回可能な最小半径に制限されずに走行することができる。
【００４２】
以下では、自走式装置１００が仮想的な８本の走行経路Ｌ１〜Ｌ８を走行する例について説明する。走行経路Ｌ１〜Ｌ８は、互いに平行であり、互いに隣接する。なお、以下では、説明を簡単にするために、自走式装置１００が設定した走行経路に平行な方向を「経路方向」とも称し、走行経路に垂直な方向を「経路垂直方向」とも称する。
【００４３】
自走式装置１００が走行する走行経路の順序は、４本の走行経路ごとに一定である。すなわち、自走式装置１００は、４本の走行経路を単位として、走行経路ごとに作業を行なう。
【００４４】
より具体的には、自走式装置１００は、まず、走行経路Ｌ１〜Ｌ４の４本を走行単位５２として設定する。自走式装置１００は、走行単位５２のうちの２本目の走行経路Ｌ２から走行を開始する。自走式装置１００は、走行経路Ｌ２を経路方向に進行し、走行経路Ｌ２の終端に到達すると、走行単位５２の走行経路のうちの走行経路Ｌ２に隣接しない経路に移動する。すなわち、自走式装置１００は、走行経路Ｌ２から走行経路Ｌ４に移動する（図４の（１））。
【００４５】
同様に、自走式装置１００は、走行経路Ｌ４を経路方向に進行し、走行経路Ｌ４の終端に到達すると、走行単位５２の走行経路のうちの走行経路Ｌ４に隣接しない経路に移動する。すなわち、自走式装置１００は、走行経路Ｌ４から走行経路Ｌ１に移動する（図４の（２））。
【００４６】
同様に、自走式装置１００は、走行経路Ｌ１を経路方向に進行し、走行経路Ｌ１の終端に到達すると、走行単位５２の走行経路のうちの走行経路Ｌ１に隣接しない経路に移動する。すなわち、自走式装置１００は、走行経路Ｌ１から走行経路Ｌ３に移動する（図４の（３））。
【００４７】
走行単位５２に対する清掃作業が完了すると、自走式装置１００は、次の走行単位５４に移動する。自走式装置１００は、走行単位５４のうちの２本目の走行経路Ｌ６から走行を開始する。自走式装置１００は、走行単位５２の走行経路Ｌ１〜Ｌ４に対して行った順序で、走行単位５４の走行経路Ｌ５〜Ｌ８を走行する。
【００４８】
なお、自走式装置１００は、走行経路の終端に到達したか否かを、経路方向における物体距離に基づいて判断する。すなわち、自走式装置１００は、物体距離が予め定められた距離よりも短くなった場合に、走行中の走行経路から次の走行経路に移動する。これにより、自走式装置１００は、障害物を含む未知の地形であっても自動的に走行することができる。
【００４９】
また、上記では、走行単位の２本目の走行経路から走行を開始する例について説明を行なったが、自走式装置１００は、走行単位の３本目の走行経路から走行を開始するように構成されてもよい。
【００５０】
［ハードウェア構成］
図５を参照して、第１の実施の形態に従う自走式装置１００のハードウェア構成の一例について説明する。図５は、自走式装置１００の主要なハードウェア構成を示すブロック図である。図５に示されるように、自走式装置１００は、駆動部４と、センサ５と、作業部６と、操作部７と、出力部８と、ＧＰＳ（Global  Positioning  System）９と、ＧＰＳアンテナ９Ａと、コンピュータ２０とを備える。コンピュータ２０は、ＲＯＭ（Read  Only  Memory）１と、ＣＰＵ（Central  Processing  Unit）２と、ＲＡＭ（Random  Access  Memory）３と、記憶装置１０と、Ｉ／Ｏ（Input/Output）２１〜２６とを含む。ＲＯＭ１と、ＣＰＵ２と、ＲＡＭ３と、記憶装置１０と、Ｉ／Ｏ２１〜２６とは、互いにバスで接続されている。
【００５１】
ＲＯＭ１は、オペレーティングシステム（ＯＳ：Operating  System）、自走式装置１００の起動時に実行される初期プログラム（ブートプログラム）などを格納する。ＣＰＵ２は、ＲＯＭ１や記憶装置１０などに格納された、オペレーティングシステムや自走式装置１００の制御プログラムなどの各種プログラムを実行することで、自走式装置１００の動作を制御する。また、ＣＰＵ２は、後述する制御手順を所定の制御周期ごとに行ない、所定の走行経路に沿って自走式装置１００を走行させる。ＲＡＭ３は、ＣＰＵ２でプログラムを実行するためのワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００５２】
駆動部４は、Ｉ／Ｏ２１を介してコンピュータ２０に接続される。駆動部４は、自走式装置１００を駆動する。駆動部４は、たとえば、駆動輪３５Ｌおよび駆動輪３５Ｒ（図１、２参照）を含む。駆動部４は、当該駆動部４を駆動するモータ（上述のモータＬ、モータＲ）と、エンコーダ（上述のエンコーダＬ、エンコーダＲ）とに接続される。駆動部４は、モータが指令電圧をＣＰＵ２から受けて所望の速度で回転する。ＣＰＵ２は、エンコーダからの入力により駆動部４の回転量を計測しＲＡＭ３に記憶する。なお、駆動部４は、駆動輪ではなく、ロボットの足などで構成されてもよい。これにより、自走式装置１００は、二足歩行または四足歩行を行ないながら床面に対する作業を行なう。
【００５３】
センサ５は、Ｉ／Ｏ２２を介してコンピュータ２０に接続される。センサ５は、進行方向に存在する物体と自走式装置１００との間の距離（すなわち、物体距離）を検出する。センサ５は、たとえば、レーザレンジファインダ３９（図１、２参照）を含む。センサ５は、ＣＰＵ２に接続され、周囲の物体との距離情報をＣＰＵ２からの読み出しに応じて出力する。なお、距離の検出は、他の方法で検出されてもよい。たとえば、センサ５は、ステレオ視を行なう２つのカメラによって物体距離を検出してもよい。
【００５４】
作業部６は、Ｉ／Ｏ２３を介してコンピュータ２０に接続される。作業部６は、床面に対して予め定められた作業を行なう。たとえば、作業部６は、ブラシ４３と、スキージ４５（図１、２参照）とを含む。作業部６は、当該作業部６を駆動するモータ、当該作業部６を上下方向に動作させる昇降機構、および、吸引ブロアと接続される。ＣＰＵ２は、作業部６の回転、停止および昇降を制御する。なお、作業部６は、ブラシ４３と、スキージ４５との代わりに、以下の第２の実施の形態に従う自走式装置１００Ａのように農耕機に設けられる農耕用の作業部や、以下の第３の実施の形態に従う自走式装置１００Ｂのように芝刈りユニットを含んでもよい。
【００５５】
操作部７は、Ｉ／Ｏ２４を介してコンピュータ２０に接続される。操作部７は、自走式装置１００に対するユーザ操作を受け付ける。操作部７は、清掃の開始指示を受け付けるボタン４７（図１、２参照）を含む。なお、操作部７は、タッチパネルなどによって構成されてもよい。
【００５６】
出力部８は、Ｉ／Ｏ２５を介してコンピュータ２０に接続される。出力部８は、自走式装置１００は、車体上面にＬＣＤ４９を有し、エラーの発生時などにエラー情報などを表示する。なお、出力部８は、音声によりエラー情報を発するように構成されてもよい。
【００５７】
ＧＰＳ９は、Ｉ／Ｏ２６を介してコンピュータ２０に接続される。また、ＧＰＳ９には、ＧＰＳアンテナ９Ａが接続される。ＧＰＳ９は、ＧＰＳアンテナ９Ａを介して、ＧＰＳ信号または基地局からの位置信号（測位信号）を受信する。自走式装置１００は、受信したＧＰＳ信号または位置信号から現在位置を算出する。また自走式装置１００は、ＧＰＳアンテナ９Ａを介して、他の通信機器とデータの送受信を行なう。他の通信機器は、たとえば、スマートフォン、パソコン、サーバ装置、その他通信機能を有する電子機器などである。
【００５８】
記憶装置１０は、たとえば、ｅＭＭＣ（Embedded  MultiMediaCard）などの記憶媒体を含む。記憶装置１０は、本実施の形態に従う各種の処理を実現するためのプログラムなどを格納する。また、記憶装置１０は、オペレーティングシステムなどのプログラムを格納していてもよい。また、記憶装置１０は、自走式装置１００が清掃を行なう範囲を示す作業マップ１１を格納する。作業マップ１１の詳細については後述する。
【００５９】
［機能構成］
図６を参照して、自走式装置１００の機能構成の一例について説明する。図６は、自走式装置１００の機能構成を示すブロック図である。自走式装置１００のＣＰＵ２は、位置検出部２１０と、距離検出部２２０と、算出部２３０と、決定部２４０と、走行制御部２５０とを含む。
【００６０】
位置検出部２１０は、自走式装置１００の位置（以下、「現在位置」とも称する。）を検出する。現在位置の推定方法の詳細については後述する。位置検出部２１０は、検出した現在位置を走行制御部２５０に出力する。
【００６１】
距離検出部２２０は、進行方向に存在する物体と自走式装置１００との間の距離（すなわち、物体距離）を検出する。より具体的には、距離検出部２２０は、走行経路の終端を検出するために、走行経路の直進中に、経路方向の物体距離を検出する。距離検出部２２０は、経路方向の物体距離を走行制御部２５０に出力する。また、距離検出部２２０は、残りの経路数を検出するために、走行経路を走行する間、経路垂直方向の物体距離を検出し、その最小値を記憶する。距離検出部２２０は、記憶している経路垂直方向の物体距離の最小値を算出部２３０に出力する。
【００６２】
算出部２３０は、自走式装置１００が４本の走行経路のうちの４本目の走行経路に位置する場合に、経路垂直方向に存在する物体と自走式装置１００との間の距離を用いて、現在の走行単位（４本の走行経路）の次に走行する経路の経路数を算出する。すなわち、算出部２３０は、残りの経路数を算出する。残りの経路数は、経路垂直方向の物体距離（残り幅）を経路幅で割ることにより算出される。自走式装置１００は、残りの経路数を算出することにより、予め作業領域を決定する必要がなくなり、任意の作業領域を清掃できるようになる。算出部２３０は、算出した残り経路数を決定部２４０に出力する。
【００６３】
決定部２４０は、残りの経路数が４本よりも少ない場合に、未走行の経路の走行順序を決定する。好ましくは、決定部２４０は、走行中の経路から隣接する経路に移動しないように、未走行の経路の走行順序を決定する。これにより、自走式装置１００は、残りの走行経路についても、旋回半径を経路幅以上に保つことができる。この結果、自走式装置１００は、作業範囲の合計の経路数が４の倍数では無いときであっても、床面を綺麗に清掃することができる。
【００６４】
走行制御部２５０は、駆動部４を駆動して自走式装置１００の走行を制御する。走行制御部２５０は、仮想的に設定された互いに隣接する平行な４本の経路のうちの２本目または３本目から自走式装置１００の走行を開始させ、自走式装置１００が走行中の経路から隣接する経路に移動しないように４本の経路を順に走行させる。好ましくは、走行制御部２５０は、自走式装置１００の現在位置から特定された作業部６の中心位置が、各走行経路の内側を通るように駆動部４を制御する。すなわち、走行制御部２５０は、作業部６が走行経路内の予め定められた場所（たとえば、走行経路の中心）を通るように駆動部４を制御する。これにより、自走式装置１００は、作業部６が作業領域内を均等に通過するため、床面の清掃を綺麗に仕上げることができる。
【００６５】
［作業マップ座標系］
図７を参照して、作業マップ１１（図５参照）を中心とした自走式装置１００の現在位置の算出方法について説明する。図７は、作業マップ１１を中心とした座標系を示した図である。
【００６６】
自走式装置１００は、作業を行なう範囲を示した作業マップ１１を記憶装置１０に記憶している。作業マップ１１は、予め定められた記憶されていてもよいし、外部のサーバから配信されてもよいし、自走式装置１００が周囲を探索することにより作成されてもよい。自走式装置１００は、作業マップ１１のｙ軸に沿って、すなわち四角形の辺に略平行に、往復走行する。作業マップ１１は、ｘ、ｙ軸の２次元の格子状で示される。各格子には、作業領域か壁かの種別が設定されている。格子寸法は、たとえば、５０ｍｍである。
【００６７】
作業マップ１１は、たとえば、座標値で定義される。一例として、自走式装置１００は、図７に示されるように、作業マップ１１において、作業領域の上端（ｘ軸のプラス方向）をｘ座標ＧＭＸＰとして定義する。自走式装置１００は、作業マップ１１において、作業領域の下端（ｘ軸のマイナス方向）をｘ座標ＧＭＸＭとして定義する。自走式装置１００は、作業領域の左端（ｙ軸のプラス方向）を作業領域の左端をｙ座標ＧＭＹＰとして定義する。自走式装置１００は、作業領域の左端（ｙ軸のマイナス方向）をｙ座標ＧＭＹＭとして定義する。
【００６８】
位置検出部２１０（図６参照）は、レーザレンジファインダ３９から得られた物体距離と、駆動輪３５Ｌ，３５Ｒに接続されるエンコーダから得られた駆動輪３５Ｌ，３５Ｒの回転量とを基にして、自走式装置１００の位置を推定処理を行ない、作業マップ１１上での現在位置を算出する。現在位置の推定処理の手法としては、たとえば、特開２００９−２２３７５７号公報に記載されたものが用いられる。他にも、現在位置は、ＧＰＳなどを用いて検出されてもよい。
【００６９】
位置検出部２１０は、自走式装置１００の走行中に、所定の制御周期ごとに位置検出処理を行ない、作業マップ１１上における自走式装置１００の現在位置を逐次更新する。自走式装置１００の現在位置ＧＰは、たとえば、座標値（ＧＰＸ，ＧＰＹ）と、進行方向ＧＰθとで示される。現在位置ＧＰのｘ座標（すなわち、ＧＰＸ）は、作業マップ１１上のｘ軸に対応する。現在位置ＧＰのｙ座標（すなわち、ＧＰＹ）は、ｙ軸に対応する。現在位置ＧＰにおける進行方向ＧＰθは、作業マップ１１上のｘ軸と車体の進行方向とによってなされる角度である。進行方向ＧＰθは、反時計回りがプラス方向として定義され、反時計回りがマイナス方向として定義される。進行方向ＧＰθは、たとえば、単位をラジアンとして定義される。
【００７０】
また、位置検出部２１０は、自走式装置１００の現在位置ＧＰを更新するたびに、作業マップ１１上におけるブラシ４３の現在位置ＧＢを検出する。ブラシ４３の現在位置ＧＢは、現在位置ＧＰ（ＧＰＸ，ＧＰＹ，ＧＰθ）と、後述の車体座標系におけるブラシ４３の位置ＰＢ（ＰＢＸ，ＰＢＹ）とを組み合わせて、ブラシ４３の現在位置ＧＢを更新する。ブラシ４３の現在位置ＧＢは、以下の式（１）および式（２）から算出される。
【００７１】
ＧＢＸ＝ＧＰＸ＋ＰＢＸ×ｃｏｓ（ＧＢθ）＋ＰＢＹ×ｓｉｎ（ＧＢθ）・・・（１）
ＧＢＹ＝ＧＰＹ−ＰＢＸ×ｓｉｎ（ＧＢθ）＋ＰＢＹ×ｃｏｓ（ＧＢθ）・・・（２）
【００７２】
［車体座標系］
図８を参照して、自走式装置１００の車体を中心とした各構成の位置について説明する。図８は、自走式装置１００の車体を中心とした座標系を示した図である。
【００７３】
自走式装置１００は、予め車体の寸法などを記憶しており、後述の各処理に利用する。自走式装置１００は、車体を中心とした車体座標系において、駆動輪３５Ｌの位置ＰＬ（ＰＬＸ，ＰＬＹ）、駆動輪３５Ｌの位置ＰＲ（ＰＲＸ，ＰＲＹ）、ブラシ４３の位置ＰＢ（ＰＢＸ，ＰＢＹ）を記憶している。
【００７４】
車体座標系は、図８に示されるように、自走式装置１００の上側から見た水平面上の２次元の座標系である。車体座標系の原点は、たとえば、駆動輪３５Ｌ，３５Ｒの回転軸線と、ブラシ４３の回転軸の中央から駆動輪３５Ｌ，３５Ｒの回転軸線に向かって引いた垂線との交点である。車体座標系のｘ軸は、駆動輪３５Ｌ，３５Ｒの回転軸線に垂直な原点を通る線である。ｘ軸は、自走式装置１００の進行方向をプラス、進行方向の反対方向をマイナスとする。車体座標系のｙ軸は、駆動輪３５Ｌ，３５Ｒの回転軸線と一致し、車体左方向をプラス、右方向をマイナスとする。自走式装置１００の回転方向を示す方位角は、ｘ軸のプラス方向（進行方向）を０度とし、反時計回りをプラス、時計回りをマイナスとする。
【００７５】
車体座標系における駆動輪３５Ｌの位置ＰＬ（ＰＬＸ，ＰＬＹ）は、駆動輪３５Ｌ，３５Ｒの回転軸上に位置し、駆動輪３５Ｌの中心位置を示す。車体座標系における駆動輪３５Ｒの位置ＰＲ（ＰＲＸ，ＰＲＹ）は、駆動輪３５Ｒ、３５Ｒの回転軸上に位置し、駆動輪３５Ｒの中心位置を示す。上記の定義から、ＰＬＸ＝０、ＰＲＸ＝０である。ブラシ４３の位置ＰＢは、ブラシ４３の回転軸中央の位置である。上記の定義から、ＰＢＹ＝０である。
【００７６】
［変数］
以下、自走式装置１００が記憶する変数について説明する。下記の各変数は、たとえば、自走式装置１００のＲＡＭ３に格納される。
【００７７】
自走式装置１００は、変数として、速度計算を行なう周期である制御周期を予め記憶している。当該制御周期は、たとえば、５０ｍｓである。自走式装置１００は、さらに、駆動輪の最高速度ＶＭａｘを予め記憶している。
【００７８】
自走式装置１００は、さらに、清掃条件を示す変数として、清掃速度ＰＶ、走行経路の経路幅ＰＷ、経路垂直方向Ｐφ、清掃終了位置ＧＥを予め記憶している。経路垂直方向Ｐφは、往復走行において折り返しを繰り返して累積的に進む方向を表わす方位角である。上記の清掃条件は、自走式装置１００に対してユーザによって予め入力される。
【００７９】
自走式装置１００は、さらに、後述の往復走行のために以下の変数を記憶している。自走式装置１００は、真偽の２値で示される最終フラグＦＦを記憶している。自走式装置１００は、経路番号ＰＮを記憶している。経路番号ＰＮは、１以上の整数である。
【００８０】
自走式装置１００は、さらに、経路方向Ｐθ、残り幅ＰＷ２、最小残り幅ＰＷ３、次経路番号ＰＮＮ、旋回方向ＰＲＤ、旋回半径ＰＲＲを記憶している。経路方向Ｐθは、往復走行の直線部分での進行方向を表わす方位角である。経路方向Ｐθは、単位ラジアンで表現され、走行経路を折り返すたびにπずつ変化する。経路方向Ｐθは、経路垂直方向Ｐφと常に直交する。図８において経路垂直方向Ｐφは、上方向を指す。自走式装置１００が走行経路Ｌ２（図４参照）を走行するとき、経路方向Ｐθは、右方向を指す。旋回方向ＰＲＤは、回転方向を表す符号値であり、＋１または−１のいずれかの値で示される。旋回方向ＰＲＤが＋１であるとき、自走式装置１００は、上面から見て反時計回りに旋回する。旋回方向ＰＲＤが−１であるとき、自走式装置１００は、上面から視て時計回りに旋回する。自走式装置１００の現在位置ＧＰ、ブラシ４３の現在位置ＧＢ、作業開始位置ＧＳ、清掃終了位置ＧＥ、および後述の旋回中心ＧＲＣは、作業マップ１１上の座標および方位として示される。経路方向Ｐθ、経路垂直方向Ｐφは、作業マップ１１上の方位として示される。
【００８１】
自走式装置１００は、走行経路の走行順序を示した列順テーブルＰＴを記憶している。当該列順テーブルＰＴは、整数を要素とする長さが可変の配列である。自走式装置１００は、列順テーブルＰＴを参照して任意のｎ番目の要素を読み出す。本説明では、列順テーブルＰＴは、たとえば、（１，５，３）のように示される。この配列は、１番目の要素が１、２番目の要素が５、３番目の要素が３であり、この配列の要素数は、３である。自走式装置１００は、走行経路Ｌ１、走行経路Ｌ５、走行経路Ｌ３の順に走行する。
【００８２】
［自走式装置１００の速度の算出方法］
図９および図１０を参照して、自走式装置１００の速度の算出方法について説明する。図９は、自走式装置１００の平面図である。図１０は、自走式装置１００が実行する処理の一部を表わすフローチャートである。
【００８３】
自走式装置１００のＣＰＵ２は、各走行経路に沿ってブラシ４３の現在位置ＧＢにおける速度がＶＢＬになるように、駆動輪３５Ｌの速度ＶＬと、駆動輪３５Ｒの速度ＶＲを算出する。ＣＰＵ２は、駆動輪３５Ｌを駆動するモータＬに速度ＶＬを出力する。ＣＰＵ２は、駆動輪３５Ｒを駆動するモータＲに算出した速度ＶＲを出力する。ブラシ４３の速度ＶＢＬは、ブラシ４３のｘ軸方向の速度を示すＶＢＬＸと、ブラシ４３のｙ軸方向の速度を示すＶＢＬＹとの２値で示される。以下のステップＳ３〜ステップＳ１３における自走式装置１００の速度は、位置検出部２１０（図６参照）から得られた現在値に基づいて、走行制御部２５０（図６参照）によって決定される。
【００８４】
ステップＳ３において、ＣＰＵ２は、自走式装置１００の速度ＩＶと、自走式装置１００が進行する方向を示す方位Ｉθとを、下記の式（３）および式（４）を用いて算出する。下記のＶＢＬＸ，ＶＢＬＹは、後述する旋回処理および直進処理により決定され、ステップＳ６８においてＣＰＵ２から参照される。
【００８５】
Ｉθ＝Ａｔａｎ２（ＶＢＬＸ，ＶＢＬＹ）・・・（３）
ＩＯ＝√（ＶＢＬＸ＾２  ＋  ＶＢＬＹ＾２）・・・（４）
式（３）のＡｔａｎ２（ｘ，ｙ）は、車体座標系における原点から座標値（ｘ，ｙ）に向かう方位角（単位はラジアン）を算出するアークタンジェント関数である。これにより、図９に示されるＩθとＩＯとが算出される。
【００８６】
ステップＳ４において、ＣＰＵ２は、ｔａｎ（Ｉθ）の絶対値を算出し、算出した結果が０．１より大きいか否かを判断する。ＣＰＵ２は、算出した結果が０．１よりも大きい場合（ステップＳ４においてＹＥＳ）、制御をステップＳ５に切り替える。そうでない場合には（ステップＳ４においてＮＯ）、ＣＰＵ２は、制御をステップＳ１０に切り替える。
【００８７】
ＣＰＵ２は、制御をステップＳ５に切り替えた場合、図９に示される旋回中心ＰＣ（ＰＣＸ，ＰＣＹ）を算出する。より具体的には、ＣＰＵ２は、以下の式（５）および式（６）を用いて、旋回中心を算出する。
【００８８】
ＰＣＸ  ＝  ０・・・（５）
ＰＣＹ  ＝  −ＰＢＸ×ｔａｎ（Ｉθ＋π／２）・・・（６）
式（５）および式（６）における計算は、以下の幾何計算から得られる結論である。図９に示されるように、旋回中心ＰＣは、ブラシ４３の中心である位置ＰＢを通って、方位角Ｉθ＋π／２の直線ＬＲと、駆動輪３５Ｒ、３５Ｌの駆動軸線である。すなわち、旋回中心ＰＣは、直線ＬＲとｙ軸との交点である。旋回中心ＰＣは、駆動軸上の点であるので、ＰＣＸ＝０である。したがって、ブラシ４３の中心である位置ＰＢと、旋回中心ＰＣの間に以下の関係が成り立つ。
【００８９】
ＰＢ＋α×（ｃｏｓ（Ｉθ＋π／２）、ｓｉｎ（Ｉθ＋π／２））＝ＰＣ・・・（７）  （ＰＢＸ、ＰＢＹ）＋ＲＲ×（ｃｏｓ（Ｉθ＋π／２）、ｓｉｎ（Ｉθ＋π／２））＝（ＰＣＸ，ＰＣＹ）・・・（８）
（ＰＢＸ、０）＋α×（ｃｏｓ（Ｉθ＋π／２）、ｓｉｎ（Ｉθ＋π／２））＝（０，ＰＣＹ）・・・（９）
ＰＢＸ＋ＲＲ×ｃｏｓ（Ｉθ＋π／２）＝０・・・（１０）
ＲＲ×ｓｉｎ（Ｉθ＋π／２）＝ＰＣＹ・・・（１１）
式（７）はベクトル式である。式（９）は、式（７）のｘ、ｙ成分を記載したものである。式（１０）および式（１１）は、式（９）のｘ、ｙ成分単独に分けたものである。また、式（１０）および式（１１）は、αとＰＣＹの未知数２つを含む連立方程式であり、これらの式からブラシ旋回半径ＲＲを消してＰＣＹについて解くと式（６）が得られる。
【００９０】
ステップＳ６において、ＣＰＵ２は、自走式装置１００の旋回速度ωを算出する。より具体的には、ＣＰＵ２は、以下の計算を行なう。まず、ＣＰＵ２は、ブラシ旋回半径ＲＲを算出する。ブラシ旋回半径ＲＲは、ブラシ４３の位置ＰＢと旋回中心ＰＣとの間の距離であり、式（８）に示されるＲＲと同じ値である。
【００９１】
ＲＲ＝  −ＰＢＸ／ｃｏｓ（Ｉθ＋π／２）・・・（１２）
ω＝  ＩＶ／ＲＲ・・・（１３）
ステップＳ７において、ＣＰＵ２は、走行制御部２５０として、以下の式（１４）および式（１５）を用いて駆動輪３５Ｒの速度ＶＲと、駆動輪３５Ｌの速度ＶＬとを算出する。
【００９２】
ＶＬ＝  （ＰＣＹ−ＰＬＹ）×ω・・・（１４）
ＶＲ＝  （ＰＣＹ−ＰＲＹ）×ω・・・（１５）
ステップＳ１０において、ＣＰＵ２は、ｃｏｓ（Ｉθ）が０より大きいか否かを判断する。ＣＰＵ２は、ｃｏｓ（Ｉθ）が０より大きいと判断した場合（ステップＳ１０においてＹＥＳ）、制御をステップＳ１１に切り替える。そうでない場合には（ステップＳ１０においてＮＯ）、ＣＰＵ２は、制御をステップＳ１２に切り替える。ステップＳ１１の処理は、自走式装置１００の前進に対応する。ステップＳ１２の処理は、自走式装置１００の後進に対応する。
【００９３】
ステップＳ１１において、ＣＰＵ２は、走行制御部２５０として、以下の式（１６）を用いて、駆動輪３５Ｌの速度ＶＬを算出し、式（１７）を用いて、駆動輪３５Ｒの速度ＶＲを算出する。
【００９４】
ＶＬ＝ＩＶ・・・（１６）
ＶＲ＝ＩＶ・・・（１７）
ステップＳ１２において、ＣＰＵ２は、走行制御部２５０として、以下の式（１８）を用いて、駆動輪３５Ｌの速度ＶＬを算出し、式（１９）を用いて、駆動輪３５Ｒの速度ＶＲを算出する。
【００９５】
ＶＬ＝−ＩＶ・・・（１８）
ＶＲ＝−ＩＶ・・・（１９）
ステップＳ１３において、自走式装置１００の速度を算出する処理を終了するか否かを判断する。一例として、自走式装置１００は、作業をストップするユーザ操作を受け付けた場合に、処理を終了する。自走式装置１００は、自走式装置１００の速度を算出する処理を終了する場合に（ステップＳ１３においてＹＥＳ）、自走式装置１００の速度の算出処理を終了する。そうでない場合には（ステップＳ１３においてＮＯ）、ＣＰＵ２は、制御をステップＳ３に戻す。以上により、ブラシ４３の中心である位置ＰＢを意図する速度ＶＢＬで動かすための駆動輪３５Ｌの速度ＶＬと駆動輪３５Ｒの速度ＶＲが算出される。
【００９６】
［清掃開始から終了までの自走式装置１００の処理］
図１１〜図１４を参照して、自走式装置１００の制御構造について説明する。図１１〜図１４において、自走式装置１００が実行する処理の一部を表わすフローチャートが示される。図１１〜図１４の処理は、ＣＰＵ２がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００９７】
（自走式装置１００の清掃開始から終了までの大まかな処理の流れ）
まず、図１１を参照して、自走式装置１００の清掃処理の概要について説明する。図１１は、自走式装置１００の清掃開始から終了までの大まかな処理手順を示すフローチャートである。
【００９８】
自走式装置１００は、作業マップ１１（図７参照）上のいずれかの場所に存在するとする。現在位置ＧＰがＣＰＵ２の位置検出部２１０により算出されているとする。水の散布、ブラシの回転、汚水の回収は、停止しているとする。ブラシ４３の昇降機構は、ブラシ４３を上げて地面から離した状態にあるとする。洗浄水タンクには、洗浄水が補充されているとする。このような初期状態において、ユーザが、自走式装置１００の操作を開始するためのボタン４７（図１参照）を押下すると、ＣＰＵ２は、ステップＳ５１〜ステップＳ５６の処理を開始する。
【００９９】
ステップＳ５１において、ＣＰＵ２は、自走式装置１００を初期化する。より具体的には、ＣＰＵ２は、清掃作業が終了したか否かを示す最終フラグＰＦを偽に設定する。ＣＰＵ２は、自走式装置１００が走行する経路番号ＰＮを２に設定する。ＣＰＵ２は、経路垂直方向Ｐφに基づいて、経路方向ＰθをＰθ＝Ｐφ−π／２に設定する。ＣＰＵ２は、作業領域の左端を示すＧＭＸＭと、作業領域の下端を示すＧＭＹＭと、車体座標系におけるブラシ４３の位置ＰＢＸと、経路幅ＰＷとを以下の式（２０）および式（２１）に代入して、作業開始位置ＧＳ（ＧＳＸ，ＧＳＹ）を算出する。これにより、ＣＰＵ２は、作業開始位置ＧＳを、走行経路Ｌ２（図４参照）上の左端（ｘ軸−方向の端部）に設定する。
【０１００】
ＧＳＸ＝ＧＭＸＭ  ＋  ＰＢＸ・・・（２０）
ＧＳＹ＝ＧＭＹＭ  ＋  ＰＷ×１．５・・・（２１）
ステップＳ５２において、ＣＰＵ２は、自走式装置１００を往復走行の作業開始位置ＧＳまで移動させる。より具体的には、ＣＰＵ２は、ブラシ４３の現在位置ＧＢと、作業開始位置ＧＳとを結ぶ直線に沿ってブラシ４３が最高速度ＶＭａｘで動く場合のブラシ移動速度ＶＢを算出する。また、ＣＰＵ２は、前述の図１０の手順で駆動輪３５Ｌの速度と駆動輪３５Ｒの速度とを算出する。ＣＰＵ２は、算出した速度を、駆動輪のモータ（上述のモータＬ、Ｒ）に算出した速度を出力する。ＣＰＵ２は、ブラシ４３の現在位置ＧＢと作業開始位置ＧＳとの間の距離を監視する。ＣＰＵ２は、この距離が一定の距離未満（たとえば、１００ｍｍ未満）になったとき、作業開始位置ＧＳに到達したと判断し、モータＬ、Ｒを停止させる。
【０１０１】
ステップＳ５３において、ＣＰＵ２は、清掃作業を開始する。より具体的には、ＣＰＵ２は、ブラシ４３の昇降機構を動作させて、ブラシ４３が床に接地するまで下降させた後、ブラシ４３の回転と、床面への水の散布と、スキージ４５の水吸引とを開始する。
【０１０２】
ステップＳ５４において、ＣＰＵ２は、後述の図１２に示す清掃処理を実行する。自走式装置１００の清掃処理の詳細については後述する。
【０１０３】
ステップＳ５５において、ＣＰＵ２は、清掃処理を終了する。より具体的には、ＣＰＵ２は、ブラシ４３の回転と、床面への水の散布と、スキージ４５の水吸引とを停止した後、ブラシ４３の昇降機構を動作させて、ブラシ４３を床面から離す。
【０１０４】
ステップＳ５６において、ＣＰＵ２は、自走式装置１００を終了位置へ移動させる。より具体的には、ＣＰＵ２は、ステップＳ５２と同様の処理により、ブラシ４３の現在位置ＧＢが、清掃終了位置ＧＥに到達するように駆動輪３５ＬのモータＬと駆動輪３５ＲのモータＲに速度を出力する。その後、ＣＰＵ２は、自走式装置１００を停止させる。
【０１０５】
（自走式装置１００の清掃処理の詳細）
次に、図１２を参照して、自走式装置１００の清掃処理（図１１のステップＳ５４）の詳細について説明する。図１２は、自走式装置１００の清掃処理の手順を示すフローチャートである。
【０１０６】
ＣＰＵ２は、設定された制御周期ごとに図１２に示される処理を実行して、自走式装置１００を経路方向Ｐθに対して平行に走行させ、走行経路の終端で経路垂直方向Ｐφに沿って次の走行経路へと移動するように制御する。
【０１０７】
自走式装置１００は、真または偽となる直進フラグＦＳを記憶しており、直進フラグＦＳに基づいて直進と旋回とを繰り返して自走式装置１００を走行させる。すなわち、直進フラグＦＳが真である場合に、自走式装置１００は直進する。直進フラグＦＳが偽である場合に、自走式装置１００は旋回する。直進フラグＦＳは、初期状態では、真である。
【０１０８】
ステップＳ６２において、ＣＰＵ２は、直進フラグＦＳを参照して、自走式装置１００の動作モードが直進モードであるか否かを判断する。ＣＰＵ２は、直進フラグＦＳが真である場合に、自走式装置１００の動作モードが直進モードであるとして、ステップＳ６３〜ステップＳ６７の処理を実行する。ＣＰＵ２は、直進フラグＦＳが偽の場合に、自走式装置１００の動作モードが旋回モードであるとして、ステップＳ６１０〜Ｓ６１２の処理を実行する。
【０１０９】
ステップＳ６３において、ＣＰＵ２は、走行制御部２５０として、経路方向Ｐθと清掃速度ＰＶと経路番号ＰＮとに基づいて、直進方向のブラシ４３の速度ＶＢＬ（ＶＢＬＸ，ＶＢＬＹ）を算出する。より具体的には、速度ＶＢＬは、清掃速度ＰＶ、経路方向Ｐθ、現在位置ＧＰθを用いて、以下の式（２２）〜（２４）から算出される。
【０１１０】
θ１＝  Ｐθ  −ＧＰθ・・・（２２）
ＶＢＬＸ＝  ＰＶ×ｃｏｓ（θ１）・・・（２３）
ＶＢＬＹ＝  ＰＶ×ｓｉｎ（θ１）・・・（２４）
なお、θ１は、角度を示す一時変数である。
【０１１１】
ステップＳ６４において、ＣＰＵ２は、距離検出部２２０として、経路方向の幅を測定する。より具体的には、ＣＰＵ２は、作業マップ１１上で現在位置ＧＰから経路垂直方向Ｐφに沿った壁までの残り幅ＰＷ２を測定する。自走式装置１００は、最小残り幅ＰＷ３を予め記憶しており、測定した残り幅ＰＷ２が最小残り幅ＰＷ３より小さい場合に、ＰＷ３＝ＰＷ２として更新する。
【０１１２】
ステップＳ６５において、ＣＰＵ２は、走行制御部２５０として、走行経路の終端に来たか否かを判断する。より具体的には、まずＣＰＵ２は、作業マップ１１上で現在位置ＧＰから方位Ｇθに沿って前方の領域を調べて、前方の進入禁止領域までの距離Ｄを算出する。続いてＣＰＵ２は、距離Ｄが所定値（たとえば、５００ｍｍ）より短いか否かを判断し、距離Ｄが所定値よりも短い場合に（ステップＳ６５においてＹＥＳ）、走行経路の終端に到着したとして、直進を終了し、制御をステップＳ６６に切り替える。そうでない場合には（ステップＳステップＳ６６においてＮＯ）、ＣＰＵ２は、制御をステップＳ６８に切り替える。
【０１１３】
ステップＳ６６において、ＣＰＵ２は、算出部２３０として、現在の走行経路が最終列であるか否かを判断する。より具体的には、ＣＰＵ２は、まず、最終フラグＦＦが真であるか否かを判断し、最終フラグＦＦが真である場合には、ＣＰＵ２は、さらに、経路番号ＰＮが、列順テーブルＰＴの最終要素に等しいか否かを判断する。経路番号ＰＮが列順テーブルＰＴの最終要素と等しいと判断した場合に（ステップＳ６６においてＹＥＳ）、ＣＰＵ２は、清掃処理を終了し、図１１のステップＳ５５へ制御を切り替える。そうでない場合には（ステップＳ６６においてＮＯ）、ＣＰＵ２は、制御をステップＳ６７に切り替える。
【０１１４】
ステップＳ６７において、ＣＰＵ２は、後述する図１３における旋回処理を実行し、次経路番号ＰＮＮ、旋回方向ＰＲＤ、旋回半径ＰＲＲ、旋回中心ＧＲＣを決定し記憶する。旋回方向ＰＲＤ、旋回半径ＰＲＲは、次の制御周期にステップＳ６１０で参照される。ＣＰＵ２は、直進フラグＦＳを偽に設定する。自走式装置１００の旋回処理の詳細については後述する。
【０１１５】
ステップＳ６８において、ＣＰＵ２は、走行制御部２５０として、ステップＳ６３またはステップＳ６１０で算出されたブラシ４３の速度ＶＢＬを実現するための各駆動輪の速度ＶＬ，ＶＲを、図９の手順で算出する。
【０１１６】
ステップＳ６９において、ＣＰＵ２は、走行制御部２５０として、駆動輪３５Ｌの速度ＶＬをモータＬに出力し、駆動輪３５ＲのＶＲをモータＲに出力する。ＣＰＵ２は、速度を出力した後、次の制御周期までの時間経過を待ってから、ステップＳ６２に制御を戻す。
【０１１７】
ステップＳ６１０において、ＣＰＵ２は、走行制御部２５０として、予め記憶されている経路方向Ｐθと清掃速度ＰＶと経路番号ＰＮとに基づいて、ブラシ４３の旋回の速度ＶＢＬを算出する。より具体的には、ＣＰＵ２は、ブラシ４３の現在位置ＧＢ、自走式装置１００の旋回中心ＧＲＣ、自走式装置１００の旋回方向ＰＲＤ、自走式装置１００の現在位置ＧＰθを以下の式（２５）〜（２７）に代入して、速度ＶＢＬを算出する。
【０１１８】
θ２  ＝  Ａｎｇｌｅ（ＧＢ−ＧＲＣ）＋π／２×ＰＲＤ−ＧＰθ・・・（２５）
ＶＢＬＸ  ＝  ＰＶ×ｃｏｓ（θ２）・・・（２６）
ＶＢＬＹ  ＝  ＰＶ×ｓｉｎ（θ２）・・・（２７）
なお、θ２は、計算用の一時変数である。この計算により、ブラシ４３が旋回中心ＧＲＣを中心とした円弧上を走行するためのブラシ４３の速度ＶＢＬが算出される。
【０１１９】
ステップＳ６１１において、ＣＰＵ２は、自走式装置１００の旋回動作が終了したか否かを判断する。より具体的には、ＣＰＵ２は、自走式装置１００が進行方向ＧＰθと経路方向Ｐθとの差が所定のしきい値以下（たとえば、３度）になると、ＣＰＵ２は、旋回動作が終了したと判断し（ステップＳ６１１においてＹＥＳ）、制御をステップＳ６１２に切り替える。そうでない場合には（ステップＳ６１１においてＮＯ）、ＣＰＵ２は、制御をステップＳ６８に切り替える。
【０１２０】
ステップＳ６１２において、ＣＰＵ２は、自走式装置１００に直進させる。より具体的には、ＣＰＵ２は、経路番号ＰＮに次経路番号ＰＮＮを代入する。ＣＰＵ２は、経路方向Ｐθをπだけ増加させる。経路方向Ｐθが２πよりも大きくなった場合、ＣＰＵ２は、経路方向Ｐθを２π減少させる。これにより、経路方向Ｐθは、０〜２πの間に保たれる。ＣＰＵ２は、さらに、最小残り幅ＰＷ３に初期値を書き込んで初期化する。初期値は、経路幅ＰＷの４倍とする。
【０１２１】
以上の手順を繰り返すことで、自走式装置１００は、走行経路を直進し、走行経路の終端に達すると、旋回して次の走行経路に移動するという動作を繰り返し行なうことができる。
【０１２２】
（自走式装置１００の旋回処理の詳細）
次に、図１３を参照して、自走式装置１００の清掃処理（図１２のステップＳ５４）の詳細について説明する。図１３は、自走式装置１００の旋回処理の手順を示すフローチャートである。
【０１２３】
ステップＳ７２において、ＣＰＵ２は、自走式装置１００の動作モードが最終モードであるか否かを判断する。より具体的には、ＣＰＵ２は、最終フラグＦＦが真である場合に、自走式装置１００の動作モードが最終モードであると判断する。ＣＰＵ２は、動作モードが最終モードであると判断した場合（ステップＳ７１においてＹＥＳ）、制御をステップＳ７１４に切り替える。そうでない場合には（ステップＳ７１においてＮＯ）、ＣＰＵ２は、制御をステップＳ７１４に切り替える。
【０１２４】
ステップＳ７３において、ＣＰＵ２は、経路番号ＰＮを４で割った余りによって次に実行する処理を決定する。余りが１である場合、ＣＰＵ２は、制御をステップＳ７４に切り替える。余りが２である場合、ＣＰＵ２は、制御をステップＳ７５に切り替える。余りが３である場合、ＣＰＵ２は、制御をステップＳ７６に切り替える。余りが０である場合、ＣＰＵ２は、制御をステップＳ７１０に切り替える。
【０１２５】
ステップＳ７４において、ＣＰＵ２は、現在走行中の経路番号ＰＮに２を足した値を、次経路番号ＰＮＮに設定する。ステップＳ７５において、ＣＰＵ２は、現在走行中の経路番号ＰＮに２を足した値を、次経路番号ＰＮＮに設定する。ステップＳ７６において、ＣＰＵ２は、現在走行中の経路番号ＰＮに３を足した値を、次経路番号ＰＮＮに設定する。
【０１２６】
ステップＳ７４、ステップＳ７５、ステップＳ７６、およびステップＳ７１４のいずれかの処理の実行後に、ＣＰＵ２は、ステップＳ７７において、旋回方向ＰＲＤ、旋回半径ＰＲＲを決定する。まず、ＣＰＵ２は、次経路番号ＰＮＮ、経路番号ＰＮ、経路方向Ｐθに基づいて、旋回方向ＰＲＤを決定する。ＰＮＮ＞ＰＮ、かつ、ｃｏｓ（Ｐθ）＞０の条件が満たされれば、ＣＰＵ２は、旋回方向ＰＲＤに１を加える。ＰＮＮ＞ＰＮ、かつ、ｃｏｓ（Ｐθ）≦０の条件が満たされれば、ＣＰＵ２は、旋回方向ＰＲＤから１を引く。ＰＮＮ≦ＰＮ、かつ、ｃｏｓ（Ｐθ）＞０の条件が満たされれば、旋回方向ＰＲＤから１を引く。ＰＮＮ≦ＰＮかつｃｏｓ（Ｐθ）≦０の条件が満たされれば、旋回方向ＰＲＤに１を加える。
【０１２７】
ＣＰＵ２は、さらに、次経路番号ＰＮＮと経路番号ＰＮとを用いて以下の式（２８）から旋回半径ＰＲＲを決定する。
【０１２８】
ＰＲＲ  ＝  ａｂｓ（ＰＮＮ−ＰＮ）／２・・・（２８）
ただしａｂｓ（）は、絶対値関数である。
【０１２９】
ステップＳ７１０において、ＣＰＵ２は、算出部２３０として、残り走行経路数を算出する。より具体的には、ＣＰＵ２は、最小残り幅ＰＷ３を経路幅ＰＷで割った商を残り経路数ＰＮＲとする。ＣＰＵ２は、残り経路数ＰＮＲが４本以上の場合（ステップＳ７１０においてＹＥＳ）、制御をステップＳ７１１に切り替える。そうでない場合には（ステップＳ７１０においてＮＯ）、制御をステップＳ７１２に切り替える。
【０１３０】
ステップＳ７１１において、ＣＰＵ２は、現在の経路番号ＰＮから３を引いた値を次経路番号ＰＮＮとして設定する。ステップＳ７１２において、ＣＰＵ２は、自走式装置１００の動作モードを最終モードに設定する。すなわち、ＣＰＵ２は、最終フラグＦＦを真に設定する。ステップＳ７１３において、ＣＰＵ２は、残りの走行経路の走行順序を決定する。ＣＰＵ２の残りの走行経路の決定順についての詳細は後述する。
【０１３１】
ステップＳ７１４において、ＣＰＵ２は、最終モード時における次列決定処理を行なう。すなわち、ＣＰＵ２は、ステップＳ７１３において設定された、残りの経路の走行順序に従って、自走式装置１００に残りの走行経路を順に走行させる。より具体的には、ＣＰＵ２は、ステップＳ７１３において、設定済みの列順テーブルＰＴを参照して、次の要素ＰＴＮを読出し、次経路番号ＰＮＮをＰＮＮ＝ＰＴＮに設定する。
【０１３２】
（残りの経路に対する走行順序の決定方法の詳細）
次に、図１４を参照して、残りの経路に対する走行順序の決定方法（図１３のステップＳ７１３）について説明する。図１４は、残りの経路に対する走行順序の決定処理の手順を示すフローチャートである。以下のステップＳ９１〜Ｓ９４における残りの経路に対する走行順序は、算出部２３０（図６参照）によって算出された残り経路数に基づいて、決定部２４０（図６参照）によって決定される。
【０１３３】
ステップＳ９１において、ＣＰＵ２は、決定部２４０として、算出部２３０によって算出された残り経路数ＰＮＲに応じて次に実行する処理を決定する。残り経路数ＰＮＲが１である場合、ＣＰＵ２は、ステップＳ９２に切り替える。残り経路数ＰＮＲが２である場合、ＣＰＵ２は、ステップＳ９３に切り替える。残り経路数ＰＮＲが３である場合、ＣＰＵ２は、ステップＳ９４に切り替える。
【０１３４】
ステップＳ９２において、ＣＰＵ２は、決定部２４０として、経路番号ＰＮを参照して列順テーブルＰＴを以下の式（２９）のように決定する。
【０１３５】
ＰＴ＝（ＰＮ−３，ＰＮ−１，ＰＮ＋１）・・・（２９）
ステップＳ９３において、ＣＰＵ２は、決定部２４０として、列順テーブルＰＴを以下の式（３０）を用いて残りの経路の走行順序を決定する。
【０１３６】
ＰＴ＝（ＰＮ−３，ＰＮ＋１，ＰＮ−１，ＰＮ＋２）・・・（３０）
ステップＳ９４において、ＣＰＵ２は、決定部２４０として、列順テーブルＰＴを以下の式（３１）を用いて残りの経路の走行順序を決定する。
ＰＴ＝（ＰＮ−３，ＰＮ＋１，ＰＮ＋３，ＰＮ−１，ＰＮ＋２）・・・（３１）
【０１３７】
［自走式装置１００の動作の具体例］
以下では、上述のＣＰＵ２の制御フローに基づく自走式装置１００の動作の具体例について説明する。以下の具体例では、自走式装置１００の作業領域は、作業マップ１１のｙ軸方向に経路幅ＰＷの１１倍の幅を有する。すなわち、走行経路は、計１１本となる。
【０１３８】
ユーザがボタン４７を押下すると、自走式装置１００は、清掃動作を開始する。自走式装置１００は、走行経路Ｌ２の左端を作業開始位置ＧＳとして設定し、作業開始位置ＧＳに移動する。続いて、自走式装置１００は、ブラシ４３の昇降機構によって、床面に接地するまでブラシ４３を下降させ、ブラシ４３の回転と、床面に対する水の散布と、スキージ４５の水吸引とを開始する。自走式装置１００は、走行経路Ｌ２に沿って右端(作業マップ１１のｘ軸プラス側)まで清掃を行なう。
【０１３９】
自走式装置１００は、走行経路Ｌ２の終端に達すると、左に旋回して走行経路Ｌ４に移動する。自走式装置１００は、走行経路Ｌ４の左端まで走行する。ここで、自走式装置１００は、ステップＳ７１０（図１３参照）と同じ処理を実行する。すなわち、残り経路数ＰＮＲ（この時点で１１−４＝７）を算出する。この場合には、残り経路数ＰＮＲは、４以上なので最終モードにならない。続いて、自走式装置１００は、左に旋回して走行経路Ｌ１の左端に移動する。自走式装置１００は、走行経路Ｌ１の右端まで走行する。自走式装置１００は、走行経路Ｌ１の右端に達すると、左に旋回して走行経路Ｌ３に移動する。自走式装置１００は、走行経路Ｌ３の左端まで走行する。自走式装置１００は、走行経路Ｌ３の左端に達すると、右に旋回して走行経路Ｌ６に移動する。自走式装置１００は、走行経路Ｌ６を右端まで走行する。自走式装置１００は、走行経路Ｌ６の右端まで走行すると、左に旋回して走行経路Ｌ８に移動する。自走式装置１００は、走行経路Ｌ８の左端まで走行する。
【０１４０】
走行経路Ｌ８の左端で、ＣＰＵ２は、再度ステップＳ７１０と同じ処理を実行し、残り経路数ＰＮＲ＝１１−８＝３が４以下であると判断する。したがって、ＣＰＵ２は、図１４の最終モード用の列順決定を行ない、走行順序をＰＴ＝（８−３、８＋１、８＋３、８−１、８＋２）＝（５，９，１１，７，１０）と決定する。続いて自走式装置１００は、走行経路Ｌ５→Ｌ９→Ｌ１１→Ｌ７→Ｌ１０の順に経路を走行して清掃を行なう。自走式装置１００は、走行経路Ｌ１０の終端に到達すると、往復走行を終了する。自走式装置１００は、ブラシ４３の回転と、水散布と、スキージ４５の水吸引とを停止し、ブラシ４３の昇降機構を上昇させる。その後、自走式装置１００は、作業終了位置へ移動する。自走式装置１００は、作業終了位置へ到達すると、作業を完了して停止する。
【０１４１】
［自走式装置１００の変形例］
（第１の変形例）
なお、上記の手順の一部を以下のように変更してもよい。たとえば、ステップＳ５１（図１１参照）において、ＣＰＵ２は、作業開始位置ＧＳを、走行経路Ｌ２の左端ではなく、走行経路Ｌ２の右端に設定してもよい。この場合、ＣＰＵ２は、Ｓ７７（図１３）において算出する旋回方向ＰＲＤを全て上記とは逆にする。より具体的には、ＣＰＵ２は、次経路番号ＰＮＮ、経路番号ＰＮ、経路方向Ｐθに基づいて、旋回方向ＰＲＤを以下のように決定する。ＰＮＮ＞ＰＮかつｃｏｓ（Ｐθ）＞０の条件を満たせば、ＰＲＤから１を引く。ＣＰＵ２は、ＰＮＮ＞ＰＮかつｃｏｓ（Ｐθ）≦０の条件を満たせば、ＰＲＤに１を足す。ＰＮＮ≦ＰＮかつｃｏｓ（Ｐθ）＞０の条件を満たせば、ＰＲＤに１を足す。ＰＮＮ≦ＰＮかつｃｏｓ（Ｐθ）≦０の条件を満たせば、ＰＲＤから１を引く。以上により、自走式装置１００は、上記の例に対して反対の方向に走行を行ないながら清掃を行なう。
【０１４２】
（第２の変形例）
また、ＣＰＵ２は、上記の例で説明した列順の代わりに、図１４の列順テーブルＰＴを以下のように設定してもよい。より具体的には、ステップＳ９２において、ＣＰＵ２は、残り経路数ＰＮＲが１の場合に、列順テーブルＰＴ（ＰＮ−３，ＰＮ−１，ＰＮ＋１）を、代わりに、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋１，ＰＮ−１）としてもよい。
【０１４３】
残り経路数ＰＮＲが２の場合には、ステップＳ９３において、ＣＰＵ２は、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋１，ＰＮ−１，ＰＮ＋２）を、代わりに、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋２，ＰＮ−１，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ＋１，ＰＮ−１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ−１，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ＋１，ＰＮ−３）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ−３，ＰＮ＋１）のいずれかとしてもよい。
【０１４４】
残り経路数ＰＮＲが３の場合には、ステップＳ９４において、ＣＰＵ２は、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋１，ＰＮ＋３，ＰＮ−１，ＰＮ＋２）の代わりに、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋２，ＰＮ−１，ＰＮ＋１，ＰＮ＋３）、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋２，ＰＮ−１，ＰＮ＋３，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ−３，ＰＮ＋３，ＰＮ＋１，ＰＮ−１，ＰＮ＋２）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ−１，ＰＮ＋１，ＰＮ＋３）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ−１，ＰＮ＋３，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ＋１，ＰＮ−１，ＰＮ＋３）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−３，ＰＮ＋１，ＰＮ＋３，ＰＮ−１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ−３，ＰＮ＋１，ＰＮ＋３）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ−３，ＰＮ＋３，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ＋１，ＰＮ−３，ＰＮ＋３）、列順テーブルＰＴ（ＰＮ＋２，ＰＮ−１，ＰＮ＋１，ＰＮ＋３，ＰＮ−３）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ−３，ＰＮ＋２，ＰＮ−１，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ−３，ＰＮ＋１，ＰＮ−１，ＰＮ＋２）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ−１，ＰＮ＋１，ＰＮ−３，ＰＮ＋２）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ−１，ＰＮ＋２，ＰＮ−３，ＰＮ＋１）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ＋１，ＰＮ−３，ＰＮ−１，ＰＮ＋２）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ＋１，ＰＮ−３，ＰＮ＋２，ＰＮ−１）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ＋１，ＰＮ−１，ＰＮ−３，ＰＮ＋２）、列順テーブルＰＴ（ＰＮ＋３，ＰＮ＋１，ＰＮ−１，ＰＮ＋２，ＰＮ−３）のいずれかとしてもよい。
【０１４５】
（第３の変形例）
さらに、自走式装置１００の作業を開始する走行経路は、必ずしも走行経路Ｌ２から開始する必要はない。たとえば、自走式装置１００は、走行経路Ｌ３から走行を開始してもよい。そのためには、図１１のステップＳ５１において、ＣＰＵ２は、経路番号をＰＮ＝３に設定する。また、ＣＰＵ２は、走行経路Ｌ３のｘ軸の−方向の端部に作業開始位置ＧＳを設定する。すなわち、作業開始位置ＧＳは、以下の式（３２）のように設定される。
【０１４６】
ＧＳＹ＝  ＧＭＹＭ  ＋  ＰＷ×２．５・・・（３２）
また、図１３中のステップＳ７４、ステップＳ７５、ステップＳ７６、ステップＳ７１１を以下のように変える。すなわち、ステップＳ７４において、ＣＰＵ２は、現在走行中の経路番号ＰＮに３を足した値を次経路番号ＰＮＮに設定する。ステップＳ７５において、ＣＰＵ２は、現在走行中の経路番号ＰＮに５を足した値を次経路番号ＰＮＮに設定する。ステップＳ７６において、ＣＰＵ２は、現在走行中の経路番号ＰＮに２を足した値を、次経路番号ＰＮＮに設定する。ステップＳ７１４において、ＣＰＵ２は、現在走行中の経路番号ＰＮに２を引いた値を次経路番号ＰＮＮに設定する。
【０１４７】
（第４の変形例）
また、自走式装置１００には、以下のような障害物を回避する機能が備えられてもよい。すなわち、ＣＰＵ２は、上記ステップＳ６５（図１２参照）の代わりに、以下のステップＳ６５Ａを実行する。
【０１４８】
ステップＳ６５Ａでは、まず、ＣＰＵ２は、作業マップ１１上の現在位置から周囲の壁までの距離を仮想距離として算出する。ＣＰＵ２は、算出した仮想距離とレーザレンジファインダ３９から取得した周囲距離とを比較して、車体前方で周囲距離までの距離が、仮想距離よりも、所定値（たとえば、１ｍ）以上短い場合に、障害物が存在すると判断する。ＣＰＵ２は、障害物があると判断された場合において、レーザレンジファインダ３９から得られる前方距離が所定値（たとえば、１ｍ）以下になると、ＣＰＵ２は、障害物に接近したと判断して、この時の現在位置を記録する。
【０１４９】
続いて、ＣＰＵ２は、直進終了と判断して、以下のステップＳ６２０に制御を切り替える。ＣＰＵ２は、障害物がないと判断した場合に、ステップＳ６５の処理を実行する。ステップＳ６２０において、ＣＰＵ２は、経路番号ＰＮを、現在の経路番号ＰＮ以上の最小の４の倍数＋３に書き換える。たとえば、経路番号ＰＮが５〜８のいずれかである場合は、ＣＰＵ２は、経路番号ＰＮをＰＮ＝８＋３＝１１に設定する。続いて、ＣＰＵ２は、ステップＳ６６に制御を切り替える。ステップＳ６２０の結果として、ステップＳ６７において、ＣＰＵ２は、ステップＳ７３からステップＳ７６に進む。この結果、自走式装置１００は、４列を単位として、障害物を検出した時点で次の４列に進むことになる。たとえば、図４において走行経路Ｌ１〜Ｌ４の間に障害物があった場合には、走行経路Ｌ６へ移行して、その後、走行経路Ｌ５〜Ｌ８を順に走行する。最終的に、ステップＳ５６において、自走式装置１００は、清掃を完了した際に、記録された障害物の位置をＬＣＤ４９上に表示する。
【０１５０】
以上の動作を取ることにより、障害物があった場合には、走行経路Ｌ１〜Ｌ４の中にだけ拭き残しが発生し、走行経路Ｌ５以降は、通常の清掃が行われる。障害物は、隣接する走行経路をまたぐように存在する場合も多いので、障害物検出時に４本単位で走行経路を飛ばして進むことにより、障害物の存在しない場所へ素早く進むことができる。また、ユーザは、障害物の位置をＬＣＤ４９上で確認することにより、その位置を含む前後４本以内に拭き残しがあると判断できる。すなわち、ユーザは、拭き残し部分を容易に把握することができ、拭き残し部分を手作業で容易に清掃することができる。
【０１５１】
これに対して、上記の特許文献１には、障害物への対処方法が記載されていないが、たとえば、障害物と壁とを区別せずに障害物に接近した時点で、次の走行経路に移動した場合には、走行経路および作業範囲のいずれの場所に拭き残しが発生したのかが分かりづらくなる。たとえば、走行経路Ｌ３の途中に障害物が存在すると、走行経路Ｌ３の残り部分と次の折り返し先である走行経路Ｌ６とに拭き残しが発生し、さらに、障害物が走行経路Ｌ３と走行経路Ｌ４とにまたがっている場合には、走行経路Ｌ３、Ｌ４、Ｌ６、Ｌ７に拭き残しが発生する。このように、拭き残し箇所が分散すると、ユーザは、拭き残し箇所をすぐに理解することができない。
【０１５２】
［小括］
以上のようにして、本実施の形態に従う自走式装置１００は、走行経路の列幅の１倍以上（１倍または１．５倍）の旋回半径で作業マップ１１内を往復走行することができる。この結果、内輪差を小さくすることができ、スキージ４５の軌跡がブラシ４３の軌跡を覆いやすくなるため、自走式装置１００は、水残りを少なくして高品質な清掃を実現することができる。
【０１５３】
また、自走式装置１００は、旋回半径を大きくすることで、旋回のために減速する必要が少なくなる。この結果、自走式装置１００は、高速で走行することができ、効率のよく清掃することができる。さらに、自走式装置１００は、４列を単位として清掃作業を進めるので、障害物などにより作業が中断された場合であっても、障害物を含む４列以外の範囲については、作業が完了していることが明確になるので、自走式装置１００は、作業状態を管理しやすくなる。
【０１５４】
＜第２の実施の形態＞
以下、第２の実施の形態に従う自走式装置１００Ａの概要について説明する。本実施の形態に従う自走式装置１００Ａは、作業マップ１１を予め記憶しない点で自走式装置１００と異なる。ハードウェア構成などその他の点については第１の実施の形態に従う自走式装置１００と同じであるので説明を繰り返さない。
【０１５５】
自走式装置１００Ａは、略四角形の作業領域の四隅のいずれかを作業開始位置として決定する。たとえば、自走式装置１００Ａは、作業領域の左下を作業開始位置として決定した場合には、車体右側および後ろ側を作業領域の壁に近接して、当該壁と平行に設置される。自走式装置１００Ａは、駆動輪３５Ｌに接続されたエンコーダＬと、駆動輪３５Ｒに接続されたエンコーダＲとが出力する駆動軸の回転量を元にオドメトリによって現在位置を更新する。自走式装置１００Ａは、基本的には、図１０〜図１４と同様の処理を実行することにより清掃作業を行なうが、以下の点で上述の各制御フローと異なる。以下では、その差異について説明する。
【０１５６】
ステップＳ５１（図１１参照）において、ＣＰＵ２は、現在位置ＧＰ（ＧＰＸ，ＧＰＹ，ＧＰθ）の値を（０，０，０）に初期化する。さらに、ＣＰＵ２は、作業範囲を示すＧＭＸＭおよびＧＭＹＭを以下の式（３３）および式（３４）ように初期化する。
【０１５７】
ＧＭＸＭ＝−ＰＢＸ・・・（３３）
ＧＭＹＭ＝−ＰＷ×０．５・・・（３４）
さらに、ＣＰＵ２は、作業開始位置ＧＳ（ＧＳＸ，ＧＳＹ）を走行経路Ｌ２の左端に設定する。作業開始位置ＧＳは、作業マップ１１と経路幅ＰＷとに基づいて、以下の式（３５）と式（３６）とから算出される。
【０１５８】
ＧＳＸ＝ＧＭＸＭ＋ＰＢＸ＝０・・・（３５）
ＧＳＹ＝ＧＭＹＭ＋ＰＷ×１．５＝ＰＷ・・・（３６）
すなわち、作業開始位置ＧＳは、自走式装置１００Ａの現在位置から経路幅１列分だけ車体左側に移動した位置になる。
【０１５９】
ステップＳ６４において、ＣＰＵ２は、経路方向の物体距離を検出する際に、経路垂直方向の物体距離も検出する。すなわち、ＣＰＵ２は、レーザレンジファインダ３９からの距離から、経路垂直方向Ｐφの値を取り出して、残り幅ＰＷ２として記憶する。
【０１６０】
［小括］
以上のようにして、本実施の形態に従う自走式装置１００Ａは、作業マップ１１を持たずに簡易な構成で、略四角の領域を清掃することができる。自走式装置１００Ａにおいても、第１の実施の形態に従う自走式装置１００と同様に、旋回の半径が、経路幅の１倍以上に保たれるので、水の拭き残しを少なくすることができ、高品質な清掃を実現することができる。
【０１６１】
＜第３の実施の形態＞
以下、第３の実施の形態に従う自走式装置１００Ｂの概要について説明する。本実施の形態に従う自走式装置１００Ｂは、清掃装置ではなく、農耕機として実現される点で自走式装置１００と異なる。機能構成などその他の点については第１の実施の形態に従う自走式装置１００と同じであるので説明を繰り返さない。
【０１６２】
農耕式である自走式装置１００Ｂは、前輪の操舵と後輪の前後進とで走行する。前輪の操舵と前後進とを実行する処理は、自走式装置１００Ｂが搭載するＣＰＵ２によって実行される。また、自走式装置１００Ｂは、車体後部に農耕用の作業部６を有する。自走式装置１００Ｂの操舵できる範囲は、左右各６０度程度であり、最小旋回時の旋回中心から車体中心までの距離、すなわち旋回半径は、作業部６の左右幅と同程度である。したがって自走式装置１００Ｂは、最小旋回半径で旋回した場合に、往復走行で隣接する走行経路に折り返すと外側に膨らむ軌道となるが、２列以上離れた走行経路に折り返す場合には、膨らみ無しで折り返すことができる。自走式装置１００Ｂは、上述の図１０〜１４の制御フローに沿って走行するので、常に２列以上の幅を取って旋回する。したがって、自走式装置１００Ｂは、外側に膨らむことなく作業を実施できるので、作業領域を均一に耕作することができる。
【０１６３】
＜第４の実施の形態＞
以下、第４の実施の形態に従う自走式装置１００Ｃの概要について説明する。本実施の形態に従う自走式装置１００Ｃは、清掃装置ではなく、芝刈りロボットとして実現される点で自走式装置１００と異なる。機能構成などその他の点については第１の実施の形態に従う自走式装置１００と同じであるので説明を繰り返さない。
【０１６４】
自走式装置１００Ｃは、芝刈りロボットである。自走式装置１００Ｃは、第１の実施の形態に従う自走式装置１００と同様の車輪構成を持ち、後輪の駆動輪３５Ｌおよび駆動輪３５Ｒの前後進の組み合わせによって走行する。自走式装置１００Ｃは、本体下面に略円筒形の芝刈りユニット（作業部６）を有する。芝刈りユニットの配置は、第１の実施の形態に従う自走式装置１００のブラシ４３と同様である。
【０１６５】
自走式装置１００Ｃは、レーザレンジファインダ３９を搭載せず、代わりに、本体前面に接触を検出するバンパーセンサを有する。自走式装置１００Ｃは、駆動輪３５Ｌおよび駆動輪ＷＲの回転量に基づいて、現在位置を算出して、現在位置を逐次更新する。自走式装置１００Ｃは、バンパーセンサが作動したときに、障害物に接触したと判断する。
【０１６６】
自走式装置１００Ｃは、芝を痛めないように、なるべく片輪を止めた据え切りをせずに、移動しながら旋回することが好ましい。自走式装置１００Ｃは、図１０〜図１４に示される走行順序で走行すると、旋回半径を経路幅以上にすることができるので、据え切りがなくなり、高品質な作業を実現することができる。
【０１６７】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１６８】
１  ＲＯＭ、２  ＣＰＵ、３  ＲＡＭ、４  駆動部、５  センサ、６  作業部、７  操作部、８  出力部、９  ＧＰＳ、９Ａ  ＧＰＳアンテナ、１０  記憶装置、１１  作業マップ、２１〜２６  Ｉ／Ｏ、３５Ｌ，３５Ｒ  駆動輪、３７  駆動ユニット、３９  レーザレンジファインダ、４１  キャスタ、４３  ブラシ、４５  スキージ、４７  ボタン、５０  作業領域、５２，５４  走行単位、６１，６５  ブラシ通過領域、６３，６７  スキージ通過領域、１００，１００Ａ〜１００Ｃ  自走式装置、２１０  位置検出部、２２０  距離検出部、２３０  算出部、２４０  決定部、２５０  走行制御部、ＦＦ，ＰＦ  最終フラグ、ＦＳ  直進フラグ、ＧＥ  清掃終了位置、ＧＰθ  進行方向、ＧＰ  現在位置、ＧＲＣ，ＰＣ  旋回中心、ＧＳ  作業開始位置、ＩＶ，ＶＢＬ，ＶＬ，ＶＲ  速度、Ｌ１〜Ｌ１０  走行経路、ＰＮ  経路番号、ＰＮＮ  次経路番号、ＰＮＲ  残り経路数、ＰＲＤ  旋回方向、ＰＲＲ  旋回半径、ＰＴＮ  要素、ＰＶ  清掃速度、ＰＷ  経路幅、ＰＷ２  残り幅、ＰＷ３  最小残り幅、ＲＲ  ブラシ旋回半径、ＶＢ  ブラシ移動速度。
【図１】
2015225507.tif 000003
【図２】
2015225507.tif 000004
【図３】
2015225507.tif 000005
【図４】
2015225507.tif 000006
【図５】
2015225507.tif 000007
【図６】
2015225507.tif 000008
【図７】
2015225507.tif 000009
【図８】
2015225507.tif 000010
【図９】
2015225507.tif 000011
【図１０】
2015225507.tif 000012
【図１１】
2015225507.tif 000013
【図１２】
2015225507.tif 000014
【図１３】
2015225507.tif 000015
【図１４】
2015225507.tif 000016