計測自動制御学会東北支部

第 218 回研究集会（2004.10.9）

資料番号218−23

ゲームコントローラを用いたヒューマノイドロボットのスポーツ動作生成システムの開発
Development of a Sports Motion Generation System using aGame Controller for a Humanoid Robot○ 安部 賢人，大沼 俊一，山野 光裕，水戸部 和久，那須 康雄，金子 慎一郎，浅井○Masato

Abe，

Yasuo

Syun-ichi

Ohnuma，Nasu， Shin-ichiro

武，南後 淳Mitsuhiro

Yamano， Kazuhisa

Kaneko， Takeshi

Asai， Jun

Mitobe，Nango

山形大学
Yamagata

University

キーワード：ヒューマノイドロボット(HumanoidController)，動作生成(Motion
連絡先：〒992−0038

Generation)

米沢市城南 4−3−16

渡辺克巳研究室

安部Robot)，ゲームコントローラ(Game

山形大学工学部機械システム工学科

賢人

Tel：(0238)26−3242，Fax：(0238)26−3205，
Email：dtn94595@dipfr.dip.yz.yamagata-u.ac.jpと同等で多様，かつ複雑な動作が求められ1．はじめにる．それを実現するため，可動範囲や運動

現在，産業分野では精度を要する作業や性能を考慮した動作を生成する必要がある．

繰り返し作業，重労働を伴う作業にはロボ

しかしながら，ロボットの動作生成は専門ットが用いられ，自動化されている．しか知識を持っていても困難な作業である．

し，今後のロボットには，より生活空間にそこで本研究では，専門知識を持たない近い場所での共存が求められている．なか人でも容易に動作生成をすることができ，でも，ヒューマノイドロボットの研究が各かつ作成した動作に対して転倒可能性判別

企業でもさかんに行われている．

を行えるような 3 DCG(3Computerを利用した動作

ヒューマノイドロボットには人間の動作

1Graphics)

Dimensional

生成システムを作成した． 動作生成システ

ョンソフトとして構成した．また，VC++

ムには，ロボットの手，脚，腰の座標位置の機能である MFC (Microsoft Foundationをゲームコントローラで教示すること，ロClass)

ボットの動きを随時 3DCG アニメーション

Windows 規約に従った画面制御に表示すること，生成した動作に対して転ドウの取得や開放)倒可能性判別を行う機能を持たせた．

