(57)【要約】【課題】不整地における転倒を効果的に抑制することができるロボット、姿勢安定化方法、およびプログラムを提供する。【解決手段】地面を自律的に移動するロボットであって、地面の形状情報を計測する第１計測手段と、ロボットの姿勢を計測する第２計測手段と、ロボット自体を駆動する駆動手段と、形状情報の特徴量を抽出する抽出手段と、特徴量に基づいて、形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、ロボットの姿勢を変更する変更手段と、予測値を打ち消すようなロボットの姿勢となるように変更手段に対する制御量を算出し、その変更手段を制御量だけ駆動するように制御する第１制御手段と、ロボットが形状情報に対応する地面に到達するまでに、変更手段による制御量の駆動が完了するように、駆動手段によるロボットの移動の速度を制御する第２制御手段と、を備える。【選択図】図５
2017199265.tif 000002
【特許請求の範囲】
【請求項１】
地面を自律的に移動するロボットであって、
地面の形状情報を計測する第１計測手段と、
ロボットの姿勢を計測する第２計測手段と、
ロボット自体を駆動する駆動手段と、
前記形状情報の特徴量を抽出する抽出手段と、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、
ロボットの姿勢を変更する変更手段と、
前記予測値を打ち消すようなロボットの姿勢となるように前記変更手段に対する制御量を算出し、該変更手段を前記制御量だけ駆動するように制御する第１制御手段と、
ロボットが前記形状情報に対応する地面に到達するまでに、前記変更手段による前記制御量の駆動が完了するように、前記駆動手段によるロボットの移動の速度を制御する第２制御手段と、
を備えたロボット。
【請求項２】
ロボットの移動量を算出する算出手段を、さらに備え、
前記予測手段は、前記算出手段により算出された所定の移動量ごとに、前記第１計測手段により計測された形状情報に対応する地面での前記予測値を求め、
前記第１制御手段は、現在のロボットの位置から前記所定の移動量だけ進んだ位置に対応する前記予測値に対応する前記制御量を算出し、
前記第２制御手段は、ロボットが現在の位置から前記所定の移動量だけ進んだ位置に到達するまでに、前記変更手段による前記制御量の駆動が完了するように、前記駆動手段によるロボットの移動の速度を制御する請求項１に記載のロボット。
【請求項３】
前記算出手段は、算出したロボットの移動量が前記所定の移動量に到達した場合、移動量をリセットする請求項２に記載のロボット。
【請求項４】
前記予測手段により求められた前記予測値を先入れ先出し方式のメモリ構造で記憶する記憶手段を、さらに備え、
前記予測手段は、前記所定の移動量ごとに求めた前記予測値を、前記メモリ構造の末尾に記憶し、
前記第１制御手段は、現在のロボットの位置から前記所定の移動量だけ進んだ位置に対応する前記予測値を前記メモリ構造の先頭から読み出す請求項２に記載のロボット。
【請求項５】
前記抽出手段は、
前記第１計測手段により計測された形状情報から部分情報を切り出し、
前記部分情報を複数のグリッドに分割し、
各前記グリッドに含まれる点データの代表値を前記特徴量として抽出する請求項１〜４のいずれか一項に記載のロボット。
【請求項６】
前記抽出手段は、分割した前記複数のグリッドのうち、点データを含まないグリッドである欠損グリッドの代表値として、前記欠損グリッドに隣接するグリッドのうち少なくともいずれかのグリッドの代表値に基づいて、該欠損グリッドの前記特徴量を抽出する請求項５に記載のロボット。
【請求項７】
前記第１計測手段により計測された形状情報に対応する前記特徴量と、該形状情報に対応する地面にロボットが位置する場合で前記第２計測手段により計測された該ロボットの姿勢とを関連付ける予測モデルを生成する生成手段を、さらに備え、
前記予測手段は、前記第１計測手段により計測された形状情報に対応する前記特徴量から、前記予測モデルを用いて、該形状情報に対応する地面でのロボットの姿勢の前記予測値を求める請求項１〜６のいずれか一項に記載のロボット。
【請求項８】
前記第２計測手段により計測されたロボットの姿勢に基づいて、前記予測手段により求められた前記予測値を修正する修正手段を、さらに備えた請求項１〜７のいずれか一項に記載のロボット。
【請求項９】
前記抽出手段は、前記第１計測手段により計測された形状情報を、前記第２計測手段により計測されたロボットの姿勢に基づいて、世界座標系の形状情報に変換し、前記世界座標系の形状情報の特徴量を抽出する請求項１〜７のいずれか一項に記載のロボット。
【請求項１０】
地面を自律的に移動するロボットであって、
地面の形状情報を計測する第１計測手段と、
ロボットの姿勢を計測する第２計測手段と、
ロボット自体を駆動する駆動手段と、
前記形状情報の特徴量を抽出する抽出手段と、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、
ロボットの姿勢を変更する変更手段と、
前記予測値を打ち消すようなロボットの姿勢となるように、前記変更手段の駆動を制御する姿勢制御手段と、
前記予測値に基づいて、ロボットの進行方向を前記駆動手段により旋回させるか、または、前記姿勢制御手段により前記予測値を打ち消すような該ロボットの姿勢となるように前記変更手段に該姿勢を変更させるかのいずれかを選択する選択手段と、
を備えたロボット。
【請求項１１】
地面を自律的に移動するロボットの姿勢安定化方法であって、
地面の形状情報を計測する第１計測ステップと、
ロボットの姿勢を計測する第２計測ステップと、
ロボット自体を駆動手段により駆動させる駆動ステップと、
前記形状情報の特徴量を抽出する抽出ステップと、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測ステップと、
ロボットの姿勢を変更手段により変更させる変更ステップと、
前記予測値を打ち消すようなロボットの姿勢となるように前記変更手段に対する制御量を算出し、該変更手段を前記制御量だけ駆動するように制御する第１制御ステップと、
ロボットが前記形状情報に対応する地面に到達するまでに、前記変更手段による前記制御量の駆動が完了するように、前記駆動手段によるロボットの移動の速度を制御する第２制御ステップと、
を有する姿勢安定化方法。
【請求項１２】
地面を自律的に移動するロボットの姿勢安定化方法であって、
地面の形状情報を計測する第１計測ステップと、
ロボットの姿勢を計測する第２計測ステップと、
ロボット自体を駆動手段により駆動させる駆動ステップと、
前記形状情報の特徴量を抽出する抽出ステップと、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測ステップと、
ロボットの姿勢を変更手段により変更させる変更ステップと、
前記予測値を打ち消すようなロボットの姿勢となるように、前記変更手段の駆動を制御する姿勢制御ステップと、
前記予測値に基づいて、ロボットの進行方向を前記駆動手段により旋回させるか、または、前記予測値を打ち消すような該ロボットの姿勢となるように前記変更手段に該姿勢を変更させるかのいずれかを選択する選択ステップと、
を有する姿勢安定化方法。
【請求項１３】
地面を自律的に移動するロボットを制御するコンピュータを、
地面の形状情報を計測する第１計測手段と、
ロボットの姿勢を計測する第２計測手段と、
前記形状情報の特徴量を抽出する抽出手段と、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、
前記予測値を打ち消すようなロボットの姿勢となるように、該ロボットの姿勢を変更する変更手段に対する制御量を算出し、該変更手段を前記制御量だけ駆動するように制御する第１制御手段と、
ロボットが前記形状情報に対応する地面に到達するまでに、前記変更手段による前記制御量の駆動が完了するように、該ロボット自体を駆動する駆動手段による該ロボットの移動の速度を制御する第２制御手段と、
して機能させるためのプログラム。
【請求項１４】
地面を自律的に移動するロボットを制御するコンピュータを、
地面の形状情報を計測する第１計測手段と、
ロボットの姿勢を計測する第２計測手段と、
前記形状情報の特徴量を抽出する抽出手段と、
前記特徴量に基づいて、前記形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、
前記予測値を打ち消すようなロボットの姿勢となるように、該ロボットの姿勢を変更する変更手段の駆動を制御する姿勢制御手段と、
前記予測値に基づいて、ロボットの進行方向を、該ロボット自体を駆動する駆動手段により旋回させるか、または、前記姿勢制御手段により前記予測値を打ち消すような該ロボットの姿勢となるように前記変更手段に該姿勢を変更させるかのいずれかを選択する選択手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット、姿勢安定化方法、およびプログラムに関する。
【背景技術】
【０００２】
自律走行するロボットの姿勢（傾き角度）制御について、バランスを崩して転倒することを防ぐために、ロボット自身の機体の傾き（姿勢）を検出するジャイロセンサ等を用いて、なるべく自身の傾きを水平に保つように制御する技術が既に知られている。例えば、ジャイロセンサを用いて姿勢を検出する技術では、その検出情報のみを用いて、フィードバック制御しているものが多い。この場合、フィードバックされる姿勢（傾き角度）は、ロボットがその地点を通過したときに初めて検出された姿勢であるため、例えば、崖の手前でロボットが傾いた場合、フィードバック方式による姿勢制御が間に合わず、ロボットが崖から転落する可能性がある。
【０００３】
そこで、ジャイロセンサを用いる代わりに、レーザレンジファインダまたはステレオカメラ等といったロボットからの距離を計測するセンサを用いて、転倒する可能性がある地点を事前に回避する方法も提案されている。しかしながら、このような制御方法の適用対象は、主に屋内環境または車道等の屋外の整地環境のように、走行可能な地面が平面である環境を前提としている。その一方、屋外の不整地環境では様々な形状の地面があり、現状の技術では、走行可能か不可能かを判断することが容易ではない。その上、たとえ走行可能であったとしても、走行中にロボットが転倒しないように、ロボット自身が姿勢制御しつつ自律移動することが要求される。したがって、一般に不整地環境でロボットが転倒せずに自律移動することは困難である場合が多い。
【０００４】
このような不整地環境で走行するロボットの技術として、自律制御される可動腕（サブクローラ）を有する無限軌道駆動型の遠隔操縦ロボットであって、単純な段差を有する不整地を走破する際に転倒を防止する目的で、レーザレンジファインダを用いて地面をセンシングし、その地面の形状に対して適応的に可動腕を自律制御して、転倒を防止する技術が開示されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された技術は、不整地環境下で事前に地面の形状を計測して転倒を防止することを目的としているが、ロボットの静的安定性の評価に留まっており、可動腕は自律制御だが、主駆動系は自律制御ではないため、効果的な転倒防止の制御が実施されているとは言えない。すなわち、ロボットが完全自律で転倒防止の判断をするためには、可動腕の駆動速度、および駆動を始めるタイミング等も考慮すべきであるが、それらに関する技術は含まれていない。その結果、様々な形状の地形である不整地において、可動腕の制御が間に合わず転倒する可能性があるという問題が解消されていない。
【０００６】
本発明は、上述の課題に鑑みてなされたものであり、不整地における転倒を効果的に抑制することができるロボット、姿勢安定化方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、地面を自律的に移動するロボットであって、地面の形状情報を計測する第１計測手段と、ロボットの姿勢を計測する第２計測手段と、ロボット自体を駆動する駆動手段と、形状情報の特徴量を抽出する抽出手段と、特徴量に基づいて、形状情報に対応する地面でのロボットの姿勢の予測値を求める予測手段と、ロボットの姿勢を変更する変更手段と、予測値を打ち消すようなロボットの姿勢となるように変更手段に対する制御量を算出し、その変更手段を制御量だけ駆動するように制御する第１制御手段と、ロボットが形状情報に対応する地面に到達するまでに、変更手段による制御量の駆動が完了するように、駆動手段によるロボットの移動の速度を制御する第２制御手段と、を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、不整地における転倒を効果的に抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態に係る自律移動ロボットの全体構造の一例を示す概略図である。
【図２】図２は、実施の形態に係る自律移動ロボットの重心位置制御装置の構造の一例を示す図である。
【図３】図３は、実施の形態に係る自律移動ロボットの重心位置制御装置の可動部分を説明する図である。
【図４】図４は、実施の形態に係る自律移動ロボットのハードウェア構成の一例を示す図である。
【図５】図５は、実施の形態に係る自律移動ロボットの機能ブロックの構成の一例を示す図である。
【図６】図６は、実施の形態に係る自律移動ロボットの距離センサによって検出される３次元距離データの一例を示す図である。
【図７】図７は、実施の形態に係る自律移動ロボットの特徴量抽出処理の流れの一例を示すフローチャートである。
【図８】図８は、３次元距離データから接地領域を切り出す動作を説明する図である。
【図９】図９は、３次元距離データから切り出された接地領域をグリッドに分割する動作を説明する図である。
【図１０】図１０は、接地領域の各グリッドの特徴量を抽出する動作を説明する図である。
【図１１】図１１は、接地領域の欠損グリッドに対して補完処理を行う動作を説明する図である。
【図１２】図１２は、実施の形態に係る自律移動ロボットの訓練フェーズにおける姿勢学習処理の流れの一例を示すフローチャートである。
【図１３】図１３は、訓練フェーズにおいて測定された傾き角度、および抽出された特徴量から予測モデルを生成する動作を説明する図である。
【図１４】図１４は、実施の形態に係る自律移動ロボットのテストフェーズにおける姿勢予測処理の流れの一例を示すフローチャートである。
【図１５】図１５は、テストフェーズにおいて予測モデルから傾き角度の予測値を求める動作を説明する図である。
【図１６】図１６は、ロボットの現在の傾き角度に基づいて傾き角度の予測値を修正する動作を説明する図である。
【図１７】図１７は、実施の形態に係る自律移動ロボットの全体動作の流れの一例を示すフローチャートである。
【図１８】図１８は、実施の形態に係る自律移動ロボットの特定のタイミングにおける動作を説明する図である。
【図１９】図１９は、実施の形態に係る自律移動ロボットの特定のタイミングにおける動作を説明する図である。
【図２０】図２０は、従来の技術による姿勢安定化制御において制御タイミングが早い場合の例を説明する図である。
【図２１】図２１は、従来の技術による姿勢安定化制御において制御タイミングが遅い場合の例を説明する図である。
【図２２】図２２は、実施の形態に係る自律移動ロボットの姿勢安定化制御のタイミングを模式的に説明する図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照しながら、本発明に係るロボット、姿勢安定化方法、およびプログラムの実施の形態を詳細に説明する。また、以下の実施の形態によって本発明が限定されるものではなく、以下の実施の形態における構成要素には、当業者が容易に想到できるもの、実質的に同一のもの、およびいわゆる均等の範囲のものが含まれる。さらに、以下の実施の形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換、変更および組み合わせを行うことができる。
【００１１】
（自律移動ロボットの全体構造）
図１は、実施の形態に係る自律移動ロボットの全体構造の一例を示す概略図である。図１を参照しながら、本実施の形態に係る自律移動ロボット１の全体構造の一例の概略について説明する。
【００１２】
図１に示す自律移動ロボット１は、地上等を走行する車両型ロボットである。図１に示すように、本実施の形態に係る自律移動ロボット１は、本体部２と、主駆動系３ａ、３ｂと、前部可動腕４ａ、４ｂと、後部可動腕５ａ、５ｂと、重心位置制御装置６と、距離センサ７と、を備えている。また、図１に図示していないが、自律移動ロボット１は、本体部２の内部にモーションセンサ８を備えている。
【００１３】
本体部２は、自律移動ロボット１の本体を形成する箱状の形状物であり、内部に図４で後述する制御装置４０、主駆動系ドライバ５１、可動腕ドライバ５２、および重心位置制御ドライバ５３等の各種装置を内蔵している。また、後述する自律移動ロボット１の傾き角度θは、本体部２の姿勢に基づいて規定されるものとする。例えば、本体部２の上面が水平の状態であるとき、自律移動ロボット１の傾き角度θを０度とする。また、傾き角度θは、自律移動ロボット１の進行方向についてのロール軸周りの角度であるロール角θｒ、およびピッチ軸周りの角度であるピッチ角θｐによって規定されるものとする。
【００１４】
主駆動系３ａ、３ｂは、自律移動ロボット１について前進、後退、および旋回の動作を行う無限軌道の駆動装置である。図１に示すように、主駆動系３ａ、３ｂのうち、自律移動ロボット１の進行方向に対して右側を主駆動系３ａとし、左側を主駆動系３ｂとする。主駆動系３ａ、３ｂは、それぞれ独立に駆動することが可能である。なお、主駆動系３ａ、３ｂを区別なく呼称する場合、または総称する場合、単に「主駆動系３」と称するものとする。
【００１５】
前部可動腕４ａ、４ｂは、自律移動ロボット１について前進、後退、および旋回の動作を行うことのほか、自律移動ロボット１の傾き角度θを変える、すなわち、自律移動ロボット１の姿勢を変える無限軌道の駆動装置である。図１に示すように、前部可動腕４ａ、４ｂのうち、自律移動ロボット１の進行方向に対して右側を前部可動腕４ａとし、左側を前部可動腕４ｂとする。前部可動腕４ａは、無限軌道を駆動する前部可動腕駆動用モータ１０ａを有する。前部可動腕４ｂは、無限軌道を駆動する前部可動腕駆動用モータ１０ｂを有する。前部可動腕４ａ、４ｂは、それぞれ独立に駆動することが可能であり、かつ、主駆動系３に対しても独立に駆動することが可能である。前部可動腕４ａは、主駆動系３ａの前側部に支持されており、軸Ａｓ＿１ａを中心に回動する。また、前部可動腕４ｂは、主駆動系３ｂの前側部に支持されており、軸Ａｓ＿１ｂを中心に回動する。このように、前部可動腕４ａ、４ｂは、回動動作を行うことにより、自律移動ロボット１に対して後述する姿勢安定化制御に寄与する。なお、前部可動腕４ａ、４ｂを区別なく呼称する場合、または総称する場合、単に「前部可動腕４」と称するものとする。
【００１６】
後部可動腕５ａ、５ｂは、自律移動ロボット１について前進、後退、および旋回の動作を行うことのほか、自律移動ロボット１の傾き角度θを変える、すなわち、自律移動ロボット１の姿勢を変える無限軌道の駆動装置である。図１に示すように、後部可動腕５ａ、５ｂのうち、自律移動ロボット１の進行方向に対して右側を後部可動腕５ａとし、左側を後部可動腕５ｂとする。後部可動腕５ａは、無限軌道を駆動する後部可動腕駆動用モータ１１ａを有する。後部可動腕５ｂは、無限軌道を駆動する後部可動腕駆動用モータ１１ｂを有する。後部可動腕５ａ、５ｂは、それぞれ独立に駆動することが可能であり、かつ、主駆動系３に対しても独立に駆動することが可能である。後部可動腕５ａは、主駆動系３ａの後側部に支持されており、軸Ａｓ＿２ａを中心に回動する。また、後部可動腕５ｂは、主駆動系３ｂの後側部に支持されており、軸Ａｓ＿２ｂを中心に回動する。このように、後部可動腕５ａ、５ｂは、回動動作を行うことにより、自律移動ロボット１に対して後述する姿勢安定化制御に寄与する。なお、後部可動腕５ａ、５ｂを区別なく呼称する場合、または総称する場合、単に「後部可動腕５」と称するものとする。
【００１７】
重心位置制御装置６は、自律移動ロボット１全体の重心の位置を制御する装置である。重心位置制御装置６の具体的な構造は、図２および３で後述する。
【００１８】
距離センサ７は、自律移動ロボット１の進行方向の前方の地面をスキャンするように本体部２の前側に固定され、その地面の各位置までの距離を検出し、３次元距離データ（形状情報の一例）を取得するセンサである。距離センサ７は、例えば、レーザレンジファインダ、またはステレオカメラ等であり、地面の各位置までの距離を検出してその地面の形状を計測可能な装置であればよい。
【００１９】
モーションセンサ８は、自律移動ロボット１の加速度を検出する加速度センサと、角速度を検出するジャイロセンサと、を含むセンサである。モーションセンサ８において、加速度センサにより検出された加速度を積分することにより、自律移動ロボット１の走行速度および走行距離（移動量）を算出することができる。また、モーションセンサ８において、ジャイロセンサにより検出された角速度を積分することにより、自律移動ロボット１の傾き角度θ（ロール角θｒ、ピッチ角θｐ）を算出することができる。すなわち、ジャイロセンサは、ロール角θｒおよびピッチ角θｐを計測するために２軸あることが望ましい。なお、自律移動ロボット１の走行速度および走行距離（移動量）を算出するために、モーションセンサ８は加速度センサを備えるものとしているが、これに限定されるものではなく、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）機能を有する受信機を備え、ＧＰＳ機能による絶対位置を求めることによって走行速度および走行距離（移動量）を求めるものとしてもよい。
【００２０】
なお、本実施の形態に係る自律移動ロボット１は、自身の姿勢を変えるために前部可動腕４ａ、４ｂ、および後部可動腕５ａ、５ｂを備えるものとしているが、これらの可動腕の代わりに、車輪が上下に昇降するサスペンション機構を備え、車輪の昇降によって姿勢を変えるものとしてもよい。
【００２１】
（重心位置制御装置の構造）
図２は、実施の形態に係る自律移動ロボットの重心位置制御装置の構造の一例を示す図である。図３は、実施の形態に係る自律移動ロボットの重心位置制御装置の可動部分を説明する図である。図２および３を参照しながら、本実施の形態の重心位置制御装置６の構造について説明する。
【００２２】
図２に示すように、重心位置制御装置６は、テーブル２１と、ステッピングモータ２３と、回転台２５と、ステッピングモータ２６と、固定台２８と、を含む。
【００２３】
テーブル２１は、図２に示すように、円形状のテーブル面２１ａ（上面）に錘３１が載置され、下面の中心から下面に垂直に延設されたテーブル軸２２により固定台２８に支持された自律移動ロボット１の重心を制御するためのチルトテーブルである。テーブル軸２２の固定台２８側の端部は、ボールジョイント２２ａによって固定台２８に接合されており、テーブル軸２２は、ボールジョイント２２ａを中心にしてフレキシブルに軸方向を傾けることができる。すなわち、テーブル２１は、ボールジョイント２２ａを中心にしてフレキシブルにテーブル面２１ａを傾けることができる。また、テーブル２１のテーブル面２１ａに載置された錘３１は、テーブル２１によって自律移動ロボット１の重心の制御が可能となるように、テーブル面２１ａに固定されていることが望ましい。
【００２４】
ステッピングモータ２３は、テーブル２１を傾けるためのアームを駆動するためのモータである。ステッピングモータ２３は、固定台２８の上面に固定されている。ステッピングモータ２３の回転軸２３ａには歯車が固定されており、回転軸２３ａが回転駆動されることによってその歯車も回転する。回転軸２３ａの歯車は、平歯車２４に噛み合っており、平歯車２４は、回転軸２３ａが回転駆動されることによって回転する。平歯車２４の中心から外側に向かってアーム２４ａが延設されている。アーム２４ａの端部は、連結部２４ｂによって、アーム２４ｃの一方の端部に回動自在に連結されており、アーム２４ｃの他方の端部は、ボールジョイント２４ｄによって、テーブル２１の下面に接合されている。アーム２４ｃは、ボールジョイント２４ｄを中心にしてフレキシブルに可動する。図３に示すように、ステッピングモータ２３の回転軸２３ａの回転駆動が、平歯車２４、およびアーム２４ａ、２４ｃにそれぞれ伝達することによって、ボールジョイント２４ｄが上下に昇降可能となり、テーブル２１を所定の角度範囲で傾けることが可能となる。
【００２５】
回転台２５は、長方形の形状の板部材であり、長手方向の一方の端側が、テーブル軸２２の軸周りに回動自在に連結されており、上面にはステッピングモータ２６が固定されている。すなわち、回転台２５がテーブル軸２２の軸周りに回転することによって、回転台２５の上面に固定されたステッピングモータ２６自体がテーブル軸２２の軸周りに回転移動する。
【００２６】
ステッピングモータ２６は、ステッピングモータ２３と同様に、テーブル２１を傾けるためのアームを駆動するためのモータである。ステッピングモータ２６は、上述のように、回転台２５の上面に固定されている。ステッピングモータ２６の回転軸２６ａには歯車が固定されており、回転軸２６ａが回転駆動されることによってその歯車も回転する。回転軸２６ａの歯車は、平歯車２７に噛み合っており、平歯車２７は、回転軸２６ａが回転駆動されることによって回転する。平歯車２７の中心から外側に向かってアーム２７ａが延設されている。アーム２７ａの端部は、連結部２７ｂによって、アーム２７ｃの一方の端部に回転自在に連結されており、アーム２７ｃの他方の端部は、ボールジョイント２７ｄによって、テーブル２１の下面に接合されている。アーム２７ｃは、ボールジョイント２７ｄを中心にしてフレキシブルに可動する。ステッピングモータ２６の回転軸２６ａの回転駆動が、平歯車２７、およびアーム２７ａ、２７ｃにそれぞれ伝達することによって、ボールジョイント２７ｄが上下に昇降可能となり、テーブル２１を所定の角度範囲で傾けることが可能となる。
【００２７】
固定台２８は、上述の図１に示した本体部２の上面に固定された台であり、重心位置制御装置６を本体部２に固定する役割を担う。具体的には、固定台２８の上面に、テーブル軸２２がボールジョイント２２ａを介して接合されており、ステッピングモータ２３が固定されており、そして、回転台２５がテーブル軸２２の軸周りに回動自在に載置されている。
【００２８】
重心位置制御装置６は、以上のように構成されており、ステッピングモータ２３の回転軸２３ａの回転駆動によるボールジョイント２４ｄの昇降動作、ステッピングモータ２６の回転軸２６ａの回転駆動によるボールジョイント２７ｄの昇降動作、および回転台２５のテーブル軸２２の軸周りの回転動作により、テーブル２１をいずれの方向にも、所定の角度範囲で傾けるように制御することができる。これによって、自律移動ロボット１の重心の位置を制御することができる。
【００２９】
なお、重心位置制御装置６の構造は、図２に示した構造に限定されるものではなく、例えば、錘３１の位置をリニア式に移動させる等の方式により重心の位置を制御する構造であってもよい。ただし、重心位置は、ロール角θｒおよびピッチ角θｐの回転軸周りに制御可能な方式であることが望ましい。
【００３０】
（自律移動ロボットのハードウェア構成）
図４は、実施の形態に係る自律移動ロボットのハードウェア構成の一例を示す図である。図４を参照しながら、本実施の形態に係る自律移動ロボット１の要部のハードウェア構成について説明する。なお、図４に示す自律移動ロボット１の要部のハードウェア構成は一例を示すものであり、この構成に限定されるものではない。
【００３１】
図４に示すように、自律移動ロボット１は、距離センサ７と、モーションセンサ８と、制御装置４０と、主駆動系ドライバ５１と、可動腕ドライバ５２と、重心位置制御ドライバ５３と、を備えている。このうち、モーションセンサ８、制御装置４０、主駆動系ドライバ５１、可動腕ドライバ５２、および重心位置制御ドライバ５３は、図４に示すように、本体部２に内蔵されている。なお、距離センサ７およびモーションセンサ８については、図１で上述した通りである。
【００３２】
制御装置４０は、自律移動ロボット１の動作全体の制御を司る装置である。制御装置４０は、プロセッサ４１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４３と、センサＩ／Ｆ（インタフェース）４４と、ドライバＩ／Ｆ４５と、補助記憶装置４６と、を有する。
【００３３】
プロセッサ４１は、制御装置４０の動作を制御する演算装置である。ＲＯＭ４２は、プロセッサ４１が制御装置４０の各機能を制御するために実行するプログラムを記憶している不揮発性の記憶装置である。ＲＡＭ４３は、プロセッサ４１のワークエリアとして使用される揮発性の記憶装置である。
【００３４】
センサＩ／Ｆ４４は、距離センサ７およびモーションセンサ８等から検出情報（３次元距離データ、加速度情報、および角速度情報等）を受信するためのインタフェースである。ドライバＩ／Ｆ４５は、主駆動系ドライバ５１、可動腕ドライバ５２および重心位置制御ドライバ５３に対する駆動信号を送信するためのインタフェースである。
【００３５】
補助記憶装置４６は、距離センサ７およびモーションセンサ８等の検出情報、後述する姿勢の予測モデル、および予測値等の各種データを記憶する不揮発性の記憶装置である。補助記憶装置４６は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）またはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等によって構成される。
【００３６】
上述のプロセッサ４１、ＲＯＭ４２、ＲＡＭ４３、センサＩ／Ｆ４４、ドライバＩ／Ｆ４５、および補助記憶装置４６は、アドレスバスおよびデータバス等のバス４７によって互いに通信可能に接続されている。
【００３７】
主駆動系ドライバ５１は、上述の図１に示した主駆動系３ａ、３ｂをそれぞれ駆動するドライバである。具体的は、主駆動系ドライバ５１は、主駆動系３ａ、３ｂの無限軌道を稼働するためのモータ（ステッピングモータ等）を回転駆動させる。なお、主駆動系３ａ、３ｂを駆動するドライバは、１つの主駆動系ドライバ５１であることに限定されるものではなく、主駆動系３ａ、３ｂをそれぞれ駆動する別個のドライバが備えられているものとしてもよい。
【００３８】
可動腕ドライバ５２は、上述の図１に示した、前部可動腕４ａ、４ｂ、および後部可動腕５ａ、５ｂをそれぞれ駆動するドライバである。具体的には、可動腕ドライバ５２は、前部可動腕４ａ、４ｂ、および後部可動腕５ａ、５ｂの無限軌道をそれぞれ駆動するための前部可動腕駆動用モータ１０ａ、１０ｂ、および後部可動腕駆動用モータ１１ａ、１１ｂをそれぞれ回転駆動させる。なお、前部可動腕４ａ、４ｂ、および後部可動腕５ａ、５ｂを駆動するドライバは、１つの可動腕ドライバ５２に限定されるものではなく、例えば、前部可動腕４ａ、４ｂ、および後部可動腕５ａ、５ｂをそれぞれ駆動する別個のドライバが備えられているものとしてもよい。
【００３９】
重心位置制御ドライバ５３は、上述の図２に示した重心位置制御装置６のステッピングモータ２３、２６をそれぞれ駆動するドライバである。なお、ステッピングモータ２３、２６を駆動するドライバは、１つの重心位置制御ドライバ５３であることに限定されるものではなく、ステッピングモータ２３、２６をそれぞれ駆動する別個のドライバが備えられているものとしてもよい。
【００４０】
（自律移動ロボットの機能ブロック構成）
図５は、実施の形態に係る自律移動ロボットの機能ブロックの構成の一例を示す図である。図６は、実施の形態に係る自律移動ロボットの距離センサによって検出される３次元距離データの一例を示す図である。図５および６を参照しながら、本実施の形態に係る自律移動ロボット１の機能ブロックの構成について説明する。
【００４１】
図５に示すように、自律移動ロボット１は、距離計測部１０１（第１計測手段）と、姿勢計測部１０２（第２計測手段）と、演算部１０３と、記憶部１１３（記憶手段）と、姿勢安定化機構部１１４（変更手段の一例）と、走行用駆動部１１５（駆動手段）と、を有する。
【００４２】
距離計測部１０１は、自律移動ロボット１の進行方向の前方の地面をスキャンし、その地面の各位置までの距離を検出（計測）して、地面の形状を示す３次元距離データを出力する機能部である。距離計測部１０１により計測された３次元距離データの一例として、図６に３次元距離データ３００を示す。図６に示す座標系において、ｙ軸方向が、自律移動ロボット１が進行する向きである。距離計測部１０１は、例えば、図４に示す距離センサ７によって実現される。
【００４３】
姿勢計測部１０２は、自律移動ロボット１の加速度および角速度（ロール角θｒおよびピッチ角θｐの角速度）を検出（計測）する機能部である。姿勢計測部１０２は、例えば、図４に示すモーションセンサ８によって実現される。
【００４４】
演算部１０３は、自律移動ロボット１の姿勢安定化制御のための各種演算を行う機能部である。演算部１０３は、図５に示すように、移動量計算部１０４（算出手段）と、特徴量抽出部１０５（抽出手段）と、姿勢学習部１０６（生成手段）と、姿勢予測部１０７（予測手段）と、予測修正部１０８（修正手段）と、経路選択部１０９（選択手段）と、運動生成部１１０と、を有する。
【００４５】
移動量計算部１０４は、姿勢計測部１０２により計測された加速度を受け取り、加速度を積分することによって、自律移動ロボット１の走行距離（移動量）を算出する機能部である。なお、移動量計算部１０４は、姿勢計測部１０２により計測された加速度に基づいて自律移動ロボット１の走行距離（移動量）を算出することに限定されるものではなく、例えば、距離計測部１０１により計測される距離情報（３次元距離データ）、または図示しないエンコーダからの情報に基づいて走行距離を算出するものとしてもよい。また、移動量計算部１０４は、処理速度を優先させるか、演算精度を優先させるかによって、姿勢計測部１０２の加速度、距離計測部１０１の距離情報、またはエンコーダからの情報のうち、どの情報を用いて走行距離を算出するかを切り替える機能を有するものとしてもよい。
【００４６】
また、移動量計算部１０４は、姿勢計測部１０２により計測された加速度を積分して、自律移動ロボット１の走行距離（移動量）を算出するため、走行距離の計算誤差が累積する。そこで、移動量計算部１０４は、所定の距離を走行するごとに、自動的に算出した移動量をリセットする機能を有している。
【００４７】
特徴量抽出部１０５は、距離計測部１０１により計測された３次元距離データから、地面の幾何学的な特徴量を抽出する機能部である。特徴量抽出部１０５は、特徴量の抽出処理の過程で、例えば、図６に示す３次元距離データ３００において、自律移動ロボット１のｘ方向の長さＷ、ｙ方向の長さＬの領域である接地領域３１０（部分情報の一例）を切り出す。この特徴量抽出部１０５による特徴量の抽出処理については、図７〜１１で後述する。
【００４８】
姿勢学習部１０６は、特徴量抽出部１０５により抽出された３次元距離データについての特徴量、および、姿勢計測部１０２により計測された角速度から求まる傾き角度θ（ロール角θｒ、ピッチ角θｐ）に基づいて、機械学習の回帰手法を用いて、傾き角度θを予測するための予測モデルを生成する機能部である。この姿勢学習部１０６等による予測モデルの生成処理（以下、「姿勢学習処理」と称する場合がある）については、図１２および１３で後述する。
【００４９】
姿勢予測部１０７は、特徴量抽出部１０５により抽出された３次元距離データについての特徴量から、特徴量抽出部１０５により生成された予測モデルを用いて、傾き角度θ（ロール角θｒ、ピッチ角θｐ）の予測値を求める機能部である。この姿勢予測部１０７等による傾き角度θの予測値を求める処理（以下、「姿勢予測処理」と称する場合がある）については、図１４〜１６で後述する。
【００５０】
予測修正部１０８は、姿勢予測部１０７により予測された傾き角度θの予測値に対して修正を行い、真の予測値θ＿Ｔを求める機能部である。この予測修正部１０８による予測値に対する修正動作は、後述の図１４〜１６の姿勢予測処理の中で説明する。
【００５１】
経路選択部１０９は、姿勢予測処理で求められた傾き角度θの予測値が、所定の閾値（転倒限界角）以上であるか否かを判定する機能部である。予測値が転倒限界角以上である場合、経路選択部１０９は、予測値に対応する地形で自律移動ロボット１が転倒する危険性があると判断し、その地形上を走行するのを回避するため、走行用駆動部１１５に対して旋回動作の指令を送信する。一方、予測値が転倒限界角未満である場合、経路選択部１０９は、予測値に対応する地形で自律移動ロボット１が転倒する危険性がないと判断し、その地形上を走行するのを回避するための旋回指令を送信せず、その予測値を記憶部１１３に記憶させる。
【００５２】
運動生成部１１０は、姿勢安定化制御を行うために、姿勢安定化機構部１１４の制御量、走行用駆動部１１５による自律移動ロボット１の走行速度を求める機能部である。運動生成部１１０は、姿勢安定化計算部１１１（第１制御手段、姿勢制御手段）と、速度制御計算部１１２（第２制御手段）と、を有する。
【００５３】
姿勢安定化計算部１１１は、姿勢予測処理により求められ、記憶部１１３に記憶された傾き角度θの予測値を読み出し、自律移動ロボット１の傾き角度θがその予測値となるような姿勢安定化機構部１１４に対する制御量を計算する機能部である。
【００５４】
速度制御計算部１１２は、姿勢安定化計算部１１１により計算された制御量に応じて、自律移動ロボット１の走行速度を計算する機能部である。
【００５５】
上述の移動量計算部１０４、特徴量抽出部１０５、姿勢学習部１０６、姿勢予測部１０７、予測修正部１０８、経路選択部１０９、姿勢安定化計算部１１１、および速度制御計算部１１２は、図４に示すプロセッサ４１により実行されるプログラムによって実現される。なお、移動量計算部１０４、特徴量抽出部１０５、姿勢学習部１０６、姿勢予測部１０７、予測修正部１０８、経路選択部１０９、姿勢安定化計算部１１１、および速度制御計算部１１２のうち一部または全部を、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェア回路によって実現するものとしてもよい。
【００５６】
記憶部１１３は、距離計測部１０１により計測された３次元距離データ、特徴量抽出部１０５により抽出された特徴量、姿勢学習部１０６により生成された予測モデル、および姿勢予測処理により求められた傾き角度θ（ロール角θｒ、ピッチ角θｐ）の予測値等を記憶する機能部である。記憶部１１３は、例えば、図４に示すＲＡＭ４３および補助記憶装置４６の少なくともいずれか一方により実現される。
【００５７】
姿勢安定化機構部１１４は、姿勢安定化計算部１１１により計算された制御量によって、自律移動ロボット１の姿勢を安定化させる機能部である。姿勢安定化機構部１１４は、図４に示す主駆動系ドライバ５１および可動腕ドライバ５２、ならびに、図１に示す主駆動系３、前部可動腕４および後部可動腕５によって実現される。
【００５８】
走行用駆動部１１５は、速度制御計算部１１２により計算された走行速度で自律移動ロボット１が走行するように制御する機能部である。走行用駆動部１１５は、図４に示す主駆動系ドライバ５１および可動腕ドライバ５２、ならびに、図１に示す主駆動系３、前部可動腕４および後部可動腕５によって実現される。
【００５９】
なお、図５に示す距離計測部１０１、姿勢計測部１０２、移動量計算部１０４、特徴量抽出部１０５、姿勢学習部１０６、姿勢予測部１０７、予測修正部１０８、経路選択部１０９、姿勢安定化計算部１１１、速度制御計算部１１２、姿勢安定化機構部１１４、および走行用駆動部１１５は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図５に示す複数の機能部を、１つの機能部として構成してもよい。一方、図５に示す１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００６０】
（特徴量抽出処理）
図７は、実施の形態に係る自律移動ロボットの特徴量抽出処理の流れの一例を示すフローチャートである。図８は、３次元距離データから接地領域を切り出す動作を説明する図である。図９は、３次元距離データから切り出された接地領域をグリッドに分割する動作を説明する図である。図１０は、接地領域の各グリッドの特徴量を抽出する動作を説明する図である。図１１は、接地領域の欠損グリッドに対して補完処理を行う動作を説明する図である。図７〜１１を参照しながら、本実施の形態に係る自律移動ロボット１の特徴量抽出処理の動作について図７のフローチャートの流れに沿って説明する。
【００６１】
＜ステップＳ１１＞
特徴量抽出部１０５は、距離計測部１０１により計測された図８に示す３次元距離データ３００を取得する。３次元距離データ３００は、点群のデータとして表される。各点は３次元座標（ｘ，ｙ，ｚ）の値を有するデータ（図９（ａ）に示す点データＰ）である。ここで、距離計測部１０１が地面をスキャンする領域の大きさは、自律移動ロボット１の全長および幅よりもそれぞれ大きくなるような範囲で計測できるように調整しておく必要がある。例えば、図８に示すように、自律移動ロボット１の幅をＷ、全長をＬとし、スキャンする領域の幅をＵ、奥行きをＶとすると、Ｕ＞ＷかつＶ＞Ｌの条件を満たすように、距離計測部１０１がスキャンする領域を調整する必要がある。そして、ステップＳ１２へ移行する。
【００６２】
＜ステップＳ１２＞
特徴量抽出部１０５は、取得した３次元距離データ３００から、図８に示すように、自律移動ロボット１の大きさに相当する接地領域３１０を切り出す。後述する訓練フェーズにおいて、距離計測部１０１によるスキャン領域、すなわち、３次元距離データ３００の領域の中心と、自律移動ロボット１の大きさに相当する領域の中心とが一致するようにデータを取得している。これと同様に、特徴量抽出部１０５は、図８に示すように、３次元距離データ３００の領域の中心である点３１０ａから、ｘ方向の正負の向きにそれぞれＷ／２、ｙ方向の正負の向きにそれぞれＬ／２の範囲のデータを切り出し、切り出したデータの領域を接地領域３１０とする。特徴量抽出部１０５は、３次元距離データ３００から切り出した接地領域３１０のデータ以外のデータを削除するものとすればよい。そして、ステップＳ１３へ移行する。
【００６３】
＜ステップＳ１３＞
特徴量抽出部１０５は、切り出した接地領域３１０の点群のデータに対してノイズを除去する。例えば、特徴量抽出部１０５は、接地領域３１０の点群のうち、極端にｚ成分の値が大きいまたは小さい点を、外れ値を有する点として除去する。この場合の除去の方法としては、公知のＩＣＰ（Ｉｔｅｒａｔｉｖｅ  Ｃｌｏｓｅｓｔ  Ｐｏｉｎｔｓ）という方法、または、高さの閾値を手動で決定して取り除く方法等が挙げられる。また、後述する訓練フェーズでは、外れ値を手動または自動のどちらで除去してもよいが、後述するテストフェーズでは自動で行う必要がある。そしてステップＳ１４へ移行する。
【００６４】
＜ステップＳ１４＞
特徴量抽出部１０５は、ノイズが除去された点データＰの集合体である接地領域３１０を、図９（ｂ）に示すように格子状のグリッドＧに分割する。そして、ステップＳ１５へ移行する。
【００６５】
＜ステップＳ１５＞
特徴量抽出部１０５は、分割したそれぞれのグリッドＧに点データＰが含まれるか否かを判定する。注目したグリッドＧが点データＰを含む場合（ステップＳ１５：Ｎｏ）、ステップＳ１６へ移行し、注目したグリッドＧが点データＰを含まないグリッド（以下、「欠損グリッド」と称する）（例えば、図１０（ａ）に示す欠損グリッドＧｄ）である場合（ステップＳ１５：Ｙｅｓ）、ステップＳ１７へ移行する。
【００６６】
＜ステップＳ１６＞
特徴量抽出部１０５は、注目したグリッドＧに含まれる各点データＰの高さ（ｚ値）の平均値を計算し、図１０（ａ）に示すように、この平均値をそのグリッドＧの代表値Ａ（特徴量）として抽出する。特徴量抽出部１０５により各グリッドＧで計算された代表値Ａ（特徴量）を、図１０（ｂ）に示すように、ｘ１，１、ｘ２，１、ｘ３，１、・・・、ｘｍ，１、ｘ１，２、ｘ２，２、・・・、ｘｍ，２、・・・、ｘ１，ｎ、ｘ２，ｎ、・・・、ｘｍ，ｎとする。なお、グリッドＧに含まれる各点データＰのｚ値の平均値を計算するものとしているが、これに限定されるものではなく、例えば、グリッドＧに含まれる各点データＰのｚ値の最頻値または中央値等であってもよい。そして、ステップＳ１８へ移行する。
【００６７】
＜ステップＳ１７＞
特徴量抽出部１０５は、欠損グリッドＧｄの代表値を求めるための補完処理を行う。具体的には、特徴量抽出部１０５は、補完処理として、図１１（ａ）に示すように、欠損グリッドＧｄの上下左右の４つのグリッドＧの代表値（特徴量）（図１１（ａ）に示すｘｉ，ｊ−１、ｘｉ，ｊ＋１、ｘｉ−１，ｊ、ｘｉ＋１，ｊ）の平均値を計算し、その平均値を欠損グリッドＧｄの代表値（特徴量）（図１１（ｂ）に示すｘｉ，ｊ）とする。そして、ステップＳ１８へ移行する。
【００６８】
なお、特徴量抽出部１０５は、欠損グリッドＧｄの代表値を求めるための補完処理として、欠損グリッドＧｄの上下左右の４つのグリッドＧの代表値（特徴量）の平均値を計算するものとしたが、これに限定されるものではない。例えば、特徴量抽出部１０５は、欠損グリッドＧｄの上下左右および斜め隣の８つのグリッドＧの代表値（特徴量）の平均値を計算し、その平均値を欠損グリッドＧｄの代表値（特徴量）としてもよい。
【００６９】
＜ステップＳ１８＞
特徴量抽出部１０５は、接地領域３１０のすべてのグリッドＧについて代表値を計算したか否かを確認する。すべてのグリッドの代表値を計算した場合（ステップＳ１８：Ｙｅｓ）、特徴量抽出処理を終了し、代表値を計算していないグリッドがある場合（ステップＳ１８：Ｎｏ）、ステップＳ１５に戻る。
【００７０】
以上のステップＳ１１〜Ｓ１８に基づく特徴量抽出処理は、後述する訓練フェーズおよびテストフェーズにおいて共通の処理である。上述した特徴量抽出処理では、３次元距離データ３００全体ではなく、姿勢安定化制御に必要な接地領域３１０を切り出して、接地領域３１０のみの特徴量を抽出するものとしているので、処理の負荷を軽減することができる。
【００７１】
（姿勢学習処理）
図１２は、実施の形態に係る自律移動ロボットの訓練フェーズにおける姿勢学習処理の流れの一例を示すフローチャートである。図１３は、訓練フェーズにおいて測定された傾き角度、および抽出された特徴量から予測モデルを生成する動作を説明する図である。図１２および１３を参照しながら、本実施の形態に係る自律移動ロボット１の訓練フェーズにおける姿勢学習処理の動作について、図１２のフローチャートの流れに沿って説明する。ここで、訓練フェーズとは、後述するテストフェーズにおいて、特定の地形での自律移動ロボット１の傾き角度θ（ロール角θｒおよびピッチ角θｐ）を予測するために用いる予測モデルを予め生成する動作段階を示す。姿勢学習処理での学習方法として、最小二乗法による平面近似のような統計的学習手法、または、サポートベクターマシン回帰およびランダムフォレスト回帰等のような機械学習による回帰方法等があるが、以下の説明では、後者の機械学習による回帰方法を用いた場合について説明する。なお、説明を簡便にするために、図１３では線形の回帰モデルの式で表記しているが、線形の回帰モデルに限定されるものではなく、非線形の回帰モデルであってもよい。
【００７２】
＜ステップＳ３１＞
特徴量抽出部１０５は、距離計測部１０１により計測された３次元距離データを取得する。そして、ステップＳ３３へ移行する。
【００７３】
＜ステップＳ３２＞
姿勢学習部１０６は、自律移動ロボット１がステップＳ３１において切り出された接地領域に対応する地形にいる場合において、姿勢計測部１０２により検出された自律移動ロボット１のロール角θｒおよびピッチ角θｐの角速度を取得する。そして、姿勢学習部１０６は、取得した角速度を積分することによってロール角θｒおよびピッチ角θｐを算出する。そして、ステップＳ３３へ移行する。
【００７４】
＜ステップＳ３３＞
特徴量抽出部１０５は、取得した３次元距離データから自律移動ロボット１の大きさに相当する接地領域を切り出す。特徴量抽出部１０５は、切り出した接地領域から、上述の特徴量抽出処理によって、接地領域の各グリッドの特徴量を抽出する。特徴量抽出部１０５は、抽出した特徴量を姿勢学習部１０６に送る。
【００７５】
自律移動ロボット１は、上述のステップＳ３１〜Ｓ３３の動作を繰り返し、複数の地形での３次元距離データから接地領域を取得して特徴量を抽出し、各接地領域に対応する地形におけるロール角θｒおよびピッチ角θｐを取得する。すなわち、自律移動ロボット１は、複数の地形にそれぞれ対応する接地領域の特徴量、ならびにその接地領域でのロール角θｒおよびピッチ角θｐの組み合わせを収集する。そして、ステップＳ３４へ移行する。
【００７６】
＜ステップＳ３４＞
姿勢学習部１０６は、図１３に示す式に、目的変数として、取得したロール角θｒおよびピッチ角θｐをそれぞれ代入し、説明変数として、特徴量抽出部１０５により抽出された特徴量（ｘ１，１、ｘ２，１、ｘ３，１、・・・、ｘｍ，ｎ）をそれぞれ代入する。そして、姿勢学習部１０６は、各特徴量に対する誤差が最小となるように、機械学習の回帰方法によって、ロール角θｒに対する係数（α１，１、α２，１、α３，１、・・・、αｍ，ｎ、ｃ）を算出し、ピッチ角θｐに対する係数（β１，１、β２，１、β３，１、・・・、βｍ，ｎ、ｄ）を算出する。そして、ステップＳ３５へ移行する。
【００７７】
＜ステップＳ３５＞
ステップＳ３４での姿勢学習部１０６による係数の算出によって、姿勢学習部１０６は、３次元距離データの接地領域の代表値（特徴量）に対するロール角θｒおよびピッチ角θｐそれぞれとの関係を関数（図１３に示す予測モデルＭｒおよび予測モデルＭｐ）として生成する。そして、ステップＳ３６へ移行する。
【００７８】
＜ステップＳ３６＞
姿勢学習部１０６は、生成した予測モデルＭｒおよび予測モデルＭｐを、記憶部１１３に記憶させる。具体的には、姿勢学習部１０６は、算出したロール角θｒに対する係数（α１，１、α２，１、α３，１、・・・、αｍ，ｎ、ｃ）、および、ピッチ角θｐに対する係数（β１，１、β２，１、β３，１、・・・、βｍ，ｎ、ｄ）のデータを記憶部１１３に記憶させる。
【００７９】
以上のステップＳ３１〜Ｓ３６の姿勢学習処理によって、特定の地形での自律移動ロボット１の傾き角度θ（ロール角θｒおよびピッチ角θｐ）を予測するために用いる予測モデルを生成することができる。
【００８０】
（姿勢予測処理）
図１４は、実施の形態に係る自律移動ロボットのテストフェーズにおける姿勢予測処理の流れの一例を示すフローチャートである。図１５は、テストフェーズにおいて予測モデルから傾き角度の予測値を求める動作を説明する図である。図１６は、ロボットの現在の傾き角度に基づいて傾き角度の予測値を修正する動作を説明する図である。図１４〜１６を参照しながら、本実施の形態に係る自律移動ロボット１のテストフェーズにおける姿勢予測処理の動作について、図１４のフローチャートの流れに沿って説明する。ここで、テストフェーズとは、訓練フェーズで生成した予測モデルを用いて、特定の地形での姿勢の予測値を求め、その予測値を相殺するように姿勢安定化制御を実行する自律移動ロボット１の動作段階を示す。
【００８１】
＜ステップＳ５１＞
特徴量抽出部１０５は、距離計測部１０１により計測された３次元距離データを取得する。そして、ステップＳ５２へ移行する。
【００８２】
＜ステップＳ５２＞
特徴量抽出部１０５は、取得した３次元距離データから自律移動ロボット１の大きさに相当する接地領域を切り出す。特徴量抽出部１０５は、切り出した接地領域から、上述の特徴量抽出処理によって、接地領域の各グリッドの特徴量を抽出する。特徴量抽出部１０５は、抽出した特徴量を姿勢予測部１０７へ送る。そして、ステップＳ５３へ移行する。
【００８３】
＜ステップＳ５３＞
姿勢予測部１０７は、記憶部１１３に記憶されたロール角θｒの予測モデルＭｒおよびピッチ角θｐの予測モデルＭｐを読み出して取得する。具体的には、姿勢予測部１０７は、姿勢学習部１０６により算出されたロール角θｒに対する係数（α１，１、α２，１、α３，１、・・・、αｍ，ｎ、ｃ）、および、ピッチ角θｐに対する係数（β１，１、β２，１、β３，１、・・・、βｍ，ｎ、ｄ）のデータを記憶部１１３から読み出す。そして、ステップＳ５４へ移行する。
【００８４】
＜ステップＳ５４＞
姿勢予測部１０７は、特徴量抽出部１０５から受け取った特徴量（ｘ１，１、ｘ２，１、ｘ３，１、・・・、ｘｍ，ｎ）（図１５に示す測定値）と、読み出したロール角θｒに対する係数（α１，１、α２，１、α３，１、・・・、αｍ，ｎ、ｃ）とから、図１５に示す式を用いて、ロール角予測値θｒ＿Ｅを算出する。また、姿勢予測部１０７は、同様に、特徴量抽出部１０５から受け取った特徴量（ｘ１，１、ｘ２，１、ｘ３，１、・・・、ｘｍ，ｎ）（図１５に示す測定値）と、読み出したピッチ角θｐに対する係数（β１，１、β２，１、β３，１、・・・、βｍ，ｎ、ｄ）とから、図１５に示す式を用いて、ピッチ角予測値θｐ＿Ｅを算出する。姿勢予測部１０７は、算出したロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを予測修正部１０８へ送る。
【００８５】
なお、図１５に示すグラフでは、ロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅをまとめて、傾き角度θの予測値をθ＿Ｅとして示している。また、上述のように、テストフェーズにおいて、姿勢予測部１０７による傾き角度θの予測値の算出には、現在における傾き角度θ（ロール角θｒ、ピッチ角θｐ）は使用されない。また、上述の訓練フェーズの姿勢学習処理において、地形のデータ（３次元距離データ）に対する自律移動ロボット１の姿勢（傾き角度θ）の関係が関数（予測モデルＭｒ、予測モデルＭｐ）として求まるため、訓練フェーズで姿勢学習処理に使用していない地形が、テストフェーズにおいて遭遇したとしても、姿勢予測部１０７は、姿勢（傾き角度θ）を予測することができる。そして、ステップＳ５５へ移行する。
【００８６】
＜ステップＳ５５＞
予測修正部１０８は、姿勢予測部１０７からロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを受け取り、姿勢計測部１０２により現在検出された自律移動ロボット１のロール角θｒおよびピッチ角θｐの角速度を取得する。そして、予測修正部１０８は、取得した角速度を積分することによってロール角θｒおよびピッチ角θｐを算出する。そして、ステップＳ５６へ移行する。
【００８７】
＜ステップＳ５６＞
予測修正部１０８は、姿勢予測部１０７により算出された傾き角度θの予測値θ＿Ｅ（ロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅ）に対して修正を行い、真の予測値θ＿Ｔを求める。
【００８８】
上述の訓練フェーズの姿勢学習処理において求められた予測モデルＭｒおよび予測モデルＭｐは、自律移動ロボット１が水平状態にある場合に計測された３次元距離データに基づいている。したがって、図１６（ａ）に示すように、自律移動ロボット１が水平状態にある場合に、特徴量抽出部１０５による特徴量抽出処理により３次元距離データから特徴量が抽出され、姿勢予測部１０７により特徴量から算出された予測値θ＿Ｅは、修正される必要がなく真の予測値となる。一方、図１６（ｂ）に示すように、自律移動ロボット１が傾き角度θで傾いている場合においては、距離センサ７の向きが変わるため、姿勢予測部１０７により算出される予測値θ＿Ｅは、自律移動ロボット１の姿勢に依存して変化することになる。そこで、予測修正部１０８は、具体的には、以下の式（１）および（２）に従って、ステップＳ５５で算出した自律移動ロボット１の現在の傾き角度θ（ロール角θｒおよびピッチ角θｐ）を用いて、姿勢予測部１０７により算出された予測値θ＿Ｅ（ロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅ）を修正し、真の予測値θ＿Ｔ（ロール角θｒの真の予測値θｒ＿Ｔ、ピッチ角θｐの真の予測値θｐ＿Ｔ）を求める。
【００８９】
（真の予測値θｒ＿Ｔ）＝（姿勢予測部１０７により算出されたロール角予測値θｒ＿Ｅ）−（現在の自律移動ロボット１のロール角θｒ）                    ・・・（１）
（真の予測値θｐ＿Ｔ）＝（姿勢予測部１０７により算出されたピッチ角予測値θｐ＿Ｅ）−（現在の自律移動ロボット１のピッチ角θｐ）                    ・・・（２）
【００９０】
以上のステップＳ５１〜Ｓ５６の姿勢予測処理によって、上述の姿勢学習処理により求めた予測モデルを用いて、その地形での自律移動ロボット１の姿勢（傾き角度θ）を予測することができる。また、地形のデータ（３次元距離データ）に対する自律移動ロボット１の姿勢（傾き角度θ）の関係が関数（予測モデルＭｒ、予測モデルＭｐ）として求まるため、訓練フェーズで姿勢学習処理に使用していない地形が、テストフェーズにおいて遭遇したとしても、姿勢予測部１０７は、姿勢（傾き角度θ）を予測することができる。また、仕様変更等で自律移動ロボット１の形状がより複雑なものに変わった場合、既存手法である物理モデルを用いた方法では対処が困難であるが、上述の訓練フェーズにおける姿勢学習処理を再度行うことにより対処可能である。そのため、上述の姿勢学習処理および姿勢予測処理は、地上を走行するロボットであれば、ロボットの機構および形状に限定されずに汎用的に適用可能である。
【００９１】
なお、ステップＳ５５において姿勢計測部１０２により検出されたロール角θｒおよびピッチ角θｐの角速度から算出された現在のロール角θｒおよびピッチ角θｐを考慮して、ステップＳ５６において、姿勢予測部１０７により算出された傾き角度θの予測値が予測修正部１０８により修正されているが、修正の方式はこれに限定されない。例えば、ステップＳ５２において、特徴量抽出部１０５は、距離計測部１０１により計測された３次元距離データから特徴量を抽出しているが、このとき、姿勢計測部１０２の検出値から得られるロール角θｒおよびピッチ角θｐに基づいて、３次元距離データを世界座標系（水平な状態で計測された場合の座標系）に変換して、特徴量抽出処理を行うものとしてもよい。これによって、姿勢予測部１０７により算出される予測値θ＿Ｅがそのまま真の予測値θ＿Ｔとなるので、予測修正部１０８による修正が不要とすることができる。
【００９２】
（自律移動ロボットの全体動作）
図１７は、実施の形態に係る自律移動ロボットの全体動作の流れの一例を示すフローチャートである。図１８は、実施の形態に係る自律移動ロボットの特定のタイミングにおける動作を説明する図である。図１９は、実施の形態に係る自律移動ロボットの特定のタイミングにおける動作を説明する図である。図２０は、従来の技術による姿勢安定化制御において制御タイミングが早い場合の例を説明する図である。図２１は、従来の技術による姿勢安定化制御において制御タイミングが遅い場合の例を説明する図である。図２２は、実施の形態に係る自律移動ロボットの姿勢安定化制御のタイミングを模式的に説明する図である。図１７〜２２を参照しながら、本実施の形態に係る自律移動ロボット１の全体動作について、図１７のフローチャートの流れに沿って説明する。
【００９３】
＜ステップＳ７１＞
移動量計算部１０４は、姿勢計測部１０２により計測された加速度を受け取り、加速度を積分することによって、自律移動ロボット１の走行距離（移動量）を計算する。そして、ステップＳ７２へ移行する。
【００９４】
＜ステップＳ７２＞
移動量計算部１０４は、計算した移動量が所定の距離Δｄに達したか否かを判定する。移動量が所定の距離Δｄに達した場合（ステップＳ７２：Ｙｅｓ）、ステップＳ７３へ移行し、達していない場合（ステップＳ７２：Ｎｏ）、ステップＳ７１へ戻る。
【００９５】
＜ステップＳ７３＞
移動量計算部１０４は、計算した移動量が所定の距離Δｄに達したことを特徴量抽出部１０５に通知する。そして、特徴量抽出部１０５、姿勢予測部１０７および予測修正部１０８は、上述した姿勢予測処理を実行し、傾き角度θの予測値を求める。
【００９６】
例えば、自律移動ロボット１が距離Δｄだけ移動して図１８に示すような位置にある場合、距離計測部１０１は、図１８に示すように前方の地形をスキャンし、３次元スキャン領域３０１を計測する。次に、特徴量抽出部１０５は、３次元スキャン領域３０１の３次元距離データから自律移動ロボット１の大きさに相当する接地領域３１１を切り出し、上述の特徴量抽出処理によって特徴量を抽出する。次に、姿勢予測部１０７は、予測モデルＭｒおよび予測モデルＭｐを用いて、特徴量からロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを算出する。さらに、予測修正部１０８は、姿勢予測部１０７によって算出されたロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを修正して予測値θ＿Ｅ１を求める。
【００９７】
予測修正部１０８は、修正した真の予測値（例えば、予測値θ＿Ｅ１）を経路選択部１０９に送る。そして、ステップＳ７４へ移行する。
【００９８】
＜ステップＳ７４＞
経路選択部１０９は、予測修正部１０８から受け取った姿勢の予測値（例えば、予測値θ＿Ｅ１）が所定の角度（以下、「転倒限界角」と称する場合がある）以上か否かを判定する。姿勢の予測値が転倒限界角以上である場合（ステップＳ７４：Ｙｅｓ）、ステップＳ７５へ移行し、転倒限界角未満である場合（ステップＳ７４：Ｎｏ）、ステップＳ７６へ移行する。ここで、転倒限界角とは、自律移動ロボット１が転倒する寸前の角度を示し、予測値がこの角度以上である場合、自律移動ロボット１が転倒する可能性が高いことを示す。この転倒限界角は、例えば、自律移動ロボット１の形態または仕様に基づいて、ユーザが予め設定するものとすればよい。
【００９９】
＜ステップＳ７５＞
経路選択部１０９は、姿勢の予測値が転倒限界角以上である場合、その予測値に対応する地形では、自律移動ロボット１が後述の姿勢安定化制御を行っても転倒する可能性が高いと判断し、姿勢安定化計算部１１１に対して、左方向または右方向のいずれかに所定角度α分だけ旋回する指令を送る。姿勢安定化計算部１１１は、経路選択部１０９から旋回指令を受け取ると、左方向または右方向のいずれかに所定角度α分だけ自律移動ロボット１の進行方向を旋回させる。旋回の制御方法の一例としては、ロール角θｒの予測値が正（自律移動ロボット１の進行方向に対して左半分側が右半分側よりも下がる）であれば左方向に旋回させ、ロール角θｒの予測値が負（自律移動ロボット１の進行方向に対して右半分側が左半分側よりも下がる）であれば右方向に旋回させるという制御方法が挙げられる。
【０１００】
このように、姿勢予測処理によって予測された姿勢の予測値が、姿勢安定化制御によっても姿勢を保つことが困難であると判断できる閾値（転倒限界角）以上である場合、旋回動作によって、その予測値に対応する地形を回避することができ、自律移動ロボット１の転倒を抑制することができる。そして、ステップＳ７１へ戻る。
【０１０１】
＜ステップＳ７６＞
経路選択部１０９は、姿勢の予測値が転倒限界角未満である場合、後述の姿勢安定化制御によって転倒せずに走行できると判断し、予測修正部１０８から受け取った姿勢の予測値を記憶部１１３に記憶させる。また、経路選択部１０９は、運動生成部１１０の姿勢安定化計算部１１１に姿勢安定化制御の実行指令を送る。姿勢安定化計算部１１１は、経路選択部１０９から姿勢安定化制御の実行指令を受け取ると、現在の自律移動ロボット１の位置から進行方向に距離Δｄだけ進んだ位置の地形に対応する姿勢の予測値を、記憶部１１３から読み出して取得する。図１８の例では、姿勢安定化計算部１１１は、走行速度ｖ１で走行する自律移動ロボット１の位置から進行方向に距離Δｄ（これから進む予定の距離）だけ進んだ位置の地形に対応する姿勢の予測値を、記憶部１１３から読み出して取得する。また、自律移動ロボット１が図１９に示す位置まで移動した場合、姿勢安定化計算部１１１は、図１８の位置の地形に対応する記憶部１１３に記憶された予測値は不要となるので、記憶部１１３から削除する。なお、図１８の位置の地形に対応する予測値は、図１８の位置に自律移動ロボット１が移動した時点で不要であるので、姿勢安定化計算部１１１は、自律移動ロボット１が図１８の位置に移動した時点で、図１８の位置の地形に対応する予測値を削除するものとしてもよい。
【０１０２】
このように、図１８および１９に示す記憶部１１３に記憶された予測値のように、姿勢予測処理により求められた予測値は、自律移動ロボット１の進行方向の前方（例えば、数ｍ先）の地面をスキャンして予測されるため、その地面上を走行するまで記憶部１１３に記憶されている必要がある。また、姿勢予測処理は逐次的に行われるため、予測値を系列的に記憶しておく必要もある。そこで、記憶部１１３は、図１８および１９に示すように、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ：先入れ先出し）方式、すなわち、キュー方式のメモリ構造により予測値を記憶するものとしている。ＦＩＦＯ方式では、例えば、新しいデータを書き込む（エンキュー）際には、メモリ構造の末尾にデータを追加し、データを読み出す（デキュー）際には、メモリ構造の先頭からデータを取り出すと同時に、先頭のデータ以外のデータをすべて先頭方向に１データ分シフトする等の動作が行われる。
【０１０３】
本実施の形態では、自律移動ロボット１の走行速度は速度制御により変化するが、予測値の算出および書込み動作を所定時間ごとに行うものとすると、低速で走行している場合、予測値の書き込み処理ばかりが進行するため、記憶部１１３が容量オーバーする可能性がある。この容量オーバーを防ぐために、記憶部１１３では、キュー方式のメモリ構造に予測値を記憶させるものとしているので、メモリ構造に記憶される予測値の数を一定に維持することが望ましい。そこで、記憶部１１３に対する予測値の書き込み、および読み出しは、自律移動ロボット１が所定距離（図１８および１９の例では距離Δｄ）だけ走行するごとに行うものとしている。このように自律移動ロボット１が所定距離だけ走行したか否かを確認するために、ステップＳ７１において移動量計算部１０４により走行距離（移動量）の計算が行われる。そして、ステップＳ７７へ移行する。
【０１０４】
＜ステップＳ７７＞
移動量計算部１０４は、ステップＳ７２までに計算した自律移動ロボット１の走行距離（移動量）をリセットする。これによって、姿勢計測部１０２により計測された加速度を積分して移動量を算出する過程で累積する計算誤差を解消することができる。そして、ステップＳ７８へ移行する。
【０１０５】
＜ステップＳ７８＞
姿勢安定化計算部１１１は、記憶部１１３から読み出した姿勢（傾き角度θ）の予測値が、ロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅである場合、これらの予測値を相殺するように自律移動ロボット１のロール角が−θｒ＿Ｅ、ピッチ角が−θｐ＿Ｅに傾く姿勢とする姿勢安定化制御を行うための姿勢安定化機構部１１４に対する制御量を算出する。具体的には、姿勢安定化計算部１１１は、予測値を相殺する姿勢とするために、姿勢安定化機構部１１４に含まれる主駆動系３に対する前部可動腕４および後部可動腕５の角度をどのくらいにすればよいかを逆運動学（ＩＫ：Ｉｎｖｅｒｓｅ  Ｋｉｎｅｍａｔｉｃｓ）に基づいて計算し、前部可動腕４および後部可動腕５それぞれが含むモータ（図１に示す前部可動腕駆動用モータ１０ａ、１０ｂ、および後部可動腕駆動用モータ１１ａ、１１ｂ）の回転角度を制御量として計算する。姿勢安定化計算部１１１は、算出した制御量を速度制御計算部１１２に送る。
【０１０６】
ここで、姿勢安定化計算部１１１により算出された制御量の値が大きいほど、姿勢安定化制御を行うために姿勢安定化機構部１１４がアクチュエータ（前部可動腕４および後部可動腕５の場合はモータ）を目標値まで駆動させるのに時間を要する。具体的には、例えば、姿勢安定化機構部１１４が一定の角速度ω［ｒａｄ／ｓ］で駆動するものと仮定した場合、目標値まで制御するのに要する時間Δτ［ｓ］は、以下の式（３）で表される。
【０１０７】
Δτ＝Δψ／ω                                                    ・・・（３）
【０１０８】
ここで、Δψ［ｒａｄ］は、計算された制御量であって、アクチュエータの目標値と、アクチュエータの現在値との差である。また、自律移動ロボット１が走行速度ｖ［ｍ／ｓ］で等速直線運動で走行していることを仮定すると、現在の自律移動ロボット１の位置から進行方向に距離Δｄ［ｍ］だけ進んだ位置に達するまでの時間Δｔ［ｓ］は、以下の式（４）で表される。
【０１０９】
Δｔ＝Δｄ／ｖ                                                    ・・・（４）
【０１１０】
ここで、上述でも説明した距離Δｄは、姿勢予測処理を行う距離間隔（姿勢予測処理の距離的なサンプリング周期）を示す。現在の自律移動ロボット１の位置から進行方向に距離Δｄ［ｍ］だけ進んだ位置に達するまでに、姿勢安定化機構部１１４を目標値までに駆動する姿勢安定化制御が実行されなければならないので、以下の式（５）を満たさなければならない。
【０１１１】
Δτ＜Δｔ                                                        ・・・（５）
【０１１２】
式（３）〜（５）の関係から、自律移動ロボット１の走行速度ｖは、以下の式（６）の関係を満たすことが要件となる。
【０１１３】
ｖ＜Δｄ・ω／Δψ                                                ・・・（６）
【０１１４】
ただし、実際には、姿勢安定化制御の開始の遅延等を考慮して、以下の式（７）の関係を満たすように速度制御を行うことが望ましい。
【０１１５】
ｖ＝β・Δｄ・ω／Δψ                                            ・・・（７）
【０１１６】
ここで、βは、ユーザが指定するパラメータであり、制御遅延または目標値に至るまでの時間的余裕等を考慮して調整する。速度制御計算部１１２は、姿勢安定化計算部１１１から受け取った制御量から、式（６）または（７）によって、速度制御を行うために走行用駆動部１１５に指令する走行速度を算出する。そして、ステップＳ７９へ移行する。
【０１１７】
＜ステップＳ７９＞
速度制御計算部１１２は、算出した走行速度で自律移動ロボット１が走行するように、走行用駆動部１１５に速度制御を実行させる。これによって、自律移動ロボット１は、現在位置から距離Δｄだけ進行方向に、速度制御計算部１１２により算出された走行速度で走行する。図１８および１９に示す例では、自律移動ロボット１は、速度制御計算部１１２により算出された走行速度ｖ２により、図１８に示す位置（現在位置）から距離Δｄだけ走行する。そして、ステップＳ８０へ移行する。
【０１１８】
＜ステップＳ８０＞
姿勢安定化計算部１１１は、ステップＳ７９において、走行用駆動部１１５により現在位置から距離Δｄだけ進行方向に、速度制御計算部１１２により算出された走行速度で走行させる速度制御の開始と同時に、算出した制御量だけアクチュエータが駆動するように姿勢安定化機構部１１４に姿勢安定化制御を実行させる。これによって、姿勢安定化機構部１１４は、自律移動ロボット１が進行方向に距離Δｄだけ走行する間に、姿勢安定化計算部１１１により算出された制御量分のアクチュエータの駆動を完了することができる。すなわち、上述の式（６）または（７）に従って、自律移動ロボット１の速度制御を行うことによって、姿勢安定化機構部１１４に対する制御量が大きい、すなわち、Δψの値が大きくなるほど、自律移動ロボット１の走行速度が小さくなるようにすることが可能となる。なお、距離Δｄについては、例えば、自律移動ロボット１に装着される距離センサ７の角度、処理測度、および自律移動ロボット１の最高速度等を考慮して、ユーザが経験的に決定するものとすればよい。そして、ステップＳ７１へ戻る。
【０１１９】
以上のステップＳ７１〜Ｓ８０が繰り返されることにより、自律移動ロボット１の全体動作が行われる。図１９に示す例では、図１８の位置にいた自律移動ロボット１が、進行方向に距離Δｄだけ進んだ状態を示しているが、この位置において再び姿勢予測処理が実行される。具体的には、距離計測部１０１は、図１９に示すように前方の地形をスキャンし、３次元スキャン領域３０２を計測する。次に、特徴量抽出部１０５は、３次元スキャン領域３０２の３次元距離データから自律移動ロボット１の大きさに相当する接地領域３１２を切り出し、上述の特徴量抽出処理によって特徴量を抽出する。次に、姿勢予測部１０７は、予測モデルＭｒおよび予測モデルＭｐを用いて、特徴量からロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを算出する。さらに、予測修正部１０８は、姿勢予測部１０７によって算出されたロール角予測値θｒ＿Ｅおよびピッチ角予測値θｐ＿Ｅを修正して予測値θ＿Ｅ２を求める。そして、経路選択部１０９は、上述と同様に、姿勢の予測値が転倒限界角未満である場合、予測修正部１０８から受け取った姿勢の予測値（図１９の例では予測値θ＿Ｅ２）を記憶部１１３に記憶させる。
【０１２０】
なお、上述の式（６）または（７）によれば、自律移動ロボット１の走行速度ｖの代わりに、姿勢安定化機構部１１４の角速度ωを制御することも想定される。しかし、自律移動ロボット１の重心が急激に変化することは、姿勢の不安定化を招来することに加え、重量の大きな自律移動ロボット１の重心を制御するには大きなトルクを要するため、アクチュエータが大型化して危険を伴うことになる。したがって、上述のように、自律移動ロボット１の走行速度ｖに対して速度制御を行うことが望ましく、これによって、姿勢の不安定化、およびアクチュエータの大型化に伴う危険の発生を抑制することができる。
【０１２１】
以上のように、本実施の形態に係る自律移動ロボット１は、前方の地形をスキャンして、計測した距離データから地形の特徴量を抽出し、特徴量に基づいてその地形での姿勢（ロール角およびピッチ角）の予測値を算出するものとしている。そして、自律移動ロボット１は、その地形において予測値を相殺するように姿勢安定化機構部１１４を駆動して姿勢安定化制御を実行する。これによって、外乱または外力等の影響で発生する転倒の危険性を低下させ、多様な地面形状を有する不整地の環境においても、自律移動ロボット１は走行中の転倒を抑制することができる。
【０１２２】
また、本実施の形態に係る自律移動ロボット１は、姿勢予測処理によって求めた予測値から姿勢安定化制御を行うための姿勢安定化機構部１１４に対する制御量を算出し、予測値に対応する地形に到達するまでに姿勢安定化機構部１１４のアクチュエータが目標値までの駆動が完了するように速度制御を行っている。これによって、自律移動ロボット１は、予測値に対応した地形において安定した姿勢をとることが可能となり、転倒を抑制することができる。
【０１２３】
例えば、前方の地形をスキャンして、その地形における静的な安定性のみを評価する従来の技術では、例えば、図２０および２１に示すような問題がある。ここで、図２０および２１に示すロボット５０１が姿勢を安定化させるための装置として、説明を簡便にするため重心位置制御装置５０６を想定するものとする。図２０では、ロボット５０１が備える距離センサ５０７により前方の地形をスキャンし、その地形での姿勢を予測（図２０（ａ）参照）し、重心位置制御装置５０６の制御量を算出し、図２０（ｂ）に示すように、重心位置制御装置５０６をその制御量分だけ駆動させている。しかし、重心位置制御装置５０６の制御量に基づいてロボット５０１の速度制御が行われていないため、図２０（ｃ）の例では、重心位置制御装置５０６の制御量の駆動が早すぎて転倒してしまう。また、図２１では、ロボット５０１が備える距離センサ５０７により前方の地形をスキャンし、その地形での姿勢を予測（図２１（ａ）参照）し、重心位置制御装置５０６の制御量を算出し、図２１（ｂ）に示すように、重心位置制御装置５０６をその制御量分だけ駆動させている。しかし、重心位置制御装置５０６の制御量に基づいてロボット５０１の速度制御が行われていないため、図２１（ｃ）の例では、重心位置制御装置５０６の制御量の駆動が間に合わず転倒してしまう。
【０１２４】
一方、本実施の形態に係る自律移動ロボット１は、上述のように、予測値に対応する地形に到達するまでにアクチュエータが目標値までの駆動が完了するように速度制御を行っているので、図２２に示すように、姿勢を予測した地点を走行した場合の転倒を抑制することが可能となる。ここで、図２２に示す自律移動ロボット１が姿勢を安定化させるための装置（上述の実施の形態では、主駆動系３、前部可動腕４および後部可動腕５等を含む姿勢安定化機構部１１４）として、説明を簡便にするため重心位置制御装置６を想定するものとする。自律移動ロボット１が備える距離センサ７により前方の地形をスキャンし、その地形での姿勢を予測（図２２（ａ）参照）し、重心位置制御装置６の制御量を算出し、図２２（ｂ）に示すように、予測値に対応する地形に到達するまでに重心位置制御装置６が目標値までの駆動が完了するように速度制御（図２２（ｂ）では高速走行から低速走行に変更）を行っている。そして、図２２（ｃ）および２２（ｄ）に示すように、予測値に対応する地形に到達するまでに重心位置制御装置６の目標値までの駆動が完了し、予測値に対応した地形において安定した姿勢を取りながら走行することが可能になるので、転倒を抑制することができる。
【０１２５】
また、本実施の形態に係る自律移動ロボット１は、姿勢予測処理により求めた姿勢の予測値が転倒限界角以上である場合、その予測値に対応する地形では、自律移動ロボット１が姿勢安定化制御を行っても転倒する可能性が高いと判断し、進行方向を旋回させるものとしている。不整地においては、姿勢安定化機構部１１４のアクチュエータの可動範囲では姿勢を安定化ができない場合もあり得る。このような場合は、上述のように、自律移動ロボット１の進行方向を旋回させ、その地形を回避することによって、自律移動ロボット１の転倒を抑制することができる。
【０１２６】
なお、上述の実施の形態において、自律移動ロボット１の演算部１０３の移動量計算部１０４、特徴量抽出部１０５、姿勢学習部１０６、姿勢予測部１０７、予測修正部１０８、経路選択部１０９、姿勢安定化計算部１１１、および速度制御計算部１１２の少なくともいずれかがプログラムの実行によって実現される場合、そのプログラムは、ＲＯＭ等に予め組み込まれて提供される。また、上述の実施の形態に係る自律移動ロボット１で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。また、上述の実施の形態の自律移動ロボット１で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の実施の形態の自律移動ロボット１で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述の実施の形態の自律移動ロボット１で実行されるプログラムは、上述した各機能部のうち少なくともいずれかを含むモジュール構成となっており、実際のハードウェアとしてはプロセッサ４１が上述のＲＯＭ４２からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置（ＲＡＭ４３等）上にロードされて生成されるようになっている。
【符号の説明】
【０１２７】
１  自律移動ロボット
２  本体部
３、３ａ、３ｂ  主駆動系
４、４ａ、４ｂ  前部可動腕
５、５ａ、５ｂ  後部可動腕
６  重心位置制御装置
７  距離センサ
８  モーションセンサ
１０ａ、１０ｂ  前部可動腕駆動用モータ
１１ａ、１１ｂ  後部可動腕駆動用モータ
２１  テーブル
２１ａ  テーブル面
２２  テーブル軸
２２ａ  ボールジョイント
２３  ステッピングモータ
２３ａ  回転軸
２４  平歯車
２４ａ  アーム
２４ｂ  連結部
２４ｃ  アーム
２４ｄ  ボールジョイント
２５  回転台
２６  ステッピングモータ
２６ａ  回転軸
２７  平歯車
２７ａ  アーム
２７ｂ  連結部
２７ｃ  アーム
２７ｄ  ボールジョイント
２８  固定台
３１  錘
４０  制御装置
４１  プロセッサ
４２  ＲＯＭ
４３  ＲＡＭ
４４  センサＩ／Ｆ
４５  ドライバＩ／Ｆ
４６  補助記憶装置
４７  バス
５１  主駆動系ドライバ
５２  可動腕ドライバ
５３  重心位置制御ドライバ
１０１  距離計測部
１０２  姿勢計測部
１０３  演算部
１０４  移動量計算部
１０５  特徴量抽出部
１０６  姿勢学習部
１０７  姿勢予測部
１０８  予測修正部
１０９  経路選択部
１１０  運動生成部
１１１  姿勢安定化計算部
１１２  速度制御計算部
１１３  記憶部
１１４  姿勢安定化機構部
１１５  走行用駆動部
３００  ３次元距離データ
３０１、３０２  ３次元スキャン領域
３１０〜３１２  接地領域
３１０ａ  点
５０１  ロボット
５０６  重心位置制御装置
５０７  距離センサ
Ａ  代表値
Ａｓ＿１ａ、Ａｓ＿１ｂ、Ａｓ＿２ａ、Ａｓ＿２ｂ  軸
Ｇ  グリッド
Ｇｄ  欠損グリッド
Ｍｐ、Ｍｒ  予測モデル
Ｐ  点データ
ｖ１、ｖ２  走行速度
θ  傾き角度
θｐ  ピッチ角
θｒ  ロール角
θｐ＿Ｅ  ピッチ角予測値
θｐ＿Ｔ  真の予測値
θｒ＿Ｅ  ロール角予測値
θｒ＿Ｔ  真の予測値
θ＿Ｅ、θ＿Ｅ１、θ＿Ｅ２  予測値
θ＿Ｔ  真の予測値
【先行技術文献】
【特許文献】
【０１２８】
【特許文献１】特開２００９−２４１２４６号公報
【図１】
2017199265.tif 000003
【図２】
2017199265.tif 000004
【図３】
2017199265.tif 000005
【図４】
2017199265.tif 000006
【図５】
2017199265.tif 000007
【図６】
2017199265.tif 000008
【図７】
2017199265.tif 000009
【図８】
2017199265.tif 000010
【図９】
2017199265.tif 000011
【図１０】
2017199265.tif 000012
【図１１】
2017199265.tif 000013
【図１２】
2017199265.tif 000014
【図１３】
2017199265.tif 000015
【図１４】
2017199265.tif 000016
【図１５】
2017199265.tif 000017
【図１６】
2017199265.tif 000018
【図１７】
2017199265.tif 000019
【図１８】
2017199265.tif 000020
【図１９】
2017199265.tif 000021
【図２０】
2017199265.tif 000022
【図２１】
2017199265.tif 000023
【図２２】
2017199265.tif 000024