(57)【特許請求の範囲】
【請求項１】
２つの車輪を有し、当該２つの車輪が同一速度で回転する場合に並進方向に直進し、前記２つの車輪が異なる速度で回転する場合に旋回方向に移動する、２輪速度差方式の移動部と、
前記移動部に保持され、前記移動部とともに移動する移動体本体と、
前記移動体本体に加わる外力のベクトルを取得する外力情報取得部と、
前記移動体本体に加わった前記外力のベクトルの作用点を、前記移動体本体の重心位置から前記並進方向に所定距離だけオフセットした位置に仮想的に置き換える作用点置き換え部と、
前記置き換え後の作用点を用いて前記並進方向及び前記旋回方向のそれぞれにメカニカルインピーダンスを設定し、前記移動部の移動を制御する移動制御部と、を備える移動体装置。
【請求項２】
前記移動制御部は、前記メカニカルインピーダンスの慣性を、前記移動体本体と当該移動体本体に保持される重量物の合計質量に基づいて決定することを特徴とする請求項１に記載の移動体装置。
【請求項３】
前記移動体本体と、当該移動体本体の周辺に位置する物体との間の距離を計測する距離計測部を更に備え、
前記移動制御部は、前記メカニカルインピーダンスの粘性を、前記距離計測部により計測される前記物体との距離に基づいて決定することを特徴とする請求項１又は２に記載の移動体装置。
【請求項４】
前記移動体本体の位置情報を取得する位置情報取得部を更に備え、
前記移動制御部は、前記メカニカルインピーダンスの弾性を、前記位置情報取得部で取得される位置情報に基づいて決定することを特徴とする請求項１〜３のいずれか一項に記載の移動体装置。
【請求項５】
前記移動制御部は、前記位置情報取得部で取得される位置情報から、前記移動体本体が位置する空間の広狭情報を取得し、当該広狭情報に基づいて前記メカニカルインピーダンスの弾性を決定することを特徴とする請求項４に記載の移動体装置。
【請求項６】
前記移動制御部は、
前記移動体本体に加わる外力が、メカニカルインピーダンスの弾性とロボットの位置との積よりも大きい状態から、小さい状態に変化したときに、
前記移動体本体に外力が加わる以前において前記移動体本体が位置していた初期位置まで前記移動体本体を戻すように、前記移動部を制御することを特徴とする請求項１〜５のいずれか一項に記載の移動体装置。
【請求項７】
前記移動制御部は、前記初期位置と、前記移動体本体の現在位置とを結ぶ直線又は円弧を目標軌道として前記移動部の移動を制御することを特徴とする請求項６に記載の移動体装置。
【請求項８】
前記移動制御部は、前記現在位置と、前記現在位置における前記移動部の２つの車輪の向きと、に応じてメカニカルインピーダンスの弾性を決定することを特徴とする請求項７に記載の移動体装置。
【請求項９】
２つの車輪を有し、当該２つの車輪が同一速度で回転する場合に並進方向に直進し、前記２つの車輪が異なる速度で回転する場合に旋回方向に移動する、２輪速度差方式の移動体装置の移動制御プログラムであって、
コンピュータに、
前記移動体装置に加わる外力のベクトルを取得する工程と、
前記移動体本体に加わった前記外力のベクトルの作用点を、前記移動体本体の重心位置から前記並進方向に所定距離だけオフセットした位置に仮想的に置き換える工程と、
前記置き換え後の作用点を用いて前記並進方向及び前記旋回方向のそれぞれにメカニカルインピーダンスを設定し、前記移動部の移動を制御する工程と、を実行させることを特徴とする移動制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、移動体装置及び移動制御プログラムに関する。
【背景技術】
【０００２】
近年、人が存在する環境下で動作して、人と共棲する自走型サービスロボットが開発されてきている。このようなロボットは、例えば、人に代わって荷物を運んだり、人を所定の場所に案内したりする機能を有している。しかるに、人が存在する環境下では、ロボットが人の通行を妨げるおそれがある。このような場合、人は、自己の進路上からロボットを移動させるために、ロボットを手で押すなどの動作を行うのが自然かつ一般的である。
【０００３】
上記動作に応じてロボットを移動させるためには、例えば、ロボットの走行車輪の駆動用モータをサーボオフして、走行車輪が自由に回転できるようにすることが考えられる。この場合、人が走行車輪用モータをサーボオフしなければならず、またロボットがスロープ上にある場合は重力方向に転がる危険性もあり、望ましい方法ではない。これに対し、最近では、人がロボットを手で押したときの力から人の意図を検知して、駆動用モータを制御し、人の意図通りに動作する技術が提案されている。このような技術は「パワーアシスト」として分類される技術である。
【０００４】
特許文献１、２には、周囲の障害物との接触を回避しながら又は障害物と安全に接触しながら移動することを目的とした移動体（移動ロボット）に関する技術が開示されている。また、特許文献３、４には、ロボットアームの制御においてインピーダンス制御を実行する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２５９８９号公報
【特許文献２】特開平５−２９７９３７号公報
【特許文献３】特開２００４−２２３６６３号公報
【特許文献４】特許第３０９９０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ロボットの駆動方法の一つとして、製造が容易であるとともに、制御のための計算が容易で、かつ旋回半径の設定の自由度が高い、２輪速度差方式の駆動方法がある。この２輪速度差方式の駆動方法では、２つの車輪を同一速度で回転することでロボットを並進方向に直進移動させることができるとともに、２つの車輪を異なる速度で回転することでロボットを旋回方向に移動させることができる。
【０００７】
この種の駆動方法を採用したロボットに前述のパワーアシストを採用した場合には、以下の方法が一般的に採用される。すなわち、まず、人がロボットを押したときの外力の方向と大きさを検出する。そして、当該検出結果から算出される並進方向の力（Ｆｘ）と旋回方向（φ＝ｔａｎ−１（Ｆｙ／Ｆｘ））に、所定のゲイン（Ｋｖ、Ｋω）を積算し、これらを並進方向の速度の目標値ｖ（＝Ｋｖ・Ｆｘ）及び旋回方向の速度の目標値ω（＝Ｋω・φ）とする。なお、Ｆｙは、車輪の回転軸方向の力の大きさを意味する。
【０００８】
ここで、ゲインは任意の定数であり、その初期値は暫定的に与えられる。したがって、ロボットの開発者や製造者等は、ロボットの出荷前に試験やシミュレーションを繰り返すことで、ゲインを最適値に設定する必要がある。また、出荷後等においては、基本的にはゲインの調整はできないため、設置環境など、状況に応じたロボットの制御が行えないおそれがある。
【０００９】
なお、特許文献３、４のようなロボットアームのインピーダンス制御を、２輪速度差方式の駆動方法を採用するロボットにそのまま転用するのは困難である。ロボットアームとロボットとの間には、装置構成の差異は勿論、制御の目的の差異や、制御の円滑な運用を妨げる要因の差異、制御において考慮すべき事項の差異などが多々存在しているからである。
【００１０】
そこで本件は上記の課題に鑑みてなされたものであり、状況に応じた適切な移動が可能な移動体装置及び移動制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本明細書に記載の移動体装置は、２つの車輪を有し、当該２つの車輪が同一速度で回転する場合に並進方向に直進し、前記２つの車輪が異なる速度で回転する場合に旋回方向に移動する、２輪速度差方式の移動部と、前記移動部に保持され、前記移動部とともに移動する移動体本体と、前記移動体本体に加わる外力のベクトルを取得する外力情報取得部と、前記移動体本体に加わった前記外力のベクトルの作用点を、前記移動体本体の重心位置から前記並進方向に所定距離だけオフセットした位置に仮想的に置き換える作用点置き換え部と、前記置き換え後の作用点を用いて前記並進方向及び前記旋回方向のそれぞれにメカニカルインピーダンスを設定し、前記移動部の移動を制御する移動制御部と、を備えている。
【００１２】
本明細書に記載の移動制御プログラムは、２つの車輪を有し、当該２つの車輪が同一速度で回転する場合に並進方向に直進し、前記２つの車輪が異なる速度で回転する場合に旋回方向に移動する、２輪速度差方式の移動体装置の移動制御プログラムであって、コンピュータに、前記移動体装置に加わる外力のベクトルを取得する工程と、前記移動体本体に加わった前記外力のベクトルの作用点を、前記移動体本体の重心位置から前記並進方向に所定距離だけオフセットした位置に仮想的に置き換える工程と、前記置き換え後の作用点を用いて前記並進方向及び前記旋回方向のそれぞれにメカニカルインピーダンスを設定し、前記移動部の移動を制御する工程と、を実行させる移動制御プログラムである。
【発明の効果】
【００１３】
本明細書に記載の移動体装置及び移動制御プログラムは、状況に応じた適切な移動ができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係るロボットを概略的に示す図である。
【図２】図２（ａ）は、ロボットの概略構成を模式的に示す図であり、図２（ｂ）は、土台部を模式的に示す平面図である。
【図３】一実施形態のロボットの制御系の構成を示すブロック図である。
【図４】制御部５０のハードウェア構成図である。
【図５】制御部５０の機能ブロック図である。
【図６】ロボットの移動制御方法を示すフローチャートである。
【図７】図７（ａ）は、外力が加えられた際の作用点を示す図であり、図７（ｂ）は、図７（ａ）の作用点を仮想的に置き換えた状態を示す図である。
【図８】メカニカルインピーダンスモデルを説明するための図（その１）である。
【図９】メカニカルインピーダンスモデルを説明するための図（その２）である。
【図１０】図１０（ａ）は、画像データＤＢを示す図であり、図１０（ｂ）は、弾性テーブルを示す図である。
【図１１】図１１（ａ）は、図６のステップＳ２８のパターンＡについて示す図であり、図１１（ｂ）は、図６のステップＳ２８のパターンＢについて示す図である。
【図１２】図１２（ａ）〜図１２（ｃ）は、実験結果について説明するための図（その１）である。
【図１３】図１３（ａ）〜図１３（ｃ）は、実験結果について説明するための図（その２）である。
【図１４】図１４（ａ）〜図１４（ｃ）は、実験結果について説明するための図（その３）である。
【図１５】図１５（ａ）〜図１５（ｃ）は、実験結果について説明するための図（その４）である。
【発明を実施するための形態】
【００１５】
以下、移動体装置の一実施形態について、図１〜図１５に基づいて詳細に説明する。図１には、移動体装置としてのロボット１００が概略的に示されている。このロボット１００は、例えば、ショッピングセンターなどにおいて、買物客に対して情報を提供したり、店舗の案内をしたりするロボットである。ロボット１００は、基本的には、予め定められたルートに沿って移動するものとする。ただし、人がロボット１００を押して外力を作用させた場合には、ロボット１００はその方向に移動する。そして、ロボット１００に対する外力の作用が終了すると、ロボット１００は、押される前の位置（初期位置）まで戻る。人がロボット１００を押す場合とは、例えば、ロボット１００が人の通行を妨げているため、退いてほしい場合や、ロボット１００に荷物を載せて搬送したい場合などである。
【００１６】
ロボット１００は、図１に示すように、移動体本体としての上体部１０と、上体部１０を下側から支持し、床面や路面上を移動する移動部４０と、を備える。上体部１０は、図２（ａ）に模式的に示すように、支持台２０と、支持台２０により支持された外装体（ボディ）１０ａと、を有する。
【００１７】
外装体１０ａは、実際には、図１に示すような複雑な形状を有しているが、図２（ａ）では簡略化して示している。外装体１０ａの一部には、荷物などの重量物を載置するための荷台１０ｃ（図１参照）が設けられている。また、外装体１０ａには、図３に示す表示部３２、音声出力部３４、操作部３６、及びカメラ３８が設けられている。
【００１８】
表示部３２は、例えば、案内情報や警告情報などを表示する液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）や有機ＥＬディスプレイ等を含む。また、音声出力部３４は、案内音声や警告音などを発するスピーカを含む。また、操作部３６は、ロボット１００を操作するためのボタン、キーボード、ジョイスティック、タッチパネル等を含む。カメラ３８は、ロボット１００の周辺を撮影する。カメラ３８で撮影された映像は、ロボット１００自身の位置を検出するために用いることができる。
【００１９】
支持台２０は、図２（ａ）に示すように、概略テーブル状の形状を有している。この支持台２０は、具体的には、支持板２０ａと、支持板２０ａを移動部４０の土台部３０上で支持する複数（ここでは３本）の脚部２０ｂとを有する。３本の脚部２０ｂそれぞれと、土台部３０との間には、力覚センサ２２が設けられている。力覚センサ２２は、ロボット１００の高さに比べて十分に低く、接地面に近い高さに設置されており、外装体１０ａに矢印Ｆで示す外力が加わったときに３本の脚部２０ｂそれぞれにかかる力の大きさを検出する。力覚センサ２２の検出結果からは、ロボットの重力と慣性力の合力が接地面と交わる点、すなわちＺＭＰ（Zero Moment Point）の位置を近似的に検出することができる。本実施形態では、この近似的なＺＭＰをＺＭＰとして扱う。なお、力覚センサ２２としては、ロードセル、ＦＳＲ（Force Sensing Resistors）などを用いることができる。
【００２０】
移動部４０は、図２（ａ）に示すように、土台部３０と、土台部３０に設けられた、２つの車輪としての走行車輪１２ａ、１２ｂ及び２つのキャスタ（従動輪）１６ａ、１６ｂと、を有している。土台部３０の周囲は、カバー４０ａにより覆われている。
【００２１】
図２（ｂ）には、土台部３０の平面図が模式的に示されている。この図２（ｂ）に示すように、走行車輪１２ａ、１２ｂは、ロボット１００の走行面（ｘｙ面）内におけるｘ軸方向（以下、並進方向と呼ぶ）に垂直な方向（ｙ軸方向）に、所定間隔をあけて配置されている。これらのうち、走行車輪１２ａは、ｙ軸方向の回転軸（車軸）を有するモータ２４ａにより回転駆動され、走行車輪１２ｂは、ｙ軸方向の回転軸（車軸）を有するモータ２４ｂにより回転駆動される。本実施形態では、２つの走行車輪１２ａ、１２ｂが同一速度で同一方向に回転する場合に並進方向であるｘ軸方向に直進する。また、２つの走行車輪１２ａ、１２ｂが異なる速度で回転する場合に旋回方向に移動する。また、２つの走行車輪１２ａ、１２ｂが逆方向に同一速度で回転する場合には、ロボット１００は、その場で旋回する。すなわち、本実施形態では、移動部４０として、２輪速度差方式が採用されている。キャスタ１６ａ、１６ｂは、ロボット１００が転倒しないように姿勢を安定化させるためのものである。
【００２２】
土台部３０の中央部近傍には、加速度センサ１８及びジャイロセンサ４２が設けられている。加速度センサ１８は、ロボット１００の直交３軸方向（ｘ軸、ｙ軸方向、及びｘ、ｙ軸に直交するｚ軸方向）の加速度を検知する。ジャイロセンサ４２は、直交３軸回り（ｘ、ｙ、ｚ軸回り）の角速度を検知する。
【００２３】
また、移動部４０のカバー４０ａの一部には、距離計測部としての測距センサ４４（図３参照）が設けられている。この測距センサ４４としては、例えば、レーザレンジファインダ（ＬＲＦ：laser range finder）を用いることができる。
【００２４】
図３には、本実施形態のロボット１００の制御系の構成がブロック図にて示されている。この図３に示すように、ロボット１００の制御系は、前述した各構成と、制御部５０と、モータ２４ａ、２４ｂを制御するモータ制御部６０と、を含んでいる。制御部５０は、ロボット１００の駆動を統括制御する。モータ制御部６０は、制御部５０の指示の下、モータ２４ａ、２４ｂを回転駆動する。
【００２５】
図４には、制御部５０のハードウェア構成図が示されている。図４に示すように、制御部５０は、ＣＰＵ（Central Processing Unit）９０、ＲＯＭ（Read Only Memory）９１、ＲＡＭ（Random Access Memory）９２、記憶部（ここではＨＤＤ（Hard Disk Drive）とする）９３、入出力部９４、及びこれら各部を接続するバス９５等を備えている。制御部５０では、ＣＰＵ９０がＲＡＭ９２又はＨＤＤ９３に格納された移動制御プログラムを実行することで、図５に示す各部の機能を実現する。また、ＨＤＤ９３は、制御部５０内で得られたデータなどを記憶する。入出力部９４は、ＣＰＵ９０と、上体部１０が有する各部、力覚センサ２２、移動部４０内のセンサ類との間で、制御信号や情報のやりとりを行う入出力ポートである。
【００２６】
図５には、制御部５０の機能ブロック図が示されている。この図５に示すように、制御部５０は、外力情報取得部５２と、作用点置き換え部５４と、移動制御部５６と、データ格納部５８と、を有する。外力情報取得部５２は、力覚センサ２２における検出結果から、外力（Ｆ）の情報、すなわち外力ベクトルＦ（外力（Ｆ）の大きさと方向）を取得する。作用点置き換え部５４は、上体部１０に加わった外力ベクトルＦの作用点を、上体部１０の重心位置から並進方向に所定距離だけオフセットした位置に仮想的に置き換える。移動制御部５６は、作用点置き換え部５４において置き換えられた作用点を用いて移動部４０の移動を制御する。データ格納部５８は、図４のＨＤＤ９３により実現されており、地図データＤＢ６３、弾性テーブル６５、及び画像データＤＢ６７を有する。各ＤＢ、テーブルの詳細については、後述する。
【００２７】
次に、本実施形態におけるロボット１００の移動制御方法について、図６のフローチャートに沿って、その他図面を適宜参照しつつ説明する。なお、この図６の処理は、ロボット１００が予め定められている動作を開始した時点から開始される。
【００２８】
図６のフローチャートでは、まず、ステップＳ１０において、外力情報取得部５２が、力覚センサ２２による検出結果に基づいて、ＺＭＰ（点ｐ）の位置を測定する。次いで、ステップＳ１２では、外力情報取得部５２が、ＺＭＰ安定条件を満たしているか否かを判断する。具体的には、点ｐがｐLMTの範囲内にあるか否かを判断する。ここで、範囲ｐLMTは、ロボット１００が傾倒しない状態を維持している間（時間）において、ＺＭＰが位置することができる範囲である。すなわち、ＺＭＰ（点ｐ）がｐLMTの範囲内に存在している場合には、ロボット１００は傾倒せず、ＺＭＰ（点ｐ）がｐLMTの範囲外に存在している場合には、ロボット１００が傾倒することを意味する。
【００２９】
このステップＳ１２の判断が否定された場合には、ステップＳ３２に移行して、外力情報取得部５２は、ロボット１００の状態を転倒と判断する。そして、図６の全処理を終了して、ロボット１００の動作を停止する。これにより、ロボット１００が転倒した場合に、周辺の物体が走行車輪１２ａ、１２ｂに巻き込まれる事態等の発生を防止することができる。
【００３０】
一方、ステップＳ１２の判断が肯定された場合には、ステップＳ１４に移行する。ステップＳ１４では、外力情報取得部５２は、外力ベクトルＦを推定し、取得する。この場合、外力情報取得部５２は、ＺＭＰ（点ｐ）の位置に基づいて、外力ベクトルＦを推定する。具体的には、ＺＭＰの原点、すなわち、外力が加わっていないときのＺＭＰの位置と、ステップＳ１０で測定されたＺＭＰ（点ｐ）の位置との差異に基づいて、外力ベクトルＦ（＝（Ｆｘ，Ｆｙ））を推定する。この場合、点ｐの原点からの移動方向が、外力ベクトルＦの方向に相当し、点ｐの原点からの距離が、外力ベクトルＦの大きさに相当する。
【００３１】
次いで、ステップＳ１６では、作用点置き換え部５４が、仮想作用点モデルに置き換え、その後に、トルクｒＦyを得る。具体的には、作用点置き換え部５４は、図７（ａ）に示すように、作用点Ｊに外力（Ｆ）が加えられた場合に、図７（ｂ）に示すように、外力ベクトルＦの作用点を、上体部１０の重心位置から並進方向に所定距離だけオフセットした位置、すなわち、並進方向先端の点Ｑに仮想的に置き換える。これにより、ロボット１００が外力（Ｆ）で押された状態を、外力（Ｆ）でロボット１００を引っ張るモデルに置き換えることができる。そして、作用点置き換え部５４は、上体部１０の重心と点Ｑとの間のｘ軸方向に関する距離（ｒ）を用いて、トルク（回転モーメントｒＦy）を得る。なお、距離ｒは、一般的に、トルクを発生させるアームの長さ、とも呼ばれる。なお、図７（ｂ）のように、外力（Ｆ）で引っ張るモデルに置き換えたのは、移動部４０が２輪速度差方式を採用しているため、上体部１０の重心が押されていることを前提にロボット１００を制御しようとすると、走行車輪１２ａ，１２ｂの向きの関係上、トルクをロボット１００に作用させられない場合があるからである。
【００３２】
ここで、本実施形態のステップＳ１８以降において行われる、メカニカルインピーダンス制御について、詳細に説明する。
【００３３】
メカニカルインピーダンス制御とは、ロボット１００に外力を加えた場合に生じる機械的なインピーダンス（慣性、粘性、弾性）を、目的に沿った値に設定して制御する手法である。より具体的には、図８に示すように、外力（Ｆ）でロボット１００を引っ張ったときに、あたかも、質量Ｍの物体が初期位置Ｏと現在位置Ｏ’を繋ぐ粘性Ｂ、弾性Ｋのゴムで引っ張られているかのような振る舞いを、ロボット１００に能動的にさせるものである。なお、本実施形態では、図８に示す並進方向のみならず、旋回方向に対してもメカニカルインピーダンス（慣性モーメント、トルク粘性、トルクバネ）を設定する。このように、旋回方向に対してもメカニカルインピーダンスを設定できるのは、前述のように、ステップＳ１６において外力（Ｆ）で引っ張るモデルに置き換えたからである。
【００３４】
メカニカルインピーダンスモデルとしては、次式（１）が与えられる。なお、Ｍは慣性行列、Ｂは粘性行列、Ｋは弾性行列である。
【００３５】
【数１】
0005454333.tif 000002
【００３６】
このメカニカルインピーダンスモデルについて、図９のような力学モデルを考える。図９では、ロボット１００重心が初期位置Ｏから、人に押されて現在位置Ｏ’まで移動した状態を示している。角度αは、線分ＯＯ’とｘ軸との間の角度、角度θは、ロボット１００の並進方向（ｘ’軸方向）と、初期位置における並進方向（ここではｘ軸方向とする）との間の角度を意味する。
【００３７】
図９のモデルでは、並進方向と旋回方向に関するメカニカルインピーダンスモデルとして、次式（２）が与えられる。
ＭＸ”＋ＢＸ’＋ＫＸ＝ＣＦ’        …（２）
【００３８】
ここで、上式（２）の位置Ｘ、慣性行列Ｍ、粘性行列Ｂ、弾性行列Ｋ、成分行列Ｃ、外力ベクトルＦ’、速度ベクトルＸ’は、次式（３）〜（９）にて与えられる。
【００３９】
【数２】
0005454333.tif 000003
【００４０】
【数３】
0005454333.tif 000004
【００４１】
なお、ｍは慣性、Ｉは慣性モーメントを意味する。
【００４２】
【数４】
0005454333.tif 000005
【００４３】
なお、ｂはｘｙ方向の粘性、ｂθは回転方向の粘性（トルク粘性）を意味する。
【００４４】
【数５】
0005454333.tif 000006
【００４５】
なお、ｋはｘｙ方向の弾性、ｋθは回転方向の弾性（トルクバネ）を意味する。
【００４６】
【数６】
0005454333.tif 000007
【００４７】
【数７】
0005454333.tif 000008
【００４８】
【数８】
0005454333.tif 000009
【００４９】
なお、上式（９）に含まれるｌは、次式（１０）の近似式にて表すことができる。
ｌ≒ｘ／ｃｏｓθ≒ｙ／ｓｉｎθ        …（１０）
【００５０】
上式（２）〜（１０）を用いると、メカニカルインピーダンスモデルによる運動方程式は、次式（１１）、（１２）にて表すことができる。
ｍｖ’＋ｂｖ＋ｋｌ＝Ｆx'          …（１１）
Ｉω’＋ｂθω＋ｋθθ＝ｒＦy'      …（１２）
【００５１】
ここで、上式（１１）、（１２）において、制御周期、すなわちロボット１００の目標速度を算出する時間間隔をΔｔとし、今回の目標速度をｖn+1、ωn+1、前回の目標速度をｖn、ωnと定義する。この場合、ｖ’及びω’は次式（１３）、（１４）にて表すことができる。
【００５２】
【数９】
0005454333.tif 000010
【００５３】
したがって、メカニカルインピーダンスモデルによれば、上式（１１）〜（１４）を用いることで、今回の目標速度ｖn+1、ωn+1を、次式（１５）、（１６）から求めることが可能である。
【００５４】
【数１０】
0005454333.tif 000011
【００５５】
図６のフローチャートに戻り、ステップＳ１８では、移動制御部５６が、上体部１０及び上体部１０に載置されている重量物（荷物）の質量を計測し、慣性行列Ｍの各成分を設定する。具体的には、移動制御部５６は、外力（Ｆ）が加わる前の力覚センサ２２の検出結果に基づいて、質量を計測する。そして、慣性行列Ｍとして、上体部１０と荷物の合計質量を設定する。すなわち、移動制御部５６は、荷物が重いほど、慣性行列Ｍの各成分を大きく設定することになる。
【００５６】
次いで、ステップＳ２０では、移動制御部５６が、周辺物体までの距離Ｌを計測し、粘性成分ｂを設定する。具体的には、移動制御部５６は、測距センサ４４の検出結果に基づいて距離Ｌを計測し、粘性ｂと距離Ｌとが反比例の関係を示すように、粘性ｂを式（ｂ＝ｚ／Ｌ）に基づいて設定する。なお、ｚは定数である。
【００５７】
すなわち、移動制御部５６は、周辺物体までの距離Ｌが近いほど、粘性ｂを大きく設定することになる。なお、トルク粘性ｂθは、距離Ｌにかかわらず、予め設定しておいた値が維持される。
【００５８】
次いで、ステップＳ２２では、移動制御部５６が、ロボット１００の存在場所を特定し、弾性行列Ｋの各成分を設定する。具体的には、移動制御部５６は、ロボット１００の位置を、位置情報取得部としての、ジャイロセンサ４２、加速度センサ１８及び／又はカメラ３８を用いて特定する。すなわち、移動制御部５６は、加速度センサ１８で検出されるロボット１００の加速度と、ジャイロセンサ４２にて検出されるロボット１００の進行方向と、からロボット１００の基準位置からの移動軌跡を算出する。そして、その移動軌跡とデータ格納部５８内の地図データＤＢ６３に格納されている地図データとのマップマッチングにより、ロボット１００の存在場所を特定する。ここで、地図データＤＢ６３には、例えば、ロボット１００が設置される建造物（ショッピングセンターなど）の地図データが格納されているものとする。
【００５９】
なお、上記に代えて又はこれとともに、カメラ３８で撮影された映像と、データ格納部５８内の画像データＤＢ６７に格納されている画像データとのマッチングを行うことで、ロボット１００の存在場所の特定を行うこととしても良い。なお、画像データＤＢ６７には、図１０（ａ）に示すように、予め撮影された画像と、その画像を撮影した場所とが格納されている。
【００６０】
移動制御部５６は、上記のようにして特定されたロボット１００の存在場所と、データ格納部５８に格納されている弾性テーブル（図１０（ｂ）参照）を用いて、弾性行列Ｋを設定する。この場合、廊下などの狭い空間で設定されるＫ（例えばＫ1）は、ロビーなどの広い空間で設定されるＫ（例えばＫ2）よりも、各成分が大きい値となっている。
【００６１】
次いで、ステップＳ２４では、移動制御部５６が、外力（Ｆ）の大きさがＫ×Ｘ以上であるか否かを判断する。なお、ここでの判断が肯定される場合とは、人がロボット１００を押そうとしていると判断できるような場合である。ここでの判断が肯定された場合には、ステップＳ２６に移行する。
【００６２】
ステップＳ２６では、移動制御部５６が、メカニカルインピーダンスモデルによる運動方程式を用いて並進速度及び回転角速度を算出する。具体的には、移動制御部５６は、上式（１５）、（１６）から、目標並進速度ｖn+1、及び目標回転角速度ωn+1を算出する。この場合、ステップＳ１８、Ｓ２０、Ｓ２２においてメカニカルインピーダンスモデルにおけるＭ、Ｂ、Ｋが設定されているので、状況に応じた適切な目標速度ｖn+1、ωn+1の算出が可能である。
【００６３】
その後、ステップＳ３０に移行すると、移動制御部５６が、モータ制御部６０を介して、モータ２４ａ、２４ｂを駆動制御して、走行車輪１２ａ、１２ｂを回転駆動する。その後は、ステップＳ１０に戻る。そして、ステップＳ１２及びステップＳ２４が肯定される間は、ステップＳ１０〜Ｓ３０までの処理を、前述した制御周期Δｔにて繰り返す。
【００６４】
一方、ステップＳ２４の判断が否定された場合、すなわち、人がロボット１００を押そうとしていないと判断される場合には、ステップＳ２８に移行する。ステップＳ２８では、移動制御部５６が、初期位置復帰の運動方程式を用いて、並進速度及び回転角速度を算出する。
【００６５】
初期位置復帰の方法としては、具体的には、例えば、以下の２つの方法のいずれかを採用することができる。なお、以下においては、図１１（ａ）、図１１（ｂ）に示すように、初期位置Ｏから現在位置Ｏ’までロボット１００を人が押し、現在位置Ｏ’において人がロボット１００から手を離したときの、初期位置復帰方法について説明する。
【００６６】
（初期位置復帰パターンＡ）
パターンＡでは、移動制御部５６は、図１１（ａ）に示すように、ロボット１００が現在位置Ｏ’から円弧状の軌跡を描きながら、初期位置Ｏに復帰するように、ロボット１００の移動を制御する。ここで、現在位置Ｏ’と初期位置Ｏを通る円弧の現在位置Ｏ’における接線と、ｘ軸とがなす角の角度を２αとすると、現在位置における並進方向（ｘ’軸方向）と接線との間の角度は、θ-２αとなる。したがって、図１１（ａ）のように円弧状の軌跡を描きながら初期位置Ｏに復帰するためには、メカニカルインピーダンスモデルの運動方程式として、次式（１７）、（１８）を用いることとする。
ｍｖ’＋ｂｖ＋ｋｌ＝Ｆx'      …（１７）
Ｉω’＋ｂθω＋ｋθ（θ−２α）＝ｒＦy'      …（１８）
【００６７】
なお、上式（１７）、（１８）では、２αは現在位置により変化し、θは、２つの走行車輪１２ａ、１２ｂの方向を意味するので、本パターンＡでは、現在位置と、現在位置における移動部４０の２つの走行車輪１２ａ、１２ｂの向きと、に基づいてメカニカルインピーダンスの弾性を決定しているといえる。
【００６８】
その後、ステップＳ２８に移行すると、移動制御部５６は、上式（１７）、（１８）と、前述した式（１３）、（１４）とを用いて、目標並進速度ｖn+1、及び目標回転角速度ωn+1を算出する。そして、ステップＳ３０では、移動制御部５６は、モータ制御部６０を介して、ロボット１００が目標並進速度ｖn+1及び目標回転角速度ωn+1となるように、モータ２４ａ、２４ｂの駆動を制御する。これにより、図１１（ａ）に示すような円弧状の軌跡に沿って、ロボット１００が初期位置Ｏに戻ることになる。
【００６９】
（初期位置復帰パターンＢ）
パターンＢでは、移動制御部５６は、図１１（ｂ）に示すように、ロボット１００が現在位置Ｏ’から直線状の軌跡を描きながら、初期位置Ｏに復帰するように、ロボット１００の移動を制御する。ここで、現在位置Ｏ’と初期位置Ｏとを結ぶ線分と、ｘ軸とがなす角の角度をαとする。この場合、メカニカルインピーダンスモデルの運動方程式として、次式（１９）、（２０）を用いることとする。
ｍｖ’＋ｂｖ＋ｋｌ＝Ｆx'      …（１９）
Ｉω’＋ｂθω＋ｋθ（θ−α）＝ｒＦy'      …（２０）
【００７０】
なお、本パターンＢでも、式（１９）、（２０）において、パターンＡと同様、θとαとを考慮している。したがって、本パターンＢでも、現在位置と、現在位置における移動部の２つの走行車輪１２ａ、１２ｂの向きと、に応じてメカニカルインピーダンスの弾性を決定しているといえる。
【００７１】
その後、ステップＳ２８に移行すると、移動制御部５６は、上式（１９）、（２０）と、前述した式（１３）、（１４）とを用いて、目標並進速度ｖn+1、及び目標回転角速度ωn+1を算出する。そして、ステップＳ３０では、移動制御部５６は、モータ制御部６０を介して、ロボット１００が目標並進速度ｖn+1及び目標回転角速度ωn+1となるように、モータ２４ａ、２４ｂの駆動を制御する。これにより、図１１（ｂ）に示すような直線状の軌跡に沿って、ロボット１００が初期位置Ｏに戻ることになる。
【００７２】
ただし、パターンＢの場合、ロボット１００が初期位置Ｏに復帰した直後は、ロボット１００の並進方向がｘ軸から角度αだけ傾いた状態である。したがって、ロボット１００は、初期の状態に復帰するために、初期位置Ｏにおいて角度−αだけ回転する必要がある。具体的には、移動制御部５６は、速度ｖが式ｖ＝０を満たすときには、次式（２１）を用いることとする。
Ｉω’＋ｂθω＋ｋθθ＝ｒＦy'      …（２１）
これにより、ロボット１００は、位置及び向きのそれぞれが、初期の状態に戻ることになる。
【００７３】
次に、ステップＳ２８において初期位置復帰の運動方程式（パターンＡ、Ｂ）を用いたことによる作用効果について、実際に行った実験結果に基づいて説明する。なお、実験においては、距離（アームの長さ）ｒを０．３［ｍ］、慣性行列Ｍの成分ｍを、上体部１０の質量（２０［ｋｇ］）と荷物の質量（１０［ｋｇ］）の合計質量（３０［ｋｇ］）、慣性モーメントＩを、半径ｒの円柱の慣性二次モーメントｍ・ｄ2／２＝１．３５［ｋｇ・ｍ2］とした。また、一般的に人がドアやキャスタ付き台車を押す力がおよそ３０［Ｎ］であり、ロボット１００を退かすためには１ｍ程度移動させることが想定されるので、弾性行列Ｋの成分ｋは３０［Ｎ／ｍ］とした。更に、トルクバネｋθは、３０［Ｎ］でπ／２だけ回転することを想定して、ｋθ＝９／π［Ｎｍ／ｒａｄ］とした。また、粘性行列Ｂの成分ｂ及びｂθは、系が発振しない条件として、ｂ＞２・（ｍｋ）1/2、ｂθ＞２・（Ｉｋθ）1/2とした。
【００７４】
まず、図１２（ａ）に示すように、ロボット１００に対してｘ軸方向（並進方向）の外力（Ｆ）を与えてロボット１００を移動させた後に、ロボット１００が初期位置に戻る場合について説明する。実験においては、(i)ステップＳ２６を経て初期位置に戻る場合、(ii)パターンＡで初期位置に戻る場合、及び(iii)パターンＢで初期位置に戻る場合を検討した。図１３（ａ）〜図１３（ｃ）には、(i)〜(iii)の各場合におけるロボット１００の移動軌跡が示されている。これら図１３（ａ）〜図１３（ｃ）に示すように、ｘ軸方向の外力をロボット１００に加えた場合には、ほぼ同一の軌跡をたどって、初期位置に戻ることが分かる。
【００７５】
次に、図１２（ｂ）に示すように、ロボット１００に対してｘ軸及びｙ軸に交差する方向から外力（Ｆ）を与えてロボット１００を移動させた後に、ロボット１００が初期位置に戻る場合について説明する。本実験においても、(i)ステップＳ２６を経て初期位置に戻る場合、(ii)パターンＡで初期位置に戻る場合、及び(iii)パターンＢで初期位置に戻る場合を検討した。図１４（ａ）〜図１４（ｃ）には、(i)〜(iii)の各場合におけるロボット１００の移動軌跡が示されている。
【００７６】
これらのうち、(i)の場合、図１４（ａ）に示すように、初期位置Ｏにロボット１００が戻ることができなかった。これは、(ａ)ロボット１００は、初期位置Ｏから現在位置Ｏ’まで移動する間は、最初に回転方向への動作を大きく行い、ロボット１００が外力（Ｆ）の方向に倣うにしたがって、直進動作に推移すること、及び（ｂ）現在位置Ｏ’において外力（Ｆ）の付与がなくなると、弾性により、逆向きの回転動作と直進動作とが同時に行われ、初期位置Ｏに戻る以前に回転動作が終わってしまうこと、に起因する。
【００７７】
これに対し、(ii)のようにパターンＡで初期位置に戻る場合には、図１４（ｂ）に示すように、ロボット１００は、初期位置Ｏに戻ることができる。なお、(ii)の場合には、外力（Ｆ）が加えられている間におけるロボット１００の移動軌跡よりも、初期位置に戻るときのロボット１００の移動軌跡のほうがやや膨らむ。
【００７８】
また、(iii)のようにパターンＢで初期位置に戻る場合にも、図１４（ｃ）に示すように、ロボット１００は、初期位置Ｏに戻ることができる。ただし、この場合には、初期位置Ｏに戻った後に、前述したように、その場で回転する必要がある。
【００７９】
次いで、図１２（ｃ）に示すように、ロボット１００に対して、ｙ軸方向から外力（Ｆ）を与えてロボット１００を移動させた後に、ロボット１００が初期位置に戻る場合について説明する。本実験においても、(i)ステップＳ２６を経て初期位置に戻る場合、(ii)パターンＡで初期位置に戻る場合、及び(iii)パターンＢで初期位置に戻る場合を検討した。図１５（ａ）〜図１５（ｃ）には、(i)〜(iii)の各場合におけるロボット１００の移動軌跡が示されている。
【００８０】
(i)の場合、図１５（ａ）に示すように、ロボット１００は、初期位置Ｏに戻ることができなかった。これは、図１４（ａ）と同様の理由からである。
【００８１】
一方、(ii)のように、パターンＡで初期位置に戻る場合には、図１５（ｂ）に示すように、ロボット１００は、初期位置Ｏに戻ることができる。なお、この場合には、外力（Ｆ）が加えられている間におけるロボット１００の移動軌跡に対し、初期位置に戻るときのロボット１００の移動軌跡は大きく膨らむ。
【００８２】
また、(iii)のように、パターンＢで初期位置に戻る場合にも、図１５（ｃ）に示すように、ロボット１００は、初期位置Ｏに戻ることができる。なお、この場合には、初期位置Ｏに戻った後に、ロボット１００は、前述したようにその場で回転する必要がある。
【００８３】
以上のような実験結果から、パターンＡ及びＢのいずれかを用いることで、ロボット１００は、初期位置に確実に戻ることができることが示された。
【００８４】
以上説明したように、本実施形態によると、ロボット１００が、２輪速度差方式の移動部４０と、移動部４０に保持され、移動部４０とともに移動する上体部１０と、上体部１０に加わる外力ベクトル（Ｆ）（外力の大きさ及び方向）を取得する外力情報取得部５２と、上体部１０に加わった外力ベクトルＦの作用点を、上体部１０の重心位置から並進方向に所定距離だけオフセットした位置に仮想的に置き換える作用点置き換え部５４と、置き換え後の作用点を用いて並進方向及び旋回方向のそれぞれにメカニカルインピーダンス（慣性、粘性、弾性）を設定し、上体部１０の移動を制御する移動制御部５６と、を備えている。これにより、移動部４０に２輪速度差方式を採用した場合でも、作用点を仮想的に置き換えることで、外力（Ｆ）にてロボット１００を引っ張るモデルに置き換えることができ、並進方向のみならず旋回方向にもメカニカルインピーダンスを設定することが可能となる。したがって、並進方向及び旋回方向それぞれのメカニカルインピーダンスを設定して移動制御を行うことで、ロボット１００を、状況に応じて適切に移動制御（パワーアシスト制御）することが可能となる。
【００８５】
また、本実施形態では、移動制御部５６は、メカニカルインピーダンスの慣性を、上体部１０とこれに保持される重量物（荷物）の合計質量に基づいて決定するので、重量物の質量に基づく適切な移動制御を行うことができる。この場合、本実施形態のように、重量物の質量が大きいほど、慣性を大きくするようにすれば、ロボット１００を押す人は、重量物の質量を感覚的に捉えることができるようになる。ただし、これに限らず、例えば、重量物の質量に関わらず、慣性を一定にすれば、ロボット１００を押す人は、重量物の質量の大小の影響をあまり受けずにロボット１００を押すことができるようになる。
【００８６】
また、本実施形態では、ロボット１００が、上体部１０と、上体部１０の周辺に位置する物体（周辺物体）との間の距離を計測する測距センサ４４を備えており、移動制御部５６は、メカニカルインピーダンスの粘性を、測距センサ４４により計測される周辺物体との距離に基づいて、決定している。これにより、周辺物体との距離に応じた適切な移動制御が可能となる。例えば、測距センサ４４により計測される距離が短いほど粘性を大きくすることで、周辺物体に近いほど速度を小さくし、周辺物体から遠いほど速度を大きくすることができる。これにより、周辺物体への衝突を抑制でき、かつ周辺物体に衝突した場合の影響を低減することができる。
【００８７】
また、本実施形態では、ロボット１００（上体部１０）の位置の情報を、ジャイロセンサ４２、加速度センサ１８、及び／又はカメラ３８を用いて取得し、移動制御部５６は、メカニカルインピーダンスの弾性を、位置の情報に基づいて決定する。これにより、ロボットの位置に応じた適切な移動制御を行うことができる。また、本実施形態では、ロビーなどの広い空間では、弾性を小さくし、廊下などの狭い空間では弾性を大きくするようにする。これにより、同じ大きさの外力を加えた場合でも、広い空間ではロボット１００が長い距離移動するようにし、狭い空間ではロボット１００が短い距離移動するようにすることができる。これにより、空間の広狭に応じたロボット１００の適切な移動制御を行うことができる。ただし、これに限らず、例えば、ロボット１００が傾斜面上に位置している場合に、移動制御部５６が、メカニカルインピーダンスの弾性を大きく設定するようにすることもできる。これにより、ロボット１００が傾斜面に沿って下ってしまうのを抑制することが可能となる。また、移動制御部５６は、ロボット１００の位置から移動距離を取得し、長距離移動するほど、メカニカルインピーダンスの弾性を大きく設定することとしてもよい。この場合、ロボット１００の長距離移動を抑制することができるので、ロボット１００が長距離移動することによる、自己位置喪失の可能性を低減することができる。
【００８８】
また、本実施形態では、移動制御部５６は、ロボット１００に加えられる外力が、メカニカルインピーダンスの弾性とロボット１００の位置との積よりも大きい状態から、小さい状態に変化したときに、外力が加えられる以前にロボット１００が位置していた初期位置Ｏまでロボット１００を戻すように移動部４０を制御する。したがって、ロボット１００を人が押そうとしていると判断できるときに、ロボット１００を初期位置に戻すことが可能となる。
【００８９】
また、本実施形態では、移動制御部５６は、初期位置Ｏと、現在位置Ｏ’とを結ぶ直線又は円弧を目標軌道として、移動部４０の制御を行う。したがって、前述したパターンＡ、パターンＢのように、初期位置Ｏに確実に戻ることができるようになる。
【００９０】
なお、上記実施形態では、ロボット１００の位置を、加速度センサ１８、ジャイロセンサ４２、及び／又はカメラ３８を用いて、計測することとしたが、これに限られるものではない。例えば、走行車輪１２ａ、１２ｂの回転量を検出するオドメトリを、車輪の回転軸（車軸）に設け、当該回転軸の回転量から求められるロボット１００の移動量から、ロボット１００の位置を計測するようにしても良い。オドメトリとしては、例えばロータリエンコーダやタコジェネレータなどのセンサを採用することができる。
【００９１】
また、上記実施形態のように、ロボット１００の位置として、ロビーや廊下など、大まかな位置が得られれば良い場合には、部屋や空間ごとに、ＲＦＩＤ（（Radio Frequency IDentification）などのセンサを設けておき、当該センサから、部屋や空間内に存在しているか否かの情報をロボット１００が受信するようにしても良い。また、ＲＦＩＤに代えて、ＧＰＳ（Global Positioning System）を用いてロボット１００の位置情報を計測するようにしても良い。
【００９２】
なお、上記実施形態では、弾性テーブル６５に、場所と弾性とが関連付けて格納されている場合について説明したが、これに限られるものではない。例えば、場所と当該場所の広狭情報（例えば面積）とを関連付けたテーブルと、広狭情報と弾性とを関連付けたテーブルとで、弾性テーブルを構成しても良い。
【００９３】
なお、上記実施形態では、外力（Ｆ）の作用点を仮想的に置き換える位置としてロボット１００の並進方向先端部（点Ｑ（図７（ｂ）参照））を採用した場合について説明した。しかしながら、これに限られるものではなく、重心位置から並進方向に所定距離だけオフセットした位置であれば、その他の位置を仮想的な作用点として採用することも可能である。
【００９４】
なお、上記制御部５０の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００９５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９７】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【符号の説明】
【００９８】
１０  上体部（移動体本体）
１２ａ、１２ｂ  走行車輪（車輪）
１８  加速度センサ（位置情報取得部の一部）
３８  カメラ（位置情報取得部の一部）
４０  移動部
４２  ジャイロセンサ（位置情報取得部の一部）
４４  測距センサ（距離計測部）
５２  外力情報取得部
５４  作用点置き換え部
５６  移動制御部
１００  ロボット（移動体装置）
【図１】
0005454333.tif 000012
【図２】
0005454333.tif 000013
【図３】
0005454333.tif 000014
【図４】
0005454333.tif 000015
【図５】
0005454333.tif 000016
【図６】
0005454333.tif 000017
【図７】
0005454333.tif 000018
【図８】
0005454333.tif 000019
【図９】
0005454333.tif 000020
【図１０】
0005454333.tif 000021
【図１１】
0005454333.tif 000022
【図１２】
0005454333.tif 000023
【図１３】
0005454333.tif 000024
【図１４】
0005454333.tif 000025
【図１５】
0005454333.tif 000026