JP2004351551A - ロボットの制御装置およびロボットの制御方法 - Google Patents

ロボットの制御装置およびロボットの制御方法 Download PDF

Info

Publication number
JP2004351551A
JP2004351551A JP2003151283A JP2003151283A JP2004351551A JP 2004351551 A JP2004351551 A JP 2004351551A JP 2003151283 A JP2003151283 A JP 2003151283A JP 2003151283 A JP2003151283 A JP 2003151283A JP 2004351551 A JP2004351551 A JP 2004351551A
Authority
JP
Japan
Prior art keywords
joint
robot
control
control data
center
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2003151283A
Other languages
English (en)
Inventor
Yukihiro Hanaoka
幸弘 花岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2003151283A priority Critical patent/JP2004351551A/ja
Publication of JP2004351551A publication Critical patent/JP2004351551A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】低速の共通バス等を利用しつつそれを介した通信を最小限に押さえることによって、低価格化と高速化とを同時に図ることができるロボットの制御装置およびロボットの制御方法を提供する。
【解決手段】多関節形のロボットのそれぞれ単一の関節の制御のみを担当する複数の各サーボコントローラに対して、各関節の動作を指示する制御データを、メインコントローラから共通バスを介して送信するロボットの制御において、各サーボコントローラは、自己に対する制御データの受信のみに基づいて、担当する各関節の駆動制御を完結可能に構成され、ロボット内の各関節の状態を検出し(S21、S31)、検出された各関節の状態に基づいて、各関節の次の動作のための目標を設定し、設定された目標に基づいて制御データを導出し(S22,S32)、導出された制御データを共通バスを介して送信することを特徴とする。
【選択図】 図14

Description

