(57)【特許請求の範囲】
【請求項１】
物体と移動体との距離を測定する距離センサ部と、
前記距離センサ部からの信号を得て、前記移動体の位置、または姿勢を推定する位置姿勢推定部と、
前記位置姿勢推定部からの信号を得て、前記移動体を移動させる経路を発生させ、前記移動体を移動させるように制御する経路追従制御部と、
前記位置姿勢推定部、前記経路追従制御部が参照する経路情報を有する外部記憶部と、
前記移動体を移動させる移動機構部と、
前記距離センサ部、前記位置姿勢推定部、前記経路追従制御部、外部記憶部、移動機構部に電力を供給する電源部と、
前記距離センサ部、前記位置姿勢推定部、前記経路追従制御部、外部記憶部、移動機構部、電源部とを支持する筐体と
を備えており、
前記経路追従制御部の制御によって、移動する移動体において、
前記距離センサ部と、前記位置姿勢推定部とを再起動させる第１の再起動系統と、
前記経路追従制御部を再起動させる第２の再起動系統とが分かれて再起動され、
前記距離センサ部と、前記位置姿勢推定部の異常を検出する第１の異常検出部を設け、
前記第１の異常検出部が異常を検出した場合には、第１の再起動系統によって前記距離センサ部と、前記位置姿勢推定部の再起動の処理が実行され、
前記経路追従制御部の異常を検出する第２の異常検出部を設け、
前記第２の異常検出部が異常を検出した場合には、第２の再起動系統によって前記経路追従制御部の再起動の処理が実行されることを特徴とする移動体。
【請求項２】
請求項１に記載の移動体において、
前記距離センサ部からの検出が出来る範囲の前記筐体上に校正用構造物を設け、
前記距離センサ部と前記校正用構造物との位置に対応して予め設定した設定値と前記距離センサ部によって前記校正用構造物の位置を検出した検出値との差が所定値よりも大きい場合には、前記第１の異常検出部が、前記距離センサ部の異常を検出することを特徴とする移動体。
【請求項３】
請求項２記載の移動体において、
前記距離センサ部と前記校正用構造物との位置に対応して予め設定した設定値と前記距離センサ部によって前記校正用構造物の位置を検出した検出値との差から、前記位置姿勢推定部は、前記距離センサ部からの検出信号の値を補正する補正値を得ることを特徴とする移動体。
【請求項４】
請求項１に記載の移動体において、
前記移動体には一定時間毎に変化するカウント値により経過した時間の計測が可能なタイマを設け、
前記外部記憶部は、前記移動体が移動する範囲の地図データを記憶し、
前記位置姿勢推定部は、
前記地図データを読み込む地図読み込み部を有し、
前記地図読み込み部からの出力値と、前記距離センサ部からの検出値から前記移動体の位置を推定し、
前記距離センサ部からの検出値が時刻に対応させた距離センサデータとして前記外部記憶部に記憶され、
前記位置姿勢推定部の再起動後に、
前記位置姿勢推定部は、再起動される前の時刻を前記外部記憶部から読出し、再起動後の前記タイマから得られるカウント値と比較して
前記外部記憶部から読出された時刻と、前記タイマから得られるカウント値に対応する時刻との差分が所定値よりも小さい場合には、
前記地図読み込み部が前記地図データから読み込む範囲が前記地図データに記憶されている全範囲よりも小さいことを特徴とする移動体。
【請求項５】
請求項１に記載の移動体において、
前記外部記憶部は、前記移動体が移動する範囲の地図データを記憶し、
前記位置姿勢推定部は、
前記地図データを読み込む地図読み込み部を有し、
前記地図読み込み部からの出力値と、前記距離センサ部からの検出値から前記移動体の位置を推定し、
前記距離センサ部からの検出値が距離センサデータとして前記外部記憶部に記憶され、
前記位置姿勢推定部の再起動後に、
前記位置姿勢推定部は、再起動される前の距離センサデータを前記外部記憶部から読出し、再起動後の前記距離センサ部からの検出値と比較して
前記外部記憶部から読出された距離センサデータと、再起動後の前記距離センサ部からの検出値との差分が所定値よりも小さい場合には、
前記地図読み込み部が前記地図データから読み込む範囲が前記地図データに記憶されている全範囲よりも小さいことを特徴とする移動体。
【請求項６】
請求項４、または請求項５記載の移動体において、
前記地図読み込み部が前記地図データから読み込む範囲を前記距離センサ部が検出出来る範囲に対応する範囲とすることを特徴とする移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、搬送物を搬送する移動体を提供する技術に関する。
【背景技術】
【０００２】
搬送物を搬送する移動体に関する背景技術として、特許文献１には、「自律移動体が走行するルートの制約を低減して最短距離のルートを設定可能とし、複数台の自律移動体が同時に走行しても衝突や渋滞が生じないようにする」ものについての開示がある。
【０００３】
また、特許文献２には、「方位推定手段は光ファイバジャイロの出力に基づいて移動体の方位を推定演算する」との記載があり、この光ファイバジャイロからの出力信号に対し、「推定演算された方位と実際の移動体の方位との誤差はきわめて小さいものなる」ことについての開示がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2005-242489号公報
【特許文献２】特開平07-083673号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
異常の発生に伴って電源が切られるなどして通常でない状態に陥ったロボットが、作業が可能な状態になるまでには、コントローラのOSの起動待ちや各種データの読み込み、センサや移動機構の動作確認などの準備が必要であり、多くの時間を要する。本発明ではこれらの準備に要する時間を短縮し、移動体(以下では、表現として、移動体に限らず、ロボットと称することとする）の作業可能な状態への復帰の迅速化を課題とする。
【課題を解決するための手段】
【０００６】
前記課題を解決する為に、ロボットが再起動される際に、コントローラやセンサの状態を判定し、異常な状態にないコントローラやセンサは再起動しないようにして、再起動するデバイスを減らすことで起動に要する時間を短縮するようにする。
【０００７】
ここで、前記にて説明した内容を表現を変えて、更に説明する。
【０００８】
物体と移動体との距離を測定する距離センサ部と、前記距離センサ部からの信号を得て、前記移動体の位置、または姿勢を推定する位置姿勢推定部と、前記位置姿勢推定部からの信号を得て、前記移動体を移動させる経路を発生させ、前記移動体を移動させるように制御する経路追従制御部と、前記位置姿勢推定部、前記経路追従制御部が参照する経路情報を有する外部記憶部と、前記移動体を移動させる移動機構部と、前記距離センサ部、前記位置姿勢推定部、前記経路追従制御部、外部記憶部、移動機構部に電力を供給する電源部と、前記距離センサ部、前記位置姿勢推定部、前記経路追従制御部、外部記憶部、移動機構部、電源部とを支持する筐体とを備えており、前記経路追従制御部の制御によって、移動する移動体において、前記距離センサ部と、前記位置姿勢推定部とを再起動させる第１の再起動系統と、前記経路追従制御部を再起動させる第２の再起動系統とが分かれて再起動され、前記距離センサ部と、前記位置姿勢推定部の異常を検出する第１の異常検出部を設け、前記第１の異常検出部が異常を検出した場合には、第１の再起動系統によって前記距離センサ部と、前記位置姿勢推定部の再起動の処理が実行され、前記経路追従制御部の異常を検出する第２の異常検出部を設け、前記第２の異常検出部が異常を検出した場合には、第２の再起動系統によって前記経路追従制御部の再起動の処理が実行されるようにする。
【０００９】
また、前記距離センサ部からの検出が出来る範囲の前記筐体上に校正用構造物を設け、前記距離センサ部と前記校正用構造物との位置に対応して予め設定した設定値と、前記距離センサ部によって前記校正用構造物の位置を検出した検出値との差が所定値よりも大きい場合には、前記距離センサ部の異常を検出するようにする。
【００１０】
また、前記距離センサ部からの検出が出来る範囲の前記筐体上に校正用構造物を設け、前記距離センサ部と前記校正用構造物との位置に対応して予め設定した設定値と、前記距離センサ部によって前記校正用構造物の位置を検出した検出値との差から、前記距離センサ部からの検出信号の値を補正する補正値を得るようにする。
【００１１】
また、前記移動体には一定時間毎に変化するカウント値により経過した時間の計測が可能なタイマを設け、前記外部記憶部は、前記移動体が移動する範囲の地図データを記憶し、前記位置姿勢推定部は、前記地図データを読み込む地図読み込み部を有し、前記地図読み込み部からの出力値と、前記距離センサ部からの検出値から前記移動体の位置を推定し、前記距離センサ部からの検出値が時刻に対応させた距離センサデータとして前記外部記憶部に記憶され、前記位置姿勢推定部の再起動後に、前記位置姿勢推定部は、再起動される前の時刻を前記外部記憶部から読出し、再起動後の前記タイマから得られるカウント値と比較して、前記外部記憶部から読出された時刻と、前記タイマから得られるカウント値に対応する時刻との差分が所定値よりも小さい場合には、前記地図読み込み部が前記地図データから読み込む範囲が前記地図データに記憶されている全範囲よりも小さいようにする。
【００１２】
また、前記外部記憶部は、前記移動体が移動する範囲の地図データを記憶し、前記位置姿勢推定部は、前記地図データを読み込む地図読み込み部を有し、前記地図読み込み部からの出力値と、前記距離センサ部からの検出値から前記移動体の位置を推定し、前記距離センサ部からの検出値が距離センサデータとして前記外部記憶部に記憶され、前記位置姿勢推定部の再起動後に、前記位置姿勢推定部は、再起動される前の距離センサデータを前記外部記憶部から読出し、再起動後の前記距離センサ部からの検出値と比較して、前記外部記憶部から読出された距離センサデータと、再起動後の前記距離センサ部からの検出値との差分が所定値よりも小さい場合には、前記地図読み込み部が前記地図データから読み込む範囲が前記地図データに記憶されている全範囲よりも小さいようにする。
【００１３】
また、前記地図読み込み部が前記地図データから読み込む範囲を前記距離センサ部が検出出来る範囲に対応する範囲とするようにする。
【発明の効果】
【００１４】
本発明によれば、従来よりも、再起動するデバイスを減らすことで起動に要する時間を短縮した移動体、または、ロボットを提供可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例の機能の構成図
【図２】本発明の実施例のハードウェア・ソフトウェア構成図
【図３】本発明の実施例のロボットの外観を示す図
【図４】本発明の実施例のロボットの運用とレーザ距離センサデータの例を示す図
【図５】本発明の実施例の自動走行時におけるロボット内の処理を示す図
【図６】本発明の実施例の異常検出時におけるロボット内の処理を示す図
【図７】本発明の実施例の位置姿勢推定コントローラの起動時の処理を示す図
【図８】本発明の実施例の経路追従制御コントローラの起動時の処理を示す図
【図９】本発明の実施例のロボットの準備動作での処理を示す図
【図１０】本発明の実施例の地図データの読み込み範囲の設定の処理を示す図
【発明を実施するための形態】
【００１６】
本発明に関する実施例について、以下、図面を用いて説明をする。また、以下の説明において、ロボットと説明しているのは、前述の移動体の実施例としてのものである。
【００１７】
また、前述の説明では、各部の間で出力、入力、受信、送信されたり、参照されたり、記憶されたり、設定される情報、データ、信号等を説明によっては、異なる表現としているが、その文言によって、限定されるものではない。例えば、「値(設定値、検出値、補正値、出力値など)」として、説明していても、データにのみ限定されるものではなく、情報、信号として扱い、表現しても同様の意味を表すものとする。これは、以下の説明においても、同様とする。
【実施例１】
【００１８】
ここでは、まず本実施例で想定するロボットの機能の構成・基本的な処理の流れについて述べ、続いて、ロボットが移動中に障害物に衝突して停止した異常な状態に陥ってから作業可能な状態に復帰する例を通して、ロボットで行われる処理について述べる。
【００１９】
ロボットの機能の構成を図１に示す。ロボット０１０１は、位置姿勢推定コントローラ部０１０２(前述の位置姿勢推定部に対応するものとする)と経路追従制御コントローラ部０１０３(前述の経路追従制御部に対応するものとする)、外部記憶部０１２８、距離センサ部０１０４、距離センサキャリブレーション治具部０１３０、異常検出センサ部０１０５、移動機構部０１１６、再起動制御部０１１７、電源部０１１８(前述の電源部に対応するものとする)と、これらを支持する筐体(図示せず)から構成される。
【００２０】
また、図１には、図示していないが、タイマも構成上有しており、例えば、制御信号を発生する際の基準などに使用される。ここで、タイマとは、一定時間毎に変化するカウント値により経過した時間の計測が可能な機能を有するものとする。なお、このタイマは、前記ロボットの機能の構成の一部の電源が切られたり、再起動されても、停止することなく、タイマのカウント値が継続して更新され、時刻の計測が可能であるとする。
【００２１】
まず、ロボットの起動完了後の自動走行時に行われる処理について述べる。ロボット０１０１は、距離センサ制御部０１１０により、環境中の物体までの距離計測が可能な距離センサ部０１０４を制御し、距離センサから環境の物体までの距離データを得る。この距離データは、計測を行ったセンサから見た障害物の方向と計測を行った時刻が付加されたデータであり、次の処理に渡されると共に時刻付き距離センサデータログ０１２２として外部記憶部０１２８に記憶される。
【００２２】
従って、異常の発生などで、停止したり、電源が切られたり、再起動される場合には、停止したり、電源が切られたり、再起動される直前の距離センサから環境の物体までの距離データ、計測を行ったセンサから見た障害物の方向と計測を行った時刻が記憶されることになる。
【００２３】
距離センサ部０１０４より得られる距離データには、距離センサキャリブレーション治具部０１３０を計測した結果も含まれているものとする。距離センサキャリブレーション治具部０１３０は、距離センサ部０１０４からの距離・方向と形状、さらに治具そのものの姿勢が既知で距離センサによる計測が可能な物体であり、距離センサ部０１０４の計測範囲内に入るようにしてロボットの筐体に設置されている。この計測結果を用いることで、次の処理によって距離センサ部０１０４の異常を検出する。
【００２４】
位置姿勢推定用デバイス異常検出部０１１１では、位置姿勢推定コントローラ部０１０２の起動時に予め読み込んでおいた距離センサキャリブレーションデータ０１２３に記録されている距離センサ部０１０４から距離センサキャリブレーション治具部０１３０までの距離と、距離センサ部０１０４より距離センサキャリブレーション治具部０１３０を実際に計測して得た距離との差を求め、この距離の差の大きさが閾値以内に収まるか否かで異常の有無の判定を行う。
【００２５】
ここで、距離センサキャリブレーション治具部０１３０は、前述の校正用構造物に対応するものである。
【００２６】
また、位置姿勢推定用デバイス異常検出部０１１１では、位置姿勢推定コントローラ初期化部０１０６、距離センサデバイスチェック部０１０７の処理において、異常が検出された場合にも、その異常を検出して、再起動制御部に検出したことを出力出来るものとする。
【００２７】
より具体的に述べる。今、距離センサキャリブレーションデータ０１２３に記録されている距離センサ部０１０４から距離センサキャリブレーション治具部０１３０までの距離を基準距離と呼ぶものとする。これは、距離センサ部０１０４から治具部０１３０までの距離を距離センサ部０１０４より高精度な別のセンサによって求めた値、あるいは、距離センサ部０１０４と距離センサキャリブレーション治具部０１３０の配置を設計した際に得られる設計値を想定する。
【００２８】
なお、距離センサ部０１０４よって、検出、測定されて得られる距離データが、前記基準距離に対応するように、対応付けが出来るようになされているものとする。例えば、距離センサのキャリブレーションを行う場合には、前記距離センサ部０１０４が前記距離センサキャリブレーション治具部０１３０、または前記校正用構造物を検出し、距離、位置を測定できるように、前記距離センサ部０１０４の向きを変更、調整することなどである。
【００２９】
但し、簡易的には、前記距離センサの検出する初期位置が前記距離センサキャリブレーション治具部０１３０を検出し、距離、位置を測定できる位置とするものであっても良い。より具体的には、例えば、１８０度の範囲を回転して前記距離センサが筐体に設置されて、距離等を検出する場合について、説明する。
【００３０】
前記距離センサの回転角の内で９０度の方向を前記筐体の前進する向きであるとした場合に、０度の向き(前進方向に対しては垂直の方向になる)の前記筐体上に、前記距離センサキャリブレーション治具部０１３０、または前記校正用構造物を設けるようにする。こうすることで、前記距離センサの検出する初期位置を０度とすれば、前記距離センサキャリブレーション治具部０１３０、または前記校正用構造物を検出して、位置、距離を測定することが出来るようになる。
【００３１】
前記に限定されることなく、種々の方法によって、前記基準距離と、前記距離センサ部０１０４からの検出される情報との対応付けが行われるものであってよい。
【００３２】
この基準距離と距離センサ部０１０４による実測で得られた距離との差の大きさが閾値より大きい場合は、想定している距離と実測した距離の差が大きいことから、距離センサ部０１０４に故障などが生じているものと見なし、異常として検出する。
【００３３】
なお、前記基準距離は、前記距離センサ部と前記校正用構造物との位置に対応して予め設定した設定値とするものとする。
【００３４】
また、距離センサ部０１０４による実測で得られた距離は、前記距離センサ部０１０４によって、距離センサキャリブレーション治具部０１３０（または前記校正用構造物）の位置を検出した検出値とするものとする。
【００３５】
距離の差の大きさが、所定値、若しくは閾値以内に収まっている場合は、想定した通りの距離が計測できているということから距離センサ部０１０４は正常動作しているものと見なし、処理を次に進める。この際、距離センサキャリブレーションデータ０１２３に記録されている距離センサ部０１０４から距離センサキャリブレーション治具部０１３０までの距離から、距離センサ部０１０４より距離センサキャリブレーション治具部０１３０を計測して得た距離を引いた値が補正値として距離データと共に次の処理に渡される。また、ここでの距離センサ部０１０４の異常の検出結果は、再起動制御部０１１７宛に出力され、保存される。
【００３６】
続いて、距離センサデータ補正対応位置姿勢推定部０１１２にて、ロボット０１０１の環境内での位置・姿勢の算出処理が行われる。ここではまず、前述の補正を距離センサ部０１０４の距離の計測誤差と見なして、この計測誤差を距離データに加えることで、距離データの補正を行うと同時に、レーザを照射した方向と計測で得た距離の情報から、各方向でレーザが物体に当たった位置を求めることで、距離データを環境の幾何形状データに変換する。続いて、地図読み込み部０１１３にて予め読み込まれていた環境の幾何形状を記録した地図データ０１２５とのマッチングを行う。
【００３７】
例えば距離センサ部０１０４が床面に平行な面をスキャンするレーザ距離センサとした場合は、そのスキャン面での環境の幾何形状データと、環境の幾何形状を記録した画像による地図データとが重なる割合が最大となるときの地図データ上での幾何形状データの位置・姿勢、つまりはレーザ距離センサの位置・姿勢を求める。
【００３８】
地図データ０１２５における距離センサ部０１０４の位置・姿勢が求まるが、ロボットの位置・姿勢を表す際にはロボットの筐体のどこを基準としてもよいため、求まったレーザ距離センサの位置・姿勢をもってロボット０１０１の位置・姿勢とする。また、この位置・姿勢の推定結果には時刻が付加され、時刻付き位置姿勢推定データログ０１２４に記録される。
【００３９】
経路計画部０１１４は、環境内でロボットが通りうる経路と部分的な経路同士のつながり方とこの経路の属性、例えば部分的な経路の長さや道幅が記録された経路グラフデータ０１２６を読み込んでおき、距離センサデータ補正対応位置姿勢推定部０１１２で得られた推定位置・姿勢をもとに、目的地までの経路を求める。
【００４０】
そして、移動機構制御部０１１５では、ロボットが追従しようとしている経路に対してロボットの位置・姿勢がどの程度ずれているかを求め、このずれを小さくするように移動機構部０１１６の制御、すなわち、車輪の回転速度やステアリングの切れ角などを求めてモータなどへの指示を随時出し、ロボットの車体を経路に追従させる。
【００４１】
位置姿勢推定用デバイス異常検出部０１１１(前述の第１の異常検出部に対応するものとする)と異常検出センサ部０１０５(前述の第２の異常検出部に対応するものとする)によって異常が検出されていない間は、以上の処理に従って、ロボットは目的地までの自動走行を行う。
【００４２】
以下では、この自動走行中のロボットが異常を検出して停止し、再起動など行って走行可能な状態に復帰するまでの処理の流れについて述べる。自動走行中にロボットの異常検出センサ部０１０５により異常が検出されたとする。ここでは例として障害物との接触を検出するバンパセンサを異常検出センサ部０１０５として備え、これによりロボットの障害物への衝突を検出した状況を考える。
【００４３】
異常検出センサ部０１０５による異常の有無の検出結果は移動機構制御部０１１５に送信されており、異常が検出されると、ロボットによる事故の被害を抑えるために移動機構制御部０１１５から移動機構部０１１６に対して停止信号が出される。移動機構制御部０１１５はまた、一方で距離センサ部０１０４と位置姿勢推定コントローラ部０１０２の異常の有無の検出結果は位置姿勢推定用デバイス異常検出部０１１１に送信されており、ここでの異常の検出結果に応じて再起動するデバイスを選択する。
【００４４】
より具体的には、位置姿勢推定用デバイス異常検出部０１１１により、距離センサ部０１０４の異常が検出され、かつ異常検出センサ部０１０５でも異常が検出されていた場合は、再起動指示線０１２０(前述の第２の再起動系統に対応するものとする)と再起動指示線０１２１(前述の第１の再起動系統に対応するものとする)に対して、再起動制御部０１１７から再起動を指示する制御信号が出力され再起動が行われる。
【００４５】
また、距離センサ部０１０４の異常が検出されず、異常検出センサ部０１０５のみで異常が検出されていた場合は、距離センサ部０１０４と位置姿勢推定コントローラ部０１０２が接続されている再起動指示線０１２０へは再起動の指示をする制御信号は、出力されず、経路追従制御コントローラ部０１０３接続されている再起動指示線０１２１のみの再起動の指示をする制御信号が出力される。
【００４６】
また、位置姿勢推定コントローラ部０１０２のみで異常が検出されていた場合は、距離センサ部０１０４と位置姿勢推定コントローラ部０１０２が接続されている再起動指示線０１２０へは再起動の指示をする制御信号のみが出力される。
【００４７】
なお、図１においては、図示していないが、異常検出センサ部０１０５とは、別に経路追従制御コントローラ部０１０３(前述の経路追従制御部に対応するものとする)の異常を検出する検出部を設け、異常を検出した場合に、検出後、再起動制御部０１１７に検出したことを出力し、再起動制御部０１１７から再起動を指示する制御信号が出力され前記経路追従制御コントローラ部０１０３の再起動が行われるようにしても良い。
【００４８】
但し、前記経路追従制御コントローラ部０１０３の再起動は、経路追従制御コントローラ部０１０３の異常を検出する検出部(前述の第２の異常検出部に対応するものとする)からの異常を検出したこと、そして、異常検出センサ部０１０５からの異常を検出したことの両者に各々対応するように、再起動されるものであっても良い。
【００４９】
以上により、正常動作している距離センサ部０１０４と位置姿勢推定コントローラ部０１０２の不要な停止・再起動を回避され、ロボットが自動走行などの通常の動作が行える状態に復帰するまでの時間の短縮が図られる。
【００５０】
例えば、距離センサ部０１０４にレーザ距離センサを用いているとする。この場合、スキャンするためにレーザ照射器を回転させる機構を一般に備えており、その回転が安定するまでに時間がかかることがあり、ロボットが作業できる通常状態への復帰が遅くなる要因となりうる。
【００５１】
この他、センサ内のチップやトランジスタ等の部品の温度変化に因む計測誤差を抑えるため、温度変化が落ち着くまでの待ち時間、あるいはレーザ距離センサの内部やコントローラとの通信チェックやレーザ照射部カバーの汚れチェックなどの待ち時間も同様の復帰が遅くなる要因となる。
【００５２】
距離センサ部０１０４の他にも、位置姿勢推定コントローラ部０１０２がOSを備えているならばその起動時間、各種プログラムやデータ読み込みの時間が必要となり、同じくロボットの復帰が遅くなる原因となる。距離センサ部０１０４に異常がない場合には、前述のとおり、距離センサ部０１０４や位置姿勢推定コントローラ部０１０２の停止・再起動を行わないようにすることで、ここに挙げたようなそれぞれの待ち時間が削減され、ひいては、ロボットに異常が生じてから、通常の作業が行える状態に復帰するまでの時間の短縮が可能となる。
【００５３】
以下、位置姿勢推定用デバイス異常検出部０１１１により、距離センサ部０１０４の異常が検出されていなかった場合と検出されていた場合の処理の流れについて順に述べる。
【００５４】
再起動制御部０１１７に記録されている距離センサ部０１０４の異常の検出結果において、異常が検出されていなかった場合は、距離センサ部０１０４と位置姿勢推定コントローラ部０１０２が接続されている再起動指示線０１２１へは再起動の指示をする制御信号は、出力されず、経路追従制御コントローラ部０１０３に接続されている再起動指示線０１２０への再起動の指示をする制御信号が出力される。
【００５５】
経路追従制御コントローラ部０１０３では、まず経路追従制御コントローラ初期化部０１０８によって、BIOSの読み込みやOSの起動が行われ、自動走行時に経路追従制御コントローラ内で用いられる機能の各部、具体的には経路計画部０１１４、移動機構制御部０１１５が起動される。続いて移動機構デバイスチェック部０１０９で、移動機構部０１１６との通信チェックやブレーキ信号の送信などが行われる。経路追従制御コントローラ初期化部０１０８と移動機構デバイスチェック部０１０９のそれぞれで異常の有無が確認され、確認結果は移動機構制御部０１１５に記録される。
【００５６】
また、起動された経路計画部０１１４では、環境内でロボットが通りうる経路と部分的な経路同士のつながり方とこの経路の属性、例えば部分的な経路の長さや道幅が記録された経路グラフデータ０１２６を読み込み、また、道幅に対してロボットの通行可否を確認するための車体の形状情報、あるいは移動機構制御部０１１６に最大移動速度・最大回転角速度等移動機構の仕様や設定が記録された移動機構キャリブレーションデータ０１２７の読み込みが行われ、これらのデータは移動機構制御部０１１５に送信される。
【００５７】
距離センサ部０１０４と位置姿勢推定コントローラ部０１０２は動作を継続しているため、以上によってロボットは通常の作業が行える状態への復帰が完了となる。
【００５８】
再起動制御部０１１７に記録されている距離センサ部０１０４の異常の検出結果において、異常が検出されていた場合は、距離センサ部０１０４と位置姿勢推定コントローラ部０１０２の停止・再起動が行われる。位置姿勢推定コントローラ部０１０２では、まず位置姿勢推定コントローラ初期化部０１０６によって、BIOSの読み込みやOSの起動が行われ、自動走行時に位置姿勢推定コントローラ内で用いられる機能の各部、具体的には距離センサ制御部０１１０、位置姿勢推定用デバイス異常検出部０１１１、距離センサデータ補正対応位置姿勢推定部０１１２、地図読み込み部０１１３が起動される。
【００５９】
続いて距離センサデバイスチェック部０１０７で、距離センサ部０１０４との通信チェックやレーザ照射部カバーの汚れチェックなどが行われる。位置姿勢推定コントローラ初期化部０１０６と距離センサデバイスチェック部０１０７のそれぞれで異常の有無が確認され、確認結果は位置姿勢推定用デバイス異常検出部０１１１に記録される。
【００６０】
また、起動された位置姿勢推定用デバイス異常検出部０１１１では、距離センサキャリブレーションデータ０１２３に記録されている距離センサ部０１０４から距離センサキャリブレーション治具部０１３０までの距離、つまりは前述の基準距離のデータの読み込みが行われる。
【００６１】
また、地図読み込み部０１１３は、時刻付き位置姿勢推定データログ０１２４より、異常が検出されて停止した位置・姿勢と時刻のデータを読み出し、現在の時刻との差を求め、時刻の差の大きさが閾値以内の場合、ロボットが異常を検出されて停止して、現在起動するまでに時間が経ってないため、ロボットが移動された可能性は低く、前回推定した位置・姿勢に今現在も停止しているものとみなして、この位置・姿勢を中心に、距離センサ部０１０４の計測範囲分だけの地図を地図データ０１２５から読み込む。これにより、地図データ０１２５の読み込み範囲が絞られ、地図データ０１２５の読み込みの待ち時間が短縮される。
【００６２】
以上によって、距離センサ部０１０４と位置姿勢推定コントローラ部０１０２の起動が完了し、並行して起動している経路追従制御コントローラの起動に伴い、ロボットの通常の作業が行える状態への復帰が完了となる。
【００６３】
前記では、時刻付き位置姿勢推定データログ０１２４から時刻のデータを読み出した実施例を説明したが、これに限定されるものではない。
【００６４】
例えば、前述したタイマから、前記の様に異常で停止した時刻、または、タイマカウンタ値を得るようにするものであっても良い。
【００６５】
以上が、ロボットを構成する機能毎に行われる処理の概要となる。続いて、ロボットが移動中に障害物に衝突して停止した異常な状態に陥ってから作業可能な状態に復帰する例を通して、ロボットで行われる処理について、より具体的なハードウェアの構成とソフトウェアの処理を踏まえて説明する。
【００６６】
ロボット０１０１のハードウェアとこれに格納されるソフトウェアの構成を図２に示す。ロボットは、前述の位置姿勢推定コントローラ部０１０２と経路追従制御コントローラ部０１０３に加え、外部記憶装置０２０８、レーザ距離センサ０２０９、バンパセンサ０２１０、再起動制御コントローラ０２１１、移動機構０２１２、ディスプレイ０２１３、入力機器０２１４、これらの機器同士が通信するための通信線０２０４より構成される。なお、図２では基本的に処理の流れに関わる通信線のみ表記しており、図１にあった電源の表記は省略している。
【００６７】
ここでは距離センサ部０１０４として、レーザ距離センサ０２０９を用いるものとする。このセンサは、レーザを物体に照射してから、照射したレーザが物体によって反射してセンサに返ってくるまでの時間を計測することで、センサから物体までの距離を得るレーザ照射部を備え、さらにこのレーザ照射部を回転させながら、一定の回転角をなす方向毎にセンサから物体までの距離を計測することで、一定の角度範囲をスキャンし、スキャン面をなす平面内にある物体の幾何形状を計測するセンサである。
【００６８】
本実施例では、スキャンする角度範囲を１８０度とし、この角度範囲において０．５度毎にレーザを照射し、物体までの距離を計測することを想定するがスキャンする角度範囲やレーザを照射する角度の刻み幅、距離の最大計測範囲などは異なっていてもよい。図３にロボット０３１０に搭載されたレーザ距離センサ０３０１によって環境中の物体を計測する様子を示す。
【００６９】
同図はロボット０１０１に相当するロボットの車体を上から見下ろした様子を表している(平面図である。)。この図において、レーザ０３０４は１８０度の角度範囲０３０２をスキャンし、この範囲において、センサのレーザ照射部の視点０３０３から環境中の物体までの距離として、例えば環境中の物体０３０６との距離０３０５を計測するものとする。
【００７０】
本実施例では、以上のようなセンサを想定しているが、同様に物体の幾何形状の計測が可能なセンサであればセンサの方式は異なっていてもよい。例えばステレオカメラや、赤外線を面状に物体に照射することで画素毎の物体までの距離計測が可能なデプスカメラなどであってもよい。
【００７１】
移動機構部０１１６としては、図３に示されるロボット０３１０を想定する。同ロボット０３１０には、前部にキャスタ０３１１が、また後部に駆動輪０３１２が備えられており、駆動輪の回転角速度の差を制御することで直進・旋回を行えるようになっているものとする。
【００７２】
しかし、環境内を移動する効果が得られるのであれば、無限軌道を備える車両、脚を備えるロボット、船舶、航空機、飛行船など他の移動機構であってもよい。また、本実施例においては、ロボットが自動走行する例を示しているが、ロボットは人が搭乗して操縦したり、あるいは遠隔からの通信によって操縦するようになっていてもよい。
【００７３】
異常検出センサ部０１０５としては、ここでは非常停止ボタンを想定する。異常検出センサ部０１０５の異常の検出としては、非常停止ボタンの押し下げの検出の他に、バンパセンサによる衝突検出、電流センサによる過電流の検出、距離センサによるロボット周辺の障害物の検出、移動機構のエンコーダデータと加速度センサデータの比較によるスリップの検出、傾斜センサによる車体の揺れ・傾きの検出など、様々な異常検出が考えられるが、ロボットの運用に合わせて異常を定義し、それを検出可能なセンサであれば方式や設置する位置・数などは異なっていても良い。
【００７４】
再起動制御部０１１７を、ここでは再起動制御コントローラ０２１１としているが、ここでは非常停止ボタンによる異常検出結果や位置姿勢推定用デバイス異常検出プログラム０２１９などによる異常検出結果を受信し、これをもとにデバイスの再起動を促す信号の出力を制御するプログラムが搭載され、かつロボットやコントローラ、センサを駆動するための電源とは別に専用の電源を備えるマイコンを想定する。
【００７５】
また、位置姿勢推定コントローラ部０１０２は、プロセッサ０２０１、メモリ０２０２、記憶装置０２０３、OS０２１５、BIOS読み込みやOSの起動を行う位置姿勢推定コントローラ初期化プログラム０２１６、レーザ距離センサ０２０９との通信チェックなどを行うレーザ距離センサデバイスチェックプログラム０２１７、レーザ距離センサ０２０９から距離データを取得するレーザ距離センサ制御プログラム０２１８、位置姿勢推定用デバイス異常検出プログラム０２１９、レーザ距離センサデータと地図データとのマッチングによって位置・姿勢を算出するレーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０、地図の読み込み範囲を設定する地図読み込みプログラム０２２１から構成される。
【００７６】
同様に、経路追従制御コントローラ部０１０３は、プロセッサ０２０５、メモリ０２０６、記憶装置０２０７、OS０２２２、BIOS読み込みやOSの起動を行う経路追従制御コントローラ初期化プログラム０２２３、移動機構０２１２との通信チェックやブレーキ信号の送信などを行う移動機構デバイスチェックプログラム０２２４、経路グラフデータ０２３０をもとに目的地に辿り着くための経路を算出する経路計画プログラム０２２５、経路に沿って車体が移動するように車輪の回転速度などを算出する移動機構制御プログラム０２２６から構成される。
【００７７】
また、外部記憶装置０２０８には、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０がマッチングに用いる地図データ０２２７、レーザ距離センサ０２０９より得られた距離データを時刻と共に記録した時刻付き距離センサデータログ０２２８、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０によって得られるロボットの位置・姿勢の推定結果を時刻と共に記録した時刻付き位置姿勢推定データログ０２２９、環境内でロボットが通りうる通路の長さや道幅が記録された経路グラフデータ０２３０、レーザ距離センサ０３０１からレーザ距離センサキャリブレーション治具０３０９までの距離である基準距離が記録されたレーザ距離センサキャリブレーションデータ０２３１、最大移動速度・回転角速度等移動機構の仕様や標準移動速度等の設定が記録された移動機構キャリブレーションデータ０２３２が記録されている。
【００７８】
ここで、レーザ距離センサキャリブレーション治具０３０９は、図１にて説明した距離センサキャリブレーション治具部０１３０(または、校正用構造物)に対応するものとする。
【００７９】
なお、図２のプログラムやデータは、メモリにロードされた上で、プロセッサにより処理されることを想定しているが、これと同等の働きをするのであれば、FPGA（Field Programmable Grid Array）やCPLD（Complex Programmable Logic Device）などのプログラマブルなハードウェアで実現してもよい。
【００８０】
また、プログラムやデータは、CD-ROM等の記憶媒体から移してもよいし、ネットワーク経由で他の装置からダウンロードしてもよい。また、プロセッサや記憶装置、移動機構など、ロボット０１０１を構成する各デバイスは、ここでは有線の通信線０２０４により互いに通信することを想定しているが無線であってもよく、また、通信が可能であれば、位置姿勢推定コントローラ部０１０２と経路追従制御コントローラ部０１０３、外部記憶装置０２０８、ディスプレイ０２１３、入力装置０２１４の各デバイスが物理的に遠隔にあってもよい。また、以上のハードウェアやソフトウェアは、実施形態に応じて、取捨選択してもよい。
【００８１】
続いて、ロボットの起動が完了して通常の動作を行っているときの処理の流れについて述べ、その後に異常が検出されて再起動される際の処理の流れについて述べる。
【００８２】
まず、ロボットの起動が完了して通常の稼動を行っているときの処理の流れ、より具体的には、図１の距離センサ部０１０４で計測を行い、距離センサ制御部０１１０・位置姿勢推定用デバイス異常検出部０１１１・地図読み込み部０１１３・距離センサデータ補正対応位置姿勢推定部０１１２・経路計画部０１１４を経て移動機構制御部０１１５により車体の制御が行われるまでの流れについて述べる。
【００８３】
今、ロボットが起動され、位置姿勢推定コントローラ部０１０２と経路追従制御コントローラ部０１０３にて、BIOSやOSの読み込みなどの起動時の準備動作が終わり、自動走行用プログラム部（距離センサ制御部０１１０、位置姿勢推定用デバイス異常検出部０１１１、距離センサデータ補正対応位置姿勢推定部０１１２、地図読み込み部１０１３、経路計画部０１１４、移動機構制御部０１１５）に相当するプログラム群として、レーザ距離センサ制御プログラム０２１８、位置姿勢推定用デバイス異常検出プログラム０２１９、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０、地図読み込みプログラム０２２１、経路計画プログラム０２２５、移動機構制御プログラム０２２６）が起動された状態にあるとする。
【００８４】
すなわち、位置姿勢推定コントローラ部０１０２では、位置姿勢推定コントローラ初期化プログラム０２１６によるOS０２１５の読み込み、レーザ距離センサデバイスチェックプログラム０２１７によるレーザ距離センサ０２０９との通信チェックなどが行われ、続いてレーザ距離センサより計測結果を取り込むレーザ距離センサ制御プログラム０２１８とコントローラやセンサなどのデバイスの異常を検出する位置姿勢推定用デバイス異常検出プログラム０２１９、ロボットの位置姿勢推定を行うレーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０、地図読み込み範囲を設定する地図読み込みプログラム０２２１が起動された状態にあり、また、経路追従制御コントローラ部０１０３では、経路追従制御コントローラ初期化プログラム０２２３によるOS０２２２の読み込み、移動機構デバイスチェックプログラム０２２４による移動機構０２１２との通信チェックなどが行われ、続いて目的地までの経路を求める経路計画プログラム０２２５と車輪の回転速度などを求める移動機構制御プログラム０２２６が起動された状態にあるとする。ここまででロボットが通常の動作を行うための準備が完了となり、ここからは図５の処理の流れに沿って動作する。
【００８５】
位置姿勢推定コントローラ部０１０２と経路追従制御コントローラ部０１０３のプログラム群が前述のように起動され、また準備動作が完了すると（０５０１）、目的地の設定を終了するかどうかの確認画面がディスプレイ０２１３に表示される。
【００８６】
操作者は、ロボットに荷物の搬送などでロボットを移動させる場合は設定を行うことを入力装置０２１４により選択し（０５０２）、また、移動させる必要がなければ終了を選択して直ちにプログラムの終了となる（０５０３）。今、目的地の設定を行うとしたとすると、処理０５０４に進む。
【００８７】
ここでは、ディスプレイ０２１３に表示される地図と搬送先の候補のリストから操作者が目的地を選択し、入力装置０２１４により設定する（０５０５）。ここでは、図４のように環境の地図データ０４０１が表示されている状態で、ロボット０４０６の目的地が設定されたとする。
【００８８】
ロボットの移動開始時の位置が０４０２とすると、この位置０４０２から目的地までの移動経路０４０４が求められる（０５０５）。これは経路追従制御コントローラ部０１０３の起動時に読み込まれた経路グラフデータ０２３０を用い、最短経路探索など行うことを想定する。
【００８９】
最短経路探索の方法としては経路グラフにおける部分的な経路の距離と部分的な経路同士の接続情報をもとにダイクストラ法などで探索する方法などがあるが方式は異なっていてもよい。また、経路探索の基準として、距離が最短となる経路を求めることをここでは想定しているが、最長となる経路を求めるなど、他の基準であってもよい。
【００９０】
続いてレーザ距離センサ制御プログラム０２１８によりレーザ距離センサ０２０９による距離データを得る。例えばロボットが図４の位置にまで移動していたとするとレーザ距離センサ０４０７によるスキャン範囲より、距離データが得られる（０５０６）。
【００９１】
得られた距離データは位置姿勢推定用デバイス異常検出プログラム０２１９に送られ、ここでレーザ距離センサ０２０９の異常検出が行われる（０５０７）。この異常検出は、レーザ距離センサ０３０１のスキャン範囲に取り付けられたレーザ距離センサキャリブレーション治具０３０９を用いて行われる。
【００９２】
今、レーザ照射部の視点０３０３から、レーザ距離センサキャリブレーション治具０３０９までの距離はレーザ距離センサキャリブレーションデータ０２３１に記録されており、また、距離データのどのデータがレーザ距離センサキャリブレーション治具０３０９を計測するデータなのか、つまりはレーザ距離センサキャリブレーション治具０３０９の方向もレーザ距離センサキャリブレーションデータ０２３１に記録されているものとする。
【００９３】
また、位置姿勢推定用デバイス異常検出プログラム０２１９は起動時にこのデータを読み込んでいるものとする。これを用い、レーザ距離センサ制御プログラム０２１８より送られてきた実測による治具０３０９までの距離と、レーザ距離センサキャリブレーションデータ０２３１に記録されている基準距離との差を求め、この差の大きさが閾値以内の場合は、レーザ距離センサは正常動作しているものとみなし、閾値を越えた場合は異常が生じているものとみなす。
【００９４】
この異常の検出結果は、再起動制御コントローラ０２１１に送られ、同コントローラ内に記憶される。なお、ここでのレーザ距離センサキャリブレーションデータ０２３１に記録されている距離から治具０３０９を実測して得た距離を引いた値はセンサデータ補正値として、距離データと共に次の処理に送られる。なお、この治具０３０９について、図３では、センサの左側に１つだけ設置しているが、複数設置してもよい。
【００９５】
続いて、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０によって、まず、レーザ距離センサデータの補正が行われる（０５０８）。ここでは前の処理より送られてきたセンサデータ補正値を距離データに含まれる各方向の距離値に加えることで、治具０３０９の計測によって得られたレーザ距離センサ０２０９の計測誤差の補正を行う。また、ここで前述の通り、距離データは2次元の幾何形状データ０４０３に変換され、次の処理に渡される。
【００９６】
続いて、得られた幾何形状データ０４０３と地図データ０４０１（図２の０２２７）とのマッチングが行われる（０５０９）。ここでは画像状に表現した幾何形状データ０４０３と同じく画像状に表現した地図データ０４０１を重ね合わせ、幾何形状データの中で障害物の存在を表す画素が地図データ０４０１上で障害物の存在を表す画素と重なる割合が最大となるときの地図データ上での幾何形状データの位置・姿勢、つまりはレーザ距離センサの位置・姿勢を求める。
【００９７】
ここではこのレーザ距離センサの位置・姿勢をロボットの位置・姿勢とする。マッチングの手法としては、この他、センサデータと地図データをなす点のうち、点間距離が最短となる点同士を対応付けて、対応づけられた点間距離の総和が小さくなるように、つまりはセンサデータと地図データの幾何的特徴が最も重なり合うときのセンサデータと地図データ間の相対位置・姿勢を求める、ICP（Iterative Closest Point）と呼ばれる手法の利用なども考えられるが、同様の効果が得られるならば手法は問わない。
【００９８】
次にロボットが目的地に到着しているか否かの判定を行う（０５１０）。これは、前述の位置姿勢推定で得られた位置が目的地の座標から一定の距離内に入っているかどうかの判定によって行う。
【００９９】
今、ロボットが目的地にまだ到着していとすると、経路計画プログラム０２２５によって、現在位置・姿勢をもとに、経路計画で得られた経路に車体を移動させるための車輪の回転速度が算出される（０５１２）。
【０１００】
続いて移動機構制御プログラム０２２６により、車輪の回転速度が所定の値となるように移動機構０２１２のモータに対する電流値の指示が出される（０５１１）。
【０１０１】
ロボットが移動していき、目的地に到着したと判定されたならば（０５１０）、目的地の設定確認の処理０５０２に戻る。以上が、ロボットが通常動作を行っている際の処理の流れとなる。
【０１０２】
次に、異常が検出されて再起動される際の処理の流れについて述べる。ロボットが通常の動作を開始すると、前述の通り、位置姿勢推定用デバイス異常検出プログラム０２１９による異常検出が行われ、結果が再起動制御コントローラ０２１１に送信される。この結果と、別途接続された異常検出用の非常停止ボタンの状態をもとに、再起動制御コントローラ０２１１は図６の流れに沿って処理を行う。
【０１０３】
具体的には、再起動制御コントローラ０２１１内のプログラムが開始されると（０６０１）、コントローラの停止の確認（０６０２）を経て、まず、非常停止ボタンの押し下げデータの取得（０６０３）と位置姿勢推定用デバイス異常検出プログラム０２１９より送られてくる異常検出データの取得（０６０４）が行われる。
【０１０４】
次に、レーザ距離センサ０２０９の状態と非常停止ボタンの状態に応じたデバイス毎の再起動の有無の判定を行う。まず、レーザ距離センサ０２０９と非常停止ボタンの両方にて異常が検出された場合（０６０５）、より具体的には、レーザ距離センサ０２０９による計測に大幅な誤差があり、また、非常停止ボタンの押し下げが判明した場合は、再起動制御コントローラを除く、位置姿勢推定と経路追従制御の両コントローラ、レーザ距離センサ０２０９を再起動する（０６０６）。
【０１０５】
レーザ距離センサ０２０９または非常停止ボタンのいずれかにのみ異常が検出された場合は、それぞれによって再起動の仕方が異なる。まず、レーザ距離センサ０２０９のみで異常が検出された場合（０６０９）、レーザ距離センサのみに異常が生じていることから、レーザ距離センサ０２０９とこれを制御している位置姿勢推定コントローラ部０１０２の再起動の指示をする制御信号が出力され、これらのみが再起動される（０６０７）。
【０１０６】
また、非常停止ボタンのみで異常が検出された場合（０６１１）、正常動作しているレーザ距離センサ０２０９と位置姿勢推定コントローラ部０１０２へは再起動の指示をする制御信号は、出力されず、経路追従制御コントローラ部０１０３のみの再起動の指示をする制御信号が出力される（０６１０）。
【０１０７】
なお、ここでは経路追従制御コントローラ部０１０３にセンサが接続されていないが、こちらに起動に時間の要するセンサやアクチュエータなどのデバイスがさらに接続されている場合は、その状態を移動機構制御部０１１５により監視しておき、それらのデバイスを経路追従制御コントローラ部０１０３の再起動に合わせて再起動するようにしてもよい。
【０１０８】
前述のとおり、レーザ距離センサ０２０９と位置姿勢推定コントローラ部０１０２が動作可能な状態になるまでには時間を要するが、以上のように正常動作時しているデバイスの再起動を回避することで、ロボットが通常動作可能な状態になるまでの時間を短縮する。
【０１０９】
再起動された位置姿勢推定コントローラ部０１０２の処理の流れを図７に示す。位置姿勢推定コントローラ部０１０２が起動されると（０７０１）、位置姿勢推定コントローラ初期化プログラム０２１６による初期化動作（０７０２）として、BIOSの読み込み（０７０５）、OSの読み込み（０７０６）、OSとこれに関連するサービスソフトウェアの異常の確認が行われる（０７０７）。
【０１１０】
なお、ここでの異常の確認結果はメモリに一時的に記録される。続いて、位置姿勢コントローラ内の自動走行用プログラムとして、レーザ距離センサ制御プログラム０２１８、位置姿勢推定用デバイス異常検出プログラム０２１９、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０、地図読み込みプログラム０２２１が起動される（０７０８）。
【０１１１】
続いて、レーザ距離センサデバイスチェックプログラム０２１７により、位置姿勢推定コントローラ部０１０２に接続されているレーザ距離センサ０２０９との通信チェックが行われ（０７０９）、また、レーザ距離センサ自身によるチェック結果が取得される（０７１０）。これはレーザ距離センサそのものが行うレーザ照射部のカバー汚れのチェック結果などを受信するものである。
【０１１２】
既にメモリに記録済みのコントローラ初期化（０７０２）時の異常の検出結果と、処理０７０９や０７１０での異常の検出結果は合わせて位置姿勢推定用デバイス異常検出プログラムに送信され（０７１１）、プログラムは終了となる（０７０４）。
【０１１３】
位置姿勢推定コントローラ部０１０２と同様に再起動された経路追従制御コントローラ部０１０３の処理の流れを図８に示す。経路追従制御コントローラが起動されると（０８０１）、経路追従制御コントローラ初期化プログラム０２２３による初期動作（０８０２）として、BIOSの読み込み（０８０５）、OSの読み込み（０８０６）、OSとこれに関連するサービスソフトウェアの異常の確認が行われる。
【０１１４】
なお、ここでの異常の確認結果はメモリに一時的に記録される。続いて、経路追従制御コントローラ内の自動走行用プログラムとして、経路計画プログラム０２２５、移動機構制御プログラム０２２６が起動される（０８０８）。移動機構デバイスチェックプログラム０２２４により、経路追従制御コントローラ部０１０３に接続されている移動機構０２１２との通信チェックが行われる（０８０９）。
【０１１５】
また、移動機構自身によるチェック結果が取得される（０８１０）。これは移動機構０２１２そのものが行うブレーキの動作チェック結果などを受信するものである。
【０１１６】
既にメモリに記録済みのコントローラ初期化（０８０２）時の異常の検出結果と、処理０８０９や０８１０での異常の検出結果は合わせて移動機構制御プログラムに送信され（０８１１）、プログラムは終了となる（０８０４）。
【０１１７】
続いて、起動された自動走行用プログラム群による準備が行われる。この準備に関わる処理の流れを図９に示す。
【０１１８】
自動走行用プログラム群の準備動作として、まず経路グラフデータ０２３０が読み込まれる。
【０１１９】
続けて地図データ０２２７の読み込みが行われる。このときの処理の流れを図１０に示す。地図読み込みプログラム０２２１が開始されると（１００１）、まず、レーザ距離センサ０２０９より距離データ、つまりはロボット再起動後の距離データを取得する（１００２）。続いて、時刻付きレーザ距離センサデータログ０２２８よりロボットの再起動前で最新の距離データを取得する（１００３）。
【０１２０】
次に、ロボットの再起動後の距離データの時刻と再起動前の距離データの時刻の差を求める（１００４）。
【０１２１】
次に、ロボットの再起動後の距離データと再起動前の距離データ間のマッチングを行う（１００５−１）。これは、レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０で行ったマッチング処理と同様の処理を行う。レーザ距離センサデータ補正対応位置姿勢推定プログラム０２２０では、地図データ０２２７に対して、幾何形状データが重なる割合を求めていたが、ここでは、再起動前後それぞれでの距離データを幾何形状データに変換した上で、これらが重なる割合を求める（１００５−２）。
【０１２２】
ここまでで求めた時刻の差とマッチング割合に応じて地図データの読み込み範囲の設定を行う。まず、時刻の差が閾値以下であり、ロボットが停止されて再起動されるまでの時間が短いことによって、あるいは再起動前の幾何形状データと再起動後の幾何形状データのマッチング割合が閾値以上であり、レーザ距離センサ０２０９から見た周囲の環境が変化してないことによってロボットが移動していないと判定される場合（１００６）には、時刻付き位置姿勢推定データログ０２２９より停止直前に記録された位置姿勢推定結果を取得する（１００７）。
【０１２３】
この位置・姿勢において、レーザ距離センサ０２０９による計測が可能な最大範囲を読み出し範囲と設定し、該当する範囲を地図データ０２２７より読み込む。このようにして、地図データ０２２７の読み込み範囲をロボットの停止の位置周辺に絞り込み、読み込みに要する時間を短縮する。処理１００６において、時刻の差が閾値より大きくかつマッチング割合が閾値より小さい場合はロボットの移動が想定される全域の地図データ０２２７を読み込み、地図データ０２２７の読み込み完了後、地図読み込みプログラム０２１３は自動走行時にロボットの移動に即して地図データ０２２７の読み込みを行うため、自動走行開始まで待機状態となる。
【０１２４】
地図データ０２２７の読み込みが完了すると、レーザ距離センサ制御プログラム０２１８により距離データが取得される（０９０４）。
【０１２５】
続いてこの距離データを用いて初期位置・姿勢、すなわちロボット起動後の最初の位置・姿勢の推定が行われる。この処理は、位置・姿勢の推定に関する処理０５０９と同じ処理が行われる。以上によって、ロボットの起動時の準備動作が完了し（０９０６）、図５で示された通常の動作が可能な状態にロボットが復帰する。
【０１２６】
以上、前記実施例について、移動体、またはロボットの運用に際しては、障害物への衝突などの異常が検出された場合は、移動体、またはロボットを非常停止させ、障害物を取り除いた後にまたすぐに、移動体、またはロボットを再起動させることが考えられる。
【０１２７】
前記実施例にて説明をしているように、この移動体、またはロボットの再起動の際に、異常な状態にないコントローラやセンサについては再起動を行わず、異常な状態にあるデバイスを再起動させるようにすることで、移動体、またはロボットの作業への迅速な復帰を可能とする。
【符号の説明】
【０１２８】
０１０１…ロボット、０１０２…位置姿勢推定コントローラ部、０１０３…経路追従制御コントローラ部、０１０４…距離センサ部、０１０５…異常検出センサ部、０１０６…位置姿勢推定コントローラ初期化部、０１０７…距離センサデバイスチェック部、０１０８…経路追従制御コントローラ初期化部、０１０９…移動機構デバイスチェック部、０１１０…距離センサ制御部、０１１１…位置姿勢推定用デバイス異常検出部、０１１２…距離センサデータ補正対応位置姿勢推定部、０１１３…地図読み込み部、０１１４…経路計画部、０１１５…移動機構制御部、０１１６…移動機構部、０１１７…再起動制御部、０１１８…電源部、０１１９…自動走行時の通信、０１２０…経路追従制御コントローラ部への再起動指示線、０１２１…距離センサ部と位置姿勢推定コントローラ部への再起動指示線、０１２２…時刻付き距離センサデータログ、０１２３…距離センサキャリブレーションデータ、０１２４…時刻付き位置姿勢推定データログ、０１２５…地図データ、０１２６…経路グラフデータ、０１２７…移動機構キャリブレーションデータ、０１２８…外部記憶部、０１２９…準備動作時の通信、０１３０…距離センサキャリブレーション治具部
【図１】
0005802423.tif 000002
【図２】
0005802423.tif 000003
【図３】
0005802423.tif 000004
【図４】
0005802423.tif 000005
【図５】
0005802423.tif 000006
【図６】
0005802423.tif 000007
【図７】
0005802423.tif 000008
【図８】
0005802423.tif 000009
【図９】
0005802423.tif 000010
【図１０】
0005802423.tif 000011