以下、図面を参照して本発明の実施形態について詳細に説明する。なお、以下に説明する実施の形態は、情報処理システムに対して本発明を適用した場合の実施形態である。
[1.第1実施形態]
[1−1.情報処理システムの構成及び機能概要]
先ず、本実施形態に係るゴルフスコア管理システムSの構成及び機能概要について、図1を用いて説明する。図1は、本実施形態に係るゴルフスコア管理システムSの概要構成の一例を示す図である。
図1に示すように、ゴルフスコア管理システムSは、サーバ1と、複数のユーザ端末2とを含んで構成されている。サーバ1と、各ユーザ端末2とは、ネットワークNWを介して、例えば、通信プロトコルにTCP/IP等を用いて相互にデータの送受信が可能になっている。なお、ネットワークNWは、例えば、インターネット、専用通信回線(例えば、CATV(Community Antenna Television)回線)、移動体通信網(基地局等を含む)、及びゲートウェイ等により構築されている。
サーバ1は、ゴルフに関する情報を管理するサーバ装置である。例えば、サーバ1は、ユーザ端末2を利用するユーザがゴルフをプレーしたときの打数を記憶してもよい。
ユーザ端末2は、ゴルフをプレーするユーザが利用する端末装置である。すなわち、ユーザ端末2のユーザはゴルフのプレーヤーである。ユーザ端末2は、ユーザがゴルフをプレーすることによる各ホールの打数を自動的に計算する。ユーザ端末2をユーザの身体に装着することができるように、ユーザ端末2が構成されてもよい。ユーザ端末2が装着されるユーザの身体部位は、例えば手首、指、腕、腹、胸、首、耳、頭、太股、足首、足等であってもよい。ユーザの身体に装着することができるユーザ端末2の例として、ウェアラブルコンピュータが挙げられる。ウェアラブルコンピュータの例として、腕時計型情報端末、眼鏡型情報端末、指輪型情報端末等が挙げられる。或いは、ユーザ端末2をユーザの所有物に装着することができるように、ユーザ端末2が構成されてもよい。ユーザ端末2が装着されるユーザの所有物は、例えばクラブ、ゴルフバッグ、衣服等であってもよい。ユーザ端末2が装着されるユーザの所有物は、ゴルフ用品であってもよい。ユーザ端末2は、ユーザ端末2をユーザの身体又は所有物に装着するための部材を備える。この部材は、例えばベルト、バンド等であってもよい。或いは、ユーザ端末2は、ユーザの身体及び所有物の何れにも装着することができなくてもよい。この場合、ユーザ端末2は、例えばユーザにより持ち運ぶことが可能な端末装置である。このような端末装置の例として、スマートフォン、PDA(Personal Digital Assistant)、携帯電話機等が挙げられる。ユーザ端末2は、ユーザの身体又は所有物に装着され、或いはユーザにより携帯可能であるので、プレーヤーはユーザ端末2を持って行くことができる。従って、特定のゴルフコースに限定されずに、ホールごとの打数を自動的に計算することができる。
本実施形態において、ユーザ端末2は、本発明の情報処理システムの一例である。従って、上述したように、ユーザ端末2が各ホールの打数を自動的に計算する。この場合、サーバ1は、ゴルフスコア管理システムSの構成要素としては必須ではない。しかしながら、サーバ1が、本発明の情報処理システムの一例であってもよい。この場合、サーバ1が、各ユーザ端末2を利用するユーザの各ホールの打数を計算する。或いは、サーバ1とユーザ端末2との組み合わせが、情報処理システムの一例であってもよい。この場合、サーバ1とユーザ端末2とが協働して、各ホールの打数を計算してもよい。
[1−2.サーバの構成]
次に、サーバ1の構成について、図2を用いて説明する。
図2は、本実施形態に係るサーバ1の概要構成の一例を示すブロック図である。図2に示すように、サーバ1は、通信部11と、記憶部12と、入出力インターフェース13と、システム制御部14と、を備えている。そして、システム制御部14と入出力インターフェース13とは、システムバス15を介して接続されている。
通信部11は、ネットワークNWに接続してユーザ端末2等との通信状態を制御するようになっている。
記憶部12は、例えば、ハードディスクドライブ等により構成されている。この記憶部12には、打数データベースが記憶されてもよい。打数データベースには、ゴルフの打数が記憶される。例えば、打数データベースには、ユーザID、ゴルフコースID、プレー日、合計打数及び各ホールの打数が記憶される。ユーザIDは、ゴルフをプレーしたユーザを示す。ゴルフコースIDは、プレーが行われたゴルフコースを示す。プレー日は、ゴルフのプレーが行われた日を示す。合計打数は、1ラウンドの打数である。
また、記憶部12には、オペレーティングシステム、サーバプログラムが記憶されている。サーバプログラムは、例えば、他のサーバ装置等からネットワークNWを介してダウンロードされてもよい。或いは、サーバプログラムは、光ディスク、磁気テープ、メモリカード等の記録媒体に記録されてドライブ装置を介して読み込まれるようにしてもよい。また、サーバプログラムは、プログラム製品であってもよい。
入出力インターフェース13は、通信部11及び記憶部12とシステム制御部14との間のインターフェース処理を行うようになっている。
システム制御部14は、CPU(Central Processing Unit)14a、ROM(Read Only Memory)14b、RAM(Random Access Memory)14c等により構成されている。システム制御部14は、記憶部12に記憶された各種プログラムを実行する。
[1−3.ユーザ端末の構成]
次に、ユーザ端末2の構成について、図3を用いて説明する。
図3は、本実施形態に係るユーザ端末2の概要構成の一例を示すブロック図である。
図3に示すように、ユーザ端末2は、通信部21と、記憶部22と、操作入力部23と、表示部24と、音入力部25と、センサー部26と、入出力インターフェース27と、システム制御部28と、を備えている。そして、システム制御部28と入出力インターフェース27とは、システムバス29を介して接続されている。
通信部21は、ネットワークNWに接続して、サーバ1等との通信状態を制御するようになっている。
記憶部22は、例えば、フラッシュメモリ等により構成されている。記憶部22には、オペレーティングシステム、ゴルフアプリケーションプログラムが記憶されている。ゴルフアプリケーションプログラムは、本発明における情報処理プログラムの一例である。ゴルフアプリケーションプログラムは、各ホールの打数を自動的に計算するためのプログラムである。またゴルフアプリケーションプログラムにより、ユーザは、各ホールの打数を確認したり、打数を修正したりすることが可能であってもよい。ゴルフアプリケーションプログラムは、例えば、サーバ1からネットワークNWを介してダウンロードされてもよい。或いは、ゴルフアプリケーションプログラムは、光ディスク、磁気テープ、メモリカード等の記録媒体に記録されてドライブ装置を介して読み込まれるようにしてもよい。また、ゴルフアプリケーションプログラムは、プログラム製品であってもよい。
操作入力部23は、ユーザによる操作を受け付け、操作内容に対応する信号をシステム制御部28に出力する。操作入力部23の例として、キー、ボタン、スイッチ、タッチパネル等が挙げられる。
表示部24は、システム制御部28の制御により、画像、文字等の情報を表示する。表示部24の例として、液晶ディスプレイ、LED(Light Emitting Diode)等が挙げられる。
音入力部25は、音を音信号に変換して、音信号をシステム制御部28へ出力するデバイスである。音入力部25を介して、打撃音が入力される。音入力部25は、例えばマイクロフォンであってもよい。
センサー部26は、所定の物理量を検出する。特にセンサー部26は、ユーザの身体又はユーザが使用するクラブの動きに関する物理量、身体又はクラブに加わる衝撃に関する物理量、或いはユーザの生命活動に関する物理量を検出する。センサー部26は、検出した物理量を示す検出信号をシステム制御部28へ出力する。例えば、センサー部26は、加速度センサー、速度センサー、衝撃センサー、重力センサー、生体センサー等の少なくとも1つを含んでもよい。生体センサーは、例えばユーザの脈拍数、呼吸の状態、血圧、筋肉の収縮状態等の少なくとも1つを検出してもよい。図3は、ユーザ端末2がセンサー部26を備えている場合のブロック図である。しかしながら、センサー部26は、ユーザ端末2から独立した装置であってもよい。この場合、センサー部26が、ユーザの身体及びクラブの何れかに装着可能であってもよい。また、センサー部26は、例えば無線通信により検知信号をユーザ端末2へ送信してもよい。
入出力インターフェース27は、通信部21〜センサー部26とシステム制御部28との間のインターフェース処理を行うようになっている。
システム制御部28は、CPU28a、ROM28b、RAM28c等により構成されている。システム制御部28は、計時機能等を有する。
[1−4.システム制御部の機能概要]
次に、図4及び図5を用いて、ユーザ端末2のシステム制御部28の機能概要について説明する。図4は、本実施形態に係るユーザ端末2のシステム制御部28の機能ブロックの一例を示す図である。システム制御部28は、CPU28aが、ゴルフアプリケーションプログラムに含まれる各種プログラムコードを読み出し実行することにより、図4に示すように、打撃検出部281、カウンター部282、特性取得部283、ホールアウト推定部284、打数確定部285等として機能する。打撃検出部281は、本発明の検出手段、識別手段、位置情報取得手段、可能性判定手段、レイアウト情報取得手段の一例である。カウンター部282は、本発明のカウント手段の一例である。特性取得部283は、本発明の取得手段の一例である。ホールアウト推定部284は、本発明の推定手段、関係学習手段の一例である。打数確定部285は、本発明の確定手段の一例である。
なお、上述したように、サーバ1が、各ユーザ端末2を利用するユーザの各ホールの打数を計算してもよいし、サーバ1とユーザ端末2とが協働して、各ホールの打数を計算してもよい。従って、サーバ1のCPU14aがサーバプログラムを読み出し実行することにより、サーバ1のシステム制御部14が、打撃検出部281、カウンター部282、特性取得部283、ホールアウト推定部284及び打数確定部285の全部又は一部として機能してもよい。
[1−4−1.打撃の検出]
打撃検出部281は、ユーザ端末2を使用するユーザによりクラブを用いてボールが打撃されたことを検出する。例えば、この打撃の検出は、クラブでボールが打撃される際に生じる打撃音と、クラブのスイングとが検出されることに基づく。打撃音及びスイングの検出に基づくことで、ユーザ自身がクラブでボールを打撃したことを適切に検出することができる。例えば、他人がボールを打撃することにより打撃音のみが検出された場合に、打数が増加することを防止することができる。また、プレーヤーがクラブの素振りを行うことによりスイングのみが検出された場合に、打数が増加することを防止することができる。
打撃検出部281は、音入力部25を介して入力された打撃音を取得する。打撃検出部281は、音入力部25から出力される音信号に基づいて、音入力部25から入力された音から打撃音を検出してもよい。例えば、打撃検出部281は、音圧レベルが所定値以上である音が入力された場合、その音が打撃音であると判定してもよい。或いは、打撃検出部281は、バンドパスフィルタを用いて打撃音を抽出してもよい。クラブがボールに衝突した際に生じる音には、所定の周波数で音圧レベルのピークが存在する。例えば、1番ウッドの場合、4KHz付近でピークがあるという報告がある。また、パターの場合、3.5KHz付近でピークがあるという報告がある。一方、クラブが芝生に擦れる際に生じる音には、3KHz付近でピークがあるという報告がある。そこで、あらゆる種類のクラブでボールが打撃した際に生じる打撃音の音圧レベルがピークになる周波数を含むように、バンドパスフィルタの通過帯域が設定されてもよい。そして、打撃音以外の音が極力遮断されるように通過帯域が設定されてもよい。音入力部25から出力された音信号はバンドパスフィルタを通過する。打撃検出部281は、バンドパスフィルタを通過した音信号の音圧レベルが所定値以上である場合、打撃音が入力されたと判定してもよい。これにより、打撃音の検出精度を向上させることができる。バンドパスフィルタは、ハードウェアデバイスであってもよいし、ソフトウェアで実現されてもよい。
打撃検出部281は、センサー部26を用いてスイングを検出する。上述したように、センサー部26は、加速度センサー、速度センサー、衝撃センサー、重力センサー及び生体センサーの少なくとも1つを備える。
加速度センサーが用いられる場合、クラブをスイングする方向の加速度を検出可能なように、ユーザ端末2又はセンサー部26が、ユーザの手首などの身体、又はクラブ等に装着されてもよい。クラブのスイングは、アドレス、テイクバック、ダウンスイング、フォロースイングの4段階に分かれる。アドレスにおいてはクラブはほぼ動かないため、加速度はほぼ0である。テイクバックにおいて、クラブが後ろに振り上げられる。このときに負の加速度が生じる。次いで、ダウンスイングにて比較的大きな正の加速度が生じる。ダウンスイング中に手首の返しが行われるため、加速度が正の値から負に値に急激に変化する。クラブがボールに衝突した時点からフォロースイングとなる。このとき、クラブが振動することにより加速度が変化する。その後、加速度が緩やかになってスイングが終了する。ダウンスイング時には比較的大きな正の加速度が生じるので、ダウンスイングを検出するための加速度の閾値が予め設定されてもよい。この閾値は、例えばパターをスイングしたときの加速度に基づいて決定されてもよい。その理由は、複数種類のクラブのうち、パターをスイングしたときの加速度が最も小さいからである。加速度センサーにより閾値を超える正の加速度が検出されたとき、打撃検出部281は、クラブがスイングされたと判定してもよい。
速度センサーが用いられる場合、クラブをスイングする方向の速度を検出可能なように、ユーザ端末2又はセンサー部26が、ユーザの手首などの身体、又はクラブ等に装着されてもよい。ダウンスイング時には比較的大きな正の速度が生じるので、ダウンスイングを検出するための速度の閾値が予め設定されてもよい。この閾値は、例えばパターをスイングしたときの速度に基づいて決定されてもよい。速度センサーにより閾値を超える速度が検出されたとき、打撃検出部281は、クラブがスイングされたと判定してもよい。
衝撃センサーが用いられる場合、クラブとボールとの衝撃の強さを検出可能なように、ユーザ端末2又はセンサー部26がクラブ等に装着されてもよい。予め定められた閾値を超える強さの衝撃が衝撃センサーにより検出されたとき、打撃検出部281は、クラブがスイングされたと判定してもよい。
重力センサーが用いられる場合、例えば重力の方向を検出可能なように、ユーザ端末2又はセンサー部26が、ユーザの身体又はクラブ等に装着されてもよい。重力センサーにより検出された重力の方向が、クラブのスイング時の重力の方向と一致又は類似する場合、打撃検出部281は、クラブがスイングされたと判定してもよい。或いは、重力センサーにより検出された重力の方向の変化が、クラブのスイング時の重力の方向の変化と一致又は類似する場合、打撃検出部281は、クラブがスイングされたと判定してもよい。
生体センサーが用いられる場合、ユーザの生命活動に関する物理量が検出可能なように、ユーザ端末2又はセンサー部26が、ユーザの身体に装着される。上述したように、生命活動に関する物理量の例として脈拍数、呼吸の状態、血圧及び筋肉の収縮状態が挙げられる。生体センサーにより検出された生命活動に関する物理量又はその物理量の変化が、クラブのスイング時の物理量又はその物理量の変化と一致又は類似する場合、打撃検出部281は、クラブがスイングされたと判定してもよい。
センサー部26に複数のセンサーが含まれる場合、打撃検出部281は、複数のセンサーを用いて、クラブのスイングを検出してもよい。
打撃検出部281は、音入力部25から入力された音から打撃検出部281により打撃音が検出されたタイミングと、センサー部26を用いてスイングが検出されたタイミングとに基づいて、打撃が行われたか否かを判定してもよい。例えば、打撃検出部281は、打撃音及びスイングの何れか一方が検出されてから所定時間内に打撃音及びスイングの他方が検出された場合にのみ、打撃が行われたと判定してもよい。或いは、打撃検出部281は、打撃音が検出されたタイミングとスイングが検出されたタイミングとの差が所定時間未満である場合にのみ、打撃が行われたと判定してもよい。打撃音のみが検出されたとしても、その打撃音は、ユーザ端末2のユーザ以外のプレーヤーによる打撃により生じた音である可能性がある。このときに使用されたクラブは、そのプレーヤーが所有するクラブであるかもしれないし、ユーザが所有するクラブであるかもしれない。一方、スイングのみが検出されたとしても、ユーザは、素振りをしているかもしれない。打撃音とクラブのスイングとの両方が略同一タイミングで検出されたことを判定することで、打撃検出部281は、ユーザ自身がクラブでボールを打撃したか否かの判定精度を高めることができる。
一例として、通常は音入力部25の音声入力はオフにされている。打撃検出部281は、クラブのスイングを検出すると、所定時間の間のみ音入力部25の音声入力をオンにする。この間に、音入力部25に打撃音が入力された場合に、打撃検出部281は、打撃が行われたと判定する。これにより、音入力部25により消費される電力を節約することができる。
[1−4−2.打数のカウント]
カウンター部282は、打撃検出部281により打撃が検出されることに基づいて、ボールが打撃された回数である打数を増加させる。具体的に、カウンター部282は、打撃が検出されるごとに打数を1打増加させる。増加させる打数は、ユーザがこれまでにゴルフをプレーした全ホール及び現在プレーしているホールの合計打数であってもよいし、現在プレーしているホールの打数であってもよい。
[1−4−3.打撃の特性の取得]
特性取得部283は、打撃検出部281により検出された打撃の威力を特定可能なその打撃の特性を示す特性情報を取得する。特性情報は、音入力部25に入力された打撃音及びセンサー部282を用いて検出されたスイングの少なくとも何れか一方に基づいて取得される。特性取得部283は、打撃音及びスイングの両方を用いる場合、特性取得部283は、スイングの方を優先して用いてもよい。例えばユーザがミスショットすることによってクラブがボールにまともに当たらなかった場合、打撃音が打撃の威力を正確に表すとは限らないからである。
特性情報は、例えば、打撃音の音圧、加速度センサーにより検出された加速度、速度センサーにより検出された速度、衝撃センサーにより検出された衝撃度、重力センサーにより検出された重力方向の変化速度、生体センサーにより検出された物理量及びその物理量の変化速度の少なくとも何れか1つであってもよい。打撃音の音圧が高いほど威力が高い。スイング時のクラブ又はスイング動作の加速度が高いほど威力が高い。スイング時のクラブ又スイング動作の速度が高いほど威力が高い。クラブがボールに衝突した際の衝撃度が高いほど威力が高い。クラブのスイング又はスイング動作による重力方向の変化速度が速いほど威力が高い。スイング時の生体活動に関わる物理量が大きいほど、又はその物理量の変化速度が高いほど、威力が高い。
[1−4−4.ホールアウトの推定]
ホールアウト推定部284は、特性取得部283により取得された特性情報の時系列から特定される、打撃の威力の変化に基づいて、ユーザ端末を利用するユーザがホールアウトしたことを推定する。特性情報の時系列とは、打撃が行われた時刻が早い順に、取得された特性情報を並べた一連の特性情報である。
ユーザは通常各ホールで複数回ボールを打撃する。一般的に、ユーザは、1つのホールのティーショットにおいては強く、速くクラブをスイングし、その後次第に弱く、遅くクラブをスイングする。ユーザは、ボールを打撃する位置がカップから遠いほど、強く、速くクラブをスイングする傾向があるからである。従って、打撃の威力は次第に低下する。そして、ホールアウトの後、次のティーショットで打撃の威力は上昇する。図5は、打撃の威力の変化の一例を示す図である。図5においては、全ホールを通した第1打から第5打までの間、打撃の威力は次第に低下している。次いで、第5打から第6打の間で打撃の威力が上昇している(変化101)。第6打から第8打までの間、打撃の威力は次第に低下している。次いで、第8打から第9打の間で打撃の威力が上昇している(変化102)。第9打から第15打までの間、打撃の威力は次第に低下している。次いで、第15打から第16打の間で打撃の威力が上昇している(変化103)。
例えば、ホールアウト推定部284は、或る打撃の威力よりも次の打撃の威力が高い場合、その或る打撃でユーザがホールアウトしたと推定してもよい。その理由は、或るホールの次のホールでのティーショットの威力は、その或るホールでユーザがホールアウトしたときの打撃の威力から上昇している蓋然性が高いからである。図5の例では、第5打から第6打、第8打か第9打、及び第15打から第16打で打撃の威力が上昇しているので、ホールアウト推定部284は、第5打、第8打、及び第15打でユーザがホールアウトしたと推定する。
推定精度を高めるため、ホールアウト推定部284は、ユーザがホールアウトしたと推定するために必要な条件を更に追加してもよい。例えば、この条件は、打撃の威力の上昇程度が所定の閾値以上であること、上昇直前の打撃の威力が所定の閾値未満であること、及び、上昇時の打撃の威力が所定の閾値以上であることの少なくとも何れか1つであってもよい。これらの条件に用いられる閾値は、全ユーザに共通であってもよいし、ユーザごとに設定可能であってもよい。例えば、後述の打数確定部285によりホールごとの打数が確定され、確定された打数がユーザにより確認されると、確定された打数に基づき、そのユーザが何打目でホールアウトしたかを特定可能である。そして、そのユーザのホールアウト時の打撃の威力から次のホールのティーショット時の打撃の威力の変化の傾向を学習することができる。ホールアウト推定部284は、この傾向に基づいて閾値を設定してもよい。
ホールアウト推定部284は、打撃が検出されるごとに、ユーザがホールアウトしたか否かを推定してもよいし、ユーザによるゴルフのプレーが終了したと判定されたとき又はその後で、何打目でユーザがホールアウトしたかを推定してもよい。
また、ホールアウト推定部284は、打撃の威力の時系列に加えて、別の情報も用いてもよい。例えば、ホールアウト推定部284は、ユーザの位置を示す位置情報を用いてもよい。例えば、ホールアウト推定部284は、GPSを利用して、ユーザ端末2の位置をユーザの位置として特定してもよい。例えば、センサー部26は、GPS衛星からの信号を受信するGPS用のアンテナを備えてもよい。ホールアウト推定部284は、アンテナにより受信された信号に基づいて、ユーザ端末2の位置を計算する。ホールアウト推定部284は、打撃の威力が上昇し、且つ位置情報に基づきユーザが1つのホールから別のホールへ移動したと判定された場合にのみ、ユーザがホールアウトしたと推定してもよい。その理由は、ユーザがホール間を移動していない場合、ユーザがホールアウトした蓋然性が低いからである。例えば、記憶部22には、ユーザがゴルフをプレーするゴルフコースの地図を示す地図デーが記憶されてもよい。この地図データは、ゴルフコース内の各ホールの位置及び範囲を示す。カウンター部282は、打撃を検出するごとに、現在のユーザの位置を計算する。ホールアウト推定部284は、打撃時のユーザの位置と地図データとに基づいて、ユーザが位置するホールを特定する。例えば、ホールアウト推定部284は、今回の打撃時にユーザが位置するホールと、直前の打撃時にユーザが位置するホールとが異なる場合、ユーザが1つのホールから別のホールへ移動したと判定する。
或いは、ホールアウト推定部284は、ユーザが移動した程度を示す移動情報を用いてもよい。ホールアウト推定部284は、2つの打撃の間で打撃の威力が上昇し、且つその2つの打撃の間にユーザが所定程度以上移動したと判定された場合にのみ、ユーザがホールアウトしたと推定してもよい。その理由は、ユーザが1つのホールでホールアウトして、次のホールでプレーするために次のホールに移動するとき、ユーザは相当程度移動する蓋然性が高いからである。ユーザが移動した程度は、例えばユーザが移動した距離又はユーザの歩数であってもよい。例えば、打撃検出部281は、GPS用のアンテナにより受信された信号に基づいて、所定時間間隔ごとにユーザの位置を計算してもよい。ホールアウト推定部284は、直前の打撃時から今回の打撃時までのユーザの位置に基づいて、直前の打撃時から今回の打撃時までにユーザが移動した距離を計算する。ホールアウト推定部284は、移動した距離が所定距離以上である場合にのみ、ユーザがホールアウトしたと推定してもよい。或いは、センサー部26が、歩数計を備えてもよい。歩数計はユーザの歩数をカウントする。ホールアウト推定部284は、今回の打撃時の歩数と直前の打撃時の歩数との差が所定歩数以上である場合にのみ、ユーザがホールアウトしたと推定してもよい。
[1−4−5.各ホールの打数の確定]
打数確定部285は、カウンター部282により増加された打数と、ホールアウト推定部284によりユーザがホールアウトしたことが推定されたこととに基づいて、ホールごとの打数を確定する。カウンター部282により増加された打数、及びホールアウト推定部284による推定から、各ホールにおいて何打目でユーザがホールアウトしたかが特定されるので、ホールごとの打数を確定することができる。
打数確定部284がホールごとの打数を自動的に確定するので、ゴルフコースの運営者は、ゴルフコースに、ホールごとの打数を計算するための専用の設備を設置する必要がない。従って、簡易な構成でホールごとの打数を自動的に計算することができる。また、打数を確定するためにユーザが何らかの操作をする必要がない。
或るホールでユーザがゴルフのプレーを終えた場合に、そのホールの打数を確定する方法が必要となる。ユーザは9番ホール又は18番ホールでゴルフのプレーを終えてもよいし、それらのホール以外のホールでゴルフのプレーを終えてもよい。例えば、ユーザがユーザ端末2に対して所定の操作を行ったとき、打数確定部285は、ユーザがゴルフのプレーを終えたと判定してもよい。或いは、打撃検出部281により打撃が検出されてから所定時間以内に更なる打撃が検出されなかった場合、打数確定部285は、ユーザがゴルフのプレーを終えたと判定してもよい。ユーザがゴルフのプレーを終えたと判定した場合、打数確定部285は、カウンター部282による現在の打数に基づいて、ユーザがプレーした最終のホールの打数を確定してもよい。その理由は、ゴルフのプレーを終えた後、ユーザがクラブでボールを打撃する蓋然性は低いからである。これにより、ゴルフのプレーを終えたことを確認するための操作をユーザが行わなくても、最終のホールの打数を確定することができる。
ホールアウト推定部284及び打数確定部285は、打撃検出部281により打撃が検出されるごとに、ユーザがホールアウトしたか否かの推定、及びこの推定に基づく1つのホールにおける打数の確定を実行してもよい。この場合、1打遅れて1つのホールの打数が確定する。或いは、ホールアウト推定部284及び打数確定部285は、ユーザがゴルフのプレーを終えたと判定されたとき、又はその後所定のタイミングで、何打目でユーザがホールアウトしたかの推定、及びこの推定に基づきユーザがゴルフをプレーした全ホールそれぞれの打数の確定を実行してもよい。
打数確定部284により一度確定された打数をユーザが修正可能なように、打数確定部284が制御してもよい。1つのホールにおける打数が確定するごとに修正が可能であってもよいし、全ホールの打数が確定した後に修正が可能であってもよい。
[1−5.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図6乃至図9を用いて説明する。システム制御部28は、ゴルフアプリケーションプログラムに含まれる各種コードに従って、図6乃至図9に示す処理を実行する。以下に説明する処理例は、ユーザがゴルフのプレーを終えた後に、何打目でユーザがホールアウトしたかの推定、及びこの推定に基づく全ホールそれぞれの打数の確定が実行される場合の処理例である。
図6は、本実施形態に係るユーザ端末2のシステム制御部28による打数計算処理の一例を示すフローチャートである。例えば、ユーザが操作入力部23を操作することにより、システム制御部28が、ゴルフアプリケーションプログラムを起動する。その後、ユーザは、ゴルフのプレーが開始されることを示す操作を行う。このとき、ユーザがゴルフをプレーするホール数又はユーザが何番目のホールから何番目のホールまでゴルフをプレーするかの入力が可能であってもよい。システム制御部28は、ユーザの操作に応じて打数計算処理を実行する。
図6に示すように、システム制御部28は、打数カウント処理を実行する(ステップS1)。この処理においては、打撃の検出及び打数のカウントが実行される。次いで、システム制御部28は、ホールアウト推定処理を実行する(ステップS2)。この処理においては、何打目でユーザがホールアウトしたかが推定される。次いで、システム制御部28は、打数確定処理を実行する(ステップS3)。この処理においては、ユーザがゴルフをプレーした全ホールそれぞれの打数が確定される。打数確定処理が終了すると、打数計算処理が終了する。
図7は、本実施形態に係るユーザ端末2のシステム制御部28による打数カウント処理の一例を示すフローチャートである。図7に示すように、カウンター部282は、総打数GS(グロススコア)を0に設定する(ステップS101)。次いで、打撃検出部281は、センサー部26から出力される検出信号に基づいて、クラブのスイングが検出されたか否かを判定する(ステップS102)。打撃検出部281は、クラブのスイングが検出されたと判定した場合には(ステップS102:YES)、処理をステップS103に進める。一方、打撃検出部281は、クラブのスイングが検出されていないと判定した場合には(ステップS102:NO)、処理をステップS109に進める。
ステップS103において、打撃検出部281は、音入力部25に対する音声入力をオンに設定する。次いで、打撃検出部281は、音入力部25からバンドパスフィルタを介して出力された音信号に基づいて、打撃音が検出されたか否かを判定する(ステップS104)。打撃音取得部281は、打撃音が検出されたと判定した場合には(ステップS104:YES)、処理をステップS107に進める。一方、打撃音取得部281は、打撃音が検出されていないと判定した場合には(ステップS104:NO)、処理をステップS105に進める。
ステップS105において、打撃検出部281は、音声入力をオンにしてから所定時間が経過したか否かを判定する。打撃検出部281は、所定時間が経過していないと判定した場合には(ステップS105:NO)、処理をステップS104に進める。一方、打撃検出部281は、所定時間が経過したと判定した場合には(ステップS105:YES)、処理をステップS106に進める。ステップS106において、打撃検出部281は、音声入力をオフに設定して、処理をステップS102に進める。
ステップS107において、カウンター部282は、総打数GSを1増加させる。次いで、特性取得部283、センサー部26から出力された検出信号又は検出された打撃音から特性情報[GS]を取得して記憶部22に記憶させる。(ステップS108)特性情報[GS]は、GS番目の打撃の威力を示す。次いで、処理はステップS106に進む。
ステップS109において、カウンター部282は、ユーザによりゴルフのプレーを終了させる操作が行われたか否かを判定する。このとき、カウンター部282は、プレーを終了させる操作が行われなかったと判定した場合には(ステップS109:NO)、処理をステップS102に進める。一方、カウンター部282は、プレーを終了させる操作が行われたと判定した場合には(ステップS109:YES)、打数計算処理を終了させる。
図8は、本実施形態に係るユーザ端末2のシステム制御部28によるホールアウト推定処理の一例を示すフローチャートである。図8に示すように、ホールアウト推定部284は、ティーショットの打撃番号のリストに1を追加する(ステップS121)。ティーショットの打撃番号は、全ホールを通して行われた打撃のうち何番目の打撃がティーショットであるかを示す。次いで、ホールアウト推定部284は、打撃番号iを2に設定する(ステップS122)。次いで、ホールアウト推定部284は、特性情報[i−1]及び特性情報[i]に基づいて、i−1番目の打撃からi番目の打撃への威力の変化を取得する(ステップS123)。次いで、ホールアウト推定部284は、取得した変化に基づいて、打撃の威力が上昇しているか否かを判定する(ステップS124)。ホールアウト推定部284は、打撃の威力が上昇していると判定した場合には(ステップS124:YES)、i−1番目の打撃でユーザがホールアウトしたと推定して、処理をステップS125に進める。なお、ホールアウト推定部284は、打撃の威力が上昇していることに加えて、打撃の威力の上昇程度が所定値以上であること、i−1番目の打撃の威力が所定値未満であること、i番目の打撃の威力が所定値以上であることの少なくとも何れか1つを条件として、ユーザがホールアウトしたか否かを推定してもよい。ステップS125において、ホールアウト推定部284は、リストに打撃番号iを追加して、処理をステップS126に進める。一方、ホールアウト推定部284は、打撃の威力が上昇していないと判定した場合には(ステップS124:NO)、処理をステップS126に進める。
ステップS126において、ホールアウト推定部284は、打撃番号iが総打数GS未満であるか否かを判定する。ホールアウト推定部284は、打撃番号iが総打数GS未満であると判定した場合には(ステップS126:YES)、処理をステップS127に進める。ステップS127において、ホールアウト推定部284は、打撃番号iを1増加させて、処理をステップS123に進める。一方、ホールアウト推定部284は、打撃番号iが総打数GS未満ではないと判定した場合には(ステップS126:NO)、処理をステップS128に進める。
ステップS128において、ホールアウト推定部284は、リストに追加された打撃番号の数が、ユーザがゴルフをプレーしたホール数と一致するか否かを判定する。ホールアウト推定部284は、打撃番号の数がホール数と一致すると判定した場合には(ステップS128:YES)、ホールアウト推定処理を終了させる。一方、ホールアウト推定部284は、打撃番号の数がホール数と一致しないと判定した場合には(ステップS128:NO)、処理をステップS129に進める。ステップS129において、ホールアウト推定部284は、打撃番号の数がホール数よりも多いか否かを判定する。ホールアウト推定部284は、打撃番号の数がホール数よりも多いと判定した場合には(ステップS129:YES)、処理をステップS130に進める。一方、ホールアウト推定部284は、打撃番号の数がホール数よりも多くはないと判定した場合には(ステップS129:NO)、処理をステップS131に進める。
ステップS130において、ホールアウト推定部284は、ティーショットの打撃番号である可能性が相対的に低い打撃番号を、リストに含まれる打撃番号の数とホール数との差に相当する数分、リストから削除する。例えば、ホールアウト推定部284は、打撃番号に対応する打撃の威力の上昇程度が相対的に低い打撃番号、打撃番号に対応する打撃の直前の打撃の威力が相対的に高い打撃番号、又は打撃番号に対応する打撃の威力が相対的に低い打撃番号を、ティーショットの打撃番号である可能性が相対的に低い打撃番号であると判定してもよい。
ステップS131において、ホールアウト推定部284は、リストに含まれていない打撃番号のうち、ティーショットの打撃番号である可能性が相対的に高い打撃番号を、リストに含まれる打撃番号の数とホール数との差に相当する数分、リストに追加する。例えば、ホールアウト推定部284は、直前の打撃から威力が上昇している打撃に対応する打撃番号を特定する。ホールアウト推定部284は、特定された打撃番号のうち、打撃番号に対応する打撃の威力の上昇の程度が相対的に高い打撃番号、打撃番号に対応する打撃の直前の打撃の威力が相対的に低い打撃番号、又は打撃番号に対応する打撃の威力が相対的に高い打撃番号を、ティーショットの打撃番号である可能性が相対的に高い打撃番号であると判定してもよい。
なお、ステップS130及び131では、自動的にティーショットの打撃番号の削除及び追加が行われているが、これらの処理に加えて、又はこれらの処理に代えて、ユーザが手作業でティーショットの打撃番号の削除及び追加することが可能なように、ゴルフスコア管理システムSが機能してもよい。例えば、ホールアウト推定部284は、表示部24にティーショットの打撃番号を表示し、リストから削除する打撃番号をユーザが選択したり、リストに追加する打撃番号をユーザが入力したりする。
ステップS130又は131を終えると、ホールアウト推定部284は、ホールアウト推定処理を終了させる。
図9は、本実施形態に係るユーザ端末2のシステム制御部28による打数確定処理の一例を示すフローチャートである。図9に示すように、打数確定部285は、ホール番号hを1に設定する(ステップS141)。次いで、打数確定部285は、打撃番号[h+1]から打撃番号[h]を減算して、打数[h]を計算する(ステップS142)。打撃番号[h]及び打撃番号[h+1]は、リストに追加された打撃番号のうち、h番目に小さい打撃番号及びh+1番目に小さい打撃番号である。打数[h]は、第hホールにおける打数である。次いで、打数確定部285は、ホール番号hを1増加させる(ステップS143)。次いで、打数確定部285は、打撃番号hが、ユーザがゴルフをプレーしたホール数よりも小さいか否かを判定する(ステップS144)。打数確定部285は、打撃番号hがホール数よりも小さいと判定した場合には(ステップS144:YES)、処理をステップS142に進める。一方、打数確定部285は、打撃番号hがホール数よりも小さくはないと判定した場合には(ステップS144:NO)、処理をステップS145に進める。
ステップS145において、打数確定部285は、総打数GS+1から打撃番号[h]を減算して、打数[h]を計算する。次いで、打数確定部285は、打数[1]〜打数[h]を、それぞれ対応するホールの番号と関連付けて、表示部24に表示させる(ステップS146)。次いで、打数確定部285は、表示された各ホールの打数をユーザが確認した上で、ユーザによる打数の修正を受け付ける。例えば、ユーザは、操作入力部23を操作して、打数を修正すべきホールを選択し、選択したホールについてユーザが正しいと考える打数を入力する。ユーザは、打数を修正し又は修正せずに、全ホールの打数を現在の打数で最終的に確定する操作を行う。次いで、打数確定部285は、ユーザによる確認後の打数[1]〜打数[h]を、今日の日付、ユーザがゴルフをプレーしたゴルフコースのゴルフコースID等に関連付けて記憶部22に記憶させる(ステップS148)。或いは、打数確定部285は、打数[1]〜打数[h]をサーバ1に送信して、打数データベースにこれらの打数を記憶させてもよい。ステップS148を終えると、打数確定処理が終了する。
以上説明したように、本実施形態によれば、システム制御部28が、ユーザにより用いられるユーザ端末2により、クラブでボールが打撃される際に生じる打撃音及びクラブのスイングが検出されることに基づいて、ユーザによるクラブを用いたボールの打撃を検出する。また、システム制御部28が、打撃が検出されることに基づいて、ボールが打撃された回数を示す打数を増加させる。また、システム制御部28が、検出された打撃の威力を特定可能なその打撃の特性を取得する。また、システム制御部28が、取得された打撃の特性の時系列から特定される、打撃の威力の変化に基づいて、ユーザがホールアウトしたことを推定する。また、システム制御部28が、増加された打数と、ユーザがホールアウトしたことが推定されたこととに基づいて、ホールごとの打数を確定する。従って、打撃音及びスイングの検出に基づくことで、打撃が行われたことを適切に検出することができる。また、簡易な構成で、当該ユーザのホールごとの打数を自動的に計算することができる。
また、システム制御部28が、或る打撃の威力よりも次の打撃の威力が高い場合、その或る打撃でユーザがホールアウトしたと推定してもよい。この場合、ユーザがホールアウトしたことを適切に推定することができる。
また、ユーザ端末2が、スイングを検出するための加速度センサー、速度センサー、衝撃センサー、重力センサー及び生体センサーの少なくとも1つを備えてもよい。システム制御部28は、打撃の特性として、加速度センサーにより検出された加速度、速度センサーにより検出された速度、衝撃センサーにより検出された衝撃力、重力センサーにより検出された重力方向の変化速度、生体センサーにより検出された、ユーザの生命活動に関する物理量及びその物理量の変化速度、並びに打撃音の音量の少なくとも1つを取得してもよい。
また、システム制御部28が、打撃音及びスイングの何れか一方が検出されてから所定時間内に他方が検出された場合に、ユーザによりクラブでボールが打撃されたと判定してもよい。この場合、ユーザ自身がクラブでボールを打撃したか否かを適切に判定することができる。
[2.第2実施形態]
[2−1.システム制御部の機能概要]
次に、図10及び図11を用いて、第2実施形態におけるユーザ端末2のシステム制御部28の機能概要について説明する。図10は、本実施形態に係るユーザ端末2のシステム制御部28の機能ブロックの一例を示す図である。図10において、図4と同様の要素については同様の符号が付されている。図10に示すように、システム制御部28は、打撃検出部281、カウンター部282、特性取得部283、ホールアウト推定部284、及び打数確定部285に加えて、学習部286として機能する。学習部286は、威力学習手段、クラブ学習手段、及び関係学習手段の一例である。ユーザ端末2のシステム制御部28ではなく、サーバ1のシステム制御部14が学習部286として機能してもよい。
[2−1−1.打撃の威力の変化の学習]
学習部286は、特性取得部283により取得された特性情報と、各ホールの打数が確定されたこととに基づいて、ユーザによる打撃の威力の変化を学習する。学習される打撃の威力の変化は、ティーショット及びホールアウト時の打撃を少なくとも含む複数の連続した打撃における威力の変化である。特に本実施形態において、学習部286は、特性取得部283により取得された特性情報と、各ホールの規定打数と、各ホールの打数が確定されたこととに基づいて、ユーザによる1ホール内での打撃の威力の変化を規定打数ごとに学習する。ユーザによって、1ホール内での打撃の威力の変化に何らかの傾向がある場合がある。また、ユーザがゴルフをプレーするホールが、ショートホール、ミドルホール及びロングホールの何れのホールであるかによって、打撃の威力の変化の傾向が変わる場合がある。学習によって、打撃の威力の変化の傾向が規定打数ごとに特定される。例えば、打撃の威力の変化の傾向から、或るユーザはショートホールが苦手であり、別の或るユーザはロングホールが苦手であるといったことも特定することが可能となる。
各ホールの打数が確定されることによって、各ホールの打撃の威力の変化が特定される。各ホールの規定打数は、例えばサーバ1の記憶部22に予め記憶されている。ゴルフアプリケーションプログラムが起動されて、ユーザがゴルフのプレーを開始する際に、ユーザは、ゴルフをプレーするゴルフコースを選択する。打数確定部285は、例えば確定した各ホールの打数を、そのホールの各打撃の特性情報と関連付けるとともに、選択されたゴルフコースのゴルフコースIDと関連付けて、記憶部22に記憶させる。学習の実行の際、学習部286は、サーバ1から、選択されたゴルフコースの各ホールの規定打数を取得してもよい。学習に用いられる特性情報は、打数確定処理においてユーザによる打数の確認が済んだプレーについて取得された特性情報であることが望ましい。サーバ1のシステム制御部14が学習部286として機能する場合、ユーザ端末2は、例えば確定した各ホールの打数、各打撃の特性情報、ゴルフコースID、ユーザID等をサーバ1へ送信し、サーバ1はこれらの情報を記憶部12に記憶させる。サーバ1は、記憶された情報を用いてユーザごとに学習を実行する。
学習方法の一例を説明する。学習部286は、打撃の威力の変化の出現確率を示す打撃威力変化モデルを学習結果として生成してもよい。打撃威力変化モデルは、例えば木構造の情報であってもよい。打撃威力変化モデルは、木構造における各ノードに相当するノード情報を含む。各ノード情報は、打撃番号、特性情報又は特性情報の範囲、及び出現確率を含む。学習部286は、ルートノードに相当するノード情報として、打撃番号「0」、特性情報「なし」、及び出現確率100%を含むノード情報を生成する。打撃番号は、何打目の打撃であるかを示す。第0打目の打撃は存在しないが、便宜上ルートノードの相当する情報として、第0打目の打撃に関するノード情報が生成される。次いで、学習部286は、1打目の打撃(ティーショット)について、各特性情報の出現確率を計算し、第0打目の打撃番号「0」のノード情報の下位に位置するノード情報として、特性情報ごとに、打撃番号「1」、その特性情報、及び計算した出現確率を含むノード情報を生成する。
例えば、1打目の特性情報として、95、95、95、80、80という5ホール分の特性情報が記憶されている場合、1打目について95を示す特性情報の出現確率は60%であり、80を示す特性情報の出現確率は40%である。学習部286は、クラスタリングにより、近い打撃の威力同士をグループ化して、グループごとに、その出現確率を計算することが望ましい。この場合、ノード情報は、グループ内の特性情報の範囲を含む。
次に、学習部286は、1打目の各ノード情報の下位に位置する第2打目のノード情報を生成する。学習部286は、上位の1打目のノード情報に含まれる特性情報が1打目の特性情報であるという条件下における第2打目の特性情報の条件付き出現確率を計算する。そして、学習部286は、計算した条件付き出現確率を、上位の1打目のノード情報に含まれる出現確率に乗算して、1打目の特性情報及び第2打目の特性情報が示す打撃の威力の変化の出現確率を計算する。そして、学習部286は、打撃番号「2」、第2打目の特性情報、及び計算した出現確率を含むノード情報を生成する。
例えば、1打目の特性情報が95であった3個のホールについて、第2打目の特性情報として、70、60、60というデータが記憶されているとする。この場合、1打目の特性情報が95を示すという条件下において70を示す特性情報の条件付き出現確率は33.3%であり、60を示す特性情報の条件付き出現確率は66.7%である。従って、1打目から第2打目へ特性情報が95から70に変化する確率は60%×33.3%=20%であり、1打目から第2打目へ特性情報が95から60に変化する確率は60%×66.7%=40%である。学習部286は、1打目の特性情報が95を示すノード情報の下位のノード情報として、第2打目の特性情報が70を示すノード情報及び第2打目の特性情報が65を示すノード情報を生成する。
1打目の特性情報が80であった2個のホールのうち1個のホールのみについて、第2打目の65を示す特性情報が記憶されているとする。残りの1つのホールについては、1打目でユーザがホールアウトしたため、第2打目の特性情報が記憶されていない。この場合、1打目の特性情報が80を示すという条件下における65を示す特性情報の条件付き出現確率は50%であり、1打目でホールアウトする条件付き出現確率は50%である。従って、1打目から第2打目へ特性情報が80から65に変化する確率は40%×50%=20%である。また、1打目が特性情報が80であって且つ1打目でユーザがホールアウトする確率(以下、ホールアウト確率という)は40%×50%=20%である。学習部286は、1打目の特性情報が80を示すノード情報の下位のノード情報として、第2打目の特性情報が65を示すノード情報及び第2打目の特性情報が「ホールアウト」を示すノード情報を生成する。直前の打撃でホールアウトした場合、ノード情報に含まれる特性情報は「ホールアウト」を示す。
学習部286は、第3打目についても第2打目の場合と同様にして、1打目から第3打目までの特性情報が示す打撃の威力の変化の出現確率を計算してノード情報を生成する。学習部286は、このような処理を第4打目以降の特性情報についても実行する。こうして、打撃威力変化モデルが生成される。
[2−1−2.ホールアウトの推定]
ホールアウト推定部284は、学習部286による打撃の威力の変化の学習結果と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とを比較し、この比較に基づいて、ユーザがホールアウトしたことを推定する。特に本実施形態において、ホールアウト推定部284は、ユーザによりゴルフがプレーされるホールの順序に従って、これらのホールの規定打数に対応する打撃の威力の変化の学習結果と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とを比較する。例えば、ホールアウト推定部284は、学習結果と打撃の威力の変化とを比較する。
例えば、ホールアウト推定部284は、ユーザがゴルフのプレーを開始するホール(例えば第1ホール)の規定打数を取得する。ホールアウト推定部284は、取得された規定打数に対応する打撃威力変化モデルを取得する。ホールアウト推定部284は、取得された打撃威力変化モデルを用いて、1打目の特性情報から打撃順に、1打目からその打撃までの打撃の威力の変化の出現確率、及びその打撃のホールアウト確率の少なくとも何れか一方を取得する。具体的に、ホールアウト推定部284は、打撃威力変化モデルに含まれる1打目のノード情報のうち、特性取得部283により取得された1打目の特性情報と合致する特性情報を含むノード情報を特定する。次いで、ホールアウト推定部284は、特定したノード情報に含まれる出現確率を、1打目の打撃の威力の出現確率として取得する。或いは、ホールアウト推定部284は、特定したノード情報の下位に位置する第2打目のノード情報のうち、特性情報が「ホールアウト」を示すノード情報を特定する。そして、ホールアウト推定部284は、特定したノード情報に含まれる出現確率を、1打目のホールアウト確率として取得する。そのようなノードが存在しない場合、1打目のホールアウト確率は0%である。
更に、ホールアウト推定部284は、特定した1打目のノード情報の下位に位置する第2打目のノード情報のうち、特性取得部283により取得された第2打目の特性情報と合致する特性情報を含むノード情報を特定する。次いで、ホールアウト推定部284は、特定したノード情報に含まれる出現確率を、第1打目から第2打目までの打撃の威力の変化の出現確率として取得する。或いは、ホールアウト推定部284は、特定したノード情報の下位に位置する第3打目のノード情報のうち、特性情報が「ホールアウト」を示すノード情報を特定する。そして、ホールアウト推定部284は、特定したノード情報に含まれる出現確率を、2打目のホールアウト確率として取得する。
ホールアウト推定部284は、第3打目以降の打撃についても同様に、打撃の威力の変化の出現確率及びホールアウト確率の少なくとも何れか一方を取得する。特性取得部283により取得された特性情報と合致する特性情報を含むノード情報が存在しない場合がある。この場合、ホールアウト推定部284は、例えば特性取得部283により取得された特性情報に最も近い特性情報を含むノード情報を特定してもよい。この場合、ホールアウト推定部284は、特性取得部283により取得された特性情報と、ノード情報に含まれる特性情報との差に応じて、打撃の威力の変化の出現確率又はホールアウト確率を低下させてもよい。
ホールアウト推定部284は、打撃の威力の変化の出現確率が所定値未満となった打撃の直前の打撃でユーザがホールアウトしたと推定してもよい。或いは、ホールアウト推定部284は、ホールアウト確率が最も高い打撃でユーザがホールアウトしたと推定してもよい。或いは、ホールアウト推定部284は、ホールアウト確率が所定値以上となった打撃で、ユーザがホールアウトしたと推定してもよい。或いは、ホールアウト推定部284は、ホールアウト確率が所定値以上となった打撃であって、且つ次の打撃で打撃の威力が上昇している場合に、ユーザがホールアウトしたと推定してもよい。
ホールアウト推定部284は、例えば第1ホールについてユーザが何打目でホールアウトしたかを推定すると、次に第2ホールの規定打数に対応する打撃威力変化モデルを取得する。ホールアウト推定部284は、取得された打撃威力変化モデルを用いて、第1ホールについてユーザがホールアウトしたと推定される打撃の次の打撃の特性情報から打撃順に、打撃の威力の変化及び打撃のホールアウト確率の少なくとも何れか一方を取得する。そして、ホールアウト推定部284は、第2ホールについてユーザが何打目でホールアウトしたかを推定する。ホールアウト推定部284は、第3ホール以降についても同様にして推定を行う。
図11は、実際の打撃の威力の変化、及び打撃威力変化モデルが示す打撃の威力の変化の一例を示す図である。例えば、第1〜第3ホールの規定打数は、それぞれパー4、パー3、及びパー5であるとする。図11に示すように、パー4に対応する打撃威力変化モデルが示す打撃の威力の変化のうち、打撃の威力の変化201の1打目から5打目までの打撃の威力の変化が、実際の1打目から5打目までの打撃の威力の変化に略合致する。実際の1打目から5打目までの打撃の威力の変化がミドルホールで出現する確率は所定値以上である。一方、打撃の威力の変化201における6打目の打撃の威力は、実際の6打目の打撃の威力と合致しない。従って、実際の1打目から6打目までの打撃の威力の変化がミドルホールで出現する確率は0%である。従って、ホールアウト推定部284は、第1ホールでは5打目の打撃でユーザがホールアウトしたと推定する。パー3に対応する打撃威力変化モデルが示す打撃の威力の変化のうち、打撃の威力の変化202の1打目から3打目までの打撃の威力の変化が、実際の6打目から8打目までの打撃の威力の変化に略合致する。パー5に対応する打撃威力変化モデルが示す打撃の威力の変化のうち、打撃の威力の変化203の1打目から7打目までの打撃の威力の変化が、実際の9打目から15打目までの打撃の威力の変化に略合致する。ホールアウト推定部284、第1ホールの場合と同様の判定方法により、ユーザは、第2ホールでは8打目の打撃でユーザがホールアウトしたと推定し、第3ホールでは15打目の打撃でユーザがホールアウトしたと推定する。
ホールアウト推定部284は、打撃が検出されるごとに、ユーザがホールアウトしたか否かを推定してもよいし、ユーザによるゴルフのプレーが終了したと判定されたとき又はその後で、何打目でユーザがホールアウトしたかを推定してもよい。後者の場合、ホールアウト推定部284は、全ホール分について取得された打撃の威力の変化の出現確率又はホールアウト確率の合計が最大となるように、各ホールについてユーザが何打目でホールアウトしたかを推定してもよい。また、ホールアウト推定部284は、全ホールそれぞれの打数の合計が総打数と一致するように、各ホールについてユーザが何打目でホールアウトしたかを推定してもよい。
[2−2.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図12及び図13を用いて説明する。なお、打数計算処理、打数カウント処理及び打数確定処理は、第1実施形態の場合と同様である。
図12は、本実施形態に係るユーザ端末2のシステム制御部28による打撃威力変化学習処理の一例を示すフローチャートである。例えば、打数確定処理が終了した後、又は定期的に、打撃威力変化学習処理が実行される。
図12に示すように、学習部286は、規定打数pを3に設定する(ステップS201)。次いで、学習部286は、記憶部22に記憶された、これまでユーザがゴルフをプレーした全コースの全ホールの打数及び特性情報のうち、規定打数がpであるホールの打数及び特性情報を用いて、規定打数がpに対応する打撃威力変化モデルを生成して記憶部22に記憶させる(ステップS202)。打撃威力変化モデルの生成方法は、2−1−1節にて詳述してある。次いで、学習部286は、規定打数pが5未満であるか否かを判定する(ステップS203)。学習部286は、規定打数pが5未満であると判定した場合には(ステップS203:YES)、処理をステップS204に進める。ステップS204において、学習部286は、規定打数pを1増加させて、処理をステップS202に進める。一方、学習部286は、規定打数pが5未満ではないと判定した場合には(ステップS203:YES)、打撃威力変化学習処理を終了させる。
図13は、本実施形態に係るユーザ端末2のシステム制御部28によるホールアウト推定処理の一例を示すフローチャートである。
図13に示すように、ホールアウト推定部284は、ホール番号hを1に設定するとともに(ステップS221)、第1ホールのティーショットの打撃番号を1に設定する(ステップS222)。次いで、ホールアウト推定部284は、第hホールの規定打数を取得する(ステップS223)。次いで、ホールアウト推定部284は、取得された規定打数に対応する打撃威力変化モデルを取得する(ステップS224)。
次いで、ホールアウト推定部284は、ティーショットの打撃番号が示す打撃以降の特性情報が示す打撃の威力の変化と、取得された打撃威力変化モデルとを比較する。ホールアウト推定部284は、特性情報が示す打撃の威力の変化に合致する打撃の威力の変化を、打撃威力変化モデルから特定する。ホールアウト推定部284は、特定した打撃の威力の変化に対応して打撃威力変化モデルに記憶されている、ティーショットから各打撃までの打撃の威力の変化の出現確率を取得する。ホールアウト推定部284は、ティーショットからの打撃の威力の変化の出現確率が所定値以上である1又は複数の打撃を、第hホールについて、ユーザがホールアウトした打撃の候補として特定する(ステップS225)。
次いで、ホールアウト推定部284は、ホール番号hが、ユーザがゴルフをプレーしたホール数よりも小さいか否かを判定する(ステップS226)。ホールアウト推定部284は、ホール番号hがホール数よりも小さいと判定した場合には(ステップS226:YES)、処理をステップS227に進める。ステップS227において、ホールアウト推定部284は、ステップS225において候補として特定された打撃の次の打撃の番号を、第h+1ホールのティーショットの打撃番号の候補に決定する。次いで、ホールアウト推定部284は、ホール番号hを1増加させて(ステップS228)、処理をステップS223に進める。第2ホール以降において、ステップS225では、ホールアウト推定部284は、ティーショットの打撃番号の候補のそれぞれについて、その候補が示す打撃以降の特性情報が示す打撃の威力の変化と、打撃威力変化モデルとを比較して、ティーショットから各打撃までの打撃の威力の変化の出現確率を取得する。一方、ホールアウト推定部284は、ホール番号hがホール数よりも小さくはないと判定した場合には(ステップS226:NO)、処理をステップS229に進める。ステップS223〜S227が繰り返されることにより、第1ホールから最終ホールまでのティーショットの打撃番号の候補の時系列及び打撃の威力の変化の出現確率の時系列が複数生成される。
ステップS229において、ホールアウト推定部284は、生成されたティーショットの打撃番号の候補の時系列から、最終ホールでユーザがホールアウトする打撃番号が、総打数GSに一致する時系列を抽出する。そして、ホールアウト推定部284は、抽出した時系列のうち、打撃の威力の変化の出現確率の合計が最大となる時系列を、ユーザがホールアウトしたと推定される打撃番号の時系列に決定する。そして、ホールアウト推定部284は、決定された時系列を、ティーショットの打撃番号のリストに追加して、ホールアウト推定処理を終了させる。
以上説明したように、システム制御部28が、取得された打撃の特性と、各ホールの打数が確定されたこととに基づいて、打撃の威力の変化を学習する。また、システム制御部28が、打撃の威力の変化の学習結果と、取得された特性の時系列から特定される打撃の威力の変化とに基づいて、ユーザがホールアウトしたことを推定する。従って、ユーザの打撃の威力の変化の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。
特に本実施形態によれば、システム制御部28が、取得された打撃の特性と、各ホールの規定打数と、各ホールの打数が確定されたこととに基づいて、1ホール内での打撃の威力の変化を規定打数ごとに学習する。また、システム制御部28が、ゴルフがプレーされるホールの順序に従って、そのホールの規定打数に対応する打撃の威力の変化の学習結果と、取得された特性の時系列から特定される打撃の威力の変化とを比較し、この比較に基づいて、ユーザがホールアウトしたことを推定する。従って、規定打数ごとに現れるユーザの打撃の威力の変化の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。
[3.第3実施形態]
[3−1.システム制御部の機能概要]
次に、図14を用いて、第3実施形態におけるユーザ端末2のシステム制御部28の機能概要について説明する。
[3−1−1.使用されたクラブの種類の識別]
本実施形態において、打撃検出部281は、打撃が検出されるごとに、その打撃に用いられたクラブの種類を識別する。例えば、打撃検出部281は、音入力部25から入力された打撃音に基づいてクラブの種類を識別してもよい。
例えば、記憶部22には、複数の打撃音データが記憶される。記憶部22に記憶される打撃音データは、ユーザがクラブでボールを打撃する際に生じる打撃音を示すデータである。例えば、打撃音データは、所定のオーディオファイルフォーマットのデータであってもよい。或いは、打撃音データは、打撃音の周波数特性を示すデータであってもよい。例えば、打撃音データは、周波数ごとの音圧レベルを含むデータであってもよい。各打撃音データは、クラブ種別と対応付けて記憶部22に記憶される。クラブ種別として、1番〜11番ウッド、1番〜9番アイアン、ピッチングウェッジ、サンドウェッジ、パター等がある。記憶部22に打撃音データを記憶させる方法の一例として、録音が挙げられる。例えば、打撃音を録音させるクラブの種別を、ユーザ端末2に入力し、録音を開始する操作を行う。そして、ユーザは、クラブでボールを打撃する。システム制御部28は、音入力部25から入力された音信号に基づいて、打撃音データを生成する。そして、システム制御部28は、打撃音データを、入力されたクラブ種別に対応付けて記憶部22に記憶させる。このような録音が、ユーザがゴルフコースで使用する予定の各クラブについて行われる。記憶部22に打撃音データを記憶させる別の例として、サーバ1からのダウンロードが挙げられる。例えば、サーバ1の記憶部12には、打撃音データベースが記憶されてもよい。打撃音データベースには、様々な製品のクラブについて、打撃音データが記憶される。例えば、打撃音データベースには、クラブID、クラブ種別、ブランド名(またはメーカー名)、モデル名、型番、製造年及び打撃音データ等が記憶されてもよい。クラブIDは、クラブを識別する情報である。打撃音データベースに記憶される打撃音データは、クラブのメーカー、ゴルフスコア管理システムSの管理者、又はゴルフ関連の団体により録音されたものであってもよい。サーバ1及びユーザ端末2は、ユーザが使用するクラブをユーザが選択可能なように構成される。例えば、ユーザ端末2は、クラブを検索するための検索画面を表示部24に表示する。検索画面において、ユーザは、クラブ種別、ブランド名、モデル名、型番等の条件を指定する。条件が指定されるごとに、サーバ1は、打撃音データベースから条件に合致するクラブの情報を検索し、ユーザ端末2は、条件に合致するクラブの一覧を表示部24に表示する。ユーザは、例えばクラブ種別、ブランド名、モデル名及び型番の順に条件を指定することで、一覧に表示させるクラブを絞り込むことができる。ユーザは、一覧の中から、ユーザが用意したクラブを選択する。ユーザ端末2は、選択されたクラブのクラブIDをサーバ1へ送信する。サーバ1は、受信したクラブIDに対応する打撃音データをユーザ端末2へ送信する。ユーザ端末2は、受信した打撃音データを、選択されたクラブのクラブ種別に対応付けて記憶部22に記憶させる。このようなダウンロードが、ユーザが用意した各クラブについて行われる。
打撃検出部281は、音入力部25から入力された打撃音と、記憶部22に記憶された打撃音との比較に基づいて、複数種類のクラブのうち打撃に使用されたクラブの種類を識別する。すなわち、打撃検出部281は、打撃音を生じさせたクラブの種類を識別する。打撃検出部281は、音入力部25から入力された打撃音のデータと、それぞれクラブ種別に対応付けて記憶部22に記憶されている複数の打撃音データの少なくとも1つを比較する。打撃検出部281は、入力された打撃音と、ユーザが用意したクラブによる打撃音との類似度を計算してもよい。入力された打撃音のデータ及び打撃音データが周波数特性を示すデータである場合、打撃検出部281は、打撃音の周波数特性同士を比較する。そして、打撃検出部281は、周波数特性の類似度を計算してもよい。例えば、打撃検出部281は、入力された打撃音のデータ及び記憶部22に記憶されている打撃音データのそれぞれに含まれる複数の周波数の音圧レベルをベクトルの成分として用いて、コサイン類似度、相関関数又は偏差パターン類似度等を、周波数特性の類似度として計算してもよい。周波数特性同士を比較することで、使用されたクラブの識別精度を高めることができる。記憶部22に記憶された打撃音データの中に、類似度が所定の閾値よりも高い打撃音データが存在する場合、打撃検出部281は、その打撃音データに対応付けられたクラブ種別のクラブが使用されたと判定してもよい。すなわち、打撃検出部281は、ユーザが用意した複数のクラブの打撃音の中から、入力された打撃音に類似する打撃音を探し出す。類似度が所定の閾値よりも高い打撃音データが2以上存在する場合、打撃検出部281は、これらの打撃音データの中から類似度が最も高い打撃音データを特定してもよい。そして、打撃検出部281は、類似度が最も高い打撃音データに対応付けられたクラブ種別のクラブが使用されたと判定してもよい。
記憶部22に記憶された打撃音データの中には、入力された打撃音のデータとの類似度が閾値よりも高い打撃音データが存在しない場合がある。この状態は、ユーザが用意したクラブではボールが打撃されていないことを示す。
打撃検出部281は、打撃音が検出されるごとに、使用されたクラブの種類を識別してもよいし、ユーザによるゴルフのプレーが終了したと判定されたとき又はその後で、各打撃で使用されたクラブの種類を識別してもよい。
サーバ1がクラブの種類を識別する場合、上述したように検索画面を用いて検索された裏部の一覧の中からユーザが用意したクラブをユーザが選択することにより、そのクラブのクラブIDをユーザ端末2がサーバ1へ送信すると、サーバ1は、そのユーザのユーザIDに関連付けたクラブのリストに、ユーザ端末2から受信したクラブIDを追加する。音入力部25から打撃音が入力されると、ユーザ端末2は、入力された打撃音のデータをサーバ1へ送信する。サーバ1は、そのユーザ端末2を利用するユーザのユーザIDに関連付けられたクラブのリストから各種類のクラブのクラブIDを取得する。サーバ1は、取得されたクラブIDに関連付けて打撃音データベースに記憶されている打撃音データと、ユーザ端末2から受信された打撃音のデータとを比較して、クラブの種類を識別してもよい。比較の結果、打撃音データの類似度が所定の閾値を超えるクラブのクラブIDがリストにない場合、サーバ1は、打撃音データベースから、ユーザ端末2から受信された打撃音のデータとの類似度が閾値を超える打撃音データに対応するクラブを、ユーザが実際に使用した可能性があるクラブとして検索してもよい。このようなクラブが見つかった場合、サーバ1は、このクラブに関する情報をユーザ端末2へ送信し、ユーザ端末2はこの情報を表示する。例えば、「今の打撃は、ドライバーのABCモデルですか?」又は「登録されているクラブ以外に打撃音が近いクラブがあります」等の情報が表示される。この表示に基づいて、ユーザは、クラブを変更するか否かを選択する操作を行う。クラブを変更することが選択された場合、サーバ1は、リストに含まれるクラブIDのうち、検索されたクラブとクラブ種別が同一であるクラブのクラブIDを、検索されたクラブのクラブIDに変更する。
[3−1−2.使用されたクラブの種類の変化の学習]
学習部286は、打撃検出部281により識別されたクラブ種別と、各ホールの打数が確定されたこととに基づいて、ユーザに使用されるクラブの種類の変化を学習する。学習されるクラブの種類の変化は、ティーショット及びホールアウト時の打撃を少なくとも含む複数の連続した打撃において使用されたクラブの種類の変化である。特に本実施形態において、学習部286は、打撃検出部281により識別されたクラブ種別と、各ホールの規定打数と、各ホールの打数が確定されたこととに基づいて、1ホール内でユーザに使用されるクラブの種類の変化を規定打数ごとに学習する。ユーザによって、1ホール内で使用されるクラブの種類の変化に何らかの傾向がある場合がある。また、ユーザがゴルフをプレーするホールが、パー3〜パー5の何れのホールであるかによって、使用されるクラブの種類の変化の態様が変わってくる。学習によって、使用されるクラブの種類の変化が規定打数ごとに特定される。
各ホールの打数が確定されることによって、各ホールで使用されるクラブの種類の変化が特定される。打数確定部285は、例えば確定した各ホールの打数を、そのホールの各打撃について識別されたクラブ種別と関連付けるとともに、選択されたゴルフコースのゴルフコースIDと関連付けて、記憶部22に記憶させる。学習の実行の際、学習部286は、サーバ1から、選択されたゴルフコースの各ホールの規定打数を取得してもよい。学習に用いられるクラブ種別は、打数確定処理においてユーザによる打数の確認が済んだプレーで使用されたクラブについて識別されたクラブ種別であることが望ましい。サーバ1のシステム制御部14が学習部286として機能する場合、ユーザ端末2は、例えば確定した各ホールの打数、各打撃のクラブ種別、ゴルフコースID、ユーザID等をサーバ1へ送信し、サーバ1はこれらの情報を記憶部12に記憶させる。サーバ1は、記憶された情報を用いてユーザごとに学習を実行する。
学習方法の一例を説明する。学習部286は、クラブの種類の変化の出現確率を示すクラブ種別変化モデルを学習結果として生成してもよい。格納される情報が特性情報ではなくクラブ種別であることを除いて、クラブ種別変化モデルの構造は、第2実施形態で説明された打撃威力変化モデルの構造と同様であってもよい。従って、特性情報ではなくクラブ種別を用いることを除き、学習部286は、打撃威力変化モデルの場合と同様の方法でクラブ種別変化モデルを生成することができる。
[3−1−3.ホールアウトの推定]
ホールアウト推定部284は、学習部286によるクラブの種類の変化の学習結果と、打撃検出部281により識別されたクラブの種類の時系列から特定される、使用されるクラブの種類の変化と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とに基づいて、プレーヤーがホールアウトしたことを推定する。特に、本実施形態において、ホールアウト推定部284は、ゴルフがプレーされるホールの順序に従って、そのホールの規定打数に対応するクラブの種類の変化の学習結果と、打撃検出部281により識別されたクラブの種類の時系列から特定される、使用されるクラブの種類の変化とを比較する。そして、ホールアウト推定部284は、この比較と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とに基づいて、プレーヤーがホールアウトしたことを推定する。打撃の威力の変化及びクラブの種類の変化の両方を用いることで、推定精度が高められる。
打撃の威力の変化に基づいて、プレーヤーがホールアウトしたことを推定する方法は、第1実施形態で説明された方法、及び第2実施形態で説明された方法の何れであってもよい。
例えば、ホールアウト推定部284は、最初は打撃の威力の変化に基づき、第1実施形態で説明された方法、又は第2実施形態で説明された方法を用いて、各ホールにおいてユーザが何打目でホールアウトしたかを仮に推定してもよい。ホールアウト推定部284は、この推定結果から推定される、ユーザがホールアウトしたと推定される仮のホール数と、実際にユーザがゴルフをプレーしたホール数とが一致しない場合、クラブ種別変化モデルを用いて、一部又は全ホールについてユーザが何打目でホールアウトしたかを修正して推定してもよい。
ユーザがホールアウトしたと推定された仮のホール数が実際にユーザがゴルフをプレーしたホール数よりも少ない場合、例えば、ホールアウト推定部284は、各ホールについて、ユーザがホールアウトしたと仮に推定される打撃が何打目の打撃であるかに基づいて、そのホールにおけるクラブの種類の変化を取得し、そのクラブの種類の変化と合致するクラブの種類の変化を、そのホールの規定打数に対応するクラブ種別変化モデルから特定する。ホールアウト推定部284は、特定されたクラブの種類の変化の出現確率をクラブ種別変化モデルから取得する。ホールアウト推定部284は、例えば、取得された出現確率が所定値以下であるホールを、対象のホールとして特定する。
ホールアウト推定部284は、特定した対象のホールにおけるティーショットから、打撃の威力の変化に基づいてユーザがホールアウトしたと仮に推定された打撃の直前までの打撃の中から、クラブ種別変化モデルを用いて、ユーザがホールアウトした打撃を推定する。例えば、ホールアウト推定部284は、ユーザが何打目の打撃でホールアウトしたかを示す打撃番号NHを、対象のホールのティーショットの打撃番号に設定する。ホールアウト推定部284は、対象のホールの規定打数に対応するクラブ種別変化モデルから、対象のホールで使用されたクラブの種類の変化のうち、対象のホールのティーショットからNH番目の打撃までのクラブの種類の変化と合致するクラブの種類の変化を特定する。そして、ホールアウト推定部284は、このクラブの種類の変化の出現確率を、対象のホールの規定打数に対応するクラブ種別変化モデルから取得する。また、ホールアウト推定部284は、対象のホールの次のホールの規定打数に対応するクラブ種別変化モデルから、対象のホールで使用されたクラブの種類の変化のうち、NH+1番目の打撃から最終の打撃までのクラブの種類の変化と合致するクラブの種類の変化を特定する。そして、ホールアウト推定部284は、このクラブの種類の変化の出現確率を、次のホールの規定打数に対応するクラブ種別変化モデルから取得する。ホールアウト推定部284は、打撃番号NHを、ティーショットの打撃番号から対象のホールの最終の打撃の打撃番号まで1ずつ変更しながら、上述した2つの出現確率を取得する。ホールアウト推定部284は、2つの出現確率の合計が極力大きく、且つこれらの出現確率の差が極力小さくなる打撃番号NHを決定する。例えば、ホールアウト推定部284は、出現確率の合計を出現確率の差で割ることにより、出現確率の和と差の比率を計算し、この比率が最大化される打撃番号NHを決定してもよい。ホールアウト推定部284は、NH番目の打撃で、ユーザが対象のホールをホールアウトしたと推定してもよい。そして、ホールアウト推定部284は、NH+1番目の打撃が、次のホールのティーショットであると推定してもよい。こうして、ユーザは、1つのホールでのゴルフのプレーを、2つのホールでのゴルフのプレーに分割する。
図14は、実際の打撃の威力の変化、使用されたクラブの種類の変化、及びクラブ種別変化モデルが示す打撃のクラブの種類の変化の一例を示す図である。図14に示すように、2打目の打撃の威力は1打目の打撃の威力から低下しており、3打目の打撃の威力は2打目の打撃の威力から低下している。4打目の打撃の威力は3打目の打撃の威力から上昇している(打撃の威力の変化301)。しかしながら、3打目の打撃の威力が相等程度高かったため、ホールアウト推定部284は、3打目でユーザがホールアウトしたとは推定しなかった。5打目の打撃の威力は4打目の打撃の威力から低下しており、6打目の打撃の威力は5打目の打撃の威力から低下している。7打目の打撃の威力は6打目の打撃の威力から上昇している(打撃の威力の変化302)。そこで、ホールアウト推定部284は、6打目でユーザが第1ホールをホールアウトしたと仮に推定した。1打目から6打目までの打撃に使用されたクラブは、それぞれ1番ウッド、3番アイアン、7番アイアン、1番アイアン、ピッチングウェッジ、パターである。第1ホールの規定打数は4である。パー4に対応するクラブ種別変化モデルにより、1番ウッド、3番アイアン、7番アイアン、パター、パターというクラブの種類の変化が示されている。4打目以降に使用されたクラブの種類が、パー4に対応するクラブ種別変化モデルに合致しない。従って、ミドルホールでティーショットから順に1番ウッド、3番アイアン、7番アイアン、1番アイアン、ピッチングウェッジ、パターが使用される確率は所定値未満となる。第2ホールの規定打数は3である。パー3に対応するクラブ種別変化モデルにより、1番アイアン、ピッチングウェッジ、パター、パターというクラブの種類の変化が示されている。4打目から6打目までに使用されたクラブの種類が、パー3に対応するクラブ種別変化モデルに合致する。打撃番号NHが3である場合に出現確率の和と差の比率が最も高かったとする。この場合、ホールアウト推定部284は、第1ホールにおいてユーザは3打目でホールアウトしたと推定し、第2ホールにおいて4打目がティーショットであり、且つユーザは6打目でホールアウトしたと推定する。
ユーザがホールアウトしたと推定された仮のホール数が実際にユーザがゴルフをプレーしたホール数よりも多い場合、例えば、ホールアウト推定部284は、各ホールについて、ユーザがホールアウトしたと仮に推定される打撃が何打目の打撃であるかに基づいて、そのホールにおけるクラブの種類の変化を取得し、そのクラブの種類の変化と合致するクラブの種類の変化を、そのホールの規定打数に対応するクラブ種別変化モデルから特定する。ホールアウト推定部284は、特定されたクラブの種類の変化に対応するホールアウト確率を取得する。ホールアウト推定部284は、例えば、取得されたホールアウト確率が所定値以下であるホールを、対象のホールとして特定する。
ホールアウト推定部284は、例えば、特定された対象のホールのティーショットから、対象のホールの次のホールについて打撃の威力の変化に基づいてユーザがホールアウトしたと仮に推定された打撃までのクラブの種類の変化と合致するクラブの種類の変化を、対象のホールの規定打数に対応するクラブ種別変化モデルから特定する。ホールアウト推定部284は、特定したクラブの種類の変化に対応するホールアウト確率をクラブ種別変化モデルから取得する。ホールアウト推定部284は、取得されたホールアウト確率が所定値以上である場合、次のホールについて打撃の威力の変化に基づいてユーザがホールアウトしたと仮に推定された打撃を、対象のホールでユーザがホールアウトしたと推定する。こうして、ユーザは、2つのホールでのゴルフのプレーを、1つのホールでのゴルフのプレーに統合する。
ホールアウト推定部284は、ユーザがホールアウトしたことが推定されたホール数と、実際にユーザがゴルフをプレーしたホール数とが一致するまでプレーの分割又は統合を繰り返す。
[3−2.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図15乃至図18を用いて説明する。なお、打数計算処理及び打数確定処理は、第1実施形態の場合と同様である。
図15は、本実施形態に係るユーザ端末2のシステム制御部28によるクラブ種別変化学習処理の一例を示すフローチャートである。例えば、打数確定処理が終了した後、又は定期的に、クラブ種別変化学習処理が実行される。
図15に示すように、学習部286は、規定打数pを3に設定する(ステップS301)。次いで、学習部286は、記憶部22に記憶された、これまでユーザがゴルフをプレーした全コースの全ホールの打数及びクラブ種別のうち、規定打数がpであるホールの打数及びクラブ種別を用いて、規定打数がpに対応するクラブ種別変化モデルを生成して記憶部22に記憶させる(ステップS302)。次いで、学習部286は、規定打数pが5未満であるか否かを判定する(ステップS303)。学習部286は、規定打数pが5未満であると判定した場合には(ステップS303:YES)、処理をステップS304に進める。ステップS304において、学習部286は、規定打数pを1増加させて、処理をステップS302に進める。一方、学習部286は、規定打数pが5未満ではないと判定した場合には(ステップS303:YES)、クラブ種別変化学習処理を終了させる。
図16は、本実施形態に係るユーザ端末2のシステム制御部28による打数カウント処理の一例を示すフローチャートである。図16において、図7と同様の処理については同様の符号が付されている。
図16に示すように、第1実施形態の場合と同様に、ステップS101〜S106が実行される。ステップS104において、打撃検出部281は、打撃音が検出されたと判定した場合には(ステップS104:YES)、処理をステップS321に進める。ステップS321において、打撃検出部281は、音入力部25から入力された打撃音の周波数数特性と、記憶部22にクラブ種別と関連付けて記憶されている各打撃音データの周波数数特性との類似度を計算する。そして、打撃検出部281は、記憶部22に記憶されている打撃音データのうち、類似度が最も高い打撃音データを特定する(ステップS321)。次いで、打撃検出部281は、最も高い類似度が所定の閾値以上であるか否かを判定する(ステップS322)。打撃検出部281は、類似度が所定の閾値以上ではないと判定した場合には(ステップS322:NO)、処理をステップS105に進める。一方、打撃検出部281は、類似度が所定の閾値以上であると判定した場合には(ステップS322:YES)、ステップS107及びS108を実行する。次いで、打撃検出部281は、クラブ種別[GS]を、特定した打撃音データに関連付けられたクラブ種別に設定する(ステップS323)。クラブ種別[GS]は、GS番目の打撃で使用されたクラブの種類を示す。次いで、処理はステップS106に進む。ステップS102において、カウンター部282は、クラブのスイングが検出されていないと判定した場合には(ステップS102:NO)、処理をステップS109に進める。ステップS109の判定結果に応じて、処理がステップS102に進み又は打数カウント処理が終了する。
図17は、本実施形態に係るユーザ端末2のシステム制御部28によるホールアウト推定処理の一例を示すフローチャートである。図17において、図8と同様の処理については同様の符号が付されている。
図17に示すように、第1実施形態の場合と同様に、ステップS121〜S128が実行される。ステップS128において、ホールアウト推定部284は、リストに追加された打撃番号の数が、ユーザがゴルフをプレーしたホール数と一致するか否かを判定する。ホールアウト推定部284は、リストに追加された打撃番号の数がユーザがゴルフをプレーしたホール数と一致すると判定した場合には(ステップS128:YES)、ホールアウト推定処理を終了させる。一方、ホールアウト推定部284は、打撃番号の数がホール数と一致しないと判定した場合には(ステップS128:NO)、処理をステップS341に進める。ステップS341において、ホールアウト推定部284は、ティーショット打撃番号修正処理を実行して、ホールアウト推定処理を終了させる。
図18は、本実施形態に係るユーザ端末2のシステム制御部28によるティーショット打撃番号修正処理の一例を示すフローチャートである。
図18に示すように、ホールアウト推定部284は、ホール番号hを1に設定する(ステップS361)。次いで、ホールアウト推定部284は、第hホールの規定打数を取得する。そして、ホールアウト推定部284は、取得した規定打数に対応するクラブ種別変化モデルを記憶部22から取得する(ステップS362)。次いで、ホールアウト推定部284は、ティーショットの打撃番号のリストに追加された打撃番号の数が、ユーザがゴルフをプレーしたホール数よりも少ないか否かを判定する(ステップS363)。ホールアウト推定部284は、打撃番号の数がホール数よりも少ないと判定した場合には(ステップS363:YES)、処理をステップS364に進める。一方、ホールアウト推定部284は、打撃番号の数がホール数よりも少なくはないと判定した場合には(ステップS363:NO)、処理をステップS370に進める。
ステップS364において、ホールアウト推定部284は、打撃番号[h]が示す打撃から打撃番号[h+1]−1が示す打撃までのクラブ種別の時系列を取得する。打撃番号[h]及び打撃番号[h+1]は、ティーショットの打撃番号のリストに含まれる番号のうち、h番目に小さい打撃番号及びh+1番目に小さい打撃番号である。ホールアウト推定部284は、この時系列が示すクラブの種類の変化と合致するクラブの種類の変化を、取得されたクラブ種別変化モデルから特定する。そして、ホールアウト推定部284は、特定されたクラブの種類の変化の出現確率をクラブ種別変化モデルから取得する。次いで、ホールアウト推定部284は、取得された出現確率が、所定の出現確率閾値以上であるか否かを判定する(ステップS365)。ホールアウト推定部284は、出現確率が出現確率閾値以上であると判定した場合には(ステップS365:YES)、処理をステップS375に進める。一方、ホールアウト推定部284は、出現確率が出現確率閾値以上ではないと判定した場合には(ステップS365:NO)、処理をステップS366に進める。
ステップS366において、ホールアウト推定部284は、第h+1ホールの規定打数を取得する。そして、ホールアウト推定部284は、取得した規定打数に対応するクラブ種別変化モデルを記憶部22から取得する。次いで、ホールアウト推定部284は、第hホールでユーザがホールアウトしたと推定される打撃を示す打撃番号NHを決定する(ステップS367)。具体的に、ホールアウト推定部284は、打撃番号NHを変えながら、 打撃番号[h]が示す打撃からNH番目の打撃までのクラブの種類の変化の出現確率を、第hホールの規定打数に対応するクラブ種別変化モデルから取得するとともに、NH+1番目の打撃から打撃番号[h+1]−1が示す打撃までのクラブの種類の変化の出現確率を、第h+1ホールの規定打数に対応するクラブ種別変化モデルから取得する。そして、ホールアウト推定部284は、出現確率の和と差の比率を計算する。次いで、ホールアウト推定部284は、この比率が最大となる打撃番号NHを決定する。次いで、ホールアウト推定部284は、打撃番号NH+1を、ティーショットの打撃番号のリストに追加する(ステップS368)。次いで、ホールアウト推定部284は、ホール番号hを1増加させて(ステップS369)、処理をステップS375に進める。
ステップS370において、ホールアウト推定部284は、打撃番号[h]が示す打撃から打撃番号[h+1]−1が示す打撃までのクラブ種別の時系列を取得する。ホールアウト推定部284は、この時系列が示すクラブの種類の変化と合致するクラブの種類の変化を、取得されたクラブ種別変化モデルから特定する。そして、ホールアウト推定部284は、特定されたクラブの種類の変化に対応するホールアウト確率をクラブ種別変化モデルから取得する。次いで、ホールアウト推定部284は、取得されたホールアウト確率が、所定のホールアウト確率閾値以上であるか否かを判定する(ステップS371)。ホールアウト推定部284は、ホールアウト確率がホールアウト確率閾値以上であると判定した場合には(ステップS371:YES)、処理をステップS375に進める。一方、ホールアウト推定部284は、ホールアウト確率がホールアウト確率閾値以上ではないと判定した場合には(ステップS371:NO)、処理をステップS372に進める。
ステップS372において、ホールアウト推定部284は、打撃番号[h]が示す打撃から打撃番号[h+2]−1が示す打撃までのクラブ種別の時系列を取得する。ホールアウト推定部284は、この時系列が示すクラブの種類の変化と合致するクラブの種類の変化を、取得されたクラブ種別変化モデルから特定する。そして、ホールアウト推定部284は、特定されたクラブの種類の変化に対応するホールアウト確率をクラブ種別変化モデルから取得する。次いで、ホールアウト推定部284は、取得されたホールアウト確率がホールアウト確率閾値以上であるか否かを判定する(ステップS373)。ホールアウト推定部284は、ホールアウト確率がホールアウト確率閾値以上ではないと判定した場合には(ステップS373:NO)、処理をステップS375に進める。一方、ホールアウト推定部284は、ホールアウト確率がホールアウト確率閾値以上であると判定した場合には(ステップS373:YES)、処理をステップS374に進める。ステップS374において、ホールアウト推定部284は、ティーショットの打撃番号のリストから、打撃番号[h+1]を削除して、処理をステップS375に進める。
ステップS375において、ホールアウト推定部284は、ホール番号hが、ティーショットの打撃番号のリストに含まれる打撃番号の数未満であるか否かを判定する(ステップS375)。ホールアウト推定部284は、ホール番号hが打撃番号の数未満であると判定した場合には(ステップS375:YES)、処理をステップS376に進める。ステップS376において、ホールアウト推定部284は、ホール番号hを1増加させて、処理をステップS362に進める。一方、ホールアウト推定部284は、ホール番号hが打撃番号の数未満ではないと判定した場合には(ステップS375:NO)、処理をステップS377に進める。
ステップS377において、ホールアウト推定部284は、リストに含まれる打撃番号の数が、ユーザがゴルフをプレーしたホール数と一致するか否かを判定する。ホールアウト推定部284は、打撃番号の数がホール数と一致しないと判定した場合には(ステップS377:NO)、処理をステップS361に進める。なお、この判定によりステップS361〜S376を再実行する場合、ホールアウト推定部284は、例えば出現確率閾値及びホールアウト確率閾値を変更してもよい。一方、ホールアウト推定部284は、打撃番号の数がホール数と一致すると判定した場合には(ステップS377:YES)、ティーショット打撃番号修正処理を終了させる。
以上説明したように、本実施形態によれば、システム制御部28が、識別されたクラブ種別と、各ホールの打数が確定されたこととに基づいて、ユーザに使用されるクラブの種類の変化を学習する。また、システム制御部28が、クラブの種類の変化の学習結果と、識別されたクラブの種類の時系列から特定される、使用されるクラブの種類の変化と、取得された特性情報の時系列から特定される打撃の威力の変化とに基づいて、プレーヤーがホールアウトしたことを推定する。従って、ユーザが使用するクラブの種類の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。
特に、システム制御部28が、検出された打撃に用いられたクラブの種類を識別する。また、システム制御部28が、識別されたクラブの種類と、各ホールの規定打数と、各ホールの打数が確定されたこととに基づいて、1ホール内で使用されるクラブの種類の変化を規定打数ごとに学習する。また、システム制御部28が、ゴルフがプレーされるホールの順序に従って、そのホールの規定打数に対応するクラブの種類の変化の学習結果と、識別されたクラブの種類の時系列から特定される使用されるクラブの種類の変化とを比較し、この比較と、取得された打撃の特性の時系列から特定される打撃の威力の変化とに基づいて、ユーザがホールアウトしたことを推定する。従って、規定打数ごとにユーザが使用するクラブの種類の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。
[4.第4実施形態]
[4−1.システム制御部の機能概要]
次に、図19及び図20を用いて、第4実施形態におけるユーザ端末2のシステム制御部28の機能概要について説明する。
[4−1−1.位置情報の取得]
本実施形態において、打撃検出部281は、ユーザがクラブでボールを打撃したときのユーザの位置を示す位置情報及び打撃間でユーザが移動した程度を示す移動情報の少なくとも何れか一方を取得する。位置情報を取得する場合、例えば、打撃検出部281は、GPSを利用して、ユーザ端末2の位置をユーザの位置として特定してもよい。例えば、センサー部26は、GPS衛星からの信号を受信するGPS用のアンテナを備えてもよい。打撃検出部281は、アンテナにより受信された信号に基づいて、ユーザ端末2の位置を、ユーザの位置として計算する。移動情報を取得する場合、ユーザが移動した程度は、例えばユーザが移動した距離又はユーザの歩数であってもよい。例えば、センサー部26に備えられる加速度センサー若しくはジャイロセンサー等を用いて距離が計算され、又は、センサー部26に備えられる歩数計により歩数がカウントされる。
[4−1−2.ペナルティの発生の可能性の判定]
打撃検出部281は、打撃検出部281により取得された位置情報及び移動情報の少なくとも何れか一方に基づいて、ペナルティが課されるイベントが発生した可能性を判定する。図19は、ペナルティが課されるイベント、及びそのイベントが発生した可能性があると判定される条件の例を示す図である。ペナルティが課されるイベントとして、例えば、OB、ロストボール、空振り、ボールがウォーターハザードに入ったこと、バンカーでボールを打撃する前にバンカーの砂にクラブが触れること等が挙げられる。例えば、打撃検出部281は、今回打撃が行われた位置が、前回打撃が行われた位置と略同一である場合、OB又はロストボールが発生した可能性があると判定してもよい。その理由は、OB又はロストボールの場合、前回の打撃が行われた位置と略同一の位置でユーザは打撃を行う必要があるからである。位置情報を用いる場合、打撃検出部281は、或る打撃が行われた位置と次の打撃が行われた位置との差が所定値未満である場合、OB又はロストボールが発生した可能性があると判定してもよい。移動情報を用いる場合、打撃検出部281は、或る打撃が行われてから次の打撃が行われるまでにユーザが移動した程度が所定値未満である場合、OB又はロストボールが発生した可能性があると判定してもよい。ユーザが移動した程度が所定値未満である場合とは、ユーザが移動した距離が所定距離未満、又は歩数が所定数未満である場合である。打撃検出部281は、位置情報及び移動情報の両方を用いて判定を行ってもよい。ここで、打撃検出部281は、今回の打撃の威力が、前回の打撃の威力と略同一である場合にのみ、OB又はロストボールが発生した可能性があると判定してもよい。
また例えば、打撃検出部281は、クラブのスイングは検出されたが、打撃音が検出されなかった場合、空振りが発生した可能性があると判定してもよい。ユーザが素振りを行った場合に空振りが発生した可能性があると判定されることを抑止するため、ユーザ端末2は、空振りの発生の可能性の判定処理(またはスイング及び打撃の検出)を一時的に中断するための操作が可能なように機能してもよい。例えば、表示部24に表示される一時中段ボタンをユーザが押すと、打撃検出部281は、表示部24に表示される再開ボタンをユーザが押すまで、空振りの発生の可能性の判定を行わない。
打撃検出部281は、ユーザがゴルフをプレーするホールのレイアウトを示すレイアウト情報を取得してもよい。そして、打撃検出部281は、位置情報及びレイアウト情報に基づいて、ペナルティが課されるイベントが発生した可能性を判定してもよい。例えば、打撃検出部281は、或るホールの第2打目以降の打撃がティーグラウンドで行われたと判定された場合に、OB又はロストボールが発生した可能性があると判定してもよい。ここで、打撃検出部281は、今回の打撃の威力が、前回の打撃の威力と略同一である場合にのみ、OB又はロストボールが発生した可能性があると判定してもよい。また例えば、打撃検出部281は、バンカー内で打撃が行われた場合に、バンカーでボールを打撃する前にバンカーの砂にクラブが触れた可能性があると判定してもよい。
また例えば、ボールが入った場合にペナルティが課されるエリア(以下、対象エリアという)から所定距離内の位置でボールが打撃されたと判定される場合に、ペナルティが課されるイベントが発生した可能性があると判定してもよい。対象エリアの例として、ウォーターハザード等が挙げられる。例えば、サーバ1の記憶部12に、各ゴルフコースの全ホールのレイアウト情報が記憶される。レイアウト情報は、例えば、ホール内のティーグラウンド、フェアウェイ、ラフ、ウォーターハザード、バンカー、グリーン、カップ等の位置及び範囲を示す。打撃検出部281は、ユーザがゴルフをプレーするホールのレイアウト情報をサーバ1から取得する。例えば、打撃検出部281は、打撃が行われた位置がウォーターハザードから所定距離内である場合に、ボールがウォーターハザードに入った可能性があると判定してもよい。その理由は、ボールがウォーターハザードに入った場合、ウォーターハザードの近くからユーザは打撃を行う必要があるからである。
打撃検出部281は、特性取得部283により取得された特性情報に基づいて、打撃によるボールの飛距離を推定してもよい。例えば、特性取得部283は、特性情報が示す威力が高いほど飛距離が長くなるように、飛距離を推定する。例えば、記憶部22に、特性情報の範囲と飛距離との対応関係を示すテーブルが記憶されてもよい。打撃検出部281は、このテーブルを参照して飛距離を推定してもよい。或いは、打撃検出部281は、特性情報を用いて所定の計算処理を行うことにより、飛距離を計算してもよい。
学習部286は、特性情報とボールの飛距離との関係を学習してもよい。具体的に、学習部286は、打撃検出部281により検出された打撃ごとに、打撃検出部281により取得された位置情報に基づいて、その打撃が行われた位置から次の打撃が行われた位置までの距離をボールの飛距離と仮定して計算する。学習部286は、計算された飛距離に基づいて、特性情報とボールの飛距離との関係を学習する。例えば、学習部286は、特性情報を独立変数とし且つ飛距離を従属変数として回帰分析を行うことにより、特性情報と飛距離との関係を示す回帰式を決定してもよい。
打撃検出部281は、特性取得部283により取得された特性情報、及び学習部286により学習された関係に基づいて、ボールの飛距離を推定してもよい。例えば、打撃検出部281は、特性情報と回帰式を用いて飛距離を計算してもよい。
打撃検出部281は、位置情報及びレイアウト情報と、推定された飛距離とに基づいて、対象エリアにボールが入った可能性を判定してもよい。具体的に、打撃検出部281は、打撃が行われた位置が対象エリアから所定距離内である場合、前回打撃が行われた位置から対象エリアまでの距離を計算する。また、打撃検出部281は、前回の打撃の特性情報に基づいて、ボールの飛距離を推定する。打撃検出部281は、例えば推定された飛距離が、ボールが対象エリアに到達する距離であると判定した場合、対象エリアにボールが入った可能性があると判定してしてもよい。
[4−1−2.打数の調整]
打数確定部285は、打撃検出部281によりペナルティが課されるイベントが発生した可能性があると判定されたホールの打数を調整する。具体的に、打数確定部285は、打数を増加させる。例えば、ペナルティが課されるイベントが、OB、ロストボール又はウォーターハザードである場合、打数確定部285は、打数を1増加させる。なお、ペナルティとして増加する打数をユーザがイベントの種類ごとに設定であってもよい。
打数確定部285は、ペナルティが課されるイベントが発生した可能性があると判定された場合、自動的に打数を調整してもよい。或いは、打数確定部285は、ペナルティが発生したことをユーザが肯定した場合にのみ、打数を調整してもよい。例えば、打撃検出部281は、ペナルティが課されるイベントが発生した可能性があることを示すアラート情報を出力してもよい。例えば、アラート情報が表示部24に表示され、又はスピーカーから出力される。例えば、「ウォーターハザードにボールが入りましたか?」等のアラート情報が出力される。そして、打撃検出部281は、ペナルティが課されるイベントが発生したことを肯定するか否かを選択する操作をユーザから受け付ける。打数確定部285は、ペナルティが課されるイベントが発生したとユーザが肯定した場合に限り、打数を調整してもよい。
ペナルティが課されるイベントが発生した可能性の判定、アラートの出力、及び打数の調整は、打撃が検出されるごとに実行されてもよいし、ユーザによるゴルフのプレーが終了したと判定されたとき又はその後で実行されてもよい。
図20は、或るホールのレイアウト及び打撃が行われた位置の例を示す図である。図20に示すように、ユーザは、位置501〜505の順で、それぞれの位置で打撃を行った。位置501は、ティーグラウンド401内にある。位置502は、フェアウェイ402内にある。位置503は、ウォーターハザード403から所定距離内にある。位置504は、フェアウェイ402内にある。位置505は、グリーン404内にある。打撃検出部281は、位置502における打撃の特性情報に基づいてボールの飛距離を推定する。打撃検出部281は、推定された飛距離が、位置502からウォーターハザードにボールが到達する距離であると判定した場合、ボールがウォーターハザードに入った可能性があると判定する。打撃検出部281はアラート情報を出力する。打撃検出部281は、ユーザが肯定の操作を行った場合、このホールの打数を5から6に変更して確定する。
本実施形態において、ホールアウト推定部284は、ユーザが何打目でホールアウトしたかを推定する方法として、第1〜第3、第5及び第6実施形態の何れの実施形態における方法を用いてもよい。
第2実施形態で説明されたように打撃の威力の変化を学習する場合においては、学習部286は、何打目でペナルティが発生したかを特定することにより、ペナルティを起こした打撃の威力の傾向や、ペナルティ発生後のリカバリーショットの威力の傾向等を学習してもよい。ホールアウト推定部284は、ペナルティが発生したホールについて何打目でユーザがユーザホールアウトしたかを推定する場合、ペナルティ発生時の打撃の威力の変化の学習結果を用いて推定を行ってもよい。
第3実施形態で説明されたようにクラブの種類の変化を学習する場合においては、学習部286は、何打目でペナルティが発生したかを特定することにより、ペナルティを起こした打撃で使用されるクラブの種類傾向や、ペナルティ発生後のリカバリーショットで使用されるクラブの種類の傾向等を学習してもよい。ホールアウト推定部284は、ペナルティが発生したホールについて何打目でユーザがユーザホールアウトしたかを推定する場合、ペナルティ発生時に使用されるクラブの種類の変化の学習結果を用いて推定を行ってもよい。
[4−2.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図21乃至図24を用いて説明する。なお、打数計算処理及びホールアウト推定処理は、第1実施形態の場合と同様であってもよい。
図21は、本実施形態に係るユーザ端末2のシステム制御部28による飛距離学習処理の一例を示すフローチャートである。例えば、打数確定処理が終了した後、又は定期的に、飛距離学習処理が実行される。
図21に示すように、学習部286は、ユーザがこれまでにゴルフをプレーした全ゴルフコースについて記憶部22に記憶されている各打撃の位置情報に基づいて、ボールの飛距離を計算する(ステップS401)。具体的に、学習部286は、打撃ごとに、その打撃が行われた位置と次の打撃が行われた位置との間の距離を計算する。次いで、学習部286は、各打撃について計算された飛距離及び特性情報を用いて、回帰分析により、特性情報と飛距離との関係を示す回帰式を計算して(ステップS402)、飛距離学習処理を終了させる。
図22は、本実施形態に係るユーザ端末2のシステム制御部28による打数カウント処理の一例を示すフローチャートである。図22において、図7と同様の処理については同様の符号が付されている。
図22に示すように、第1実施形態の場合と同様に、ステップS101〜S108が実行される。ステップS108の後、打撃検出部281は、ペナルティ判定処理を実行して(ステップS421)、処理をステップS106に進める。ステップS102において、カウンター部282は、クラブのスイングが検出されていないと判定した場合には(ステップS102:NO)、処理をステップS109に進める。ステップS109の判定結果に応じて、処理がステップS102に進み又は打数カウント処理が終了する。
図23は、本実施形態に係るユーザ端末2のシステム制御部28によるペナルティ判定処理の一例を示すフローチャートである。
図23に示すように、打撃検出部281は、GPSセンサーを用いて、ユーザ端末2の現在位置を位置[GS]として取得する(ステップS441)。位置[GS]は、GS番目の打撃が行われた位置を示す。次いで、打撃検出部281は、位置[GS]が位置[GS−1]と略一致するか否かを判定する(ステップS442)。打撃検出部281は、位置[GS]が位置[GS−1]と略一致すると判定した場合には(ステップS442:YES)、処理をステップS443に進める。一方、打撃検出部281は、位置[GS]が位置[GS−1]と略一致しないと判定した場合には(ステップS442:NO)、処理をステップS446に進める。
ステップS443において、打撃検出部281は、OB又はロストボールが発生した可能性があることを示すアラート情報を出力して、OB又はロストボールが発生したことを肯定するか否かの選択をユーザから受け付ける。次いで、打撃検出部281は、ユーザにより肯定が選択されたか否かを判定する(ステップS444)。打撃検出部281は、肯定が選択されたと判定した場合には(ステップS444:YES)、処理をS445に進める。ステップS445において、打撃検出部281は、ペナルティ打数[GS−1]を1に設定して、ペナルティ判定処理を終了させる。ペナルティ打数[GS−1]は、第GS−1打目の打撃に関してペナルティとして加算される打数を示す。一方、打撃検出部281は、肯定が選択されなかったと判定した場合には(ステップS444:NO)、処理をS452に進める。
S446において、打撃検出部281は、位置[GS]と、ユーザがゴルフをプレーしているゴルフコースの各ホールのレイアウト情報に基づいて、GS番目の打撃が行われた位置がウォーターハザードから所定距離内であるか否かを判定する。打撃検出部281は、打撃が行われた位置がウォーターハザードから所定距離内であると判定した場合には(ステップS446:YES)、処理をステップS447に進める。一方、打撃検出部281は、打撃が行われた位置がウォーターハザードから所定距離内ではないと判定した場合には(ステップS446:NO)、処理をステップS452に進める。
ステップS447において、打撃検出部281は、特性情報[GS−1]と、飛距離学習処理により決定された回帰式に基づいて、GS−1打目のボールの飛距離を推定する。次いで、打撃検出部281は、推定されたボールの飛距離が、位置[GS−1]からボールがウォーターハザードに入る距離であるか否かを判定する(ステップS448)。打撃検出部281は、推定されたボールの飛距離がウォーターハザードに入る距離であると判定した場合には(ステップS448:YES)、処理をステップS449に進める。一方、打撃検出部281は、推定されたボールの飛距離がウォーターハザードに入る距離ではないと判定した場合には(ステップS448:NO)、処理をステップS452に進める。
ステップS449において、打撃検出部281は、ボールがウォーターハザードに入った可能性があることを示すアラート情報を出力して、ボールがウォーターハザードに入ったことを肯定するか否かの選択をユーザから受け付ける。次いで、打撃検出部281は、ユーザにより肯定が選択されたか否かを判定する(ステップS450)。打撃検出部281は、肯定が選択されたと判定した場合には(ステップS450:YES)、処理をS451に進める。ステップS451において、打撃検出部281は、ペナルティ打数[GS−1]を1に設定して、ペナルティ判定処理を終了させる。一方、打撃検出部281は、肯定が選択されなかったと判定した場合には(ステップS450:NO)、処理をS452に進める。
ステップS452において、打撃検出部281は、ペナルティ打数[GS−1]を0に設定して、ペナルティ判定処理を終了させる。
図24は、本実施形態に係るユーザ端末2のシステム制御部28による打数確定処理の一例を示すフローチャートである。図24において、図9と同様の処理については同様の符号が付されている。
図24に示すように、第1実施形態の場合と同様に、ステップS141及びS142が実行される。次いで、打数確定部285は、ペナルティ打数[打撃番号[h]]〜ペナルティ打数[打撃番号[h+1]−1]の合計を計算する。そして、計算した合計を打数[h]に加算して、打数[h]を調整する。次いで、第1実施形態の場合と同様に、ステップS143〜S148が実行される。
以上説明したように、本実施形態によれば、システム制御部28が、ユーザがボールを打撃した位置を示す位置情報を取得する。また、システム制御部28が、取得された位置情報に基づいて、ペナルティが課されるイベントが発生した可能性を判定する。また、システム制御部28が、この判定に基づいて、打数を調整する。従って、ホールごとの打数を、適切な打数に確定することができる。
また、システム制御部28が、ホールのレイアウトを示すレイアウト情報を取得してもよい。また、システム制御部28が、取得された位置情報及びレイアウト情報に基づいて、イベントが発生した可能性を判定してもよい。この場合、ペナルティが課されるイベントが発生した可能性を適切に推定することができる。
また、システム制御部28が、取得された打撃の特性に基づいて、打撃によるボールの飛距離を推定してもよい。また、システム制御部28が、取得されたレイアウト情報及び位置情報と、推定された飛距離とに基づいて、対象エリアにボールが入った可能性を判定してもよい。この場合、このようなエリアにボールが入ることによりペナルティが課されるイベントが発生した可能性をより適切に推定することができる。
また、システム制御部28が、検出された打撃ごとに、取得された位置情報に基づいて、その打撃が行われた位置から次の打撃が行われた位置までの距離をボールの飛距離と仮定して計算し、その計算された飛距離に基づいて、特性情報とボールの飛距離との関係を学習してもよい。また、システム制御部28が、取得された打撃の特性、及び学習された関係に基づいて、飛距離を推定してもよい。この場合、ボールの飛距離を適切に推定することができる。
[5.第5実施形態]
[5−1.システム制御部の機能概要]
次に、図25を用いて、第5実施形態におけるユーザ端末2のシステム制御部28の機能概要について説明する。
[5−1−1.打撃の威力の変化の学習]
学習部286は、特性取得部283により取得された特性情報と、各ホールの打数が確定されたこととに基づいて、ユーザによる打撃の威力の変化を学習する。学習される打撃の威力の変化は、ティーショット及びホールアウト時の打撃を少なくとも含む複数の連続した打撃における威力の変化である。本実施形態が第2実施形態と異なる点は、本実施形態の学習部286が、ホールアウト時の打撃から次のホールのティーショットへの打撃の威力の変化を学習することである。ユーザによって、ホールアウト時の打撃の威力及びティーショットの打撃の威力の少なくとも何れか一方に何らかの傾向がある場合がある。学習部286は、このような傾向を学習する。
各ホールの打数が確定されることによって、各ホールのティーショット及びホールアウト時の打撃のそれぞれの威力が特定される。学習部286は、各ホールについて、ホールアウト時の打撃の威力と次のホールのティーショットの威力とを取得する。
学習部286は、打撃の威力の変化の出現確率を示す打撃威力変化モデルを学習結果として生成してもよい。本実施形態における打撃威力変化モデルは、例えば打撃の威力の変化それぞれの出現確率を示すリスト情報であってもよい。学習部286は、ホールアウト時の打撃から次のホールのティーショットで或る威力の変化が現れた回数を、ユーザがホールアウトした後に次のホールでティーショットを行った回数(すなわち、ユーザがゴルフをプレーしたホールのうち、最初にプレーが行われたホールを除くホールの数)で除算することにより、その打撃の変化の出現確率を計算する。学習部286は、クラスタリングにより、近い打撃の威力の変化同士をグループ化して、グループごとに、その出現確率を計算することが望ましい。打撃威力変化モデルに記憶される打撃の威力の変化は、ホールアウト時の打撃から次のホールのティーショットへの威力の上昇程度であってもよいし、ホールアウト時の打撃の威力と次のホールのティーショットの威力との組み合わせであってもよいし、その両方であってもよい。
あるいは、学習部286は、分類器を用いて打撃の威力の変化を学習してもよい。分類器の例として、単純ベイズ分類器が挙げられる。例えば、学習部286は、ホールアウト時の打撃から次のホールのティーショットへの打撃の威力の変化を、ユーザがホールアウトした場合の打撃の威力の変化として学習してもよい。また、学習部286は、他の打撃間における威力の変化を、ユーザがホールアウトしなかった場合の打撃の威力の変化として学習してもよい。この場合、二項分類となる。
ユーザがゴルフをプレーした各ホールの規定打数を特定可能である場合、学習部286は、規定打数に応じて打撃の威力の変化を学習してもよい。その理由は、特にティーショットの打撃の威力は、規定打数に応じて変わる可能性があるからである。例えば、学習部286は、ショートホール、ミドルホール及びロングホールのそれぞれについて打撃の威力の変化を学習してもよい。学習部286は、ミドルホール及びロングホールについては、まとめて打撃の威力の変化を学習してもよい。その理由は、ミドルホール及びロングホールにおいては、ティーショットの威力に差異がない場合があるからである。学習部286は、ホールアウト時の打撃から次のホールのティーショットへの打撃の威力の変化を、次のホールの規定打数に対応した打撃の威力の変化として学習する。
[5−1−2.ホールアウトの推定]
ホールアウト推定部284は、学習部286による打撃の威力の変化の学習結果と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とを比較し、この比較に基づいて、ユーザがホールアウトしたことを推定する。本実施形態が第2実施形態と異なる点は、本実施形態のホールアウト推定部284は、或る打撃から次の打撃までの打撃の威力の変化の出現確率が所定値以上である場合、その或る打撃でユーザがホールアウトしたと推定することである。これにより、ユーザによっては打数にばらつきがある場合であっても、ユーザがホールアウトしたことを適切に推定することができる。規定打数に応じて打撃威力変化モデルが複数生成されている場合、ホールアウト推定部284は、ユーザがゴルフをプレーしたホールの規定打数に対応する打撃威力変化モデルを用いて出現確率を取得する。なお、ホールアウト推定部284は、分類器を用いて推定を行ってもよい。具体的に、ホールアウト推定部284は、或る打撃から次の打撃までの打撃の威力の変化が、ユーザがホールアウトした場合の打撃の威力の変化であると分類器を用いて判定した場合、その或る打撃でユーザがホールアウトしたと推定する。
図25は、実際の打撃の威力の変化の一例を示す図である。図25に示すように、全ホールを通した第1打から第3打までの間の打撃の威力は低下している。次いで、第3打から第4打の間で打撃の威力が上昇している(変化601)。第4打から第7打までの間、打撃の威力は次第に低下している。次いで、第7打から第8打の間で打撃の威力が上昇している(変化602)。例えば、第3打目において、樹木等の障害物を避けてボールをフェアウェイに出すため、ユーザは比較的低い威力でボールを打撃した。第4打目において、ユーザは比較的高い威力でボールを打撃した。そのため、変化601が示す打撃の威力の上昇の程度が小さい。このような場合、打撃威力変化モデルにおいて、変化601の出現確率は所定値よりも低い蓋然性がある。或いは、第2ホールがロングホールであって、ショートホールにおける変化601の出現確率は所定値よりも高いが、ロングホールにおける変化601の出現確率は所定値よりも低い。一方、変化602の出現確率は所定値よりも高い。従って、ホールアウト推定部284は、第3打目ではユーザがホールアウトしたとは推定せず、第7打目でユーザがホールアウトしたと推定する。
[5−2.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図26及び図27を用いて説明する。なお、打数計算処理、打数カウント処理及び打数確定処理は、第1実施形態の場合と同様である。
図26は、本実施形態に係るユーザ端末2のシステム制御部28による打撃威力変化学習処理の一例を示すフローチャートである。例えば、打数確定処理が終了した後、又は定期的に、打撃威力変化学習処理が実行される。
図26に示すように、学習部286は、記憶部22に記憶された、これまでユーザがゴルフをプレーした全コースの全ホールの特性情報のうち、確定した打数に基づいて、規定打数が3であるホールのティーショットの特性情報と、このホールの直前のホールの最終の打撃の特性情報とを取得する。学習部286は、取得された特性情報を用いて、規定打数が3に対応する打撃威力変化モデルを生成して記憶部22に記憶させる(ステップS501)。打撃威力変化モデルの生成方法は、5−1−1節にて詳述してある。
次いで、学習部286は、これまでユーザがゴルフをプレーした全コースの全ホールの特性情報のうち、確定した打数に基づいて、規定打数が4及び5の何れかであるホールのティーショットの特性情報と、このホールの直前のホールの最終の打撃の特性情報とを取得する。学習部286は、取得された特性情報を用いて、規定打数が4及び5の両方に対応する打撃威力変化モデルを生成して記憶部22に記憶させて(ステップS502)、打撃威力変化学習処理を終了させる。
図27は、本実施形態に係るユーザ端末2のシステム制御部28によるホールアウト推定処理の一例を示すフローチャートである。図27において、図8と同様の処理については同様の符号が付されている。
図27に示すように、ホールアウト推定部284は、ティーショットの打撃番号のリストに1を追加する(ステップS121)。次いで、ホールアウト推定部284は、ホール番号hを1に設定し(ステップS521)、打撃番号iを2に設定する(ステップS122)。次いで、ホールアウト推定部284は、特性情報[i−1]及び特性情報[i]に基づいて、i−1番目の打撃からi番目の打撃への威力の変化を取得する(ステップS123)。
次いで、ホールアウト推定部284は、第hホールの規定打数を取得する。そして、ホールアウト推定部284は、取得した規定打数に対応する打撃威力変化モデルを記憶部22から取得する(ステップS522)。次いで、ホールアウト推定部284は、この打撃威力変化モデルから、ステップS123で取得された打撃の威力の変化の出現確率を取得する。そして、ホールアウト推定部284は、取得された出現確率が所定の出現確率閾値以上であるか否かを判定する(ステップS523)。ホールアウト推定部284は、出現確率が出現確率閾値以上であると判定した場合には(ステップS523:YES)、処理をステップS125に進める。ステップS125において、ホールアウト推定部284は、リストに打撃番号iを追加する。次いで、ホールアウト推定部284は、ホール番号hを1増加させて(ステップ524)、処理をステップS126に進める。一方、ホールアウト推定部284は、出現確率が出現確率閾値以上ではないと判定した場合には(ステップS523:NO)、処理をステップS126に進める。
ステップS126において、ホールアウト推定部284は、打撃番号iが総打数GS未満であるか否かを判定する。 ホールアウト推定部284は、打撃番号iが総打数GS未満であると判定した場合には(ステップS126:YES)、処理をステップS127に進める。ステップS127において、ホールアウト推定部284は、打撃番号iを1増加させて、処理をステップS123に進める。一方、ホールアウト推定部284は、ホールアウト推定処理を終了させる。この後に、ユーザがリストに対して手作業でティーショットの打撃番号の削除及び追加することが可能なように、ゴルフスコア管理システムSが機能してもよい。
以上説明したように、本実施形態によれば、システム制御部28が、各ホールの最終の打撃から次のホールのティーショットまでの打撃の威力を学習する。また、システム制御部28が、打撃の威力の変化の学習結果と、取得された特性の時系列から特定される打撃の威力の変化とに基づいて、ユーザがホールアウトしたことを推定する。従って、ユーザの打撃の威力の変化の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。特に、ユーザによっては打数にばらつきがある場合であっても、ユーザがホールアウトしたことを適切に推定することができる。
[6.第6実施形態]
[6−1.システム制御部の機能概要]
次に、図28を用いて、第6実施形態におけるユーザ端末2のシステム制御部28の機能概要について説明する。
[6−1−1.打撃の威力の変化の学習]
打撃検出部281は、第3実施形態の場合と同様に、検出された打撃に用いられたクラブの種類を識別する。
学習部286は、打撃検出部281により識別されたクラブ種別と、各ホールの打数が確定されたこととに基づいて、ユーザに使用されるクラブの種類の変化を学習する。学習されるクラブの種類の変化は、ティーショット及びホールアウト時の打撃を少なくとも含む複数の連続した打撃において使用されたクラブの種類の変化である。本実施形態が第3実施形態と異なる点は、本実施形態の学習部286が、ホールアウト時の打撃から次のホールのティーショットへの打撃までに使用されたクラブの種類の変化を学習することである。ユーザによって、ホールアウト時に使用されるクラブの種類及びティーショットに使用されるクラブの種類の少なくとも何れか一方に何らかの傾向がある場合がある。学習部286は、このような傾向を学習する。
各ホールの打数が確定されることによって、各ホールのティーショット及びホールアウト時の打撃のそれぞれで使用されたクラブの種類が特定される。学習部286は、各ホールについて、最終の打撃及び次のホールのティーショットのそれぞれで使用されたクラブの種類を取得する。
学習部286は、クラブの種類の変化の出現確率を示すクラブ種別変化モデルを学習結果として生成してもよい。本実施形態におけるクラブ種別変化モデルは、例えばクラブの種類の変化それぞれの出現確率を示すリスト情報であってもよい。学習部286は、ホールアウト時の打撃から次のホールのティーショットで或るクラブの種類の変化が現れた回数を、ユーザがホールアウトした後に次のホールでティーショットを行った回数で除算することにより、そのクラブの種類の変化の出現確率を計算する。クラブ種別変化モデルに記憶されるクラブの種類の変化は、ホールアウト時の打撃で使用されたクラブの種類と、次のホールのティーショットで使用されたクラブの種類との組み合わせである。
あるいは、学習部286は、分類器を用いて、使用されたクラブの種類の変化を学習してもよい。分類器の例として、単純ベイズ分類器が挙げられる。例えば、学習部286は、ホールアウト時の打撃から次のホールのティーショットまでに使用されたクラブの種類の変化を、ユーザがホールアウトした場合に使用された使用されたクラブの種類の変化として学習してもよい。また、学習部286は、他の打撃間において使用されたクラブの種類の変化を、ユーザがホールアウトしなかった場合に使用されたクラブの種類の変化として学習してもよい。この場合、二項分類となる。
ユーザがゴルフをプレーした各ホールの規定打数を特定可能である場合、学習部286は、規定打数に応じてクラブの種類の変化を学習してもよい。その理由は、特にティーショットで使用されるクラブの種類は、規定打数に応じて変わる可能性があるからである。例えば、学習部286は、ショートホール、ミドルホール及びロングホールのそれぞれについてクラブの種類の変化を学習してもよい。学習部286は、ミドルホール及びロングホールについては、まとめてクラブの種類の変化を学習してもよい。その理由は、ミドルホール及びロングホールにおいては、ティーショットで使用されるクラブの種類に差異がない場合があるからである。学習部286は、ホールアウト時の打撃から次のホールのティーショットへのクラブの種類の変化を、次のホールの規定打数に対応したクラブの種類の変化として学習する。
[6−1−2.ホールアウトの推定]
ホールアウト推定部284は、学習部286によるクラブの種類の変化の学習結果と、打撃検出部281により識別されたクラブの種類の時系列から特定される、使用されるクラブの種類の変化と、特性取得部283により取得された特性情報の時系列から特定される打撃の威力の変化とに基づいて、プレーヤーがホールアウトしたことを推定する。打撃の威力の変化に基づいて、プレーヤーがホールアウトしたことを推定する方法は、第1実施形態で説明された方法、第2実施形態で説明された方法、及び第5実施形態で説明された方法の何れであってもよい。本実施形態が第3実施形態と異なる点は、ホールアウト推定部284は、打撃の威力の変化に基づく推定結果を修正するとき、ホールアウト時の打撃から次のホールのティーショットまでに使用されたクラブの種類の出現確率に基づいて、何打目でホールアウトしたかを修正する。これにより、ユーザによっては打数にばらつきがある場合であっても、ユーザがホールアウトしたことを適切に推定することができる。規定打数に応じて打撃威力変化モデルが複数生成されている場合、ホールアウト推定部284は、ユーザがゴルフをプレーしたホールの規定打数に対応する打撃威力変化モデルを用いて出現確率を取得する。なお、ホールアウト推定部284は、分類器を用いて推定結果を修正してもよい。
ユーザがホールアウトしたと推定された仮のホール数が実際にユーザがゴルフをプレーしたホール数よりも少ない場合、例えば、ホールアウト推定部284は、各ホールについて、ユーザがホールアウトしたと仮に推定される打撃が何打目の打撃であるかに基づいて、そのホールにおけるクラブの種類の変化を取得する。次いで、ホールアウト推定部284は、そのホール内の連続する2つの打撃で使用されたクラブの種類の変化が、ホールアウト時の打撃から次のホールのティーショットまでに出現する確率を、クラブ種類変化モデルから取得する。ホールアウト推定部284は、出現確率が所定値以上である場合、その連続する2つの打撃のうち前の方の打撃でユーザがホールアウトしたと推定してもよい。そして、ホールアウト推定部284は、その連続する2つの打撃のうち後の方の打撃が次のホールのティーショットであると推定してもよい。こうして、ユーザは、1つのホールでのゴルフのプレーを、2つのホールでのゴルフのプレーに分割する。分類器の場合、ホールアウト推定部284は、連続する2つの打撃で使用されたクラブの種類の変化が、ユーザがホールアウトした場合に使用されたクラブの種類の変化であると分類器を用いて判定した場合、その連続する2つの打撃のうち前の方の打撃でユーザがホールアウトしたと推定してもよい。
ユーザがホールアウトしたと推定された仮のホール数が実際にユーザがゴルフをプレーしたホール数よりも多い場合、例えば、ホールアウト推定部284は、各ホールについて、ユーザがホールアウトしたと仮に推定される打撃が何打目の打撃であるかに基づいて、ホールアウト時の打撃から次のホールのティーショットまでに使用されたクラブの種類の変化の出現確率を、クラブ種類変化モデルから取得する。ホールアウト推定部284は、出現確率が所定値未満であるホールを、対象のホールとして特定する。ホールアウト推定部284は、対象のホールの次のホールについて打撃の威力の変化に基づいてユーザがホールアウトしたと仮に推定された打撃を、対象のホールでユーザがホールアウトしたと推定する。こうして、ユーザは、2つのホールでのゴルフのプレーを、1つのホールでのゴルフのプレーに統合する。分類器の場合、ホールアウト推定部284は、使用されたクラブの種類の変化が、ユーザがホールアウトした場合に使用されたクラブの種類の変化ではないと分類器を用いて判定したホールを、対象のホールとして特定してもよい。
図28は、実際の打撃の威力の変化、使用されたクラブの種類の変化、及びクラブ種別変化モデルが示す打撃のクラブの種類の変化の一例を示す図である。図28に示すように、全ホールを通した第1打から第3打までの間の打撃の威力は低下している。次いで、第3打から第4打の間で打撃の威力が上昇している(変化701)。第4打から第6打までの間、打撃の威力は次第に低下している。次いで、第6打から第7打の間で打撃の威力が上昇している(変化702)。変化701が示す打撃の威力の上昇の程度が小さかったため、ホールアウト推定部284は、変化701に基づいては第3打目でユーザがホールアウトしたとは推定しなかった。一方、ホールアウト推定部284は、変化702に基づいて、第6打目でユーザがホールアウトしたと推定した。また、実際にユーザは9ホールプレーしたが、打撃の威力の変化に基づいてホールアウトが推定されたホールは8ホールであった。1打目から7打目までの打撃に使用されたクラブは、それぞれ1番ウッド、3番アイアン、サウンドウェッジ、5番アイアン、7番アイアン、パター、1番ウッドである。1番ウッドと3番アイアンとの組み合わせ、3番アイアンとサウンドウェッジの組み合わせ、5番アイアンと7番アイアンとの組み合わせ、及び7番アイアンとパターとの組み合わせが、ホールアウト時の打撃から次のホールのティーショットで出現する確率が所定値未満であった。一方、サウンドウェッジと5番アイアンとの組み合わせが出現する確率が所定値以上であった。従って、ホールアウト推定部284は、第1ホールについてユーザは第3打でホールアウトしたと推定し、第2ホールについてユーザは第6打でホールアウトしたと推定する。
[6−2.情報処理システムの動作]
次に、ゴルフスコア管理システムSの動作について、図29及び図30を用いて説明する。なお、打数計算処理及び打数確定処理は、第1実施形態の場合と同様であり、打数カウント処理は及びホールアウト推定処理は、第2実施形態の場合と同様である。
図29は、本実施形態に係るユーザ端末2のシステム制御部28によるクラブ種別変化学習処理の一例を示すフローチャートである。例えば、打数確定処理が終了した後、又は定期的に、クラブ種別変化学習処理が実行される。
図29に示すように、学習部286は、記憶部22に記憶された、これまでユーザがゴルフをプレーした全コースの全ホールのクラブ種別のうち、確定した打数に基づいて、規定打数が3であるホールのティーショットのクラブ種別と、このホールの直前のホールの最終の打撃のクラブ種別とを取得する。学習部286は、取得されたクラブ種別を用いて、規定打数が3に対応する打撃威力変化モデルを生成して記憶部22に記憶させる(ステップS601)。打撃威力変化モデルの生成方法は、6−1−1節にて詳述してある。
次いで、学習部286は、記憶部22に記憶された、これまでユーザがゴルフをプレーした全コースの全ホールのクラブ種別のうち、確定した打数に基づいて、規定打数が4及び5の何れかであるホールのティーショットのクラブ種別と、このホールの直前のホールの最終の打撃のクラブ種別とを取得する。学習部286は、取得されたクラブ種別を用いて、規定打数が4及び5の両方に対応する打撃威力変化モデルを生成して記憶部22に記憶させて(ステップS602)、クラブ種別変化学習処理を終了させる。
図30は、本実施形態に係るユーザ端末2のシステム制御部28によるティーショット打撃番号修正処理の一例を示すフローチャートである。図30に示すように、ホールアウト推定部284は、ホール番号を2に設定する(ステップS621)。次いで、ホールアウト推定部284は、第hホールの規定打数を取得する。そして、ホールアウト推定部284は、取得された規定打数に対応するクラブ種別変化モデルを取得する(ステップS622)。次いで、ホールアウト推定部284は、ティーショットの打撃番号のリストに追加された打撃番号の数が、ユーザがゴルフをプレーしたホール数よりも少ないか否かを判定する(ステップS623)。ホールアウト推定部284は、打撃番号の数がホール数よりも少ないと判定した場合には(ステップS623:YES)、処理をステップS624に進める。一方、ホールアウト推定部284は、打撃番号の数がホール数よりも少なくはないと判定した場合には(ステップS623:NO)、処理をステップS631に進める。
ステップS624において、ホールアウト推定部284は、打撃番号NHを、打撃番号[h−1]+1から打撃番号[h]−1までの範囲で変化させながら、打撃番号NH−1から打撃番号NHまでの打撃で使用されたクラブの種類の変化の出現確率を、ステップS622で取得されたクラブ種別変化モデルから取得する。そして、ホールアウト推定部284は、取得された出現確率を最大化する打撃番号NHを決定する。次いで、ホールアウト推定部284は、最大化された出現確率が、所定の閾値以上であるか否かを判定する(ステップS625)。ホールアウト推定部284は、出現確率が閾値以上ではないと判定した場合には(ステップS625:NO)、処理をステップS636に進める。一方、ホールアウト推定部284は、出現確率が閾値以上であると判定した場合には(ステップS625:YES)、処理をステップS626に進める。
ステップS626において、ホールアウト推定部284は、第h+1ホールの規定打数を取得する。そして、ホールアウト推定部284は、取得された規定打数に対応するクラブ種別変化モデルを取得する。次いで、ホールアウト推定部284は、打撃番号[h]−1から打撃番号[h]までの打撃で使用されたクラブの種類の変化の出現確率を、ステップS626で取得されたクラブ種別変化モデルから取得する(ステップS627)。次いで、ホールアウト推定部284は、取得された出現確率が、所定の閾値以上であるか否かを判定する(ステップS628)。ホールアウト推定部284は、出現確率が閾値以上ではないと判定した場合には(ステップS628:NO)、処理をステップS636に進める。一方、ホールアウト推定部284は、出現確率が閾値以上であると判定した場合には(ステップS628:YES)、処理をステップS629に進める。
ステップS629において、ホールアウト推定部284は、打撃番号NHを、ティーショットの打撃番号のリストに追加する。次いで、ホールアウト推定部284は、ホール番号hを1増加させて(ステップS630)、処理をステップS636に進める。なお、ユーザがゴルフをプレーした最終のホールが第hホールである場合、ホールアウト推定部284は、ステップS625で出現確率が閾値以上であると判定した場合には、ステップS626〜S628を省略して、ステップS629及びS630を実行する。
ステップS631において、ホールアウト推定部284は、打撃番号[h]−1から打撃番号[h]までの打撃で使用されたクラブの種類の変化の出現確率を、ステップS622で取得されたクラブ種別変化モデルから取得する。次いで、ホールアウト推定部284は、取得された出現確率が、所定の閾値以上であるか否かを判定する(ステップS632)。ホールアウト推定部284は、出現確率が閾値以上であると判定した場合には(ステップS632:YES)、処理をステップS636に進める。一方、ホールアウト推定部284は、出現確率が閾値以上ではないと判定した場合には(ステップS632:NO)、処理をステップS633に進める。
ステップS633において、ホールアウト推定部284は、打撃番号[h+1]−1から打撃番号[h+1]まで(すなわち、第hホールのホールアウト時の打撃と仮定される打撃から、第h+1ホールのティーショットと仮定される打撃まで)の打撃で使用されたクラブの種類の変化の出現確率を、ステップS622で取得されたクラブ種別変化モデルから取得する。次いで、ホールアウト推定部284は、取得された出現確率が、所定の閾値以上であるか否かを判定する(ステップS634)。ホールアウト推定部284は、出現確率が閾値以上ではないと判定した場合には(ステップS634:NO)、処理をステップS636に進める。一方、ホールアウト推定部284は、出現確率が閾値以上であると判定した場合には(ステップS634:YES)、処理をステップS635に進める。ステップS635において、ホールアウト推定部284は、打撃番号[h]をティーショットの打撃番号のリストから削除して、処理をステップS636に進める。なお、ティーショットの打撃番号のリストに打撃番号[h+1]が存在しない場合、ホールアウト推定部284は、ステップS632において出現確率が閾値以上ではないと判定した場合には、ステップS633及びS634を省略して、ステップS635を実行してもよい。
ステップS636において、ホールアウト推定部284は、ホール番号hが、ティーショットの打撃番号のリストに含まれる打撃番号の数未満であるか否かを判定する。ホールアウト推定部284は、ホール番号hが打撃番号の数未満であると判定した場合には(ステップS636:YES)、処理をステップS637に進める。ステップS637において、ホールアウト推定部284は、ホール番号hを1増加させて、処理をステップS622に進める。一方、ホールアウト推定部284は、ホール番号hが打撃番号の数未満ではないと判定した場合には(ステップS636:NO)、処理をステップS638に進める。
ステップS638において、ホールアウト推定部284は、リストに含まれる打撃番号の数が、ユーザがゴルフをプレーしたホール数と一致するか否かを判定する。ホールアウト推定部284は、打撃番号の数がホール数と一致しないと判定した場合には(ステップS638:NO)、処理をステップS621に進める。なお、この判定によりステップS622〜S635を再実行する場合、ホールアウト推定部284は、例えば閾値を変更してもよい。一方、ホールアウト推定部284は、打撃番号の数がホール数と一致すると判定した場合には(ステップS638:YES)、ティーショット打撃番号修正処理を終了させる。
以上説明したように、本実施形態によれば、システム制御部28が、各ホールの最終の打撃から次のホールのティーショットまでに使用されたクラブの種類の変化を学習する。また、システム制御部28が、クラブの種類の変化の学習結果と、識別されたクラブの種類の時系列から特定される、使用されるクラブの種類の変化と、取得された特性情報の時系列から特定される打撃の威力の変化とに基づいて、プレーヤーがホールアウトしたことを推定する。従って、ユーザが使用するクラブの種類の傾向に応じて、ユーザがホールアウトしたことを適切に推定することができる。特に、ユーザによっては打数にばらつきがある場合であっても、ユーザがホールアウトしたことを適切に推定することができる。