【0001】
【発明の属する技術分野】
本発明は、例えば人間形(ヒューマノイド)の脚式歩行(2足歩行)ロボット等の多関節形のロボットの制御装置およびロボットの制御方法に関する。
【0002】
【従来の技術】
この種のロボットの制御においても、1つのプロセッサ(コントローラ)による制御では負荷が過大となりすぎる場合に対応して、他の分野の高度な情報処理等と同様に、複数のプロセッサで負荷を分担して制御するいわゆるマルチプロセッサ化が図られている。この場合、複数のプロセッサのうちのいずれか1のプロセッサをメインプロセッサとし、各関節等を担当する他のプロセッサをサブプロセッサ(スレーブプロセッサ)として、メインプロセッサが、予めスケジュールされたプログラムに従って、各サブプロセッサに動作(処理)の指示を与え、次の処理に必要なサブプロセッサからの処理結果が揃うのを待ってから、次の処理に移行する(例えば特許文献1参照)。
【0003】
【特許文献1】
特開平8−83110号公報(図13等)
【0004】
【発明が解決しようとする課題】
しかしながら、この種のロボットの制御では、基本的には他の高度な情報処理分野におけるマルチプロセッサ化の技術を真似ているため、高機能化・高速化には向いているものの、それに適した高機能ではあるが高価なプロセッサやプロセッサ間通信が用いられるので、低価格化の要請には対応できない。かといって、低速(小さな通信容量や低い通信速度)の例えばUSB等のシリアルバス等を共通バスとして利用して、同様のマルチプロセッサの手法を採用したのでは、低価格化は図れても、例えば人間形ロボット等の実時間(リアルタイム)制御には、低速すぎて実用に耐えないものとなる。
【0005】
本発明は、低速の共通バス等を利用しつつそれを介した通信を最小限に押さえることによって、低価格化と高速化とを同時に図ることができるロボットの制御装置およびロボットの制御方法を提供することを目的とする。
【0006】
【課題を解決するための手段】
本発明の制御装置は、多関節形のロボットの複数の関節に対応して、それぞれ単一の関節の制御のみを担当する複数のサーボコントローラと、前記複数のサーボコントローラに対して、それぞれが担当する各関節の動作を指示する個別の制御データを、共通バスを介して送信するメインコントローラと、前記ロボットの各関節の状態を検出する状態検出手段と、を備えたロボットの制御装置であって、前記各サーボコントローラは、前記共通バスを介しての自己に対する前記制御データのみに基づいて、担当する各関節の制御動作を完結可能に構成され、前記メインコントローラは、検出された前記各関節の状態に基づいて、前記各関節の次の動作のための目標を設定する目標設定手段と、設定された前記目標に基づいて前記制御データを生成する制御データ生成手段と、生成された前記制御データを前記共通バスを介して送信する送信手段と、を有することを特徴とする。
【0007】
また、本発明の制御方法は、多関節形のロボットの複数の関節に対応してそれぞれ単一の関節の制御のみを担当する複数のサーボコントローラに対して、それぞれが担当する各関節の動作を指示する個別の制御データを、メインコントローラから共通バスを介して送信するロボットの制御方法であって、前記各サーボコントローラは、前記共通バスを介しての自己に対する前記制御データのみに基づいて、担当する各関節の制御動作を完結可能に構成され、前記ロボットの各関節の状態を検出する状態検出工程と、検出された前記各関節の状態に基づいて、前記各関節の次の動作のための目標を設定する目標設定工程と、設定された前記目標に基づいて前記制御データを生成する制御データ生成工程と、生成された前記制御データを前記共通バスを介して送信する送信工程と、を有することを特徴とする。
【0008】
この制御装置および制御方法では、各関節の制御を担当する各サーボコントローラに対して、メインコントローラから共通バスを介して制御データを送信し、その制御データのみに基づいて各関節の制御を行う。この場合、各サーボコントローラは、それぞれ単一の関節の制御のみを担当するため、自己に対する制御データの受信のみに基づいて、担当する各関節の制御動作を完結可能に構成されている。このため、制御の種類等を指示するコマンド等をメインコントローラから改めて受信する必要がなく、共通バスを利用した通信を最小限に押さえることができ、これにより、低速ではあっても低価格な例えばUSB等のシリアルバス等を共通バスとして利用し易くなる。また、各関節の状態は検出されているので、メインコントローラでは、各サーボコントローラによる処理結果を待つための待ち合わせ処理等を行う必要がなく、目標設定その他の処理に専念できるので、全体として処理を高速化でき、リアルタイム制御にも適したものになる。すなわち、低速の共通バス等を利用しつつそれを介した通信を最小限に押さえることによって、低価格化と高速化とを同時に図ることができる。
【0009】
【発明の実施の形態】
以下、本発明の一実施形態に係る脚式歩行ロボットについて、添付図面を参照しながら詳細に説明する。この脚式歩行ロボットは、2足歩行の小型ロボット(身長30cm程度)であり、歩行動作において、いわゆる静的歩行を行うように設計されている。
【0010】
図1に示すように、この脚式歩行ロボット(以下単に「ロボット」)1は、頭部H1、胴部10、一対の腕部(右腕部R61、左腕部L61)および一対の支持脚部(以下単に「脚部」:右脚部R11、左脚部L11)を備えている。また、図2に示すように、制御系の中枢となるメインコントローラ20を胴部10に内蔵し、頭部H1、右腕部R61および左腕部L61の各制御部、並びに、右脚部R11および左脚部L11の各制御部(右脚制御部R21、左脚制御部L21)と、USB等のバス(シリアルバス)H1B並びに21Bを介して、接続されている。このロボット1は、ロボット中心点Pを考慮しながら、一対の脚部である右脚部R11と左脚部L11を交互に踏み出し動作して2足歩行するものである。このため、説明の都合上、以下では、胴部10および脚部11(右脚部R11、左脚部L11)を中心に説明し、頭部H1、右腕部R61および左腕部L61についての説明は適宜省略する。
【0011】
なお、上述の「ロボット中心点」は、ZMP(Zero Moment Point :床圧力によるモーメントがゼロになる床面上の点)の意味を含むものとする。また、参照符号の「R〜」および「L〜」は、それぞれ「右」および「左」を示すが、以下、左右共通の事項に関しては、これらを代表して「R」や「L」を省略して説明する。例えば上記の一対の脚部は、個別には「右脚部R11」や「左脚部L11」であるが、左右共通の事項に関しては、「脚部11」のように説明する。また、姿勢の3自由度の軸を、図4(a)に示すように、ロール軸(R軸)、ピッチ軸(P軸)、ヨー軸(Y軸)とする。また、同図(b)のように実際の構造体(機構構成要素)の形態によって複数の軸を兼ねる様子を示すこともあるが、本実施形態では、実際の形態(構造)に拘わらず、同図(c)に示すように、各軸の要素(機構構成要素)を単一の軸要素によって示し、参照符号を「〜R」(ロール軸)、「〜P」(ピッチ軸)、「〜Y」(ヨー軸)とする。
【0012】
まず、図1〜図3に示すように、脚部11は、股関節部(股関節駆動ユニット)12と、大腿部13と、膝関節部(膝関節駆動ユニット)14と、頸部15と、足首関節部(足首関節駆動ユニット)16と、足部(足平部、足部本体)17と、を備えている。
【0013】
股関節部12は、図1〜図3および図5に示すように、股関節ヨー軸12Yと、股関節ロール軸12Rと、股関節ピッチ軸12Pと、これらの駆動と各回転角の検出を行う股関節駆動・検出部32と、これらの制御のための股関節制御部42と、動力を大腿部13に伝達する図外の動力伝達機構(以下同様に「動力伝達機構」は図示省略)と、を備えている。
【0014】
股関節駆動・検出部32は、股関節ヨー軸12Yを中心に大腿部13を正逆回動(動作)させるためにその回転角(ヨー角)を制御可能に駆動する股関節ヨー角モータ2YMと、駆動された実際のヨー角を検出する股関節ヨー角センサ(例えばポテンショメータ)2YSと、同様に、股関節ロール軸12Rの回転角(ロール角)を制御可能に駆動する股関節ロール角モータ2RMと、そのロール角を検出する股関節ロール角センサ2RSと、股関節ピッチ軸12Pの回転角(ピッチ角)を制御可能に駆動する股関節ピッチ角モータ2PMと、そのピッチ角を検出する股関節ピッチ角センサ2PSと、を備えている。
【0015】
股関節制御部42は、図外のCPU、ROM、RAM等をそれぞれ有するサーボコントローラ2YB、2RBおよび2PBと、同様の構成のセンシングコントローラ2YC、2RCおよび2PCと、を備え、バス21Bを介して胴部10のメインコントローラ20と接続され、脚制御部21の一部として、メインコントローラ20と連携(連動)しつつ、股関節部12内各部を制御している。ここで、各サーボコントローラ2YB、2RBおよび2PBは、それぞれメインコントローラ20からの駆動制御データに基づいて、各モータ2YM、2RMおよび2PMの駆動を制御し、各センシングコントローラ2YC、2RCおよび2PCは、各センサ2YS、2RSおよび2PSからの検出信号を、それぞれメインコントローラ20に検出制御データとして出力(報告)する。
【0016】
膝関節部14は、図1〜図3および図6に示すように、膝関節ピッチ軸14Pと、その駆動と回転角の検出を行う膝関節駆動・検出部34と、これらの制御のための膝関節制御部44と、動力を頸部15に伝達する動力伝達機構と、を備えている。膝関節駆動・検出部34は、膝関節ピッチ軸14Pを中心に脛部15を正逆回動(動作)させるためのピッチ角を制御可能に駆動する膝関節ピッチ角モータ4PMと、そのピッチ角を検出する膝関節ピッチ角センサ4PSと、を備えている。
【0017】
膝関節制御部44は、上述の股関節制御部42と同様に、バス21Bを介してメインコントローラ20と接続され、メインコントローラ20からの駆動制御データに基づいてモータ4PMの駆動を制御する上述同様のサーボコントローラ4PBと、同様にセンサ4PSからの検出信号をメインコントローラ20に検出制御データとして出力するセンシングコントローラ4PCと、を備え、脚制御部21の一部として、メインコントローラ20と連携して、膝関節部14内各部を制御している。
【0018】
足首関節部16は、図1〜図3および図7に示すように、足首関節ピッチ軸16Pと、足首関節ロール軸16Rと、これらの駆動と各回転角の検出を行う足首関節駆動・検出部36と、これらの制御のための足首関節制御部46と、動力を足平部17に伝達する動力伝達機構と、を備えている。足首関節駆動・検出部36は、足首関節ピッチ軸16Pを中心に足平部17を正逆回動(動作)させるためのピッチ角を制御可能に駆動する足首関節ピッチ角モータ6PMと、そのピッチ角を検出する足首関節ピッチ角センサ6PSと、同様に、足首関節ロール軸16Rのロール角を制御可能に駆動する足首関節ロール角モータ6RMと、そのロール角を検出する足首関節ロール角センサ6RSと、を備えている。
【0019】
足首関節制御部46は、上述の股関節制御部42等と同様に、バス21Bを介してメインコントローラ20と接続され、メインコントローラ20からの駆動制御データに基づいて各モータ6PMおよび6RMの駆動を制御する上述同様のサーボコントローラ6PBおよび6RBと、同様に各センサ6PSおよび6RSからの検出信号をメインコントローラ20に検出制御データとして出力するセンシングコントローラ6PCおよび6RCと、を備え、脚制御部21の一部として、メインコントローラ20と連携して、足首関節部16内各部を制御している。
【0020】
足平部17は、図1〜図3および図8〜図11に示すように、足平部17の下側に固定され下面の平面形状に対応して略方形に形成された足裏プレート17Sと、足裏プレート17Sの状態を検出する足裏検出部(足裏センサ部)37と、検出結果に基づく制御を行うための足裏制御部47と、を備えている。
【0021】
足裏検出部37は、それぞれ気体センサから成りそれぞれ進行方向(歩行方向:図示の太い矢印(←)の方向)に向かって足裏プレート17Sの左前(LF)、右前(RF)、左後(LB)および右後(RB)の接地圧力を検出する4つの圧力センサ7LFS、7RFS、7LBSおよび7RBS(以下、各センサを区別無く総称するときには「圧力センサ7S」という)と、4つの各圧力センサ7Sの収容ケースを兼ねる箱状のセンサホルダ51と、を備えている。そして、4つの圧力センサ7Sは、相互に離間するように、平面視略方形に形成された足裏検出部37の4隅にそれぞれ配設されている。
【0022】
なお、実施形態における4つの(気体)圧力センサ7Sは、足裏プレート17Sの中心線に対し左右対称であって、相互の中心軸を結ぶ線が長方形を為すように配設されているが、これを、台形を為すように配設してもよい。また、これに代えて、足裏プレート17Sの中心線に対し左右対称であって、相互の中心軸を結ぶ線が2等辺三角形を為すように配設した、3つの圧力センサ7Sで構成してもよい。
【0023】
センサホルダ51は、ケース状のホルダ本体52と、ホルダ本体52の上側に設けたトッププレート53と、ホルダ本体51の下側に設けたボトムプレート54とから成り、ホルダ本体52には、4つの圧力センサ7Sを収容する4つのセンサ収容部52aが形成されている。トッププレート53の下面には、4つのセンサ収容部52aから外れるように4つのボス部53aが突出しており、このボス部53aに、足裏検出部37を固定するためのねじが上側から螺合するようになっている。また、ボトムプレート54には、4つの圧力センサ7Sの検出子74が貫通する4つのガイド孔(貫通孔)54aが形成されている。
【0024】
各圧力センサ7Sは、センサ本体71と、センサ本体71の下側に連なる圧力室72と、圧力室72の下部開放端を気密に封止する封止膜体73と、封止膜体73に下側から当接してこれを押圧変形させる検出子74とを有している。また、封止膜体73の上側に位置して、変形した封止膜体73を基準姿勢に復帰付勢する復帰ばね(コイルばね)55aおよび当て板55bから成る復帰部材55を有している。
【0025】
検出子74の圧力(足着反力)が作用すると、検出子74が上動し、復帰部材55のばね力に抗して封止膜体73を押圧変形させる。この変形により、圧力室72が収縮し内部圧力が高まりこの圧力をセンサ本体71が検出するようになっている。この状態から、検出子74に加わる圧力が減少すると、復帰ばね55aにより当て板55bが押され、封止膜体73および検出子74が元の基準姿勢に復帰(復元)する。
【0026】
センサ本体71は、シリコン75aをダイアフラム構造に加工し、これにピエゾ抵抗等に基づくゲージセンサ75bを作り込んだチップ75を、圧力室72に連なるガラス基板のパッケージ76に収容したものである。そして、連通孔76aを形成したパッケージ76の突出部分76bを、圧力室72に連なる開口に嵌合(気密に接着)して、圧力室72に臨ませるようにしている。
【0027】
圧力室72は、主要部が上記のセンサ収容部52aで構成されており、天面に形成した下向きの上環状溝55cに上記の復帰ばね55aが収容されている。また、円形に形成された当て板55bの上面には、復帰ばね55aを受ける上向きの下環状溝55dが形成されている。すなわち、復帰ばね55aは、上環状溝55cを受けとして下環状溝55dを介して当て板55bを下方に付勢している。封止膜体73は、シリコンゴム等で構成された円形の膜体であり、圧力室72の下部開放端を閉塞するようにホルダ本体52の下面に気密に接着されている。
【0028】
検出子74は、封止膜体73に接触する円形板部74aと、円形板部74aから下方に延びる軸部74bとから成り、断面略「T」字状に形成されている。軸部74bは、上記のボトムプレート54の貫通孔54aに対し上下方向にスライド自在に係合しており、貫通孔54aの縁部に相当するボトムプレート54の上面が検出子74の下動端位置を位置規制している。すなわち、封止膜体73が水平な基準姿勢に復帰した状態で、検出子74がボトムプレート54の上面に当接するようになっている。軸部74bの下端は半球状に形成され、この下端で検出子74が足裏プレート17Sに接着或いはねじ止め固定されている(図示のものは「ねじ止め」)。
【0029】
足裏プレート17Sは、厚手の樹脂板または金属板で構成されており、図示では省略したが、その足裏面となる下面には滑止め用のシートが貼着され、或いは滑止め用の加工が施されている。そして、足裏プレート17Sの下面の4隅には円形の浅溝17Saが形成され、この各浅溝17Saの中心位置に、各圧力センサ7Sの検出子74に螺合する固定ねじ17Sbが設けられている。すなわち、足裏プレート17Sは、4つの圧力センサ7Sを相互に連結するように設けられている。
【0030】
このように、足平部17の裏面に設けた4つの圧力センサ7Sを足裏プレート17Sで連結するようにしているため、足着の際の床面からの反力(接地圧力)を4つの圧力センサ7Sの圧力値の総和として検出することができるとともに、4つの圧力センサ7Sの圧力値を比較することにより、体躯の傾きなども検出することができる。また、両方の足平部17の各4つの圧力センサ7Sの検出結果から、水平面内における重心位置(ロボット中心点)Pも検出できる。
【0031】
なお、本実施形態では、足裏検出部37と足裏プレート17Sとを分けて構成しているが、一体化して足裏プレート17Sを省略することも可能である。かかる場合には、上記検出子74の下端を平板状とし、各検出子74の接地面積を大きくすることが好ましい。さらに、実施形態では、圧力センサ7Sとして気体センサを用いたが、足裏反力(接地圧力)を検出可能なものであればセンサの種類は限定されるものではない。
【0032】
次に、図1〜図3に示すように、腕部61(右腕部R61、左腕部L61)は、胴部10に対し腕部61をロール方向に回動させるための肩関節ロール軸61Rと、ヨー方向に回動させるための肩関節ヨー軸61Yと、これらを駆動する図外の(肩関節ロール駆動機構と肩関節ヨー駆動機構と各回転角のセンサ等を有する)腕駆動・検出部と、バスH1Bを介して接続された胴部10のメインコントローラ20と連携して腕部61内各部を制御するための図外の腕制御部と、腕部61内各部を作動させるための動力を伝達する図外の動力伝達機構と、を備えている。
【0033】
また、頭部H1は、人間が頭部に有する目、鼻、口等の各機能を擬似的に実現するための光(画像)や音(振動)などについての各種センサや各種ドライバ(図示省略)と、バスH1Bを介して接続されたメインコントローラ20と連携して頭部H1内各部を制御するための図外の頭制御部と、頭部H1内各部(目、口等)に動力を伝達する図外の動力伝達機構と、を備えている。
【0034】
また、胴部10には、メインコントローラ20と、図外の電源ユニットと、胴部10内各部に動力を伝達する図外の動力伝達機構と、を備えている。
【0035】
メインコントローラ20は、CPU210と、ROM220と、RAM230と、周辺制御回路(Peripheral Controller :以下「P−CON」)240と、を備え、互いに内部バス20Bにより接続されている。ROM220は、CPU210で処理する制御プログラムを記憶する制御プログラム領域221と、各部制御の基礎(基準)となる仕様データや基準データ等の制御データを記憶する制御データ領域222を有している。
【0036】
RAM230は、制御テーブル領域231と、情報テーブル領域232と、を有し、各種処理の作業領域として使用される。制御テーブル領域231には、ロボット1内各制御部のサーボコントローラ(例えば図5で前述のサーボコントローラR2YB等:以下、各サーボコントローラR〜B、L〜Bなどを区別無く総称するときには「サーボコントローラSBC」という)に送出(指令)する駆動制御データの元になる制御テーブルが記憶される。また、情報テーブル領域232には、ロボット1内各制御部のセンシングコントローラ(例えば図5で前述のセンシングコントローラR2YC等:以下、各センシングコントローラR〜C、L〜Cなどを区別無く総称するときには「センシングコントローラSSC」という)から入力(報告)された検出制御データに基づく現在状態の情報テーブル(現状テーブル:リードテーブル:現状データ)や、それに基づいて(演算やテーブル参照によって)導出された次の目標状態の情報テーブル(目標テーブル:ムーブテーブル:目標データ)、などの情報テーブルが記憶される。
【0037】
P−CON240には、CPU210の機能を補うとともにロボット1内各制御部とのインタフェース(バスインタフェース)を行うための論理回路や種々の計時を行うタイマー等の機能回路などが、ゲートアレイやカスタムLSIなどにより構成されて組み込まれている。このため、P−CON240は、各部のセンシングコントローラSSCからの検出制御データをそのままあるいは加工して内部バス20Bに取り込むとともに、CPU210と連動して、CPU210等から内部バス20Bに出力された駆動制御データを、そのままあるいは加工して、各部のサーボコントローラSBCに出力する。
【0038】
そして、CPU210は、上記の構成により、ROM220内の制御プログラムや制御データに基づいて、P−CON240を介して各部からの検出制御データを入力し、それらが示す現状値から目標値やそのための制御値を導出して、RAM230内の制御テーブルや情報テーブルを書き換えるなど、各種データ等を処理し、P−CON240を介して各部に駆動制御データを出力することにより、ロボット1全体を制御している。
【0039】
次に、ロボット1の制御全体の処理フローについて、図12を参照して説明する。なお、本処理および以下で説明する各種処理の処理フローは、ソフトウェア(プログラム:ファームウェアを含む)のみばかりでなく、その一部または全部をハードウェア(論理回路、機能回路等)によって実行するものも含むものとする。
【0040】
同図に示すように、電源オン等により処理(S0)が開始すると、まず、適宜所定の初期設定を行い(S1)、次に、各種規定の優先順位によって規制された各種割込を許可し(S2)、何らかの割込が発生するまでは、そのままの状態を維持し(S3:No)、何らかの割込が発生すると(S3:Yes)、それぞれの割込処理に移行して(S4)、その割込処理が終了すると、再度、その状態を維持する(S3:No)。
【0041】
例えば図13に示すように、現在「静止」中のロボット1に対し、頭部H1に対する「前進」等の発声による音声認識やリモコン操作あるいは所定のスイッチ等の操作により、(前進)歩行が指示されると、(前進)歩行指示割込が発生して、(前進)歩行処理(S10)が起動され、(前進)歩行プログラムに移行して(S11)、処理(S10)を終了する(S12)。
【0042】
この場合、例えばそれまでの静止処理等の制御プログラム等に代えて、歩行処理用の制御プログラム(歩行プログラム)をロードしても良いし、歩行プログラムのアドレスを指定するように(例えば歩行モードのセット(オン)等により)処理モードの切替等を行っても良い。これらにより、全体として各種割込に対するロボット1の処理(対応)が、「歩行」に適合したものとなる。また、この歩行プログラム実行中の状態遷移(制御モードあるいは制御対象期間の遷移)は、同図(b)に示すようになる(詳細は後述)。
【0043】
なお、上記の前進歩行処理の例のほか、後進歩行処理その他、起動可能な種々の処理の例を考え得る。例えばレーザ光等により目前の障害物等を検出(監視)可能なセンサなどを頭部H1の目の機能等として備えておき、障害物検出による割込発生によって静止処理(静止プログラム)を起動したり、その後、その静止中に周囲(左右等)を確認して、その確認検出結果(による割込)に応じて、方向転換処理を起動したり、その方向転換処理後には、それを確認後、再度、歩行処理を起動するなど、起動可能な制御プログラムの種類やその起動方法としては、種々のものが考慮でき、且つ実現可能である。
【0044】
また、ロボット1では、例えば図14に示すように、クロック信号の分周信号などに基づく制御用の同期トリガ(ロボット1のように小型の場合、1ms程度以下の周期が望ましい)により、周期制御割込が発生すると、状態検出・目標設定処理(S20)が起動され、まず、全センサ検出結果を取得するため、全てのセンシングコントローラSSCから検出制御データを入力し、RAM230内の前述の現状テーブルを書き換え(S21)、書き換えられた現状テーブルと、そのときの制御プログラム(例えば上述の歩行プログラム)に基づいて、演算やテーブル参照によって次の目標値を導出して、目標テーブルを書き換え(目標値設定)、現状テーブルの現状値と目標テーブルの目標値とから、目標値に一致させるための制御値を導出して、制御テーブルの書き換え(制御値導出)を行う(S22)。
【0045】
次いで、全サーボ(全関節)制御値を出力(指示)するため、その制御テーブルの値(制御値)を示す駆動制御データを、全てのサーボコントローラSBCに出力して(S23)、処理(S20)を終了する(S24)。
【0046】
なお、上述の処理(S20)の例は、定期的な制御処理を行う例、すなわちクロック等に同期して定期的(周期的)にメインコントローラ20と各サーボコントローラSBCや各センシングコントローラSSCとの間の通信(以下「コントローラ間通信」)を行うことによってロボット1全体を制御する例、であるが、不定期(非同期)に制御処理を行うこともできる。
【0047】
この場合、例えば図示の処理(S30)のように、ロボット1内各部のセンサにより変化が検出され、そのセンサ毎に個別の個別検出割込が発生すると、個別検出・目標設定処理(S30)が起動され、その割込要因となったセンサによる検出結果を取得するため、そのセンサを担当するセンシングコントローラSSCから検出制御データを入力して、前述の現状テーブルを書き換え(S31)、同様にそのときの制御プログラムに基づいて、目標値設定(目標テーブル書換)や制御値導出(制御テーブル書換)を行う(S32:S22と同じ)。
【0048】
また、上述では、全サーボ(全関節)制御値出力(S23)を行ったが、点線で図示のように、一旦、現状テーブルの現状値と目標テーブルの目標値と間で差があるもの、言い換えると現状と異なる状態に変化(動作)させる必要のあるもの、のみを抽出し(S33)、その分の制御テーブルの値(制御値)を示す駆動制御データのみを、それに対応するサーボコントローラSBCのみに出力(S34)しても良く、これにより、差分があるものが少ない場合等において、コントローラ間通信を効率化・短縮化できる。
【0049】
ところで、上述の目標値設定・制御値導出処理(S22またはS33)では、例えば図15に示すように、処理(S40:S22やS32のためのサブルーチン)が起動されると、まず、足裏圧平均化(導出)処理を行う(S41)。
【0050】
なお、例えばこの「足裏圧平均化(導出)処理(S41)」で導出された制御値に従って処理(制御)を実行すれば、「足裏圧平均化」を行うことができるが、本処理(S40)では、目標値設定や制御値導出までを行うので、以下に説明する全ての処理は導出処理となる(この意味で「導出」と括弧書きしている)。
【0051】
また、以下では、説明の都合(効率化)上、左足平部L17の足裏左前センサL7LFS、足裏右前センサL7BFS、足裏左後センサL7LBSおよび足裏右後センサL7BFSを、センサ▲1▼、▲2▼、▲3▼および▲4▼とし、同様に右足平部R17についてのセンサR7LFS〜R7BFSを、センサ▲5▼〜▲8▼とする(図17等参照)。また、左足平部L17単独で検出された接地圧力(床反力)のみから求められる重心(床面に投影した重心:以下同じ)を左足重心(左足重心点)LPとし、左足重心LPの目標点を左足目標点(左足中心点、左足重心目標点)LDとし、同様に右足平部R17についての重心を右足重心(右足重心点)RP、目標点を右足目標点(右足中心点、右足重心目標点)RDとし、さらにロボット1全体としての重心を前述のロボット中心点(重心、重心点)P、その目標点を目標点(重心目標点)Dとする。
【0052】
ここで、例えば図16に示すように、左足のセンサ▲1▼の出力値(検出値:圧力値)が100(単位は省略:以下「▲1▼=100」のように示す)、同様に▲2▼=200、▲3▼=200、▲4▼=400の場合、総和は(▲1▼+▲2▼+▲3▼+▲4▼=)900であり、現状では概ね図示の▲1▼▲4▼を結ぶ対角線上の▲4▼に近い位置に左足重心点LPがあるが、▲1▼〜▲4▼の各検出値の全てが平均値225と一致したときに、左足目標点LDに一致するので、この場合、上述の足裏圧平均化(導出)処理(S41)では、左足目標点LDを目標値として、現状値である左足重心点LPを図示の矢印の方向に移動させて左足目標点LDに一致させるための制御値を、演算またはテーブル参照等によって求める(導出する)。
【0053】
より具体的には、前後の差分だけ、すなわち▲1▼と▲2▼の和と▲3▼と▲4▼の和との差((▲1▼+▲2▼)−(▲3▼+▲4▼))を解消(相殺)する分だけ、足首関節ピッチ軸L16Pを回転させるための制御値を導出する。この値は、サーボコントローラL6PBを介して足首関節ピッチ角モータL6PMを駆動するための駆動制御データの元値となる。同様に、左右の差分((▲1▼+▲3▼)−(▲2▼+▲4▼)に相当する分)の相殺分だけ足首関節ピッチ軸L16Rを回転させるための制御値を導出し、サーボコントローラL6RBを介して足首関節ロール角モータL6RMを駆動するための駆動制御データの元値とする。
【0054】
そして、上述と同様のことを右足のセンサ▲5▼〜▲8▼に対して行うことで、右平足R17について、右足目標点RDに右足重心点RPを一致させるための制御値を導出する。
【0055】
上述の足裏圧平均化(導出)処理(S41)が終了すると、図15に示すように、次に、静止時(すなわち現在処理中の制御プログラムが静止プログラムである場合あるいは処理モードが静止モードである場合等)か否かを判別し(S42)、静止時であるときには(S42:Yes)、次に、姿勢安定化(導出)処理を行ってから(S43)、処理(S40)を終了する(S44)。
【0056】
ここで、例えば図17に示すように、左足平部L17の下面の略四角の各点をa〜d、右足平部R17の各点をe〜hとし、図示のように左足が前の場合、外側の角a、b、f、h、g、cを結ぶ多角形(a−b−f−h−g−cを結ぶ多角形:足裏部分+斜線部分)の仮想領域A内に、全体の重心点(ロボット中心点)Pがあれば転倒しないが、姿勢として最も安定した場合の重心点(すなわち理想の重心点)は、概ね図示の左足重心点LPと右足重心点RPとを結ぶ線Nの中央(中心)に相当する点となるので、この点を目標点(重心目標点)Dとする。なお、右足が前の場合等においても同様である(図20等参照)。
【0057】
そこで、上述の足裏圧平均化(導出)処理(S41)によって、左足平部L17および右足平部R17のそれぞれの重心点が、図17に図示の左足重心点LPと右足重心点RPにあるものとすると、仮に、左足のセンサ▲1▼〜▲4▼の出力の総和(▲1▼+▲2▼+▲3▼+▲4▼=)900、右足のセンサ▲5▼〜▲8▼の総和(▲5▼+▲6▼+▲7▼+▲8▼=)1800の場合、ロボット中心点Pは、概ね同図(b)に図示のように線N上の右足側に片寄った(約1/3の)位置にあるので、この場合、上述の姿勢安定化(導出)処理(S43)では、重心目標点Dを目標値として現状値であるロボット中心点Pを一致させ(Pを矢印の方向に移動させてDに一致させ)、同図(b)のようにするための制御値を導出する。この値は、ロボット1内各部(特に脚部11内各部)の各関節を制御する各サーボコントローラSBCに指示する駆動制御データの元値となる。
【0058】
また、図15に示すように、静止時でないときには(S42:No)、次に、前進歩行時(すなわち現在処理中の制御プログラムが前進歩行プログラムである場合あるいは処理モードが前進歩行モードである場合等)か否かを判別し(S45)、前進歩行時でないときには(S45:No)、そのときの制御プログラムや処理モードに従った他の処理(他の処理モードにおける目標値設定・制御値導出処理など)を行った後(S46)、処理(S40)を終了する(S44)。
【0059】
また、前進歩行時であるときには(S45:Yes)、両足安定期(図13の(t1)または(t4)の状態:すなわち歩行時ではあるが、その時点から両足による安定状態に移行しようとしている期間:図17または図20参照)か否かを判別し(S51)、両足安定期であるときには(S51:Yes)、上述の静止時と同様に、姿勢安定化(導出)処理を行ってから(S43)、処理(S40)を終了する(S44)。
【0060】
また、前進歩行時ではあるが(S45:Yes)、両足安定期ではないときには(S51:No)、次に、重心移行期(図13の(t2)または(t5)の状態:すなわち重心のない方の足を前に踏み出すために他方の足を軸足としてその足に重心を移行する期間であり、静歩行のための重心移行期間)か否かを判別し(S52)、重心移行期であるときには(S52:Yes)、次に、左足重心(すなわち左足を軸足とするために左足に重心を移行する)か否かを判別し(S53)、左足重心((t2)の状態)であるときには(S53:Yes)、左足重心移行(導出)処理を行ってから(S54)、処理(S40)を終了する(S44)。
【0061】
この左足重心移行(導出)処理(S54)では、例えば図18に示すように、左足重心点LPを重心目標点Dとする。すなわち、例えば反対側の右足を踏み出す場合等において、静的にも転倒しないためには、左足に全体重を乗せてその足裏の範囲(図示では左足平部L17の下面の略四角a−b−c−dで囲む範囲)に重心(ロボット中心点)Pがあれば倒れないが、姿勢として最も安定する理想重心点は、左足重心点LPとなるので、この点を重心目標点Dとして、ロボット中心点Pを矢印の方向に移動させて重心目標点D(左足重心点LP)に一致させるための制御値を導出し、脚部11内各部等の各関節を制御する各サーボコントローラSBCへの駆動制御データの元値とする。
【0062】
また、図15に示すように、左足重心でないとき(図13の(t5)の状態)には(S53:No)、上述の左足重心移行(導出)処理(S54)と同様ではあるが、右足を重心とする右足重心移行(導出)処理を行ってから(S55)、処理(S40)を終了する(S44)。
【0063】
また、重心移行期でないときには(S52:No)、片足踏出期(図13の(t3)または(t6)の状態)であると判別し、次に、左足重心(すなわち左足を軸足として右足を踏み出す)か否かを判別し(S56)、左足重心であるとき(図13の(t3)の状態)には(S56:Yes)、右足踏出(導出)処理を行ってから(S57)、処理(S40)を終了する(S44)。
【0064】
この右足踏出(導出)処理(S57)では、例えば図19に示すように、左足重心点LPを重心目標点Dとして一致させたまま、反対側の右足を踏み出すために、右足目標点RDのみを前方に移行させ、ロボット中心点Pを重心目標点D(左足重心点LP)に一致させたまま、右足重心点RPを矢印の方向に移動させて右足目標点RDに一致させるための制御値を導出し、各部の各関節を制御する駆動制御データの元値とする。
【0065】
また、図15に示すように、左足重心でないとき(図13の(t6)の状態)には(S56:No)、上述の右足踏出(導出)処理(S54)と同様ではあるが、右足を重心(軸足)として左足を踏み出す左足踏出(導出)処理を行ってから(S58)、処理(S40)を終了する(S44)。
【0066】
そして、例えば図19で上述の右足踏出(導出)処理が終了した時点(図13の(t3)の状態が終了した時点)で、両足安定期((t4)の状態)に移行し、図15で前述のように、両足安定期となったときには(S51:Yes)、例えば図20に示すように、前述同様の姿勢安定化(導出)処理を行ってから(S43)、処理(S40)を終了する(S44)。もちろん、この状態((t3)の状態)から後には、図18〜図20で上述した処理と同様の処理を反対の足について行うことにより((t4)〜(t1)の状態遷移により)、2足の静歩行の処理が行われる。
【0067】
ところで、足部が接地(足着)する床面は一様に平坦ではない。例えば、ドアの足摺部や階段等では、足裏面の一部が接地状態で他の一部が非接地状態となる場合が生じる。例えば図21に示すように、左足平部L17の断面において、位置P1および位置P2に各1つのセンサ7Sが設けられている場合、仮に足裏プレート17Sが無くて各圧力センサ7Sが独立していると、他の位置、例えば図示の位置P3に対応する床面にある突起物Tを踏みつけても、それが各圧力センサ7Sに接触しない限り、それを検出することはできない。
【0068】
これに対し、ロボット1では、足裏プレート17Sを備えて複数の圧力センサ7Sが相互に連結されているので、突起物Tを踏んだときには、各圧力センサ7Sによりその突起物Tの位置P3からの距離L1および距離L2に反比例した圧力が検出できる。このため、床面の凹凸等(例えば足摺部や階段)により、一部の圧力センサ7Sが誤検出(非検出も含む)となることがない。
【0069】
また、この場合、図15で前述した足裏圧平均化(導出)処理(S41)により検出値を平均化して、位置P1と位置P2の双方から等距離の左足目標点LDに、図16で前述と同様に左足重心点LPを一致させると、実際の重心点は、左足目標点LD(左足重心点LP)ではなく、図示の位置P3と位置P2の双方から等距離の仮重心点Qに一致する。この場合、突起物Tと床面に接地する一点とを含む多角形が一時的な足裏となり、仮重心点Qが左足目標点LDより安定する点となるので、上記の足裏圧平均化(導出)処理(S41)が、あたかも理想の仮重心点Qに実際の重心点を一致させて安定化する処理(の代用)になる。このため、床面の突起物T等による影響を受けにくく、転倒のない適切な2足歩行を確保できる。
【0070】
上述のように、ロボット1では、静止時(立ち動作)において、両足部の足裏面同士を外形線で結ぶ仮想領域Aから、ロボット中心点(重心)Pが外れないように姿勢を制御し、且つ歩行時(歩行動作)において、軸足となる足部の足裏面から、ロボット中心点Pが外れないように姿勢を制御するようにしているため、転倒することなく適切な2足歩行が可能であり、しかも、制御が容易なため、応答性が良好となり、歩行速度をアップすることができる。また、各足部(足平部)17における複数の圧力センサ7Sの圧力値が略均等になるように体躯の姿勢を制御するので、床面に凹凸や傾斜があっても、2足歩行を安定に行うことができる。
【0071】
ところで、ロボット1では、サーボコントローラSBCやセンシングコントローラSSCへの処理の負荷分担を工夫し、メインコントローラ20とのコントローラ間通信を最小限に押さえることによって、低価格ではあるが低速の(通信容量や通信速度が低い)例えばUSB等のシリアルバス等を利用しても、メインコントローラ20の負荷を軽減することができ、かつ、それによってロボット1全体の処理能力(動作速度等)を向上できるようにしているので、以下、この点について説明する。
【0072】
まず、ロボット1におけるコントローラ間通信のための初期設定について説明する。一般に、いわゆる「ホスト」となるメインコントローラ20と、いわゆる「クライアント」となるサーボコントローラSBCやセンシングコントローラSSCと、の間でのコントローラ間通信を、共用(共通)バスを介して行うためには、各コントローラを区別する個別のIDが必要となる。ここでは、共通バス(バスH1Bやバス21B)としてUSBを採用すると、IDはUSBアドレスであり、このUSBアドレスの割当も、ホスト(メインコントローラ20)が、各クライアント(サーボコントローラSBC、センシングコントローラSSC)に対して行う。
【0073】
なお、一般のUSBの規格(仕様:プロトコル等を含む)によれば、ホストは、転送開始を伝えるパケットであるトークンを、バスを介してブロードキャストで発行する。これに対して、Hub等を含む各周辺機器(クライアント)は、トークンに含まれるアドレスが自己を示しているときには以降の転送データ等を受信し、自己を示していないときにはそれを無視する。ここで、各クライアントは、USBに接続された時点でアドレス(以下「USBアドレス」)を割り当てられるが、固有のUSBアドレスが割り当てられるまではデフォルトアドレス[00h](16進の「00」:以下同様に[〜h]で16進を示す)に反応する。
【0074】
この点、ロボット1では、一般公開のUSB規格(仕様)に完全一致させる必要もないので、各クライアントに対するハードウェア的な手法による設定(以下「ハード的に設定」)、例えば各クライアントが有するCPUのI/Oポート等を(クランプする等により)利用して設定、あるいはROM等(フラッシュROM等)に記憶させて設定、などにより、各クライアントに最初から個別のUSBアドレスを割り当てておくこともできる。ただし、この場合、ホストの都合等に応じた各USBアドレス等の変更が困難になる。
【0075】
かといって、各クライアントにUSBアドレスを設定しないまま電源オンを行って、その直後にデフォルトアドレス[00h]を呼び出せば、各クライアントが同時に反応してバス内での衝突が生じ、正常に初期設定等を行うことはできない。また、これに対して、Hubのダウンストリームポートを順番に有効化する方法(USBのEnumeration )等を真似るには、全部または要所となる一部のクライアントにHub的な機能を必要とする。
【0076】
そこで、ロボット1では、Hub的な機能を要することなく初期設定(USBアドレス設定)を適切に行うため、個別のUSBアドレスではなく、後述の応答タイマーの時間設定のための数値(以下「仮アドレス」)を、ハード的に個別に設定しておく。また、図12で前述の電源オンの直後には、ID(USBアドレス)は未設定とする。このため、初期設定(S1)では、ホスト(20)が、各クライアント(SBC、SSC)に対して、ID(USBアドレス)を設定することから開始する必要があるが、この設定のためのコントローラ間通信にもIDが必要となるので、一般的なUSB仕様と同様に、各クライアントのUSBアドレスはデフォルトアドレス[00h]としておく。
【0077】
図22および図23に示すように、電源オン後の最初のデフォルトアドレス[00h]への呼出Qa(図示の▲1▼)に対して、全クライアントが反応するのを回避するため、最初にアドレス設定するクライアント1以外のクライアント(例えばクライアント2)では、応答マスク期間Tm(例えばTm2)を設ける。この場合、各クライアントでは、初期設定(S1)において、各クライアント個別初期設定処理(S60)が起動され、まず、自己に対して予めハード的に設定された「仮アドレス」を読み込み(S61)、その仮アドレスに従って、応答マスクタイマーの時間(応答マスク期間)Tmを設定し、例えばクライアント2では応答マスク期間Tm2を設定して、その応答マスクタイマーを起動し(S62)、タイマータイムアップ(S63:Yes)となるまで、呼出Qa(図示の▲1▼)に対する応答Aa(図示の▲2▼)をマスクする(S63:No)。
【0078】
続いて、例えば応答マスク期間Tm2が経過して、クライアント2のタイマータイムアップとなると(S63:Yes)、今度は自分(クライアント2)の順番なので、メインからのデフォルトアドレス[00h]への呼出Qaを待ち(S64:No)、メインからの呼出Qa(図示の▲4▼)が発行されると(S65)、それに応じて(S64:Yes)、応答Aa(図示の▲5▼)を送信して、データ(設定するUSBアドレス)Daを受信して、格納する(S66〜S67)。なお、クライアント1では、クライアント1の仮アドレスに対応する応答マスク期間Tm1=0とすることで、本処理(S60)を利用できる。
【0079】
そして、上述の状態(S67)に移行後、各クライアントでは、概念的に同図に図示のクライアント定常処理(S68:図24で後述のS70と同意の処理)が可能となり、個別のUSBアドレスに対する呼出Qbを待ち(S71:No)、メインからの呼出Qbに対して(S72〜S71:Yes)、自己に対する呼出か否かを判別し(S73)、自己に対するものであれば(S73:Yes)、応答Abの送信および各種データDbの受信・格納を行ってから(S74〜S75)、さらに次のループ処理(S71〜S75)に移行し、自己に対するものでなければ(S73:No)、そのまま、次の呼出Qbを待つループ処理(S71〜S75)に移行する。
【0080】
なお、実際には、各クライアントにおいても、図12で前述の処理(S0)が行われ、初期設定(S1)において、上述のクライアント個別初期設定処理(S60)により個別のUSBアドレスを格納した後(S67)、一旦、処理(S60)を終了する(S69)。そして、その他も含む全ての初期設定が終了した後(図12のS1)、次に、各種規定の優先順位によって規制された各種割込を許可し(S2)、何らかの割込が発生するまでは、そのままの状態を維持し(S3:No)、何らかの割込が発生すると(S3:Yes)、それぞれの割込処理に移行して(S4)、その割込処理が終了すると、再度、その状態を維持する(S3:No)。
【0081】
このため、クライアント定常処理(S70)も、実際には、図24に示すように、メインからの個別のUSBアドレスに対する呼出Qbによる割込発生に応じて起動され、自己に対する呼出Qbか否かを判別し(S73)、自己に対するものであれば(S73:Yes)、応答Abの送信および各種データDbの受信・格納を行って(S74〜S75)、処理(S70)を終了し(S76)、自己に対するものでなければ(S73:No)、そのまま、処理(S70)を終了する(S76)。
【0082】
なお、各クライアントでは、自己に対する呼出か否かの判断時間(処理能力)等の要請から、自己に対するものか否かに拘わらず、一旦、データDa、Db等を受信しておき、自己に対するものか否かを判断後、自己に対するものでなければそのデータDA、Db等を破棄(無視)し、自己に対するものであるときに正規の格納領域等に格納するようにすれば、比較的低速ではあるが低価格のCPU等を使用可能となるので、ロボット1では、この方法を採用する。このため、図23や図24で上述の処理(S60、S70)では、応答Aa、Abの送信&データDa、Dbの受信をまとめた処理(S66、S74)の後、データDa、Dbの格納を行う処理(S67、S75)を行うようにしている(同趣旨を図26等でも後述する)。
【0083】
次に、ホスト(メインコントローラ20)側では、図12で前述の電源オン後の初期設定(S1)において、図25に示すように、メイン初期設定処理(S80)が起動され、まず、変数Nに1を設定(N←1)し、必要に応じて定数としてクライアント数nを設定する(S81)。
【0084】
次に、図22および図25に示すように、N番目(例えばN=1番目)のクライアント呼出のための遅延タイマーに遅延時間TN(例えば遅延時間T1)を設定して、その遅延タイマーを起動し(S82)、タイマータイムアップとなるまで待つ(S83:No)。続いて、設定された遅延時間T1分だけ時間が経過して、タイマータイムアップになると(S83:Yes)、最初のデフォルトアドレス[00h]への呼出Qa(図示の▲1▼)とともに、そのクライアント(ここではクライアント1)に設定するUSBアドレスをデータDaとして送出する(S84)。
【0085】
これに対し、前述のように、クライアント1では、呼出Qa(図示の▲1▼)とともにデータDaを受信しておき、呼出Qaが自己への呼出と判別された後に、応答Aa(図示の▲2▼)をホストに送出し、データDaを正規に格納する(このため▲3▼の位置に図示)。
【0086】
データDaの送出まで終了すると(S84)、次に、全クライアントにUSBアドレスを送出したか否かを判別し、具体的にはN←N+1として、N>nか否かを判別し(S85)、ここでは、N←1+1によりN=2≦nとすると(S85:No)、次に、N(ここではN=2)番目の遅延時間T2を設定して、その遅延タイマーを起動し(S82)、タイマータイムアップとなるまで待つ(S83:No)。続いて、遅延時間T2分だけ時間が経過して、タイマータイムアップになると(S83:Yes)、デフォルトアドレス[00h]への呼出Qa(図示の▲4▼)とともに、クライアント2に設定するUSBアドレスをデータDaとして送出する(S84)。
【0087】
これに対し、前述のように、クライアント2では、呼出Qa(図示の▲4▼)とともにデータDaを受信し、呼出Qaが自己への呼出と判別された後に、応答Aa(図示の▲5▼)をホストに送出し、データDaを正規に格納する(図示の▲6▼)。
【0088】
同様にして、n番目のクライアントnまでのデータDaの送出まで終了すると(S84)、全クライアントにUSBアドレスを送出したことになり、N=n+1>nとなるので(S85:Yes)、処理(S80)を終了する(S86)。なお、N=1〜n番目のクライアント呼出のための遅延時間は、上述のように相互間の遅延時間(T1、T2、……)で設定する他、個別にタイマーを設けて最初からの経過時間(図22のt1、t2、……)等で設定しても良い。
【0089】
そして、上述の状態(S85:Yes)になったことで、以降、各クライアントに対して、各個別のID(USBアドレス)を使用した制御が可能になり、例えば概念的に同図に図示のメイン定常処理(S87)が可能となり、定期タイミングを待ち(S871:No)、定期タイミングに発生する周期トリガに応じて(S872〜S871:Yes)、ホスト(メインコントローラ20)における定期的な処理その他を行い(S873)、続いて、次の定期タイミング(周期トリガ)を待つループ処理(S871〜S873)に移行する。
【0090】
もちろん、上述のメイン定常処理(S87)も、図13や図14等で前述の各種の割込発生に応じて起動される各種割込処理を概念的且つ総括的に示したものであり、例えば全体として歩行処理等を行っている場合(図13参照)、実際のメイン定期処理としては、図14で前述の状態検出・目標設定処理(S20)を主に行うことになる。
【0091】
そこで、次に、初期設定終了後の定常状態におけるホスト(メインコントローラ20)と各クライアントの双方の処理を含めた全体的且つ概念的な処理フローを、定期的処理である全体制御(S90)として説明する。
【0092】
図26に示すように、この全体制御(S90)では、まず、変数Nに1を設定(N←1)し、必要に応じて定数としてクライアント数nを設定し(S91)、続いて、N番目のクライアントに送出するためにそのクライアントを指定する呼出(トークン)Qb&データDbのブロードキャストを行う(S92)。すなわち、ここでは、N番目のクライアントがサーボコントローラSBC(以下「サーボ系」)の場合、N番目のクライアントのUSBアドレスを含む呼出Qb(トークン)とサーボ制御用のデータDbを送出する(図27の上段および図28参照)。ただし、クライアントがセンシングコントローラSSC(以下「センサ系」)の場合、USBアドレス以外はドントケア(don’t care)値となる。
【0093】
呼出Qb&データDbのブロードキャストが終了すると(S92)、全ての各クライアントのそれぞれが、データDbの仮受信を行う(S93)。すなわち、例えば図27および図28に示す「目標位置」「目標速度」「サーボ定数」(=「ゲインP」+「ゲインi」+「ゲインd」)等から成るデータDbを、個別ID(USBアドレス)に拘わらず、全てのクライアントが仮に受信する。
【0094】
続いて、対応クライアント(N番目のクライアント)が、応答Abを返信するとともに、データDbの本受信を行う(S94)。すなわち、呼出QbのUSBアドレスに対して自己のUSBアドレスが一致するN番目のクライアントだけが、ホスト(メインコントローラ20)に応答する。ここで、N番目のクライアントがサーボ系の場合には、例えば図27の下段に示すように、「現在位置」や「現在速度」を含めて(付帯して)応答し、センサ系の場合には、「センシング値」(センサ値:センサによる検出値)を付帯して応答する。
【0095】
以上の処理(S92〜S94)を、例えばN=1について終了後、次に、全クライアントに対応する処理を終了したか否か、具体的にはN←N+1として、N>nか否かを判別し(S95)、ここでは、全終了ではないので(S95:No)、N=2〜nについても同様にして処理(S92〜S94)を行った後(S95:Yes)、処理(S90)を終了する(S96)。
【0096】
なお、上述の全体制御(S90)は、前述のように定期的な処理であり、その内容から、ホスト(メインコントローラ20)の処理としては、ほぼ図14の状態検出・目標設定処理(S20)に該当する。ここで、例えばセンサ系を、Nが小さい値の方のクライアントとし、Nが大きな方にサーボ系を並べれば、図26の全体制御(S90)では、Nが小さいセンサ系を先に処理することによって、図14の全センサ検出結果取得(S21)の処理を先に終了させることができ、例えば図28に示すような目標テーブルの書き換え(目標値設定)〜制御値導出までの処理(S22)と可能な限り並行処理して(制御値が算出され次第、順次)、その後の全サーボ系に対する制御値出力(S23)を処理でき、その並列(処理)化によって周期トリガの周期を短縮化して高速化が図れる。
【0097】
上述のように、ロボット1では、各関節の制御を担当する各サーボコントローラSBC(サーボ系)に対して、メインコントローラ20から共通(USB)バスであるバスH1やバス21Bを介して、制御データ(データDb)を送信し、その制御データのみに基づいて各関節の制御を行う。この場合、図5〜図7等で前述のように、各サーボコントローラSBCは、それぞれ単一の関節の制御のみを担当するため(本実施形態では単一の軸の回転角制御等に絞るためさらに簡単に)、例えば図27および図28に示す「目標位置」「目標速度」「サーボ定数」等から成る自己に対する制御データDbの受信のみに基づいて、担当する各関節の制御動作を完結可能に構成されている。
【0098】
言い換えると、複雑な複数の処理の組合せによる制御の場合、個々の時点で処理する制御の種類等を指示するコマンド等をメインコントローラ20から受信したり、他のコントローラとのタイミング合わせ等のための通信が必要となるが、ロボット1のサーボ系では、これらを必要とせず、比較的単純な構成の制御データDbの受信のみで制御動作可能なので、共通バスを利用した通信を最小限に押さえることができる。例えば図27のデータフォーマットで、クライアント数n=20とした場合、1制御周期当たり、25バイト×20=500バイトなので、制御周期を1msとしても4Mbpsの転送レートで済む。すなわち、これにより、低速ではあっても低価格な例えばUSB等のシリアルバス等を共通バスとして利用し易くなる。
【0099】
一方、メインコントローラ20側においても、各サーボコントローラSBCによる処理結果を待つための待ち合わせ処理等を行う必要がなく、図14等で前述のセンサの検出結果に基づいて目標値設定〜制御値出力等の処理に専念できるので、コントローラ間通信に伴う負荷を軽減して、全体として処理を高速化でき、リアルタイム制御にも適したものになる。すなわち、低速の共通バス等を利用しつつそれを介した通信を最小限に押さえることによって、低価格化と高速化とを同時に図ることができる。
【0100】
なお、図26で前述の全体制御(S90)では、N=1〜nの全てのクライアントに対して呼出&データの送出を行ったが、図14で前述のように差分のみを抽出し(S33)、それに対応するクライアントのみに出力(S34)しても良く、これにより、平均的に、コントローラ間通信を効率化・短縮化できる。
【0101】
また、上述の例では、各種関節の各軸に対してサーボ系(サーボコントローラSBC)とセンサ系(センシングコントローラSSC)とを個別に設けたが、これらをまとめて、各軸毎に1つのコントローラとしたり、各関節毎に1つのコントローラとすることもでき、クライアント数を絞る(情報の送受信をまとめる)ことによって、共通バスの通信量を抑えることができる。
【0102】
また、上述の例では、各センサ系(センシングコントローラSSC)をも、共通バス(USBバス)におけるクライアントとして扱ったが、センサ値の抽出(報告)に共通バス以外の別の経路を利用することもでき、この場合、共通バスはサーボ系にのみ利用することになるので、さらに共通バスの通信量を抑えることができ、低速の共通バス等を利用しつつもさらにその通信の簡単化・高速化が図れる。もちろん、その他、要旨を逸脱しない範囲で、適宜変更も可能である。
【0103】
【発明の効果】
上述のように、本発明のロボットの制御装置およびロボットの制御方法によれば、低速の共通バス等を利用しつつそれを介した通信を最小限に押さえることによって、低価格化と高速化とを同時に図ることができる、などの効果がある。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る脚式歩行ロボットの全体斜視図である。
【図2】図1のロボットの制御系を示す概略ブロック図である。
【図3】図1のロボットの自由度構成モデルの模式図である。
【図4】図3の自由度構成モデルの前提の説明図である。
【図5】図2のロボットの股関節部の詳細ブロック図である。
【図6】膝関節部の、図5と同様の詳細ブロック図である。
【図7】足首関節部の、図5と同様の詳細ブロック図である。
【図8】足平部の、図5と同様の詳細ブロック図である。
【図9】図1のロボットの足平部および足裏プレートを示す構造図である。
【図10】図9の足平部および足裏プレートの分解斜視図である。
【図11】図9の足平部の圧力センサ廻りの拡大断面図である。
【図12】図1のロボットの制御全体の概略処理を示すフローチャートである。
【図13】(前進)歩行処理のフローチャートおよびその起動下における状態遷移の説明図である。
【図14】定期的な周期制御割込による状態検出・目標設定処理および不定期の個別検出割込による個別検出・目標設定処理のフローチャートである。
【図15】図14の目標値設定・制御値導出処理のフローチャートである。
【図16】図15の足裏圧平均化導出処理の原理を模式的に示す説明図である。
【図17】静止時または図13の前進歩行時における状態遷移が左足前の両足安定期のときの、図15の姿勢安定化導出処理の原理を模式的に示す説明図である。
【図18】図15の左足重心移行導出処理についての、図17と同様の説明図である。
【図19】図15の右足踏出導出処理についての、図17と同様の説明図である。
【図20】右足踏出後、状態遷移が右足前の両足安定期のときの、図17と同様の説明図である。
【図21】足裏プレートにより複数の圧力センサを連結した利点を示す説明図である。
【図22】初期設定において、各クライアントのIDであるUSBアドレスの設定を行うためのコントローラ間通信のイメージを示す説明図である。
【図23】クライアント個別初期設定処理のフローチャートである。
【図24】クライアント定常処理のフローチャートである。
【図25】メイン初期設定処理のフローチャートである。
【図26】全体的な定期的処理を概念的に示す全体制御のフローチャートである。
【図27】共通バスを使用したコントローラ間通信におけるデータフォーマットの一例を示す説明図である。
【図28】サーボコントローラのための制御データおよび目標テーブルや現在テーブルとして記憶する項目の一例を示す説明図である。
【符号の説明】
1 ロボット(脚式歩行ロボット)
10 胴体
11(R11、L11) …… 脚部(右脚部、左脚部)
12(R12、L12) …… 股関節部(右〜、左〜)
13(R13、L13) …… 大腿部(右〜、左〜)
14(R14、L14) …… 膝関節部(右〜、左〜)
15(R15、L15) …… 頸部(右〜、左〜)
16(R16、L16) …… 足首関節部(右〜、左〜)
17(R17、L17) …… 足平部(右〜、左〜)
17S(R17S、L17S) …… 足裏プレート(右〜、左〜)
20 メインコントローラ
20B、21B、H1B …… バス
21(R21、L21) …… 脚制御部(右〜、左〜)
51 センサホルダ
54 ボトムプレート(規制部材)
55 復帰部材
61(R61、L61) …… 腕部(右〜、左〜)
▲1▼〜▲8▼、7S、R7〜S、L7〜B …… (足裏)圧力センサ
71 センサ本体
72 圧力室
73 封止膜体
74 検出子
A 仮想領域
D(RD、LD) …… 重心目標点(右足〜、左足〜)
H1 頭部
P ロボット中心点
RP、LP …… 右足重心点、左足重心点
R〜P、L〜P …… ピッチ軸
R〜PM、L〜PM …… ピッチ角モータ
R〜PS、L〜PS …… ピッチ角センサ
R〜R、L〜R …… ロール軸
R〜RM、L〜RM …… ロール角モータ
R〜RS、L〜RS …… ロール角センサ
R〜Y、L〜Y …… ヨー軸
R〜YM、L〜YM …… ヨー角モータ
R〜YS、L〜YS …… ヨー角センサ
SBC、R〜B、L〜B …… サーボコントローラ
SSC、R〜C、L〜C …… センシングコントローラ

