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

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

Info

Publication number
JP3687076B2
JP3687076B2 JP17862495A JP17862495A JP3687076B2 JP 3687076 B2 JP3687076 B2 JP 3687076B2 JP 17862495 A JP17862495 A JP 17862495A JP 17862495 A JP17862495 A JP 17862495A JP 3687076 B2 JP3687076 B2 JP 3687076B2
Authority
JP
Japan
Prior art keywords
posture
energy
unit
robot apparatus
robot
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.)
Expired - Fee Related
Application number
JP17862495A
Other languages
English (en)
Other versions
JPH0934553A (ja
Inventor
雅博 藤田
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP17862495A priority Critical patent/JP3687076B2/ja
Publication of JPH0934553A publication Critical patent/JPH0934553A/ja
Application granted granted Critical
Publication of JP3687076B2 publication Critical patent/JP3687076B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Feedback Control In General (AREA)
  • Control Of Position Or Direction (AREA)
  • Manipulator (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、ロボット装置およびその制御方法に関し、特に効率的に歩行を行うロボット装置およびその制御方法に関する。
【0002】
【従来の技術】
近年、特殊環境化での作業を行う自立型の歩行ロボットの研究が種々行われている。従来、このような歩行ロボットとして、外界からの信号を検知し、それに対して反応するロボットが提案されている。このようなロボットにおいて、特にバッテリをエネルギ源としているものにとっては、バッテリをいかに消費しないようにするかが重要な技術要素となる。
【0003】
このような技術として、歩行時のエネルギ効率に関する研究がすでに報告されている。例えば、「エネルギ効率を考慮した4脚歩行ロボットの開発:第12回日本ロボット学会学術講演会予稿集(3);1994年11月、pp1227−1228」には、歩行時のエネルギ消費を最小限に抑えるものについての報告がなされている。
【0004】
また、姿勢制御に関しても、「4脚ロボットの6自由度位置、姿勢制御:第12回日本ロボット学会学術講演会予稿集(3);1994年11月、pp1223−1224」に報告があるが、この報告は歩行ではない動きの制御に関するもので、エネルギ消費については検討されていない。
【0005】
一方、産業用ロボットにおいては、故障による電源停止あるいは人間が電源を停止させたい場合に、原点に戻すというような処理が行われるのが一般的である。産業用ロボットの原点位置への移動は、位置検出がインクリメント方式(現在位置が原点からの距離で指定される方式)のエンコーダを用いる関係上、リミットスイッチ等が押される位置(原点)を検出し、エンコーダをリセットして初期化し、一連の動きをプレイバックさせるときのスタートポジションを特定にするために必要な動作となっている。例えば、ハイポイドギアを利用して電源オフ時に回転しないようなものが特開平5−10446号公報に提案されている。
【0006】
この特開平5−10446号公報では、電源停止時に、その時の位置で機構系あるいは駆動系が止まっているので、機構系あるいは駆動系を電源再投入時にその位置から原点に戻す動きをさせる。この提案のようにゆっくりと原点に移動させなければ、いきなり原点に復帰して人間等に衝突する危険性がある。
【0007】
【発明が解決しようとする課題】
しかしながら、上述の歩行ロボットにおいては、上記の特開平5−10446号公報の提案と異なり、例えば、2足や4足の歩行ロボットなどが静止時にエネルギを必要とするモータを用いた場合、エネルギ供給を制限あるいは停止した場合に、立つことが不可能になるとともに、モータの電源を切ったり入れたりするときにも、人間が支えたり、あるいは所定の位置や姿勢を取らせた後に行なうことが必要となるといった問題がある。すなわち、転倒等により電源が停止した場合に、その後、電源を供給したとき、電源停止前の位置を各モータに直接指定しても、元の姿勢には戻れないといった問題がある。
【0008】
また、コンピュータシステムには、アクセスにいかないフロッピディスクなどの回転を停止させるものが存在する。この時、ディスクなどの駆動系に対する処埋も行なわれるが、ロボットにおける駆動系とハードディスクのような駆動系では、状況が次の点で異なる。すなわち、ハードディスクではへッドなどでディスクを傷つけないために所定の位置にヘッドを格納し、しかる後電源を切るが、これはディスクを傷つけないために行なうものであり、機構系としてはディスクを傷つけて停止したとしても、再び電源を投入すれば同じ位置に直接戻ることが可能である。しかし、ロボットにおいては、一般的な姿勢において電源を切ると、電源を切る前の位置を直接指定しても、物理的要因で同じ姿勢にならないことがある。
【0009】
さらに、双腕型ロボットなどのように、干渉を考慮して原点に復帰するロボットもある。このようなロボットでは、通常、右腕は右方向に、左腕は左方向に、それぞれ回して、原点に復帰するようになされているが、これは、重心移動や接地点の移動などを考慮してエネルギを制限した姿勢復帰ではない。
【0010】
本発明は、上記事情に鑑みてなされたものであり、消費エネルギが最小となる姿勢を静止姿勢とし、エネルギを効率的に消費することのできるロボット装置を提供することを目的としている。また、エネルギの供給を停止したとき、静止姿勢に戻ることができるロボット装置を提供することを目的としている。
【0011】
【課題を解決するための手段】
請求項1に記載のロボット装置は、少なくとも1つの機構部を有する機構手段と、機構部を静止姿勢に保持するために駆動する駆動手段と、機構部の静止姿勢において消費するエネルギに関する評価基準を求める基準算出手段と、評価基準より静止姿勢において消費するエネルギが小さくなる姿勢を検索する姿勢検索手段と、駆動手段を制御し、消費するエネルギが小さくなる姿勢に制御する姿勢制御手段とを備えることを特徴とする。
【0013】
請求項28に記載のロボット装置の制御方法は、機構部の静止姿勢において消費するエネルギに関する評価基準を求め、評価基準より静止姿勢において消費するエネルギが小さくなる姿勢を検索し、検索した姿勢に制御することを特徴とする。
【0015】
請求項1に記載のロボット装置においては、機構手段が、少なくとも1つの機構部を有し、駆動手段が、機構部を静止姿勢に保持するために駆動し、基準算出手段が、機構部の静止姿勢において消費するエネルギに関する評価基準を求め、姿勢検索手段が、評価基準より静止姿勢において消費するエネルギが小さくなる姿勢を検索し、姿勢制御手段が、駆動手段を制御し、消費するエネルギが小さくなる姿勢に制御する。
【0017】
請求項28に記載のロボット装置の制御方法においては、機構部の静止姿勢において消費するエネルギに関する評価基準を求め、評価基準より静止姿勢において消費するエネルギが小さくなる姿勢を検索し、検索した姿勢に制御する。
【0019】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例について述べる。
【0020】
図1乃至図4に示すように、本実施例の関節型ロボット1は、胴体部100、右前脚部200(機構手段)、左前脚部300、右後脚部400、左後脚部500、首頭部600とから基本的に構成されている。
【0021】
胴体部100は、胴体フレーム101および右前脚部200を支えるための一対の右前脚支持部201,202と、左前脚部300を支えるための一対の左前脚支持部301,302と、右後脚部400を支えるための一対の右後脚支持部401,402と、左後脚部502を支えるための一対の左後脚支持部501,502とを備え、さらに信号処理を行なう電気回路とバッテリを含む信号処理部110が搭載されている。
【0022】
なお、図1と図2(この図は各脚部を開いた状態を表している)において信号処理部110と各駆動部の間は図示しない制御信号線により配線されている。以下の図面においても制御信号線は便宜上省略している。
【0023】
次に、右前脚部200の構成を説明する。右前脚部200は3つのアクチュエータとしてのサーボモータSM2−1乃至SM2−3(駆動手段)より構成され、サーボモータSM2−1は右前脚部200を開脚する機能を有し、サーボモータSM2−2は右前脚部200を前後へ回転(回動)させる機能を有し、サーボモータSM2−3は膝に相当する(サーボホーンSM2−3Bを中心として、前後に回転する)機能を有している。各サーボモータの自由度については後述する。
【0024】
これらのサーボモータSM2−1乃至2−3としては、例えばラジオコントロールなどに利用されているサーボモータ等を用いることができる。このサーボモータはパルス幅で回転角を指定することで動作し、例えば「日本遠隔制御株式会社製(JR)NES−4721」等が利用できる。
【0025】
サーボモータSM2−1(他のサーボモータSM2−2,SM2−3も同様)は、図5に示すように、サーボモータ本体SM2−1Aとサーボモータ本体SM2−1Aに対して回転するサーボホーンSM2−1Bとから構成されている。本実施例においては本体SM2−1AのサーボホーンSM2−1Bの逆側に、回転軸が一致するように、円筒状の支持剛体SM2−1Cを取り付けている。これはサーボモータ本体SM2−1Aのケースを加工して取り付けている。すなわち、サーボホーンSM2−1Bをサーボモータ本体SM2−1Aに固定し、支持剛体SM2−1CをサーボホーンSM2−1Bの逆側面で、回転軸が一致する位置に固定することで、回転可能にサーボモータを構成している。サーボモータの制御方法は後述する。
【0026】
これらのサーボモータは互いに連結されて一本の脚を構成する。
【0027】
図3、図4に示すように、サーボモータSM2−1は胴体部100の右前脚支持部201,202で支えられ、サーボモータSM2−1のサーボホーンSM2−1Bは右前脚支持部201に固定され、サーボホーンSM2−1Bの逆側よりサーボホーンSM2−1Bの回転軸上に突出した支持剛体SM2−1Cが、回転のために設けられた穴を介して右前脚支持部202連通されている。そして、サーボモータSM2−1に対して回転命令がなされると、サーボモータSM2−1が右前脚支持部201,202に対して相対的に回転する。なお、図3、図4では簡便のため首頭部600は省略している。
【0028】
また、サーボモータSM2−2は、サーボモータSM2−1に接着固定されており(図4)、サーボモータSM2−2のサーボホーンSM2−2Bは板状の接続板210に固定され(図4)、サーボホーンSM2−2Bの逆側はサーボモータSM2−1と同様に、サーボホーンSM2−2Bの回転軸上に突出した支持剛体(図示せず)により回転する板状の接続板211に固定されている(図3)。そして、サーボモータSM2−2に対して回転命令がなされると、サーボモータSM2−2に対して接続板210,211が相対的に回転する。
【0029】
さらに、接続板210,211の先端側にはサーボモータSM2−3が取り付けられており(図3)、サーボモータSM2−3のサーボホーンSM2−3Bは板状の接続板210に固定され(図4)、サーボホーンSM2−3Bの逆側は、サーボモータSM2−2と同様に、サーボホーンSM2−3Bの回転軸上に突出した支持剛体SM2−3C(図示せず)が、回転する板状の接続板211に固定されている(図3)。そして、サーボモータSM2−3に対して回転命令がなされると、脚板212と一緒にサーボモータSM2−3が接続板210,211に対して相対的に回転する。
【0030】
以上は右前脚部200の構成の説明であるが、その他の脚部である左前脚部300、右後脚部400、左後脚部500についても同様の構成されているので説明は省略する。
【0031】
次に上記のように構成された右前脚部200の回転について説明する。図6は右前脚部200と左前脚部300のサーボモータSM2−1,SM3−1による回転範囲を示しており、図6は図3と同じ方向(正面)から見た図である。なお、図中、θ1は胴体部100に対して垂直な位置を基準として、胴体部内方向の回転角を、θ2は外側への回転角をそれぞれ示す。前述した「日本遠隔制御株式会社製(JR)NES−4721」等はこのように約180度の回転が可能である。その他の脚部についても同様に回転角が定義される。
【0032】
図7は右前脚部200と右後脚部400のサーボモータSM2−2,SM4−2による回転範囲を示しており、図4と同じ方向(左側面)から見た図である。なお、図中、φ1は胴体部100に対して垂直な位置を基準として、胴体部内方向の回転角を、φ2は外側への回転角をそれぞれ示す。その他の脚部についても同様に回転角が定義される。
【0033】
図8は右前脚部200と右後脚部400のサーボモータSM2−3,SM4−3による回転範囲を示しており、図4と同じ方向(左側面)から見た図である。なお、図中、α1は胴体部100に対して垂直な位置を基準として、胴体部内方向の回転角を、α2は外側への回転角をそれぞれ示す。その他の脚部についても同様に回転角が定義される。
【0034】
以上で、4つの脚部に関する記述を終える。
【0035】
次に、首頭部600の構成について説明する。図9に首頭部600を正面から見た図、図10に真横から見た図(左側面図)、図11に真上より見た図を、それぞれ示す。首頭部600は2つのサーボモータより、上下、左右の自由度を有している。サーボモータSM6−1のサーボホーンSM6−1BはサーボモータSM6−2に固定され、サーボモータSM6−2を上下に回転させる。サーボモータSM6−2のサーボホーンSM6−2Bは頭を形造った頭部620に同定され、この頭部620を左右へ回転させる。
【0036】
サーボモータSM6−1は支持板610,611によって胴体フレーム101に固定されている。また、サーボモータSM6−2はサーボモータSM6−1の回転軸と一致するようにサーボホーンSM6−1Bの逆側に円筒状の支持剛体SM6−2Cを取り付け、これを胴体フレーム101に固定されている支持板613によって支持している。本実施例では、頭部620には聴覚センサとしてのマイク(図示せず)が取り付けられており、後述するようにマイク出力信号AUは胴体部100に設けられた信号処理部110へ送られる。
【0037】
以上で、首頭部600に関する記述を終える。
【0038】
さて、以上のような機構部をもつ構成の関節型ロボット1は、各サーボモータへ回転角の指示を与えることにより、歩行したり、座ったり、寝たりと様々な行動および姿勢を取ることが可能になる。前述の「日本遠隔制御株式会社製(JR)NES−4721」等市販のラジオコントロール用のへリコプタなどに使われるサーボモータは3本のコードが出ており、電源、グラウンドおよび制御パルス信号線からなる。このサーボモータは制御パルス信号のパルス幅でモータの絶対角度を指定する。
【0039】
具体的には、図12に示すように、例えば1msecのパルス幅で−90度、1.5msecのパルス幅で0度、2msecのパルス幅で+90度となり、その中間のパルス幅に対する回転角度は、図13に示すように、直線的な関数で規定される。なお、サーボモータを所望の角度でホールドするためには、例えば20msec以内に所望角度を指定するパルス幅のパルス信号を出力する動作を繰り返さなければならない。すなわち、20msecより短い周期で周期的に、所望角度を指定するパルス幅のパルス信号を出力する必要がある。
【0040】
そこで、本実施例では上記の制御パルス信号を胴体部100内に設けられた信号処理部110において生成している。次にこの信号処理部110について説明する。
【0041】
図14に示すように、信号処理部110は、バッテリおよび必要な電源を生成する回路からなる電源部120と、各サーボモータ内のモータへ流れる電流に比例した電圧T1,T2…,T14を入力し、AD変換するAD変換部130と、AD変換部130からのデジタル信号を処理し、各モータへのパルス幅を指定するマイクロプロセッサ(MPU)部140(基準算出手段および姿勢指定手段)と、マイクロプロセッサ部140により指定されたパルス幅の制御パルス信号を生成するパルス生成部150(姿勢制御手段)とから構成される。なお、AD変換部130には首頭部600に取り付けたマイク(図示せず)からのマイク出力信号AUが入力されており、このマイク出力信号AUもAD変換するようになっている。
【0042】
以下の説明を簡便にするため、14個のサーボモータSM2−1乃至2−3,SM3−1乃至3−3,SM4−1乃至4−3,SM5−1乃至5−3,SM6−1,6−2に1,2,3…,14と番号を割り付ける。すなわち、番号は、右前脚部200におけるサーボモータSM2−1,SM2−2,SM2−3にそれぞれ1,2,3、同様に左前脚部300、右後脚部400、左後脚部500における各3つのサーボモータに順に4,5,6,7,8,9,10,11,12を番号付けを行う。また、首頭部600のサーボモータSM6−1,SM6−2に13,14と番号付けする。そして以下、例えば番号1のサーボモータには適宜符号M1を付ける。その他の番号のサーボモータにも適宜同様の符号を付けて説明を行う。
【0043】
前述したように、市販のサーボモータは、電源、グラウンドおよび制御パルス信号線の3本の配線を有しているが、本実施例では、サーボモータに発生している力に関する信号をフィードバックさせる必要があるため、サーボモータに流れる電流に比例する物理量を検出している。具体的にはサーボモータ内のDCモータを駆動する信号線に、例えば1ワット1オームの抵抗を直列に挿入し、この抵抗の両端の電圧を検出することで、そこに流れる電流を検出する。従って、本実施例では、1つのサーボモータには5本の配線が必要となる。サーボモータM1に追加した2本の配線からの電圧信号を簡便のためT1と記す。その他のサーボモータにおいても同様である。
【0044】
このT1はAD変換部130でサンプリングされるため帯域制限が必要となるが、本実施例ではAD変換部130で上述の1ワット1オームの抵抗の両端の電圧出力を低域フィルタを用いて積分し、パルス幅方向(時間軸)の情報を電圧方向の情報(電圧レベル)に変換し、AD変換できるようにしている。なお、サーボモータ駆動は、通常、パルス幅で正転、反転あるいは駆動せず(停止)といった制御が行われる。
【0045】
次に、信号処理部110の詳細について説明する。はじめに電源部120から説明する。本実施例では、4.8VのNiCad電池120Aを利用する。各サーボモータM1〜M14へは、この電源を直接V1,V2…,V14として対応するサーボモータM1〜M14に供給する。グランドも同様にGND1,2…,14を対応するサーボモータM1〜M14に接続する。一方、AD変換部130、マイクロプロセッサ部140およびパルス生成部150は、単一の電源電圧Vcc(=5V)で動作する電子部品により構成されるため、DC−DCコンバータ(120B)により電圧変換して生成した安定した5Vの直流電源を各電子部品に供給する。
【0046】
次に、パルス生成部150について説明をする。図15に示すように、パルス生成部150には、マイクロプロセッサ部140から、8bitデータ信号data0,1,…,7、制御対象のサーボモータを指定する4bitの信号adr0,1,2,3、およびデータラッチ用のライトパルスwrが入力されている。つまりadr0,1,2,3により上述の番号付けされたサーボモータM1〜M14を指定し、data0,1,…,7により、後述するカウンタ183によるパルス幅を指定する。
【0047】
パルス生成部150の内部は、クロック発生器151、カウンタスタート信号発生器152、アドレスデコーダ153および各サーボモータに対応したパルスを生成するカウンタ部161、162、…、174(カウンタ部161はサーボモータM1用、カウンタ部162はサーボモータM2用、…、カウンタ部174はサーボモータM14用)により構成される。パルス生成部150からの出力は、各サーボモータM1〜M14への制御信号Control1,2,…,14である。
【0048】
なお、カウンタ部161、162、…、174はそれぞれ同じ構成なので、カウンタ部161に関してのみ説明する。
【0049】
次に図16のタイミングチャートを参照して、その動作を説明する。クロック発生器151は、システムのクロックを発生する。本実施例では、これをカウンタスタート信号発生器152およびカウンタ部161,162,…,174のクロックとして使用する。クロック周波数fckは125kHzとする。カウンタスタート信号発生器152内にはカウンタがあり、このクロックは0から2499までカウントされる。すなわち、20msecを1周期とするタイミングが生成される。カウンタスタート信号発生器152は内蔵するカウンタが0のタイミングで各カウンタスタート信号s1,s2,…,s14(図16(A))を、カウンタ部161,162,…,174にそれぞれ出力する。
【0050】
そして、例えばカウンタ部161内では、カウンタスタート信号s1によりセットリセット回路184をセットして、そのセット出力(図16(B))をカウンタ183のカウンタイネーブルENに入力し、カウンタ183がカウントを開始する。カウンタ183のカウント出力(8bit)は、コンパレータ182のB入力に送られ、A入力と比較される。
【0051】
アドレスデコーダ153は、マイクロプロセッサ部140からのadr0,1,2,3に対応するラッチ信号LT1,2,…,14を発生し、カウンタ部161乃至174のいずれかのラッチ回路181を指定する。指定されたラッチ回路181にはマイクロプロセッサ部140より入力された8bitのパルス幅がセットされる。このセット処理は、後述するように、直前のカウンタスタート信号s1が発生した後、10msecが経過したとき既に行われている。そして、コンパレータ182のA入力には、ラッチ回路181にセットされている8bitのパルス幅が入力され、コンパレータ182は、A入力とB入力が一致するとEQ出力よりセットリセット回路184のリセット端子Rをイネーブルにし、セットリセット回路184をリセットする(図16(B))。その結果、カウンタ183がクリアされ、かつ、カウント動作をストップする。
【0052】
すなわち、セットリセット回路184の出力は、マイクロプロセッサ部140がラッチ回路181に設定した値に対応する時間(この時間は、図13に示すように、1.0msec乃至2.0msecの間の時間とされる)だけイネーブルになり、これがパルスControl1(図16(B))としてサーボモータM1(SM2−1)に供給される。例えばラッチ回路181に”125”という値を設定すれば、カウンタ183が125KHzのクロックで”125”を数える時間、すなわち1msecのパルスが発生される。
【0053】
これらの動作は、セットリセット回路184が再びセットされる毎に繰り返される。そして、セットリセット回路184は前述の通り、20msecの周期でセットされるため、20msecを周期として、マイクロプロセッサ部140によりラッチ回路181に設定した時間のパルス幅をもつパルスが生成される。その他のカウンタ部162,163,…,174も同様に動作する。
【0054】
なお、本実施例では、すべてのカウンタスタート信号s1,s2,…,s14は同じタイミングで発生される。また、マイクロプロセッサ部140においてデータ入出力をインタラプト処理で行なうためのインタラプト信号int2,int3は、カウンタスタート信号発生器152で作られる。int2はAD変換部130よりT1,T2…,T14を取り込むタイミングを与え、int3はパルス幅データをパルス生成部150へ設定するタイミングを与える。
【0055】
さらに、後述するように、AD変換部130においては、Control1,2,…,14の立ち上がりのタイミング(図16(C))がT1,T2…,T14のAD変換のサンプリングのタイミングとされている(このため図14に示すように、パルス生成部150の出力するControl1,2,…,14が、AD変換部130に供給されている)。これはカウンタスタート信号発生器152のカウント値が”0”のタイミングである。そして、AD変換にかかる変換時間を1msecより短いとして、int2(図16(D))はカウンタスタート信号発生器152のカウント値が”124”(1msecに対応)のとき、取り込みタイミングを与え、int3(図16(E))は、カウンタスタート信号発生器152のカウント値が”1249”(10msecに対応)のとき、パルス幅データの出力タイミングを与える。
【0056】
また、AD変換部130においては、T1,T2…,T14は、通常の差動入力のオペアンプを用いてバッファリングされるとともに帯域制限された後、デジタル信号に変換される。簡便のため本実施例では、AD変換部130が、14個の8bitAD変換器を有し、各サーボモータM1〜M14からの信号T1,T2…,T14をAD変換するようになされ、AD変換のタイミングは、前述のControl1,2,…,14の立ち上がりのタイミングとされている。また、マイク出力信号AUは、図示はしないが、AD変換部150内のマイクアンプで増幅され、適当な低域フィルタで帯域制限されて、オーディオ用のAD変換器でAD変換される。本実施例では、このAD変換は8kHzのサンプリング周波数で行われるものとする。
【0057】
マイクロプロセッサ部140は、通常のマイクロプロセッサ、あるいはデジタルシグナルプロセッサなどで構成できる。そして、マイクロプロセッサ部140は大きく2つの仕事を行う。1つはマイク出力信号の処理であり、もう1つはサーボモータの制御である。これらの処理の内容については後述する。
【0058】
以上で信号処理部110の構成についての説明を終える。
【0059】
次に、関節型ロボット1全体の動作およびそれを決定する信号処理部110の処理について詳しく説明する。
【0060】
本実施例では、外界とのインタラククション(相互作用)として音を想定している。音に対応して動作する方法として音声認識等が考えられるが、本実施例では簡便のため、音の大きさのみで行動動作をきめる方法を用いる。
【0061】
図17に、信号処理部110の全体の処理のフローチャートを示す。図17に示すように、メインルーチンでは、前述のように、ステップS1のマイク出力信号AUの処理S_PR0Cと、ステップS2のサーボモータの制御M_C0NTの2つの処理が、無限ループ内で行われる。このステップS1とS2の処理の詳細は、それぞれ図18と図19に示されており、その説明は後述する。
【0062】
このメインルーチンの処理に対して、AD変換部130からのT1乃至T14入力とパルス生成部150へのパルス幅設定の出力とは、インタラプト処理int2,int3で行う。この入出力は、それぞれ20msec毎とし、このタイミングはパルス生成部150より指定される。ただし、AD変換部130からのT1,T2…,T14 の入力のタイミングとパルス生成部150へのパルス幅設定のタイミングはずれている。
【0063】
また、マイクからの信号は8KHzでサンプリングされるが、これは別のインタラプトint1のタイミングでAD変換部130から供給される。
【0064】
マイクからの信号の取り込みint1、AD変換部130からのT1,T2…,T14の入力int2、パルス生成部150への出力int3のそれぞれのインタラプト処理のフローチャートを、図20乃至図22に示す。
【0065】
図20のインタラプト処理int1では、ステップS11で、AD変換部130により音データを読み込み、ステップS12で、マイクロプロセッサ部140の内部メモリ上のS_bufferへポインタを増やしながら順次書き込んでいく。この処理は、1/8000秒の周期で行われる。
【0066】
図21のインタラプト処理int2では、ステップS21で、AD変換部130によりモータの負荷 信号T1,T2,…,T14をサンプリングし、マイクロプロセッサ部40のメモリ上のT_bufferへ順次書き込み、さらに後述のように、X2_bufferからこのときのT1,T2,…,T14に対応するパルス幅データをT_bufferにさらに付加する。そして、データが保持されたというフラグT_buffer_ flagをonにする。この処理は20msecの周期で行われる。
【0067】
図22のインタラプト処理int3では、ステップS31で後述の遅延補償のため、マイクロプロセッサ部140のX1_bufferに保持されているパルス幅データ(後述するP_bufferから転送されている)を、X2_bufferに転送して、パルス幅データを遅らせる。さらにステップS32で、出力すべきパルス幅データがマイクロプロセッサ部140のP_bufferに存在するか否かを判定し、存在するときは、ステップS33でメモリ上にあるP_bufferから読み出す。
【0068】
このP_bufferには、後述する図18のステップS55で、ロボット装置の状態を規定するステートマシンSのステートに対応するパルス幅(すなわち、ロボット装置の姿勢(14個のサーボモータの駆動状態)を決定するパルス幅)の時系列データが記憶されている。この読み出された14個のパルス幅データは、ステップS34でパルス生成部150へ出力される。これにより、上述したように、カウンタ部161乃至174よりこのパルス幅に対応する制御信号Control1乃至14が対応するサーボモータM1乃至M14に供給され、ロボットが所定の姿勢をとることになる。
【0069】
次のステップS35では後述する遅延補償のために、P_bufferのパルス幅データがX1_bufferに転送される。このデータが、上述したように、ステップS31でさらにX2_bufferに転送される。
【0070】
ステップS32で、P_bufferに処理すべきパルス幅データが残存していないと判定された場合、ステップS36に進み、ロボット装置のステートマシンSの現在のステートの静止データ(例えば後述する図23のSleepingステートST23−1,SittingステートST23−2,StandingステートST23−3,walkingステートST23−4,に位置するためのパルス幅PT23−1,PT23−2,PT23−3,PT23−4など)を読み取り、ステップS37で、その静止データに、X_bufferに保持しているデータを加算する。
【0071】
このX_bufferには、後述する図19のステップS83で、静止姿勢にあるロボット装置を、最小のエネルギ消費状態にするためのパルス幅の補正値が記憶されている。この値がステップS34でパルス生成部150に書き込まれ、それに対応するパルス幅の制御信号Control1乃至14が出力されるので、ロボット装置の姿勢が、エネルギ消費の少ない状態に補正される。さらに、この補正値がステップS35で、上述した場合と同様に、X1_bufferに書き込まれる。
【0072】
ここで、以上の各処理において用いられる数種類のbufferについて説明する。
【0073】
S_bufferは、マイクからの信号をint1の処理でAD変換部130より入力するためのバッファメモリで、512データ(サンプル)が貯まると、図18のS_PR0C処理内のステップS51で読まれて、S_bufferのポインタがクリアされる。
【0074】
T_bufferは、サーボモータM1乃至M14の電流を示す信号T1,T2,…,T14をAD変換したデータを格納するバッファメモリで、int2(図21のステップS21)で書き込まれ、図19のM_CONTのステップS73で読み込まれ、処理される。また、そのときの指定角度に相当するパルス幅データを対応づけるため、T_bufferには、X2_bufferより供給されるパルス幅データも書かれている。
【0075】
P_bufferには、図18のS_PR0C内のステップS55で、ステートマシンの変化に伴うロボットの動きに対応したパルス幅時系列を格納する。これは、int3の図22のステップS33で読み出されて、ステップS34でパルス生成部150へ順次出力される。また、同一のデータが、前述のT_bufferのデータと対応づけるため、X1_bufferへも出力される。
【0076】
図22のステップS31におけるX1_bufferとX2_bufferは、パルス生成部150等における遅延時間を吸収するためのバッファメモリで、20msecの遅延回路を構成している。X1_bufferからX2_buffer、さらにT_bufferへ、14個のパルス幅データが送られていく。
【0077】
X_bufferは、図19のM_C0NTのステップS83で、パルス幅の微小な変化dX_iを格納する。これは、M_C0NTのステップS80乃至S82で設定され、図22のint3のステップS37で、あらかじめ記憶されている静止の姿勢データに加算される。
【0078】
次に、S_PR0Cの処理を図18に示すフローチャートに従って説明する。S_PR0C内ではステップS51で、まず、サウンドバッファS_bufferに512個のデータが貯まったかどうかを判断する。この512個のデータは、8kHzのサンプリングであるから64msec分の音響データである。これは、図20のint1処理ルーチン内でデータ入力毎にインクリメントされるS_bufferのポインタが、バッファスタートポインタS_buffer_startから、512以上増えたかどうかで判断する。もし、64msec分のデータがまだ、蓄積されていなければリターンする。64msec分のデータが蓄積された場合、ステップS52で音のレベルPを検出する。これは、信号のパワーの計算である。5 12個のデータをs[0],s[1]….s[511]とすると、Pは次の式(1)で表される。
P=(s[0]2+s[1]2+…+s[511]2)/512 (1)
【0079】
そして、ステップS53において、このPがあらかじめ設定してある基準値P1より 大きいと判断すると、ステップS54でステートマシンS1を進める方向に更新(更新1)する。また、ステップS53でP1以下と判断すると、ステップS57においてタイマカウンタT_countを1増やし、ステップS58において、もしT-countが、あらかじめ設定した基準値T_MAXより大きいと判定すれば、ステップS59でステートマシンS1を戻す方向に更新(更新2)する。
【0080】
このステートマシンS1はロボットの姿勢と行動を意味しており、本実施例では、図23に示すように、Sleeping,Sitting,Standing,Walkingに対応した4つのステートST23−1乃至ST23−4を持っており、進める方向の更新1は、もし現ステートがSleepingならSittingに、SittingならStandingに、StandingならWalkingに更新する。なお、現ステートがWalkingである場合は、進める更新(更新1)はWalkingを取るものとする。逆に、戻す方向の更新2とは、現ステートがWalkingならStandingに、StandingならSittingに、SittingならSleepingに更新する。なお、現ステートがSleepingである場合は、戻す方向の更新(更新2)とはSleepingを取るものとする。
【0081】
ロボットに所定の姿勢をとらせるには、ステートマシンSのステートを更新(変更)する。ステートを更新すると、ロボットに対応する姿勢をとらせるべく、サーボモータがパルスにより関節を動かして、姿勢の変更を行なう。
【0082】
ステートの更新に伴い、図18のステップS55において、図23のステート矢印の部分に対応するパルス幅の時系列がP_bufferへ蓄積される。P_bufferのデータは、図22のインタラプト処理int3のステップS33で順次読まれてパルス生成部150へ出力され、対応するパルス幅が生成される。この関節の動きを決定するパルス幅の時系列は、本実施例では、マイクロプロセッサ部140のメモリにあらかじめ記憶されているものとする。
【0083】
例えば、図23において、ステートST1のSleepingから、ステートST2のSittingへステートを進める場合、マイクロプロセッサ部140は、PT2のWakeupというパルス幅の時系列を発生する。同様に、ステートST2のSittingから、ステートST3のStandingへ、ステートを進める場合、PT4のStandupというパルス幅の時系列が、ステートST3のStandingから、ステートST4のWalkingへステートを進める場合、PT6のWalkというパルス幅の時系列が、それぞれ発生される。
【0084】
また、ステートST4のWalkingから、ステートST3のStandingへ、ステートを戻す場合、PT10のStandというパルス幅の時系列が、ステートST3のStandingから、ステートST2のSittingへ、ステートを戻す場合、PT9のSitdownというパルス幅の時系列が、ステートST2のSittingから、ステートST1のSleepingへ、ステートを戻す場合、PT8のSleepというパルス幅の時系列が、それぞれ発生される。
【0085】
さらに、ステートST1のSleepingを維持する場合、PT1のC_Sleepという パルス幅の時系列が、ステートST2のSittingを維持する場合、PT3のC_Sitというパルス幅の時系列が、ステートST3のStandingを維持する場合、PT5のC_Standというパルス幅の時系列が、ステートST4のWalkingを維持する場合、PT7のC_Walkというパルス幅の時系列が、それぞれ発生される。
【0086】
図18のステップS55で、このようなパルス幅の時系列がP_bufferに書き込まれた後、ステップS56に進み、サウンドバッファS_bufferおよびタイマカウンタT_countをリセットして処理を終了する。
【0087】
図24乃至図27に各ステートに対応する姿勢を示す。図24はSleepingの姿勢を、図25はSittingの姿勢を、図26はStandingの姿勢 を、図27(A)乃至(D)はWalkingの動きを示している。なお、簡便のため脚部などは線 で表している。また、図24は左真横から見た図であるため、右脚部はみえない(図27のWalkingにおいては点線で右脚を表している)。
【0088】
なおWalking以外は静止の姿勢であるが、Walkingはいわゆる4足歩行を表しており、動いているロボットの4つのタイミングでの瞬間的な姿勢である。Walkingのような動きや、前述のように姿勢を変更するためには、適切なパルス幅の時系列が必要となる。これらは、ロボットの運動方程式を解いたり、あるいは経験則で作ることが可能であり、例えば、本実施例においては、経験則により姿勢とその変化に対応するパルス幅を決定している。
【0089】
さて、図19のM_C0NTの処理を考えなければ、図18のS_PROCの処理で、大きな音がすると、立ち上がって歩きだし、音がしばらくしなけれぱ、立ち止まり、座り、伏せる、という動作をする。すなわち、外界からの刺激がなければ休む、ということを、設定したステートマシンS1の動作、姿勢により実現している。
【0090】
しかし、例えばSleepingに対応する姿勢は確かに各モータで消費されるエネルギは小さいが、ロボットの機構系の歪み、あるいはロボットの下の床が平でないこと、あるいは、パルス幅データの不正確さなどが原因で、脚部が床から浮いていたり、逆に床に対して脚部が角度を持っているが、ロボットの自重によりモータにかなりの負荷がかかったまま脚部が床に平行になっていたりして、かなり無駄なエネルギを消費している。
【0091】
そこで本実施例においては、図19のM_C0NTの処理で、エネルギ消費の極小値へ駆動系を制御することにより、この無駄なエネルギ消費を減らすようにしている。
【0092】
最初にステップS71において、現在、静止姿勢であるか否かを判定する。この判定は、P_bufferにデータがあるか否かから判定することができる。静止姿勢でない場合においては、このM_C0NTの処理は終了される。
【0093】
いま、静止姿勢であるとすると、ステップS72に進み、T_buffer_flagがオンであるか否か、すなわち、T_bufferにデータがあるか否かが判定される。20msec毎に行われる、図21のint2のステップS21において、14個のサーボモータM1乃至M14の負荷信号T1乃至T14が取り込まれると、T_bufferにそのデータが書き込まれ、T_buffer_flagがオンされる。
【0094】
T_buffer_flagがオンのとき、ステップS73に進み、マイクロプロセッサ部140は、T_bufferから14個のデータを読み出す。そして、読み出しが完了したことを表すために、T_buffer_flagをオフにする。次にステップS74に進み、次式を演算する。
DX=NEW_X - OLD_X (2)
【0095】
ここでベクトルX(=(X_1,X_2,…,X_14))は、14個のサーボモータの角度を表し、NEW_Xは、現在の14個のサーボモータの角度を表し、OLD_Xは、直前の(20msec前の)14個のサーボモータの角度を表す。
【0096】
この実施例においては、Xにサーボモータの角度そのものを割り当てずに、サーボモータへ与えるパルス幅を割り当てる。従って、Xの要素の1つX_iは、サーボモータMiへのパルス幅を表す(i=1乃至14)。この実施例においては、このパルス幅X_iを微小の値dX_iだけ増減させることで、静止姿勢におけるエネルギの極小値を求めるようにしている。
【0097】
負荷信号Tiに対応するi番目の要素X_iがNEW_Xとして初めて取り込まれたとき、OLD_XはTiに対応するX_iであるから、上記式(2)の値DXは、dX_iでもなく、また-2dX_iでもない。そこで、この場合においては、ステップS74からステップS77に進み、dX_iを増加した場合におけるエネルギの評価関数を求めたことを表すフラグEP_flagと、値dX_iだけ減少させた場合おけるエネルギの評価関数を求めたことを表すフラグEM_flagの両方をオフする。そして、X_bufferに+dX_iを設定する。
【0098】
次にステップS78に進み、フラグEP_flagとEM_flagが、いずれもオンであるか否かが判定される。いまの場合、いずれもオフであるから、M_CONTの処理を終了する。
【0099】
ステップS77で、X_bufferに+dX_iを設定すると、図22に示したint3のステップS37において、このX_bufferに設定されている値+dX_iが読み出され、ステップS36で取り込まれた現ステートの静止データパルス幅に加算される。そして、ステップS34において、このパルス幅が、パルス生成部150に設定され、設定したパルス幅のControliが発生される。
【0100】
14個のT1乃至T14を取り込んでから、20msecが経過したとき、再び図21のint2の処理が行われ、新たなT1乃至T14が取り込まれ、T_buffer_flagが、再びオンされる。
【0101】
そして、この新たなデータに対しての処理が、M_CONTにおいて同様に行われる。この場合においても、ステップS74において、式(2)の演算が行われるが、このとき、NEW_XはX+dX_i(=(X_1,X_2,…,X_i+dX_i,…,X_14))であり、OLD_XはX((=X_1,X_2,…,X_i,…,X_14))である。従って、式(2)のDXはdX_iとなる。
【0102】
そこで、この場合においては、ステップS74からステップS75に進み、消費エネルギの評価関数を演算する。
【0103】
ベクトルXの評価関数をE(X)とする。この実施例においては、E(X)として、各サーボモータに流れる電流の2乗和が用いられる。いまの場合、NEW_Xは、X+dX_iであるから、評価関数E(X+dX_i)が演算される。そして、Xを+dX_iだけ増加させた場合の評価関数が求められたので、フラグEP_flagがオンされる。そして、X_bufferに-dX_iが設定される。
【0104】
次に、ステップS78に進み、フラグEP_flagとEM_flagが、いずれもオンであるか否かが判定される。いまの場合、EP_flagのみがオンであり、EM_flagはオフであるから、M_CONTの処理がここで終了される。
【0105】
そして、上述した場合と同様にして、ステップS75で、X_bufferに設定された-dX_iが図22のステップS37で読み出され、ステップS36で取り込まれた現在の静止データに加算される。そして、ステップS34において、パルス生成部150にそのパルス幅が設定される。
【0106】
従って、さらに20msecが経過し、さらに新たなT1乃至T14が取り込まれ、図19のステップS74の演算が再び行われると、このとき、NEW_XはX-dX_iであり、OLD_XはX+dX_iであるから、式(2)の演算結果DXは-2dX_iとなる。
【0107】
そこで、この場合においては、ステップS74からステップS76に進み、評価関数E(X-dX_i)を演算する。そして、フラグEM_flagをオンする。
【0108】
以上により、評価関数E(X+dX_i)とE(X-dX_i)の両方が得られたので、フラグEP_flagとEM_flagの両方がオンと判定され、ステップS79に進む。
【0109】
ステップS79においては、次式が演算される。
dE_i=E(X+dX_i) -E (X-dX_i) (3)
【0110】
そして、このdE_iが、0であるか、正であるか、負であるかを判定する。この値が負である場合、ステップS80に進み、XにdX_iを加算した値(=X+dX_i)を新たなXとする。また、この値が正である場合においては、ステップS82に進み、XからdX_iを引いた値(=X-dX_i)を新たなXとする。また、この値が0である場合においては、ステップS81に進み、Xの値はそのままとする。
【0111】
次に、ステップS83に進み、ステップS80乃至S82で得られたパルス幅データXを、静止姿勢の新たなパルス幅データとしてパルス生成部150に設定する。
【0112】
次にステップS84に進み、次のiを乱数で選択し、X_bufferをクリアする(全ての要素を0にする)。
【0113】
以上のようにして、14個のサーボモータのいずれか1つを等確率で選択し、対応するサーボモータのインデックスをiとして、このiを確率的な降下法に従って変化させ、評価関数の極小値の探索が行われる。
【0114】
次に、第2実施例について説明する 第1実施例では消費エネルギをおさえるため、関節の角度を徐々に変えていったが、第2実施例ではさらにアクチュエータへのエネルギ供給を行なわいようにする。あるいは、等価な制御を行なうものである。第2実施例の第1実施例と異なる点は、マイクロプロセッサ部140の処理と、パルス生成部150の出力を、もう1つ別の回路で処理した後、パルスとしてNew_Control1,2,…,14が出力される点である。第2実施例は第1実施例とほとんど同じ構成であるので、異なる構成のみ説明し、同一の構成には同じ符号をつけ説明は省略する。
【0115】
図28に第2実施例の信号処理部110の構成を示す。前述したように、第2実施例と第1実施例との違いは、マイクロプロセッサ部140の処理と、パルス生成部110の出力の処理であり、第2実施例では、図28に示すように、符号174をマイクロプロセッサ部とし、パルス生成部75の出力をパルス制御部160へ入力するものとする。パルス制御部160へはマイクロプロセッサ部140から、halt1,2,…,14という各サーボモータM1〜M14に対応する14ビットの制御信号が入力される。
【0116】
パルス制御部160では、図29に示すように、アンド回路161−1で、前述のhalt1信号とControl1信号との論理積がとられて、New_Control1として出力される。すなわち、サーボモータM1へのパルス幅信号New_Control1は、マイクロプロセッサ部140により出力された制御信号halt1によって、出力されなくなるように制御される。その他のサーボモータM2〜M14に関しても同様である。
【0117】
ただし、haltiは負論理であり、haltiがアクティブとは、Lowレベル意味する。アンド回路161−iは、haltiをLowにすることで、その出力をLowに下げ続ける。
【0118】
本実施例で用いているようなサーボモータ(例えば、JR社製、NES−4721)は、制御パルスをLowに落とし続けると、モータへの制御が行われなくなる。すなわち、どのような角度であってもモータへは電流が流れないような構成になっている。第2実施例ではこの事実を利用して、サーボモータへのエネルギ供給を行なわなくする。
【0119】
次に、マイクロプロセッサ部140の処理について説明する。第2実施例と第1実施例との違いは、ステートマシンの構成とS_PROC内のステートマシン更新の方法である。
【0120】
図30に第2実施例で用いるステートマシンS2を示す。第1実施例の図23に示したステートマシンSとの違いは、図30に示すように、ステートST11のHalt_Sleepingというステートが、ステートST1のSleepingに接続され たことである。
【0121】
第2実施例においてもステートマシンS2を進める方向に更新するとは、次の動作をすることとする。すなわち、現ステートがステートST11のHalt_Sleepingであれば、ステートST1のSleepingに、Sleepingであれば、ステートST2のSittingに、Sittingであれば、ステートST3のStandingに、Standingであれば、ステートST4のWalkingへ、ステートをそれぞれ更新する。もし、現ステートがWalkingであれば、Walkingに更新するものとする。
【0122】
第2実施例においてステートマシンS2を戻す方向に更新するとは、次の動作をすることである。すなわち、現ステートがWalkingであればStandingに、StandingであればSittingに、SittingであればSleepingに、SleepingであればHalt_Sleepingに更新する。現ステートがHalt_SleepingであればHalt_Sleepingに更新するものとする。
【0123】
各ステート間への更新に伴って対応するパルス幅データの時系列が出力される。例えば、SleepingからSittingへの更新に伴い、第1実施例と 同様に、PT2のWakeupというパルス幅の時系列を発生する。その他のパルス幅データの時系列出力は第1実施例と同じであるので説明は省略する(図23参照)。なお、Halt_Sleepingにつながる矢印にはパルス幅データは対応していないものとする。
【0124】
一方、これに伴って、S_PR0CにHalt_Sleepingに対応する処理が加えられる。 このフローチャートを図31に示す。加わった処理は図31のステップS110乃至S113である。その他のステップS101乃至S109の処理は、図18のステップS1乃至S59と同じであるのでその証明は省略する。
【0125】
ステップS110においては、P_bufferのパルス幅時系列がなくなったことが判断され、かつ、ステップS111において、現ステートがHalt_Sleepingであるか否かが判定される。現ステートがHalt_Sleepingであれば、ステップS112においてHalt信号halt1,2,…,14をon(すなわち、Lowレベル)とし、そうでなければステップS113においてoff(Highレベル)として出力する。ステップS110でP_bufferが空ではないと判定されるか、ステップS111で現ステートがHalt_Sleepingでないと判定された場合も、ステップS113でHalt信号はoffされる。
【0126】
これにより、大きな音がすれば起き上がって歩き回り、音がしなくなれば、すわって、伏せて、そして力が抜けた状態で伏せ(Halt_Sleeping)を続けることになる。最後の状態では、サーボモータは刺激の音がしない限り、トルクを発生しない。第1実施例では、Sleepingの状態で、エネルギ消費の極小点になったとしても、振動やあるいは何らかの原因で関節に力が加わると、元の角度になるようにモータが動きだす。従って、エネルギが消費される。しかしながら、第2実施例では、サーボモータに関しては全くエネルギを消費しなくなる。そして、大きな音がすれば、halt1,2,…,14をH ighレベルにするだけで、伏せの姿勢に戻ることができる。
【0127】
第2実施例でのポイントは、SleepingにおいてHalt on状態にして、各サーボモータがトルクを発生できなくしたときの姿勢から、すなわち、Halt_Sleepingにおける姿勢から、再びHalt offとして、halt1,2,…,14をHighレベルにするだけで、Sleepingの姿勢に戻れることにある。すなわち、ある姿勢(第1の姿勢)からサーボモータヘのエネルギ供給を禁止したとき取られるロボットの姿勢が、再び、エネルギ供給を禁止する直前の姿勢(第1の姿勢)を直接指定するだけで取ることが可能になっている。そのような姿勢をHalt onにする前に取っておくことがポイントとなる。
【0128】
第1実施例での図24乃至図26におけるSleeping,sitting,standingの静止の姿勢は、そのような条件を満たしている。図32乃至34に、それぞれの姿勢でHalt onした場合のHalt_Sleeping,Halt_sitting,Halt_standingの姿勢を、図24乃至図26の姿勢に対応させて示す。ただし、首頭部600に関してはHalt onしていない例である。
【0129】
もちろん、こうならない姿勢も一般には存在する。図35にその例を示す。図35に示すように、Playingの姿勢でHalt onすると、Halt_Playingの姿勢になるが、この状態からHalt offしても、Playingの姿勢には戻らない。これは、Halt onしたときに、ロボットの重心を支える構造が変化してしまうために起こる。また、図25と図26のsittingとstandingの姿勢でも、サーボモータのトルクが不十分であれば、Halt offで、元の姿勢に戻らない場合がある。このように、単純にHalt offしただけでは、前述のように、正常な動作が図30のようなステートマシンS2では確保できない姿勢がある。
【0130】
しかしながら、図32乃至図35のように、Halt onしたときの姿勢が予測可能であれば、図36の様なステートマシンを考えることによって正常な動作が可能になる。例えば、図35のPlayingの姿勢をステートST21のPlayingというステートとし、ステートST3のStandingから、あらかじめ設定したパルス幅の時系列データPT21のStand2Playによって、図35のPlayingの姿勢が取れるようにする。逆にPlayingからStandingの姿勢へは、PT22のPlay2Standのパルス幅時系列によって変化できるようにする。さらに、PlayingからHalt onすることによって作られるHalt_Playingの姿勢を、ST22のHalt_Playingというステートに割り付ける。
【0131】
図30のステートマシンS2においては、Halt onでとられる姿勢Halt_Sleepingは、Sleepingと実質的に同一の姿勢であったが、図36のステートマシンS3では、PlayingのステートST21においてHalt onされると、Halt_PlayingのステートST22に移行し、PT23のC_Halt_Playという図35のHalt_Playingに相当する姿勢のパルス幅データを出力しながらhalt1,2,…,14をLowにしておくものとする。また、Halt_PlayingからStandingのステートへ変換する際に、PT24のHalt_Play2Standというパルス幅時系列を出力することによって、Standingの姿勢を取るようにする。このようにHalt on時の姿勢をステートに加え、その姿勢からステートマシンのどこかのステートに移れるように動きを設定することにより、図35のような状態にも対処できる。
【0132】
なお、ステートマシンの更新にもPlayingをいれるように変更しなければならな い。例えば、現ステートがStandingのとき、ステートマシンを進める方向に更新するとは、PlayingかWalkingのどちらかを確率的に選ぶものとする。また、現ステートがPlayingの時は、C_Playのパルス幅時系列を出力してPlayingを取り続けるものとする。さらに、現ステートがHalt_Playingであるならば、Halt_Play2Standのパルス時系列PT24を出力してStandingに進めるものとする。
【0133】
現ステートがPlayingのとき、ステートマシンを戻す方向に更新するとは、Play2Standのパルス時系列PT22を出力して、Standingへ更新するものとする。現ステートがHalt_Playingであれば、C_Halt_Playのパルス時系列PT23を出力してHalt_Playingを取り続けるものとする。その他は、図30と同様である。
【0134】
また、例えば、図26のStandingの姿勢においてエネルギ供給を停止し、図34のHalt_Standingの姿勢に変更した場合において、エネルギ供給を再開するだけでは、トルクが足りなくて、図34のHalt_Standingの姿勢から、図26のStandingの姿勢が取れないとき、図36のようなステートマシンによって対応することが容易にできる。すなわち、Halt_Standingの姿勢からStandingの姿勢へ移行するようなパルス幅データの時系列Halt_Play2Stand(PT24)を設定することにより、Standingの姿勢においてもエネルギ供給を停止することができる。
【0135】
ここで、従来技術の項でも述べたがコンピュータシステムにおけるフロッピディスクのドライブとの対比を行なう。フロッピディスクがアクセスされない時に回転を停止させるのは、ディスク面の保護と同時に、バッテリの消耗を防ぐ目的も持っている。回転を停止するとき、ディスクからヘッドを浮かせたり、ヘッドを所定の位置に格納したりするが、これはディスク保護のためであり、第2実施例で示したロボットの場合とは目的が異なる。
【0136】
すなわち、フロッピディスクのドライブの例では、ディスクの回転を停止させる際、あるいはディスクを再び回転させる際、へッドの位置処理を行なわなくとも、駆動系の動作は正常になるのが一般的である。
【0137】
これに対して、ロボットにおいては、一般的な姿勢から電源を切ると、その位置あるいは姿勢が重心の影響などで異なるものになるのが一般的である。そして、再び電源を入れた場合、いきなり電源を切る前の位置を指定しても、その姿勢を取らない(戻らない)のが一般的であり、第2実施例の図32乃至図34に対応する図24乃至図26におけるSleeping,sitting,standingの静止の姿勢はむしろ特殊な姿勢である。また、図24乃至図26の静止の姿勢でもトルクが十分でないと、図32乃至図34のようなHalt_Sleeping,Halt_sitting,Halt_standingの姿勢から、元の姿勢(図24乃至図26の姿勢)には直接位置の指定では戻れないのが一般的である。さらに、図35の場合は、トルクがいくらあっても元の姿勢には直接位置の指定では戻れない。
【0138】
このようなことは、電源を切ったときに、単にディスクに触れる、あるいはぶつかるのを避けるためヘッドを格納するフロッピディスクドライブの場合には考慮する必要がなかったことである。また、座業用ロボットの原点位置復帰に関しても同様である。
【0139】
上記実施例では、アクチュエータとして市販のサーボモータあるいはそれを改造したものを使用するとしたが、これに限らず、エネルギを消費するあらゆるアクチュエータに適用できる。例えば形状記憶合金を用いることもできる。
【0140】
また、上記実施例では関節部をサーボモータで直接駆動していたが、ワイヤ、ギヤ、リンクなどを用いて関節的に駆動する方法でもよい。また、液体や気体を用いて駆動することもできる。
【0141】
さらに、上記実施例では、サーボモータに流れる電流の2乗和を評価基準にしていたが、それに限定されるものではない。サーボモータを制御することにより変化する消費エネルギと関係する評価基準であればどんなものでもそれを利用できる。
【0142】
また、上記実施例では、図24乃至図27、図32乃至図34に示すような姿勢を用いたが、それに限定されるものではない。さらに、上記実施例では、人間があらかじめ決定した姿勢を用いたが、静止姿勢であれば、あらゆる姿勢が容易に適用可能である。
【0143】
また、上記実施例では、4足で1つの脚が3自由度を持つものであったが、それに限定されるものではなく、2足、5足、6足など任意の数の脚(あるいは手)や自由度を持つロボット、あるいは、首や頭のみを持ち、移動はタイヤでおこなうロボットなどでも、アクチュエータを動かすことによって、静止状態の消費エネルギが異なるような機構系を持つロボットであれば適用できる。消費エネルギは、アクチュエータの熱から検出してもよい。
【0144】
さらに、上記実施例では、すべてのアクチュエータに対して式(2)を用いて評価していたが、必ずしもすべてのアクチュエータとする必要はない。適当に、選ばれた特定のアクチュエータに対してのみ適用してもよい。選び方として、例えば、あらかじめ静止姿勢に対応して消費エネルギに影響しそうもないアクチュエータは変化させなくともよい。その選び方は限定されない。
【0145】
また、上記実施例では、式(2)を評価して評価基準の極小値を探索したが、それに限定されるものではない。例えば、通常のロボット制御で行なうようなロボット本体の構造と重量分布をモデル化して、現在の姿勢と重力方向の関係、床の反力のモデル化を行えば静止状態の力のバランスのために、どのアクチュエータにいくらのトルクが必要であるかを解く方程式ができる。トルクは直接消費エネルギに関係するため、トルクの2乗和などをアクチュエータの角度などで微分すれば、勾配法などを用いて極小点を探索できる。このような一般的な極小点探索法が利用できる。
【0146】
さらに、上記実施例では、音を用いてステートマシンを更新して複数の静止姿勢をとっているが、それに限定されるものではない。外部からの刺激信号は必ずしも必要ではなく、また、刺激信号を用いる場合、音以外でもよく、またその数は複数であってもよい。
【0147】
また、上記実施例では、静止姿勢の時であればいつでも極小値を探す更新を行っていたが、それに限定されるものではない。例えば、適当な姿勢であるSleepingのときのみ行なうようにしてもよい。
【0148】
さらに、上記実施例では、すべてのアクチュエータが静止の姿勢に関係していたが、それに限定されるものではない。例えば、首頭部は動いている状態で、その他の部位が静止しているのであれば、静止に関係するアクチュエータが消費するエネルギに関係する評価基準に対して極小直を探索すればよい。
【0149】
また、上記実施例では、評価基準の極小値を探索していたが、探索範囲を限定してもよい。また、探索するのは、必ずしも完全な極小値である必要はない。
【0150】
さらに、上記実施例では、図19のステップS83において、記憶してある次データを更新、すなわち学習しているが、このように更新せずに、初期データを持ち続け、そのステートになるたびに初期データから始めてもよい。
【0151】
また、上記実施例では、エネルギ供給の制限をアンド回路161−iを用いて行なうようにしたが、それに限定されるものではない。例えば、モータドライブ用の回路への電源を電子的な制御でオフしてもよい。あるいは、モータ制御のフィードバックを電子的に切ることによって等価的にトルクが発生しないようにしてもよい。
【0152】
さらに、上記実施例では、エネルギ供給を完全に禁止するようにしたが、それに限定されるものではない。エネルギ供給に制限を設けることにより消費エネルギを抑えるようにしてもよい。これはモータの位置制御のフィードバックのゲインを下げることなどで容易に実現でき、その方法も任意である。
【0153】
また、上記実施例では、エネルギ供給を瞬間的に禁止するようにしたが、徐々に禁止することにより衝撃を抑制することも可能である。これは、モータの位置制御のフィードバックのゲインを時間の経過と共に徐々に下げることで容易に実現できる。
【0154】
さらに、上記実施例では外界からの刺激がない場合、エネルギ供給を制限するか、あるいは停止するという処理を行なうが、内部状態のみでこの処理を行なったり、スイッチなどでこの処理を強制的に行なうようにしてもよい。
【0155】
【発明の効果】
以上説明したように、請求項1のロボット装置および請求項28に記載のロボット装置の制御方法によれば、機構部の静止姿勢において消費するエネルギに関する評価基準を求め、評価基準より静止姿勢において消費するエネルギが小さくなる姿勢を検索し、検索した姿勢に制御するようにしたので、静止姿勢における消費エネルギを最小とし、安定した静止姿勢を保持することができる。
【0156】
さらに、駆動手段へ供給するエネルギを制限し、エネルギが制限された後、再度供給されたとき、エネルギを制限したときの姿勢から静止姿勢に復帰させるようにすることにより、確実に静止姿勢に復帰させることができる。
【図面の簡単な説明】
【図1】本発明を適用した関節型ロボットの第1実施例の構成を示す斜視図である。
【図2】図1の実施例の構成を示す平面図である。
【図3】図1の実施例の構成を示す正面図である。
【図4】図1の実施例の構成を示す右側面図である。
【図5】図1の実施例のサーボモータの構成を示す図である。
【図6】図1の実施例の関節の可動範囲を説明する正面図である。
【図7】図1の実施例の関節の可動範囲を説明する右側面図である。
【図8】図1の実施例の関節の可動範囲を説明する右側面図である。
【図9】図1の実施例の首頭部の構成を示す正面図である。
【図10】図1の実施例の首頭部の構成を示す左側面図である。
【図11】図1の実施例の首頭部の構成を示す平面図である。
【図12】図1の実施例のサーボモータの回転角の制御を説明する図である。
【図13】図1の実施例のサーボモータの回転角の制御を説明する図である。
【図14】図1の実施例の胴体部内に設けられた信号処理部の構成を示すブロック図である。
【図15】図14のパルス生成部の構成を示すブロック図である。
【図16】図15の実施例の動作を説明するタイムチャートである。
【図17】図14の信号処理部の全体の処理の流れを示すフローチャートである。
【図18】図17のステップS1のS_PROC処理の流れを示すフローチャートである。
【図19】図17のステップS2のM_CONT処理の流れを示すフローチャートである。
【図20】図14の信号処理部における第1のインタラプト処理の流れを示すフローチャートである。
【図21】図14の信号処理部における第2のインタラプト処理の流れを示すフローチャートである。
【図22】図14の信号処理部における第3のインタラプト処理の流れを示すフローチャートである。
【図23】図1の実施例の姿勢と行動を示すステートマシンを説明する図である。
【図24】図23のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図25】図23のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図26】図23のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図27】図23のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図28】本発明の信号処理部の第2実施例の構成を示すブロック図である。
【図29】図28のパルス制御部の構成を示すブロック図である。
【図30】図28の実施例におけるステートマシンを説明する図である。
【図31】図28の実施例におけるS_PROC処理の流れを示すフローチャートである。
【図32】図30のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図33】図30のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図34】図30のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図35】図30のステートマシンによる関節型ロボットの姿勢を説明する図である。
【図36】図30のステートマシンの変形例を示す図である。
【符号の説明】
1 関節型ロボット
100 胴体部
101 胴体フレーム
110 信号処理部
120 電源部
130 AD変換部
140 マイクロプロセッサ部
150 パルス生成部
151 クロック発生器
152 カウンタスタート信号発生器
153 アドレスデコーダ
161乃至174 カウンタ部
181 ラッチ回路
182 コンパレータ
183 カウンタ
184 セットリセット回路
200 右前脚部
201,202 右前脚支持部
300 左前脚部
301,302 左前脚支持部
400 右後脚部
401,402 右後脚支持部
500 左後脚部
501,502 左後脚支持部
600 首頭部

Claims (29)

  1. 少なくとも1つの機構部を有する機構手段と、
    前記機構部を静止姿勢に保持するために駆動する駆動手段と、
    前記機構部の静止姿勢において消費するエネルギに関する評価基準を求める基準算出手段と、
    前記評価基準より前記静止姿勢において消費するエネルギが小さくなる姿勢を検索する姿勢検索手段と、
    前記駆動手段を制御し、前記消費するエネルギが小さくなる姿勢に制御する姿勢制御手段と
    を備えることを特徴とするロボット装置。
  2. 前記機構手段は、移動のための機構を含む
    ことを特徴とする請求項1に記載のロボット装置。
  3. 前記機構手段は、関節またはリンク結合を含む
    ことを特徴とする請求項1に記載のロボット装置。
  4. 前記機構手段は、手または脚を含む
    ことを特徴とする請求項1に記載のロボット装置。
  5. 前記駆動手段は、電気をエネルギ源とする
    ことを特徴とする請求項1に記載のロボット装置。
  6. 前記駆動手段は、モータを構成要素に含む
    ことを特徴とする請求項5に記載のロボット装置。
  7. 前記駆動手段は、液体あるいは気体の圧力を利用する
    ことを特徴とする請求項1に記載のロボット装置。
  8. 前記駆動手段は、形状記憶合金を構成要素に含む
    ことを特徴とする請求項1に記載のロボット装置。
  9. 前記姿勢制御手段は、外界からの刺激を測定する刺激測定手段を有し、前記刺激測定手段の測定結果に対応して前記静止姿勢を制御する
    ことを特徴とする請求項1に記載のロボット装置。
  10. 前記姿勢制御手段は、あらかじめ前記静止姿勢をとるための情報を記憶する記憶手段を有し、前記記憶された情報を用いて前記駆動手段を制御する
    ことを特徴とする請求項1に記載のロボット装置。
  11. 前記基準算出手段は、前記駆動装置へ供給されるエネルギ量を測定するエネルギ測定手段を有し、
    前記評価基準は、前記測定により求められた値の関数である
    ことを特徴とする請求項1に記載のロボット装置。
  12. 前記エネルギ測定手段は、前記駆動手段に供給される電流または電圧の大きさを測定する
    ことを特徴とする請求項11に記載のロボット装置。
  13. 前記エネルギ測定手段は、前記駆動手段に発生する熱を測定する
    ことを特徴とする請求項11に記載のロボット装置。
  14. 前記基準算出手段は、前記駆動手段に加わる力あるいはトルクを測定する力測定手段を有し、
    前記評価基準は、前記測定により求められた値の関数である
    ことを特徴とする請求項1に記載のロボット装置。
  15. 前記姿勢検索手段は、前記静止姿勢を微小に動かしてエネルギが小さくなる姿勢を検索する
    ことを特徴とする請求項1に記載のロボット装置。
  16. 前記姿勢制御手段は、前記姿勢検索手段の検索結果に対応して前記静止姿勢を更新する更新手段を有する
    ことを特徴とする請求項15に記載のロボット装置。
  17. 前記駆動手段へ供給するエネルギを制限するエネルギ制限手段と、
    エネルギが制限された後、再度供給されたとき、前記エネルギを制限したときの姿勢から前記静止姿勢に復帰させる姿勢復帰手段と
    さらに備えることを特徴とする請求項1に記載のロボット装置。
  18. 前記エネルギ制限手段は、所定の前記静止姿勢に復帰可能な姿勢にあるときエネルギを制限する
    ことを特徴とする請求項17に記載のロボット装置。
  19. 前記エネルギ制限手段は、前記エネルギを制限する前の姿勢と、制限した後の姿勢とが実質的に同一の姿勢であるとき、前記エネルギを制限する
    ことを特徴とする請求項18に記載のロボット装置。
  20. 前記エネルギを制限した姿勢をあらかじめ記憶する記憶手段をさらに備える
    ことを特徴とする請求項17に記載のロボット装置。
  21. 前記記憶手段は、前記エネルギを制限する直前の前記静止姿勢も記憶する
    ことを特徴とする請求項20に記載のロボット装置。
  22. 前記エネルギ制限手段は、時間の関数として前記制限を行う
    ことを特徴とする請求項17に記載のロボット装置。
  23. 前記エネルギ制限手段は、前記駆動手段へのエネルギの供給を禁止する
    ことを特徴とする請求項17に記載のロボット装置。
  24. 前記エネルギ制限手段は、前記静止姿勢の保持の制御を制限する
    ことを特徴とする請求項17に記載のロボット装置。
  25. 前記姿勢復帰手段は、前記エネルギを制限する直前の前記静止姿勢に復帰させる
    ことを特徴とする請求項17に記載のロボット装置。
  26. 前記姿勢復帰手段は、前記エネルギを制限する直前の前記静止姿勢とは異なる所定の前記静止姿勢に復帰させる
    ことを特徴とする請求項17に記載のロボット装置。
  27. 前記姿勢復帰手段は、前記エネルギを制限したときの姿勢と実質的に同一の姿勢に復帰させる
    ことを特徴とする請求項17に記載のロボット装置。
  28. 少なくとも1つの機構部を有する機構手段と、
    前記機構部を静止姿勢に保持するために駆動する駆動手段と
    を備えるロボット装置の制御方法において、
    前記機構部の静止姿勢において消費するエネルギに関する評価基準を求め、
    前記評価基準より前記静止姿勢において消費するエネルギが小さくなる姿勢を検索し、
    検索した前記姿勢に制御する
    ことを特徴とするロボット装置の制御方法。
  29. さらに、前記駆動手段へ供給するエネルギを制限し、
    エネルギが制限された後、再度供給されたとき、前記エネルギを制限したときの姿勢から前記静止姿勢に復帰させる
    ことを特徴とする請求項28に記載のロボット装置の制御方法。
JP17862495A 1995-07-14 1995-07-14 ロボット装置およびその制御方法 Expired - Fee Related JP3687076B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17862495A JP3687076B2 (ja) 1995-07-14 1995-07-14 ロボット装置およびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17862495A JP3687076B2 (ja) 1995-07-14 1995-07-14 ロボット装置およびその制御方法

Publications (2)

Publication Number Publication Date
JPH0934553A JPH0934553A (ja) 1997-02-07
JP3687076B2 true JP3687076B2 (ja) 2005-08-24

Family

ID=16051712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17862495A Expired - Fee Related JP3687076B2 (ja) 1995-07-14 1995-07-14 ロボット装置およびその制御方法

Country Status (1)

Country Link
JP (1) JP3687076B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022264477A1 (ja) * 2021-06-17 2022-12-22 ソニーグループ株式会社 移動装置、および移動装置制御方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3813102B2 (ja) * 2002-03-15 2006-08-23 ソニー株式会社 脚式ロボットの姿勢制御装置及び姿勢制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022264477A1 (ja) * 2021-06-17 2022-12-22 ソニーグループ株式会社 移動装置、および移動装置制御方法

Also Published As

Publication number Publication date
JPH0934553A (ja) 1997-02-07

Similar Documents

Publication Publication Date Title
US9221172B2 (en) Constraining robotic manipulators with redundant degrees of freedom
TW469211B (en) Ambulation control apparatus and ambulation control method of robot
US6850818B2 (en) Robot apparatus and control method thereof
US20120004775A1 (en) Robot apparatus and control method therefor
US6591165B2 (en) Robot apparatus, body unit and coupling unit
WO2002066211A1 (fr) Procede de commande de fonctionnement, programme, et support d'enregistrement pour dispositif robotise, et dispositif robotise correspondant
CN101213052A (zh) 机械手的控制装置及控制方法、机器人、以及程序
KR19990045689A (ko) 로봇 장치 및 그 구동 제어 방법
JP2004524171A (ja) 多用途ロボット制御システム
WO2020158642A1 (ja) ロボットの制御装置、ロボットの制御方法、及びプログラム
Liu et al. DLR's multisensory articulated hand. II. The parallel torque/position control system
JP3687076B2 (ja) ロボット装置およびその制御方法
JP2003071773A (ja) ロボット装置
Li et al. End-point sensing and state observation of a flexible-link robot
bin Amari et al. Development of 4 axis shadow robot arm integrated with flex sensor mechanism
Olsson et al. Flexible force control for accurate low-cost robot drilling
JP2003271923A (ja) 記憶装置及び方法並びにロボット装置
JP5752565B2 (ja) ロボットアーム
JP2003271958A (ja) 画像処理方法、その装置、そのプログラム、その記録媒体及び画像処理装置搭載型ロボット装置
JP2003205179A (ja) ペット型ロボット
WO1988006277A1 (en) Method and apparatus for detecting absolute position
Byagowi et al. “Archie”: A Cost Oriented Humanoid Robot
JPS59220806A (ja) 工業用ロボツトの制御方法
JP2006000966A (ja) ロボット装置及びその制御方法
JP2003071756A (ja) ロボット装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050529

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080617

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees