(57)【要約】【課題】移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の運動方程式によって算出するに際し、移動体が外部環境に接触していないのに路面特性が変化すると移動体が外部環境に接触して移動体に接触外力が作用したと誤認識してしまう問題を解消する。【解決手段】生活支援システム１は、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを取得する転がり抵抗トルク取得部２６と、回転情報と、駆動トルクと、転がり抵抗トルクと、左駆動輪７L及び右駆動輪７Rの回転の運動方程式に基いて、生活支援ロボット３が外部環境に接触したことにより左駆動輪７L及び右駆動輪７Rに作用する接触外力トルクを算出する接触外力トルク算出部２７と、接触外力トルクに基いて、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を算出する接触外力算出部２８と、を備える。【選択図】図２
2016170616.tif 000002
【特許請求の範囲】
【請求項１】
移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の回転の運動方程式によって算出する接触外力算出システムであって、
前記駆動輪の回転情報を取得する回転情報取得手段と、
前記駆動輪を駆動するための駆動トルクを取得する駆動トルク取得手段と、
現在移動している路面から前記駆動輪が受ける転がり抵抗トルクを取得する転がり抵抗トルク取得手段と、
前記回転情報と、前記駆動トルクと、前記転がり抵抗トルクと、前記駆動輪の回転の運動方程式に基いて、前記移動体が前記外部環境に接触したことにより前記駆動輪に作用する接触外力トルクを算出する接触外力トルク算出手段と、
前記接触外力トルクに基いて、前記移動体が前記外部環境に接触することで前記移動体に作用する接触外力を算出する接触外力算出手段と、
を備えた、
接触外力算出システム。
【請求項２】
請求項１に記載の接触外力算出システムであって、
前記路面の画像情報及び前記転がり抵抗トルクを関連付けて記憶する記憶手段を更に備え、
前記転がり抵抗トルク取得手段は、現在移動している前記路面を撮像して得られる画像情報に基づいて、前記記憶手段を参照することで、現在移動している前記路面から前記駆動輪が受ける前記転がり抵抗トルクを取得する、
接触外力算出システム。
【請求項３】
請求項２に記載の接触外力算出システムであって、
前記記憶手段に記憶されている前記転がり抵抗トルクは、前記移動体が外部環境に接触しない条件下で前記移動体を前記路面上で移動させ、前記移動体の移動中に前記駆動輪の回転情報、及び、前記駆動輪を駆動するための駆動トルクを取得し、前記回転情報と、前記駆動トルクと、前記駆動輪の回転の運動方程式に基いて算出したものである、
接触外力算出システム。
【請求項４】
移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の回転の運動方程式によって算出する接触外力算出方法であって、
前記駆動輪の回転情報を取得するステップと、
前記駆動輪を駆動するための駆動トルクを取得するステップと、
現在移動している路面から前記駆動輪が受ける転がり抵抗トルクを取得するステップと、
前記回転情報と、前記駆動トルクと、前記転がり抵抗トルクと、前記駆動輪の回転の運動方程式に基いて、前記移動体が前記外部環境に接触したことにより前記駆動輪に作用する接触外力トルクを算出するステップと、
前記接触外力トルクに基いて、前記移動体が前記外部環境に接触することで前記移動体に作用する接触外力を算出するステップと、
を含む、
接触外力算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接触外力算出システム、転がり抵抗トルク検出方法に関する。
【背景技術】
【０００２】
近年、障害物などの外部環境を回避しつつ、自律的に移動する移動体の開発が行われている。
【０００３】
特許文献１は、特別な衝突センサを設けることなく、移動体が外部環境に接触することで移動体に作用する接触外力を算出する技術を開示している。具体的には、駆動輪の回転情報を検出し、この回転情報と駆動トルクを駆動輪の運動方程式に代入することで、移動体が外部環境に接触したことにより駆動輪に作用する接触外力トルクを算出し、この接触外力トルクに基いて移動体に作用する接触外力を算出している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−４４６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の構成では、移動体が外部環境に接触していないのに、路面特性が変化すると、移動体が外部環境に接触して移動体に接触外力が作用したと誤認識してしまう問題があった。
【０００６】
そこで、本発明の目的は、移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の運動方程式によって算出するに際し、移動体が外部環境に接触していないのに路面特性が変化すると移動体が外部環境に接触して移動体に接触外力が作用したと誤認識してしまう問題を解消する技術を提供することにある。
【課題を解決するための手段】
【０００７】
本願発明の第１の観点によれば、移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の回転の運動方程式によって算出する接触外力算出システムであって、前記駆動輪の回転情報を取得する回転情報取得手段と、前記駆動輪を駆動するための駆動トルクを取得する駆動トルク取得手段と、現在移動している路面から前記駆動輪が受ける転がり抵抗トルクを取得する転がり抵抗トルク取得手段と、前記回転情報と、前記駆動トルクと、前記転がり抵抗トルクと、前記駆動輪の回転の運動方程式に基いて、前記移動体が前記外部環境に接触したことにより前記駆動輪に作用する接触外力トルクを算出する接触外力トルク算出手段と、前記接触外力トルクに基いて、前記移動体が前記外部環境に接触することで前記移動体に作用する接触外力を算出する接触外力算出手段と、を備えた、接触外力算出システムが提供される。以上の構成によれば、前記移動体が前記外部環境に接触することで前記移動体に作用する前記接触外力を前記駆動輪の回転の運動方程式によって算出するに際し、現在移動している前記路面から前記駆動輪が受ける前記転がり抵抗トルクを考慮しているので、前記移動体が前記外部環境に接触していないのに路面特性が変化すると前記移動体が前記外部環境に接触して前記移動体に前記接触外力が作用したと誤認識していまう問題を解消することができる。
上記接触外力算出システムは、前記路面の画像情報及び前記転がり抵抗トルクを関連付けて記憶する記憶手段を更に備える。前記転がり抵抗トルク取得手段は、現在移動している前記路面を撮像して得られる画像情報に基づいて、前記記憶手段を参照することで、現在移動している前記路面から前記駆動輪が受ける前記転がり抵抗トルクを取得する。以上の構成によれば、現在移動している前記路面を撮像して得られる画像情報を取得することで、その路面に対応する前記転がり抵抗トルクを取得することができる。
前記記憶手段に記憶されている前記転がり抵抗トルクは、前記移動体が外部環境に接触しない条件下で前記移動体を前記路面上で移動させ、前記移動体の移動中に前記駆動輪の回転情報、及び、前記駆動輪を駆動するための駆動トルクを取得し、前記回転情報と、前記駆動トルクと、前記駆動輪の回転の運動方程式に基いて算出したものである。
本願発明の第２の観点によれば、移動体が外部環境に接触することで移動体に作用する接触外力を駆動輪の回転の運動方程式によって算出する接触外力算出方法であって、前記駆動輪の回転情報を取得するステップと、前記駆動輪を駆動するための駆動トルクを取得するステップと、現在移動している路面から前記駆動輪が受ける転がり抵抗トルクを取得するステップと、前記回転情報と、前記駆動トルクと、前記転がり抵抗トルクと、前記駆動輪の回転の運動方程式に基いて、前記移動体が前記外部環境に接触したことにより前記駆動輪に作用する接触外力トルクを算出するステップと、前記接触外力トルクに基いて、前記移動体が前記外部環境に接触することで前記移動体に作用する接触外力を算出するステップと、を含む、接触外力算出方法が提供される。以上の方法によれば、前記移動体が前記外部環境に接触することで前記移動体に作用する前記接触外力を前記駆動輪の回転の運動方程式によって算出するに際し、現在移動している前記路面から前記駆動輪が受ける前記転がり抵抗トルクを考慮しているので、前記移動体が前記外部環境に接触していないのに路面特性が変化すると前記移動体が前記外部環境に接触して前記移動体に前記接触外力が作用したと誤認識していまう問題を解消することができる。
【発明の効果】
【０００８】
本発明によれば、前記移動体が前記外部環境に接触することで前記移動体に作用する前記接触外力を前記駆動輪の回転の運動方程式によって算出するに際し、現在移動している前記路面から前記駆動輪が受ける前記転がり抵抗トルクを考慮しているので、前記移動体が前記外部環境に接触していないのに路面特性が変化すると前記移動体が前記外部環境に接触して前記移動体に前記接触外力が作用したと誤認識していまう問題を解消することができる。
【図面の簡単な説明】
【０００９】
【図１】生活支援システムの概略図である。
【図２】生活支援ロボットの機能ブロック図である。
【図３】生活支援ロボットの座標系の説明図である。
【図４】サーバーの機能ブロック図である。
【図５】転がり抵抗トルクDBのデータ構造を示す図である。
【図６】傾斜した路面を移動する場合の概念図である。
【図７】接触外力算出フローである。
【図８】転がり抵抗トルクの時間変化を示すグラフである。
【図９】接触外力の時間変化を示すグラフである。
【図１０】転がり抵抗トルク検出フローである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態について説明する。図１には、生活支援システム１（接触外力算出システム）の概略を示している。図１に示すように、生活支援システム１は、サービス環境２内で自律移動可能な複数の生活支援ロボット３（移動体）と、複数の生活支援ロボット３が例えばLANやWANなどのネットワーク４を介してアクセス可能なサーバー５と、によって構成されている。
【００１１】
図２には、生活支援ロボット３の機能ブロック図を示している。図１及び図２に示すように、生活支援ロボット３は、移動体本体６と、左駆動輪７L（駆動輪）、右駆動輪７R（駆動輪）、前従動輪８F（従動輪）、後従動輪８B（従動輪）、制御部９、カメラ１０（撮像手段）、通信ドライバ１１（通信手段）、右モータ１２R（駆動手段）、左モータ１２L（駆動手段）、右エンコーダ１３R、左エンコーダ１３L、モータドライバ１４、カウンタ１５、姿勢センサ１６（傾斜角検出手段）を備える。
【００１２】
左駆動輪７L及び右駆動輪７R、前従動輪８F、後従動輪８Bは、移動体本体６に対して回転自在に取り付けられた車輪である。左駆動輪７L及び右駆動輪７Rは、駆動される車輪であって、進行方向に対して左右に配置されている。前従動輪８F及び後従動輪８Bは、駆動されない車輪であって、進行方向に対して前後に配置されている。
【００１３】
右駆動輪７Rには、右モータ１２R及び右エンコーダ１３Rが取り付けられている。左駆動輪７Lには、左モータ１２L及び左エンコーダ１３Lが取り付けられている。モータドライバ１４は、制御部９からの指令に基いて右モータ１２R及び左モータ１２Lの動作を制御する。これにより、生活支援ロボット３は、前後進、左右旋回、加減速などの任意の移動を行うことができる。
【００１４】
右エンコーダ１３Rは右モータ１２Rの出力軸の回転に応じたパルス信号を生成してカウンタ１５に出力する。同様に、左エンコーダ１３Lは左モータ１２Lの出力軸の回転に応じたパルス信号を生成してカウンタ１５に出力する。カウンタ１５は、右エンコーダ１３R及び左エンコーダ１３Lから出力されたパルス信号をカウントし、そのカウント値を制御部９に出力する。これにより、制御部９は、カウンタ１５から出力されたカウント値に基いて、右駆動輪７Rの回転情報、及び、左駆動輪７Lの回転情報を算出して取得することができる。ここで、回転情報とは、回転角度、回転角速度、回転角加速度のうち少なくとも何れかを含む情報、又は、回転角度、回転角速度、回転角加速度のすべてを含む情報である。
【００１５】
姿勢センサ１６は、例えば、ジャイロセンサ及び加速度センサによって構成されており、生活支援ロボット３の姿勢を検出し、検出結果を制御部９に出力する。
【００１６】
図１に戻り、本実施形態のサービス環境２の路面１７としては、フローリングが敷かれた路面１７A、カーペットが敷かれた路面１７B、畳が敷かれた路面１７Cが含まれている。
【００１７】
そして、カメラ１０は、制御部９からの指令に基づき、生活支援ロボット３が現在移動している路面１７を撮像して画像情報を生成し、生成した画像情報を制御部９に出力する。
【００１８】
制御部９は、通信ドライバ１１を介してネットワーク４に接続されている。
【００１９】
以上のように構成された生活支援ロボット３が安定的に移動するには、生活支援ロボット３が外部環境（例えば他の生活支援ロボット３など）に接触することで生活支援ロボット３に作用する接触外力を適切に把握することが重要である。上記接触外力を適切に把握すべく、例えば、生活支援ロボット３の移動体本体６の外周面に複数の接触センサを配置することが考えられる。しかしながら、生活支援ロボット３の移動体本体６の外周面に複数の接触センサを設けると、生活支援ロボット３の製造コスト増を招いてしまう。これに対し、本実施形態では、右駆動輪７R及び左駆動輪７Lの運動方程式を解くことで上記接触外力を算出するようにしている。
【００２０】
ここで、図１に示すように、生活支援ロボット３が活躍するサービス環境２の路面１７の素材は必ずしも統一されているわけではなく、本実施形態のように異なる素材の路面１７が混在している場合がある。例えば、図１において白抜き矢印で示すように、生活支援ロボット３がフローリングである路面１７Aからカーペットである路面１７Bへと移動したとすると、右駆動輪７R及び左駆動輪７Lが路面１７から受ける転がり抵抗トルクが変化することになる。なお、転がり抵抗トルクとは、路面１７の表面性状ごとに異なる値を取り、路面１７の弾性変形や右駆動輪７R及び左駆動輪７L自体の弾性変形に起因して右駆動輪７R及び左駆動輪７Lの回転に抗するように右駆動輪７R及び左駆動輪７Lに作用するトルクである。この変化は、右駆動輪７R及び左駆動輪７Lの運動方程式に対して外乱として作用し、もって、上記接触外力の算出に支障を来す。具体的には、生活支援ロボット３がフローリングである路面１７Aからカーペットである路面１７Bへと移動した際、実際には生活支援ロボット３が外部環境に接触していないにも拘らず、生活支援ロボット３が外部環境に接触したものとして生活支援ロボット３が誤って認識してしまう虞がある。
【００２１】
この問題に対し、生活支援ロボット３を以下のように構成することで、本実施形態では上記誤認識を解決している。
【００２２】
図２に示すように、制御部９は、中央演算処理器としてのCPU２０（Central Processing Unit）と、読み書き自由のRAM２１（Random Access Memory）、読み出し専用のROM２２（Read Only Memory）を備えている。そして、CPU２０がROM２２に記憶されている制御プログラムを読み出して実行することで、制御プログラムは、CPU２０などのハードウェアを、回転角度検出部２４（回転情報取得手段）、駆動トルク取得部２５（駆動トルク取得手段）、転がり抵抗トルク取得部２６（転がり抵抗トルク取得手段）、接触外力トルク算出部２７（接触外力トルク算出手段）、接触外力算出部２８（接触外力算出手段）、移動制御部２９（移動制御手段）、転がり抵抗トルク検出部３０（転がり抵抗トルク検出手段）、として機能させる。
【００２３】
移動制御部２９は、モータドライバ１４に所望の指令を出力することで、生活支援ロボット３の移動を制御する。
【００２４】
回転角度検出部２４は、カウンタ１５から出力されたカウント値に基いて、右駆動輪７Rの回転情報、及び、左駆動輪７Lの回転情報を算出して取得する。
【００２５】
駆動トルク取得部２５は、移動制御部２９がモータドライバ１４に出力する指令に基いて、右駆動輪７R及び左駆動輪７Lの駆動トルクを取得する。
【００２６】
転がり抵抗トルク取得部２６は、サーバー５にアクセスして、現在移動している路面１７から受ける転がり抵抗トルクを取得する。
【００２７】
接触外力トルク算出部２７は、回転角度検出部２４が取得した回転情報と、駆動トルク取得部２５が取得した駆動トルクと、転がり抵抗トルク取得部２６が取得した転がり抵抗トルクと、に基いて、右駆動輪７R及び左駆動輪７Lの回転の運動方程式を解くことで、生活支援ロボット３が外部環境に接触したことにより右駆動輪７R及び左駆動輪７Lに作用する接触外力トルクを算出する。
【００２８】
接触外力算出部２８は、接触外力トルク算出部２７が算出した接触外力トルクに基いて、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を算出する。
【００２９】
そして、移動制御部２９は、接触外力算出部２８が算出した接触外力を考慮しつつ、生活支援ロボット３の移動を制御する。
【００３０】
以下、上記各構成要素を詳しく説明する。
【００３１】
先ず、図３を参照して、生活支援ロボット３の座標系について考える。なお、生活支援ロボット３が移動する空間を水平な平面上と仮定する。図３は、生活支援ロボット３を上方から見たときの生活支援ロボット３の座標系を示す図である。絶対座標系の原点から見た生活支援ロボット３の座標をｐＢ＝［ｐＢｘ、ｐＢｙ、ｐＢθ］Ｔとする。ｐＢｘ及びｐＢｙは生活支援ロボット３の重心位置を示しており、ｐＢθは生活支援ロボット３の向き（角度）を示している。また、生活支援ロボット３の右駆動輪７R及び左駆動輪７Lの間隔を２ｌとし、右駆動輪７R及び左駆動輪７Lの半径をｒとし、右駆動輪７R及び左駆動輪７Lの回転角度をθＷ＝［θＬ、θＲ］Ｔとする。さらに、生活支援ロボット３の進行方向をＸ軸とする生活支援ロボット３の座標系を想定する。
【００３２】
上記のように想定した生活支援ロボット３の座標系において、生活支援ロボット３に作用する接触外力ｆＢをｆＢ＝［ｆＢｘ、ｆＢｙ、τＢ］Ｔとすると、絶対座標系では生活支援ロボット３に作用する接触外力ｆＢＡをｆＢＡ＝Ｒ（ｐＢθ）ｆＢと表わすことができる。なお、Ｒ（ｐＢθ）はｐＢθだけ回転させる回転変換行列を表わしており、下記（１）式のように表現される。但し、下記（１）式において、ＳｐＢθ＝ｓｉｎ（ｐＢθ）、ＣｐＢθ＝ｃｏｓ（ｐＢθ）である。
【００３３】
【数１】
2016170616.tif 000003
【００３４】
また、右駆動輪７R及び左駆動輪７Lが路面１７上を滑ることなく回転すると仮定する。この場合、右駆動輪７Rの回転角速度（θＬの１階微分値）、及び、左駆動輪７Lの回転角速度（θＲの１階微分値）を用いて、生活支援ロボット３の速度（ｐＢｘの１階微分値）、（ｐＢｙの１階微分値）、及び姿勢の角速度（ｐＢθの１階微分値）は、下記（２）式によって求められる。
【００３５】
【数２】
2016170616.tif 000004
【００３６】
ところで、例えばデッドレコニング（Dead-Reckoning:ＤＲ）方式（又はオドメトリ）において、移動体の速度及び姿勢の角速度を積分することで移動体の自己位置を算出することができる。一方で、デッドレコニング方式を単に用いて自己位置を算出した場合、移動体の速度及び姿勢の角速度の誤差も積分されるため、最終的に算出された自己位置は絶対位置情報として精度上の問題が生じ得る。特に、移動体の旋回時には各駆動輪と路面との間に滑りが生じるため、上記誤差はさらに大きなものとなる。
【００３７】
これに対し、上記（２）式における行列ＪＢはヤコビ行列を表わしている。そこで、このヤコビ行列ＪＢの転置行列ＪＢＴを用いて、生活支援ロボット３の重心位置に作用する接触外力ｆＢｘ、ｆＢｙ、τＢと、右駆動輪７Rの接触外力トルクτＲ、左駆動輪７Lの接触外力トルクτＬとの関係を示す下記（３）式を得ることができる。ここで、接触外力トルクτＷとは、生活支援ロボット３が外部環境に接触したことにより右駆動輪７R及び左駆動輪７Lに作用するトルクである。
【００３８】
【数３】
2016170616.tif 000005
【００３９】
上記のように最終的に得られた（３）式は生活支援ロボット３の向きｐＢθを含まない。このため、生活支援ロボット３の座標系において、生活支援ロボット３の重心位置に作用する接触外力ｆＢｘ、ｆＢｙ、τＢと、右駆動輪７Rの接触外力トルクτＲ及び左駆動輪７Lの接触外力トルクτＬは、生活支援ロボット３の向きｐＢθと無関係であることが分かる。すなわち、接触外力トルクτＲ及び接触外力トルクτＬを推定できれば、上記（３）式を用いて生活支援ロボット３の重心位置に作用する接触外力ｆＢｘ、ｆＢｙ、τＢを逆算することができる。
【００４０】
なお、この算出過程で、生活支援ロボット３の向きｐＢθの影響を受けない（３）式を用いることから、デッドレコニング方式による積分誤差の影響を受けることもない。そのため、高精度に生活支援ロボット３の重心位置に作用する接触外力を求めることができる。但し、上記ヤコビ行列ＪＢは正方でないため、後述の如く疑似逆行列を用いることになる。
【００４１】
ここで、左駆動輪７L及び右駆動輪７Rの回転の運動方程式は、下記（４）式のように表わすことができる。
【００４２】
【数４】
2016170616.tif 000006
【００４３】
なお、上記（４）式において、ＩＬ及びＩＲはそれぞれ左駆動輪７L及び右駆動輪７Rの等価慣性モーメント係数を示し、ＢＬ及びＢＲはそれぞれ左駆動輪７L及び右駆動輪７Rの粘性摩擦係数を示し、ＥＬ及びＥＲはそれぞれ左駆動輪７L及び右駆動輪７Rのクーロン摩擦係数を示している。なお、本実施の形態において、簡略化のため粘性摩擦及びクーロン摩擦を用いてモデル化した上記（４）式を示している。一方、例えば、減速機等の駆動系の特性により、左駆動輪７L及び右駆動輪７Rの正回転と逆回転で摩擦特性が異なる場合も存在する。その場合、実測などによって求めた特性を用いてもよい。
【００４４】
上記（４）式において、τＬ及びτＲは駆動トルクτＬｅ及びτＲｅは接触外力トルクτＬｒ及びτＲｒは転がり抵抗トルクである。
【００４５】
駆動トルク取得部２５は、上記（４）式における、左駆動輪７L及び右駆動輪７Rを駆動するための駆動トルクτＬ及び駆動トルクτＲを夫々算出する。なお、駆動トルク取得部２５は、左モータ１２L及び右モータ１２Rや左駆動輪７L及び右駆動輪７Rに取り付けたトルクセンサを用いて、駆動トルクτＬ及び駆動トルクτＲを算出してもよい。
【００４６】
また、上記（４）式において、τＬｅ及びτＲｅは、生活支援ロボット３が外部環境に接触したことにより左駆動輪７L及び右駆動輪７Rに作用する接触外力トルクである。
【００４７】
転がり抵抗トルク取得部２６は、カメラ１０が現在移動している路面１７を撮像するようカメラ１０に指令を出し、カメラ１０が生成した画像情報を取得し、その画像情報をサーバー５に送信することで、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクτＬｒ及び転がり抵抗トルクτＲｒを取得する。
【００４８】
ここで、図４及び図５を参照して、サーバー５を説明する。図４に示すように、サーバー５は、転がり抵抗トルクDB３２（記憶手段）を有する。転がり抵抗トルクDB３２は、例えばHDD（Hard Disk Drive）によって実現されている。図５に示すように、転がり抵抗トルクDB３２には、路面１７の識別情報、路面１７の材質、路面１７の転がり抵抗トルク、路面１７の画像、路面１７の製造メーカーが関連付けて記憶されている。従って、生活支援ロボット３の転がり抵抗トルク取得部２６が路面１７の画像情報をサーバー５に送信すると、サーバー５は、受信した画像情報に基いて路面１７の識別情報を取得して路面１７に対応する転がり抵抗トルクを生活支援ロボット３に送信し、もって、転がり抵抗トルク取得部２６は現在移動している路面１７の転がり抵抗トルクを取得する。
【００４９】
なお、生活支援ロボット３の転がり抵抗トルク取得部２６がサーバー５に送信した路面１７の画像情報と、転がり抵抗トルクDB３２に保存されている画像情報と、を照合するに際しては、いわゆる特徴量を用いるとよい。特徴量としては、例えばカラーヒストグラムや色統計、輪郭のヒストグラム、Haar-Like特徴量などが挙げられる。照合アルゴリズムとしては、例えばAdaboostアルゴリズムを用いることができる。サーバー５は、生活支援ロボット３から受信した画像情報の特徴量を算出し、算出した特徴量を、転がり抵抗トルクDB３２に保存されている各画像情報の特徴量と比較する。サーバー５は、比較の結果、生活支援ロボット３から受信した画像情報の特徴量に最も近い特徴量を有する画像情報を転がり抵抗トルクDB３２に保存されている複数の画像情報の中から特定し、その特定した画像情報に基いて路面１７の識別情報を取得し、この路面１７に対応する転がり抵抗トルクを生活支援ロボット３に送信する。
【００５０】
図２に戻り、接触外力算出部２８は、上記（４）式を用いて左駆動輪７Lの接触外力トルクτＬｅ及び右駆動輪７Rの接触外力トルクτＲｅを夫々算出する。なお、ハットは算出結果が推定値であることを意味している。
【００５１】
ここで、接触外力算出部２８は、まず、回転角度検出部２４により検出された左駆動輪７L及び右駆動輪７Rの回転角加速度（θＬの２階微分値）及び（θＲの２階微分値）を用いて、左駆動輪７L及び右駆動輪７Rの等価慣性トルクＩＬ・（θＬの２階微分値）、ＩＲ・（θＲの２階微分値）を算出する。そして、接触外力算出部２８は、算出した左駆動輪７L及び右駆動輪７Rの等価慣性トルクＩＬ・（θＬの２階微分値）、ＩＲ・（θＲの２階微分値）と、駆動トルク取得部２５が取得した駆動トルクτＬ及び駆動トルクτＲと、転がり抵抗トルク取得部２６が取得した転がり抵抗トルクτＬｒ及び転がり抵抗トルクτＲｒと、に基いて、上記（４）式を用いて、接触外力トルクτＬｅ及び接触外力トルクτＲｅを夫々算出する。なお、生活支援ロボット３の加速度が低い状態のとき、接触外力算出部２８は、上記（４）式において、左駆動輪７L及び右駆動輪７Rの等価慣性トルクＩＬ・（θＬの２階微分値）、ＩＲ・（θＲの２階微分値）を含めずに（０として）、接触外力トルクτＬｅ及び接触外力トルクτＲｅを夫々算出してもよい。
【００５２】
さらに、上記（３）式を用いて、生活支援ロボット３の重心位置に作用する接触外力ｆBを算出するための下記（５）式を導出することができる。ただし、ハットは推定値であることを意味している。
【００５３】
【数５】
2016170616.tif 000007
【００５４】
なお、上記（５）式において、（・）＋は疑似逆行列を示しており、例えば、行列Ａの疑似逆行列はＡＴ（ＡＡＴ）−１となる。
【００５５】
ここで、上記（５）式において、接触外力のｙ成分ｆＢｙは常時０となる。この接触外力のｙ成分ｆＢｙは、左駆動輪７L及び右駆動輪７Rに対して横方向に作用する力成分であり、左駆動輪７L及び右駆動輪７Rの回転トルクに影響しないため、０となる。
【００５６】
接触外力算出部２８は、上記算出した接触外力トルクτＬｅ及び接触外力トルクτＲｅと、上記（５）式とに基いて、生活支援ロボット３の重心位置に作用する接触外力ｆBを算出する。以上のようにして、生活支援ロボット３の重心位置に作用する接触外力ｆBを、その接触外力ｆBを計測するための特別なセンサを用いること無く、生活支援ロボット３の既存のセンサだけで算出することができる。従って、そのセンサにかかるコストを低減できる。
【００５７】
また、生活支援ロボット３の重心位置に作用する接触外力ｆBを、現在移動している路面１７の転がり抵抗トルクを加味して算出しているので、例えば路面１７Aと路面１７Bの間の境界を跨ぐ際に、実際には生活支援ロボット３が外部環境に接触していないのに生活支援ロボット３が外部環境に接触したと誤認識してしまうこともない。
【００５８】
次に、図６を参照して、生活支援ロボット３が傾斜面上に存在する場合について説明する。この場合、水平面上に存在する場合と比較して、生活支援ロボット３にはさらに鉛直下向きの重力Ｍｇが接触外力の一部として作用することとなる。接触外力算出部２８は、例えば、姿勢センサ１６により検出された加速度情報に基いて重力加速度ｇの斜面方向成分（重力加速度ｇを斜面に投影したベクトル成分）ａを算出する。そして、接触外力算出部２８は、上記のように算出した接触外力ｆBから、接触外力ｆBに含まれる重力成分Ｍａを減算する。このようにして、生活支援ロボット３が水平面上に存在する場合だけでなく、斜面上に存在する場合でも、外部環境との接触に伴う正味の接触外力ｆBを、その接触外力ｆBを検出するための特別なセンサを用いることなく算出することができる。
【００５９】
移動制御部２９は、例えば、接触外力算出部２８により算出された接触外力ｆBを抑制するように生活支援ロボット３のインピーダンス制御を行う。具体的には、移動制御部２９は、生活支援ロボット３の速度目標値（Ｐｄの１階微分値）を、例えば、下記（６）式に示す仮想インピーダンスモデルに基いて算出する。なお、下記（６）式において、Ｍｄは生活支援ロボット３の仮想質量であり、Ｄｄは生活支援ロボット３の仮想の粘性摩擦であり、Ｐｄは生活支援ロボット３の目標位置ベクトルであり、ｆＢは、接触外力算出部２８により算出される生活支援ロボット３に作用する接触外力ベクトルであり、Ｖｃは仮想コンベアの速度ベクトルである。
【００６０】
【数６】
2016170616.tif 000008
【００６１】
そして、移動制御部２９は、算出した生活支援ロボット３の速度目標値（Ｐｄの１階微分値）に基いて、下記（７）式を用いて左駆動輪７L及び右駆動輪７Rの速度目標値（θＷｄの１階微分値）を算出する。
【００６２】
【数７】
2016170616.tif 000009
【００６３】
移動制御部２９は、左駆動輪７L及び右駆動輪７Rの回転角速度が上記算出した左駆動輪７L及び右駆動輪７Rの速度目標値（θＷｄの１階微分値）となるように、左モータ１２L及び右モータ１２Rのフィードバック制御を行う。これにより、生活支援ロボット３に付加される接触外力ｆBの増加を緩和するように生活支援ロボット３を高精度に制御することができ、高い安全性が実現できる。
【００６４】
次に、図７を参照して、生活支援システム１における接触外力算出方法のフローチャートを説明する。
【００６５】
先ず、生活支援ロボット３の移動が開始する（S100:YES）と、回転角度検出部２４は、カウンタ１５から出力されたカウント値に基いて、右駆動輪７Rの回転情報、及び、左駆動輪７Lの回転情報を算出して取得する(S110)。
【００６６】
次に、駆動トルク取得部２５は、移動制御部２９がモータドライバ１４に出力する指令に基いて、右駆動輪７R及び左駆動輪７Lの駆動トルクを取得する（S120）。
【００６７】
次に、転がり抵抗トルク取得部２６は、カメラ１０が現在移動している路面１７を撮像するようにカメラ１０に指令を出し、カメラ１０が路面１７を撮像して生成した画像情報を取得する(S130)。そして、転がり抵抗トルク取得部２６は、カメラ１０から取得した画像情報をサーバー５に送信することで、この画像情報に関連付けられた転がり抵抗トルクをサーバー５から受信して取得する（S140）。
【００６８】
次に、接触外力トルク算出部２７は、回転角度検出部２４が取得した回転情報と、駆動トルク取得部２５が取得した駆動トルクと、転がり抵抗トルク取得部２６が取得した転がり抵抗トルクと、に基いて、右駆動輪７R及び左駆動輪７Lの回転の運動方程式を解くことで、生活支援ロボット３が外部環境に接触したことにより右駆動輪７R及び左駆動輪７Lに作用する接触外力トルクを算出する(S150)。
【００６９】
次に、接触外力算出部２８は、接触外力トルク算出部２７が算出した接触外力トルクに基いて、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を算出する（S160）。
【００７０】
そして、移動制御部２９は、接触外力算出部２８が算出した接触外力を考慮しつつ、生活支援ロボット３の移動をインピーダンス制御する(S170)。
【００７１】
最後に、移動制御部２９は、生活支援ロボット３が目的地に到達したか判定し（S180）、生活支援ロボット３が目的地に到達していないと判定した場合は（S180:NO）、処理をS110に戻し、生活支援ロボット３が目的地に到達したと判定した場合は（S180:YES）、生活支援ロボット３の移動を停止し(S190)、処理を終了する。
【００７２】
図８には、図１に示すように生活支援ロボット３が白抜き矢印の方向に移動した際に、左駆動輪７L及び右駆動輪７Rに作用する転がり抵抗トルクの時間変化を示している。図８に示すように、移動開始から１５秒経過した時点で生活支援ロボット３はフローリングが敷かれた路面１７Aとカーペットが敷かれた路面１７Bの境界を跨いでおり、転がり抵抗トルクはステップ状に増大している。同様に、移動開始から３０秒経過した時点で生活支援ロボット３はカーペットが敷かれた路面１７Bと畳が敷かれた路面１７Cの境界を跨いでおり、転がり抵抗トルクはステップ状に減少している。
【００７３】
図９には、特許文献１のように現在移動している路面１７に応じた転がり抵抗トルクの違いを考慮しないで算出した接触外力を細い実線で示し、本実施形態のように現在移動している路面１７に応じた転がり抵抗トルクの違いを考慮して算出した接触外力を太い実線で示している。このように、特許文献１に開示の技術では、路面１７に応じた転がり抵抗トルクの違いを考慮していないので、移動する路面１７の種別が切り替わるたびに生活支援ロボット３が外部環境に接触したと誤認識している。一方で、本実施形態では、現在移動している路面１７に応じた転がり抵抗トルクの違いを考慮して接触外力を算出しているので、移動する路面１７の種別が切り替わっても、生活支援ロボット３が外部環境に接触していない限り、接触外力はゼロのままである。
【００７４】
以上に、本願発明の好適な実施形態を説明した。上記実施形態は、以下の特長を有する。
【００７５】
◆生活支援システム１（接触外力算出システム）は、生活支援ロボット３（移動体）が外部環境（例えば他の生活支援ロボット３）に接触することで生活支援ロボット３に作用する接触外力を左駆動輪７L及び右駆動輪７Rの回転の運動方程式によって算出する。生活支援システム１は、左駆動輪７L及び右駆動輪７Rの回転情報を取得する回転角度検出部２４（回転情報取得手段）と、左駆動輪７L及び右駆動輪７Rを駆動するための駆動トルクを取得する駆動トルク取得部２５（駆動トルク取得手段）と、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを取得する転がり抵抗トルク取得部２６（転がり抵抗トルク取得手段）と、回転情報と、駆動トルクと、転がり抵抗トルクと、左駆動輪７L及び右駆動輪７Rの回転の運動方程式に基いて、生活支援ロボット３が外部環境に接触したことにより左駆動輪７L及び右駆動輪７Rに作用する接触外力トルクを算出する接触外力トルク算出部２７（接触外力トルク算出手段）と、接触外力トルクに基いて、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を算出する接触外力算出部２８（接触外力算出手段）と、を備える。以上の構成によれば、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を左駆動輪７L及び右駆動輪７Rの回転の運動方程式によって算出するに際し、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを考慮しているので、生活支援ロボット３が外部環境に接触していないのに路面特性が変化すると生活支援ロボット３が外部環境に接触して生活支援ロボット３に接触外力が作用したと誤認識していまう問題を解消することができる。
【００７６】
◆また、生活支援システム１は、路面１７の画像情報及び転がり抵抗トルクを関連付けて記憶する転がり抵抗トルクDB３２（記憶手段）を更に備える。転がり抵抗トルク取得部２６は、現在移動している路面１７を撮像して得られる画像情報に基づいて、転がり抵抗トルクDB３２を参照することで、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを取得する。以上の構成によれば、現在移動している路面１７を撮像して得られる画像情報を取得することで、その路面１７に対応する転がり抵抗トルクを取得することができるようになる。
【００７７】
なお、上記実施形態では、サーバー５が転がり抵抗トルクDB３２を有することで、転がり抵抗トルクを他の生活支援ロボット３と共有できるようになっている。しかし、これに代えて、生活支援ロボット３が転がり抵抗トルクDB３２を有し、複数の生活支援ロボット３間における相互通信によって転がり抵抗トルクを共有するようにしてもよい。
【００７８】
◆接触外力算出方法は、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を左駆動輪７L及び右駆動輪７Rの回転の運動方程式によって算出する方法である。接触外力算出方法は、左駆動輪７L及び右駆動輪７Rの回転情報を取得するステップ（S110）と、左駆動輪７L及び右駆動輪７Rを駆動するための駆動トルクを取得するステップ（S120）と、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを取得するステップ（S130-S140）と、回転情報と、駆動トルクと、転がり抵抗トルクと、左駆動輪７L及び右駆動輪７Rの回転の運動方程式に基いて、生活支援ロボット３が外部環境に接触したことにより左駆動輪７L及び右駆動輪７Rに作用する接触外力トルクを算出するステップ（S150）と、接触外力トルクに基いて、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を算出するステップ（S160）と、を含む。以上の方法によれば、生活支援ロボット３が外部環境に接触することで生活支援ロボット３に作用する接触外力を左駆動輪７L及び右駆動輪７Rの回転の運動方程式によって算出するに際し、現在移動している路面１７から左駆動輪７L及び右駆動輪７Rが受ける転がり抵抗トルクを考慮しているので、生活支援ロボット３が外部環境に接触していないのに路面特性が変化すると生活支援ロボット３が外部環境に接触して生活支援ロボット３に接触外力が作用したと誤認識していまう問題を解消することができる。
【００７９】
次に、図１０を参照して、路面１７の転がり抵抗トルクが未知であり、この転がり抵抗トルクを検出する転がり抵抗トルク検出方法を説明する。
【００８０】
先ず、生活支援ロボット３が特定環境下で移動を開始する(S300)。特定環境下とは、生活支援ロボット３が外部環境に接触しないこと、及び、生活支援ロボット３の移動する路面１７が単一種類の素材によって構成されていること、が担保されている環境である。
【００８１】
次に、回転角度検出部２４は、カウンタ１５から出力されたカウント値に基いて、右駆動輪７Rの回転情報、及び、左駆動輪７Lの回転情報を算出して取得する(S310)。
【００８２】
次に、駆動トルク取得部２５は、移動制御部２９がモータドライバ１４に出力する指令に基いて、右駆動輪７R及び左駆動輪７Lの駆動トルクを取得する（S320）。
【００８３】
次に、移動制御部２９は、生活支援ロボット３の移動を停止する(S330)。
【００８４】
次に、転がり抵抗トルク検出部３０は、カメラ１０が現在位置している路面１７を撮像するようにカメラ１０に指令を出し、カメラ１０が路面１７を撮像して生成した画像情報を取得する(S340)。
【００８５】
そして、転がり抵抗トルク検出部３０は、回転情報と駆動トルク、下記（８）式に基いて、転がり抵抗トルクτＬｒ及び転がり抵抗トルクτＲｒを算出する(S350)。下記（８）式は、（４）式から接触外力トルクの項を削除したものである。生活支援ロボット３は特定環境下で移動していたので、接触外力トルクは必ずゼロになることが担保されているから、接触外力トルクの項を削除することができる。
【００８６】
【数８】
2016170616.tif 000010
【００８７】
そして、転がり抵抗トルク検出部３０は、算出した転がり抵抗トルクτＬｒ及び転がり抵抗トルクτＲｒを画像情報と共にサーバー５にアップロードする(S360)。サーバー５にアップロードされた転がり抵抗トルクτＬｒ及び転がり抵抗トルクτＲｒと画像情報は、関連付けて転がり抵抗トルクDB３２に蓄積される。
【００８８】
このように、生活支援ロボット３は、検出した転がり抵抗トルクを都度、サーバー５にアップロードしているので、検出した転がり抵抗トルクを他の生活支援ロボット３と共有することができる。
【００８９】
上記実施形態は、以下の特長を有する。
【００９０】
◆転がり抵抗トルク検出方法は、生活支援ロボット３（移動体）が現在移動している路面１７から右駆動輪７R及び左駆動輪７Lが受ける転がり抵抗トルクを検出する。転がり抵抗トルク検出方法は、特定環境下（生活支援ロボット３が外部環境に接触しない条件下）で生活支援ロボット３を路面１７上で移動させるステップ（S300）と、右駆動輪７R及び左駆動輪７Lの回転情報を取得するステップ（S310）と、右駆動輪７R及び左駆動輪７Lを駆動するための駆動トルクを取得するステップ（S320）と、回転情報と、駆動トルクと、右駆動輪７R及び左駆動輪７Lの回転の運動方程式に基いて、現在移動している路面１７から右駆動輪７R及び左駆動輪７Lが受ける転がり抵抗トルクを算出するステップ（S350）と、を含む。以上の方法によれば、現在移動している路面１７から右駆動輪７R及び左駆動輪７Lが受ける転がり抵抗トルクを検出することができる。
【００９１】
◆転がり抵抗トルク検出方法は、現在移動している路面１７を撮像して画像情報を生成するステップ（S340）と、画像情報と転がり抵抗トルクを関連付けてサーバー５にアップロードするステップ（S360）と、を含む。以上の方法によれば、転がり抵抗トルクを他機と共有することができる。
【００９２】
なお、図５に示す、転がり抵抗トルクDB３２に記憶されている転がり抵抗トルクは、特定環境下（生活支援ロボット３が外部環境に接触しない条件下）で生活支援ロボット３を路面１７上で移動させ（S300）、右駆動輪７R及び左駆動輪７Lの回転情報を取得し（S310）、右駆動輪７R及び左駆動輪７Lを駆動するための駆動トルクを取得し（S320）、回転情報と、駆動トルクと、右駆動輪７R及び左駆動輪７Lの回転の運動方程式に基いて算出したものである（S350）。
【符号の説明】
【００９３】
１  生活支援システム
２  サービス環境
３  生活支援ロボット
４  ネットワーク
５  サーバー
６  移動体本体
７L  左駆動輪
７R  右駆動輪
９  制御部
１０  カメラ
１１  通信ドライバ
１２R  右モータ
１２L  左モータ
１３R  右エンコーダ
１３L  左エンコーダ
１５  カウンタ
１７  路面
２４  回転角度検出部
２５  駆動トルク取得部
２６  転がり抵抗トルク取得部
２７  接触外力トルク算出部
２８  接触外力算出部
２９  移動制御部
３２  転がり抵抗トルクDB
【図１】
2016170616.tif 000011
【図２】
2016170616.tif 000012
【図３】
2016170616.tif 000013
【図４】
2016170616.tif 000014
【図５】
2016170616.tif 000015
【図６】
2016170616.tif 000016
【図７】
2016170616.tif 000017
【図８】
2016170616.tif 000018
【図９】
2016170616.tif 000019
【図１０】
2016170616.tif 000020