(57)【要約】【課題】エンターテインメントロボットの同調動作を効果的に実現する仕組みを提供する。【解決手段】姿勢推定部１０８は、人の画像が記録された画像データを取得して、人の姿勢を推定する。運動制御部１１０は、姿勢推定部１０８の推定結果にもとづいて、ロボット装置の運動を制御する。同調制御部１２２は、姿勢推定部１０８により推定された人の姿勢に、ロボット装置の姿勢を同調させる。補正処理部１２４は、同調制御部１２２によるロボット装置の同調運動を補正する。【選択図】図４
2020203341.tif 000002
【特許請求の範囲】
【請求項１】
人の画像が記録された画像データを取得して、前記人の姿勢を推定する姿勢推定部と、
前記姿勢推定部の推定結果にもとづいて、ロボット装置の運動を制御する運動制御部と、を備え、
前記運動制御部は、
前記姿勢推定部により推定された前記人の姿勢に前記ロボット装置の姿勢を同調させる同調制御部と、
前記同調制御部による前記ロボット装置の同調運動を補正する補正処理部とを有する、
ロボット制御システム。
【請求項２】
動作モードを設定するモード設定部をさらに備え、
前記補正処理部は、設定された動作モードに応じて、前記ロボット装置の同調運動を補正する、
請求項１に記載のロボット制御システム。
【請求項３】
前記モード設定部は、前記ロボット装置が装着する物体に応じた動作モードを設定する、
請求項２に記載のロボット制御システム。
【請求項４】
前記同調制御部は、人体の姿勢情報を用いてロボット装置の複数の関節のそれぞれの目標角度を演算する演算式にもとづいて、前記姿勢推定部により推定された前記人の姿勢情報を用いて前記ロボット装置の複数の関節の目標角度を決定して、前記ロボット装置を同調運動させるものであって、
前記補正処理部は、同調制御における演算式の少なくとも一部を変更して、同調運動を補正する、
請求項１から３のいずれかに記載のロボット制御システム。
【請求項５】
前記補正処理部は、前記ロボット装置の関節の角度に制限を設定する、
請求項１から４のいずれかに記載のロボット制御システム。
【請求項６】
前記補正処理部は、前記ロボット装置の姿勢の変化が所定のパターンを示す場合に、その後の前記ロボット装置を、当該パターンに対応付けられた運動パターンで運動させる、
請求項１から５のいずれかに記載のロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット装置の運動を制御する技術に関する。
【背景技術】
【０００２】
様々なタイプのロボットの研究、開発が行われている。特許文献１は、カメラ画像入力器を介して入力されたユーザの画像に応じて、ユーザの動作と同調した動作を生成するモジュールを備えたロボット装置を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３４２８７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
４足歩行する動物の身体メカニズムや動作を模した「ペット型」ロボットや、２足直立歩行する人間の身体メカニズムや動作を模した「人間型」ロボットが実用化されている。エンターテインメント性を重視した動作を行うロボット装置は「エンターテインメントロボット」と称され、市販されている。
【０００５】
エンターテインメントロボットは、その性質上、ユーザを楽しませるアクションを提供する。そのようなアクションの一つとして、特許文献１では、ユーザの動作を真似する同調動作を実現するモジュールをロボット装置に持たせている。本発明者は、ユーザの動作に同調する機能をもつエンターテインメントロボットの可能性に注目し、同調動作を効果的に実現するための仕組みを考案した。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様は、ロボット制御システムであって、人の画像が記録された画像データを取得して、人の姿勢を推定する姿勢推定部と、姿勢推定部の推定結果にもとづいて、ロボット装置の運動を制御する運動制御部とを備える。運動制御部は、姿勢推定部により推定された人の姿勢にロボット装置の姿勢を同調させる同調制御部と、同調制御部によるロボット装置の同調運動を補正する補正処理部とを有する。
【０００７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【図面の簡単な説明】
【０００８】
【図１】実施例の情報処理システムの概略構成を示す図である。
【図２】ロボット装置の外観を示す図である。
【図３】ロボット装置が備える関節構造を模式的に示す図である。
【図４】ロボット制御システムのハードウェア構成を示す図である。
【図５】姿勢推定部により検出される特徴点を示す図である。
【図６】姿勢推定部により検出される特徴点を示す図である。
【図７】ロボット装置が同調動作をする様子を示す図である。
【図８】関節角度を表現する躍度最小モデル軌道の例を示す図である。
【図９】複数のロボット装置が対戦するロボットシステムを示す図である。
【図１０】肩関節のピッチ角に下限を設定した状態を示す図である。
【図１１】特徴点の補正処理の例を示す図である。
【発明を実施するための形態】
【０００９】
図１は、実施例の情報処理システム１の概略構成を示す。情報処理システム１は、ロボット装置２０およびサーバ装置１０を備える。ロボット装置２０は自律運動可能な移動体であって、アクセスポイント（ＡＰ）３を介して、インターネットなどのネットワーク２経由でサーバ装置１０と通信可能に接続する。
【００１０】
ロボット装置２０は、上半身と、腰部および複数の可動脚をもつ下半身とを有するロボットであり、オーナであるユーザにより所有される。実施例でロボット装置２０は２本の可動脚をもち、ユーザの動きをカメラで撮影して、ユーザの動きを真似する同調機能をもつ。ロボット装置２０はユーザを、画像解析による顔認証や音声解析による声紋認証などによって認識できることが好ましい。ロボット装置２０がユーザを認識することで、たとえばユーザからの指示を受け付け、またユーザの動きのみを真似するように動作できる。
【００１１】
ロボット装置２０は、転倒を防止する機能、歩く機能などを含む基本機能を、複数の関節を構成する関節モータの制御手法を記述した基本アプリケーションプログラム（以下、「基本アプリケーション」とも呼ぶ）により実現する。ロボット装置２０が運動する上で最も重要なことは転倒しないことであり、基本アプリケーションは、Cart-Tableモデルや倒立振子モデルを利用して姿勢を安定化する安定化制御アプリケーションを含む。基本アプリケーションはロボット装置２０の基本機能を担当することから、ロボット装置２０にプリインストールされていることが好ましく、たとえばミドルウェアに組み込まれていてよい。
【００１２】
基本アプリケーション以外のアプリケーションプログラムは、応用アプリケーションプログラム（以下、「応用アプリケーション」とも呼ぶ）であり、応用アプリケーションはたとえばダンス機能などの付加的な機能を実現する。応用アプリケーションは、サーバ装置１０から必要に応じて供給されて、ロボット装置２０にインストールされる。ロボット装置２０は、新しい応用アプリケーションをダウンロードしてインストールすることで、新しい機能を獲得する。実施例のロボット装置２０は、応用アプリケーションの一つとして、ユーザの動きに同調して運動する同調アプリケーションをインストールしている。同調アプリケーションが実行されると、ロボット装置２０はユーザの動きを真似するように同調運動する。実施例において同調運動は、ロボット装置２０が、推定したユーザの姿勢と同じまたは似た姿勢をとる運動を意味する。
【００１３】
図２は、ロボット装置２０の外観を示す。ロボット装置２０は人間と同じような部位および関節を持ち、人間の姿勢と同じまたは似た姿勢をとることのできる構造を有することが好ましい。ロボット装置２０は上半身および下半身を有して構成される。下半身は、腰部３０、および腰部３０より下の部位である右大腿３１ａ、左大腿３１ｂ、右下腿３２ａ、左下腿３２ｂ、右足３３ａ、左足３３ｂを含む。上半身は、腰部３０より上の部位で構成され、頭部２１、首２２、胴体２３、右肩２４ａ、左肩２４ｂ、右上腕２５ａ、左上腕２５ｂ、右前腕２６ａ、左前腕２６ｂ、右手２７ａ、左手２７ｂを含む。隣り合う部位間には関節部分を構成する関節モータが配置され、関節モータ間はリンク機構で連結される。
【００１４】
図３は、ロボット装置２０が備える関節構造を模式的に示す。ロボット装置２０がユーザと同じまたは似た姿勢をとるためには、ロボット装置２０の関節構造が、人間の関節構造と同じまたは近似していることが好ましい。胴体２３に対して頭部２１を支持する首関節は、首関節ヨー軸用モータ４１、首関節ピッチ軸用モータ４２、首関節ロール軸用モータ４３を備える。
【００１５】
胴体２３と右手２７ａの間には、右肩関節を構成する肩関節ピッチ軸用モータ５１ａ、肩関節ロール軸用モータ５２ａ、肩関節ヨー軸用モータ５３ａ、右肘関節を構成する肘関節ピッチ軸用モータ５４ａ、右手首関節を構成する手首関節ピッチ軸用モータ５５ａが設けられる。胴体２３と左手２７ｂの間には、左肩関節を構成する肩関節ピッチ軸用モータ５１ｂ、肩関節ロール軸用モータ５２ｂ、肩関節ヨー軸用モータ５３ｂ、左肘関節を構成する肘関節ピッチ軸用モータ５４ｂ、左手首関節を構成する手首関節ピッチ軸用モータ５５ｂが設けられる。なお人間の関節構造に近づけるために、手首関節には、さらにロール軸用モータが設けられてよい。
【００１６】
胴体２３と腰部３０の間には、体幹関節を構成する体幹ロール軸用モータ６１、体幹ピッチ軸用モータ６２、体幹ヨー軸用モータ６３が設けられる。図３において、体幹ヨー軸用モータ６３は、下半身である腰部３０に配置されているが、実施例の姿勢制御において、体幹ヨー軸用モータ６３は、上半身の姿勢を制御するための関節モータとして取り扱われる。
【００１７】
腰部３０から右足３３ａ、左足３３ｂまでの間のモータは、下半身の姿勢を制御するための関節モータである。腰部３０と右足３３ａの間には、右股関節を構成する股関節ヨー軸用モータ７１ａ、股関節ロール軸用モータ７２ａ、股関節ピッチ軸用モータ７３ａ、右膝関節を構成する膝関節ピッチ軸用モータ７４ａ、右足首関節を構成する足首関節ピッチ軸用モータ７５ａ、足首関節ロール軸用モータ７６ａが設けられる。腰部３０と左足３３ｂの間には、左股関節を構成する股関節ヨー軸用モータ７１ｂ、股関節ロール軸用モータ７２ｂ、股関節ピッチ軸用モータ７３ｂ、左膝関節を構成する膝関節ピッチ軸用モータ７４ｂ、左足首関節を構成する足首関節ピッチ軸用モータ７５ｂ、足首関節ロール軸用モータ７６ｂが設けられる。
【００１８】
図４は、ロボット装置２０を制御するロボット制御システム１００のハードウェア構成を示す。ロボット制御システム１００はロボット装置２０の筐体内に設けられ、モーションセンサ１０２、通信部１０４、撮像部１０６、第１プロセッサ９０および第２プロセッサ９２を備える。第１プロセッサ９０は、姿勢推定機能を実現する姿勢推定部１０８を有する。第２プロセッサ９２は、ロボット装置２０の運動制御機能を実現する運動制御部１１０を有する。運動制御部１１０は、第１運動制御部１２０、第２運動制御部１４０およびモード設定部１４２を備え、第１運動制御部１２０は、同調制御部１２２、補正処理部１２４、パターン判定部１２６および姿勢履歴記憶部１２８を有する。
【００１９】
ロボット制御システム１００の構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラム、ストレージなどによって実現される。第１プロセッサ９０および第２プロセッサ９２は図示する機能ブロックを有し、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００２０】
通信部１０４は無線ＬＡＮでＡＰ３に接続し、ＡＰ３を介してサーバ装置１０と通信する。通信部１０４は、サーバ装置１０から応用アプリケーションやパッチファイルをダウンロードできる。通信部１０４はアドホック通信機能を有し、複数のロボット装置２０が存在する空間では、ロボット装置２０同士がアドホック通信により接続できる。
【００２１】
モーションセンサ１０２は、３軸加速度センサおよび３軸ジャイロセンサを有する。モーションセンサ１０２は腰部３０に設けられて、３次元空間における位置および姿勢を示すセンサデータおよび／または位置および姿勢の変化を示すセンサデータを運動制御部１１０に提供する。さらにモーションセンサ１０２は各関節部分に設けられて、センサデータを運動制御部１１０に提供してよい。
【００２２】
撮像部１０６は、ＲＧＢカラーセンサであって、所定の周期（たとえば１／６０秒）で撮影したＲＧＢ画像データを姿勢推定部１０８に供給する。実施例のＲＧＢ画像データは、深度情報をもたない２次元画像データである。なお撮像部１０６は他の種類のイメージセンサであってもよい。撮像部１０６は頭部２１に設けられて、ロボット装置２０の顔が向いている方向を撮影する。なお顔が向いている方向のみならず、顔の横方向、後ろ方向を撮影するために、複数の撮像部１０６が頭部２１に設けられてもよい。ロボット装置２０において同調アプリケーションが実行されると、ロボット装置２０は、撮像部１０６により撮影されたユーザの動きを真似する同調運動を行う。
【００２３】
同調アプリケーションの一つの動作モードでは、ロボット装置２０がユーザと向かい合い、撮像部１０６で撮影したユーザの動作を、ユーザと向き合った状態で真似する。このときロボット装置２０は、ユーザの動作を左右対称にコピーし、たとえばユーザが右手を上げると、ロボット装置２０は左手を上げ、ユーザが右手を左右に振ると、ロボット装置２０は左手を右左に振る。ユーザからロボット装置２０を見ると、ロボット装置２０が鏡に映るユーザのように運動することから、この動作モードを「ミラーリングモード」と呼ぶ。
【００２４】
同調アプリケーションの別の動作モードでは、ロボット装置２０が、ユーザの動作と基本的には同じように運動する。この動作モードでは、ユーザが右手を上げると、ロボット装置２０は右手を上げ、ユーザが右手を左右に振ると、ロボット装置２０は右手を左右に振る。この動作モードは、２人のユーザが、それぞれのロボット装置２０を操作して、ロボット装置２０同士を対戦させるようなシーンで利用される。たとえば２台のロボット装置２０がボクシングをする場合、ユーザが右ストレートを出すと、ロボット装置２０は対戦相手のロボット装置２０に対して右ストレートを出し、ユーザが左フックを出すと、ロボット装置２０は対戦相手のロボット装置２０に対して左フックを出す。またロボット装置２０の右手２７ａに物体（刀などの武器）を持たせた状態で、ユーザが体を中心として水平面で右腕を反時計回りに回すと、ロボット装置２０が体を中心として水平面で物体を反時計回りに回して、対戦相手のロボット装置２０に物体の先端をぶつけるように運動する。このような動作モードを「バトルモード」と呼ぶ。
【００２５】
このように同調アプリケーションでは、複数の動作モードが用意されている。ユーザは利用シーンに応じて動作モードを選択した後、ロボット装置２０に同調運動をさせる。動作モードを選択するための手段は何でもよい。たとえばロボット装置２０に動作モードを選択するためのボタンが設けられていてもよいし、音声認識機能を有するロボット装置２０がユーザによる動作モードの発話を音声認識して、発話された動作モードを特定してもよい。また他のアプリケーション、たとえばゲームなどによって、動作モードが自動的に選択されてもよい。モード設定部１４２が、選択された動作モードを受け付けると、第１運動制御部１２０および第２運動制御部１４０が、選択された動作モードでロボット装置２０の運動を制御する。
【００２６】
同調アプリケーションを実施する前提として、ロボット装置２０は、ユーザの姿勢を認識する必要がある。そのため姿勢推定部１０８は、ユーザの画像が記録されたＲＧＢ画像データを取得して、ユーザの姿勢を推定する。なお姿勢推定部１０８は、ＲＧＢ画像データに限らず、ユーザの画像が記録された別の種類の画像データから、ユーザの姿勢を推定してもよい。姿勢推定部１０８は、機械学習されたモデルを用いて人の姿勢を推定するニューラルネットワークを有してよい。
【００２７】
近年、人の姿勢を推定するためのライブラリがオープンソースで公開されている。このライブラリは、ディープラーニングを実施したニューラルネットワークを用いて２次元画像から人の関節位置などの特徴点を検出し、特徴点を繋ぎ合わせることで人の姿勢を推定する。ある姿勢推定モデルでは、一人につき２５個の特徴点の位置が推定される。２５個の特徴点は、鼻、首、右肩、右肘、右手首、左肩、左肘、左手首、中央腰、右腰、右膝、右足、左腰、左膝、左足、右目、左目、右耳、左耳、左足親指、左足小指、左かかと、右足親指、右足小指、右かかとである。実施例の姿勢推定部１０８は、このような姿勢推定モデルを利用して、撮影された人の姿勢を推定する。
【００２８】
実施例の姿勢推定部１０８は、人の画像が記録された２次元画像データから２５個の特徴点の位置を推定し、これらの特徴点を用いて人の姿勢を推定する。具体的に姿勢推定部１０８は、３次元空間における人の胴体、脚、腕、手などの各部位の位置や向きを推定し、推定した人の姿勢を表現する姿勢情報を運動制御部１１０に供給する。
【００２９】
姿勢推定部１０８は、人の姿勢を表現する姿勢情報として、人の関節の角度情報および体の向きを示す情報を運動制御部１１０に供給するが、３次元空間における特徴点の相対的な位置情報（３次元座標）を姿勢情報として供給してもよい。また姿勢推定部１０８は、最初に２次元画像における２５個の特徴点の位置情報を推定するが、これらの特徴点の位置情報（２次元座標）も人の姿勢を表現する姿勢情報であり、これらの特徴点の位置情報を姿勢情報として運動制御部１１０に供給してもよい。この場合、運動制御部１１０は、複数の特徴点の２次元座標から、３次元空間における人の姿勢を推定する機能をもつ必要がある。
【００３０】
図５（ａ）は、姿勢推定部１０８により検出される特徴点の例を示す。姿勢推定部１０８は、２５個の特徴点の位置を推定し、撮影されたユーザの姿勢を推定する。実施例で撮像部１０６は、ロボット装置２０のオーナであるユーザを撮影する。同調運動の開始前、ユーザは図５（ａ）に示す基準姿勢で撮影され、姿勢推定部１０８は、基準姿勢をとるユーザに関して検出した特徴点から、体の各パーツの長さを算出して保持する。各パーツは２つの特徴点を連結した直線で表現され、この直線を「ボーン」と呼ぶ。基準姿勢は、ユーザが撮像部１０６に対して正対した直立姿勢であり、各パーツを表現するボーンの長さは、基本的には正対姿勢で最大となる。姿勢推定部１０８は、基準姿勢で検出した各ボーンの長さを「最大ボーン長」として保持する。なおユーザが撮像部１０６に近付くと、検出されるボーン長は、最大ボーン長を超え、その場合は、検出されるボーン長を最大ボーン長として更新する処理を行う。このときボーン長の相対比を事前に定めておき、その相対比にしたがって最大ボーン長を更新してもよい。以下の説明では、便宜上、ユーザと撮像部１０６の間の距離が変化せず、最大ボーン長が固定であることを前提とする。
【００３１】
図５（ｂ）は、姿勢推定部１０８により検出される特徴点の別の例を示す。図５（ｂ）に示す撮影画像では、基準姿勢から、ユーザが右手を上に振り上げる状態が撮影されている。図５（ａ）と比較して、右肘、右手の検出位置が大きく変化し、したがって右手上腕のボーン長と、右手前腕のボーン長が、基準姿勢と比較して短くなっている。姿勢推定部１０８は、ボーン長にもとづいて人の関節の角度を推定する。
【００３２】
姿勢推定部１０８は、以下の式より、深度を算出する。
【数１】
2020203341.tif 000003
人体の構造上、撮像部１０６から見たときの２つの関節の前後関係は、以下の基準により決定してよい。
・肘関節は肩関節よりも前
・手首関節は肘関節よりも前
・膝関節は股関節よりも前
・膝関節は足首関節よりも前
・膝関節はかかとよりも前
ここで「前」は、撮像部１０６により近い位置であることを意味する。
【００３３】
姿勢推定部１０８は、この前後関係の基準および算出した深度を用いて、３次元空間における特徴点の位置を推定し、３次元空間における特徴点を連結したベクトル（ボーンベクトル）を推定する。姿勢推定部１０８は、３次元空間のボーンベクトルを２次元平面に射影することで、ユーザの各関節の角度、つまりユーザの各関節のピッチ角度、ロール角度、ヨー角度をそれぞれ推定する。
【００３４】
このとき姿勢推定部１０８は、ロボット装置２０の関節構造に対応するユーザの関節角度を推定することが好ましい。たとえばロボット装置２０の肩関節は、ピッチ軸、ロール軸、ヨー軸のそれぞれに関節モータを有するため、姿勢推定部１０８は、人の肩関節のピッチ角度、ロール角度、ヨー角度をそれぞれ推定する。またロボット装置２０の肘関節はピッチ軸に関節モータを有するため、姿勢推定部１０８は、人の肘関節のピッチ角度を推定する。いずれにしても姿勢推定部１０８は、運動制御部１１０による同調制御で使用する姿勢情報を生成することが好ましい。
【００３５】
なお人の胴体が撮像部１０６に対して右側を向いているか、または左側を向いているかは、以下のように導出する。
図６は、ユーザを撮影した画像から検出される特徴点を示す。なお、いくつかの特徴点については図示を省略している。図６（ａ）は、ユーザが撮像部１０６に対して右側を向いた状態を、図６（ｂ）は、ユーザが撮像部１０６に対して左側を向いた状態を示している。
【００３６】
姿勢推定部１０８は、ユーザの顔の特徴点Ａと、顔より下方に位置する特徴点Ｂと、特徴点Ｂより下方に位置する特徴点Ｃにもとづいて、胴体の向きを推定する。ここで特徴点Ａ、Ｂ、Ｃは、基準姿勢（撮像部１０６に対して正対した直立姿勢）で、上から下に向けて直線的に並ぶ特徴点であり、ここでは特徴点Ａが鼻、特徴点Ｂが首、特徴点Ｃが中央腰である。姿勢推定部１０８は、特徴点Ａ、Ｂ、Ｃを繋いだ線から、胴体が右側を向いているか、左側を向いているかを判断する。
【００３７】
具体的に姿勢推定部１０８は、特徴点Ｂと特徴点Ａを連結する２次元のボーンベクトルと、特徴点Ｂと特徴点Ｃを連結する２次元のボーンベクトルの外積にもとづいて、人の胴体の向きを推定してよい。２つのボーンベクトルの外積が正である場合、胴体の向きは撮像部１０６に対して右向きであり、外積が負である場合、胴体の向きは撮像部１０６に対して左向きと判定される。
【００３８】
実施例の姿勢推定部１０８は、人の姿勢を表現する姿勢情報として、少なくとも人の関節の角度情報を運動制御部１１０に供給する。姿勢推定部１０８は、姿勢情報として、胴体の向きを示す情報および特徴点の３次元座標を運動制御部１１０に供給してもよい。また姿勢推定部１０８は、姿勢情報として、特徴点の２次元座標を姿勢情報として運動制御部１１０に供給してもよい。
【００３９】
運動制御部１１０は、姿勢推定部１０８の推定結果にもとづいて、ロボット装置２０の運動を制御する。運動制御部１１０は、各関節モータの回転速度を導出し、各関節モータに対応するマイコンに回転指示を供給する。
【００４０】
第１運動制御部１２０における同調制御部１２２は、推定したユーザの上半身の姿勢にロボット装置２０の上半身の姿勢を同調させる。ユーザの上半身は、腰より上の部位である。図３に示す関節構造において、ロボット装置２０の上半身の関節を構成するモータは、首関節ヨー軸用モータ４１、首関節ピッチ軸用モータ４２、首関節ロール軸用モータ４３、肩関節ピッチ軸用モータ５１ａ、肩関節ロール軸用モータ５２ａ、肩関節ヨー軸用モータ５３ａ、肘関節ピッチ軸用モータ５４ａ、手首関節ピッチ軸用モータ５５ａ、肩関節ピッチ軸用モータ５１ｂ、肩関節ロール軸用モータ５２ｂ、肩関節ヨー軸用モータ５３ｂ、肘関節ピッチ軸用モータ５４ｂ、手首関節ピッチ軸用モータ５５ｂ、体幹ロール軸用モータ６１、体幹ピッチ軸用モータ６２、体幹ヨー軸用モータ６３である。
【００４１】
第１運動制御部１２０の機能は、同調アプリケーションを実行することで実現される。同調制御部１２２は、推定したユーザの上半身の姿勢にもとづいて、ロボット装置２０の上半身の関節モータを制御して、ロボット装置２０の上半身の姿勢をユーザの上半身の姿勢に同調させる。同調した姿勢は、ユーザがロボット装置２０の姿勢を見て、自分の動きを真似していることが分かる程度に似た姿勢であればよい。
【００４２】
ロボット装置２０の姿勢をユーザの姿勢に同調させるために、同調制御部１２２は、人体の姿勢情報を用いてロボット装置２０の複数の関節のそれぞれの目標角度を演算する演算式を定義した演算規則を保持する。同調制御部１２２は、演算規則に定義された演算式にもとづいて、姿勢推定部１０８により推定された人の姿勢情報を用いてロボット装置２０の複数の関節のそれぞれの目標角度を決定し、目標角度にしたがって関節モータを駆動する。これによりロボット装置２０の姿勢がユーザの姿勢に同調する。
【００４３】
演算式は、人の姿勢情報を入力されると、ロボット装置２０の関節の目標角度を出力するように構成される。最も単純な例で説明すると、人の右肘の関節角度情報を演算式に入力すると、演算式は、ロボット装置２０の右肘の関節の目標角度を出力する。目標角度が、推定した人の関節角度と等しく、または近似した値となることで、ロボット装置２０の同調運動が実現される。
【００４４】
一方、第２運動制御部１４０は、ロボット装置２０の下半身を安定化制御し、上記演算式にもとづいた同調制御を実施しない。つまり第２運動制御部１４０は、ロボット装置２０の下半身の姿勢を、ユーザの下半身の姿勢に同調させない。図３に示す関節構造において、下半身の関節を構成するモータは、股関節ヨー軸用モータ７１ａ、股関節ロール軸用モータ７２ａ、股関節ピッチ軸用モータ７３ａ、膝関節ピッチ軸用モータ７４ａ、足首関節ピッチ軸用モータ７５ａ、足首関節ロール軸用モータ７６ａ、股関節ヨー軸用モータ７１ｂ、股関節ロール軸用モータ７２ｂ、股関節ピッチ軸用モータ７３ｂ、膝関節ピッチ軸用モータ７４ｂ、足首関節ピッチ軸用モータ７５ｂ、足首関節ロール軸用モータ７６ｂである。第２運動制御部１４０の機能は、安定化制御アプリケーションを実行することで実現され、モーションセンサ１０２のセンサデータを常時監視して、ロボット装置２０が転倒しないように姿勢を安定化させる。なお第２運動制御部１４０の機能は、同調アプリケーションに組み込まれていてもよい。第２運動制御部１４０は、姿勢安定化制御において、上半身の運動による負荷を外乱要素として処理することになる。
【００４５】
この安定化制御で第２運動制御部１４０は、姿勢推定部１０８により推定された人の腰の位置情報から、３次元空間におけるロボット装置２０の腰部３０の目標高さを決定する。また第２運動制御部１４０は、人の両足の位置情報から、ロボット装置２０の右足３３ａと左足３３ｂの目標位置を決定してもよい。人の両足の位置情報は、たとえば右かかと、左かかとの位置情報を利用する。第２運動制御部１４０は、基準姿勢における人の腰の位置情報と、現在の腰の位置情報の差分から、ロボット装置２０の腰部３０の目標高さを決定してよい。なお第２運動制御部１４０は、基準姿勢と現在の姿勢とで、両足の位置を結ぶ直線に対して中央腰から垂線を下ろした長さを算出し、その長さの比から、ロボット装置２０の腰部３０の目標高さを決定してもよい。
【００４６】
上記したように第２運動制御部１４０は、ロボット装置２０の下半身の姿勢を、ユーザの下半身の姿勢に同調させるものではないが、右足３３ａ、左足３３ｂの位置と、腰部３０の高さに関してはユーザの姿勢に合わせることで、ユーザの下半身に近似した姿勢を作り出せる。第２運動制御部１４０は、右足３３ａ、左足３３ｂの目標位置と、腰部３０の目標高さを決定した後、インバースキネマティクス演算を行って下半身に含まれる複数の関節モータを制御してよい。
【００４７】
図７は、ロボット装置２０がミラーリングモードで同調動作をする様子を示す。図７に示す例では、ユーザが膝を曲げた状態で右手を上げている。このユーザの姿勢に対してロボット装置２０の上半身は、同調制御部１２２によってユーザの上半身の姿勢に同調し、ロボット装置２０の下半身は、ユーザの下半身の姿勢に同調することなく、第２運動制御部１４０によって転倒しないように姿勢制御される。ロボット装置２０の腰部３０の高さは、ユーザの腰の高さに応じた高さに設定されている。
【００４８】
なお本発明者が、姿勢推定部１０８の検出値を使用してロボット装置２０の動作実験を行ったところ、実際の撮影環境では被写体である人が動かなくても、姿勢推定部１０８の検出値に揺れが発生することが分かった。そのため姿勢推定部１０８の検出値をそのまま利用して運動制御部１１０が関節モータを回転制御すると、検出値の揺れ頻度が大きいほど、各関節が忙しなく動き続けるようになる。そこで同調制御部１２２は、躍度最小（Minimum Jerk）モデルを用いて、各関節のモータの回転速度を決定する。
【００４９】
図８は、関節角度を表現する躍度最小モデル軌道の例を示す。躍度最小モデルは、加速度の変化率が小さくなる軌道を求める手法であり、姿勢推定部１０８の検出値に基づいた関節角度軌道と比べると、目標角度に対して軌道を滑らかにできることが分かる。同調制御部１２２が、躍度最小モデルを用いてモータの回転速度を決定することで、姿勢推定部１０８の検出値に揺れが生じても関節の回転を緩やかにできる。
【００５０】
なお姿勢推定部１０８においては、特徴点位置の検出誤差、深度の算出誤差、関節角度の推定誤差など、姿勢に関する様々な誤差が発生する。ロボット装置２０の上半身では、体幹関節を起点として、肩関節、肘関節、手首関節と角度変化が伝達されるため、姿勢推定部１０８において発生する姿勢推定誤差は、体幹関節から手首関節の間で次第に累積される。そのため全ての関節を同じように動かすと、先端となる右手２７ａ、左手２７ｂは、姿勢推定誤差が最大に累積されて、暴れるような挙動をとることがある。このような挙動を回避するために、同調制御部１２２は、少なくとも１つの関節の目標角度を決定し、決定した目標角度への目標到達時間をもとに、関節を構成するモータの回転速度を決定する制御を行う。
【００５１】
姿勢推定部１０８は、人の各関節の角度情報を、所定の周期Ｔ１（たとえば２０ｍ秒）で推定し、運動制御部１１０に供給する。したがって同調制御部１２２は、同じ周期Ｔ１で、供給された推定角度情報から、ロボット装置２０の上半身の各関節の目標角度を決定する。つまり同調制御部１２２は、周期Ｔ１（２０ｍ秒）ごとに、各関節の新たな目標角度を決定する。この目標角度は姿勢推定誤差を含んでいるため、周期Ｔ１ごとに決定される目標角度は、姿勢推定誤差に揺れが生じている場合には、離散的な値となることもある。
【００５２】
このとき同調制御部１２２が、周期Ｔ１で各関節が目標角度となるように関節モータの回転速度を決定すると、上半身先端に近付くにつれて関節が発振する（暴れる）ような挙動となる。そこで同調制御部１２２は、決定した目標角度への目標到達時間Ｔ２を、目標角度の決定周期Ｔ１より長く設定して、関節の急峻な回転を回避し、関節の回転を緩やかにさせる。
【００５３】
たとえば、現在角度と目標角度との差がαであったとする。同調制御部１２２は、時間Ｔ２後に関節がα度回転するためのモータの回転速度を決定し、その回転速度で時間Ｔ１だけ回転させる。時間Ｔ１の間に回転する角度は（α×Ｔ１／Ｔ２）であり、そのためＴ２＝１０×Ｔ１とした場合、時間Ｔ１後の回転量は、α／１０となる。時間Ｔ１後、同調制御部１２２は、姿勢推定部１０８から供給される推定角度情報にもとづいて、新たな目標角度を決定し、その時点から時間Ｔ２後に関節が目標角度となるためのモータの回転速度を決定する。
【００５４】
目標角度への目標到達時間Ｔ２を、目標角度の決定周期Ｔ１よりも長くすることで、同調運動に遅延は発生するものの、ロボット装置２０がユーザの動きに滑らかに追従できるようになる。なお目標到達時間Ｔ２を決定周期Ｔ１よりも長くするほど、ロボット装置２０の動きは滑らかになるが、一方で、目標到達時間Ｔ２を決定周期Ｔ１よりも長くしすぎると、同調運動の遅延は大きくなる。
【００５５】
同調運動の遅延をユーザに小さく見せるために、目標角度の目標到達時間Ｔ２は、関節ごとに設定されることが好ましい。具体的に上半身の先端側の関節に設定される目標到達時間は、体幹側の関節に設定される目標到達時間よりも短くされる。先端側の関節、つまり手首関節に連結する右手２７ａ、左手２７ｂの動きや、肘関節に連結する右前腕２６ａ、左前腕２６ｂの動きは、胴体２３から離れて動くため、ユーザの目につきやすい。そのため先端側の関節における目標到達時間Ｔ２を短く設定することで、同調運動の遅延をできるだけ小さく見せることが可能となる。
【００５６】
一方で、体幹側の関節については、目標到達時間Ｔ２を相対的に長く設定することで、姿勢推定誤差が先端側に累積する影響を低減する。これにより、ロボット装置２０の全体の動きが滑らかに制御される。たとえば手首関節、肘関節の目標到達時間Ｔ２を８０ｍ秒、より体幹側の肩関節の目標到達時間Ｔ２を１００〜２００ｍ秒、体幹関節の目標到達時間Ｔ２を２５０ｍ秒と設定して、同調運動の低遅延と滑らかさとを実現してよい。
【００５７】
なお肩関節内でも、より先端側である関節モータの目標到達時間Ｔ２を相対的に短く設定することが好ましく、肩関節ヨー軸用モータ５３ａの目標到達時間Ｔ２を１００ｍ秒、肩関節ロール軸用モータ５２ａの目標到達時間Ｔ２を１６０ｍ秒、肩関節ピッチ軸用モータ５１ａの目標到達時間Ｔ２を２００ｍ秒と設定してよい。つまり体幹側から先端（手先）の間に配置された１つの関節モータの目標到達時間Ｔ２は、当該関節モータよりも先端側の関節モータの目標到達時間Ｔ２以上であり、当該関節モータよりも体幹側の関節モータの目標到達時間Ｔ２以下に設定される。なお首関節の速い動きは違和感を生じさせるため、首関節の目標到達時間Ｔ２は最大値（たとえば４００ｍ秒）に設定されてよい。
【００５８】
図９は、複数のロボット装置を、それぞれのユーザが操作して対戦させるロボットシステムを示す。このロボットシステム２００では、ユーザＡがロボット装置２０ａを操作し、ユーザＢがロボット装置２０ｂを操作して、ロボット装置２０ａとロボット装置２０ｂとをボクシングで対戦させる。各ロボット装置２０ａ、２０ｂにおいては、動作モードとして「バトルモード」が設定され、さらに「バトルモード」の中の「ボクシングモード」が選択される。「ボクシングモード」でロボット装置２０は、ユーザの動きと基本的には同じように運動し、ユーザが右ストレートを出すと、ロボット装置２０も右ストレートを出し、ユーザが左フックを出すと、ロボット装置２０も左フックを出す。
【００５９】
対戦型のロボットシステム２００では、ロボット装置２０同士が向かい合い、それぞれのユーザは、ロボット装置２０の顔の正面には立たない。ロボット装置２０の頭部２１に全方位を撮影する複数の撮像部１０６が設けられている場合、姿勢推定部１０８は、撮像部１０６がユーザを撮影した画像データを取得して、撮影されたユーザの姿勢を推定する。
【００６０】
この例では、ロボット装置２０ａにおいて、姿勢推定部１０８が、撮像部１０６で撮影した画像データからユーザＡの姿勢を推定し、同調制御部１２２が、ユーザＡの姿勢にロボット装置２０ａの姿勢を同調させる制御を行う。またロボット装置２０ｂにおいて、姿勢推定部１０８が、撮像部１０６で撮影した画像データからユーザＢの姿勢を推定し、同調制御部１２２が、ユーザＢの姿勢にロボット装置２０ｂの姿勢を同調させる制御を行う。このようにロボットシステム２００では、ユーザＡ、Ｂが、ボクシングの動きをすることで、ロボット装置２０ａ、２０ｂが、それぞれユーザＡ、Ｂの動きを真似して運動する。それぞれのユーザにとって、ロボット装置２０が自分の分身のように動くため、ロボット装置２０を利用した、これまでにないエンタテインメント性を実現できる。
【００６１】
なおロボット装置２０は、ユーザを撮影した画像データを、別の外部装置から供給されてもよい。ユーザは、ロボット装置２０とは離れた場所にいながら、自身を撮影した画像データを外部装置からロボット装置２０に送信する。ロボット装置２０において姿勢推定部１０８が、受信した画像データからユーザの姿勢を推定し、同調制御部１２２が、ユーザの姿勢にロボット装置２０の姿勢を同調させる制御を行う。この場合、ユーザは、ロボット装置２０とは別の場所にいながら、ロボット装置２０同士の対戦を実現できる。
【００６２】
なおロボット装置２０が、顔が向いている方向を撮影する単一の撮像部１０６のみを有する場合、体は相手のロボット装置２０に向いたまま、顔をユーザに向けさせて、撮像部１０６でユーザを撮影してもよい。しかしながらロボット装置２０同士の対戦では、それぞれのロボット装置２０の顔が相手のロボット装置２０の方向を向いてない状況となり、違和感が生じる。そのためロボット装置２０が、相手のロボット装置２０のユーザの姿勢を推定し、推定した姿勢を当該相手のロボット装置２０に送信してもよい。
【００６３】
つまりロボット装置２０ａにおいては、撮像部１０６がユーザＢを撮影し、姿勢推定部１０８が、ユーザＢの姿勢を推定して、通信部１０４がユーザＢの姿勢情報をロボット装置２０ｂに送信する。この送信は、アドホック通信を用いてよい。ロボット装置２０ｂでは、通信部１０４がユーザＢの姿勢情報を受信し、運動制御部１１０が、ユーザＢの姿勢情報にもとづいて、ロボット装置２０ｂの運動制御を実施する。
【００６４】
同様にロボット装置２０ｂにおいては、撮像部１０６がユーザＡを撮影し、姿勢推定部１０８が、ユーザＡの姿勢を推定して、通信部１０４がユーザＡの姿勢情報をロボット装置２０ａに送信する。ロボット装置２０ａでは、通信部１０４がユーザＡの姿勢情報を受信し、運動制御部１１０が、ユーザＡの姿勢情報にもとづいて、ロボット装置２０ａの運動制御を実施する。このようにロボット装置２０が対戦相手のユーザの姿勢を推定して、対戦相手のロボット装置２０に送信することで、互いに画像データを送信するよりも、処理時間を短縮できる。
【００６５】
「バトルモード」には、シンプルにパンチを繰り出して「ボクシングモード」だけでなく、武器を装着して戦うモードがあり、たとえば三節棍を武器とする「三節棍対戦モード」や、刀を武器とする「刀対戦モード」がある。このような武器対戦モードでは、武器の種類によって、ロボット装置２０の同調運動を補正する方がよいことがある。そこでバトルモードで動作させる際、ユーザはロボット装置２０に装着する武器に応じた動作モードを選択し、モード設定部１４２は、装着する武器に応じた動作モードを設定する。なおロボット装置２０が、装着される武器を自動認識する機能を有していれば、モード設定部１４２が、自動認識した武器に応じた動作モードを設定してよい。補正処理部１２４は、設定された動作モードに応じて、ロボット装置２０の同調運動を補正する。
【００６６】
（ａ）「三節棍対戦モード」
三節棍は、３本の棒を紐や鎖で一直線になるように連結した武器である。三節棍をロボット装置２０ａの右手２７ａに持たせる場合、ユーザＡが右腕を振らない状態だと、把持した棒以外の２本の棒は、だらんと垂れ下がり、床面に付いてしまう。そこで補正処理部１２４は、「三節棍対戦モード」においては、右肩関節のピッチ角に下限を設定して、ロボット装置２０ａが、三節棍を高く上げた状態を維持して、棒が床面に付かないようにする。なお左手２７ｂに三節棍を持たせる場合には、補正処理部１２４は、左肩関節のピッチ角に下限を設定すればよい。
【００６７】
図１０は、肩関節のピッチ角に下限を設定した状態を示す。下限角度は、三節棍の長さに依存して定められてよい。肩関節のピッチ角に下限を設定しない場合、ユーザＡの腕が下がった状態では、三節棍も垂れ下がった状態となり、脚部に絡まることがある。また、ユーザＡが腕を十分に上げない状態でぐるぐると回すと、三節棍がロボット装置２０ａの胴体に巻き付くような状況も発生しうる。そこで「三節棍対戦モード」では、補正処理部１２４が肩関節のピッチ角に下限を設定し、ユーザＡがそれほど腕を上げずにぐるぐると回しても、ロボット装置２０ａが三節棍を自然にぐるぐると回して、相手のロボット装置２０ｂを攻撃できる。
【００６８】
（ｂ）「刀対戦モード」
刀をロボット装置２０ａの右手２７ａに持たせる場合、ロボット装置２０ａは、低い位置よりも高い位置に刀を構えた方が見映えがよい。ユーザＡが右上腕を高い位置まで上げれば、同調制御部１２２によりロボット装置２０ａは、高い位置に刀を構えることができる。しかしながら実際に試したところ、ユーザＡは刀を持っていないため、その感覚が分かりづらく、「刀対戦モード」においてユーザＡは上腕を高い位置に上げないことが判明した。そこでユーザＡが右上腕を高い位置まで上げなくても、ロボット装置２０ａの右上腕２５ａを高く上げられるように、補正処理部１２４がロボット装置２０ａの同調運動を補正する。
【００６９】
図１１（ａ）は、姿勢推定部１０８により検出される特徴点の例を示す。特徴点Ｄが首、特徴点Ｅが右肩、特徴点Ｆが右肘、特徴点Ｇが右手首である。同調制御部１２２は、人体の姿勢情報を用いてロボット装置２０の複数の関節のそれぞれの目標角度を演算する演算式を定義した演算規則を用いて、ロボット装置２０の関節の目標角度を決定している。したがって、たとえば「ボクシングモード」における同調制御においてロボット装置２０の右肩の目標関節角度は、特徴点Ｄ、特徴点Ｅ、特徴点Ｆの位置関係から定まる姿勢情報を用いて決定される。
【００７０】
一方で「刀対戦モード」では、補正処理部１２４は、同調制御における演算式の少なくとも一部を変更して、同調運動を補正する。
図１１（ｂ）は、補正処理部１２４による補正処理の例を示す。この補正処理では、ロボット装置２０の右肩の目標関節角度が、特徴点Ｄ、特徴点Ｅ、特徴点Ｇの位置関係から定まる姿勢情報を用いて決定される。なおロボット装置２０の右手首は、図１１（ａ）に示す特徴点Ｆから特徴点Ｇに向かうボーンベクトルを、特徴点Ｇを起点に設定したときの終点Ｈを基準に算出される。
【００７１】
このように補正処理部１２４が、同調制御における演算規則の少なくとも一部を変更して、ロボット装置２０の関節の目標角度を補正することで、演算規則をそのまま適用した同調制御を実施するよりも、エンターテイメント性に優れたロボット運動を実現できる。
【００７２】
なおロボット装置２０ａの補正処理部１２４は、対戦相手であるロボット装置２０ｂの運動にもとづいて、ロボット装置２０ａの同調運動を補正してもよい。補正処理部１２４は、対戦相手を撮影した画像を撮像部１０６から取得し、たとえば対戦相手の攻撃が自分に当たりそうであることを判断すると、同調制御部１２２による同調運動を強制中止して、攻撃を回避する行動をとってもよい。
【００７３】
なお人とロボット装置２０の関節構造は完全には同じではないため、ロボット装置２０は人の動きを正確に真似できないことがある。また人の動きを撮像部１０６で捉えきれないこともある。そのような状況に対応するべく、補正処理部１２４は、ロボット装置２０の姿勢の変化が所定のパターンを示す場合に、その後のロボット装置２０を、当該パターンに対応付けられた運動パターンで運動させてよい。
【００７４】
姿勢履歴記憶部１２８は、現在から所定時間過去までのロボット装置２０の姿勢を記憶する。姿勢履歴記憶部１２８は、たとえば十数秒程度前までのロボット装置２０の姿勢を記憶できればよい。パターン判定部１２６は、姿勢履歴記憶部１２８に記憶された姿勢を参照して、現在に至るロボット装置２０の姿勢の変化が所定のパターンを示すか判定する。ロボット装置２０の姿勢の変化が所定のパターンを示す場合、補正処理部１２４は、その後のロボット装置２０を、当該パターンに対応付けられた運動パターンで運動させる。たとえばミラーリングモードにおいて、ユーザが物を右手で掴み、右腕を右肩ピッチ軸回りに回して右手を右肩越しに背中まで持っていき、背後に物を落とす、という動作を行うとする。このとき撮像部１０６は、ユーザが右手を右肩越しに背後に持っていった様子を撮影できない。そこで姿勢履歴記憶部１２８に、ロボット装置２０が、手に物を把持した状態で腕を耳よりも後ろに動かしたことを示す姿勢の変化が記憶されると、パターン判定部１２６が、現在に至る姿勢の変化が所定のパターンであることを判定して、補正処理部１２４が、手を開いて、物を背中に落とす動作をさせてよい。
【００７５】
本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、運動制御部１１０が上半身のみを同調制御したが、全身を同調制御してもよい。
【００７６】
また実施例では上半身の同調制御において、同調制御部１２２が、決定した目標角度への目標到達時間Ｔ２を、目標角度の決定周期Ｔ１より長く設定して、関節の急峻な回転を回避することを説明したが、下半身の姿勢安定化制御において、第２運動制御部１４０が、同様に目標角度への目標到達時間Ｔ２を、目標角度の決定周期Ｔ１より長く設定する制御を行ってよい。下半身の急な動きは上半身に伝達されることから、目標到達時間Ｔ２は、上半身における最大の目標到達時間、つまり体幹関節の目標到達時間よりも長く設定されることが好ましい。
【符号の説明】
【００７７】
１・・・情報処理システム、１０・・・サーバ装置、２０，２０ａ，２０ｂ・・・ロボット装置、１００・・・ロボット制御システム、１０２・・・モーションセンサ、１０４・・・通信部、１０６・・・撮像部、１０８・・・姿勢推定部、１１０・・・運動制御部、１２０・・・第１運動制御部、１２２・・・同調制御部、１２４・・・補正処理部、１２６・・・パターン判定部、１２８・・・姿勢履歴記憶部、１４０・・・第２運動制御部、１４２・・・モード設定部、２００・・・ロボットシステム。
【図１】
2020203341.tif 000004
【図２】
2020203341.tif 000005
【図３】
2020203341.tif 000006
【図４】
2020203341.tif 000007
【図５】
2020203341.tif 000008
【図６】
2020203341.tif 000009
【図７】
2020203341.tif 000010
【図８】
2020203341.tif 000011
【図９】
2020203341.tif 000012
【図１０】
2020203341.tif 000013
【図１１】
2020203341.tif 000014