Claims (2)

  1. 多関節形のロボットの複数の関節に対応して、それぞれ単一の関節の制御のみを担当する複数のサーボコントローラと、
    前記複数のサーボコントローラに対して、それぞれが担当する各関節の動作を指示する個別の制御データを、共通バスを介して送信するメインコントローラと、
    前記ロボットの各関節の状態を検出する状態検出手段と、
    を備えたロボットの制御装置であって、
    前記各サーボコントローラは、前記共通バスを介しての自己に対する前記制御データのみに基づいて、担当する各関節の制御動作を完結可能に構成され、
    前記メインコントローラは、
    検出された前記各関節の状態に基づいて、前記各関節の次の動作のための目標を設定する目標設定手段と、
    設定された前記目標に基づいて前記制御データを生成する制御データ生成手段と、
    生成された前記制御データを前記共通バスを介して送信する送信手段と、
    を有することを特徴とするロボットの制御装置。
  2. 多関節形のロボットの複数の関節に対応してそれぞれ単一の関節の制御のみを担当する複数のサーボコントローラに対して、それぞれが担当する各関節の動作を指示する個別の制御データを、メインコントローラから共通バスを介して送信するロボットの制御方法であって、
    前記各サーボコントローラは、前記共通バスを介しての自己に対する前記制御データのみに基づいて、担当する各関節の制御動作を完結可能に構成され、
    前記ロボットの各関節の状態を検出する状態検出工程と、
    検出された前記各関節の状態に基づいて、前記各関節の次の動作のための目標を設定する目標設定工程と、
    設定された前記目標に基づいて前記制御データを生成する制御データ生成工程と、
    生成された前記制御データを前記共通バスを介して送信する送信工程と、
    を有することを特徴とするロボットの制御方法。
