(58)【調査した分野】(Int.Cl.,DB名)
前記移動データ解析部は、前記複数の移動データのそれぞれについて、複数の位置で得られる速度のそれぞれを全区間の速度で除算して得られる複数の正規化速度を解析した結果に基づいて、前記特定の経路を移動する際の速度を解析する、請求項2に記載の情報処理装置。
前記移動データ解析部は、前記特定の経路上の任意の位置と近接する位置で得られた前記正規化速度に基づいて、前記特定の経路の前記任意の位置を移動する際の速度を解析する、請求項3に記載の情報処理装置。
前記移動データ解析部は、前記特定の経路上の任意の位置の速度と同じ方向の前記正規化速度に基づいて、前記特定の経路の前記任意の位置を移動する際の速度を解析する、請求項4に記載の情報処理装置。
前記チェックポイント設定部は、分割により得られた各区間のうち移動平均の変化が大きい1又は複数の区間を選択して、選択した各区間に前記チェックポイントを設定する、請求項7に記載の情報処理装置。
移動に伴う位置情報及び当該位置情報が取得された時刻から構成される複数の移動データを取得する移動データ取得部と、前記複数の移動データに基づいて、特定の経路を移動する際の速度を解析する移動データ解析部と、前記速度の解析結果に基づいて、前記特定の経路を分割する経路分割部と、分割された前記特定の経路に計時のためのチェックポイントを設定するチェックポイント設定部と、前記チェックポイントの情報を送信する送信部と、を備える、情報処理装置と、
移動に伴う位置情報を取得する位置情報取得部と、前記位置情報及び前記位置情報が取得された時刻から構成される移動データを前記情報処理装置へ送信する送信部と、前記情報処理装置が送信した前記チェックポイントの情報を受信する受信部と、を有するモバイル機器と、
を備える、情報処理システム。
【発明を実施するための形態】
【0022】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0023】
なお、説明は以下の順序で行うものとする。
1.システムの全体構成例
2.システムで行われる処理の概要
3.自動チェックポイント配置機能
4.サーバーで行われる処理の具体例
5.本実施形態に係るシステムの構成例
6.既に設定されたチェックポイントに基づいてチェックポイントを設定する例
【0024】
[1.システムの全体構成例]
まず、
図1を参照して、本開示の一実施形態に係るシステムの概略構成について説明する。
図1に示すように、本実施形態に係るシステムは、ランニング中のユーザーのランデータを計測し、インタラクションするモバイル端末100、ランデータと地図情報からレース用のコースを作成するためのパーソナルコンピュータ(PC)200、複数ユーザーのランデータ、レース記録などを管理するクラウドのサーバー300から構成される。なお、PC200は、タブレット端末などの機器であっても良い。
【0025】
モバイル端末100は、一例としてアームバンド等で腕に固定できるスマートフォンである。モバイル端末100は、ユーザーがモバイル端末100を腕に装着してランニングを行うことで、ランニング経路に沿った位置情報と、位置情報に対応する時刻を取得することができる。モバイル端末100は、液晶表示装置(LCD)及びタッチパネルなどのユーザーインターフェース(UI)機能、GPS機能、音声(オーディオ)出力機能、ネットワーク400に接続する機能を備え、サーバー300に対してインターネット400などのネットワーク400を介して通信可能である。ユーザは、モバイル端末100のUI機能を使用して、液晶表示装置の画面を見ながらタッチパネル操作して画面上の表示内容をポインティング可能である。また、モバイル端末100は、サーバー300が認識できる特定のユーザーのアカウント情報(ユーザーIDとパスワード)を格納する。
【0026】
情報処理装置200は、液晶表示装置(LCD)及びマウスまたはタッチパネルなどUI機能を備える。ユーザは、情報処理装置200のUI機能を使用して、LCDの画面を見ながらマウスまたはタッチパネルで画面上の表示内容をポインティング可能である。情報処理装置200は、ネットワーク400を介してサーバー300と通信可能である。情報処理装置200は、地図とランデータを測定したコースを液晶表示装置(LCD)の表示画面に表示し、チェックポイントを設定することで、レース用のコースを編集、設定できる。
【0027】
サーバー300は、データベースと、データベースにアクセスする機能を提供する。データベースは、ユーザー情報、ユーザーのランデータ、ユーザーが作成したコースとレースの情報、レース記録、などのデータをモバイル端末100、情報処理装置200から受信し、永続的に記録する。また、サーバー300は、これらのデバイスからの問い合わせに応答することで、データを送信する。
【0028】
[2.システムで行われる処理の概要]
次に、ランデータ取得について説明する。ユーザーはモバイル端末100を装着し、ランニングする。以下の説明において、
図2、
図4〜
図12は、モバイル端末100のLCDの表示画面の遷移を示している。
図2に示すように、ランニングの前に、ユーザーはモバイル端末100のUIで「ランデータの計測」ボタン→「計測開始」ボタンを押し、ランニングを開始する。ユーザーがランニング中、モバイル端末100は、GPSにより一定時間間隔で測位して、ランデータを取得する。
【0029】
ランデータは、
図3に示すように、時刻と位置をペアとするデータの配列である。ランニング中、モバイル端末100のUIはランデータを「ランニング開始から現在地までの軌跡(ランニング軌跡)」として地図上に表示する。さらに、計測開始地点(スタートポイント)から現在地までのランニング軌跡の距離と時間を表示する。また、地図上で現在地を表示するときには、GPSの信号強度を表示する。ユーザーは、ランニング中いつでも、モバイル端末100のUIで「計測終了」ボタンを押して、ランニングを終了することができる。ランニングを終了すると、モバイル端末100、測定したランデータをユーザーIDと関連付け、サーバー300にアップロードし、保存する。
【0030】
次に、コース設定とレース公開について説明する。ユーザーは、情報処理装置200(ランデータ取得に使用したモバイル端末100であってもよい)を使い、サーバー300にログインして、地図とランデータを測定したコースを表示し、コース上にチェックポイントを設定することで、レース用のコースを編集し、他のユーザーに公開することができる。
【0031】
図4に示すように、ユーザーは、情報処理装置200のUIで「コースの設定」ボタンを押し、サーバー300に保存されている、自身がランニングした際に計測したランデータのリストから、ランデータを選択する。ランデータのリストの要素には、ランニングの日時、走行距離、走行時間などが表示される。ユーザーがランデータを決定すると、情報処理装置200は、ランデータに対応する地図を表示し、さらに地図上にランニング軌跡をオーバレイ表示する。ランデータの開始地点と終了地点には、スタートポイント(S)とゴールポイント(G)のアイコンをそれぞれ表示する。さらに、後述するチェックポイントの設定を完了したときに押す「完了」ボタンを表示する。
【0032】
具体的には、サーバー300は、ユーザーIDに関連付けられたランデータIDのリストを返すAPIを提供する。また、サーバー300は、ランデータIDからそのランデータと、その走行距離、日付と時刻などのメタデータを取得するAPIを提供する。これらのAPIを使用することで、情報処理装置200は、上記の表示に必要なデータを取得する。
【0033】
図5に示すように、ユーザーはこの表示にチェックポイントのアイコンを配置、編集することで、コースにチェックポイントを設定する。ランニング軌跡上をタップすることで、チェックポイントを配置できる。チェックポイントは、ランデータの軌跡上に乗るようにしか配置できない。このとき、後述する自動チェックポイント配置機能を利用して初期配置を行い、そのあとに手動でチェックポイントを移動、追加、または削除することができる。また、自動チェックポイント配置機能を用いずに、手動のみでチェックポイントを設定しても良い。配置されたチェックポイントは、軌跡上でスタートポイントから近い順に通し番号が割り当てられる。チェックポイントをN個設定した場合、個々のチェックポイントをスタートポイントから近い順にCP#k(k=1, 2, ..., N)と表現する。また、スタートポイントとCP#1の間をコースの第1区間、CP#1とCP#2の間を第2区間、...として表現する。最終区間は第(N+1)区間となる。
【0034】
図6に示すように、ユーザーがUIで「完了」ボタンを押すと、チェックポイント設定が終了する。さらに作成したコースのレース名称を入力し、「公開」ボタンを押す。ランデータID、設定したチェックポイント、レース名称をサーバー300にアップロードし、保存する。情報処理装置200は、UIでユーザーに(ダイアログなどで)新しいレースの作成と公開が成功したことを通知する。サーバー300は、コース作成者以外のユーザーが公開されたレースを参照できるようにする。
【0035】
具体的には、サーバー300は、新規レース作成APIを提供する。ランデータID、 レース名称、チェックポイントの座標の配列を指定することで、新しいレースIDが作成される。個々のレースには、全ユーザーで共有されるコースレコードと、そのレースに参加したことのあるユーザーそれぞれの自己ベストというメタデータが伴う。
【0036】
コースレコードは、コース全体および各区間のランニング時間が最短なランデータから決定されるメタデータであり、関連するランデータIDで決定され、UI上ではランニングの時間、距離、ユーザー名が示される。コースレコードの初期値(コース全体と各区間に要した時間)には、コース作成者がコースの設定に使用したランデータのランデータIDを設定する。
【0037】
自己ベストは、コース全体および各区間のランニング時間が最短なランデータから決定されるメタデータであり、同様に関連するランデータIDで決定され、UI上ではランニングの時間、距離で示される。レースIDとコース作成者のユーザーIDで決定される自己ベストの初期値(コース全体と各区間に要した時間)には、コース作成者がコースの設定に使用したランデータのランデータIDを設定する。
【0038】
次に、ネットワーク400を通じてレースを探すことについて説明する。
図7に示すように、ユーザーはモバイル端末100のUIで「レースを探す」ボタンを押し、公開されているレースの一覧を表示する。リストの要素となる各レースには、レース名称、コースレコードの時間と距離、参加ユーザー数が表示される。レースを選択すると、レースの情報を表示する。レースの情報には、レース名称、コースレコードの時間と距離、参加ユーザー数に加え、コースのスタートポイントとゴールポイント、全チェックポイント、コースレコードのランデータのランニング軌跡を地図上にオーバレイ表示する。また、レースの詳細情報を表示する「詳細」ボタン、レースを開始するため「レース開始」ボタンを表示する。
【0039】
図7でモバイル端末100がレースの情報を表示している状態で、ユーザーが「詳細」ボタンを押すと、
図8に示すように、レースに関する基本情報(参加ユーザー数とコース作成者)、コースレコード、自己ベストが表示される。但し、ユーザーが一度もそのレースを完走したことがない場合は、自己ベストは表示されない。
【0040】
具体的には、サーバー300は、レースIDのリスト取得APIを提供する。レースIDからレース名称、参加ユーザー数、コース作成者、スタートポイント座標、ゴールポイント座標、チェックポイントの座標の配列、コースレコードを取得するAPIを提供する。また、レースIDとユーザIDから、ユーザーのそのレースにおける自己ベストを取得するAPIを提供する。これらのAPIを使用することで、上記処理を実現する。
【0041】
次に、レースの開始と終了について説明する。
図7でモバイル端末100がレースの情報を表示している状態で、ユーザーが「レース開始」ボタンを押すと、
図9に示すように、レース開始の待機画面を表示する。ユーザーはモバイル端末100を装着し、ランニングする。モバイル端末100は、レースのスタートポイントと現在地を地図上に表示し、「スタートポイント到着すると同時にレースを開始する趣旨」を伝えるガイドを表示する。ガイドは表示だけでなく、音声ガイダンスによっても伝えられる(以下同様)。加えて、スタートポイントまでの直線距離、GPSの信号強度を表示する。ユーザーはガイドに従い、スタートポイントに向けて移動することになる。
【0042】
モバイル端末100の現在地がスタートポイントに到達すると、レースが開始される。ここで、現在地がある地点に到達するとは、現在地を中心とした半径rメートルの範囲にその地点が含まれるということを意味する。rは閾値でありGPSの精度によって定まる。モバイル端末100の現在地がスタートポイントに到達すると、
図9に示すように、モバイル端末100は、「スタートポイントに到着したのでレースを開始した趣旨」を伝えるガイドを表示する。
図10に示すように、モバイル端末100は、レース中、ランニングの距離と経過時間を逐次更新して表示する。また、レースを途中棄権するための「リタイア」ボタンを表示する。
【0043】
図10に示すように、レース中、モバイル端末100は一定時間間隔でGPSにより測位して、ランデータを取得する。モバイル端末100は、現在ランニング中の区間の目的地となるポイント(最終区間の場合はゴールポイント、そうでなければチェックポイント)と、そのポイントまでの直線距離を表示する。但し、最終区間以外の区間の目的地に到達した場合は、「その区間の目的地に到達した趣旨」および「その区間の走行時間と走行ペース」を伝えるガイドを一定時間表示したのち、次の区間の表示に更新する。また、スタートポイントから現在地までのランニング軌跡の距離と時間を表示する。加えて、地図上で現在地を表示するときには、GPSの信号強度を表示する。
【0044】
ユーザー区間の目的地に到達して、モバイル端末100が「その区間の走行時間と走行ペース」をガイド表示したとき、走行時間がコースレコードや自己ベストを破る記録であった場合は、追加としてそのことをガイド表示(および音声ガイダンス)で伝えてもよい。
【0045】
レース開始直後、モバイル端末100は、地図上に第1区間(スタートポイントとCP#1を含む)と現在地を表示する。現在地がCP#1に到達すると、上述したガイドを表示したのち、地図上に第2区間(CP#1とCP#2を含む)と現在地を表示する。これらを同様に繰り返し、最終区間を表示している状態で、現在地がゴールポイントに到達すると、
図11に示すように、「ゴールポイントに到着した趣旨」および「最終区間の走行時間と走行ペース」を伝えるガイドを表示して、レースを終了する。その後、「レース全体の走行時間、走行距離、走行ペース」をガイド表示して、「結果」ボタンを表示する。ユーザーが結果ボタンを押すと、デバイスは計測したランデータをユーザーID、レースIDと関連付け、サーバー300にアップロードし、保存する。
【0046】
次に、レース結果の表示について説明する。
図12に示すように、モバイル端末100は、スタートポイントからゴールポイントまでの時間と、ランデータから得られる走行距離をレース結果として表示する。走行時間が以前のコースレコードや自己ベストを上回る結果であった場合は、それを表示する。各区間についても同様の結果を表示する。
【0047】
[3.自動チェックポイント配置機能]
次に、自動チェックポイント配置機能について説明する。本実施形態では、各ユーザーのランデータを統計的に処理することで、坂道、信号の多い通りなどのコース特性を推定する。そして、ユーザーが測定したランデータから得られる(地図上の)ランニング軌跡を、人間にとって意味のある形で自動に分割する。これにより、コースの先頭から機械的に1km毎で分割する、といったコースの分割方法よりも有意義な方法でコースを分割できる。
【0048】
図13は、自動チェックポイント配置機能の概要を説明するための模式図である。
図13に示すように、開始地点1から終了地点2までの経路として、経路A,B,Cの3つのランデータがあるものとする。経路Bのランデータを作成したユーザーがチェックポイントを配置しようとした場合、経路Bは、区間1では経路Aのランデータと重複し、区間2では経路Cのランデータと重複している。このため、区間1では経路Aのランデータも利用して、走者の速度が大きく変化する位置などで経路を分割して最適な位置にチェックポイントを配置することができる。同様に、区間2では経路Cのランデータを利用して最適な位置にチェックポイントを配置することができる。そして、経路A,C以外でも、経路Bと重複する経路を含むランデータが多いほど、有用なチェックポイントを配置することができる。
【0049】
図14(A)は、走者Aが経路4のランデータを有し、走者Bが経路5のランデータを有する場合を示している。この場合、
図14(B)に示すように、走者Aの経路4について正規化速度を求め、走者Bの経路5について正規化速度を求める。
図14(C)に示すように、走者Aの経路4と走者Bの経路5は区間3と区間4で重複している。従って、区間3、区間4については、走者Aと走者Bの正規化速度の統計的平均を求めることにより、区間3、区間4の状況をより正確に推定することができる。例えば、区間3、区間4において、地点4から地点3までの正規化速度の統計的平均が(周辺に比べて)遅くなっている場合、区間3、区間4を通るランデータについては、地点3と地点4で分割し、地点3と地点4にチェックポイントを設定することができる。これにより、走者にとって速度変化が生じる位置で経路を分割してチェックポイントを設定することが可能である。なお、正規化速度については後で詳細に説明する。
図29は、一例として、区間1が平地であり、区間2が上り坂の場合の例を示している。この場合、平地から上り坂に変わる部分の中間を区間の区切り(チェックポイントCP)とする。
【0050】
図15は、以上のようにしてランデータにチェックポイントを自動設定した例を示す模式図である。
図15に示す例では、ランデータAについて、他のランデータを利用して区間5,6,7,8の4つに分割し、チェックポイントCP1,CP2,CP3を設けた例を示している。このように、自動チェックポイント配置機能を用いることにより、最適な位置にチェックポイントを配置することが可能となる。
【0051】
サーバー300には、複数のユーザーのランデータが保存される。これらのランデータを統計的に利用することで、コースの局所的な特性を推定する。例えば、信号の多い通りの区間のペースは、コース全体のペースに比べて遅いペースになる。坂道の場合は、同じ区間でも進行方向によってペースが異なり、上りではペースが遅く、下りではペースが速くなる。また、ペースの速い、遅いは絶対値ではなく、あるユーザーのあるランデータを調べたときに、その中の相対的な比較となる。そのため、統計的にすべてのユーザーのすべてのランデータを処理するためには、ペースを正規化した値を用いる。そして、その推定結果を使い、コースの局所的な特性が切り替わる個所に自動でチェックポイントを設定する。これにより、コースの各区間がユーザーにとって意味のある形で分割されることになる。
【0052】
上述の通り、ランデータは時刻と座標のペアの配列である。あるランデータRを選び、その配列の任意の要素k (k=0,1,...,n-1)を、時間t(k)と座標p(k)のペア、つまり{t(k),p(k)}として表現する。最後の要素k=n-1を除き、{t(k),p(k)}とその次の要素{t(k+1),p(k+1)}から要素kの速度v(k)を求めることができる。
【0053】
ランデータRの全要素について速度v(k)の大きさ(速さ)を求め、平均速さV
ave=Σ|v(k)|/nを計算する。V
aveの大きさが1.0となるように速度v(k)の大きさを正規化したものを正規化速度と呼び、
図16に示すように、Rの全要素について正規化速度u(k)=v(k)/V
aveを求める。このようにして、すべてのユーザーのすべてのランデータで正規化速度を求め、座標p(i)と正規化速度u(i)のペア{p(i),u(i)}の集合をサーバーのデータベース310(
図23参照)に保存しておく。このように、正規化速度に基づいて処理を行うことで、ランナー個々の能力の差の要因を排除した上で、複数のランデータから経路中の適正な速度を求めることができる。
【0054】
[4.サーバーで行われる処理の具体例]
以下では、
図17、
図19、
図20、
図22のフローチャートに基づいて、サーバー300が行う処理について説明する。
図17は、p(i)とu(i)の組{p,u}(i)を求める処理を示すフローチャートである。ランデータは
図3で示したように、「時刻tと座標p」のペアを要素として、それらの要素が時刻順に並んだ配列である。以下では、要素{p(k),t(k)}(k=0,1,…,n-1)を{p,t}(k)として記述する。先ず、ステップS100では、要素{p,t}(k)と、その次の要素{p,t}(k+1)から、速度v(i)(i=0,1,…,n-2)を最後の要素を除く全要素について求める。ここで、v(i)は以下の式から求めることができる。
【0055】
v(i)=(p(i+1)-p(i))/(t(i+1)-t(i))
【0056】
次のステップS101では、全ての速度v(i)の大きさ|v(i)|の平均値Vaveを求める。Vaveは以下の式から求めることができる。
【0057】
Vave=(|v(0)|+|v(1)|+・・・+|v(n-2)|)/(n-1)
【0058】
次のステップS102では、正規化速度u(i)=v(i)/Vaveを求める。この段階で、
図16に示したように、最後の要素を除く各要素の正規化速度が求められる。次のステップS103では、n-1個のp(i)とu(i)の組{p,u}(i)をサーバーのデータベース310に保存する。ステップS03の後は処理を終了する。この結果、
図18(A)に示したように、データベース310には各座標(
図18(A)中に○印で示す)における正規化速度(
図18(A)中に矢印の方向と大きさで示す)の集合が格納される。
【0059】
自動チェックポイント配置機能の対象となるランデータを、ランデータR’とする。
図18(B)に示すように、R’の任意の要素k(すなわち{t(k),p(k)})とu(k)を上記方法で計算し、p(k)の近傍にある、データベース310のデータ{p(i),u(i)}を抽出する。更に、
図18(C)に示すように、p(k)の近傍にある、データベース310のデータ{p(i),u(i)}のうち、u(k)と同一方向のu(i)を複数抽出する。同一方向であるか否かは、内積u(k)・u(i)と適当な閾値を比較することで判定できる。そして、抽出した正規化速度u(i)の大きさの平均値をh(k)として定義する。このh(k)をランデータR’の要素kのレベルと呼ぶ。このようにして、ランデータR’の全要素について、データベース310からそれぞれレベルを求めることができる。
【0060】
以下、
図19のフローチャートに基づいて具体的に説明する。
図19は、要素kのレベルを求める処理を示すフローチャートである。前提条件として、サーバー300のデータベース310には、様々なユーザの全てのランデータを計算した結果が保存された状態であるものとする。更に、あるユーザが自分のランデータRにチェックポイントを設定して、レース用のコースを設定することを開始した状況とする。また、そのランデータRについても、S100からS103の処理により、既にデータベース310に座標と正規化速度が保存されているものとする。
【0061】
ステップS200からS209の処理では、ランデータRのn個の各座標における「レベル」を求める(最後の座標を除く)。先ず、ステップS200において、ランデータRを構成するn個の時刻tと座標qのペア{t,q}(i)(i=0,1,…,n-1)から、最後の要素を除く全座標q(k)(k=0,1,…,n-2)での正規化速度s(k)を求める。この処理は
図17のS100からS103で説明した通りである。
【0062】
ステップS201では、kを0に初期化する。ステップS202では、座標q(k)の近傍にある、データベース310のデータ{p,u}をすべて取得する。q(k)の近傍にはデータがm個(m≧1)あるとして、それらを{p,u}(j)(j=0,1,…,m-1)として表す。なお、座標q(k)の近傍とは、q(k)を中心とした所定の半径の円に含まれる部分とする(所定の半径は近傍を表す閾値として定義する)。
【0063】
ステップS203からS207では、このm個のデータ{p,u}(j)のうち、正規化速度uがS200で求めた正規化速度s(k)と同じ方向のものを選び出し、それらのuの大きさの平均値hを求める。なお、同じ方向か否かは、s(k)とuの内積から求まる2つのベクトルのなす角θが、ある閾値以下であることで判定する。
【0064】
ステップS203では、jを0に初期化する。また、s(k)と同じ方向のuの大きさの総和を求めるためのHを0に初期化し、s(k)と同じ方向のuの個数を数えるためのTを0に初期化する。
【0065】
ステップS204では、s(k)とu(j)の方向が同じかどうか比較する。同じであればステップS205に進み、同じでない場合はステップS206に進む。ステップS205では、Hに|u(j)|を加え、Tを1増加させる。ステップS206では、jを1増加させる。ステップS207では、jとmが等しければS208に進み、jとmが等しくない場合はステップS204に戻る。
【0066】
ステップS208では、レベルh(k)の値をH/Tで初期化する。H/Tは、正規化速度s(k)と同じ方向のu(j)の大きさの平均値である。さらに、kを1増加させる。ステップS209では、kがn-1に等しければ、ステップS202からステップS208の繰り返しを抜け、
図22のステップS210の処理に進む。kがn-1に等しくない場合は、ステップS202の処理に戻る。なお、このステップS201からS209の処理では、ランデータRの最後の要素を除く、全座標q(k)に対応するレベルh(k)が求まる。
【0067】
次に、
図21に示すように、速度に基づいてランデータを分割する。具体的には、
図21に示すように、ランデータR’の先頭の要素k=0から最後の要素k=n-1まで順に、レベルh(k)の移動平均w(k)を求める。このように、レベルh(k)は変動が比較的大きいため、レベルh(k)の移動平均w(k)を求めることによって、レベルh(k)を平滑化することができる。そして、w(k)が変化(増加または減少)する要素の区間(セグメント)を抽出する。なお、w(k)が変化するとは、要素w(k)と次の要素w(k+1)との差分の絶対値|w(k+1)-w(k)|が適当な閾値を超えることを意味する。セグメントは、変化が開始する要素番号b(j)と、変化が終了する要素番号e(j)のペア{b(j),e(j)}で表現する。
【0068】
図20は、レベルh(k)の移動平均w(k)を求め、レベルが大きく変化する区間(セグメント)を探す処理を示すフローチャートである。隣り合う要素間のレベル差がある閾値を超える要素番号Bを探し、そこから隣り合う要素間のレベル差がその閾値を下回る要素番号Eを探し、BとEの中間の要素番号Lを求める。また、w(B)とw(E)の差Dを求める。また、このDとLのペアS={D,L}を検出した個数zを数える。
【0069】
先ず、ステップS210では、レベルh(k)の移動平均w(k)を求める。ステップS211では、隣り合うw(k)間のレベル差(d(i)←w(i+1) -w(i))を求める。次のステップS212では、i,zの値を初期化する。
【0070】
ステップS213では、|d(i)|が閾値を超えているか否かを判定する。ステップS213で、|d(i)|が閾値を超えていた場合はステップS214に進み、|d(i)|が閾値を超えていない場合はステップS220に進む。ステップS214では、閾値を超えた要素(閾値越えを開始した要素)の番号Bにiを代入する。また、iの次の要素番号(i+1)をjに代入する。
【0071】
ステップS215では、|d(j)|が閾値を超え、且つd(j)がd(B)と同符号であれば、ステップS216に進む。|d(j)|が閾値を超えていない、又はd(j)がd(B)と同符号でない場合は、ステップS218に進む。
【0072】
ステップS216では、iにjを代入し、jを1増加させる。ステップS217でiがn-3に等しい(iが最後の要素)場合は、
図22のステップS222に進む。iがn-3に等しくない場合は、ステップS215に戻る。
【0073】
ステップS218で、Bから連続して閾値越えする最後の要素の番号Eにiを代入する。つまり、Eの次の要素はステップS215の閾値を超えなかったことを意味する。Dに「EのレベルとBのレベルの差の絶対値」を代入する。Lに「BとEの中間の要素番号」を代入する(2で割れない場合は小数点以下を切り捨てる)。ステップS219で、z番目の{D,L}をS(z)に代入して保存する。これにより、BとEの間の区間では移動平均w(i)が増加(または減少)している区間となる。従って、
図21に示すようなセグメント1,2,3を求めることができる。そして、BとEの中間の要素番号Lを求めることで、移動平均w(i)がほぼ一定の区間を検出し、それらの区間の境界にチェックポイントを設けることができる。
【0074】
ステップS220では、iを1増加させる。ステップS221で、iがn-3に等しい(iが最後の要素)場合は
図22のステップS222に進み、iがn-3に等しくない場合は、ステップS213に戻る。
【0075】
以上のようにして、ステップS210からステップS221の処理によってz個のS(i)={D,L}(i)(i=0,1,…,z-1)が求まる。
【0076】
次に、
図22のフローチャートに基づいて、全てのセグメント{b(j),e(j)}のうち、変化の大きさが大きい順、すなわち|w(e(j))-w(b(j))|が大きい順に、上位m個のセグメントをさらに選ぶ。そして、このm個のセグメントそれぞれの中央の要素(要素番号は(e(i)-b(i))/2)にチェックポイントを配置する。このようにして、データベース310を参照することで、ランデータR’にm個のチェックポイントを自動設定することができる。
【0077】
この段階で、チェックポイントの候補となる座標の要素番号(L(i)(i=0,1,…,z-1))はすべて取得できたことになる。但し、チェックポイントの自動配置では、「最大M個」のような制限をすることが望ましい。このため、
図22のステップS222では、zがMを超えるか否かを判定し、zがMを超える場合は、ステップS223でDの大きい順にS(i)={D,L}(i)を並び替える。そして、ステップS224ではzの値をMとし、ステップS225ではS(i)をLが小さい順にソートする(i=0,1,…,z-1)。ステップS226では、q(L(0)),q(L(1)),…をCP#1,#2,…としてz個のチェックポイントをコースに設定し、上位M個のL(i)をチェックポイントとして使用する。また、ステップS222においてzがM以下であれば、ステップS226へ進み、そのままz個のL(i)をチェックポイントとして使用する。この結果、座標q(L(0)),q(L(1)),…がそれぞれチェックポイント#1,#2,…として自動的に設定される。
【0078】
[5.本実施形態に係るシステムの構成例]
図23は、自動チェックポイント設定のためのシステム構成を示す模式図である。
図23に示すように、モバイル端末100は、位置情報取得部(GPS)102、送信部104、受信部106、表示部(LCD)108を備える。位置情報取得部102は、ユーザーのランニングに伴う位置情報を取得する。送信部104は、位置情報及び位置情報が取得された時刻から構成されるランデータをサーバー300へ送信する。受信部106は、サーバー300から送信されたチェックポイントに関する情報を受信する。表示部108は、チェックポイントがオーバーレイ表示されたランデータの経路を表示する。
【0079】
また、サーバー300は、ランデータ取得部302、ランデータ解析部304、ランデータ分割部305、チェックポイント設定部306、チェックポイント情報送信部308、データベース310を備える。ランデータ取得部302は、モバイル端末100からランデータを取得する。ランデータ解析部304は、複数のランデータに基づいて、特定のランデータの経路を移動する際の速度を解析する。ランデータ分割部305は、特定のランデータの経路を移動する際の速度の解析結果に基づいて、特定のランデータの経路を分割する。チェックポイント設定部306は、分割されたランデータの経路に計時のためのチェックポイントを設定する。チェックポイント情報送信部308は、設定したチェックポイントに関する情報を送信する。
【0080】
パーソナルコンピュータ200は、モバイル端末100と同様の構成を有する。但し、パーソナルコンピュータ200は、モバイル端末100から送信されたランデータを取得し、サーバー300へ送信する。
【0081】
図23に示すモバイル端末100、サーバー300の各構成要素は、ハードウェア(回路)、またはCPUなどの中央演算処理装置とこれを機能させるためのソフトウェア(プログラム)から構成することができる。この場合において、そのプログラムは、モバイル端末100またはサーバー300が備えるメモリ、またはモバイル端末100またはサーバー300に外部から接続される記録媒体に格納されることができる。
【0082】
[6.既に設定されたチェックポイントに基づいてチェックポイントを設定する例]
上述した例では、ランデータの速度に基づいてチェックポイントを設定したが、
図24に示すように、他のランデータに設定されたチェックポイントを用いてチェックポイントを設定することもできる。
図24において、
図14と同様に、サーバー300には経路4、経路5が取得されているものとする。そして、経路4にはチェックポイントCP1〜4が設定され、経路5にはチェックポイントCP5〜8が設定されているものとする。ここで、経路4のチェックポイントCP2と経路5のチェックポイントCP6はほぼ同じ位置に設定され、経路4のチェックポイントCP3と経路5のチェックポイントCP7はほぼ同じ位置に設定されている。従って、チェックポイントCP2,CP6の位置は速度変化が生じる区間に含まれる、目印となる場所に近い等の要因によりチェックポイントが設定され易い位置と考えられる。同様に、チェックポイントCP2,CP6の位置もチェックポイントが設定され易い位置と考えられる。このため、サーバー302のランデータ解析部304は、チェックポイントが既に付されたランデータから、チェックポイントの位置を取得する。そして、チェックポイント設定部306は、複数のランデータに設定されたチェックポイントの位置に基づいて、チェックポイントを設定する対象の経路に対して、チェックポイントが設定される頻度が高い位置にチェックポイントを設定する。これにより、複数のランデータに設定されたチェックポイントの位置に基づいて、最適な位置にチェックポイントを設定することが可能となる。
【0083】
また、
図25は、ランデータの解析結果に基づいて、信号機の位置を推定する手法を示す模式図である。
図25に示すように、同一の経路の複数のランデータA,B,C,Dについて、特定の区間D1、区間D2で速度が遅くなることが解析された場合、区間D1内、区間D2内に信号機が存在することが推定される。ランデータAについては、ランデータAを取得した際に区間D1の信号機が「赤」であり、区間D2の信号機が「緑」であったことが推定できる。同様に、ランデータBについては、ランデータBを取得した際に区間D1の信号機が「緑」であり、区間D2の信号機が「赤」であったことが推定できる。また、ランデータCを取得した際には区間D1、D2の信号機がいずれも「緑」であり、ランデータDを取得した際には区間D1、D2の信号機がいずれも「赤」であったことが推定できる。このように、ランデータに基づいて任意の区間中に信号機が存在するか否かを判定できる。従って、信号機が存在する区間(の両端)にチェックポイントを設定して、その区間はレース結果から除外するなど、最適な処理を行うことが可能である。
【0084】
また、チェックポイントとチェックポイントとの間のコースに制約はないので、チャックポイント間を最短時間で走れる経路をフォークソノミー的な要領で発見することができる。例えば、
図14において、開始地点1と終了地点2のみにチェックポイントを設定した場合、どの経路を走ってもほとんど同様な結果となるようにチェックポイントが配置される。これにより、ランニングの経路に自由度を増すことができる。コースが厳密に固定されていると一か所でも道路工事が行われていたり、通行止めが生じていると競技ができなくなるが、コースに自由度を増すことで、作成したレースを長い期間にわたって競技することができる。
【0085】
以上説明したように本実施形態によれば、複数のランデータに基づいて経路を解析するため、経路中において速度が変化する位置を境に経路を分割することができる。これにより、ランニングを行うユーザーにとって意味のある位置で経路を分割することができ、最適な位置にチェックポイントを配置することが可能となる。これにより、チェックポイントに基づいてランニングの結果を認識することにより、ランニングのトレーニング効果がわかりやすくなり、ほかの競技者とのレースを通じてモチベーションが向上する、などの新しいユーザー体験が得られる。
【0086】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0087】
なお、以下のような構成も本開示の技術的範囲に属する。
(1)移動に伴う位置情報及び当該位置情報が取得された時刻から構成される複数の移動データを取得する移動データ取得部と、
前記複数の移動データに基づいて、特定の経路を移動する際の速度を解析する移動データ解析部と、
前記速度の解析結果に基づいて、前記特定の経路を分割する経路分割部と、
を備える、情報処理装置。
(2)分割された前記特定の経路に計時のためのチェックポイントを設定するチェックポイント設定部を更に備える、前記(1)に記載の情報処理装置。
(3)前記移動データ解析部は、前記複数の移動データのそれぞれについて、複数の位置で得られる速度のそれぞれを全区間の速度で除算して得られる複数の正規化速度を解析した結果に基づいて、前記特定の経路を移動する際の速度を解析する、前記(1)に記載の情報処理装置。
(4)前記移動データ解析部は、前記特定の経路上の任意の位置と近接する位置で得られた前記正規化速度に基づいて、前記特定の経路の前記任意の位置を移動する際の速度を解析する、前記(3)に記載の情報処理装置。
(5)前記移動データ解析部は、前記特定の経路上の任意の位置の速度と同じ方向の前記正規化速度に基づいて、前記特定の経路の前記任意の位置を移動する際の速度を解析する、前記(4)に記載の情報処理装置。
(6)前記経路分割部は、前記特定の経路上の前記任意の位置を移動する際の速度の変化に基づいて、前記特定の経路を分割し、
前記チェックポイント設定部は、分割により得られた各区間に前記チェックポイントを設定する、前記(4)に記載の情報処理装置。
(7)前記経路分割部は、前記特定の経路上の前記任意の位置を移動する際の速度の移動平均に基づいて、前記特定の経路を分割し、
前記チェックポイント設定部は、分割により得られた各区間に前記チェックポイントを設定する、前記(4)に記載の情報処理装置。
(8)前記チェックポイント設定部は、分割により得られた各区間の中間位置に前記チェックポイントを設定する、前記(6)又は(7)に記載の情報処理装置。
(9)前記チェックポイント設定部は、分割により得られた各区間のうち移動平均の変化が大きい1又は複数の区間を選択して、選択した各区間に前記チェックポイントを設定する、前記(7)に記載の情報処理装置。
(10)移動に伴う位置情報を取得する位置情報取得部と、
前記位置情報及び前記位置情報が取得された時刻から構成される移動データをサーバーへ送信する送信部と、
前記移動データの経路に設定されたチェックポイントに関する情報を受信する受信部と、を備え、
前記チェックポイントに関する情報は、前記サーバーが、異なる機器から受信した複数の前記移動データに基づいて前記移動データの経路を移動する際の速度を解析して設定した、情報処理装置。
(11)移動に伴う位置情報及び当該位置情報が取得された時刻から構成される複数の移動データを取得する移動データ取得部と、前記複数の移動データに基づいて、特定の経路を移動する際の速度を解析する移動データ解析部と、前記速度の解析結果に基づいて、前記特定の経路を分割する経路分割部と、分割された前記特定の経路に計時のためのチェックポイントを設定するチェックポイント設定部と、前記チェックポイントの情報を送信する送信部と、を備える、情報処理装置と、
移動に伴う位置情報を取得する位置情報取得部と、前記位置情報及び前記位置情報が取得された時刻から構成される移動データを前記情報処理装置へ送信する送信部と、前記情報処理装置が送信した前記チェックポイントの情報を受信する受信部と、を有するモバイル機器と、
を備える、情報処理システム。
(12)移動に伴う位置情報及び当該位置情報が取得された時刻から構成される複数の移動データを取得することと、
前記複数の移動データに基づいて、特定の経路を移動する際の速度を解析することと、
前記速度の解析結果に基づいて、前記特定の経路を分割することと、
を備える、情報処理方法。
(13)移動に伴う位置情報を取得することと、
前記位置情報及び前記位置情報が取得された時刻から構成される移動データをサーバーへ送信することと、
前記移動データの経路に設定されたチェックポイントに関する情報を受信することと、を備え、
前記チェックポイントに関する情報は、前記サーバーが、異なる機器から受信した複数の前記移動データに基づいて前記移動データの経路を移動する際の速度を解析して設定した、情報処理方法。