【解決手段】モーション制御装置(10)は、モーションデータに示される動作部(50)の開始位置と、モーションデータを再生する直前の動作部(50)の位置との差分を算出する差分算出部(130)と、モーションデータの再生を制御する再生制御部(110)とを備え、再生制御部(110)は、差分算出部(130)によって算出された差分が第1閾値以上である場合、モーションデータの再生を行わない。
請求項1に記載の制御装置としてコンピュータを機能させるための制御プログラムであって、前記差分算出部及び前記再生制御部としてコンピュータを機能させるための制御プログラム。
【発明を実施するための形態】
【0011】
〔実施形態1〕
以下、本発明の実施形態について、
図1〜
図3に基づいて説明すれば、以下の通りである。
図1は本発明の実施形態1に係るロボット1の構成を示すブロック図である。
【0012】
(ロボット1の構成)
ロボット1は、
図1に示すように、モーション制御装置10(制御装置)、スピーカ20、発光部30、サーボモータ40(駆動部、モータ)、及び動作部50を備えている。ロボット1は、モーションデータに基づいて動作を実行する。モーション制御装置10は、実行要求部105、再生制御部110、データ制御部115、記憶部120、位置検出部125、差分算出部130、差分判定部135、及び駆動制御部140を備えている。
【0013】
実行要求部105は、再生制御部110に処理を行うように指示する。具体的には、実行要求部105は、再生制御部110に、ロボット1に特定のモーションを実行させるように要求する。再生制御部110は、実行要求部105から特定のモーションの実行の要求を受けると、データ制御部115に記憶部120から特定のモーションに該当するモーションデータを選択するように指示する。再生制御部110は、位置検出部125に現在の動作部50の位置を検出するように指示する。現在の動作部50の位置とは、ロボット1がモーションデータを再生する直前の動作部50の位置である。また、再生制御部110は、差分算出部130にモーションデータを供給し、処理を行うように指示する。再生制御部110は、スピーカ20及び発光部30を制御して、スピーカ20に音声を出力させ、発光部30を発光させる。
【0014】
データ制御部115は、記憶部120から特定のモーションに該当するモーションデータを選択する。データ制御部115は、選択したモーションデータ及び転倒リスクが高いサーボモータ40の情報を再生制御部110に供給する。転倒リスクが高いとは、サーボモータ40が駆動されるとロボット1が転倒する可能性が高いことを意味する。記憶部120は、複数のモーションデータを予め記憶しており、転倒リスクが高いサーボモータ40の情報も予め記憶している。
【0015】
位置検出部125は、サーボモータ40が備える位置検出器(図示せず)から動作部50の位置を検出する。具体的には、位置検出部125は、検出した位置の情報を再生制御部110に供給する。
【0016】
差分算出部130は、現在の動作部50の位置と、再生制御部110から供給されたモーションデータに示される動作部50の開始位置との差分を算出する。差分算出部130は、算出した差分を差分判定部135に供給する。
【0017】
差分判定部135は、差分算出部130によって算出された差分が第1閾値以上であるか否かを判定する。差分算出部130によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行えばロボット1が転倒する可能性が高くなる。したがって、現在の動作部50の位置から、モーションデータに基づいて動作を行っても、ロボット1が転倒する可能性の低い差分の値の臨界値を第1閾値とする。第1閾値は、製品(ロボット1)ごとに異なる値であり、製品ごとに調整されて決定される値である。差分判定部135は、判定した結果を再生制御部110に供給する。
【0018】
駆動制御部140は、サーボモータ40を制御することにより動作部50を動作させる。サーボモータ40は、駆動制御部140によって駆動される。サーボモータ40は動作部50を動作させる。動作部50が動作されれば、サーボモータ40ではなく、他の駆動機構を用いてもよい。ロボット1は複数のサーボモータ40を備えており、例えば、サーボモータ40はロボット1の肩、腰、または足首などに設けられていてもよい。動作部50は、サーボモータ40によって動作する部分であり、ロボット1全体の重心が変化したときに、動作する部分である。例えば、ロボット1の上半身が動いたら、動作部50はロボット1の上半身に該当し、ロボット1の頭が動いたら、動作部50はロボット1の頭に該当する。動作部50は、モーションデータに基づいて動作する。
【0019】
スピーカ20は、ロボット1が音声を出力するためのものである。スピーカ20は、再生制御部110からの指示により音声を出力する。発光部30は、例えば、LED(Light Emitting Diode)であってもよく、再生制御部110からの指示により発光する。発光部30は、発光することができれば特に限定されない。
【0020】
(ロボット1の動作)
次にロボット1の動作(制御方法)について
図2に基づいて説明する。
図2はロボット1の動作を示すフローチャートである。
【0021】
まず、
図2に示すように、実行要求部105は、再生制御部110に特定のモーションの実行を要求する(S105)。再生制御部110は、実行要求部105から特定のモーションの実行を要求されると、データ制御部115に特定のモーションに該当するモーションデータを取得するように指示する。モーションデータとは、例えば、以下の表1に示すようなデータである。
【0023】
表1において、t(msec)は時間であり、s(°)はロボット1において胴体b2と腕a2とのなす角であり、h(°)はロボット1において胴体b2と脚c2とのなす角である。表1に示すように、t(msec)が0〜1000(msec)の間で変化する場合、s(°)は0〜−90(°)の間で変化し、h(°)は常に−90(°)である。
【0024】
ここでは、ロボット1の肩に設けられたサーボモータ40をサーボモータs1と称し、ロボット1の腰に設けられたサーボモータ40をサーボモータh1と称する。表1に示すモーションデータでは、
図3の(a)に示すような動作になる。
図3の(a)ではロボット1は直立している。
図3に示すように、ロボット1にはサーボモータs1及びサーボモータh1が設けられている。サーボモータs1が駆動することでs(°)が変化し、サーボモータh1が駆動することでh(°)が変化する。s(°)及びh(°)において、
図3における右方向が0(°)になり、
図3における下方向が−90(°)になる。
図3の(a)では、s(°)が0(°)から−90(°)に移動するように、サーボモータs1が駆動する。また、h(°)が−90(°)である状態が維持されるように、サーボモータh1が停止している。
【0025】
データ制御部115は、再生制御部110からモーションデータを取得するように指示されると、記憶部120から複数のモーションデータを参照し、記憶部120から特定のモーションに該当するモーションデータを取得する(S110)。データ制御部115は、取得したモーションデータ、及び転倒リスクが高いサーボモータ40の情報を再生制御部110に供給する。
【0026】
再生制御部110は、データ制御部115からモーションデータ、及び転倒リスクが高いサーボモータ40の情報が供給された後、位置検出部125に現在の動作部50の位置を検出するように指示する。ここで、動作部50については、転倒リスクが高いサーボモータ40によって駆動されるものを対象とする。転倒リスクが低いサーボモータ40が駆動してもロボット1が転倒する可能性が低いからである。位置検出部125は、再生制御部110から現在の動作部50の位置を検出するように指示されると、現在の動作部50の位置を検出する(S115)。具体的には、位置検出部125は、サーボモータ40が備える位置検出器(図示せず)から動作部50の位置を検出する。サーボモータ40が備える位置検出器はサーボモータ40の回転角を検出し、位置検出部125は、サーボモータ40の回転角から、動作部50の位置を検出する。位置検出部125は、検出した動作部50の位置の情報を再生制御部110に供給する。動作部50の位置とは、例えば、以下の表2に示すように、s(°)及びh(°)の角度を示すものである。s(°)において動作部50はロボット1の腕a2に該当し、h(°)において動作部50はロボット1の脚c2に該当する。動作部50については、転倒リスクが高いサーボモータ40によって駆動されるものを対象とするので、位置検出部125は、h(°)の角度のみを検出する。
【0028】
表2において、「before」はロボット1がモーションデータを再生する直前の動作部50の位置を示している。表2に示すように、ロボット1がモーションデータを再生する直前の動作部50の位置は、h(°)が−92(°)であることを示す位置である。位置検出部125が検出した位置は、ロボット1がモーションデータを再生する直前の動作部50の位置であるので、表2においては、h(°)が−92(°)であることを示す位置である。
【0029】
再生制御部110は、位置検出部125から動作部50の位置の情報が供給される。その後、再生制御部110は、差分算出部130にモーションデータ、位置検出部125から供給された動作部50の位置の情報、及びデータ制御部115から供給された転倒リスクが高いサーボモータ40の情報を供給する。
【0030】
差分算出部130は、再生制御部110からモーションデータ、動作部50の位置の情報、及び転倒リスクが高いサーボモータ40の情報が供給されると、現在の動作部50の位置とモーションデータに示される動作部50の開始位置との差分を算出する(S120:差分算出工程)。ここで、動作部50については、転倒リスクが高いサーボモータ40によって駆動されるものを対象とする。
【0031】
具体的には、例えば、表2において、現在の動作部50の位置は、h(°)が−92(°)であることを示す位置である。モーションデータに示される動作部50の開始位置は、h(°)が−90(°)であることを示す位置である。転倒リスクが高いサーボモータ40は、サーボモータh1のみであるので、差分算出部130によって算出される差分は、h(°)において2(°)である。ロボット1は直立しているので、転倒リスクが高いサーボモータ40は、サーボモータs1ではなく、サーボモータh1となる。差分算出部130は、算出した差分を差分判定部135に供給する。
【0032】
差分判定部135は、差分算出部130から差分が供給されると、差分算出部130によって算出された差分が第1閾値以上であるか否かを判定する(S125)。第1閾値は、サーボモータ40ごとに異なっていてもよい。また、ロボット1がモーションデータを再生する直前の動作部50の位置と、モーションデータに示される動作部50の開始位置は必ずしも一致しているわけではない。差分判定部135は、問題のない範囲で多少の誤差を許容するために、差分算出部130によって算出された差分が第1閾値以上であるか否かを判定する。
【0033】
差分算出部130によって算出された差分が第1閾値未満である場合(S125にてNOの場合)、差分判定部135は、再生制御部110にモーションデータを再生するように指示する。例えば、表2において、差分算出部130によって算出される差分は、前述したように、h(°)において2(°)である。第1閾値が5(°)であるとすると、差分算出部130によって算出される差分は第1閾値未満となる。表2に示す状態で動作部50が動くと、ロボット1の動作は、
図3の(a)に示す動作になる。
図3の(a)に示す動作では、ロボット1が急に大きく動作することがないので、転倒する可能性がない。つまり、差分判定部135は、差分算出部130によって算出された差分が第1閾値未満である場合、ロボット1が転倒する可能性がないと判定し、再生制御部110にモーションデータを再生するように指示する。
【0034】
再生制御部110は、差分判定部135からモーションデータを再生するように指示されると、再生制御部110は、駆動制御部140にモーションデータを供給する。駆動制御部140は、再生制御部110から供給されたモーションデータに基づいてモーションデータを再生する(S130:再生制御工程)。具体的には、駆動制御部140は、モーションデータに基づいてサーボモータ40を制御し、動作部50を動作させる。
【0035】
差分算出部130によって算出された差分が第1閾値以上である場合(S125にてYESの場合)、差分判定部135は、再生制御部110にエラーを通知する(S135)。例えば、以下の表3において、ロボット1がモーションデータを再生する直前の動作部50の位置は、h(°)が0(°)であることを示す位置である。一方、モーションデータに示される動作部50の開始位置は、h(°)が−90(°)であることを示す位置である。よって、差分算出部130によって算出される差分は、h(°)において90(°)である。第1閾値が5(°)であるとすると、差分算出部130によって算出される差分は第1閾値以上となる。表3に示す状態で動作部50が動くと、ロボット1の動作は、
図3の(b)に示す動作になる。
図3の(b)ではロボット1は座っている状態から直立している状態に移ることが示されている。
図3の(b)に示す動作では、ロボット1が急に大きく動作するので、転倒する可能性がある。つまり、差分判定部135は、差分算出部130によって算出された差分が第1閾値以上である場合、ロボット1が転倒する可能性があると判定し、再生制御部110にエラーを通知する。
【0037】
再生制御部110は、差分判定部135からエラーを通知されると、処理を終了する(モーションデータの再生を行わない)。なお、再生制御部110は、差分判定部135からエラーを通知されたとき、スピーカ20及び発光部30を用いて、スピーカ20に音声を出力させ、発光部30を発光させることでロボット1の周囲にエラーであることを示してもよい。
【0038】
以上により、モーション制御装置10では、差分算出部130は、ロボット1がモーションデータを再生する直前の動作部50の位置と、モーションデータに示される動作部50の開始位置との差分を算出する。ここで、差分算出部130によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行なえばロボット1が転倒する可能性が高くなる。したがって、現在の動作部50の位置から、モーションデータに基づいて動作を行っても、ロボット1が転倒する可能性の低い差分の値の臨界値を第1閾値とする。再生制御部110は、差分算出部130によって算出された差分が第1閾値未満である場合、モーションデータを再生する制御を行う。これにより、ロボット1が想定外の姿勢で動作を開始した場合であっても、ロボット1の動作実行時の転倒リスクを低減することができる。
【0039】
また、モーション制御装置10では、記憶部120は、駆動されるとロボット1が転倒する可能性が高いサーボモータ40の情報を予め記憶する。また、差分算出部130は、その情報に基づいて、駆動されるとロボット1が転倒する可能性が高いサーボモータ40によって駆動される動作部50に対して差分を算出する。これにより、駆動されるとロボット1が転倒する可能性が高いサーボモータ40によって駆動される動作部50においてのみ差分を算出するので、差分算出部130が行う処理を少なくすることができる。
【0040】
(変形例1)
なお、再生制御部110は、差分判定部135からエラーを通知されると、動作部50の位置を基準位置に移動させるように駆動制御部140に指示してもよい。基準位置とは、例えば、s(°)が−90(°)、h(°)が−90(°)を示す位置である。動作部50の位置が基準位置に移動した後、再生制御部110は、動作部50の位置を、基準位置からモーションデータに示される動作部50の開始位置に移動させるように駆動制御部140に指示する。動作部50の位置がモーションデータに示される動作部50の開始位置に移動した後、再生制御部110は、駆動制御部140にモーションデータを供給する。駆動制御部140は、再生制御部110から供給されたモーションデータに基づいてモーションデータを再生する。
【0041】
(変形例2)
また、
図3の(c)に示すように、サーボモータh1及びサーボモータa1のように、転倒リスクが高いサーボモータ40が複数存在する場合、転倒リスクが高い複数のサーボモータ40それぞれに対して差分を判定し、モーションデータの実行可否を判定する。この差分とは、前述したように、ロボット1がモーションデータを再生する直前の動作部50の位置とモーションデータに示される動作部50の開始位置との差分である。サーボモータa1とは、ロボット1の足首に設けられたサーボモータ40である。
図3の(c)ではロボット1は直立している。
【0042】
転倒リスクが高いサーボモータ40が複数存在する場合、ロボット1は、サーボモータ40ごとにモーションデータの実行可否を判定してもよい。また、差分判定部135が、各サーボモータ40における差分を合計し、その合計が第1閾値以上であるか否かを判定することでモーションデータの実行可否を判定してもよい。
【0043】
ロボット1がサーボモータ40ごとにモーションデータの実行可否を判定する場合、例えば、サーボモータh1における差分が2であり、サーボモータa1における差分が7であるとする。サーボモータh1における差分が第1閾値未満となり、サーボモータa1における差分が第1閾値以上となる。差分判定部135は、サーボモータh1をモーションデータ実行可であると判定し、サーボモータa1をモーションデータ実行不可であると判定する。つまり、モーションデータにおいて、サーボモータh1の駆動は実行されるが、サーボモータa1の駆動は実行されない。
【0044】
また、差分判定部135が、各サーボモータ40における差分を合計し、その合計が第1閾値以上であるか否かを判定する場合、例えば、サーボモータh1における差分が4であり、サーボモータa1における差分が4であるとする。サーボモータh1における差分とサーボモータa1における差分との和は8となり、第1閾値以上となる。差分判定部135は、モーションデータ実行不可であると判定する。異なる例として、サーボモータh1における差分が2であり、サーボモータa1における差分が2であるとする。サーボモータh1における差分とサーボモータa1における差分との和は4となり、第1閾値未満となる。差分判定部135は、モーションデータ実行可であると判定する。
【0045】
〔実施形態2〕
本発明の他の実施形態について、
図4〜
図6に基づいて説明すれば、以下の通りである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
【0046】
(ロボット2の構成)
ロボット2は、
図4に示すように、ロボット1と比べて、加速度センサ60、カメラ70、及びマイク80を備えている点が異なり、モーション制御装置10がモーション制御装置11に変更されている点が異なる。モーション制御装置11は、モーション制御装置10と比べて、状態検出部145を備えている点が異なる。
【0047】
状態検出部145は、加速度センサ60、カメラ70、及びマイク80から情報を受け取り、それらの情報からロボット2の状態(姿勢)を検出する。加速度センサ60は、ロボット2の加速度を検出する。カメラ70は、ロボット2の周囲の画像を撮影する。マイク80は、ロボット2の周囲の音声を入力する。状態検出部145が、加速度センサ60、カメラ70、及びマイク80から情報に基づいて、ロボット2の状態を検出する方法は公知であるので説明を省略する。
【0048】
(ロボット2の動作)
次にロボット2の動作について
図5に基づいて説明する。
図5はロボット2の動作を示すフローチャートである。ロボット2の動作は、
図5に示すように、ロボット1の動作と比べて、S140及びS145の処理が追加されている点が異なる。
【0049】
S105〜S115の処理は、ロボット1の動作と同様である。S115の処理の後、再生制御部110は、位置検出部125から動作部50の位置の情報が供給されると、状態検出部145にロボット2の状態を検出するように指示する。
【0050】
状態検出部145は、再生制御部110からロボット2の状態を検出するように指示されると、ロボット2の状態を検出する(S140)。具体的には、状態検出部145は、加速度センサ60、カメラ70、及びマイク80から情報を受け取り、それらの情報からロボット2の状態を検出する。状態検出部145は、検出したロボット2の状態の情報を再生制御部110及びデータ制御部115に供給する。
【0051】
データ制御部115は、ロボット2の状態に応じて、転倒リスクが高いサーボモータ40を特定する(S145)。記憶部120には、ロボット2の状態の情報と転倒リスクが高いサーボモータ40の情報とが対応付けられて記憶されている。データ制御部115は、状態検出部145から供給されたロボット2の状態の情報に対応する、記憶部120に記憶されているロボット2の状態の情報を記憶部120から参照する。また、データ制御部115は、記憶部120から、記憶部120に記憶されているロボット2の状態の情報に対応付けられた転倒リスクが高いサーボモータ40の情報を参照する。データ制御部115は、この情報を参照することで、状態検出部145から供給されたロボット2の状態の情報に対応する、転倒リスクが高いサーボモータ40を特定する。データ制御部115は、取得したモーションデータ、及び転倒リスクが高いサーボモータ40の情報を再生制御部110に供給する。S120〜S135の処理は、ロボット1の動作と同様である。
【0052】
以上により、モーション制御装置11では、差分算出部130は、ロボット2の姿勢の情報に対応する、駆動されるとロボット2が転倒する可能性が高いサーボモータ40の情報に基づいて、駆動されるとロボット2が転倒する可能性が高いサーボモータ40によって動作させられる動作部50に対して差分を算出する。差分とは、ロボット2がモーションデータを再生する直前の動作部50の位置と、モーションデータに示される動作部50の開始位置との差分である。これにより、ロボット2の姿勢に応じて、ロボット2がモーションデータを再生する直前の動作部50の位置と、モーションデータに示される動作部50の開始位置との差分が算出される。このため、ロボット2の姿勢に応じて、モーションデータを再生するか否かを判定するので、ロボット2の動作実行時の転倒リスクを低減することができる。
【0053】
(転倒リスクが高いサーボモータ40が存在しない場合)
なお、データ制御部115が、ロボット2の状態の情報に対応する、転倒リスクが高いサーボモータ40が存在しないと判定した場合、再生制御部110にモーションを再生するように指示する。例えば、
図6の(a)に示すように、ロボット2が背中を後ろにして横になっている状態を考える。
図6の(a)に示す動作は、以下の表4に対応する。サーボモータs1において、ロボット2がモーションデータを再生する直前の動作部50(腕a2)の位置とモーションデータに示される動作部50(腕a2)の開始位置との差分が大きくても、ロボット2が転倒する可能性はない。また、サーボモータh1において、ロボット2がモーションデータを再生する直前の動作部50(脚c2)の位置とモーションデータに示される動作部50(脚c2)の開始位置との差分が大きくても、ロボット2が転倒する可能性はない。ロボット2が背中を後ろにして横になっているからである。ロボット2が背中を後ろにして横になっている状態では、サーボモータs1及びサーボモータh1の両方とも転倒リスクが高いサーボモータ40には該当しない。データ制御部115は、転倒リスクが高いサーボモータ40は存在しないと判定する。転倒リスクが高いサーボモータ40は存在しない場合、データ制御部115は、再生制御部110にモーションを再生するように指示する。
【0055】
(ロボット2の状態に応じてモーションデータ実行不可であると判定する場合)
一方、例えば、
図6の(b)に示すように、ロボット2が腕a2及び脚c2で胴体b2を支持している状態を考える。
図6の(b)に示す動作は、以下の表5に対応する。この状態でサーボモータs1及び/またはサーボモータh1を駆動させると、ロボット2が転倒する。データ制御部115は、ロボット2が転倒すると判定し、再生制御部110にエラーを通知する。再生制御部110は、データ制御部115からエラーを通知されると、処理を終了する(モーションデータの再生を行わない)。
【0057】
〔実施形態3〕
本発明の他の実施形態について、
図7〜
図9に基づいて説明すれば、以下の通りである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
【0058】
(ロボット3の構成)
ロボット3は、
図7に示すように、ロボット2と比べて、モーション制御装置11がモーション制御装置12に変更されている点が異なる。モーション制御装置12は、モーション制御装置11と比べて、演算処理部150及び判定部155を備えている点が異なる。
【0059】
演算処理部150は、サーボモータ40の回転速度、及び動作部50にかかる力の大きさを算出する。判定部155は、演算処理部150によって算出された、動作部50にかかる力の大きさが第2閾値以上であるか否かを判定する。演算処理部150によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行えばロボット3が転倒する可能性が高くなる。したがって、ロボット3がモーションデータに基づいて動作を行っても、ロボット3が転倒する可能性の低い差分の値の臨界値を第2閾値とする。第2閾値は、製品(ロボット3)ごとに異なる値であり、製品ごとに調整されて決定される値である。
【0060】
(ロボット3の動作)
次にロボット3の動作について
図8に基づいて説明する。
図8はロボット3の動作を示すフローチャートである。ロボット3の動作は、
図8に示すように、ロボット2の動作と比べて、S155〜S160の処理が追加されている点が異なる。
【0061】
S105〜S115、S140、S145、S120、S125の処理は、ロボット2の動作と同様である。S125の処理の後、差分算出部130によって算出された差分が第1閾値未満である場合(S125にてNOの場合)、差分判定部135は、演算処理部150にモーションデータ、動作部50の位置の情報、及びロボット3の状態の情報を供給する。また、差分算出部130によって算出された差分が第1閾値以上である場合(S125にてYESの場合)、差分判定部135は、再生制御部110にエラーを通知する。
【0062】
演算処理部150は、差分判定部135からモーションデータ、動作部50の位置の情報、及びロボット3の状態の情報が供給されると、サーボモータ40の回転速度を算出する(S150)。具体的には、例えば、
図9に示す動作において、以下の表6では、t(msec)が0〜900(msec)である場合、s(°)が常に0(°)であり、h(°)が−90(°)から−45(°)に変化する。時間に対する角度の変化量が分かるので、演算処理部150はモーションデータに基づいてサーボモータ40の回転速度を算出する。また、サーボモータ40の回転速度は、ロボット3の状態によって変化するので、演算処理部150は、ロボット3の状態の情報に基づいてサーボモータ40の回転速度を算出する。
【0064】
演算処理部150は、算出したサーボモータ40の回転速度、及び状態検出部145から供給されたロボット3の状態の情報に基づいて、動作部50にかかる力の大きさを算出する(S155)。具体的には、演算処理部150は、ロボット3の状態の情報から、ロボット3の重心を算出する。演算処理部150は、サーボモータ40の回転速度、及びロボット3の重心に基づいて動作部50にかかる力の大きさを算出する。ここで、動作部50については、転倒リスクが高いサーボモータ40によって駆動されるものを対象とする。
【0065】
動作部50において、ロボット3の状態が異なると、ロボット3の重心が異なる。例えば、ロボット3が腕a2を上げている場合と、ロボット3が腕a2を下げている場合とを比べると、サーボモータ40の回転速度及びロボット3の重心が異なる。なお、演算処理部150が動作部50にかかる力の大きさを算出する方法は公知であるので、説明を省略する。演算処理部150は、算出した動作部50にかかる力の大きさの情報を判定部155に供給する。
【0066】
なお、以下の表7において、t(msec)が0〜450(msec)である場合、s(°)が常に0(°)であり、h(°)が−90(°)から−45(°)に変化する。表6に示す動作と比べて、表7に示す動作では、h(°)が−90(°)から−45(°)に変化する時間が半分になっているので、サーボモータ40の回転速度が約2倍になる。また、動作部50にかかる力の大きさは約4倍になる。よって、表6に示す動作よりも、表7に示す動作の方が、ロボット3が転倒する可能性が高くなる。
【0068】
判定部155は、演算処理部150から供給された、動作部50にかかる力の大きさの情報に基づいて、動作部50にかかる力の大きさが第2閾値以上であるか否かを判定する(S160)。
【0069】
動作部50にかかる力の大きさが第2閾値未満である場合(S160にてNOの場合)、判定部155は、再生制御部110にモーションデータを再生するように指示する。一方、動作部50にかかる力の大きさが第2閾値以上である場合(S160にてYESの場合)、判定部155は、再生制御部110にエラーを通知する(S135)。
【0070】
以上により、モーション制御装置12では、再生制御部110は、演算処理部150によって算出された動作部50にかかる力の大きさが第2閾値未満である場合、モーションデータを再生する。ここで、演算処理部150によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行なえばロボット3が転倒する可能性が高くなる。したがって、現在の動作部50の位置から、モーションデータに基づいて動作を行っても、ロボット3が転倒する可能性の低い、動作部50にかかる力の大きさの臨界値を第2閾値とする。これにより、ロボット3の動作実行時の転倒リスクを低減することができる。
【0071】
〔ソフトウェアによる実現例〕
モーション制御装置10・11・12の制御ブロック(特に実行要求部105、再生制御部110、データ制御部115、位置検出部125、差分算出部130、差分判定部135、駆動制御部140、状態検出部145、演算処理部150、及び判定部155)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
【0072】
後者の場合、モーション制御装置10・11・12は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0073】
〔まとめ〕
本発明の態様1に係る制御装置(モーション制御装置10・11・12)は、再生されるモーションデータに基づいて動作する動作部50と、前記動作部を動作させる駆動部(サーボモータ40)とを有するロボット1・2・3の動作を制御する制御装置において、前記モーションデータに示される前記動作部の開始位置と、前記モーションデータを再生する直前の前記動作部の位置との差分を算出する差分算出部130と、前記モーションデータの再生を制御する再生制御部110とを備え、前記再生制御部は、前記モーションデータを再生する直前の前記動作部の位置から、前記モーションデータに基づいて動作を行っても、前記ロボットが転倒する可能性の低い差分の値の臨界値を第1閾値とし、前記差分算出部によって算出された差分が前記第1閾値以上である場合、前記モーションデータの再生を行わない。
【0074】
上記構成によれば、差分算出部は、ロボットがモーションデータを再生する直前の動作部の位置と、モーションデータに示される動作部の開始位置との差分を算出する。ここで、差分算出部によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行なえばロボットが転倒する可能性が高くなる。したがって、現在の動作部の位置から、モーションデータに基づいて動作を行っても、ロボットが転倒する可能性の低い差分の値の臨界値を第1閾値とする。再生制御部は、差分算出部によって算出された差分が第1閾値以上である場合、モーションデータの再生を行わない。これにより、ロボットが想定外の姿勢で動作を開始した場合であっても、ロボットの動作実行時の転倒リスクを低減することができる。
【0075】
本発明の態様2に係る制御装置(モーション制御装置10・11・12)は、上記態様1において、駆動されると前記ロボットが転倒する可能性が高い前記駆動部の情報が予め記憶された記憶部120をさらに備え、前記差分算出部130は、前記情報に基づいて、駆動されると前記ロボットが転倒する可能性が高い前記駆動部によって駆動される前記動作部に対して前記差分を算出してもよい。
【0076】
上記構成によれば、記憶部は、駆動されるとロボットが転倒する可能性が高い駆動部の情報を予め記憶する。また、差分算出部は、前記情報に基づいて、駆動されるとロボットが転倒する可能性が高い駆動部によって駆動される動作部に対して差分を算出する。これにより、駆動されるとロボットが転倒する可能性が高い駆動部によって駆動される動作部においてのみ差分を算出するので、差分算出部が行う処理を少なくすることができる。
【0077】
本発明の態様3に係る制御装置(モーション制御装置11・12)は、上記態様1において、前記ロボットの姿勢の情報と、駆動されると前記ロボットが転倒する可能性が高い前記駆動部の情報とを対応付けて記憶する記憶部120をさらに備え、前記差分算出部130は、前記ロボットの姿勢の情報に対応する、駆動されると前記ロボットが転倒する可能性が高い前記駆動部の情報に基づいて、駆動されると前記ロボットが転倒する可能性が高い前記駆動部によって動作させられる前記動作部に対して前記差分を算出してもよい。
【0078】
上記構成によれば、差分算出部は、ロボットの姿勢の情報に対応する、駆動されるとロボットが転倒する可能性が高い駆動部の情報に基づいて、駆動されるとロボットが転倒する可能性が高い駆動部によって動作させられる動作部に対して差分を算出する。差分とは、ロボットがモーションデータを再生する直前の動作部の位置と、モーションデータに示される動作部の開始位置との差分である。これにより、ロボットの姿勢に応じて、ロボットがモーションデータを再生する直前の動作部の位置と、モーションデータに示される動作部の開始位置との差分が算出される。このため、ロボットの姿勢に応じて、モーションデータを再生するか否かを判定するので、ロボットの動作実行時の転倒リスクを低減することができる。
【0079】
本発明の態様4に係る制御装置(モーション制御装置12)は、上記態様1から3のいずれかにおいて、前記駆動部(サーボモータ40)はモータであり、前記モータの回転速度、及び前記ロボットの姿勢の情報に基づいて、前記動作部50にかかる力の大きさを算出する処理を行う演算処理部150をさらに備え、前記再生制御部110は、前記モーションデータに基づいて動作を行っても、前記ロボット3が転倒する可能性の低い、前記動作部にかかる力の大きさの臨界値を第2閾値とし、前記再生制御部110は、前記演算処理部によって算出された前記動作部にかかる力の大きさが第2閾値以上である場合、前記モーションデータの再生を行わない。
【0080】
上記構成によれば、再生制御部は、演算処理部によって算出された動作部にかかる力の大きさが第2閾値未満である場合、モーションデータを再生する。ここで、演算処理部によって算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行なえばロボットが転倒する可能性が高くなる。したがって、現在の動作部の位置から、モーションデータに基づいて動作を行っても、ロボットが転倒する可能性の低い、動作部にかかる力の大きさの臨界値を第2閾値とする。これにより、ロボットの動作実行時の転倒リスクを低減することができる。
【0081】
本発明の態様5に係る制御方法は、再生されるモーションデータに基づいて動作する動作部と、前記動作部を動作させる駆動部とを有するロボットの動作を制御する制御装置における制御方法において、前記モーションデータに示される前記動作部の開始位置と、前記モーションデータを再生する直前の前記動作部の位置との差分を算出する差分算出工程と、前記モーションデータの再生を制御する再生制御工程とを備え、前記再生制御工程にて、前記モーションデータを再生する直前の前記動作部の位置から、前記モーションデータに基づいて動作を行っても、前記ロボットが転倒する可能性の低い差分の値の臨界値を第1閾値とし、前記差分算出工程にて算出された差分が前記第1閾値以上である場合、前記モーションデータの再生を行わない。
【0082】
上記構成によれば、差分算出工程にて、ロボットがモーションデータを再生する直前の動作部の位置と、モーションデータに示される動作部の開始位置との差分を算出する。ここで、差分算出工程にて算出された差分は、大きければ大きいほど、そのままモーションデータに基づいて動作を行なえばロボットが転倒する可能性が高くなる。したがって、現在の動作部の位置から、モーションデータに基づいて動作を行っても、ロボットが転倒する可能性の低い差分の値の臨界値を第1閾値とする。再生制御工程にて、差分算出工程にて算出された差分が第1閾値以上である場合、モーションデータの再生を行わない。これにより、ロボットが想定外の姿勢で動作を開始した場合であっても、ロボットの動作実行時の転倒リスクを低減することができる。
【0083】
本発明の各態様に係る制御装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記制御装置が備える各部(ソフトウェア要素)として動作させることにより上記制御装置をコンピュータにて実現させる制御装置の制御プログラム、及びそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【0084】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。