2004年度SFC研究所プロジェクト補助金研究報告書
【研究テーマ】
腕時計型加速度センサデバイスを用いたスポーツ動作解析方法およびデータ活用方法の研究
【申請者】
大学院政策・メディア研究科兼環境情報学部 助教授
(申請時 環境情報学部・専任講師 仰木裕嗣)
【研究目的】
本研究の目的は、以下の2点であった.
(1)申請者が開発した第3世代型3軸加速度センサ内蔵デバイス(腕時計型デバイス)を用いてスポーツ運動・身体運動の動作解析手法、特に運動時の加速度データのパターンマッチングに関する手法を改良・新規アルゴリズムの開発を行う。
(2)センサデバイスから得られる身体運動時系列データのネットワークでの利用を想定し、センサデータを含むスポーツデータのXML化を進める。
【助成研究費】
750千円
【研究の背景】
運動技能の定量化は,バイオメカニクスにおける手法においては映像解析に頼ることが多い.しかし申請者はこれまで,いくつかのスポーツ技能の評価を,身体に装着したセンサを用いることで取り組んできた.慣性センサを中心としたセンサを用いた研究成果から,技能に深く関係する身体箇所から得られた情報から,運動局面の判別や運動技能の良否に関する知見が得られることが明らかになってきた.
ところでセンサを用いなくても,映像を使って人間の運動を観察すると,ある人の動きと,別の人の動きが似ている,似ていないということは容易に分かる場合がある.これは親子の顔が似ている,似ていないといった事象を想像させる.しかし,兄弟のそれぞれが親の顔と,どの程度似ているのか?と問われればこれを定量化することは難しいのと同様に,運動の差異を定量化することは難しい.これはセンサ計測データを用いても同様のことが言える.すなわち,ある選手の動きが他者とどの程度似ているのか?あるいは調子のよいときと比べてどの程度かけ離れているのか?といった疑問を解消するための研究はこれまでなかった.特にスポーツ技能の定量化において困難であるとされてきて避けられてきた部分は,ここにある.同一人物でさえも同じ運動をしてもそれに要する時間,いわゆる運動時間は微妙に変化する.したがって時間軸が可変であり,さらには計測される物理量である位置,速度,加速度や関節角度,角速度などの運動学変量,運動力学変量の絶対値も変化する.図的表現をするならば,グラフ縦軸,横軸が双方可変である物理量をいかにして比較,定量化するかということになる.しかし,こうした解析はこれまでスポーツバイオメカニクスや,スポーツ科学で行われてきた解析方法では対応が出来なかった.
時間軸の変動についてはこれまでバイオメカニクス分野では,局面に要した時間を100%として標準化(規格化)して比較するという方法が慣例として行われてきた.また時系列データの比較として古典的な手法である相関関数やフーリエ級数展開やフーリエ変換による周波数解析法などでは,そもそも時系列データの離散データ数が等しいことを前提にしているため,局面時間の相違については対象外である.申請者もこれまでには,運動局面を100%規格化したうえで,判別する際には非線形判別分析法のひとつである,マハラノビスの汎距離を用いて水泳種目判別や,格闘技種目判別を行い良好な成績を収めてきた.しかしながら,この場合にはあらかじめ用意した母集団ともいえる群毎への距離に相当する判別関数スコアにより結果が得られるために,2個体(2試技)の個別比較などは出来ない.
そこで,申請者は音声認識分野における時間軸伸縮法に着目し,運動時に得られるセンサデータによって技能の比較を定量化できる手法で行うことを考えた.
また本研究ではこのセンサデータの比較の将来的な応用として,トレーニング中データの比較によるコーチングを考えている.したがって得られるセンサデータに加えて,どのようなトレーニングを行ったかというメニュー,トレーニング記録,選手のコメント,など様々なデータ型や属性をもつデータを蓄積することが必要とされる.そのためデータの可搬性や汎用性を考慮して,今後センサデータを含めてスポーツデータをXML化することを目指している.
(1)時間軸伸縮法による運動時加速度波形の比較
【研究方法】
申請者の開発した腕時計型3軸加速度センサ内蔵デバイス(Prototype III:図)により水泳を事例としてスポーツ運動の動作時の上肢加速度を計測した.次に得られたストローク中手首加速度の時系列データから1ストロークを入水時に生じる衝撃加速度をトリガとして1ストロークを切り分けた.低速度・中速度・高速度の3段階の速度によって変化する個人のストローク中加速度を対象にして, 時間軸伸縮法の適用を試みた.
図1:腕時計型加速度センサデバイスを使った児童の水泳トレーニング支援
(2004.6, 徳島県美馬郡)
【研究結果】
図2に,同一被験者が泳速度を変えて泳いだ際の1ストロークデータを時間軸伸縮法(Dynamic Time Warping, 以下DTW)によって比較した結果を示す.比較に利用したデータは,自由形泳時に被験者の左腕において観測された手首加速度波形の前腕長軸にそう方向の軸成分の加速度である.これまでの研究成果からこの軸における加速度は,自由形泳で特徴的な加速度パターンを示すことがわかっており,これは主として肩関節周りに上腕・前腕が回転運動を行うことで動きを成立させていることによることはすでに発表した論文にも記載してある.自由形泳において特徴的なこの波形の1ストローク分を切り出し,DTWによって累積距離関数にマンハッタン距離(市街地距離)を用いて比較を行った.図のキャプションには,それぞれの比較におけるDTW Scoreを挙げているがこれが波形間の差を示すスコアであるため,小さければそれだけ動きは似ていると言える.この場合,自由形泳であるが,速度が増加していくために時間的には1ストロークは短くなり,加速度値的には,増加する(回転速度が大きくなるため,角速度に由来する遠心加速度が大きくなる).したがって中速度よりも高速度のほうがより波形が「似ていない」ことを示すスコアが得られる.
図では,Slow/Middle, Slow/Fast,の各波形を比較し,DTWにおいて対応付けられた時系列上の点を対応させてある.波形の特徴点がよく対応付けられていて本手法が適用可能であることが示されたと言える.特に極大値,極小値においても対応する点が求められていることは運動計測によって得られる時系列データの比較に新たな手法を提案できたものと言える.
今後は,被験者間による波形一致度の検証,および各被験者の体調や調子の波によるDTW Scoreの検証などによって運動中のセンサデータの比較を行うことを目指している.
図:時間軸伸縮法による,被験者間水泳自由形ストローク比較(左:低速度vs中速度,DTW Score 158.54m/s2, 右:低速度vs 高速度,DTW Score 261.034m/s2)
(2) センサデータを含むスポーツデータのXML化
【研究方法】
前項のセンサデータを有効活用するためには,各被験者のデータをデータベースに格納し,継続的に被験者内の比較検討を行うとともに,他者との比較を行うことも有用な応用であると考えられる.これについてはデータベースとしてリレーショナルデータベース,XMLデータベースなどのいくつかの選択肢があるが,本研究ではリレーショナルデータベースを格納するためのデータベースと考えた.研究目的であるスポーツデータのXML化を考えると,XMLデータベースの使用も考えられたが,ライセンスフリーで汎用性が高く,SQL99など標準化がなされたフリーのリレーショナルデータベースを用いたほうが得策と考え,センサデータを含むスポーツデータは,リレーショナルデータベース(PostgreSQL8.0)に格納することを前提として研究を進めるものとした.
水泳トレーニングを例題として,前項で提案したような運動中の加速度データ,さらには映像データなども記録することを前提にしてコーチが作る練習日誌を,Web+RDBに置き換え,内容データをXML化することを進めた.
【研究結果】
ライセンスフリーのRDBの代表格である,PostgreSQLのデータ型に鑑み,水泳トレーニングにおいて必要とされる各種情報にふさわしいデータ型の選定をまず行った.特に水泳競技では時間が競技パフォーマンスを決定するため,時間情報がもっとも重要なトレーニングにおけるデータとなる.最終的な泳記録のほかに,ラップタイムやスプリットタイムについても時間情報であり,これを標準化されたRDB上の時間データ型で記録することはDB内での時間計算も容易になることから,PostgreSQL RDBの時間型(time型,表現形式はISO8601)として格納するものとした.また100m×10本 (on 1:30サイクル)といった水泳特有の練習スタイルにおいて用いるサイクルタイム(一定時間間隔で繰り返し泳ぐ時間間隔のこと)を表現するには,ここでは,interval型を用いた.
次に,PostgreSQLデータ型をもとにしてXML表現のプロトタイプを考えた.RDB格納時にはデータは,いくつかのテーブルに分けられる.ここでは,ユーザー情報テーブル,グループ情報テーブル,クラブ情報テーブル,トレーニングメニュー情報テーブル,トレーニング記録テーブル,センサ情報テーブル,映像情報テーブル,試合結果情報テーブルなどのテーブルに分けられる.ここではそのうち,トレーニングメニューテーブル,およびセンサ情報テーブルを掲載した.
(i) トレーニングメニュー用XML
<?xml version="1.0"
encoding="Shift-JIS"?>
<!-- トレーニングメニュー記録XML
-->
<!DOCTYPE TrainingMenu[
<!ELEMENT TrainingMenu (serial, date, timezone, total_start_time, total_finish_time, place, group, id_swimmer, training_phase, id_major, id_minor, cetegory, energy_category, intensity, ideal_hr, stroke, howto, set, times, distance, cycle_time, target_record, set_interval, description, id_movie, id_sensor)>
<!ELEMENT serial (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT timezone (#PCDATA)>
<!ELEMENT total_start_time (#PCDATA)>
<!ELEMENT total_finish_time (#PCDATA)>
<!ELEMENT place (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT id_swimmer (#PCDATA)>
<!ELEMENT id_major (#PCDATA)>
<!ELEMENT id_minor (#PCDATA)>
<!ELEMENT category (#PCDATA)>
<!ELEMENT energy_category (#PCDATA)>
<!ELEMENT intensity (#PCDATA)>
<!ELEMENT ideal_hr (#PCDATA)>
<!ELEMENT stroke (#PCDATA)>
<!ELEMENT howto (#PCDATA)>
<!ELEMENT set (#PCDATA)>
<!ELEMENT times (#PCDATA)>
<!ELEMENT distance (#PCDATA)>
<!ELEMENT cycle_time (#PCDATA)>
<!ELEMENT target_record (#PCDATA)>
<!ELEMENT set_interval (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT id_movie (#PCDATA)>
<!ELEMENT id_sensor (#PCDATA)>
]>
<TrainingMenu>
<serial>000000001</serial>
<date>2005-04-01</date>
<timezone>JST</timezone>
<total_start_time>2005-04-01
18:05:00</total_start_time>
<total_finish_time>2005-04-01
18:25:00</total_finish_time>
<place>慶應義塾大学日吉プール</place>
<group>FR</group>
<id_swimmers>123456789</id_swimmers>
<traning_phase>質的強化期</traning_phase>
<id_major>000001</id_major>
<id_minor>000001</id_minor>
<category>Swim</category>
<energy_category>EN1</energy_category>
<intensity>Fast</intensity>
<ideal_hr>26</ideal_hr>
<stroke>FR</stroke>
<howto>Even
pace</howto>
<set>1</set>
<times>20</times>
<distance>50</distance>
<cycle_time>00:00:60.00</cycle_time>
<target_record>00:00:32.00</target_record>
<set_interval>00:00:00.00</set_interval>
<description>一定のタイムで泳ぐこと</description>
<id_movie>null</id_movie>
<id_sensor>null</id_sensor>
</TrainingMenu>
(ii) センサデータ用XML
<?xml version="1.0"
encoding="Shift-JIS"?>
<!DOCTYPE Sensor[
<!ELEMENT Sensor (id_user, serial_menu, id_menu_major, id_manu_minor, recordserial, type, ch_number)>
<!ELEMENT id_user (#PCDATA)>
<!ELEMENT serial_menu
(#PCDATA)>
<!ELEMENT id_menu_major
(#PCDATA)>
<!ELEMENT id_menu_minor
(#PCDATA)>
<!ELEMENT recordserial
(#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT ch_number
(#PCDATA)>
<!ELEMENT file_name
(#PCDATA)>
]>
<Sensor>
<id_user>123456789</id_user>
<serial_menu>0000000001</serial_menu>
<id_menu_major>000001</id_menu_major>
<id_menu_minor>000001</id_menu_minor>
<recordserial>000000001</recordserial>
<type>Acceleration</type>
<ch_number>1</ch_number>
<file_name>ohgig4.sports.sfc.keio.ac.jp:/home/ohgi/Research/i-coaching/SensorData/000000001.dat</file_name>
</Sensor>
【研究成果】
(1) 仰木裕嗣, テクノロジーを活用した遠隔地児童のスポーツトレーニング支援システム,日本体育学会第55回大会抄録集,pp.368, 2004.
【今後の展開】
(1)時間軸伸縮法による運動時加速度波形の比較
身体に装着された慣性センサによって計測された運動学的時系列データの比較による運動技能評価について第1の懸案事項である時系列データの比較については音声認識手法のひとつである時間軸伸縮法の適用が可能であることが示されたと言える.今後はこれまでに取得した多くの実験データを用いて個人内比較,および個人間比較を行うことで技能レベルの検討につなげていくことを考えている.次に当初計画していた,周期的な時系列データの1サイクルデータの切り出しに関する汎用的手法の開発は未だ解決できていない.これは音声認識手法の前処理である,音声データの切り出し,会話局面の切り出しと同じわけであるが,音声処理分野の手法でもかなり地味な場当たり的手法によって音声会話局面の切り出しを行っているように,時系列データの変化点や閾値によって切り出し,局所データのフーリエ変換等を用いることしか未だ解決策が見当たらない.今後はインパクトによる衝撃加速度といった過渡現象をきっかけにして切り出す従来行ってきた手法に加えて,時間軸伸縮法を時系列データに連続的に適用していく,連続DTW法などの手法の適用によって精度をあげていきたいと考えている.
(2)センサデータを含むスポーツデータのXML化について
慣性センサデータについては,XMLタグにはセンサ種別,計測データ単位,計測データ名称などを設けたが,センサデータ自体はテキストファイルもしくはバイナリファイルとしてファイルのまま格納し,そのデータのファイルパスもしくはURIをデータベースに格納する方法をとった.これは時系列データ自体は多くの場合,データサイズが多いこと,ファイルのままで保存しておくと様々なスクリプトプログラミングなどを使うことで前処理なども可能になることから敢えてデータベース内に格納しないものとした.この方法が果たして有効か否かは今後データを保存していき活用段階でどのような処理が実際に前処理として施されるのかを検証しなければならない.
センサデータを含むスポーツデータの活用については,未だ例題として水泳トレーニングを取り上げているに過ぎず,広くスポーツデータを網羅的にXML化するには及ばない.特に記録競技以外のスポーツ競技のなかでも球技については,対戦結果のみならず試合経過を示すスコアブックデータ等のXML化も必須であるが,汎用的にあまねく球技スポーツに対するデータの標準化は見通しが暗いと言わざるを得ない.
【外部資金獲得にむけて】
研究成果の公表については,2005年5月27日(金)に行われる義塾知的資産センター主催慶應イノベーションネットワークにて研究成果の公表機会を与えられた.そこで,本研究成果を含むセンサデータを用いたスポーツコーチングの応用事例とスポーツビジネスの新しい形態について講演を行い,参加企業に向けて積極的に共同研究提案を行う.