JP2003151283A 2003-05-28 2003-05-28 ロボットの制御装置およびロボットの制御方法 Withdrawn JP2004351551A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003151283A JP2004351551A (ja) 2003-05-28 2003-05-28 ロボットの制御装置およびロボットの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003151283A JP2004351551A (ja) 2003-05-28 2003-05-28 ロボットの制御装置およびロボットの制御方法

Publications (1)

Publication Number Publication Date
JP2004351551A true JP2004351551A (ja) 2004-12-16

Family

ID=34046852

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003151283A Withdrawn JP2004351551A (ja) 2003-05-28 2003-05-28 ロボットの制御装置およびロボットの制御方法

Country Status (1)

Country Link
JP (1) JP2004351551A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008526536A (ja) * 2005-08-01 2008-07-24 トヨタ自動車株式会社 ロボット制御システム
WO2009060634A1 (ja) * 2007-11-06 2009-05-14 The Ritsumeikan Trust 多脚歩行式移動装置の足部機構
JP2011079123A (ja) * 2009-09-22 2011-04-21 Gm Global Technology Operations Inc ロボット関節のための統合高速トルク制御システム
JP2013010165A (ja) * 2011-06-29 2013-01-17 Honda Motor Co Ltd 分散制御システム
US10248588B2 (en) 2016-01-04 2019-04-02 Lsis Co., Ltd. Frame reception monitoring method in serial communications
CN111938654A (zh) * 2020-07-06 2020-11-17 华南师范大学 足态测试方法、系统、可穿戴设备及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008526536A (ja) * 2005-08-01 2008-07-24 トヨタ自動車株式会社 ロボット制御システム
JP4762999B2 (ja) * 2005-08-01 2011-08-31 トヨタ自動車株式会社 ロボット制御システム
WO2009060634A1 (ja) * 2007-11-06 2009-05-14 The Ritsumeikan Trust 多脚歩行式移動装置の足部機構
JP2009113146A (ja) * 2007-11-06 2009-05-28 Ritsumeikan 多脚歩行式移動装置の足部機構
JP2011079123A (ja) * 2009-09-22 2011-04-21 Gm Global Technology Operations Inc ロボット関節のための統合高速トルク制御システム
US8442684B2 (en) 2009-09-22 2013-05-14 GM Global Technology Operations LLC Integrated high-speed torque control system for a robotic joint
JP2013010165A (ja) * 2011-06-29 2013-01-17 Honda Motor Co Ltd 分散制御システム
US10248588B2 (en) 2016-01-04 2019-04-02 Lsis Co., Ltd. Frame reception monitoring method in serial communications
CN111938654A (zh) * 2020-07-06 2020-11-17 华南师范大学 足态测试方法、系统、可穿戴设备及存储介质

Similar Documents

Publication Publication Date Title
JP6381711B2 (ja) 仮想現実システムの較正
Kagami et al. Design and implementation of software research platform for humanoid robotics: H6
Kagami et al. Online 3D vision, motion planning and bipedal locomotion control coupling system of humanoid robot: H7
EP1946806B1 (en) Information processing apparatus and storage medium storing information processing program
JP4239635B2 (ja) ロボット装置、その動作制御方法、及びプログラム
KR102150297B1 (ko) 보행 보조 로봇 및 보행 보조 로봇의 제어 방법
US10835813B2 (en) Game controller
JP2005074620A (ja) 簡易地面反力センサを用いる歩行ロボット及びその制御方法
WO2020153297A1 (ja) ロボット制御システム
JP2004351551A (ja) ロボットの制御装置およびロボットの制御方法
CN107813306B (zh) 机器人及其动作控制方法和装置
JP2010069546A (ja) ロボット制御装置、ロボット制御方法およびロボット制御プログラム
US8170738B2 (en) Performance inspection method for autonomous mobile apparatus, and performance inspection sheet therefor
JP2004345024A (ja) 脚式歩行ロボットの足部構造およびこれを備えた脚式歩行ロボット
JP2002307350A (ja) ロボット装置、ロボット装置の動作制御方法、ロボット装置の制御システム、プログラム及び記録媒体
JP2020116711A (ja) ロボット制御システム
TW202100123A (zh) 平衡輔助系統及穿戴式裝置
KR100862190B1 (ko) 로봇의 자세 검출 장치 및 그 방법
JP2007007797A (ja) 歩行ロボット
CN211001614U (zh) 一种仿生机器人的腿部远程控制系统
Kagami et al. Design, implementation, and remote operation of the humanoid H6
KR102139354B1 (ko) 모듈형 운동 보조 장치 및 이를 이용한 체험형 콘텐츠 제공 시스템
JP4539291B2 (ja) ロボット装置及びその動作制御方法
WO2020153298A1 (ja) 画像解析システム
JP6513232B2 (ja) ロボット、および、ロボットの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20060511

Free format text: JAPANESE INTERMEDIATE CODE: A621

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070403

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20070802