コーティングを行うためのライブラリであを 用 い て 作 成 す る ． MFC と は(ウィンなどの定期的な GUI

る[1]．

作成した動作生成システムを用いて，いくつかのスポーツ動作を生成し，ヒューマ

2.3

ノイドロボットに動作させて，転倒可能性OpenGL によるモデリング

3DCG の表示には OpenGL を利用する判別の検討を行う．

[2]．モデルは下胴体の底を中心点とした階層構造にする．そして手先，足先座標の原

2．動作生成システム
2.1

点はそれぞれの肩，股関節を原点とする．
Fig.2 に階層モデルを示す[3]．上位レベ

動作生成システムの構成

Fig.1 に動作生成システムの流れを示す．

ルのリンクにそれぞれ優位性がある．上位ユーザーはゲームコントローラ，マウスにレベルにあるリンクの変換操作は下位レベより与えられた手先や足先についての教示ルに影響を与え，逆に下位レベルの変換操

情報を PC 側に入力する．そして PC 側は作は上位レベルには影響を与えることはな

それらの情報を元に逆運動学による角度計

い．アプリケーション上で体全体を移動さ算，重心計算，Zero Moment Point (ZMP)せる場合は，脚を支持脚の状態にしその足計算など行い，それらについてアニメーシを動作させると移動する．

ョン表示を行い，PC 画面に出力する．そしてユーザーはその画面を逐次視認しながら操作することで，動作生成および転倒可能性判別を行うことができるシステムである．
3DCG Animation

Fig.2
User
Fig.1

2.4

PC
Motion generation system

Hierarchical structure model

操作画面

上記のシステム，動作生成法，転倒可能性判別法をもとにアプリケーションを作成

2.2

した．Fig.3 はアプリケーションの操作画

開発環境

動作生成システムは Visual C++ (VC++)面である．アニメーションモードでは動作を用いて開発し，Windows 用アプリケーシの確認をしやすくするため，早送りや巻き2

⑦，⑧：動作生成モード時に手先・足先・戻し，一時停止などの機能も取り付けた．

腰の選択

Fig.3

Operation window
Fig.4

USB JOYPAD (front view)

2.5 ゲームコントローラの操作法
このシステムでの動作生成は主にコントローラを用いる．コントローラはロアス株式会
社製の USB JOYPAD JOP−U233W を用いた．特徴として，コントローラの十字キー
は正面左側に，コントローラの正面右側と上面にそれぞれ 4 ボタン配置されている．以下にコントローラのボタンの説明，Fig.4，Fig.5にコントローラの上面図と背面図を示す．

Fig.5

十字キー

USB JOYPAD (top surface view)

縦方向：指定位置の X 方向のスクロール(上：プラス方向，下：マイナス方向)

2.6

マウスの操作法

横方向：指定位置の Y 方向のスクロール

マウスは動作生成したものについて動作(右：プラス方向，左：マイナス方向)

データを作成したり，アニメーションをス①〜⑧ボタンについてタートするなど主にアプリケーション操作①：支持脚・遊脚の切り替え画面上での操作に用いる．また，アニメー②：足を動かすとき，⑤か⑥ボタン同時

ション画面について視点の変更したい場合

押しで足底の Yaw 方向を指示にも用いる．左クリックしながらドラック③：動作生成モードとアニメーションモ

すると視点角度，Shift キーと左クリックしードの切り替えながらドラックすると視点の平行移動，Ctrl キーと左クリックしながらドラックす④：X・Y・Z 方向のスクロール時に同時押しで倍速ると視点の縮小拡大が行える．また視点は⑤：指定位置の Z 方向のマイナス方向へ

アプリケーション起動中ならいつでも変更のスクロールできる．

⑥：指定位置の Z 方向のプラス方向へのスクロール3

間を小さくすると生成される角度データは3．動作生成までの流れ少なくなる．

動作生成には各関節角度を求めることが必作成されたデータをアニメーションに表須条件である．本研究では短時間で容易に動示する．このとき，動的動作での転倒判別作を生成できる動作生成法を考案した．

を行う．転倒すると判別できるなら，通過点の指定からやり直すか補間時間を修正す3.1

る必要がある．

通過点の教示

動作生成するためには左右の腕，足，腰，3.3

首についての各関節角度を求める必要があ

転倒可能性判別法

る．本研究では直接移動に関係する腕・足・転倒とは床面と足底との密着が無くなっ腰についてそれらの関節角度を求める．

たときと定義する．Bonten-maruⅡにおけ動作はおもにゲームコントローラで手る動作での静的動作と動的動作に分けて判先・足先について３次元座標を教示するこ別する．とにより生成していく．手先・足先をコン3.3.1

トローラで動かしながら，ユーザーは動作静的動作での転倒可能性判別の通過点を設けていく．ゲームコントロー

静的動作による転倒可能性判別は通過点

ラでは手先・足先は同時には動かせないが，を指定するときに行う．静的動作とは，動手，足を同時に動作させる動作を生成する

作中に各リンクに生じる加速度がゼロ，も際には，順不同でよいので手先，足先をそしくは限りなくゼロに近い動作のことを示

れぞれ通過させたい場所へ移動してから，す．この場合，重心により判別を行う．単通過点として指定すればよい．また，腰に脚支持期は重心が支持脚の足底に，両脚支関しては回転軸が一つだけなので，コント持期は支持脚によってできる支持多角形のローラにより，腰の角度を直接増減させて鉛直上方に存在すれば安定であると判別で動かすようにする．このような動作を行い，きる．

通過点を複数，プログラムに記憶させる．

重心は，各リンクにおける重心の位置と通過点を指定する際，静的動作での転倒重量，全体の重量より求める．各リンクに可能性判別を行う．転倒すると判別できるおける重心の位置は順運動学より求める．

なら通過点の指定からやり直す必要がある．
3.3.2
3.2

動的動作での転倒可能性判別

動的動作による転倒可能性判別は動作が関節角度データの生成

動作の通過点を指定する前に，補間時間完成し，アニメーションに表示するときにを与える． 関節角度データの生成の特徴は，行う．動的動作とは，動作中に各リンクに動作の通過点を複数指定し，それらの間に生じる加速度が大きい状態を示す．この場ついて通過点のデータを 3 次補間して関節合，ZMP により判別を行う．ZMP とは床角度データを生成することである．

反力モーメントがゼロとなる点のことであ補間時間を大きくすると，その通過点間る．ZMP が支持脚によってできる支持多角のかかる時間が大きくなる．これにより，形内に存在すれば，モーメントのつりあい生成される角度データが多くなり，補間時により床面とロボットの足底との密着が保4

たれる．転倒しないための ZMP の存在可

4.

能領域は重心と同じように判別できる．

動作生成例

ロボットの運動状態から ZMP の位置を作成した動作生成システムを使って実際求める式は床面が x−y 平面となる座標系にスポーツ動作を生成した例を示し，ロボで ZMP の位置を P = ( xP , yP ,0) とすれば，ットに動作させる．アニメーションと同様ロボットのリンク i 番目の位置，質量，慣の動作が生成できているか，転倒可能性判性テンソル，角速度ベクトルをそれぞれ別は正しいのかを検討する．

ri = (xi , yi , zi ) ， mi ， I i ，ω i ，重力加速度を gT

実験で用いるヒューマノイドロボットとして，次のように表せる．

Bonten-MaruⅡの概観図と自由度配置図を Fig.7 に示す．全長 1250 [mm]，全幅 540∑ m z &x& − ∑{m (&z& + g) x + [0,1,0] I ω } (1)x =− ∑ m (&z& + g )∑ m (&z& + g ) y − ∑{m z &y& + [1,0,0] I ω } (2)y =∑ m (&z& + g )Ti i iiiiiiii[mm]，全重量 31.5 [kg]となっている．構Pii

造部はアルミニウム合金を使用している．

Tiiii ii

作成する動作はボールを蹴る動作とする．

Pii

Fig.8 に作成した動作をアニメーションにして，それを 5 コマに区切り，図にして示

ただし，慣性テンソルに関してはここではす．

無視している．

Fig.9 には動作生成システムで生成した

前節で述べた重心と ZMP はアニメーシ動作させ，それを 5 コマに区切り，図にしョンによって表示される．そこで判別しやて示す．

すくするため，重心と ZMP の Z 軸を床面に固定することで支持多角形内に存在するかを判断しやすくした．転倒可能性判別をしやすくするため，アニメーションの表示を通常のポリゴンモードとワイヤーフレームによる表示を行うワイヤーフレームモー
ドを作成した．転倒可能性判別を行うとき
は Fig.6 のように視点を変更し，ワイヤーYawZ

RollPitch

フレームモードにすることで重心と ZMPの動きが見やすくなる．
XFig.7

YBonten-Maru II and its joint locationZMP
Fig.9 より，Fig.8 のアニメーションと同様の重心移動，片足立ち，脚を引く，ボールを蹴る一連の動作を転倒することなく動作を重心

Fig.6

実行することができた．とくに片足立ちの動作で転倒が心配されたが，転倒可能性判別ど

Bonten-Maru II(under view)

おりだった．
5

①②③

Fig.8

①②④Animation

③

Fig.9

⑤

④⑤

Experiment

5．おわりに

参考文献[1]

本研究では，ゲームコントローラを用い

山地秀美：はじめての Visual C++，たヒューマノイドロボットの動作生成シス

技術評論社

テムの開発をした．これにより，ユーザー[2]の専門知識が無くても視覚的に転倒可能性プログラミング，株式会社ピアソンエデュ

判別を行いながら動作を生成できるようにケーションなった．また手足先座標入力をコントロー[3]

ラで行うことによってアニメーション操作

グ，CQ 出版社が容易になった上，角度データは自動で計算をするため，生成にかかる時間は非常に短縮された．
今後，これを使ってより複雑なスポーツ動作をつくる予定である．スポーツ動作には速い動作が要求されるので，慣性テンソルは無視できないものとなる．ZMP の計算に慣性テンソルの項も含める予定である．

6

Crayton・Walnum：Win32 OpenGL

酒井幸市：OpenGL 3D プログラミン