(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
B25J 13/08 20060101AFI20240312BHJP
B25J 19/06 20060101ALI20240312BHJP
A63F 9/00 20060101ALI20240312BHJP
A63H 11/00 20060101ALI20240312BHJP
【FI】
B25J13/08 Z
B25J19/06
A63F9/00 A
A63H11/00 Z
(21)【出願番号】P 2022567722
(86)(22)【出願日】2020-12-07
(86)【国際出願番号】 JP2020045386
(87)【国際公開番号】W WO2022123617
(87)【国際公開日】2022-06-16
【審査請求日】2023-06-02
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】110000637
【氏名又は名称】弁理士法人樹之下知的財産事務所
(72)【発明者】
【氏名】狩谷 真一
(72)【発明者】
【氏名】根田 妙子
(72)【発明者】
【氏名】石塚 健作
【審査官】尾形 元
(56)【参考文献】
【文献】特開2007-301004(JP,A)
【文献】特開2001-287184(JP,A)
【文献】特開2003-181152(JP,A)
【文献】韓国登録特許第10-1336802(KR,B1)
【文献】特開平4-8484(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 13/08
B25J 19/06
A63F 9/00
A63H 11/00
(57)【特許請求の範囲】
【請求項1】
筐体の部分の運動状態の変化を示す計測値を取得する計測値取得部と、
前記計測値に基づいて前記筐体の部分で発生した接触イベントを検出する接触イベント検出部と、
前記筐体の部分に含まれる動作実施部分で前記接触イベントが検出された場合に前記接触イベントが能動的であると判定する能動性判定部と
を備える情報処理装置。
【請求項2】
前記筐体は、関節部を動作パターンに従って駆動することによって動作し、
前記能動性判定部は、前記動作パターンに基づいて前記動作実施部分を特定する、請求項1に記載の情報処理装置。
【請求項3】
前記筐体は、第1の部分と、前記第1の部分によって支持される第2の部分とを含み、
前記能動性判定部は、前記接触イベントが発生した時に、前記第2の部分の先端部が前記第1の部分に対して所定の位置関係を満たす場合に前記第2の部分を前記動作実施部分として特定する、請求項1または請求項2に記載の情報処理装置。
【請求項4】
前記計測値は、前記筐体の関節部を駆動するモータで計測されたトルク計測値を含み、
前記接触イベント検出部は、前記トルク計測値または前記トルク計測値に基づく値が閾値範囲を超える場合に前記接触イベントを検出する、請求項1から請求項3のいずれか1項に記載の情報処理装置。
【請求項5】
筐体の部分の運動状態の変化を示す計測値を取得するステップと、
前記計測値に基づいて前記筐体の部分で発生した接触イベントを検出するステップと、
前記筐体の部分に含まれる動作実施部分を特定し、前記動作実施部分で前記接触イベントが検出された場合に前記接触イベントが能動的であると判定するステップと
を含む情報処理方法。
【請求項6】
筐体の部分の運動状態の変化を示す計測値を取得する計測値取得部と、
前記計測値に基づいて前記筐体の部分で発生した接触イベントを検出する接触イベント検出部と、
前記筐体の部分に含まれる動作実施部分を特定し、前記動作実施部分で前記接触イベントが検出された場合に前記接触イベントが能動的であると判定する能動性判定部と
を備える情報処理装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
様々なタイプのロボットの研究、開発が行われている。特許文献1は、カメラ画像入力器を介して入力されたユーザの画像に応じて、ユーザの動作と同調した動作を生成するモジュールを備えたロボット装置を開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば上記のようなロボットが開発される中で、ロボットの想定外の動き、例えばロボット同士の物理的なインタラクションによって発生する動きを検出して、エンターテインメントなどのために利用することが検討される。しかしながら、このような動きを利用する技術については、未だ十分に提案されているとはいえない。
【0005】
そこで、本発明は、ロボットの想定外の動きを検出して利用することを可能にする情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明のある観点によれば、筐体の部分の運動状態の変化を示す計測値を取得する計測値取得部と、計測値に基づいて筐体の部分で発生した接触イベントを検出する接触イベント検出部と、筐体の部分に含まれる動作実施部分で接触イベントが検出された場合に接触イベントが能動的であると判定する能動性判定部とを備える情報処理装置が提供される。
【0007】
本発明の別の観点によれば、筐体の部分の運動状態の変化を示す計測値を取得するステップと、計測値に基づいて筐体の部分で発生した接触イベントを検出するステップと、筐体の部分に含まれる動作実施部分を特定し、動作実施部分で接触イベントが検出された場合に接触イベントが能動的であると判定するステップとを含む情報処理方法が提供される。
【0008】
本発明のさらに別の観点によれば、筐体の部分の運動状態の変化を示す計測値を取得する計測値取得部と、計測値に基づいて筐体の部分で発生した接触イベントを検出する接触イベント検出部と、筐体の部分に含まれる動作実施部分を特定し、動作実施部分で接触イベントが検出された場合に接触イベントが能動的であると判定する能動性判定部とを備える情報処理装置としてコンピュータを機能させるためのプログラムが提供される。
【図面の簡単な説明】
【0009】
【
図1】本発明の一実施形態に係るシステムの構成例を概略的に示す図である。
【
図2】
図1に示されたシステムにおけるロボットの構成例を概略的に示す図である。
【
図3】
図1に示されたシステムにおける判定装置の構成例を概略的に示す図である。
【
図4A】接触イベントの検出および判定に関する機能構成の第1の例を示すブロック図である。
【
図4B】接触イベントの検出および判定に関する機能構成の第2の例を示すブロック図である。
【
図5】本発明の一実施形態における接触イベントの検出のための具体的な機能構成の例を示す図である。
【
図6A】トルク計測値と閾値範囲との比較の例を示す図である。
【
図6B】トルク計測値と閾値範囲との比較の例を示す図である。
【
図7】トルク計測値にローパスフィルタを適用した例を示す図である。
【
図9A】複数の関節部におけるトルク計測値の比率を組み合わせた検出の例を示す図である。
【
図9B】複数の関節部におけるトルク計測値の比率を組み合わせた検出の例を示す図である。
【
図10A】角度差分値を組み合わせた検出の例を示す図である。
【
図10B】角度差分値を組み合わせた検出の例を示す図である。
【
図11A】本発明の一実施形態における接触イベントの能動性の判定の例について説明するための図である。
【
図11B】本発明の一実施形態における接触イベントの能動性の判定の例について説明するための図である。
【
図12】本実施形態において能動的な接触イベントを検出するための処理を概略的に示す図である。
【
図13】本発明の一実施形態におけるスコア算出部の処理の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
【0011】
(システム構成)
図1は、本発明の一実施形態に係るシステムの構成例を概略的に示す図である。本実施形態において、システム10はロボット100A,100Bによる格闘ゲームを提供する。システム10は、コントローラ200A,200Bおよび判定装置300をさらに含む。
【0012】
ロボット100A,100B(以下、総称してロボット100ともいう)はそれぞれ頭部101A,101B(以下、総称して頭部101ともいう)、胴部102A,102B(以下、総称して胴部102ともいう)、腕部103A,103B,104A,104B(以下、総称して腕部103,104ともいう)および脚部105A,105B,106A,106B(以下、総称して脚部105,106ともいう)を有する。
【0013】
コントローラ200A,200Bは、例えば図示しないボタンやスティックに対するユーザの操作入力に従って操作信号を生成する。あるいは、コントローラ200A,200Bは、図示しないカメラまたはセンサなどを含むモーションキャプチャによって特定されたユーザの動きに従って操作信号を生成してもよい。操作信号は、コントローラ200Aからロボット100Aに、コントローラ200Bからロボット100Bにそれぞれ送信され、ロボット100A,100Bはそれぞれの操作信号に従って動作する。
【0014】
上記のようにロボット100A,100Bがそれぞれコントローラ200A,200Bの操作信号に従って動作し、腕部103,104や脚部105,106を駆動させて相手に対する攻撃および防御を行うことによって格闘ゲームが提供される。格闘ゲームのルールは特に限定されないが、例えばロボット100Aの腕部103A,104Aのいずれかによる攻撃がロボット100Bの頭部101Bまたは胴部102Bにヒットしたときに、ロボット100Aにポイントを与えてもよい。判定装置300は、ロボット100A,100Bからそれぞれ送信される情報に従って、上記のようなポイントの判定を実施する。
【0015】
図2は、
図1に示されたシステムにおけるロボットの構成例を概略的に示す図である。ロボット100は、例えば胴部102に搭載される情報処理装置110を有する。情報処理装置110は、演算処理を実行するCPU(Central Processing Unit)111、RAM(Random Access Memory)112、ROM(Read Only Memory)113、および外部メモリ114などを含む。情報処理装置110は、通信インターフェース121が受信した操作信号または制御信号に応じてロボット100の各部の動作を決定する。通信インターフェース121は、バスインターフェース115を介して情報処理装置110に接続される。
【0016】
情報処理装置110は、決定された動作が実行されるように、腕部103,104、手部103H,104H、脚部105,106および足部105F,106Fの関節部を回転駆動するモータ130を制御する。図示されていないが、頭部101および胴部102にもモータ130によって駆動される関節部が設けられてもよい。例えば、情報処理装置110のCPU111は、ROM113または外部メモリ114に格納された動作パターンから決定された動作に対応するパターンを選択し、選択されたパターンに従って足部運動、ZMP(Zero Moment Point)軌道、体幹運動、上肢運動、腰部水平位置および高さなどを設定し、これらの設定値に従ってモータ130を制御する。
【0017】
また、ロボット100には、慣性計測装置(IMU:Inertial Measurement Unit)122などのセンサが搭載される。センサはバスインターフェース115を介して情報処理装置110に接続され、情報処理装置110は必要に応じてセンサの出力値を参照してロボット100の各部を制御する。また、情報処理装置110は、後述するような処理によって取得された攻撃および防御に関する判定情報を
図1に示された判定装置300に送信してもよい。あるいは、情報処理装置110は、センサの出力値の少なくとも一部や、選択されている動作パターンまたはモータ130の制御のための設定値などを、攻撃および防御に関する判定情報を抽出する判定装置300に送信してもよい。
【0018】
図3は、
図1に示されたシステムにおける判定装置の構成例を概略的に示す図である。判定装置300は、情報処理装置310および通信インターフェース321を有する。情報処理装置310は、演算処理を実行するCPU311、RAM312、ROM313、および外部メモリ314などを含む。情報処理装置310は、通信インターフェース321がロボット100A,100Bからそれぞれ受信した判定情報に基づいて格闘ゲームの勝敗を判定する。判定結果やゲームスコアは、例えば通信インターフェース321を介してユーザ端末などの他の装置に送信されたり、ディスプレイ322に表示されたりしてもよい。通信インターフェース321およびディスプレイ322は、バスインターフェース315を介して情報処理装置310に接続される。
【0019】
本実施形態では、格闘ゲームの勝敗を判定する要素として接触イベントが定義される。接触イベントは、例えば格闘ゲームの中でロボット100Aがロボット100Bの筐体のいずれかの部分を打撃した場合に発生する。このとき、ロボット100A,100Bの各部を駆動するモータでは、コントローラ200A,200Bの操作信号に従って実行される動作によるトルク変化に加えて、外部のオブジェクトである相手側のロボットが筐体に接触したことによって加えられた力によるトルク変化が発生する。前者のトルク変化が、例えば床面との接触によるものも含めて、ロボット100において設定されている動作パターンやセンサの出力値からトルク変化の大きさおよびタイミングが予測可能であるのに対して、後者はトルク変化の大きさおよびタイミングがロボット100Bの位置や動きによって変動するため、同様に予測することは困難である。このような外部のオブジェクトとの接触によって発生するトルク変化を伴うイベントを、本明細書では接触イベントという。
【0020】
上記のように定義される接触イベントは、さらに受動的な接触イベントと能動的な接触イベントとに分けられる。例えば、ロボット100Aがロボット100Bの筐体のいずれかの部分を打撃した場合に、打撃された側のロボット100Bで発生する。この場合、ロボット100Bは打撃のための動作を行っていないため、ロボット100B側ではイベントの発生自体が予測困難である。このような場合に、ロボット100Bにおいて受動的な接触イベントが発生したという。一方、上記の場合において、ロボット100Aは打撃のための動作を行っているため、ロボット100A側で接触イベントの発生自体は予測できる。このような場合に、ロボット100Aにおいて能動的な接触イベントが発生したという。ただし、例えばロボット100Bが回避動作を行った場合など、予測された接触イベントが発生しない場合がありうる。また、接触イベントが発生した場合もトルク変化の大きさおよびタイミングはロボット100Bの位置や動きに依存するため、能動的な接触イベントであってもこれらの予測は困難である。
【0021】
本実施形態では、上記のような受動的な接触イベントおよび能動的な接触イベントをロボット100A側およびロボット100B側でそれぞれ検出し、さらにそれらの検出結果を統合することによって格闘ゲームの勝敗を判定する。そのための機能構成として、システム10はトルク計測値取得部510、角度差分値取得部520、接触イベント検出部530、能動性判定部540およびスコア加算部550を含む。これらの機能構成は、
図1に示されたシステム10においてロボット100が有する情報処理装置110、または判定装置300が有する情報処理装置310において実装される。
【0022】
具体的には、例えば、
図4Aに示されるようにロボット100でトルク計測値取得部510、角度差分値取得部520、接触イベント検出部530、および能動性判定部540が実装され、判定装置300でスコア加算部550が実装されてもよい。この場合、判定装置300にはロボット100A,100Bのそれぞれでの接触イベントの検出結果を受信する接触イベント検出結果取得部551と、それぞれの接触イベントについて能動性の判定結果を受信する能動性判定結果取得部552とが含まれる。
【0023】
あるいは、
図4Bに示されるようにロボット100でトルク計測値取得部510および角度差分値取得部520が実装され、判定装置300で接触イベント検出部530、能動性判定部540およびスコア加算部550が実装されてもよい。この場合、上記の接触イベント検出結果取得部および能動性判定結果取得部の機能は接触イベント検出部530および能動性判定部540に含まれる。以下それぞれの機能構成についてさらに説明する。
【0024】
トルク計測値取得部510は、ロボット100の筐体の関節部を駆動するモータで計測されたトルク計測値を取得する。上述のように、ロボット100の筐体は頭部101、胴部102、および腕部103,104などを含み、それぞれの部分を連結する関節部はモータ130によって駆動される。トルク計測値は、例えばモータ130に流れる電流を計測することによって取得される。関節部において複数の方向(例えば、Roll,Pitch,Yaw)の駆動が可能である場合は、それぞれの方向に関節部を駆動するモータのトルク計測値が取得されてもよい。取得されたトルク計測値は、接触イベント検出部530においてリアルタイムで処理されてもよいし、時系列で取得されたトルク計測値が所定の時間バッファされて時間差分や移動平均などが算出されてもよい。
【0025】
角度差分値取得部520は、ロボット100の筐体の関節部を駆動するモータにおける角度計測値と角度指示値との差分を示す角度差分値を取得する。角度計測値は、例えばモータによって駆動される関節部に取り付けられたポテンショメータまたはエンコーダの出力値として取得される。角度指示値は、例えば情報処理装置110で決定されるそれぞれのモータ130の回転角度の目標値である。
【0026】
接触イベント検出部530は、トルク計測値取得部510が取得したトルク計測値、またはトルク計測値に基づく値が閾値範囲を超える場合に、トルク計測値が取得されたモータ130によって駆動される関節部によって連結される筐体の部分で発生した接触イベントを検出する。具体的には、例えば、ロボット100の頭部101と胴部102とを連結する関節部を駆動するモータのトルク計測値、またはトルク計測値に基づく値が閾値範囲を超える場合に、接触イベント検出部530は頭部101または胴部102で発生した接触イベントを検出する。
【0027】
ここで、接触イベント検出部530が接触イベントの検出に用いる閾値範囲は、通常動作時、すなわちロボット100の各関節部を駆動するモータが情報処理装置110で決定された動作パターンに従って動作し、想定外の外力が加わらない場合にそれぞれのモータで検出されるトルク計測値の範囲に対応し、例えばロボット100が様々な動作をしたときのトルク計測値を実測することによって決定される。閾値範囲はそれぞれの関節部やモータの駆動方向(例えばRoll,Pitch,Yaw)について個別に設定されてもよいし、2以上の関節部や駆動方向について共通の閾値範囲が設定されてもよい。
【0028】
上記の接触イベント検出部530は、例えば単純にトルク計測値が閾値範囲を超える場合、すなわちトルク計測値が閾値範囲の最大値よりも大きいか、または閾値範囲の最小値よりも小さい場合に接触イベントを検出してもよい。あるいは、接触イベント検出部530は、後述する例のようにトルク計測値の所定の周波数以下の成分が閾値範囲を超える場合に接触イベントを検出するか、またはトルク計測値の時間差分が閾値範囲を超える場合に接触イベントを検出してもよい。また、接触イベント検出部530は、後述する例のように複数のトルク計測値の比率や、角度差分値取得部520が取得した角度差分値にさらに基づいて接触イベントを検出してもよい。
【0029】
能動性判定部540は、接触イベント検出部530で検出された接触イベントが能動的であるか否かを判定する。ここで、上述の通り、能動的な接触イベントは、ロボット100がその接触イベントを引き起こすための動作を行っているために、発生自体は予測可能であったイベントである。具体的には、能動性判定部540は、ロボット100の筐体の部分に含まれる動作実施部分で接触イベントが検出された場合に、接触イベントが能動的であると判定する。例えば、能動性判定部540は、情報処理装置110で決定された関節部の動作パターンに基づいてロボット100における動作実施部分を特定することができる。また、能動性判定部540は、後述する例のように、ロボット100の胴部102と、胴部102によって支持される腕部103,104とについて、腕部103,104の先端部である手部103H,104Hが胴部102に対して所定の位置関係を満たす場合に、手部103H,104Hを含む腕部103,104を動作実施部分として特定してもよい。本実施形態において、能動性判定部540が能動的であると判定しなかった接触イベントは、受動的な接触イベントとして扱われる。
【0030】
スコア加算部550は、ロボット100A,100Bのそれぞれについて、接触イベント検出部530による接触イベントの検出結果と、能動性判定部540による接触イベントの能動性の判定結果とに基づいて、格闘ゲームの勝敗を判定する。具体的には、例えば、スコア加算部550は、ロボット100Aについて検出された第1の接触イベントが能動的であり、ロボット100Bについて第1の接触イベントに同期して検出された第2の接触イベント能動的ではない場合に、ロボット100Aによるロボット100Bの打撃が成功したと判定し、ロボット100Aに対してスコアを加算する。このようなスコア加算部550の処理の具体的な例については後述する。
【0031】
(接触イベント検出の具体的な例)
図5は、本発明の一実施形態における接触イベントの検出のための具体的な機能構成の例を示す図である。図示された例において、トルク計測値取得部510は、頭部101と胴部102とを連結する関節部を駆動するモータの3方向のトルク計測値(Head_Roll,Head_Pitch,Head_Yaw)、胴部102内の2つの部分を連結する関節部を駆動するモータの3方向のトルク計測値(Trunk_Roll,Trunk_Pitch,Trunk_Yaw)、および胴部102と腕部103,104とを連結する肩の関節部を駆動するモータのそれぞれ2方向のトルク計測値(Left_Shoulder_Roll,Left_Shoulder_Pitch,Right_Shoulder_Roll,Right_Shoulder_Pitch)を取得する。一方、角度差分値取得部520は、胴部102内の2つの部分を連結する関節部を駆動するモータの角度差分値(Trunk_Yaw)および上記の肩の関節部を駆動するモータの角度差分値(Left_Shoulder_Roll,Left_Shoulder_Pitch,Right_Shoulder_Roll,Right_Shoulder_Pitch)を取得する。なお、
図5では、R:Roll、P:Pitch、Y:Yawとして略記されている場合がある。
【0032】
図示された例において、接触イベント検出部530は、それぞれ異なる仕方でトルク計測値を閾値範囲と比較することによって接触イベントを検出する接触イベント検出部530A~530Dと、接触イベントの検出結果を統合する接触イベント検出部530Eを含む。以下、各部についてさらに説明する。
【0033】
(トルク計測値を用いた検出)
接触イベント検出部530Aは、頭部101のトルク計測値(Head_Roll,Head_Pitch,Head_Yaw)および胴部102のトルク計測値(Trunk_Roll)について、それぞれが閾値範囲を超えるか否かを判定する。トルク計測値と閾値範囲との比較の例は、
図6Aおよび
図6Bに示されている。
図6Aに示されるように、ロボット100の各部を駆動するモータについて、通常動作時のトルク計測値は閾値範囲Rを超えない。上述したように、閾値範囲Rは、例えばロボット100の通常動作時におけるトルク計測値の実測値を収集することによって決定される。なお、図示された例では閾値範囲Rが0を中心として正負均等に設定されているが、閾値範囲Rは正負いずれかに偏った範囲であってもよい。
【0034】
一方、
図6Bに示されるように、接触イベントの発生時には、モータのトルク計測値が閾値範囲Rを超える。従って、接触イベント検出部530Aは、トルク計測値(Head_Roll,Head_Pitch,Head_Yaw,Trunk_Roll)がそれぞれについて設定された閾値範囲Rを超える場合に、頭部101または胴部102の少なくともいずれかにおける接触イベントを検出する。このとき、接触イベント検出部530A(他のイベント検出部も同様)は、
図7に示されるように、トルク計測値にローパスフィルタを適用し、トルク計測値の所定の周波数以下の成分が閾値範囲Rを超える場合に接触イベントを検出してもよい。トルク計測値にはノイズや測定誤差による高周波成分が含まれうるため、接触イベントによって発生するトルク計測値の変動周波数よりも高い周波数成分を除去することによって、誤検出を減少させて接触イベントの検出精度を高めることができる。
【0035】
(複数の関節部におけるトルク計測値の比率を組み合わせた検出)
再び
図5を参照して、接触イベント検出部530Bは、胴部102のトルク計測値(Trunk_Pitch)が閾値範囲を超える場合に、頭部101のトルク計測値(Head_Pitch)の胴部102のトルク計測値(Trunk_Pitch)に対する比率(Head_Pitch/Trunk_Pitch)が閾値を超えていれば頭部101で発生した接触イベントを検出し、比率が閾値を超えていなければ胴部102で発生した接触イベントを検出する。このような判定によって、以下で説明するように、頭部101または胴部102のどちらで接触イベントが発生したかを正しく識別することができる。
【0036】
図8に示されるように、ロボット100では下側の脚部105,106が床面に接触した拘束端であるのに対して、上側の頭部101は自由端である。つまり、ロボット100の筐体は、第1の部分である脚部105,106、および胴部102の下部と、第1の部分によって支持される第2の部分である胴部102の上部と、第2の部分によって支持され自由端を構成する第3の部分である頭部101とを含む。このような場合、自由端を構成する第3の部分で発生した接触イベントによって力Fが加えられた場合のトルク計測値の変動は、第3の部分と第2の部分との間の関節部よりも、第2の部分と第1の部分との間の関節部で顕著に観測される傾向がある。具体的には、頭部101で接触イベントが発生した場合、頭部101と胴部102とを連結する関節部のトルク計測値より(Head_Pitch)も、胴部102内の2つの部分を連結する関節部のトルク計測値(Trunk_Pitch)でより顕著なトルク計測値の変動が観測される傾向がある。従って、このような場合と胴部102自体で接触イベントが発生したことによって胴部102のトルク計測値(Trunk_Pitch)が変動した場合とを識別することは容易ではない。
【0037】
ここで、
図9Aおよび
図9Bには、胴部102で外部からの打撃による接触イベントが発生した場合、および頭部101で外部からの打撃による接触イベントが発生した場合のそれぞれについて、トルク計測値(Head_Pitch,Trunk_Pitch)およびこれらの比率(Head_Pitch/Trunk_Pitch)が示されている。図示されるように、
図9Aおよび
図9Bの両方の例で、胴部102のトルク計測値(Trunk_Pitch)は同じように大きく正方向に変動して閾値(閾値範囲Rの最大値)を超え、また頭部101のトルク計測値(Head_Pitch)も同じように変動が小さく閾値を超えない。これに対して、トルク計測値の比率(Head_Pitch/Trunk_Pitch)は、
図9Aの例ではほぼ0であるのに対して、
図9Bの例では0.25以上であり、それぞれのケースの間で差が生じている。これは、胴部102で接触イベントが発生した
図9Aの場合には頭部101のトルク計測値がほとんど変動しないのに対して、頭部101で接触イベントが発生した
図9Bの場合には、胴部102ほど大きくはないものの頭部101のトルク計測値も変化するためである。
【0038】
従って、例えば上記の
図9Aおよび
図9Bに示された例であれば、トルク計測値の比率(Head_Pitch/Trunk_Pitch)について0.25を閾値として設定することによって、比率が閾値を超える場合には頭部101で接触イベントが発生したと判定し、比率が閾値を超えない場合には胴部102で接触イベントが発生したと判定することができる。なお、上記の比率の閾値は一例であり、他の例では例えば頭部101で接触イベントが発生したときの比率の実測値と胴部102で接触イベントが発生したときの比率の実測値とを収集することによって適切な閾値を設定することができる。
【0039】
(角度差分値を組み合わせた検出)
再び
図5を参照して、接触イベント検出部530Cは、胴部102内の2つの部分を連結する関節部を駆動するモータのトルク計測値(Trunk_Yaw)が閾値範囲を超え、かつ当該モータの角度差分値が閾値範囲を超える場合に、胴部102で発生した接触イベントを検出する。以下で説明するように、トルク計測値がロボット100の姿勢によって比較的大きく変動するのに対して、角度差分値はロボット100の姿勢への依存が小さいため、角度差分値を用いることによって接触イベント検出の精度を向上させることができる。
【0040】
図10Aおよび
図10Bには、胴部102で実際には接触イベントが発生していない場合と接触イベントが発生した場合のそれぞれについて、トルク計測値および角度差分値が示されている。図示されているように、
図10Aおよび
図10Bの両方の例で、トルク計測値は閾値範囲を超えている。これに対して、角度差分値は、
図10Aの例では閾値を超えないのに対して、
図10Bの例では閾値を超える。従って、角度差分値が閾値を超えることを接触イベント検出の条件にすることによって、
図10Aのように接触イベントが発生していないにもかかわらずロボット100の姿勢の変化などによってトルク計測値が変動した場合の誤検出を防止することができる。
【0041】
(時間差分を用いた検出)
再び
図5を参照して、接触イベント検出部530Dは、肩関節を駆動するモータのトルク計測値(Left_Shoulder_Roll,Left_Shoulder_Pitch,Right_Shoulder_Roll,Right_Shoulder_Pitch)時間差分が閾値範囲を超え、かつ各モータの角度差分値が閾値範囲を超えた場合に、それぞれの腕部103,104で発生した接触イベントを検出する。具体的には、接触イベント検出部530Dは、単一時刻tのトルク検出値に代えて、時間差分、すなわち時刻tおよび時刻t-1のそれぞれのトルク検出値の差分を閾値範囲と比較する。例えば腕部103,104のような部分では、通常動作時のトルク検出値の変動量と接触イベントが発生したときのトルク検出値の変動量との差が小さいため、単純にトルク検出値を閾値範囲と比較した場合には検出精度が向上しにくい。これに対して、接触イベントが発生した場合におけるトルク検出値の時間あたり変動量は通常動作時におけるトルク検出値の時間あたり変動量よりも大きいため、時間差分を利用すること接触イベントを正しく検出することができる。なお、接触イベント検出部530Dは、トルク検出値の時間差分に加えて、上記の接触イベント検出部530Cの例と同様にモータの角度差分値を用いることによって、より正確なイベントの検出を可能にしているが、トルク検出値の時間差分を角度差分値と組み合わせることは必ずしも必要ではない。
【0042】
以上で説明したような
図5の例において、接触イベント検出部530Eは、接触イベント検出部530A~520Dによる接触イベントの検出結果を統合する。具体的には、例えば、接触イベント検出部530Eは、接触イベント検出部530A,530Bの両方が頭部101で発生した接触イベントを検出した場合に、頭部101で接触イベントが発生したと判定してもよい。また、接触イベント検出部530Eは、接触イベント検出部530A,530B,530Cのすべてが胴部102で発生した接触イベントを検出した場合に、胴部102で接触イベントが発生したと判定してもよい。接触イベント検出部530Eは、腕部103,104については接触イベント検出部530Dの判定結果をそのまま利用してもよい。接触イベント検出部530Eは、上記のようにそれぞれの検出結果の論理積(AND判定)によって接触イベントの発生を判定してもよいし、他の例ではそれぞれの検出結果の論理和(OR判定)によって接触イベントの発生を判定してもよい。
【0043】
(能動性の判定)
上述のように、能動性判定部540は、ロボット100における動作実施部分で接触イベントが検出された場合に、当該接触イベントが能動的であると判定してもよい。動作実施部分は、例えば情報処理装置110で決定された関節部の動作パターンに基づいて特定されてもよいし、接触イベントが検出される前後における関節部のトルク計測値の変動に基づいて特定されてもよい。例えば、能動性判定部540は、接触イベントの検出の前後において、トルク計測値が閾値範囲内ではあるものの他の関節部よりも相対的に大きく変動していた場合に、当該関節部によって連結される部分を動作実施部分として特定してもよい。また、能動性判定部540は、以下で説明するように、接触イベント検出時の筐体の部分同士の位置関係に基づいて動作実施部分を特定してもよい。
【0044】
図11Aおよび
図11Bは、本発明の一実施形態における接触イベントの能動性の判定の例について説明するための図である。この例において、能動性判定部540は、接触イベントが発生した時の腕部103,104の先端部である手部103H,104Hと胴部102との位置関係に基づいて動作実施部分を特定している。図示された例では、手部103H,104Hのいずれかの位置が、
図11Aに示されるように胴部102の前方、胴部102と腕部103,104とを連結する肩関節部を基準にした所定の高さ範囲(±d1)に含まれ、
図11Bに示されるように胴部102に対する前後方向の距離が閾値d2であり、かつ肩関節部からの直線距離が閾値r以上の場合に、条件を満たす手部103H,104Hを含む腕部103,104が動作実施部分として特定される。なお、
図11Aおよび
図11Bに示された寸法は、小型のロボット100が用いられる場合の例であり、寸法およびその比率はロボット100の大きさや形状に応じて任意に設定される。
【0045】
図12は、本実施形態において能動的な接触イベントを検出するための処理を概略的に示す図である。図示された例では、まず、腕部103,104の肩関節部および肘関節部を駆動するモータのトルク計測値(Left_Shoulder_Yaw,Left_Elbow_Pitch,Right_Shoulder_Yaw,Right_Elbow_Pitch)に基づいて接触イベントが検出される。ここで、接触イベントは、上記で
図5を参照して説明した例のように、単純にトルク計測値を閾値範囲と比較することによって検出されてもよいし、上記で
図5などを参照して説明した例のようにトルク計測値の所定の周波数以下の成分や時間差分を閾値範囲と比較することによって検出されてもよい。また、接触イベントは、複数のトルク計測値の比率や、角度差分値にさらに基づいて検出されてもよい。
【0046】
上記のそれぞれのトルク計測値のいずれか1つについて接触イベントが検出された場合(OR判定)、接触イベントの能動性が判定される。具体的には、例えば、それぞれの関節部における角度計測値から手部103H,104Hの位置を算出し、上記で
図12Aおよび
図12Bを参照して説明したような胴部102と手部103H,104Hとの位置関係が満たされるか否かを判定する。また、1つの接触イベントが複数回にわたって検出されるのを防ぐために、能動的な接触イベントが一度検出された後には所定の無効期間を設定し、無効期間が経過していない場合には次の能動的な接触イベントが検出されないようにする。接触イベントが検出され、手部103H,104Hの位置が条件を満たし、かつ無効期間が既に経過している場合、能動性判定部540は接触イベントが能動的であると判定する。
【0047】
図13は、本発明の一実施形態におけるスコア算出部の処理の例を示すフローチャートである。図示された例において、スコア加算部550は、ロボット100A,100Bのそれぞれで発生した接触イベントの検出結果を取得し(ステップS101)、また接触イベントのそれぞれについて能動性の判定結果を取得する(ステップS102)。ロボット100A,100Bで同期して接触イベントが検出され(ステップS103のYES)、同期して検出された接触イベントのいずれか一方が能動的であり(ステップS104のYES)、かつ他方の接触イベントが能動的ではない場合(ステップS105のYES)、スコア加算部550はロボット100A,100Bのうち能動的な接触イベントが検出された側に対してスコアを加算する(ステップS106)。
【0048】
上記以外の場合、すなわち、ロボット100A,100Bで同期して接触イベントが検出されなかった場合(ステップS103のNO)、同期して検出された接触イベントが両方とも能動的ではない場合(ステップS104のNO)、および同期して検出された接触イベントが両方とも能動的である場合(ステップS105のNO)、スコア加算部550はロボット100A,100Bのどちらにもスコアを加算しない。
【0049】
なお、上記の例において、互いに同期して検出された接触イベントは、必ずしも同一の時刻に検出された接触イベントではなくてもよく、例えば一方の接触イベントの検出結果が取得された時刻と所定時間以内の時間差の時刻に取得された接触イベントを含んでもよい。許容される時間差は、例えば処理遅延や通信遅延を考慮して決定される。スコア加算部550は、上記のようにしてロボット100A,100Bのそれぞれについてスコアを加算し、所定の試合時間内のスコアに基づいて格闘ゲームの勝敗を決定する。あるいは、スコア加算部550は、上記の処理において能動的な接触イベントが検出されなかった側についてスコアを減算してもよいし、ロボット100A,100Bのいずれかのスコアが上限または下限の閾値に達した時点でゲームを終了してもよい。
【0050】
以上で説明した本発明の一実施形態では、ロボット100A,100Bの筐体の部分の運動状態の変化を示す計測値に基づいて、筐体の部分で発生した接触イベントを検出する。また、検出された接触イベントについて、動作実施部分との関係によって能動性を判定する。さらに、ロボット100A,100Bのそれぞれで検出された接触イベントの同期性、およびそれぞれの接触イベントの能動性に応じてロボット100A,100Bにスコアを加算し、それによって格闘ゲームの勝敗を決定する。なお、上記の例では筐体の部分の運動状態の変化を示す計測値として筐体の関節部を駆動するモータで計測されたトルク計測値を用いたが、例えば加速度センサなどを用いて取得される他の計測値を用いることも可能である。また、接触イベントは必ずしもロボットの筐体で検出されなくてもよく、能動的に動作することが可能な他の装置で接触イベントが検出されてもよい。
【0051】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はこれらの例に限定されない。本発明の属する技術の分野の当業者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0052】
10…システム、100,100A,100B…ロボット、101,101A,101B…頭部、102,102A,102B…胴部、103,103A,103B,104,104A,104B…腕部、103H,104H…手部、105,105A,105B,106,106A,106B…脚部、105F,106F…足部、110…情報処理装置、111…CPU、113…ROM、114…外部メモリ、115…バスインターフェース、121…通信インターフェース、130…モータ、200A,200B…コントローラ、300…判定装置、310…情報処理装置、311…CPU、312…RAM、313…ROM、314…外部メモリ、315…バスインターフェース、321…通信インターフェース、322…ディスプレイ、510…トルク計測値取得部、520…角度差分値取得部、530,530A,530B,530C,530D,530E…接触イベント検出部、540…能動性判定部、550…スコア加算部、551…接触イベント検出結果取得部、552…能動性判定結果取得部。