説明

ロボット、及びその制御方法

【課題】被誘導者を適切に誘導することができるロボット、及びその制御方法を提供すること。
【解決手段】本発明の一態様にかかるロボットは、ハンドを有する腕部と、脚部と、胴体部と、を有し、人201を誘導して移動するロボットであって、所定のロボット位置におけるハンドの目標位置とハンドの測定位置との偏差に応じて、ロボットに対する被誘導者の追従状態を推定する追従状態推定部136と、追従状態の推定結果に応じて、ロボットの移動速度を調整する歩行調整部137と、歩行調整部137によって調整された移動速度に応じて前記ロボットを移動させるよう、脚部を駆動する駆動制御部138と、を備えたものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット、及びその制御方法に関し、特に詳しくは、被誘導者を誘導するロボット、及びその制御方法に関する。
【背景技術】
【0002】
脚式移動ロボットにおいて、人と手をつないで歩行する技術が開示されている(特許文献1)。特許文献1の移動ロボットでは、ハンドを介して人と接触したときに、人から作用する外力を検出し、その検出された外力によって歩容を生成している。また、外力の外乱分を吸収するようにコンプライアンス制御を行っている。さらに、人の身長に応じて、重力方向におけるハンド位置を決定している。そして、ロボットが人と手を繋いだ状態で、ロボットが歩行する。このようにすることで、ロボットが人を案内する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−185763号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、ヒューマノイドロボットの介護用途機能として、視覚障害者や高齢者の手を引いて、目的地まで誘導することができれば、好ましい。この場合、誘導される人の安全を考慮して、人の追従具合に応じて、制御する必要がある。例えば、人を誘導する場合、誘導方向に人を引っ張る必要がある。さらに、人に応じた、歩行速度が変わる場合もある。上記の特許文献1では、このような観点から制御を行う方法について何ら開示していないため、適切に誘導することができないという問題点がある。
【0005】
本発明は、上記の問題点に鑑みてなされたものであり、適切に誘導することができるロボット、及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様にかかるロボットは、ハンドを有する腕部と、脚部と、胴体部と、を有し、被誘導者を誘導して移動するロボットであって、移動始点から移動終点までの移動経路に応じて、歩容データを生成する歩容データ生成部と、前記歩容データに基づいて、所定のロボット位置における前記ハンドの目標位置を算出するハンド位置算出部と、前記所定のロボット位置における前記ハンドの前記目標位置と前記ハンドの測定位置との偏差に応じて、前記ロボットに対する前記被誘導者の追従状態を推定する追従状態推定部と、前記追従状態推定部の推定結果に応じて、ロボットの移動速度を調整する調整部と、調整部によって調整された移動速度で前記ロボットを移動させるよう、前記脚部を駆動する駆動制御部と、を備えたものである。
【0007】
本発明の第2の態様にかかるロボットは、上記のロボットであって、前記ハンドの前記目標位置と前記測定位置との偏差に応じて、前記脚部の歩幅を変更することで、ロボットの移動速度を変化させるものである。
【0008】
本発明の第3の態様にかかるロボットは、上記のロボットであって、前記歩幅を変更した後の足付き位置が、前記移動経路に沿って算出されているものである。
【0009】
本発明の第4の態様にかかるロボットは、上記のロボットであって、遊脚が基準歩幅で着地する時の仮想的な足付き位置を通る直線上に、前記歩幅を変更した後の足付き位置が決定されるものである。
【0010】
本発明の第5の態様にかかるロボットは、上記のロボットであって、前記歩幅が、前記偏差に応じて線形に変化することを特徴とするものである。
【0011】
本発明の第6の態様にかかるロボットは、上記のロボットであって、前記手先位置偏差がしきい値より小さい場合に、前記歩幅を変更した後の足付き位置が、支持脚の足付き位置と揃うように歩幅を調整するものである。
【0012】
本発明の第7の態様にかかるロボットは、上記のロボットであって、前記ハンド位置算出部が、前記移動経路に対する前記ハンドの目標位置の横方向変動量が、前記移動経路に対する前記胴体部位置の横方向変動量よりも小さくなるように、前記ハンドの目標位置を算出するものである。
【0013】
本発明の第8の態様にかかるロボットは、上記のロボットであって、前記ハンドに設けられたセンサ部からのセンサ信号と前記ハンドの目標位置とに応じて、前記ハンドの位置をインピーダンス制御するインピーダンス制御部と、をさらに備えるものである。
【0014】
本発明の第9の態様にかかるロボットは、上記のロボットであって、前記インピーダンス制御が、前記移動経路に沿った進行方向に前記被誘導者を引き、かつ、前記進行方向が前記進行方向と直交する方向よりも柔らかくなるようにインピーダンス制御することを特徴とするものである。
【0015】
本発明の第10の態様にかかるロボットは、上記のロボットであって、前記ハンドに設けられたセンサ部からのセンサ信号によって、前記誘導者とロボットとが非接触状態となっていることが検知された場合に、前記脚部による移動と停止するものである。
【0016】
本発明の第11の態様にかかるロボットは、上記のロボットであって、前記移動軌跡が、前記ロボットと前記被誘導者の幅の和を考慮して、決定されていることを特徴とするものである。
【0017】
本発明の第12の態様にかかるロボットの制御方法は、ハンドを有する腕部と、脚部と、胴体部と、を有し、被誘導者を誘導して移動するロボットの制御方法であって、移動始点から移動終点までの移動経路に応じて、歩容データを生成するステップと、前記歩容データに基づいて、所定のロボット位置における前記ハンドの目標位置を算出するステップと、前記所定のロボット位置における前記ハンドの前記目標位置と前記ハンドの測定位置との偏差に応じて、前記ロボットに対する前記被誘導者の追従状態を推定するステップと、前記追従状態の推定結果に応じて、ロボットの移動速度を調整するステップと、調整された前記移動速度で前記ロボットを移動させるよう、前記脚部を駆動するステップと、を備えたものである。
【0018】
本発明の第13の態様にかかるロボットの制御方法は、上記の制御方法であって、前記ハンドの前記目標位置と前記測定位置との偏差に応じて、前記脚部の歩幅を変更することで、ロボットの移動速度を変化させるものである。
【0019】
本発明の第14の態様にかかるロボットの制御方法は、上記の制御方法であって、前記歩幅を変更した後の足付き位置が、前記移動経路に沿って算出されているものである。
【0020】
本発明の第15の態様にかかるロボットの制御方法は、上記の制御方法であって、遊脚が基準歩幅で着地する時の仮想的な足付き位置を通る直線上に、前記歩幅を変更した後の足付き位置が決定されるものである。
【0021】
本発明の第16の態様にかかるロボットの制御方法は、上記の制御方法であって、前記歩幅が、前記偏差に応じて線形に変化することを特徴とするものである。
【0022】
本発明の第17の態様にかかるロボットの制御方法は、上記の制御方法であって、前記手先位置偏差がしきい値より小さい場合に、前記歩幅を変更した後の足付き位置が、支持脚の足付き位置と揃うように歩幅を調整するものである。
【0023】
本発明の第18の態様にかかるロボットの制御方法は、上記の制御方法であって、前記移動経路に対する前記ハンドの目標位置の横方向変動量が、前記移動経路に対する前記胴体部位置の横方向変動量よりも小さくなるように、前記ハンドの目標位置を算出するものである。
【0024】
本発明の第19の態様にかかるロボットの制御方法は、上記の制御方法であって、前記ハンドに設けられたセンサ部からのセンサ信号と前記ハンドの目標位置とに応じて、前記ハンドの位置をインピーダンス制御するものである。
【0025】
本発明の第20の態様にかかるロボットの制御方法は、上記の制御方法であって、前記インピーダンス制御が、前記移動経路に沿った進行方向に前記被誘導者を引き、かつ、前記進行方向が前記進行方向と直交する方向よりも柔らかくなるようにインピーダンス制御することを特徴とするものである。
【0026】
本発明の第21の態様にかかるロボットの制御方法は、上記の制御方法であって、前記ハンドに設けられたセンサ部からのセンサ信号によって、前記誘導者とロボットとが非接触状態となっていることが検知された場合に、前記脚部による移動と停止するものである。
【0027】
本発明の第22の態様にかかるロボットの制御方法は、上記の制御方法であって、前記移動軌跡が、前記ロボットと前記被誘導者の幅の和を考慮して、決定されていることを特徴とするものである。
【発明の効果】
【0028】
本発明によれば、適切に誘導することができるロボット、及びその制御方法を提供するこができる。
【図面の簡単な説明】
【0029】
【図1】本発明にかかるロボットの全体構成を模式的に示す図である。
【図2】本発明にかかるロボットの制御部の構成を示すブロック図である。
【図3】本発明にかかるロボットの制御方法を示すフローチャートである。
【図4】本発明にかかるロボットの移動経路を示す図である。
【図5】本発明にかかるロボットの移動経路と人の移動経路を示す図である。
【図6】本発明にかかるロボットの移動経路と手先位置軌道を示す図である。
【図7】本発明にかかるロボットの手先位置を中心とする座標系を示す上面図である。
【図8】本発明にかかるロボットの手先位置を中心とする座標系を示す斜視図である。
【図9】本発明にかかるロボットにおいて、追従状態に異常が発生した様子を示す図である。
【図10】本発明にかかるロボットにおいて、追従状態に異常が発生した様子を示す図である。
【図11】本発明の実施形態1にかかるロボットの歩幅調整処理を説明するための図である
【図12】本発明の実施形態にかかるロボットにおいて、歩幅を調整する処理を示すフローチャートである。
【図13】制御周期を考慮した誘導動作を示すフローチャートである。
【図14】線形に歩幅を調整する様子を示す図である。
【図15】実施の形態2にかかるロボットの歩幅調整処理を説明するための図である。
【図16】実施の形態2にかかるロボットの制御方法で調整された歩幅を示す上面図である。
【発明を実施するための形態】
【0030】
以下、本発明に係る移動体の実施形態を、図面に基づいて詳細に説明する。但し、本発明が以下の実施形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【0031】
実施の形態1.
以下に、図1を参照しつつ本発明の実施の形態1にかかる脚式移動型ロボット(以下、単にロボットという)について説明する。図1は、ロボットの全体構成を模式的に示す正面図である。本実施の形態にかかるロボットは、人の手を引いて誘導するヒューマノイド型ロボットである。すなわち、ロボット1が人を引っ張って歩行することで、人がロボットの後を追従する。
【0032】
図1は、ロボット1を正面から見た様子を概略的に表す概略図であり、床面F上をロボット1が歩行する様子を表しているなお、図1においては、説明の便宜上、ロボット1が進行する向き(前後方向)をx軸、ロボット1が進行する方向について水平方向に直交する向き(左右方向)をy軸、移動体の移動する平面から鉛直方向に延びる向き(上下方向)をz軸とし、これらの3軸からなる座標系を用いて説明する。すなわち、図1中において、前記x軸は紙面の奥行方向、y軸は紙面に向かって左右方向、z軸は紙面中の上下方向を示す。、
【0033】
図1に示すように、ロボット1は、頭部2と、体幹3と、体幹3に結合された腰部4と、体幹3に接続された右腕5、左腕6と、腰部4に対して回動自在に固定される脚部10と、を備えた2脚歩行型のロボットである。以下、詳細に説明する。
【0034】
頭部2は、ロボット1の周囲の環境を視覚的に撮像するための左右一対の撮像部(図示せず)を備えているとともに、体幹3に対して頭部2を鉛直方向に平行な軸周りに回動させることで、周囲の環境を広く撮像する。撮像した周囲の環境を示す画像データは、後述する制御部130に送信され、ロボット1の動作を決定するための情報として用いられる。
【0035】
体幹3は、その内部にロボット1の動作を制御する制御部130や、脚部や腕部のアクチュエータ(例えば、モータ)に電力を供給するためのバッテリー(図示せず)等を収容するものである。制御部130は、後述するように、脚部10を駆動し、ロボット1を動かすための歩容データを記憶する記憶領域と、この記憶領域に記憶された歩容データを読み出す演算処理部と、脚部10に含まれるモータを駆動する駆動制御部と、を備えている。これらの各構成要素は、体幹3の内部に設けられたバッテリー(図示せず)から電力を供給されることで動作する。
【0036】
また、演算処理部は、記憶領域に記憶された歩容データを読み出すとともに、読み出した歩容データによって特定されるロボット1の姿勢を実現するために必要な脚部10の関節角を算出する。そして、このように算出した関節角に基づく信号を駆動制御部に送信する。歩容データの生成、及び歩容データに基づく歩行の基本的制御については公知の技術を用いることができる。
【0037】
駆動制御部は、演算処理部より送信された信号に基づいて、脚部を駆動するための各モータの駆動量を特定し、これらの駆動量でモータを駆動させるためのモータ駆動信号を各モータに送信する。これによって脚部10の各関節における駆動量が変更され、ロボット1の動きが制御される。
【0038】
また、演算処理部は、読み出した歩容データに基づいてモータの駆動を行うように指令するほか、ロボット1に組み込まれたジャイロや加速度計などセンサ(図示せず)からの信号を受けて、モータの駆動量を調整する。また、レーザセンサなどを設けて、床面Fまでの距離や障害物までの距離を検出してもよい。ジャイロセンサや加速度計やレーザセンサなどの各種センサは、例えば、体幹3や腰部4に設けられる。このように、センサにより検出したロボット1に作用する外力や、ロボット1の姿勢などに応じて脚部10の関節角を調整することで、ロボット1が安定した状態を維持することができる。
【0039】
右腕5および左腕6は、体幹3に対して回動自在に接続されており、肩部分、肘部分および手首部分に設けられた関節部分を駆動することにより、人間の腕部と同様の動きを行うことができる。また、手首部分の先端に接続された手先部は、図示を省略するが物体を把持するためのハンド構造を備えており、ハンド構造に組み込まれた複数の指関節を駆動することで、様々な形状の物体を把持することが可能となる。例えば、指関節を駆動することで、誘導する人の手を握ることができる。なお、人を誘導する際には、ロボット1が人の手を握ってもよく、人がロボット1のハンドを握ってもよい。さらには、ロボット1と人が互いに手とハンドを握り合っていても良い。
【0040】
腰部4は、体幹3に対して回動するように接続されており、歩行動作を行う際に腰部4の回動動作を組み合わせることで、脚部10を駆動するために必要な駆動エネルギーを低減させることができる。体幹3と腰部4が胴体部分を構成する。
【0041】
2足歩行を行うための脚部10(右脚20、左脚30)は、右脚20と左脚30とから構成されている。詳細には、図2に示すように、右脚20は右股関節21、右上腿22、右膝関節23、右下腿24、右足首関節25、右足平26を備え、同様に、左脚30は左股関節31、左上腿32、左膝関節33、左下腿34、左足首関節35、左足平36を備えている。
【0042】
そして、右脚20および左脚30とは、図示しないモータからの駆動力が、同じく図示しないプーリおよびベルトを介して伝達されることで、各関節部が所望の角度に駆動され、その結果、脚部に所望の動きをさせることができる。
【0043】
なお、本実施形態においては、脚部10(右脚20および左脚30)は、下腿を膝関節回りに前方側に持ち上げると、人間の脚部のように、上腿と下腿が後方側に向かって開いた状態(上腿の延長線よりも後方側に、下腿が膝関節回りに回転した状態)となる。
【0044】
記憶領域に記憶された歩容データは、脚部10の移動量に対応づけて、脚部10の足平(右足平26、左足平36)の先端(足先)の位置と、移動体本体の位置とを、ロボット1の移動する空間を定める座標系(例えばxyz座標系)において経時的に指示するものである。
【0045】
次に、人の手を引くために設けられた腕部について具体的に説明する。右腕5と左腕6は、例えば、複数の自由度を持つアーム機構であり、ハンド(手先)を所望の位置に駆動することができる。具体的には7、又は8自由度のアーム機構を用いることができる。もちろん、これ以外の自由度を有するアーム機構を用いてもよい。図示しないモータからの駆動力が、同じく図示しないプーリおよびベルトを介して伝達されることで、各関節部が所望の角度に駆動され、その結果、脚部に所望の動きをさせることができる。
【0046】
右腕5は、右ハンド51、右手首関節52、右前腕53、右肘関節54、右上腕55、右肩関節56を有している。右手首関節52、右肘関節、右肩関節56は、回転関節機構などを有している。これらの関節が制御部130によって制御されることで、右腕5が右ハンド51の手先位置を所望の位置にすることができる。さらに、右ハンド51には、右ハンドセンサ部57が設けられている。
【0047】
同様に、左腕6は、左ハンド61、左手首関節62、左前腕63、左肘関節64、左上腕65、左肩関節66を有している。左手首関節62、左肘関節64、左肩関節66は、回転関節機構などを有している。これらの関節が制御部によって制御されることで、左腕6が左ハンド61の手先位置を所望の位置にすることができる。さらに、左ハンド61には、左ハンドセンサ部67が設けられている。なお、常時同じ腕によって誘導する場合は、一方の腕のみにセンサ部が設けられていればよい。以下、右ハンドセンサ部57、及び左ハンドセンサ部67のうちの一方をハンドセンサ部と称し、特に言及がない場合、人の手を引っ張っている方のハンドに設けられた方のハンドセンサ部を指す。
【0048】
制御部130は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、通信用のインタフェイスなどを有する演算処理装置である。また、制御部130は、着脱可能なHDD、光ディスク、光磁気ディスク等を有し、各種プログラムや制御パラメータなどを記憶し、そのプログラムやデータを必要に応じてメモリ(不図示)等に供給する。もちろん、制御部130は、物理的に一つの構成に限られるものではない。制御部130は、脚部10、右腕5、左腕6を制御するための演算処理を行う。すなわち、各関節のアクチュエータ(例えば、モータ)に対して指令値を出力する。
【0049】
右ハンドセンサ部57、左ハンドセンサ部67は、ユーザの追従状態を推定するための一つ又は複数のセンサを有している。例えば、右ハンドセンサ部57、左ハンドセンサ部67は、タッチセンサ、力センサ、接触センサ等を有している。例えば、ロボットハンドの手の平部分にタッチセンサや接触センサを設けることで、ユーザの手を引いているか否かを判断することができる。さらに、力センサは、人によって与えられる力を検出する。力センサは、自重の影響を差分してもよい。
【0050】
ハンドセンサ部から出力されるセンサ信号を用いた制御に付いて、図2、及び図3を用いて説明する。図2は、制御部130の構成を示すブロック図である。図3は、制御部130による制御方法を示すフローチャートである。ロボット1がハンドによって、人(被誘導者)を誘導している。従って、制御部130は一方のハンドに設けられたハンドセンサ部から出力されるセンサ信号に応じて制御を行っている。以下の説明では、左ハンド61が人の手を握った状態で、誘導しているとして説明する。
【0051】
制御部130は、経路算出部131、歩容データ算出部132、手先位置算出部133、インピーダンス制御部134、接触状態判別部135、追従状態推定部136、歩行調整部137、駆動制御部138を備えている。さらに、制御部130には、左ハンドセンサ部67からのセンサ信号が入力されている。なお、図2では、関節モータのエンコーダの出力値を省略している。
【0052】
まず、人を誘導するためのロボット経路を計画する(ステップS101)。まず、経路算出部131は、移動始点から移動終点までの移動経路を算出する。経路算出部131は、左ハンドセンサ部67からのセンサ信号によって、左ハンド61が誘導される人の手を握ったことを検知する。具体的には、接触センサやタッチセンサ等からのセンサ信号によって、接触していることを検出する。これにより、誘導可能状態になったことが認識される。そして、現在位置(移動始点)から入力された目的位置(移動終点)までの移動経路を算出する。さらに、レーザセンサやカメラなどによって、障害物の位置を測定して、疎障害物を避けるように移動経路を算出する。なお、レーザセンサやカメラ等の測定結果に応じて、適宜移動経路を変更するようにしてもよい。すなわち、障害物が移動した場合、その障害物を避けるように新たな移動経路を算出してもよい。
【0053】
さらに、障害物200の位置の変化に応じて、移動経路を更新しても良い。例えば、ロボット1に設けられたカメラやレーザセンサで障害物を検出する。また、移動環境中に設置されたカメラによって、障害物を検出しても良い。そして、障害物の位置が変化した場合は、移動経路を変更しても良い。すなわち、障害物が移動経路の近傍に移動して、ロボット1、及び人201の移動の妨げとなるおそれが生じた場合、移動経路を変更する。
【0054】
歩容データ算出部132は、移動経路における歩容データを算出する。歩容データとは、脚部10の移動量に対応づけて、脚部10の足平(右足平26、左足平36)の先端(足先)の位置と、ロボット1本体の位置とを、ロボット1の移動する空間を定める座標系(例えばxyz座標系)において経時的に指示するものである。なお、歩容データの生成については、従来から広く用いられている方法を用いることができるため、説明を省略する。右足平26と左足平36が交互に着地することで、ロボット1が歩行する。このため、歩容データには、足平が着地している位置(足付き位置)が含まれている。このように、経路算出部131と歩容データ算出部132によって、移動終点までの経路計画が実行される。すなわち、両脚で歩行するためのフットプランが計画される。なお、歩容データは、移動経路全体の歩容データを算出しなくてもよい。例えば、移動始点に近い一部の経路だけ歩容データを算出して、歩行中に随時歩容データを算出するようにしてもよい。
【0055】
次に、歩行中の手先位置(ハンドの位置)を拘束制御する(ステップS102)。そのため、手先位置算出部133は、その歩容データに基づいて、目標手先位置を算出する。ここでは、ユーザの手を把持している左ハンド61の手先位置を算出する。ロボット1の本体がある位置にあるとき、腕(右腕5、左腕6)の関節角度によって手先位置が決まる。例えば、歩行中の手の振り幅等によって、移動経路上のあるロボット位置における腕関節角度が決まる。手先位置は、各関節の角度や、関節を結ぶリンクの長さに基づいて、算出される。このようにして、歩容データに基づいて、移動経路に沿った手先位置の軌道が算出される。そして、歩行中の手先位置を拘束制御する。
【0056】
そして、進行方向に一定の力で人の手を引くように、手先をインピーダンス制御する(ステップS103)。例えば、インピーダンス制御部134は、目標手先位置と力センサ等からのセンサ信号に応じて、手先位置のインピーダンス制御を行う。具体的には、左ハンドセンサ部67に設けられた力センサによって、人から左ハンド61が受ける力が検出される。この力に応じてインピーダンス制御する。人を把持している左腕6を制御するためのアーム指令値を出力する。このアーム指令値が左腕6の関節モータに入力されることで、手先の位置が制御される。これにより、左手首関節62、左肘関節64、左上腕65の関節モータが所望の回転トルク、回転速度で駆動する。よって、適切な力で人の手を引くことができる。
【0057】
次に、手先の接触状態と人からの反力を検出する(ステップS104)。左ハンドセンサ部67の力センサが反力を検出する。さらに、左ハンドセンサ部67の接触センサやタッチセンサが、人がロボット1に左ハンド61と接触しているか否かを検出する。接触状態判別部135は、これらのセンサ信号に応じて、人とロボット1の左ハンド61との接触状態を判別する。これにより、非接触状態か、接触状態かを判別することができる。そして、追従状態推定部136は、手先のインピーダンス制御結果と接触状態判別部135の判別結果等に基づいて、人の追従状態を推定する。
【0058】
まず、追従状態に異常があるか否かが判定される(ステップS105)。追従状態推定部136は、例えば、人の手がハンドから離れていて誘導されていない状態を異常状態と推定する。さらには、追従状態推定部136は、人からロボット1が受ける力がしきい値を越えた場合を異常状態と推定する。このような場合(ステップS105のYES)、移動を停止する(ステップS106)。例えば、支持脚の駆動を停止して、かつ遊脚が着地した時点で遊脚の駆動を停止する。
【0059】
異常状態でない場合、追従状態推定部136は、追従速度が速い状態か、追従速度が遅い状態かを推定する。換言すると、追従状態推定部136は、目標手先位置とインピーダンス制御結果に応じて、人の歩行速度と、ロボットの歩行速度の差を算出する。そして、追従速度が速い状態や遅い状態の場合、手先の基準位置との偏差に応じて、歩幅や歩行周期を調整して次の一歩を算出する(ステップS106)。歩行調整部137は、追従状態の推定結果に応じて、歩行調整を行う。例えば、人の追従速度が速い場合は、ロボット1の歩行速度を速くし、人の追従速度が遅い場合は、ロボット1の歩行速度を遅くする。そのため、歩行調整部137は、歩幅や歩行周期を調整する。
【0060】
そして、駆動制御部138は、歩行調整部137で調整された結果に応じて、脚部の駆動を制御する。すなわち、脚部の関節モータに対して、歩行指令値を出力する。これにより、右股関節21、左股関節31、右膝関節23、左膝関節33、右足首関節25、及び左足首関節35の関節モータが、所望のトルク、回転速度で駆動する。よって、ロボット1が、適切な速度で、移動経路に沿った所望の方向に歩行する。
【0061】
目標位置、すなわち移動終点に到達したか否かを判定する(ステップS108)。目標位置に到達した場合は、歩行を停止する(ステップS109)。すなわち、脚部のモータの駆動を停止する。さらに、左ハンドによって人を誘導する力を0にする。一方、目標位置に到達していない場合は、ステップS102からの処理を繰り返す。そして、目標位置に到達するまで、あるいは、異常状態と推定されるまで、歩行を継続する。このようにして、歩行制御が行われる。以下に、上記の処理について詳細に説明する。
【0062】
(経路計画)
経路計画について、図4、及び図5を用いて説明する。図4は、移動経路に付いて模式的に示す図である。図5は、障害物を回避する移動経路を算出する方法について説明する図である。以下、経路算出部131による処理に付いて説明する。
【0063】
ここでは、既に知られている各種の方法を利用して、移動経路を算出することができる。図4に示すように、障害物200を回避するため、移動経路の移動始点Sから移動終点Gまでの移動経路Rを算出する。例えば、確率的探索手法であるRRT(Rapidly Exploring Random Trees)やA*アルゴリズムにより、離散的に経路を計画する。そして、各離散点をサブゴールSGとして、サブゴール間をスプライン曲線、ペジエ曲線、線形等で補完する。これにより、移動経路の軌跡が生成される。さらに、移動経路の生成には、ロボット1が予め記憶している移動環境の地図情報を利用しても良い。さらには、カメラやレーザセンサで取得された障害物の情報を利用してもよい。
【0064】
また、経路計画時には、図5に示すように、人の幅を考慮したマージンを持って移動経路を算出する。ロボット1の中心点から、人201を引く側のロボット1の手先位置までの距離(Lr)と、人201の幅(Lh)を考慮する。そして、距離Lrと幅Lhの和Lallの幅だけ余裕を持って、移動経路を算出する。すなわち、移動経路から障害物200までの距離がLallよりも長くなるようにする。これにより、人201が障害物と干渉しないように歩くことができる。もちろん、人201と反対側の手については、幅Lhを考慮する必要はない。このように、誘導されている人201が、障害物200を回避できるようにマージンを持たせて、移動経路を算出する。これにより、人が障害物200を意識せずに歩くことができるようになる。なお、人の幅Lhは予め設定しておくことが好ましい。もちろん、誘導される人に201応じて、人の幅Lhを変えてもよい。ロボット1と人201を合わせた幅は、2Lr+Lhとなり、この幅が通過できるような移動経路Rが算出される。
【0065】
そして、この移動経路Rに沿って歩くように、歩容データ算出部132が歩容データを算出する。ここでは、両足の足付き位置が算出される。このとき、理想的な、ロボット1の手先位置の軌道は、Rdとなり、人の手(ロボット1と反対側の手)の軌道は、Rhとなる。
【0066】
(拘束制御)
手先位置の拘束制御について図6を用いて説明する。図6を移動経路に従って移動するロボット1と人201を示す上面図である。さらに、図6では、右足平26の足付き位置Trと左足平36の足付き位置Tlの軌跡が示されている。足付き位置とは、それぞれの足平が接地する位置を示し、歩容データに応じて算出することができるものである。右足平26の足付き位置Trは移動経路Rの右側にあり、左足平36の足付き位置Tlは移動経路Rの左側にある。まず、拘束制御しない場合の問題点について説明する。
【0067】
2足歩行ロボットで安定して歩行するためには、支持脚が形成する支持多角形内に静歩行なら重心、動歩行ならZMP(Zero Moment Point)を収めるように動作を行う必要がある。一般的に、2足歩行ロボットは、上記の制約にしたがって歩行する。このため、腰中心は、移動経路の進行方向に対して、横方向の変動を伴う軌道Rbとなる。例えば、右足平26が接地しているときは、腰中心軌道Rbが移動経路Rの右側になり、左足平36が設置しているときは、腰中心軌道Rbが移動経路の左側となる。このように、歩行中の腰中心軌道Rbは支持脚よりになるため、腰中心軌道Rbは移動経路Rに対して横方向変動量を伴う。
【0068】
拘束制御を行わない場合、腰中心軌道Rbが横方向変動につれて、手先位置も変動してしまう。すなわち、ロボット1の歩行にしたがって、ロボット1の腰中心と、手先位置が変化することになる。すると、移動中に、人201の手が左右に揺れることになってしまう。すなわち、腰中心の横方向変動に合わせて、人201がロボット1から力を受けてしまう。このような力を人が受けるのは好ましいことではない。例えば、人が横方向の力を受けると、移動方向を誤って認識してしまう。
【0069】
そこで、本実施形態では、移動中における、手先位置の軌道Rdの横方向変動量が、腰中心軌道Rbの横方向変動量よりも小さくなるように、拘束制御している。ここで、横方向変動量とは、各軌道と移動経路Rの距離のばらつきを示すものである。したがって、手先位置軌道Rdが移動経路Rと平行になれば、手先位置軌道Rdと移動経路との距離は一定になる。手先位置軌道Rdが移動経路と平行な場合、横方向変動量は0となる。一方、腰中心軌道Rbは移動経路Rをまたぐように左右に揺れている。このため、移動経路上の位置に応じて腰中心軌道Rbと移動経路の距離が変化して、距離のばらつきが大きくなる。このように、手先位置軌道Rdが移動経路Rとほぼ平行になるように、ロボット1の手先位置を拘束制御する。
【0070】
腰中心位置が横方向変動を伴っても、誘導する手先は横方向変動がないように手先位置を拘束制御する。制御部130は、この拘束制御をリアルタイムに行う。実際には、上記の重心やZMPの制約を満たしつつ、手先位置の軌道Rdが移動経路と平行になるようにする。すなわち、制御部130は、手先位置が移動経路Rと一定距離を保って移動するように制御する。この制御を行うため、制御部130は、例えば、逆運動学を解くことで、全身の関節角度を求める。逆運動学は解析解で解いてもよく、ヤコビアンを用いた数値処理で解いてもよい。具体的には、ロボット1のリンク構成に応じて、精度と計算負荷を考慮して、全身の関節角度を求めればよい。これによって、手先位置が移動経路Rに沿って移動するようになる。手先位置の軌道Rdが移動経路Rと平行になり、横方向変動量を減少することができる。よって、人が誘導方向について、誤って認識するのを避けることができる。
【0071】
(インピーダンス制御)
手先位置のインピーダンス制御に付いて、図7及び図8を用いて説明する。図7は、手先位置のインピーダンス制御の説明を明確にするための座標系を示す上面図である。図8は、手先位置のインピーダンス制御を示す斜視図である。以下、インピーダンス制御部134による処理に付いて説明する。
【0072】
まず、図7、及び図8に示すように、右手系のローカル座標系を定義する。すなわち、ロボット1の移動方向をX方向とし、水平面内において、そのX方向と垂直な方向をY方向とする。さらに、X方向及びY方向と垂直な方向、つまり鉛直方向をZ方向とする。そして、手先位置軌道上の点を原点とする。なお、X方向は、その地点における移動経路Rと平行になる。そして、以下のようなポリシーでインピーダンス制御する。なお、上記の通り、インピーダンス制御に用いる手先位置は、手先位置算出部133によって算出されており、左ハンド61に加わる力は左ハンドセンサ部67によって測定されている。
【0073】
(a)X軸(進行方向)
進行方向に対して、人201を引っ張る力Frを提示できるようにインピーダンス制御する。具体的には、一定の軽い力(Fr:5〜10N程度)で人201を引っ張るような力を生じさせる。さらに、人201が逆向きに反力(5〜20N程度)を加えた場合は、逆向きにも追従できる程度の柔らかさで制御する。
【0074】
(b)Y軸(横方向)
人の反力に対して、ある程度倣う硬さにインピーダンス制御する。例えば、人201が反力(20N程度の荷重)を左ハンドに与えた場合、1〜2cm程度倣うようにインピーダンス制御する。すなわち、人201が20N程度の力で左ハンド61を引っ張った場合、左ハンド61が1〜2cm程度引っ張られる。
【0075】
(c)Z軸(鉛直方向)
人の反力に対して、ある程度倣う硬さにインピーダンス制御する。例えば、人201が反力(10N程度の荷重)を左ハンドに与えた場合、3〜4cm程度倣うようにインピーダンス制御する。すなわち、人201が10N程度の力で左ハンド61を引っ張った場合、左ハンド61が3〜4cm程度引っ張られる。
【0076】
(d)Rz軸(Z軸周りの回転:ヨー方向回転)
ロボット1が旋回して、進行方向が変わった時にも、ある程度人の手に倣うような硬さにインピーダンス制御する。
【0077】
(e)Rx軸、(X軸周りの回転:ロール方向回転)、Ry軸(Y軸周りの回転:ピッチ方向回転)
非常に硬く制御して、ほとんど外力に倣わなくても良い。従って、Rx軸、及びRy軸については、インピーダンス制御しなくても良い。
【0078】
このように、Rx軸、Ry軸はインピーダンス制御しないようにする。さらに、X軸を最も柔らかく、かつ一定の力で引くように制御する。さらに、Y軸をX軸、Z軸、Rz軸よりを硬く制御する。よって、インピーダンス制御の柔らかさは以下の順となる。X軸{最も柔らかい}→Rz軸、Z軸→Y軸→(Rx軸、Ry軸)
【0079】
上記のインピーダンス制御を実現する適用例として、以下の式(1)のような制御則を利用できる。
【0080】
【数1】

【0081】
なお、式(1)において、pは現在の手先位置(x,y,z,Rx,Ry,Rz)のベクトル、pdは手先位置指令(目標手先位置)、Mは実慣性行列、Bはダンパ行列、Kは仮想バネ行列、Fは力計測値、Fdは力指令値、Sはスイッチ行列、Kfは力ゲイン、Eは単位ベクトルである。なお、手先位置指令pdは、拘束制御において算出された目標手先位置に相当する。
【0082】
上記の(1)式中のスイッチ行列を操作することによって、コンプライアントにハンドを制御するだけでなく、任意の力指令値に応じた力を発生させることができる。そこで、移動方向であるX方向のみ力指令値を有効として、その他の方向は、コンプライアント制御となるようにスイッチ行列を設定する。また、各方向の制御の硬さに関しては、上記の(a)〜(e)で示した所望の硬さを実現するように、慣性行列、ダンパ行列、バネ行列のパラメータを設定する。
【0083】
拘束制御によって目標手先位置を算出する。そして、目標手先位置から、マス要素、ダンパ要素、バネ要素を組み合わせて、力指令値を算出することで、適切な力での誘導が可能になる。そして、インピーダンス制御結果に応じて、インピーダンス制御部134がアーム指令値を出力する。これにより、インピーダンス制御結果に従って手先位置を駆動することができる。なお、腕部の可動範囲やロボットの自己干渉を考慮して、それ以上動けない場合には、直前の腕位置を保つように制御する。このように、インピーダンス制御部134は、移動経路に沿った進行方向に人を引き、かつ、X方向がX方向と直交するY方向、Z方向よりも柔らかくなるようにインピーダンス制御する。
【0084】
(異常状態制御)
追従状態が異常状態と判定された時の制御について、説明する。図9、及び図10は、追従異常となっている例を説明するための図である。図9に示すように、人201の手が左ハンド61から離れた場合、左ハンドセンサ部67のタッチセンサ、接触センサ、力センサでの反応がなくなる。従って、左ハンドセンサ部67からのセンサ信号によって、人201の手が離れたか否かを判定することができる。以下、接触状態判別部135、追従状態推定部136による処理に付いて説明する。
【0085】
なお、力センサ使用時には、自重の影響による出力値は差分して考慮することが好ましい。また、ON/OFFではなく、アナログ値が出力されるセンサを用いる場合、センサ信号の値とあるしきい値を比較することで、接触しているか否かを判定するようにしてもよい。センサのチャタリング防止のため、数msec以上反応がない状態が続いた場合に、人が離れたと判定することが好ましい。さらに、タッチセンサや接触センサでは、人201がロボット1の左ハンド61を握っているか否かを判定するために、左ハンド61の手の甲側と、手の平側の両方にセンサを設置することが好ましい。この場合、両方の反応を取ることによって、判定精度を高めることができる。例えば、いずれか一方のセンサの反応がなくなった場合に、人の手がロボットハンドから離れたと判定する。もちろん、両方の反応がなくなった場合に、人の手がロボットハンドから離れたと推定しても良い。なお、各種センサは、人の手がロボット1のハンドを握る際に、通常接触する位置に設けられる。
【0086】
また、図10に示すように、人が転倒しそうになると、ロボットハンドに過大な反力が加わる。この場合、以下に示す手法を用いることで、異常状態か否かを推定することができる。左ハンドセンサ部67の力センサからのセンサ信号の値を、しきい値と比較する。例えば、センサ信号の値が、しきい値を越えた場合、異常状態と推定する。また、力センサの周波数応答が高域で、しきい値を越えた場合、異常状態と推定する。この場合、衝突等のインパルス的な反力を検知することができる。インピーダンス制御適用後の、手先位置が、基準の手先位置に対してしきい値以上の偏差を伴っている場合、異常状態と推定しても良い。この場合、X軸、Y軸、Z軸、Rx軸、Ry軸、Rz軸に対して、それぞれ別のしきい値を設定する。このように、センサ信号の値や、手先位置の偏差をしきい値と比較することによって、過大な力が加わった異常状態であることを検知することができる。
【0087】
異常状態と推定された場合、以下の手順で移動を停止する。現在が、両脚支持期なら、次の歩行を行わずに静止する。すなわち、両脚を離地させる前に、脚部モータの駆動を停止する。また、現在が片脚支持期なら、次に遊脚が着地したところで、静止する。すなわち、遊脚が着地するまでは、脚部モータを駆動する。そして、遊脚が着地した後に、脚部モータを停止する。さらに、安全性をより向上するために、左腕のインピーダンス制御を全方向に関してコンプライアントな状態とするようにしてもよい。これにより、反力によってロボット1のバランスが崩れることを防止することができる。例えば、式(1)中のスイッチ行列を単位行列にして、コンプライアンス性を高めるように、各パラメータを変更する。そして、変更されたパラメータで制御を継続する。これにより、駆動制御部138から、脚部モータを適切に停止する指令値が出力される。よって、ロボット1がバランスを崩して、転倒を防ぐことができる。
【0088】
(歩行調整)
次に、推定された追従状態に応じて、歩行速度を調整する処理に付いて説明する。歩行調整部137では、追従状態推定部136で推定された追従状態によって、歩行速度を調整している。すなわち、ステップ107によって、歩幅や歩行周期を調整して、次の一歩を算出する。以下の処理では、歩行調整部において、歩幅を調整する処理について、図11を用いて説明する。
【0089】
図11は、調整された歩幅を示す上面図である。ここで、Trは右足平26の足付き位置、Tlは左足平36の足付き位置を示している。さらに、この説明では、左脚30が支持脚であり、右脚20が遊脚である状態において、右脚20の次の一歩を算した例に付いて説明する。すなわち、右足平の26の次の足付き位置を決定する。ここで、ロボット1の基準の歩幅をSrとすると、その歩幅で歩いた時の右足平26の足付き位置は、Trnとなる。なお、基準の歩幅Srは、ロボットの構成やリンク長や基準の歩行速度に応じて決めることができる。
【0090】
図11に示すように、支持脚である左脚30を基準に、両足を仮想的にそろえた時の右足平26の仮想位置をTr'とする。なお、右足平26の仮想位置Tr'の中心と、左足平36の中心とを結ぶ直線は、移動経路Rに対して垂直となっている。ここで、仮想位置Tr'から見た次の足付き位置Trnを(x方向歩幅、y方向歩幅、旋回角度)で表すと、(Srx,Sry,θr)と表すことができる。ここで、次の足付き位置Trnは、仮想位置Tr'から基準の歩幅Srで歩いた時の位置である。基準の歩幅Srを、SrxとSryを用いて表すと、Sr=(Srx+Sry1/2なる。
【0091】
上記の通り、歩行中の手先位置は、インピーダンス制御されている。移動経路上のある位置を基準(基準ロボット位置)とした目標手先位置と、インピーダンス制御後の手先位置との偏差(以下手先位置偏差)に応じて歩幅を調整する。すなわち、基準ロボット位置における目標手先位置と実測の手先位置の手先位置偏差を、前の一歩で算出しておく。なお、基準ロボット位置における目標手先位置は、上述の通り、手先位置算出部133が算出する。基準ロボット位置における実際の手先位置は、移動経路上のある所定のロボット位置における腕部の関節角度によって算出することができる。基準ロボット位置の目標手先位置と、実際の手先位置との差を手先位置偏差として、次の歩幅を決定する。このように、手先位置偏差は、ロボット1の本体がある所定位置にあるとした時の目標手先位置と実測の手先位置の偏差となる。
【0092】
インピーダンス制御後の手先位置偏差が進行方向側ならば、人201がロボット1に十分追従していると推定する。すなわち、手先が目標手先位置よりも進んでいるため、人201がロボット1よりも速く歩いていると推定する。計画よりもロボット1を速く歩かせるため、歩幅を基準の歩幅よりも大きくする。これにより、ロボット1が加速して、歩行速度が速くなる。
【0093】
インピーダンス制御後の手先位置偏差が進行方向と反対側ならば、人201がロボット1に十分追従していないと推定する。すなわち、手先が目標手先位置よりも遅れているため、人201がロボット1に対して遅れていると推定する。この場合、計画よりもロボット1を遅く歩かせるため、歩幅を基準の歩幅よりも小さくする。これにより、ロボット1が減速して、歩行速度が遅くなる。
【0094】
上記の歩幅調整の一例を説明する。インピーダンス制御適用後の手先位置偏差(p−pd)について考える。ここで(1)式中のx成分のみを取り出す。すなわち、ベクトルpをx成分のみに付いて考えると、以下の(2)式が得られる。
【0095】
【数2】

【0096】
このように、進行方向における手先位置偏差は(x−xd)で表される。なお、xは実測の手先位置、xdは目標手先位置である。この偏差(x−xd)の値によって、以下のポリシーで歩幅を変更する。
【0097】
例えば、進行方向における手先位置偏差(x−xd)が正ならば、歩幅を基準の歩幅よりも大きくする。すなわち、人がロボット1の歩行速度よりも速く歩いている場合、左ハンド61が人から進行方向に力を受ける。このため、人が把持している左ハンド61が基準ロボット位置での目標手先位置よりも先に進む。よって、ロボット1の歩行速度を速くするために、歩幅を大きくする。ロボット1の一歩の時間が略同じであるとすると、ロボット1が基準速度よりも速く歩く。一方、進行方向における手先位置偏差(x−xd)が負ならば、歩幅を小さくする。すなわち、人がロボット1の歩行速度よりも遅く歩いている場合、左ハンド61が人から進行方向と逆方向に力を受ける。このため、人が把持している左ハンド61が遅れることになり、基準ロボット位置での目標手先位置よりも後ろになる。よって、ロボット1の歩行速度を遅くするために、歩幅を小さくする。ロボット1の一歩の時間が略同じであるとすると、ロボット1が基準速度よりもゆっくり歩く。
【0098】
また、偏差(x−xd)がしきい値Xminよりも小さければ歩幅を0とする。なお、しきい値は負の値とすることが好ましい。例えば、しきい値Xminを−0.3mとすることができる。従って、調整後の歩幅を(Sx,Sy,θ)とすると、歩幅調整は以下の式(3)〜式(6)で示すことができる
【0099】
(x−xd)がXmin以上の時
Sx=(1−(x−xd)/Xmin)×Srx ・・・(3)
Sy=(1−(x−xd)/Xmin)×Srx ・・・(4)
θ=(1−(x−xd)/Xmin)×θr ・・・(5)
【0100】
(x−xd)がXminよりも小さい時
(Sx,Sy,θ)=(0,0,0) ・・・(6)
【0101】
上記の計算方法では、(x−xd)が正の場合、誘導される人の手先が計画よりも早めに動いているということができる。よって、ロボット1の歩幅を大きくして、歩行を加速する。これは、人が誘導させるだけでなく、正しい進行方向にならば、人側からロボット1を押して、移動を早めることができることを意味する。よって、直感的な誘導動作が実現される。この場合、ロボット1が人の歩行速度に合わせて移動することになる。よって、適切な誘導を行うことができる。よって、様々な人に対して適切な誘導動作を実現することができる。また、進行方向への偏差(x−xd)に応じて、歩行周期を変化させてもよい。すなわち、歩幅を一定とした状態で、一歩の時間、すなわち、離地してから着地するまでの時間を変更することで歩行速度を調整しても良い。もちろん、歩幅と歩行周期の両方を変化させて、歩行速度を調整してもよい。なお、一般に、二足歩行において、歩行周期が長くなりすぎると、安定性を欠くことがある。よって、歩幅を変えることで歩行調整を行うことが好ましい。
【0102】
本実施の形態では、進行方向における手先位置偏差(x−xd)に応じて、歩幅を線形で調整している。従って、支持脚を基準として両足を揃えた時の、仮想的な足付き位置から、次の足付き位置が線形に変化する。すなわち、どのような手先位置偏差を取った場合でも、次の足付き位置は、ある直線上にあることになる。この直線は、支持脚を基準に両足を揃えた時の遊脚の仮想的な足付き位置から、基準歩幅で着地した時の仮想的な着地位置を結ぶ方位にある。すなわち、仮想位置Tr'と基準歩幅での足付き位置Trnとを結ぶ直線上に次の足付き位置が変化する。換言すると、遊脚が基準歩幅で着地する時の仮想的な足付き位置を通る1直線上に、歩幅を変更した後の足付き位置足付き位置が存在する。
【0103】
また、手先位置偏差がしきい値以上の場合、歩幅は手先位置偏差と線形関係となっている。すなわち、手先位置偏差に基準歩幅を乗じた値に応じて、次の足付き位置までの距離を決定することができる。これにより、進行方向における手先位置偏差(x−xd)が大きい程、歩幅が大きくなる。線形に歩幅調整することで、調整を簡便に行うことができる。さらに、負のしきい値を下回った場合は、両足を揃えるように制御する。すなわち、人の歩行速度が非常に遅い場合は、両足が左右に揃った状態となる。これにより、人の歩行速度に合わせて、適切に誘導することができる。
【0104】
なお、上記の説明では、X軸のみに着目して、歩幅を調整したが、Y軸、Z軸に基づいて歩幅を調整しても良い。例えば、Y軸方向の手先位置偏差としきい値との比較結果、又は、Z軸方向の手先位置偏差としきい値の比較結果によって、両足を揃えるようにする。これにより、Y軸、Z軸において、ハンドに過大な力が加わった場合は、歩行速度を遅らせることができる。
【0105】
上記のように、歩幅を調整した場合、歩容データにおける足付き位置が変化することになる。よって、歩容データの更新が必要になる。以下に、歩容データを更新する処理に付いて、図12を用いて説明する。
【0106】
まず、最初に経路計画を行う(ステップS201)。ここではステップS101で示した処理と同様に、移動経路が算出される。すなわち、障害物200と衝突しないように、移動始点Sから移動経路Gまでの経路を算出する。さらに、移動経路に従った歩容データが算出される。これにより、移動経路に沿った足付き位置の座標が算出される。
【0107】
そして、歩行中の手先の位置拘束制御を行う(ステップS202)。ここでは、ステップS102と同様に、目標手先位置が算出される。そして、センサ信号に基づいて、追従状態に異常が発生したか否かを判定する(ステップS203)。ここでは、上記の通り、接触状態に異常が発生したか否か、又は反力に異常が発生したか否かが判定される。人201の手が左ハンド61に接触しており、かつ、人から受ける反力が所定の範囲内にある場合、異常が発生していない正常状態となる。
【0108】
異常が発生していない場合(ステップS203のNO)、手先のインピーダンス制御を行う(ステップS204)。これにより、左ハンド61が人201の手に適切な力を与える。これにより、人201が所定の力でX方向に引っ張られる。そして、手先位置偏差に応じた歩幅を決定する(ステップS205)。すなわち、上記の通り、手先位置が目標手先位置よりも進んでいる場合は歩幅を大きくし、手先位置が目標手先位置よりも遅れている場合は、歩幅を小さくする。そして、歩行を継続する(ステップS206)。この処理を繰り返すためステップS201に戻る。ここで、歩幅が基準歩幅Srから変更した場合、経路が再計画され、調整された歩幅に応じて、歩容データが調整される。すなわち、調整された歩幅では足付き位置が当初の位置から変わることになる。従って、新たな足付き位置に応じた歩容データを算出する。このようにして、歩容データが更新される。そして、このようにして処理を繰り返し行って、移動始点まで移動する。なお、歩容データは、移動経路全体に対して算出しなくてもよい。すなわち、歩幅が調整されると、足付き位置が変化してしまうことになるため、ロボットの現在位置近傍のみ歩容データを算出すればよい。
【0109】
なお、上記の処理は、手先位置の拘束制御、インピーダンス制御、歩行調整、歩容データの更新は、それぞれ、所望の制御周期で、繰り返し実行すればよい。一般に、インピーダンス制御は、数msec程度の速い制御周期で行った方が、応答がよくなる。一方、歩幅調整は、歩行周期(例えば、0.5sec〜2sec)に合わせて次の一歩が必要になる際に行えばよい。例えば、着地する前までに、次の一歩の歩幅が決定できていればよい。移動経路の更新は、環境を認識するセンサの計測周期や計算速度を考慮した制御周期でよい。例えば、移動経路の更新周期は、1sec〜数sec等の最も遅い周期でよい。それらの制御周期を考慮すると、図13に示すようなフローとなる。
【0110】
まず、移動環境中の障害物を検知するセンサの情報を取得する(ステップS301)。例えば、カメラやレーザセンサによって障害物の位置を検出する。そして、経路計画の更新が必要か否かを判定する(ステップS302)。なお、ステップS302の判定は、1〜数sec程度の周期で行えばよい。例えば、カメラやレーザセンサなどからのセンサ情報が十分に取得されていない場合は、経路計画を更新しなくても良い。障害物の位置が変わって、移動の妨げとなる場合は、経路計画の更新が必要となる(ステップS302のYES)。
【0111】
経路計画の更新が必要な場合(ステップS302のYES)、経路計画と基準の歩行プランを更新する(ステップS303)。これにより、移動経路とその移動経路に沿った足付き位置が算出される。その後、手先のインピーダンス制御を適用する(ステップS304)。経路計画の更新が不要な場合(ステップS302のNO)、手先のインピーダンス制御を適用する(ステップS304)。ここで、インピーダンス制御の制御周期は、数msec程度である。これにより、手先によって所望の力を発生させることができる。
【0112】
インピーダンスの制御結果に基づいて、次の一歩が必要か否かを判定する(ステップS305)。ここでは、次の一歩を更新できるタイミングか否かを判定する。ここでの制御周期は、歩行周期に応じたものとなっており、例えば、0.5sec〜2secとなっている。例えば、片足支持期のあるタイミングにおいて、次の一方の歩幅を決定する。よって、そのタイミングまでは、あるいはそのタイミングを過ぎたら、次の一方の歩幅の決定は不要となる。換言すると、一歩ごとに、次の歩幅を決定すれば良い。次の一歩が不要の場合(ステップS305のNO)、全身の関節角度を決定する(ステップS307)。これにより、脚部と腕部の関節角度を求めることができる。また、次の一歩が必要な場合、最新の手先位置偏差に応じて、次の一歩を更新する(ステップS306)。そして、全身の関節角度を決定する(ステップS307)関節角度が決定したら、その関節角度に対応するアクチュエータへ指令値を出力する(ステップS308)。
【0113】
このように、次の一歩を更新する制御周期をインピーダンス制御の制御周期よりも遅くする。たとえば、一歩ごとに次の歩の歩幅を決定すれば良い。これにより、計算時間が長くなるのを防ぐことができる。なお、手先位置偏差の算出は、最新のロボット位置から求めればよい。あるいは、複数のロボット位置における手先位置偏差の平均によって、次の歩幅を決定してもよい。
【0114】
実施の形態2.
本実施の形態は、歩幅調整の方法が実施の形態1と異なっている。なお、それ以外の処理とロボット構成については、実施の形態1と同様であるため、説明を省略する。実施の形態1では、手先位置偏差に応じて歩幅を線形に調整している。しかしながら、図14に示すように、歩幅の調整量や移動経路の曲率に応じて、移動経路から大きくずれてしまうことになる。なお、図13では、現在の足付き位置Trと基準となる歩幅の足付き位置Trnに対して線形に調整した足付き位置を点線で示している。足付き位置が移動経路から大きくずれると、例えば、移動経路が長くなったり、他方の脚と干渉するおそれも生じたりしてしまう。そこで、本実施の形態に係る方法で、歩幅を調整すると、より厳密に歩幅を調整することができるようになる。
【0115】
図15に示すように、移動経路上において、現在の両足中心位置を原点する。すなわち、調整開始位置の右足平26の中心位置と、左足平36の中心位置の中間位置を原点(0,0,0)する。さらに、経路長をnとし、経路上の点の2次元座標と傾きを(fx(n),fy(n)、φ(n))とする。その点に対応する右足平の中心位置を(xr(n),yr(n),φ(n))とし、左足平36の中心位置を(xl(n),yl(n),φ(n))とする。なお、φ(n)は、x軸方向から反時計回りを静とした時の回転角度である。このφ(n)は、両足中心と右足平中心と左足平中心で同じ角度を取る。両足中心から、左足平中心までの距離をwとすると、右足開始位置は(0,−w,0)となり、左足開始位置は(0,w,0)となる。wを用いて、右足平26の中心位置Trnと左足平36の中心位置Tlnを表すと、以下の式(7)〜式(9)のようになる。
【0116】
φ(n)=atan2(y'(n),x'(n)) ・・・(7)
xr(n)=fx(n)+wsin(φ(n))、yr(n)=fy(n)−wcos(φ(n)) ・・・(8)
xl(n)=fx(n)−wsin(φ(n))、yl(n)=fy(n)+wcos(φ(n)) ・・・(9)
【0117】
そして、歩幅調整を行う場合、以下の条件を満たすように調整する。右足平26の位置は以下の式(10)〜(13)に示すようになる。
【0118】
(x−xd)がXminよりも小さい時
Sx=xr((1−(x−xd)/Xmin)×n') ・・・(10)
Sy=yr((1−(x−xd)/Xmin)×n')+w ・・・(11)
θ=φ((1−(x−xd)/Xmin)×n') ・・・(12)
【0119】
(x−xd)がXminよりも小さい時
(Sx,Sy,θ)=(0,0,0) ・・・(13)
【0120】
また、左足平36の位置は以下の式(14)〜(17)に示すようになる。
【0121】
(x−xd)がXminよりも小さい時
Sx=xl((1−(x−xd)/Xmin)×n') ・・・(14)
Sy=yl((1−(x−xd)/Xmin)×n')−w ・・・(15)
θ=φ((1−(x−xd)/Xmin)×n') ・・・(16)
【0122】
(x−xd)がXminよりも小さい時
(Sx,Sy,θ)=(0,0,0) ・・・(17)
【0123】
上記の式(10)〜(17)において、n'は基準歩幅の時の経路長である。なお、右足平26と右足平36のθは同じである。このように、歩幅を調整する際、移動経路に沿って、足付き位置を変更する。すなわち、インピーダンス制御結果の手先位置偏差から、歩幅を調整する際、計画した移動経路に沿って次の一歩を調整することができる。これにより、図16に示すように、両足の干渉を回避することが可能になる。なお、図16では、様々な歩幅で調整した時の右足平26の足付き位置を示している。本実施の形態にかかる歩幅調整方法を用いることで、移動経路に沿った足付き位置の変更が可能になる。さらに、移動経路からのずれが小さくなるため、ロボット1が大回りするのを防ぐことができる。よって、移動終点まで短い距離で誘導することができる。よって、人の負担を軽減することができる。
【0124】
人の手を引くロボット1においてインピーダンス制御を行うことによって、人に与える力により歩く方向を直感的に提示することができる。よって、目的となる移動終点まで適切に誘導することができる。さらに、直感的に誘導方向が把握されるため、目の不自由な人を適切に誘導することに好適である。さらに、人の追従状態に合わせて歩行速度を決定できる。これにより、被誘導者側の負担を軽減することができる。また、人の手が離れた場合、過大な反力が発生した場合、歩行を停止する。これにより、安全性を向上することができる。
【0125】
上記の説明では、左ハンドによって人の手を把持したが、右ハンドによって人の手を把持した場合でも、同様に制御することができる。また、上記説明ではロボット1が移動経路を算出したが、移動経路Rは予め与えられていても良い。すなわち、他のコンピュータ等によって、算出された移動経路を、ロボット1に供給しても良い。もちろん、歩幅調整は毎歩行わなくてもよく、例えば、複数歩に1回の割合で歩幅を調整しても良い。
【0126】
なお、上記の実施の形態1、2は適宜組み合わせてもよい。例えば、ある区間では実施の形態1の手法によって歩幅を調整し、他の区間では実施の形態2の手法で歩幅を調整しても良い。ロボット1の歩行制御は、静歩行、動歩行のいずれでもよい。さらには、全脚が床から離地する走行によって、人を誘導しても良い。また、本実施形態にかかるロボット1は、2脚型以外の脚式ロボットでもよい。すなわち、3脚以上の脚式ロボットであっても良い。
【符号の説明】
【0127】
1 ロボット
2 頭部
3 体幹
4 腰部
5 右腕
6 左腕
10 脚部
20 右脚
21 右股関節
22 右上腿
23 右膝関節、
24 右下腿
25 右足首関節
26 右足平
30 左脚
31 左股関節
32 左上腿
33 左膝関節
34 左下腿
35 左足首関節
36 左足平
51 右ハンド
52 右手首関節
53 右前腕
54 右肘関節
55 右上腕
56 右肩関節
57 右ハンドセンサ
61 左ハンド
62 左手首関節
63 左前腕
64 左肘関節
65 左上腕
66 左肩関節
67 左ハンドセンサ
131 経路算出部
132 歩容データ算出部
133 手先位置算出部
134 インピーダンス制御部
135 接触状態判別部
136 追従状態推定部
137 歩行調整部
138 駆動制御部


【特許請求の範囲】
【請求項1】
ハンドを有する腕部と、脚部と、胴体部と、を有し、被誘導者を誘導して移動するロボットであって、
移動始点から移動終点までの移動経路に応じて、歩容データを生成する歩容データ生成部と、
前記歩容データに基づいて、所定のロボット位置における前記ハンドの目標位置を算出するハンド位置算出部と、
前記所定のロボット位置における前記ハンドの前記目標位置と前記ハンドの測定位置との偏差に応じて、前記ロボットに対する前記被誘導者の追従状態を推定する追従状態推定部と、
前記追従状態推定部の推定結果に応じて、ロボットの移動速度を調整する調整部と、
調整部によって調整された移動速度で前記ロボットを移動させるよう、前記脚部を駆動する駆動制御部と、を備えたロボット。
【請求項2】
前記ハンドの前記目標位置と前記測定位置との偏差に応じて、前記脚部の歩幅を変更することで、ロボットの移動速度を変化させる請求項1に記載のロボット。
【請求項3】
前記歩幅を変更した後の足付き位置が、前記移動経路に沿って算出されている請求項は2に記載のロボット。
【請求項4】
遊脚が基準歩幅で着地する時の仮想的な足付き位置を通る直線上に、前記歩幅を変更した後の足付き位置が決定される請求項2、又は3に記載のロボット。
【請求項5】
前記歩幅が、前記偏差に応じて線形に変化することを特徴とする請求項4に記載のロボット。
【請求項6】
前記手先位置偏差がしきい値より小さい場合に、前記歩幅を変更した後の足付き位置が、支持脚の足付き位置と揃うように歩幅を調整する請求項2乃至5のいずれか1項に記載のロボット。
【請求項7】
前記ハンド位置算出部が、前記移動経路に対する前記ハンドの目標位置の横方向変動量が、前記移動経路に対する前記胴体部位置の横方向変動量よりも小さくなるように、前記ハンドの目標位置を算出する請求項1乃至6のいずれか1項に記載のロボット。
【請求項8】
前記ハンドに設けられたセンサ部からのセンサ信号と前記ハンドの目標位置とに応じて、前記ハンドの位置をインピーダンス制御するインピーダンス制御部と、をさらに備える請求項7にロボット。
【請求項9】
前記インピーダンス制御が、前記移動経路に沿った進行方向に前記被誘導者を引き、かつ、前記進行方向が前記進行方向と直交する方向よりも柔らかくなるようにインピーダンス制御することを特徴とする請求項8に記載のロボット。
【請求項10】
前記ハンドに設けられたセンサ部からのセンサ信号によって、前記誘導者とロボットとが非接触状態となっていることが検知された場合に、前記脚部による移動と停止する請求項1乃至9のいずれか1項に記載のロボット。
【請求項11】
前記移動軌跡が、前記ロボットと前記被誘導者の幅の和を考慮して、決定されていることを特徴とする請求項1乃至10のいずれか1項に記載のロボット。
【請求項12】
ハンドを有する腕部と、脚部と、胴体部と、を有し、被誘導者を誘導して移動するロボットの制御部であって、
移動始点から移動終点までの移動経路に応じて、歩容データを生成するステップと、
前記歩容データに基づいて、所定のロボット位置における前記ハンドの目標位置を算出するステップと、
前記所定のロボット位置における前記ハンドの前記目標位置と前記ハンドの測定位置との偏差に応じて、前記ロボットに対する前記被誘導者の追従状態を推定するステップと、
前記追従状態の推定結果に応じて、ロボットの移動速度を調整するステップと、
調整された前記移動速度で前記ロボットを移動させるよう、前記脚部を駆動するステップと、を備えたロボットの制御方法。
【請求項13】
前記ハンドの前記目標位置と前記測定位置との偏差に応じて、前記脚部の歩幅を変更することで、ロボットの移動速度を変化させる請求項12に記載のロボットの制御方法。
【請求項14】
前記歩幅を変更した後の足付き位置が、前記移動経路に沿って算出されている請求項13に記載のロボットの制御方法。
【請求項15】
遊脚が基準歩幅で着地する時の仮想的な足付き位置を通る直線上に、前記歩幅を変更した後の足付き位置が決定される請求項13、又は14に記載のロボットの制御方法。
【請求項16】
前記歩幅が、前記偏差に応じて線形に変化することを特徴とする請求項15に記載のロボットの制御方法。
【請求項17】
前記手先位置偏差がしきい値より小さい場合に、前記歩幅を変更した後の足付き位置が、支持脚の足付き位置と揃うように歩幅を調整する請求項13乃至16のいずれか1項に記載のロボットの制御方法。
【請求項18】
前記移動経路に対する前記ハンドの目標位置の横方向変動量が、前記移動経路に対する前記胴体部位置の横方向変動量よりも小さくなるように、前記ハンドの目標位置を算出する請求項12乃至17のいずれか1項に記載のロボットの制御方法。
【請求項19】
前記ハンドに設けられたセンサ部からのセンサ信号と前記ハンドの目標位置とに応じて、前記ハンドの位置をインピーダンス制御するインピーダンス制御部と、をさらに備える請求項18にロボットの制御方法。
【請求項20】
前記インピーダンス制御が、前記移動経路に沿った進行方向に前記被誘導者を引き、かつ、前記進行方向が前記進行方向と直交する方向よりも柔らかくなるようにインピーダンス制御することを特徴とする請求項19に記載のロボットの制御方法。
【請求項21】
前記ハンドに設けられたセンサ部からのセンサ信号によって、前記誘導者とロボットとが非接触状態となっていることが検知された場合に、前記脚部による移動と停止する請求項12乃至20のいずれか1項に記載のロボットの制御方法。
【請求項22】
前記移動軌跡が、前記ロボットと前記被誘導者の幅の和を考慮して、決定されていることを特徴とする請求項12乃至21のいずれか1項に記載のロボットの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−194539(P2011−194539A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−66143(P2010−66143)
【出願日】平成22年3月23日(2010.3.23)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】