(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の方法であって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスに送信されたフィードバックデータに少なくとも部分的に基づく、方法。
請求項1に記載の方法であって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスで生成されたフィードバックデータに少なくとも部分的に基づく、方法。
請求項1に記載の方法であって、さらに、サードパーティが運営するソーシャルネットワークに前記パフォーマンス情報の少なくとも一部を送信することを備える、方法。
請求項1に記載の方法であって、さらに、前記パフォーマンス情報の前記送信された一部に少なくとも部分的に基づいて、前記サードパーティが運営するソーシャルネットワークから応答を受信することを備える、方法。
【発明を実施するための形態】
【0034】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【0035】
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【0036】
セグメントを定義して、セグメントにエフォートをマッチングさせることについて、本明細書で開示する。本明細書で用いられているように、セグメントとは、関心のある地理的経路のことであり、基準(例えば、経路に沿った運動パフォーマンスの比較および/またはその他の用途のための基準)として利用できる。例えば、セグメントは、サイクリストに人気のヒルクライムコースを特定するために利用されうる。本明細書で用いられているように、エフォートとは、タイムスタンプを伴う記録された一連のGPS情報のことである(例えば、運動パフォーマンスを表しうる)。いくつかの実施形態において、エフォートは、関連データ(例えば、エフォートが関連する活動の測定値)と共に格納される。いくつかの実施形態では、格納されたエフォートから1または複数のセグメントが導出される。いくつかの実施形態において、ユーザは、セグメントを定義できる。いくつかの実施形態では、エフォートの視覚的表現がユーザインターフェースに提示され、ユーザは視覚的表現を用いてセグメントを定義する。いくつかの実施形態では、地図がユーザインターフェースに提示され、ユーザは地図上に経路を示すことによってセグメントを定義する。様々な実施形態において、一連のGPS情報が、セグメントとして格納される前に、1セットの地理的抽象に変換される。いくつかの実施形態において、セグメントは、そのセグメントに一致すると判定されたエフォートの関連データと共に格納される。
【0037】
様々な実施形態において、エフォートは、格納されたセグメントとマッチングされる。様々な実施形態において、2つのレベルのマッチングが、エフォートおよび格納済みのセグメントを用いて実行されうる。第1のレベルのマッチングでは、格納されたセグメントの1つに対するエフォートの一致率が第1の閾値を超える場合に、第1の決定がなされる(例えば、エフォートは、セグメントに対する緩やかな一致である)。第2のレベルのマッチングでは、格納されたセグメントの1つに対するエフォートの一致率が(第1の閾値よりも大きい)第2の閾値を超え、さらに、エフォートがセグメントのスタートラインおよびゴールラインを横切る(セグメントのスタートラインおよびゴールラインと交差する)場合(または、セグメントがループを形成し、二度目にループセグメントのエントリポイントを超えたと判定された場合)、第2の決定がなされる(例えば、エフォートは、セグメントに対する厳密な一致である)。いくつかの実施形態では、エフォートが、1または複数の格納されたセグメントに対する緩やかな一致であり、そのエフォートが、さらに、1または複数の格納されたセグメントに対する厳密な一致であると判定されうる。いくつかの実施形態において、エフォートがセグメントに(例えば、緩やかな一致または厳密な一致のいずれかとして)一致する場合、エフォートの関連データが、一致したセグメントと共に格納された関連データと比較される。いくつかの実施形態において、エフォートがセグメントに一致する場合、エフォートの関連データは、セグメントに一致する他のエフォートの関連データとも比較される。
【0038】
図1は、いくつかの実施形態に従ってセグメントを定義してマッチングさせるためのシステムである。システム100は、デバイス102、ネットワーク104、および、セグメントマッチングサーバ106を備える。ネットワーク104は、様々な高速データネットワークおよび/または遠隔通信ネットワークを含む。デバイス102は、ネットワーク104を通してセグメントマッチングサーバ106と通信する。いくつかの実施形態において、システム100は、
図1の例に示したのと異なる数の構成要素を備えてもよい。
【0039】
デバイス102は、GPS情報および/または身体活動に関連するその他のデータを記録できるデバイスである。デバイス102は、さらに、GPS情報および/または身体活動に関連するその他のデータがアップロードまたは転送されうるデバイスであってよい。デバイス102の例としては、GPSデバイス(例えば、Garmin Forerunner 110、205、301、305、310XT、405、405CX、および、Garmin Edge 305、605、705、500など、Garmin ForerunnerおよびEdgeデバイス)、GPS記録アプリケーション(例えば、MotionX、Endomondo、および、RunKeeper)を備えたスマートフォン(例えば、AndroidデバイスまたはApple iPhoneデバイス)などの携帯電話、コンピュータ、タブレットデバイス、および/または、その他の汎用コンピュータデバイスおよび/または専用コンピュータデバイスが挙げられるが、これらに限定されず、それらは、一般的に、汎用プロセッサと、メモリまたはその他のストレージ要素と、ネットワークまたは出入力(I/O)機能と、統合GPS機能またはサポートもしくはGPSデバイスまたはGPS機能のためのインターフェースと、を備える。
【0040】
様々な実施形態において、デバイス102(または、そのアプリケーション)は、活動中に、GPS情報と、身体活動に関連するデータとを記録するよう構成されている。いくつかの実施形態において、デバイス102は、活動の終了後に、記録されたGPS情報および活動中の身体活動に関連するデータを受信するよう構成されている(例えば、かかる情報が、デバイス102にアップロードされる)。いくつかの実施形態において、記録されたGPS情報および関連データは、「エフォート」と呼ばれる。言い換えると、エフォートは、身体活動の事象であり、地理情報、および、運動パフォーマンスに関連するその他の測定値によって表現されうる。身体活動の例としては、サイクリング、ランニング、および、スキーが挙げられる。いくつかの実施形態において、GPS情報は、一連の連続的かつ離散的なGPSデータポイント(例えば、緯度および経度)を含み、各ポイントに対してタイムスタンプを備える。いくつかの実施形態において、関連データは、標高、心拍数、仕事率/ワット数(例えば、消費されたエネルギ)、タイム、速度(例えば、セグメントおよび/またはルートごとの平均および/または最大速度、例えば、平均速度はタイムおよびGPS情報から導出されうる)を含むが、これらに限定されない。関連データは、様々な粒度で記録されうる。例えば、関連データは、各GPSデータポイント、活動全体(例えば、関連データが測定値の平均を含む)、または、活動の一部に対応しうる。一例として、サイクリングの時にデバイス102を利用できる。サイクリングの終わりに、ユーザは、ユーザが辿った地理的経路、ユーザがサイクリングでどれだけのエネルギを消費したか、どのくらい早くゴールしたか、平均速度、標高に基づいた測定値、および/または、その他の測定値を見るために、(例えば、デバイス102のユーザインターフェースを通して)記録されたGPS情報と共に自身のパフォーマンスを振り返ることができる。いくつかの実施形態において、デバイス102は、記録されたGPS情報および関連データ(例えば、エフォート)を格納する、および/または、エフォート情報をサーバ106に送信するよう構成される。いくつかの実施形態において、デバイス102は、対話型ユーザインターフェースを提示するよう構成される。ユーザインターフェースは、GPS情報を表示し、それらの表示に関する(例えば、ユーザによってなされた)選択を受信しうる。いくつかの実施形態において、デバイス102は、受信した選択をセグメントマッチングサーバ106に送信する。
【0041】
様々な実施形態において、セグメントマッチングサーバ106は、デバイス102のユーザインターフェースをサポートおよび提示するよう構成される。いくつかの実施形態において、セグメントマッチングサーバ106は、記録されたエフォートを用いてユーザインターフェースにおいてユーザが定義したセグメントを受信するよう構成される。セグメントとは、関心のある地理的経路のことを意味しており、地理的経路に沿った運動パフォーマンスの比較のための基準として利用できる。セグメントマッチングサーバ106は、一連のGPS情報および関連データ(例えば、エフォート)を受信するよう構成されている。いくつかの実施形態において、セグメントマッチングサーバ106は、地図ソフトウェアアプリケーションを用いてユーザインターフェースにGPS情報の視覚的表現を表示するよう構成されている。視覚的表現は、例えば、地図上にマークされた一連のフラッグまたは連続的な線であってよい。いくつかの実施形態において、セグメントマッチングサーバ106は、地図ソフトウェア/アプリケーション(例えば、Google Maps、MapQuest、Bing maps、および/または、別のマッピングアプリケーション/サービス)のアプリケーション・プログラミング・インターフェース(API)と相互作用するよう構成されたロジックを備えることによって、ユーザインターフェースで地図をサポートできる。いくつかの実施形態において、ユーザは、GPS情報の視覚的表現を用いてセグメントを定義できる。いくつかの実施形態において、GPS情報の視覚的表現に沿って、スタートポイントおよびゴールポイント(例えば、終点)が、セグメントを定義するために地図上で選択される。例えば、ユーザは、身体活動中に辿った地理的経路に沿ってスタートポイントおよび/またはゴールポイントを(例えば、マーカをドロップするか、または、クリックすることによって)選択できる。このように、選択されたスタートポイントおよびゴールポイントの間にある地理的経路の一部が、セグメントとして定義される。いくつかの実施形態において、スタートポイントおよびゴールポイントは、定義されたセグメントと共に格納される。いくつかの実施形態において、スタートポイントおよびゴールポイントの間にある地理的経路の一部は、抽象形態に変換された後に、セグメントを格納するためのデータベースに格納される。いくつかの実施形態において、定義されたセグメントに対応する関連データも、セグメントと共にデータベースに格納される。
【0042】
いくつかの実施形態において、セグメントマッチングサーバ106は、地図上の選択肢を用いてユーザインターフェースにおいてユーザが定義したセグメントを受信するよう構成されている。いくつかの実施形態において、セグメントマッチングサーバ106は、地図(例えば、Google Maps、MapQuest)を提示し、セグメントのコースを示すための地図上の一連のポイント選択を受信する。地図上の一連のポイント選択は、記録されたエフォートに基づく必要はなく、単に、関心のある任意の地理的経路であってよい。例えば、選択されるセグメントは、サイクリストが以前に走ったが記録はしていない経路であってもよいし、選択されるセグメントは、サイクリストが将来走りたいと思う経路であってもよい。地図上の一連のポイント選択は、一連のGPS情報(例えば、座標)に変換できる。いくつかの実施形態において、一連のGPS情報は、抽象形態に変換された後に、セグメントとして格納される。
【0043】
いくつかの実施形態では、ユーザインターフェースにおいてセグメントが定義された後、格納されたエフォート(例えば、過去の身体活動からのGPS情報のセット)が、定義されたセグメントと比較される。いくつかの実施形態において、この定義されたセグメントとエフォートが比較された時に、部分的には、スタートポイントおよびゴールポイントを通過したことをエフォートのGPS情報が示すか否かをチェックすることによって、エフォートがセグメントと一致するか否かが判定される。1または複数のエフォートがセグメントに一致すると判定されると、エフォートに関連付けられたデータが、リトリーブされて分析される。いくつかの実施形態において、新たに定義されたセグメントに関連付けられたデータも、分析に含められる。例えば、データを比較することにより、セグメントに一致するどのエフォートがセグメント完了の最速タイムを有するのかを決定することができる。
【0044】
セグメントマッチングサーバ106は、さらに、セグメントに対してエフォート(例えば、GPS情報のセット)をマッチングするよう構成されている。いくつかの実施形態において、エフォートは、エフォートの一致を判定する前に、格納されたセグメントと同じ抽象形態に変換される。セグメントに対してエフォートをマッチングさせる1つの目的は、関心のある同一の区切られた経路にわたって行われた格納済みの身体活動の事例(すなわち、セグメント)を見いだすことである。言い換えると、セグメントに一致するエフォートとは、定義されたトラックに沿って行われた身体活動の事例のことである。同一のセグメントで起きた複数の身体活動の事例が見いだされると、それらの関連情報(例えば、終了タイム、速度、心拍数、および/または、ワット数)が、同一の経路における1または複数の個人による運動パフォーマンスに関して特定の統計値(例えば、最速タイム、最高ワット数)を生成するために比較されうる。いくつかの実施形態において、新たに定義されたセグメントについて、セグメントマッチングサーバ106は、格納されたエフォートをセグメントと比較するよう構成されている。いくつかの実施形態において、エフォートの関連データは、エフォートが一致すると判定されたセグメントと共に格納される。いくつかの実施形態において、セグメントマッチングサーバ106は、(例えば、デバイス102から)エフォートを受信し、一致を見いだすためにエフォートを格納済みのセグメントと比較するよう構成されている。様々な実施形態において、エフォートがセグメントと一致すると判定されると、それらの関連データが比較される(例えば、セグメントに一致するすべてのエフォートの関連データが比較される)。
【0045】
図2Aは、いくつかの実施形態に従って、セグメントマッチングサーバの一実施形態を示す図である。いくつかの実施形態において、セグメントマッチングサーバ106は、
図2Aの例を用いて実装されうる。図の例において、セグメントマッチングサーバ106は、セグメントデータベース202、エフォートデータベース204、定義エンジン206、および、マッチングエンジン208を備える。しかしながら、セグメントマッチングサーバ106は、より多くまたはより少ない構成要素を備えてもよい。いくつかの実施形態において、セグメントマッチングサーバは、市販の汎用コンピュータハードウェアを用いて実装される(例えば、市販のサーバ(HP BladeSystemブレードサーバなど)上でLinux(登録商標)オペレーティングシステムを実行するホストサービスプロバイダ(AmazonEC2クラウドなど)を用いて)。
【0046】
セグメントデータベース202は、定義されたセグメントを格納するよう構成されている。例において、セグメントデータベース202は、1つのデータベースとして図示されているが、セグメントマッチングサーバは、定義されたセグメントを格納するための2以上のデータベースを含んでもよい。いくつかの実施形態において、セグメントデータベース202は、ユーザが、格納されたエフォートをアップロードして、ユーザインターフェースでエフォートの視覚的表現に沿ってスタートポイントおよびゴールポイント/終点を示すことによって定義されたセグメントを含む。いくつかの実施形態において、セグメントデータベース202は、ユーザがユーザインターフェースで地図上の経路に沿って一連の選択を行うことによって定義されたセグメントを含む。いくつかの実施形態において、セグメントデータベース202は、様々な経路または登山道の既知の特徴(例えば、専門団体によって提供された情報)に基づいて、(例えば、セグメントサーバ106の管理者によって)予め定義されたセグメントを含む。いくつかの実施形態において、セグメントは、抽象形態で(例えば、最小外接矩形のセットとして)セグメントデータベース202に格納される。抽象形態でセグメントを格納する1つの理由は、類似のセグメントまたはセグメントに一致するエフォートの検索クエリを効率的に実行できるようにするためである。いくつかの実施形態において、セグメントデータベース202は、R木インデックスに基づいて組織化される。いくつかの実施形態において、セグメントは、GPSデータポイントのセットとしてセグメントデータベース202に格納される。いくつかの実施形態において、セグメントデータベース202内の各セグメントは、セグメントに一致すると判定されたエフォートデータベース204からのエフォートの識別子と共に格納される。いくつかの実施形態において、セグメントデータベース202内の各セグメントは、セグメントに一致すると判定されたエフォートの関連データと共に格納される。
【0047】
エフォートデータベース204は、GPS情報およびタイムスタンプのセットとしてエフォートを格納するよう構成されている。例において、エフォートデータベース204は、1つのデータベースとして図示されているが、セグメントマッチングサーバは、エフォートを格納するための2以上のデータベースを含んでもよい。いくつかの実施形態において、エフォートデータベース204は、記録されてデバイス(例えばデバイス102)からアップロードされたエフォートを含む。エフォートデータベース204に格納されたエフォートは、少なくとも、GPS情報、GPS情報に対応するタイムスタンプ、および、エフォートの運動パフォーマンスに関係する測定値(例えば、関連データ)を含む。いくつかの実施形態において、タイムスタンプは、GPS情報に含まれる(例えば、GPS情報は、対応するタイムスタンプと共に緯度および経度の座標を含む)。いくつかの実施形態において、エフォートは、エフォートを実行したアスリート(例えば、デバイス102のユーザ)の識別子と共に格納される。いくつかの実施形態において、エフォートデータベース204の各エフォートは、それが一致すると判定されたセグメントデータベース202のセグメントの識別子と共に格納される。
【0048】
定義エンジン206は、セグメントの定義を受信するよう構成されている。定義エンジン206は、ハードウェアおよび/またはソフトウェアで実装されてよい。いくつかの実施形態において、定義エンジン206は、(例えば、デバイスに)ユーザインターフェースを提示するよう構成されている。いくつかの実施形態において、ユーザインターフェースは、ユーザインターフェースに(例えば、デバイスによって記録された)エフォートの視覚的表現を表示する。いくつかの実施形態において、定義エンジン206は、地図サービス(例えば、地図の表示、表示された地図上の選択のGPS座標の受信、および/または、その他の地図サービス)を取得するためにAPIを通してサードパーティの地図アプリケーション(例えば、Google Maps、MapQuest)と相互作用するよう構成されている。スタートポイントおよびゴールポイントの選択が、ユーザインターフェースでなされ、定義エンジン206で受信される。次いで、定義エンジン206は、スタートポイントおよびゴールポイントによって区切られた経路をセグメントとしてセグメントデータベース202に格納する。いくつかの実施形態では、ユーザインターフェースによって表示された地図上の(例えば、一連の選択として示された)経路が、定義エンジン206で受信される。次いで、定義エンジン206は、地図上にマークされた経路をセグメントとしてセグメントデータベース202に格納する。いくつかの実施形態において、定義エンジン206は、セグメントを格納する前に抽象的な地理形態(例えば、最小外接矩形のセット)に変換する。
【0049】
いくつかの実施形態において、定義エンジン206は、任意の既存のセグメントが新たに定義されたセグメントと類似するか否かを判定するために、新たに定義されたセグメントとセグメントデータベース202に格納されたセグメントとを比較するよう構成されている。いくつかの実施形態において、既存のセグメントが新たに定義されたセグメントに類似すると判定された場合、そのセグメントの作成者に既存のセグメントが存在する旨の警告が表示されてよい。いくつかの実施形態において、新たなセグメントの作成者は、類似したセグメントがすでに定義されているので、新たなセグメントを保存しないことを選択してもよい。
【0050】
いくつかの実施形態において、定義エンジン206は、2以上のセグメントを含むグループが類似しているか否かを判定するために、セグメントデータベース202に格納されたセグメントを(例えば、定期的に)比較するよう構成されている。いくつかの実施形態において、類似すると判定されたセグメントについて、データベースに残すセグメントを1つだけ選択できる(例えば、デバイス102のようなデバイスを利用するユーザのコミュニティによる投票処理を用いてクラウドソーシングできる)ように、それらのセグメントが表示される。選択されないセグメントは、公開セグメントとして表示されないように余分なセグメントを除去または格下げすることによってスペースを解放するために、データベースから破棄されうる(ただし、投稿したユーザが私的に用いるために保持されてもよい)。いくつかの実施形態において、定義エンジン206は、類似したセグメントが、他のセグメントに完全に含まれるセグメントを含むことを決定するよう構成されている(すなわち、サブセグメントおよびスーパーセグメント)。いくつかの実施形態において、セグメントと、そのスーパーセグメントまたはサブセグメントとの間の関係が、セグメントデータベース202に記録される。
【0051】
マッチングエンジン208は、(例えば、セグメントデータベース202の)1または複数のセグメントに一致するエフォートを決定するよう構成されている。いくつかの実施形態において、マッチングエンジン208は、エフォートデータベース204に格納されたエフォートにアクセスするよう構成されている。いくつかの実施形態において、(例えば、アップロードされたエフォートまたは地図上のマーキングに基づいて)セグメントのユーザ定義が行われた後に、マッチングエンジン208は、格納されたエフォートにアクセスして、新たに定義されたセグメントとマッチングする。例えば、ユーザ(例えば、サイクリスト)は、セグメントを定義し(そして、任意選択的に、他のユーザが見られるようにセグメントを公開して共有し)、その後、定義されたセグメントを辿った過去の活動(例えば、サイクリスト自身または他のサイクリストによる過去の走行)に関する情報を受信できる。いくつかの実施形態において、マッチングエンジン208は、セグメントデータベース204に格納されたセグメントにアクセスするよう構成されている。いくつかの実施形態において、受信されたエフォート(例えば、デバイス102によって送信されたエフォート)に応答して、マッチングエンジン208は、受信されたエフォートがセグメントデータベース202に格納されたいずれかのセグメントと一致するか否かを判定する。例えば、ユーザ(例えば、サイクリスト)は、最近記録されたエフォート(例えば、サイクリング)が1または複数のすでに定義されたセグメントを含むか否かをチェックできる。エフォートがセグメントを含むと判定された場合、セグメントの関連データ(例えば、運動パフォーマンスデータ)がアクセスされ、エフォートの関連データと比較される。このように、ユーザは、セグメントの開始または終了の場所を手動で決定する必要なしに、ユーザがセグメントを辿ったか否かを自動的にチェックできることにより、すでに定義されたセグメントから恩恵を受けうる。
【0052】
いくつかの実施形態において、マッチングエンジン208は、(例えば、セグメントデータベースをクエリすることにより)格納済みのセグメントとのマッチングを実行する前に、エフォート(例えば、GPS座標のセット)を、セグメントが格納されるのと同じ抽象形態(例えば、最小外接矩形のセット)に変換するよう構成されている。いくつかの実施形態において、エフォートと格納されたセグメントとの間のマッチングの実行に基づいて、2つのタイプの判定(例えば、エフォートが緩やかな一致である、エフォートが厳密な一致である)がなされうる。エフォートは、一致率が第1の閾値(例えば、65%以上)を超える場合に、格納されたセグメントとの緩やかな一致であると判定されうる。いくつかの実施形態において、格納されたセグメントとの緩やかな一致であるエフォートは、記録された身体活動が、一致したセグメントと同じ経路をおおよそ辿ったことを意味しうる。一致率が第2の閾値(例えば、80%)を超え、さらに、エフォートが格納済みのセグメントに関連付けられたスタートラインおよびゴールラインを横切る場合、そのエフォートは、格納されたセグメントとの厳密な一致であると判定されうる。いくつかの実施形態において、格納されたセグメントとの厳密な一致であるエフォートは、記録された身体活動が、一致したセグメントと同じ経路を厳密に辿ったことを意味しうる。様々な実施形態において、2つの判定(例えば、緩やかな一致および厳密な一致)について、一致率の決定は同じ方法で実行される。いくつかの実施形態において、エフォートは、1または複数のセグメントとの緩やかな一致であると判定されると共に、(同じまたは異なる)1または複数のセグメントとの厳密な一致であると判定されうる。例えば、エフォートは、セグメントとの緩やかな一致であると判定されると共に、同じセグメントとの厳密な一致であると判定されうる。別の例において、エフォートは、或るセグメントとの緩やかな一致かつ異なるセグメントとの厳密な一致であると判定されうる。いくつかの実施形態において、エフォートが緩やかな一致であるとの判定が、第1のデータベースに格納された1または複数のセグメントに対してなされ、エフォートが厳密な一致であるとの判定が、第2の異なるデータベースに格納された1または複数のセグメントに対してなされる。
【0053】
いくつかの実施形態において、エフォートが(例えば、緩やかな一致または厳密な一致のいずれかとして)セグメントに一致すると判定された場合、セグメントの関連データ(例えば、セグメントに一致すると判定された格納済みのエフォートの関連データ)が、エフォートの関連データとの比較のためにアクセスされる。いくつかの実施形態において、複数の格納されたエフォートが、新たに定義されたセグメントに一致すると判定され、一致したセグメントの関連データがアクセス、集計、および、解析される。いくつかの実施形態において、マッチングエンジン208は、リトリーブされたデータに基づいて解析結果を生成するよう構成されている。いくつかの実施形態において、マッチングエンジン208は、解析結果をデバイス102に送信する(例えば、ユーザインターフェースに表示するために)。
【0054】
例えば、ユーザは、セグメントを定義することができ、セグメントに一致する格納済みのエフォートすべてが集計および解析されて、最速タイムまたは最大仕事率でセグメントを辿ったユーザのリスト(すなわち、順位表)が生成されうる。別の例において、ユーザは、エフォートを生成することができ、セグメントマッチングサーバは、エフォートがいずれかの定義済みセグメントを辿ったか否かを判定できる。エフォートが定義済みのセグメントを辿ったと判定された場合、そのエフォートに関連付けられたデータが、定義済みのセグメントを辿ったと判定された全エフォートの履歴と比較されうる。このように、ユーザは、セグメント上での自分の運動パフォーマンスが、(そのセグメントによって代表される)同じ地理的経路を辿ったすべての他のエフォートと比べてどのようであるかを判断できる。さらに、ユーザは、セグメントが開始または終了する正確な場所を(例えば、ユーザが自転車に乗っている時に)知る必要はない。
【0055】
いくつかの実施形態において、デバイス102は、セグメントデータベース202、エフォートデータベース204、定義エンジン206、および、マッチングエンジン208を備えてもよいし、デバイス102が(セグメントマッチングサーバ106と情報をやり取りする必要なしに)デバイス102で、セグメントを格納、エフォートを格納、セグメントを定義、および、セグメントに対してエフォートをマッチングできるように等価な機能を備えてもよい。いくつかの実施形態において、デバイス102のエフォートデータベースは、そのデバイスのユーザによって生成されたエフォートのみを含む。
【0056】
図2Bは、いくつかの実施形態に従って、エフォートデータベースのテーブルに格納されたエフォートの一例を示す図である。いくつかの実施形態において、エフォートデータベース204に格納されるエフォートは、
図2Aの例と同様の方法で格納されうる。ただし、データベースのエフォートのテーブルは、例で示した列の数とは異なる数の列を含んでもよい。例において、各エフォートは、エフォートID、その一連のGPS情報(例えば、それぞれのタイムスタンプを有するGPS座標)、エフォートを記録したユーザに関連付けられた識別子、エフォートが記録された日付、ならびに、速度(km/h)、心拍数(1分間あたり)、仕事率(ワット)、および、タイム(時:分)などの関連データと共に格納される。いくつかの実施形態において、エフォートがセグメントと比較される時、エフォートのGPS情報(例えば、タイムスタンプを有する一連のGPS座標)が、アクセスされて、比較に用いられる。いくつかの実施形態において、エフォートがセグメントに一致すると判定されると、エフォートの関連データ(例えば、速度、心拍数、仕事率、タイム、標高、勾配)が、セグメントに一致するその他のエフォート(もしあれば)の関連データと共に集計される。次いで、集計されたデータは、(例えば、集計データをまとめた表示を生成するために)解析される。
【0057】
図3は、いくつかの実施形態に従って、セグメントマッチングのための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理300は、システム100で実施される。
【0058】
工程302では、セグメントが定義される。いくつかの実施形態において、セグメントは、ユーザがユーザインターフェースで、エフォート(例えば、タイムスタンプを有する一連のGPS情報)の視覚的表現に沿ってスタートポイントおよびゴールポイントを選択することによって定義される。いくつかの実施形態において、エフォートは、GPS追跡機能を備えたデバイスによって記録される。いくつかの実施形態において、セグメントは、ユーザがユーザインターフェースで、(例えば、Google Mapsなどサードパーティの地図ソフトウェアによってサポートされた)地図上で一連のポイントを選択することによって定義される。いくつかの実施形態において、セグメントは、地理的経路の既知の特徴(例えば、標高および平均勾配)を用いて、(例えば、セグメントマッチングサーバの管理者によって)定義される。定義されたセグメントは、1または複数のデータベースに格納される。いくつかの実施形態において、定義されたセグメントは、抽象形態(例えば、最小外接矩形のセット)に変換され、抽象形態で格納される。いくつかの実施形態において、セグメントが格納されるデータベースは、R木インデックスに基づいて組織化される。
【0059】
工程304では、セグメントに一致するエフォートが決定される。いくつかの実施形態において、定義されたセグメントについて、格納されたエフォートに関する情報がアクセスされ、セグメントと比較される。いくつかの実施形態において、エフォートは、タイムスタンプと共に(そして、運動パフォーマンスの様々な測定値などの関連データと共に)GPS情報のセットとして格納される。いくつかの実施形態において、格納済みエフォートのGPS情報がアクセスされ、比較の前にセグメントと同じ形態(例えば、最小外接矩形)に変換される。いくつかの実施形態において、格納済みエフォートは、セグメントに一致する格納済みエフォートのサブセットを決定するために、セグメントと比較される。セグメントに一致すると判定された格納済みエフォートのサブセットの関連データが(例えば、エフォートを格納しているのと同じデータベースから)取得され、集計される。集計された関連データは解析され、いくつかの実施形態において、解析結果は、表(例えば、順位表)および/または画像で提示される。
【0060】
図4は、いくつかの実施形態に従って、エフォートに基づいてセグメントを定義する処理の一実施形態を示すフローチャートである。いくつかの実施形態では、処理400は、システム100を用いて実施されうる。いくつかの実施形態において、処理400は、工程302を実行するために用いられてよい。
【0061】
工程402では、エフォートの視覚的表現が提示される。いくつかの実施形態において、エフォートは、GPS追跡機能を備えたデバイスによって記録されたタイムスタンプを伴う一連のGPS情報である。いくつかの実施形態において、視覚的表現はユーザインターフェースで提示される。例えば、GPS座標は、(例えば、Google Mapsなどの地図アプリケーションによってサポートされた)地図上の実線または一連のマーカとして表示されうる。いくつかの実施形態では、一連のGPS情報が1セットの離散的な地理的座標である場合でも、実線の形態の視覚的表現を生成する際に、2つの座標間のポイントを推定することができる。
【0062】
例えば、ユーザ(例えば、サイクリスト)が、サイクリングを終えて、その走行の少なくとも一部をセグメントとして指定したいと思う。このように、そのサイクリストまたは他のサイクリストが、セグメントによって参照された地理的経路でのパフォーマンスを追跡および比較することができる。
【0063】
工程404では、スタートポイントの選択が受信される。いくつかの実施形態において、ユーザは、セグメントのスタートポイントとして、ユーザインターフェースにおいて視覚的表現に沿ってポイントを選択する。いくつかの実施形態において、選択されたポイントが、そのエフォートで2回以上通過されている場合、選択されたスタートポイントを通過した回数の各々をエフォートに沿って示すように、表示が生成される。次いで、ユーザは、ユーザがスタートポイントとしたい所望の事例に対応する回数を選択してよい。いくつかの実施形態において、選択されたスタートポイントは、それに対応するGPS座標(例えば、地図アプリケーションに関連付けられたAPIによって返された座標)として格納される。いくつかの実施形態において、選択されたスタートポイントは、エフォートの選択されたスタートポイントおよびその他の1または複数のポイントに基づいて得られたた仮想のスタートラインと共に格納される。
【0064】
前の例に戻ると、サイクリストは、セグメントのスタートポイントとして指定するために、自分の走行に沿ったポイントを選択できる。スタートポイントは、セグメント全体のスタートポイントにある必要はなく、走行に沿った任意のポイントであってよい。スタートポイントは、レースのためのスタートラインと考えることができる。別のサイクリストが(または、同じサイクリストが、異なる機会に)、セグメントを走行したか否かを後に判定する時に、後の走行(すなわち、エフォート)がスタートポイントを通過したか否かが判定される。
【0065】
工程406では、ゴールポイントの選択が受信される。いくつかの実施形態において、ユーザは、セグメントのゴールポイントすなわち終点として、ユーザインターフェースにおいて視覚的表現に沿ってポイントを選択する。様々な実施形態において、ゴールポイントを選択して格納するための技術は、スタートポイントに用いられるものと同じである。例えば、選択されたゴールポイントは、それに対応するGPS座標として、および/または、得られた仮想ゴールラインと共に格納されうる。
【0066】
例に戻ると、サイクリストは、セグメントのゴールポイントとして指定するために、自分の走行に沿ったポイントを選択できる。ゴールポイントは、その走行のまさに最後である必要はなく、スタートポイントの後の任意のポイントであってよい。ゴールポイントは、レースのためのゴールラインと考えることができる。別のサイクリストが(または、同じサイクリストが、異なる機会に)、セグメントを走行したか否かを後に判定する時に、後の走行(すなわち、エフォート)がゴールポイントも通過したか否かが判定される。いくつかの実施形態において、定義されるセグメントがループを含む場合、選択されたスタートポイントおよびゴールポイントは、同じセットのGPS座標でありうる。
【0067】
工程408では、定義されたセグメントは、任意選択的に格納される。いくつかの実施形態において、定義されたセグメントが、(例えば、セグメントデータベースなど、事前定義および/またはユーザ定義されたセグメントを含むデータストア内の)既存のセグメントと類似していると判定された場合、ユーザは対応する表示によってプロンプトされる。いくつかの実施形態において、ユーザは、既存のセグメントを見直す、および/または、既存の重複するセグメントに照らして、新たに定義されたセグメントを破棄する選択をすることができる。ユーザが新たに定義されたセグメントを破棄すると選択した場合、ユーザは、自分のエフォートを既存のセグメントと関連付けて、エフォートに関連付けられたデータを既存のセグメントと共に格納することを選択できる。いくつかの実施形態において、ユーザの定義したセグメントが既存のセグメントと一致する場合、一致した既存のセグメントが、(例えば、セグメントデータベースなど、事前定義および/またはユーザ定義されたセグメントを含むデータストアに)すでに格納されている。既存の類似するセグメントがない場合、または、重複の可能性があるにもかかわらず新たに定義されたセグメントをいずれにせよ格納することを選択した場合、新たに定義されたセグメントが格納される。いくつかの実施形態において、セグメントは、抽象形態(例えば、最小外接矩形のセット)に変換され、格納される。いくつかの実施形態において、新たに定義されたセグメントは、名称ならびに/もしくは(例えば、ユーザによって選択された)1または複数のタグと共に保存されうる。いくつかの実施形態において、格納されたエフォートは、このセグメントに対してマッチングするためにアクセスされる。一致するエフォートが見いだされた場合、一致するエフォートに関連付けられたデータが結合および比較される。
【0068】
例に戻ると、サイクリストは、ユーザインターフェースを用いて、セグメントを作成することができる。サイクリストは、セグメント名を「Old La Honda」と入力して、セグメントを、そのセグメントが存在する道路の名称と関連付けることもできる。サイクリストは、(例えば、セグメントマッチングによって決定された)「Old La Honda」で行われた過去の走行についてのフィードバックを受信することもできる。フィードバックは、どのユーザがセグメント上で走行したか、いつ誰が最速タイムを記録したか、誰がセグメントの完了時に最大量のエネルギを費やしたか、などである。また、サイクリストは、「Old La Honda」での自身のパフォーマンスが過去の走行と比較してどの程度であるかを見ることができる(例えば、ユーザのパフォーマンスがそのセグメントでの走行の履歴の中でどこに順位付けされるか)。また、後続ユーザは、セグメントデータベースでの検索をサポートするユーザインターフェースで「Old La Honda」と入力することによって、このセグメントを検索することができる。さらに、後続ユーザは、走行を記録し、一致するセグメントがあるかチェックするためにその走行を送信することによって、「Old La Honda」を走行したことがあるか否かをチェックすることができる。走行が「Old La Honda」セグメントを含むと(例えば、セグメントマッチングによって)判定された場合、そのセグメントでの走行中の後続ユーザのパフォーマンスを、そのセグメントを走行したことがある他のユーザのパフォーマンスの履歴と比較することができる。
【0069】
図5は、いくつかの実施形態に従って、エフォートに基づいてセグメントを定義するためのユーザインターフェースの一例を示す図である。いくつかの実施形態において、工程402は、
図5の例を用いて実施される。図の例において、地図上に配置された濃い線は、例えば、GPSデバイスによって記録されたエフォート(例えば、タイムスタンプを伴う一連のGPS情報)から描画された視覚的表現502である。例に示すように、セグメントが選択されるエフォートの名称は、「Easy Ride around Lake Fairley」として領域504に示されている。いくつかの実施形態において、ユーザインターフェースで用いられる地図は、Google Mapsなどの地図アプリケーションによってサポートされる。地図アプリケーションとは、関連APIを通して相互作用できる。
【0070】
図6は、いくつかの実施形態に従って、セグメントのスタートポイントの選択を示すユーザインターフェースの一例を示す図である。いくつかの実施形態において、工程404は、
図6の例を用いて実施される。例に示すように、視覚的表現502を示す地図は、スタートポイントが選択される領域にズームインされる。いくつかの実施形態において、スタートポイントは、地図の位置をクリックすることによって選択できる。例に示すように、マーカ602が、エフォートに沿って選択されたスタートポイントを示す。例に示すように、選択されたスタートポイントは、エフォートに沿って異なる機会に3回通過されている(604、606、および、608)。ユーザは、スタートポイントとして設定されるのに望ましい回を選択するようプロンプトされる。いくつかの実施形態において、定義されたセグメントの長さはスタートポイントおよびゴールポイントの間のエフォートの長さに基づいて決定されるので、ユーザは、複数の可能なスタートポイントのうちの1つを選択するようプロンプトされる。いくつかの実施形態において、選択されたスタートポイントは、GPS座標のセットとして格納される。いくつかの実施形態において、選択されたスタートポイントは、スタートポイントから部分的に得られた仮想スタートラインと共に格納される。
【0071】
図7は、いくつかの実施形態に従って、セグメントのゴールポイントの選択を示すユーザインターフェースの一例を示す図である。いくつかの実施形態において、工程406は、
図7の例を用いて実施される。いくつかの実施形態では、ゴールポイントが選択され、スタートポイントに用いたのと同じ技術によって格納される。例に示すように、マーカ703は、セグメントの選択されたゴールポイント(例えば、終点)を示す。いくつかの実施形態において、選択されたゴールポイントは、GPS座標のセットとして格納される。いくつかの実施形態において、選択されたスタートポイントは、部分的にスタートポイントから得られた仮想ゴールラインと共に格納される。
【0072】
図8は、いくつかの実施形態に従って、地図上の一連の選択を用いてセグメントを定義するためのユーザインターフェースの一例を示す図である。いくつかの実施形態において、図の例は、工程302を実行するために用いることができる。いくつかの実施形態において、セグメントは、ユーザインターフェースの地図上で選択を直接行うことによって定義できる。
図5、
図6、および、
図7で示したようなセグメント定義技術とは対照的に、
図8の例のセグメント定義技術は、記録されたエフォートを必要としない。例に示すように、ユーザは、セグメントを示すために地図上の経路(例えば、「Montebello Rd」)に沿って順番にマーカ802ないし818をドロップした。マーカ802から818の地理的情報のセットは、地図アプリケーション(例えば、Google Maps)から取得され、セグメントとして格納されうる。いくつかの実施形態において、セグメントのために最初にドロップされたマーカがスタートポイントとみなされ、最後にドロップされたマーカがゴールポイントと見なされる。
【0073】
図9は、いくつかの実施形態に従って、一連のGPS情報を最小外接矩形(MBR)に変換する一実施形態を示すフローチャートである。いくつかの実施形態において、一連のGPS情報(例えば、地図アプリケーションによってサポートされた地図上の一連の選択に対して、記録されたエフォートに基づいてセグメントを定義するために用いられる)は、1セットの最小外接矩形(MBR)に変換され、セグメントに対して格納される。いくつかの実施形態において、一連のGPS情報は、MBRのセットに変換され、MBRのセットとして格納されたセグメントのR木インデックス化データベースにクエリするために用いられる。
【0074】
一連のGPS情報を1セットのMBRに変換する理由の1つは、様々な実施形態において、MBRを用いて、MBRのR木(Rツリー)インデックス化データベースに対して効率的な境界ボックスクエリを実行できることである。いくつかの実施形態において、(例えば、定義されたセグメントに対する)R木データベースのクエリのための検索入力は、(例えば、エフォートに関連付けられた)MBRであり、クエリは、入力されたMBRと重複する(例えば、セグメントに関連付けられた)MBRを返す。いくつかの実施形態において、エフォートがセグメントと類似する(例えば、一致する)か否かは、境界ボックスクエリを用いて見いだされたそれらのMBRの重複の程度に依存する。いくつかの実施形態において、或るセグメントが別のセグメントと類似するか否かも、それらのMBRの重複の程度に依存する。
【0075】
工程902では、一連のGPS情報が、1セットのタイル上にマッピングされる。いくつかの実施形態において、一連のGPS情報は、GPS追跡機能を備えるデバイスによって記録されたエフォートに由来する。いくつかの実施形態において、一連のGPS情報は、(例えば、ユーザインターフェースで定義された)セグメントに対応する。
【0076】
ユニバーサルタイリング(universal tiling)の周知の技術を用いて、関心のある地理的領域を略均一なタイルに分割する。例えば、各タイルは20メートル四方であってよい。このユニバーサルタイリングスキームを一連のGPS情報に適用して、1セットの対応するタイルを生成する。例えば、GPS座標を含む各タイル(および、2つのかかるタイル間の任意のタイル)が、タイルのセットに含まれる。いくつかの実施形態において、おおよそ同じ地域をカバーする任意の2つの地理的経路が、それぞれのGPS情報のセットに小さい違いがあっても、同じセットのユニバーサルタイル(universal tiles)にマッピングされる。
【0077】
工程904では、任意でタイルを埋めるためにタイルを追加し、連続するタイルのセットを含むGPSポイント間の経路を提供する。例えば、2つの連続的なGPSポイントが、隣接するタイルにマッピングされない場合、連続的なGPSポイントをつなぐラインが横切った任意のタイルをタイルセットに追加することができる(例えば、拡張前にGPSポイント間のタイルを埋めることができる)。
【0078】
工程906では、任意でタイルのセットが拡張される。いくつかの実施形態において、タイルのセットは、GPSデータの差異を補償するために、隣接するタイルを含むように拡張されうる。例えば、工程902でにて成されたタイルセット内の各タイルに隣接する8つのタイルがまだ含まれていなければ、それらのタイルをタイルセットに含めることができる。ただし、タイルのセットは、その他の適切な方法で拡張することもできる。
【0079】
工程908では、1セットのタイルは、1セットのMBRにグループ化される。いくつかの実施形態において、セット内で互いに近いタイルが、1つのMBRにグループ化される。いくつかの実施形態において、MBRの各寸法(例えば、高さ、幅)は、1または複数のタイル全体である。例えば、1セットのタイルを1セットのMBRにグループ化するために、まず、そのセットのタイルを、1セットの重複しない長方形のボックスに結合する。1つのアプローチでは、水平方向に隣接するセルを結合して、幅が広くタイル1つ分の高さを有する1セットのボックスを生成する。次に、各ボックスが、下の行のボックスと比較され、同じ幅および水平位置を有するボックスがある場合には、それと結合される。結果として得られるボックスのセットが、所望のMBRのセットである。ただし、1セットのタイルを1セットのMBRにグループ化する方法は、この例だけに限定されない。
【0080】
いくつかの実施形態において、各MBRは、(例えば、タイリングスキームでは)それぞれの4つの角の座標によって特定される。いくつかの実施形態において、MBRのセットは、セグメントのためのデータベースに格納される。例えば、セット内のMBRは、R木インデックス化データベーステーブルの行に格納できる。セット内のMBRは、それらが表すセグメントに関連付けられた識別子と共に格納されてもよい。
【0081】
しかしながら、いくつかの実施形態において、セグメントは、(MBRに変換された後に格納されるのではなく)対応するセットのGPSデータポイントとして格納されてもよい。
【0082】
図10Aは、いくつかの実施形態に従って、一連のGPS情報を1セットのMBRに変換する例を示す図である。いくつかの実施形態において、
図10Aの例は、一連のGPS情報に処理900を適用した結果である。図の例では、記録された自転車走行が、1セットのGPS座標を含んでおり、座標は小さい黒丸で示されている。GPS座標を含むユニバーサルタイリングスキームの各タイルは、GPS情報がマッピングされたタイルと、連続的なGPSポイントをつなぐ線分が交差する(横切る)任意のタイルとを含むセット内に含まれる。図の例において、タイルのセットに含まれるタイルには、網掛けされている。セット内の各タイルに隣接する8つのタイルも、(以前にタイルが含まれていなかった場合には)拡張されたタイルセットに含められる。次いで、拡張されたセットのタイルは、4つのMBRにグループ化される(MBR1、MBR2、MBR3、および、MBR4)。図の例において、各MBRは、黒く縁取りされている。各MBRは、4つの角を表す(例えば、タイリングスキームの)座標のセット(x1、x2、y1、y2)によって特定されうる。一連のGPS情報がセグメントを定義するよう意図されている場合、対応するセットのMBRは、いくつかの実施形態において、セグメントの識別子と共にR木インデックス化データベースのテーブルに格納されうる。
【0083】
図10Bは、いくつかの実施形態に従って、セグメント情報を格納するためのデータベーステーブルのエントリの一例を示す図である。いくつかの実施形態において、データベースは、R木インデックス化データベースである。例えば、データベースは、MySQL、Oracle、または、Postgresであってよい。いくつかの実施形態において、
図10Bの例は、
図10Aの例で作成された格納済みのMBRのセットを含む。いくつかの実施形態において、セグメントデータベース内の各セグメントは、英数字の識別子と共に格納される。
図10Aの例が、「Old_La_Honda」という識別子を有するセグメントのために1セットのMBRを作成したとする。
図10Bの例に示すように、各MBRは、そのセグメント識別子、その4つの座標、および、占有率と共に格納される。図の例において、占有率とは、セグメントに関連付けられたタイルの数に対する、セグメントに関連付けられMBRに含まれたタイルの数の比である。いくつかの実施形態において、占有率は、百分率で表されてもよい。例えば、
図10Aに示すように、26の網掛けのタイル、すなわち、セグメント「Old_La_Honda」に関連付けられた26のタイルがある。これら26のタイルの内の6がMBR1に含まれているため、データベース内のMBR1の占有率エントリは、「6/26」である。
【0084】
図10Bの例は、セグメントについて4つのエントリ(セット内の各MBRについてのエントリ)しか含んでいないが、実際のセグメントは、経路の長さに応じて、データベースに数千のエントリを含みうる。いくつかの実施形態において、セグメント情報を格納するためのデータベースのエントリは、
図10Bの例に示したのと異なる数の列を含んでもよい。いくつかの実施形態において、データベースに格納されたセグメントの情報セットは、すべてのエフォート(例えば、エフォートデータベースからのエフォート)と、セグメントに一致すると判定されたエフォートの関連データと、を含む。そうすれば、セグメントがデータベースからリトリーブされる時に、運動パフォーマンス(例えば、一致したエフォートおよびそれらの関連データによって表される)にも迅速にアクセスすることができる。
【0085】
図11Aは、いくつかの実施形態に従って、セグメントデータベースで一致するセグメントを検索する処理の一実施形態を示すフローチャートである。
【0086】
いくつかの実施形態では、セグメントが、R木インデックス化データベース内にMBRのセットとして格納される。いくつかの実施形態では、セグメントが、データベース内にGPSデータポイントのセットとして格納される。
【0087】
いくつかの実施形態において、クエリ入力(例えば、一連のGPSデータポイントによって表された地理的経路)が、セグメントデータベースの定義済みセグメントに一致するか否かを判定するために、セグメントデータベースに対してクエリが実行される。本明細書で用いられているように、一連のGPS情報(例えば、エフォートに属するもの)と、別の一連のGPS情報(例えば、セグメントに属するもの)との一致率が、特定の閾値を超えた場合に、それらのGPS情報が一致するものとする。
【0088】
工程1102では、必要に応じて、一連のGPS情報が変換される。いくつかの実施形態において、一連のGPS情報は、エフォート(例えば、GPSを備えたデバイスによって記録されたエフォート)から抽出される。いくつかの実施形態において、GPS情報は、一連の連続的なGPSデータポイントである。いくつかの実施形態において、セグメントは、1セットのMBRなど抽象形態で格納される。セグメントがMBRのセットとして格納される場合、一連のGPS情報も1セットのMBRに変換される。いくつかの実施形態では、セグメントがGPSデータポイントのセットとして格納されるので、GPS情報は別の形態に変換される必要はない。
【0089】
工程1104では、GPS情報を用いて、セグメントデータベースへのクエリが行われる。いくつかの実施形態において、データベースのクエリは、一連のGPS情報に類似したセグメントの部分(例えば、GPSデータポイント、MBR)を返す。
【0090】
いくつかの実施形態において、セグメントは、R木インデックス化データベースにMBRのセットとして格納される。例えば、データベースで検索を行うために、GPS情報から変換されたMBRを用いて、R木インデックス化データベースに対して境界ボックスクエリを実行する。クエリは、入力されたMBRと重複するMBRを返す。重複するMBRは、類似していると考えられる。重複するMBRについて、データベースのテーブル(例えば、
図10Bのテーブル1000)から、それぞれのエントリが返されうる。テーブル1000を参照して、この例で、MBR1、MBR2、および、MBR3(いずれもセグメント「Old_La_Honda」に属する)が、重複すると判定されたと仮定する。したがって、それらのエントリの解析(例えば、入力されたMBRのセットがセグメント「Old_La_Honda」に一致するか否かを判定するための解析)を実行できるように、MBR1、MBR2、および、MBR3のそれぞれの行が返されうる。いくつかの実施形態では、2以上のセグメントに関連付けられた重複MBRが返されてもよい。
【0091】
いくつかの実施形態において、セグメントは、データベースにGPSデータポイントのセットとして格納される。類似する一連のGPSデータポイントを(例えば、許容範囲内で)決定するための様々な検索技術を用いて、データベースで類似のセグメントを見つけることができる。かかる技術の一例では、データベースの各GPSデータポイントは、選択された長さ(例えば、50メートル)の半径で示される許容領域を含むと仮定される。一連のGPS情報に含まれる各ポイントも、選択された長さ(データベースのポイントの半径と同じ長さでありうる)の半径で示される許容領域を含むと仮定される。結果として、各GPSデータポイントは、円の中の領域に広がるものとして考えることができる。続いて、一連のGPS情報内の各ポイントの円形領域を用いて、データベースで(セグメントに関連付けられた)GPSデータポイントに関連付けられた重複する円を検索する。いくつかの実施形態では、重複する円に対応するデータベースのGPSデータポイントが返されうる。いくつかの実施形態では、2以上のセグメントに関連付けられたGPSデータポイントが返されてもよい。
【0092】
いくつかの実施形態において、一連のGPSデータポイントを用いて類似のセグメントを検索するには、MBRおよびR木インデックス化データベースを用いるのに必要とされるよりも多くの計算時間および/または資源が必要で或る。
【0093】
工程1106では、クエリ結果が解析される。いくつかの実施形態において、クエリ結果は、一連のGPS情報がデータベースのセグメントに一致するか否かを判定するために用いられる。いくつかの実施形態において、一連のGPS情報と、返された1または複数のセグメント(の部分)との間の一致率を決定するために、計算が実行される。
【0094】
いくつかの実施形態において、セグメントがMBRとして格納された場合、一致率は、返されたMBRを用いて決定される。いくつかの実施形態において、一連のGPS情報とセグメントとの一致率は、セグメントの重複したMBRの数の、セグメントのMBRの総数に対する比に基づいて計算される。一致率が閾値を超えた場合、一連のGPS情報によって表された地理的経路は、そのセグメントに一致すると見なされる。いくつかの実施形態において、一連のGPS情報とセグメントとの類似度は、返されたMBRの占有率の合計に基づいて計算される。占有率の合計が閾値を超えた場合、一連のGPS情報によって表された地理的経路は、そのセグメントに一致すると見なされる。いくつかの実施形態において、(例えば、工程1104において)クエリの結果として返されたMBRは、データベースのテーブルからの行をそれぞれ含む。
図10Bのテーブルを参照して、この例で、MBR1、MBR2、および、MBR3(いずれもセグメント「Old_La_Honda」に属する)が、重複すると判定されたと仮定する。したがって、MBR1、MBR2、および、MBR3のそれぞれの行が返される。この例において、一連のGPS情報と「Old_La_Honda」セグメントとの類似度は、重複したMBRの占有率の合計に基づいて計算される。MBR1、MBR2、および、MBR3が重複しているので、それぞれの占有率の合計(すなわち、6/26+4/26+10/26)は、20/26すなわち約76.9%である。一致率の閾値が65%である場合、一連のGPS情報は、「Old_La_Honda」セグメントに一致すると見なされる。いくつかの実施形態において、2以上のセグメントについてMBRが返されてもよく、それらのセグメントの各々に対する類似度が決定されうる。
【0095】
いくつかの実施形態において、セグメントがGPSデータポイントのセットとして格納される場合、一致率は、クエリによって返されたGPSデータポイントの数に基づいて決定される。いくつかの実施形態では、クエリによって返されたGPSデータポイントの数の、セグメントに関連付けられたGPSデータポイントの総数に対する比が、特定の閾値を超える場合、一連のGPS情報によって表された地理的経路は、セグメントに一致すると見なされる。いくつかの実施形態において、2以上のセグメントについてGPSデータポイントが返されてもよく、それらのセグメントの各々に対する一致率が決定されうる。
【0096】
いくつかの実施形態において、一連のGPS情報の間の一致率が閾値(例えば、65%)を下回った場合、地理的経路は、セグメントに一致しないと見なされる。いくつかの実施形態では、複数の閾値が存在し、それらの閾値内で、一連のGPS情報がセグメントに一致しうる。いくつかの実施形態において、一連のGPS情報は、低い方の閾値(例えば、65%から79%の間)でセグメントに一致すると、セグメントの穏やかな一致と見なされうる。いくつかの実施形態において、一連のGPS情報は、高い方の閾値(例えば、80%から100%の間)でセグメントに一致すると、セグメントの厳密な一致の候補と見なされうる。いくつかの実施形態において、セグメントの厳密な一致と見なされるには、一連のGPS情報は、高い方の閾値でセグメントに一致するだけではなく、セグメントの仮想のスタートラインおよびゴールラインを横切る必要がある。一連のGPS情報が、セグメントへの緩やかな一致であると見なされた場合、そのGPS情報に関連付けられた地理的経路(例えば、エフォート)が、セグメントによって参照された経路を厳密には辿っていないことを意味する。例えば、セグメントによって区切られた一般的な地形に沿ってのんびりとサイクリングをするつもりのサイクリストは、正確なセグメントから少し逸脱しうる。一連のGPS情報が、セグメントへの厳密な一致であると見なされた場合、そのGPS情報に関連付けられた地理的経路が、セグメントによって参照された経路を厳密に辿ったことを意味する。例えば、自身の記録または他人のパフォーマンスに対して、セグメントを横切るタイム(または、別のパフォーマンス測定値)を競うつもりのサイクリストは、セグメントによって区切られた領域をより厳密に辿る必要がある。また、タイムを競う目的のサイクリストは、セグメントの(一部だけではなく)全長を走ることを保証するために、セグメントの仮想のスタートラインおよびゴールラインを横切る必要がある(もしくは、セグメントがループを形成する場合には、ループセグメントに入ったエントリポイントをもう一回通過する必要がある)。
【0097】
図11Bは、いくつかの実施形態に従って、エフォートをセグメントに対してマッチングする一実施形態を示すフローチャートである。いくつかの実施形態において、処理1150は、いくつかの実施形態に従った工程1106を実行するために用いられる。
【0098】
処理1150の開始時に、工程1104がすでに実行されており、クエリが、セグメントの類似部分(例えば、与えられた許容範囲内の重複したMBRまたはGPSデータポイント)を返したとする。
【0099】
いくつかの実施形態において、エフォートをセグメントに対してマッチングする処理は、工程1152を含み、工程1154(緩やかな一致の決定)の後に終了し、厳密な一致の決定を含まない。いくつかの実施形態において、エフォートをセグメントに対してマッチングする処理は、工程1155から1160(厳密な一致の決定)を含むが、緩やかな一致の決定を含まない。いくつかの実施形態において、エフォートをマッチングする処理は、格納されたセグメントに対するエフォートの緩やかな一致および厳密な一致の両方の決定を含む。
【0100】
工程1152では、エフォートとセグメントとの間の一致率が第1の閾値を超えるか否かが判定される。一致率が第1の閾値未満である(例えば、一致率が65%未満である)場合、エフォートは、セグメントに一致しないと見なされ、処理1150は終了する。一致率が第1の閾値を超える(例えば、一致率が65%を超える)場合、エフォートは、工程1154においてセグメントに対する緩やかな一致であると見なされ、制御は工程1155に進む。
【0101】
工程1155では、エフォートとセグメントとの間の一致率が第2の閾値を超えるか否かが判定される。一致率が第2の閾値を超える(例えば、一致率が80%を超える)場合、エフォートは、セグメントに対する厳密な一致の候補であると見なされ、制御は工程1156に進む。一致率が第2の閾値未満である(例えば、一致率が65%から79%の間である)場合、エフォートは、厳密な一致ではない(緩やかな一致に過ぎない)と見なされ、処理は終了する。
【0102】
工程1156では、エフォートがセグメントのスタートラインおよびゴールラインを横切っているか否かが判定される。スタートラインおよびゴールラインの両方を横切っている場合、エフォートは、工程1160においてセグメントの厳密な一致であると見なされる。しかしながら、ラインの一方または両方を横切っていない場合、処理は終了し、エフォートは、厳密な一致ではない(緩やかな一致に過ぎない)と見なされる。
【0103】
いくつかの実施形態において、エフォートが、ループを形成するセグメント(例えば、ニューヨーク市のセントラルパーク)と比較される場合、ループセグメントには、スタートラインもゴールラインも作成されないので、工程1156は実行されなくてよい。代わりに、いくつかの実施形態において、ループセグメントの厳密な一致の候補と見なされたエフォートについて、エフォートが最初にループセグメントと交差した場所に関連付けられたエントリポイントが、まず決定される。次いで、エフォートが、ループセグメントの決定済みのエントリポイントを2回目に通過したと判定された場合、そのエフォートは、ループセグメントの厳密な一致であると見なされる。
【0104】
図12は、いくつかの実施形態に従って、仮想スタートラインを作成する一例を示す図である。いくつかの実施形態では、定義されたセグメントに対して仮想スタートラインが作成される。いくつかの実施形態において、記録されたエフォートを用いてセグメントが(例えば、処理400によって)定義されると、仮想スタートラインが、GPS情報および選択されたスタートポイントから導出される。いくつかの実施形態において、セグメントがループを形成する場合、セグメントに対して、スタートラインもゴールラインも作成されない。
【0105】
図12の例において、記録されたエフォートは、一連の連続的なGPS座標P1(t0)、P2(t1)、P3(t2)、P4(t3)、および、P5(t4)で表されている。ポイントP1(t0)は、P2(t1)よりも早い時間に通過され、P2(t1)は、P3(t2)よりも早い時間に通過され、以下同様である。スタートポイントは、位置1202に選択されている。選択されたスタートポイントは、P1(t0)の通過後かつP
2(t1)の通過前に配置されている。一連のGPS座標の内の次のGPS座標は、未通過のP2(t1)なので、線形経路1208が、P2(t1)から、選択されたスタートポイントまで引かれている。仮想スタートライン1206は、その中心が、選択されたスタートポイントおよびP2(t1)の間の線形経路1208の中心と重なるような位置に選択される。この例において、仮想スタートライン1206は、90度の角度で線形経路1208と交差しているが、他の角度で交差してもよい。仮想スタートラインの長さは、任意の適切な長さ(例えば、100メートル)に設定されてよい。いくつかの実施形態において、仮想スタートラインは、それに関連付けられたセグメントと共にセグメントデータベースに格納されてよい。いくつかの実施形態において、仮想スタートラインは、ラインの両端の座標のみとして格納されてよい(例えば、2つの座標の間に直線を引くことによってラインを再現できるため)。いくつかの実施形態において、仮想スタートラインは、ラインに沿った密な一連の連続的なGPS座標として格納されてもよい。
【0106】
いくつかの実施形態において、ゴールラインが、前述の技術と同様に作成および格納されうる。
【0107】
いくつかの実施形態において、スタート(またはゴール)ラインは、エフォートの一連のGPS情報がラインと交わると判定されうる場合に横切られたと見なされる。例えば、一連のGPS情報が離散的なポイントで形成されている場合でも、2つの連続したポイントがラインの異なる側に存在するとわかれば、関連する経路が、ラインを横切っていると見なされる。いくつかの実施形態において、一連のGPS情報内の1つのポイントがラインに近い(例えば、与えられた距離以内である)とわかれば、対応する記録が示唆しなかったとしても、実際の身体活動が仮想ラインを横切ったか否かを判定するために、エフォートについて既知の関連データ(例えば、速度、勾配、心拍数)に基づいて、一連のGPS情報の補外を行うことができる。例えば、いくつかのGPS対応デバイスは、他と異なる頻度でGPS情報を記録する。したがって、用いた記録デバイスのタイプに応じて、記録されるGPS情報の間にいくらかの相違が生じうる。しかしながら、他の既知のデータに基づいてGPS情報を補外することにより、少なくとも一部の相違を補償して、実際にラインを横切ったアスリートがそれを認められることをより確実にすることができる。
【0108】
図13は、いくつかの実施形態に従って、一致するエフォートを決定するための処理の一実施形態を示すフローチャートである。
【0109】
工程1302では、エフォートがセグメントと比較される。いくつかの実施形態において、セグメントは、すでに定義されている。いくつかの実施形態において、セグメントは、データベースに格納されている。いくつかの実施形態において、セグメントは、1セットのMBRとして格納されている。いくつかの実施形態において、セグメントは、一連のGPSデータポイントとして格納されている。いくつかの実施形態において、エフォートは、格納済みの過去のエフォートのデータベースから取得される。
【0110】
様々な実施形態において、エフォートは、一致率を決定するために、セグメントと比較される。いくつかの実施形態において、エフォートに関連するGPS情報が取得される(例えば、データベースから)。いくつかの実施形態において、セグメントが1セットのMBRとして格納されている場合、エフォートのGPS情報も1セットのMBRに変換され、その後に比較される。いくつかの実施形態において、セグメントが1セットのGPS情報として格納されている場合、エフォートのGPS情報は変換される必要がない。
【0111】
いくつかの実施形態において、一致率が閾値を超えた場合、エフォートは、セグメントに一致すると見なされる。いくつかの実施形態では、エフォートが、2つの異なるレベル(緩やかな一致および厳密な一致)でセグメントと一致しうる。エフォートが低い方の閾値でセグメントに一致した場合、そのエフォートは、緩やかな一致であると決定され、エフォートとセグメントとの間の地理的経路の類似度がより低いことが示唆される。エフォートが高い方の閾値でセグメントと一致し、さらに、エフォートがセグメントのスタートラインおよびゴールラインの両方を横切ると判定された(もしくは、セグメントがループを形成する場合には、エフォートがループセグメントへのエントリポイントを2回目に通過したと判定された)場合、そのエフォートは、厳密な一致である。いくつかの実施形態において、厳密な一致は、エフォート(の少なくとも一部)と、セグメントとの間の地理的経路の類似度が高いことを示す。いくつかの実施形態では、セグメントに一致するエフォートに関連付けられた識別子が、セグメントと共に格納される。いくつかの実施形態では、エフォートに一致するセグメントの識別子が、エフォートと共に格納される。
【0112】
工程1304では、セグメントと比較すべきさらなるエフォートがあるか否かが判定される。いくつかの実施形態では、格納されたエフォートすべてが、セグメントと比較される。いくつかの実施形態では、格納されたエフォートのサブセットのみが、セグメントと比較される。いくつかの実施形態では、セグメントと比較されたエフォートすべてが、1ユーザに関連している。いくつかの実施形態では、セグメントと比較されたエフォートは、2以上のユーザに関連している。
【0113】
工程1306では、一致したエフォートに関連するデータが集計される。いくつかの実施形態において、(例えば、緩やかな一致または厳密な一致として)セグメントに一致すると見なされたエフォートについて、それらの関連データ(例えば、心拍、速度、心拍数、仕事率、タイム)に(例えば、エフォートデータベースで)アクセスして集計する。例えば、集計されたデータは、別のデータベースに一時的に格納されてよい。
【0114】
工程1308では、集計されたデータが解析される。いくつかの実施形態では、一致したエフォートの集計済みデータを用いて、計算が実行される。例えば、平均心拍数、平均速度、平均タイム、平均仕事率、および/または、平均勾配が計算されうる。いくつかの実施形態において、各エフォートの関連データのセットは、一致したエフォートのソート済みリストを作成するために、他の各エフォートの関連データのセットと比較される(例えば、そのリストは、関連データの任意の1つの測定値に基づいてソートされうる)。例えば、ソートされたリストは、最速タイムから降順に並べたエフォートのリストを含みうる。もしくは、別の例において、ソートされたリストは、最高仕事率から昇順に並べたエフォートのリストを含みうる。例えば、ソートされたリストは、最近記録されたエフォートのリストを含みうる。いくつかの実施形態において、集計されたデータの解析結果が、(例えば、ユーザインターフェースに)表示されうる。表示は、表および/または画像を含みうる。
【0115】
図14は、いくつかの実施形態に従って、一致したエフォートについて解析されたデータの表示の一例を示す図である。いくつかの実施形態において、
図14の例は、一致するエフォートが決定された選択済みのセグメントについて表示されている。言い換えると、セグメントにマッチングされた各エフォートは、各エフォートがセグメントによって参照された地理的経路を辿ったと見なされたことを示唆する。
図14の例は、(例えば、デバイスの)ユーザインターフェースに表示されうる。例において、エフォートに関連する身体活動はサイクリングであるため、各エフォートを走行と呼ぶこととする。セクション1402は、ユーザ、日付(Date)、心拍数(HR)、仕事率(Watts)、および、タイム(Time)を含む最近の走行(Latest Rides)のリストを含む。セクション1404は、タイムでソートされた走行のリストであり、セグメントを走り終えた最速タイムが最初にリストされている。セクション140
4のリストは、「順位表」の一例である。
【0116】
地理的経路をセグメントとして定義することにより、その経路上での運動パフォーマンスの比較のために、セグメントを容易に参照することができる。いくつかの実施形態において、ユーザは、自分自身の身体活動から記録されたGPSデータを用いてユーザインターフェースでセグメントを定義することができる。いくつかの実施形態において、ユーザは、地図上で選択を行うことにより、ユーザインターフェースでセグメントを定義することができる。どのようにセグメントが定義されても、いったん定義されると、身体活動(例えば、エフォート)の格納済みの履歴にアクセスして、セグメントとマッチングすることができる。一致するエフォートの関連データが集計され、セグメントに関連するすべての身体活動の全部または一部を表すテーブルまたは画像に提示されうる。いくつかの実施形態では、記録された活動が、定義されたセグメントを含むのか一致するのかを、同じユーザまたは別のユーザが、後にチェックすることができる。後のチェックにより、ユーザは、セグメントが開始または終了する場所を正確に知る必要なしに、自分の記録済みの活動を定義および格納済みのセグメントに対して自動的にマッチングできるという恩恵を受けうる。
【0117】
従来のシステムを用いて、ユーザのGPS位置およびユーザの他のデータポイントに基づいて解析を行っても、身体活動時の他のユーザとのリアルタイムなフィードバックの比較をサポートすることはできない。なぜなら、かかる解析は、以前は、ユーザのGPSデバイスをコンピュータに接続できるまで実行できなかったからである。
【0118】
セグメントに関連する現行活動のリアルタイムなフィードバックを提供することが開示されている。様々な実施形態において、ユーザが、1または複数のセグメントに一致する現行活動(例えば、サイクリング、ランニング)を実行している間に、定義および格納されたセグメントを用いて、ユーザのためにリアルタイムでフィードバックを生成することができる。いくつかの実施形態において、「リアルタイム」は、ユーザが現行活動をまだ続けている間に、デバイスでユーザにフィードバックすなわち通信を提供することを含む(すなわち、フィードバックは、現行活動が継続している間に、ユーザに提供される)。様々な実施形態において、フィードバックは、フィードバックを求めるユーザによる入力を必要とすることなしに、ユーザの現行活動中に、ユーザに提供される。その代わり、いつ、どのイベントに応答して、どのタイプのコンテンツを、ユーザの活動中に提供するのかなどを示すパラメータが、ユーザによって、または、デフォルト設定によって設定されうる。フィードバックのタイプの例は、一致したセグメントでのそれまでのユーザの現在のパフォーマンスと、そのセグメントでのユーザ自身の履歴パフォーマンスデータまたは他のユーザの履歴パフォーマンスデータとの比較、近くのユーザおよび/またはセグメントの検出、ならびに、それまでのセグメントでのユーザのパフォーマンスに関するユーザ個人の成果の指摘を含みうる。結果として、ユーザは、活動を行っている最中に、セグメントのマッチング/発見または比較などを能動的に開始する必要なしに、一致した1または複数のセグメントでのユーザの現在のパフォーマンスに基づいたフィードバックと、一致したセグメントに関する他の情報とを享受することができる。例えば、身体活動中に、ユーザは、関心を持たないこともあるし、ユーザの現行活動に関するフィードバックの受信をユーザが手動で開始することが実際的ではない場合もある。
【0119】
図15は、いくつかの実施形態に従って、セグメントに関連する現行活動中にリアルタイムのフィードバックを提供するためのシステムの一実施形態を示す図である。この例において、システム1500は、デバイス1502、デバイス1504、ネットワーク1506、および、セグメントマッチングサーバ1508を備える。ネットワーク1506は、様々な高速データネットワークおよび/または遠隔通信ネットワークを含む。いくつかの実施形態において、システム1500は、さらなる構成要素および/または機能に加えて、少なくともシステム200の構成要素を備える。
【0120】
いくつかの実施形態において、ユーザは、身体活動を行う時に、デバイス1502およびデバイス1504の一方または両方を携帯することができる。例えば、一方または両方のデバイスが、ユーザの身体に身につけられてもよいし(例えば、ユーザの腕にストラップで固定)、身体活動中にユーザが用いる乗り物(例えば、自転車など)に取り付けられてもよい。
【0121】
デバイス1502およびデバイス1504の一方または両方が、位置情報(例えば、GPSデータ)および/または身体活動に関連するその他のデータ(例えば、速度、心拍数)を記録しうる。デバイス1502および/またはデバイス1504の例としては、GPSデバイス(例えば、Garmin Forerunner 110、205、301、305、310XT、405、405CX、および、Garmin Edge 305、605、705、500など、Garmin ForerunnerおよびEdgeデバイス)、GPS記録アプリケーション(例えば、MotionX、Endomondo、および、RunKeeper)を備えたスマートフォン(例えば、AndroidデバイスまたはApple iPhoneデバイス)などの携帯電話、コンピュータ、タブレットデバイス、および/または、その他の汎用コンピュータデバイスおよび/または専用コンピュータデバイスが挙げられ、それらは、通例、一般的なプロセッサと、メモリまたはその他のストレージ要素と、ネットワークまたは出入力(I/O)機能と、統合GPS機能またはサポートもしくはGPSデバイスまたはGPS機能のためのインターフェースと、を備える。
【0122】
いくつかの実施形態において、デバイス1502は、ネットワーク1506を介してリモートサーバ(セグメントマッチングサーバ1508など)とデータをやり取りする機能を備えるが、デバイス1504と通信する機能は備えない。例えば、デバイス1502は、Bluetooth(登録商標)などの無線通信用の近距離プロトコルを用いて、または、有線接続を用いて、デバイス1504と通信することができる。かかる実施形態において、デバイス1504は、ネットワーク1506を介してセグメントマッチングサーバ1508とデータをやり取りする機能を備える。したがって、デバイス1502は、デバイス1504を介してセグメントマッチングサーバ1508とデータをやり取りすることができる。かかる実施形態について、デバイス1502は、ユーザの位置情報および/または身体活動に関連するその他のデータを記録した後に、記録した情報をデバイス1504に送信する非ネットワークデバイスであってよい。例えば、デバイス1504は、記録された情報をデバイス1502から(例えば、インストール済みのアプリケーションを用いて)受信した後に、記録された情報をセグメントマッチングサーバ1508に送信することができるネットワークデバイス(スマートフォンまたはタブレットデバイスなど)であってよい。さらに、セグメントマッチングサーバ1508から送信された情報(例えば、フィードバックデータ)が、デバイス1504によって受信され、次いで、デバイス1502に送信される。
【0123】
いくつかの実施形態において、デバイス1502は、ネットワーク1506を介してデータを送受信する機能を備えており(すなわち、1502はネットワークデバイスであり)、デバイス1504は、任意選択的にシステム内に含まれる。デバイス1502が、位置情報および/または身体活動に関連するその他のデータを記録して、ネットワーク1506を介してデータを送受信することができる実施形態において、デバイス1502は、デバイス1504を介することなしに、例えば、記録された情報をセグメントマッチングサーバ1508に送信し、例えば、記録された情報の解析結果をセグメントマッチングサーバ1508から受信することができる。
【0124】
身体活動に関連する情報を記録して、セグメントマッチングサーバ1508と通信するために、2以上のデバイス(上記の例に記載したデバイス1502およびデバイス1504の組み合わせなど)を利用できるが、図面および以下の説明では、例示のために、1つのデバイス(ネットワーク機能を有するデバイス1502)のみを用いて、情報を記録してセグメントマッチングサーバ1508と通信することについて記載する。
【0125】
様々な実施形態において、デバイス1502(または、そのアプリケーション)は、ユーザが身体活動を行う間に、位置情報(例えば、GPSデータ)、および/または、身体活動に関連するその他のデータを記録するよう構成される。いくつかの実施形態において、ユーザが現在行っている身体活動を、「現行活動」と呼ぶこととする。身体活動の例としては、サイクリング、ランニング、および、スキーが挙げられる。いくつかの実施形態において、GPS情報は、一連の連続的かつ離散的なGPSデータポイント(例えば、緯度および経度)を含み、各ポイントに対してタイムスタンプを備える。いくつかの実施形態において、関連データは、標高、心拍数、仕事率/ワット数(例えば、消費されたエネルギ)、タイム、速度(例えば、セグメントおよび/またはルートごとの平均および/または最大速度、例えば、平均速度はタイムおよびGPS情報から導出されうる)を含むが、これらに限定されない。いくつかの実施形態において、関連データの少なくとも一部を、「パフォーマンスデータ」と呼ぶこととする。関連データは、様々な粒度で記録されうる。例えば、関連データは、各GPSデータポイント、活動全体(例えば、関連データが測定値の平均を含む)、または、活動の一部に対応しうる。
【0126】
いくつかの実施形態において、身体活動時にデバイス1502を用いる前に、デバイス1502が身体活動の前または最中にセグメントマッチングサーバ1508とデータをやり取りする方法を決定するために、デバイス1502のパラメータ(または、デバイス1502のアプリケーションに関連するユーザのアカウント)が設定される。デバイス1502のパラメータ(または、デバイス1502のアプリケーションに関連するユーザのアカウント)は、ユーザによって、および/または、プリセット設定によって設定できる。いくつかの実施形態において、デバイス1502に関連するパラメータは、ユーザが身体活動を開始する前にデバイス1502でセグメントマッチングサーバ1508からどのデータを受信するのかを決定するために設定されてよい。いくつかの実施形態において、パラメータは、ユーザにとって関心のないデータをフィルタアウトしたり、ユーザにとって関心のあるデータのタイプを特定したりすることができる。例えば、身体活動の前にセグメントマッチングサーバ1508から取得されたデータは、デバイス1502にローカルに格納され(例えば、キャッシュまたはその他の方法で一時的に格納され)、身体活動中にデバイス1502によって記録された情報を処理するために利用されうる。いくつかの実施形態において、デバイス1502に関連するパラメータは、身体活動中にセグメントマッチングサーバ1508と、いつ(例えば、どのような頻度で)どのタイプのデータをやり取りするのかを決定するために設定されてもよい。デバイスおよび/またはユーザに関連するパラメータは、例えば、デバイス1502で設定されうる、および/または、他で設定されてデバイス1502にダウンロードされる。いくつかの実施形態では、設定されたパラメータのコピーも、セグメントマッチングサーバ1508に送信されて保持される。例えば、身体活動中にデバイス1502から送信するデータは、記録されたGPSデータと、それまでのユーザの現行活動に関連するその他のデータとを含みうる。また、例えば、デバイス1502でセグメントマッチングサーバ1508から受信するデータは、デバイス1502から送信された記録済みのGPSデータおよびその他のデータの処理に少なくとも部分的に基づいた様々なタイプのリアルタイムフィードバックを含む。いくつかの実施形態において、デバイス1502は、新しいおよび/または更新された記録済みの情報をセグメントマッチングサーバ1508に連続的(例えば、定期的)に送信し、セグメントマッチングサーバ1508は、更新されたフィードバックデータをデバイス1502に連続的に戻しうる。いくつかの実施形態において、フィードバックデータは、ユーザの現行活動に関連する記録済みの情報が一致または近似すると判定された1または複数のセグメントを含む。いくつかの実施形態において、フィードバックデータは、現行活動でのユーザのパフォーマンスと、ユーザの現行活動が一致すると判定された1または複数のセグメントについて格納された(例えば、そのユーザまたは他のユーザの)履歴または同時のパフォーマンス情報との比較結果を含む。いくつかの実施形態において、フィードバックデータは、他のユーザが行う同時の活動に関連する通知および招待、ならびに/もしくは、ユーザの個人的な成果の指摘を含む。上記以外のタイプのフィードバックデータが、デバイス1502で受信されてもよい。いくつかの実施形態では、デバイス1502で受信されたデータ(例えば、フィードバックデータ)の少なくとも一部が、画像、テキスト、および/または、オーディオビジュアルを用いて、リアルタイムでユーザに提示される。例えば、デバイス1502のユーザインターフェースが、フィードバックデータからの比較結果を表示して、デバイス1502の音声出力が、比較結果の読み上げを出力することができる。
【0127】
様々な実施形態において、セグメントマッチングサーバ1508は、セグメントマッチングサーバ106の機能と、さらなる機能とを有する。いくつかの実施形態において、セグメントマッチングサーバ1508は、デバイス1502から受信したGPSデータが1または複数の定義されたセグメントと一致するか否かを判定するよう構成されている。例えば、セグメントマッチングサーバ1508は、それまでにデバイス1502から受信したGPSデータの少なくとも一部がセグメントの少なくとも一部を横切る(例えば、GPSデータが、現行活動中のユーザがセグメントに関連する指定済みのスタートラインを横切ったことを示唆する)という判定に基づいて、受信したGPSデータがセグメントに一致すると判定できる。いくつかの実施形態において、ユーザの現行活動について記録された位置情報がセグメントに一致すると判定された場合、そのユーザは、一致したセグメント上に存在する(すなわち、そのセグメントに沿って進んでいる)と推定される。いくつかの実施形態において、一致するセグメントが決定されると、セグメントマッチングサーバ1508は、ユーザの現行活動に基づいてデバイス1502から受信した現在のパフォーマンスデータとの比較に用いるために、一致したセグメントに関連する格納済みの履歴または同時パフォーマンスデータをリトリーブするよう構成されている。セグメントマッチングサーバ1508は、比較結果の少なくとも一部をフィードバックデータの一部としてデバイス1502に送信するよう構成されている。いくつかの実施形態において、セグメントマッチングサーバ1508は、それまでのユーザの現行活動に関する受信データに一致する1または複数のセグメントに少なくとも部分的に基づいて、他のタイプのフィードバック(例えば、他のユーザの同時進行の活動に関連する通知および招待、および/または、ユーザデータについての個人的な成果の指摘)を生成するよう構成されている。いくつかの実施形態において、セグメントマッチングサーバ1508は、セグメントマッチングを実行する、および/または、ユーザに関連して設定されたパラメータに基づいて、そのユーザのためのフィードバックデータを生成するよう構成される。いくつかの実施形態において、セグメントマッチングサーバ1508は、時間と共に更新されてデバイス1502から受信されるGPSデータおよびその他の関連データに基づいて、生成されたフィードバックデータを更新するよう構成されている。
【0128】
図16は、いくつかの実施形態に従って、ユーザが活動を行う間にシステム1500を利用する様子を示す図である。例において、ユーザ1600は、サイクリング活動を行っている。ユーザ1600が、サイクリング中にシステム1500のデバイス1502を利用していると仮定する。その活動を開始する前に、ユーザ1600は、ユーザの関心に基づいて、リモートサーバにデータを送信してフィードバックデータを受信するか、または、活動中にデバイスでローカルにフィードバックを生成するか、セグメントとの一致、他のユーザ、比較のタイプなどに関するデバイス1502のパラメータをすでに設定している。ユーザ1600は、経路に沿ってサイクリングしている時に、自分がセグメントに沿って進んでいるか否か、そして、セグメントがユーザ1600のサイクリング経路に対してどこに位置しているかを知る必要はない。しかしながら、デバイス1502を用いれば、ユーザ1600は、ユーザ1600の活動中にデバイス1502にフィードバックを提示されうる。例えば、図に示すように、ユーザ1600は、ユーザ1600が現在どのセグメントを走っているのか(“Old La Honda”)、および、ユーザ1600が現在セグメントのどの場所にいるのか(「セグメント“Old La Honda”の25%に到達しました」)を示すフィードバックデータをデバイス1502で提示されうる。ユーザ1600は、活動中にフィードバックを開始することも問い合わせることも必要なしに、セグメントに沿って進む間、連続的(例えば、定期的および/または設定されたイベント時)に、更新されたフィードバックおよび他のタイプのフィードバックデータ(例えば、「今までの最低心拍数で”Old La Honda≡を走行しています!」)を受信することができる。ユーザ1600が身体活動中に受信するフィードバックは、時に、ユーザ1600がセグメントの残り部分で自分のパフォーマンスを変化させる動機付けまたはそのたの要因となりうる。例えば、ユーザ1600が、「”Old La Honda”のトップより3秒だけ前にいます」などのフィードバックを受信した場合、ユーザ1600の目標であるならば、速度を上げてセグメントのトップに追いつくまたは追い越すように動機づけられる。この例に示すように、ユーザの現行活動中にシステム1500を利用すれば、ユーザが活動の終了後にしか知り得なかったユーザのパフォーマンスに関する情報をリアルタイムにユーザに知らせる助けとなりうる。
【0129】
図17は、いくつかの実施形態に従って、セグメントマッチングサーバの一実施形態を示す図である。いくつかの実施形態において、セグメントマッチングサーバ1508は、
図17の例を用いて実装される。例に示すように、セグメントマッチングサーバ1508は、上述のセグメントマッチングサーバ106と同じ構成要素をいくつか(セグメントデータベース202および定義エンジン206)備えており、さらに、設定パラメータデータベース1702、フィードバックエンジン1704、エフォート/現行活動データベース1703、および、マッチングエンジン1708など、さらなる構成要素を備える。
【0130】
いくつかの実施形態において、設定パラメータデータベース1702は、様々なデバイスおよび/またはユーザに関連する設定パラメータのセットを格納するよう構成されている。いくつかの実施形態では、データ(例えば、記録されたGPSデータおよび関連データ)がセグメントマッチングサーバ1508に送信される方法およびデータ(例えば、フィードバック)がセグメントマッチングサーバ1508から受信される方法に関する1セットのパラメータが、特定のユーザおよび/または特定のデバイスのためにユーザによって設定される。いくつかの実施形態において、パラメータのセットは、ユーザが設定したパラメータと、事前設定されたパラメータ(例えば、デバイス1502などのデバイスの製造業者によって決定されたパラメータ)とを含む。パラメータの例は、セグメントに関連するデータがデバイスにダウンロードされるか否か、そしていつダウンロードするか、特定のユーザが関心を持つセグメントに関連付けられた識別子、特定のユーザが自分自身のパフォーマンスと比較したいと思うパフォーマンスデータ(例えば、履歴または同時のパフォーマンスデータ)を有する他のユーザに関連付けられた識別子、現行活動に関連するユーザのパフォーマンスデータと、別のセットのパフォーマンスデータとの間の比較のタイプ;記録済みのGPSおよびその他のデータがデバイスから送信される頻度、デバイスから送信されるべき記録済みのGPSおよびその他のデータを送信するための1または複数のトリガ、デバイスのバッテリ寿命の節約に関する関心度、ユーザが関心を持つ個人的成果のタイプ、特定のユーザのパフォーマンスを1または複数のソーシャルメディア/ネットワークプラットフォームで共有するか否か、そしていつ共有するか、複数のユーザの間での同時性に関する時間の範囲(例えば、その定義は、身体活動を行っている少なくとも2人のユーザが互いに同時進行であると見なされる時間または距離の範囲を示す)、を含みうる。いくつかの実施形態では、1セットのパラメータが、その設定の対象となったユーザおよび/またはデバイスに関連付けられた識別子と共に格納される。
【0131】
いくつかの実施形態において、エフォート/現行活動データベース1703は、エフォートデータベース204の機能と、さらなる機能とを有する。いくつかの実施形態において、エフォートデータベース204について上述したように記録済みのエフォートのデータを格納することに加えて、エフォート/現行活動データベース1703は、ユーザの現行活動(すなわち、進行中の活動)について記録されたGPSデータおよび関連データも格納する。様々な実施形態において、ユーザの現行活動について記録されたGPSデータおよび関連データは、ユーザが現行活動をさらに進めるにつれて経時的にユーザの現行活動について記録された新規および/または更新GPSデータおよび関連データで、更新および/または追加される。例えば、ユーザ「Barry」の現在のランニング活動中に、時間t0までに記録されたGPSデータおよび関連データが、セグメントマッチングサーバ1508に送信され、エフォート/現行活動データベース1703のエントリに格納されうる。次いで、Barryの現在のランニング活動についてその後の時間t1までに記録されたGPSデータおよび関連データ(すなわち、時間t0から時間t1までに記録されたデータのみ)が、セグメントマッチングサーバ1508に送信され、エフォート/現行活動データベース1703の対応するエントリに追加される。
【0132】
様々な実施形態において、マッチングエンジン1708は、マッチングエンジン208の機能と、さらなる機能とを有する。いくつかの実施形態において、マッチングエンジン1708は、ユーザが身体活動を進めるにつれて経時的にデバイス1502などのデバイスで記録された新規または更新されたGPSデータおよびその他のデータを連続的(例えば、定期的および/または様々な設定済みのトリガイベント時)に受信するよう構成されている。いくつかの実施形態において、マッチングエンジン1708は、それまでにデバイスから受信したGPSデータを用いて、GPSデータが1または複数の定義されたセグメントの少なくとも一部を横切っているか否かを判定する。例えば、マッチングエンジン1708は、GPSデータにより、記録されたGPSデータの少なくとも一部が、セグメントに対して定義された仮想スタートラインと交差したことが示された場合に、現行活動について記録されたGPSデータがそのセグメントに一致する(すなわち、ユーザが、そのセグメントの経路上または非常に近くに存在する)と判定することができる。セグメントの仮想スタートラインを定義して、仮想スタートラインが横切られたか否かを判定することは、
図12を参照して上述した技術を用いて実行することが可能であり、例えば、記録されたエフォートに関連付けられたGPS情報を用いる代わりに、それまでに現行活動について記録されたGPSデータを用いて、2つの連続したポイントが仮想スタートラインの異なる側にあるか否かを判定する。異なる側にあれば、現行活動は、セグメントの仮想スタートラインを横切ったと判定されるため、そのセグメントと一致すると判定される。セグメントがループを形成する別の実施形態では、ループセグメントの仮想スタートラインを定義する代わりに、現行活動について記録されたGPSデータを用いて、現行活動が(例えば、ループセグメントの少なくとも一部を少なくとも横切ったことにより)ループに入ったか否かを判定することができる。現行活動について記録されたGPSデータが、ループセグメントの少なくとも一部を横切ったと判定された場合、その現行活動は、ループセグメントに一致すると判定される。いくつかの実施形態において、1または複数のセグメントが、現行活動について記録されたGPSデータに一致すると判定されうる。いくつかの実施形態において、時間の経過と共に、現行活動について記録されたさらなる新規および/または更新GPSデータが受信されるので、マッチングエンジン1708は、新規および/または更新GPSデータを用いて、ユーザの現行活動に関連するGPSデータが、その現行活動に一致すると以前に判定されたセグメントにまだ一致しているか否か(すなわち、ユーザがまだ、そのセグメントに関連する経路上にいるか否か)を判定することができる。ユーザの現行活動がまだセグメントに一致していると判定された場合、マッチングエンジン1708は、ユーザがセグメントに沿ってどれだけ進んだかを決定できる。例えば、それまでに受信されたユーザの現行活動について記録されたGPSデータに基づいて、マッチングエンジン1708は、ユーザがセグメントの70%まで到達したと決定しうる。いくつかの実施形態において、マッチングエンジン1708は、現在活動を行っているユーザに関連する1セットの設定済みのパラメータ(設定パラメータデータベース1702からリトリーブされる)を用いて、マッチングしたいと思うセグメントとしてユーザが特定した1または複数のセグメントを決定するよう構成されている。次いで、マッチングエンジン1708は、データベース内のすべての利用可能な/定義済みのセグメントではなく、ユーザにとって関心のあるセグメントのみと、ユーザの現行活動のGPSデータをマッチングすることができる。いくつかの実施形態において、マッチングエンジン
1708は、一致した1または複数のセグメントに関連付けられた識別子をフィードバックエンジン1704に送信するよう構成されている。
【0133】
フィードバックエンジン1704は、ユーザに関連付けられている1セットの設定済みパラメータと、ユーザの現行活動と一致した少なくとも1つのセグメントに関するデータとを用いて、ユーザが利用しているデバイスに送信するフィードバックデータのタイプを決定するよう構成されている。いくつかの実施形態において、フィードバックエンジン1704は、ユーザの識別子に関連付けられている設定済みパラメータのセットを設定パラメータデータベース1702からリトリーブする。いくつかの実施形態において、フィードバックエンジン1704は、ユーザの現行活動と一致するセグメントに関連付けられた識別子をマッチングエンジン1708から受信する。いくつかの実施形態において、一致したセグメントに関連付けられている受信済みの識別子を用いて、フィードバックエンジン1704は、ユーザおよび/または同じセグメントに一致した他のユーザのエフォートに関する履歴データをエフォート/現行活動データベース1703からリトリーブするよう構成されている。いくつかの実施形態において、フィードバックエンジン1704は、セグメントに一致した他のユーザの現行活動に関して同時並行で得られたデータをエフォート/現行活動データベース1703からリトリーブするよう構成されている。例えば、他のユーザの現行活動のデータは、リトリーブされた設定済みパラメータのセット内の同時性の定義に基づいてユーザと同時性を持つと判定されうる。いくつかの実施形態において、フィードバックエンジン1704は、リトリーブした設定済みパラメータのセットを用いて、ユーザが、一致したセグメントに関するリトリーブされたデータの内の少なくともどのサブセットを、ユーザの現行活動の関連データ(パフォーマンスデータとも呼ぶ)と比較したいのかを決定する。例えば、ユーザの設定済みパラメータは、ユーザが、ユーザの現行活動に関連するユーザのパフォーマンスデータを、一致したセグメント上での自分の友達Carrie、Daniel、および、Ericの履歴または同時パフォーマンスデータと比較したいと思っていることを示唆しうる。いくつかの実施形態において、フィードバックエンジン1704は、リトリーブした設定済みパラメータのセットを用いて、リトリーブした履歴および/または同時データに対して、どのタイプの比較を行うのかを決定することができる。例えば、ユーザの設定済みパラメータは、ユーザが、自分自身のパフォーマンスデータと、友達Carrie、Daniel、および、Ericに関連するパフォーマンスデータとを含む順位表に関するフィードバックデータを受信したいと思っていることを示唆しうる。いくつかの実施形態において、フィードバックエンジン1704は、(リトリーブされた設定済みパラメータのセットで示唆されたように)ユーザが関心を持つセグメントおよび/または別のユーザを近くに検出したことに関する通知を送信するよう構成されている。いくつかの実施形態において、フィードバックエンジン1704は、サードパーティが運営するソーシャルネットワークに通信して、ユーザが現行活動で達成したユーザの特定のパフォーマンスおよび/またはユーザの現行活動の更新された進捗レポートの表示をソーシャルネットワークのプラットフォームに投稿するよう構成されている。いくつかの実施形態において、フィードバックエンジン1704は、上記のタイプ以外のフィードバックデータを提供するよう構成されてもよい。
【0134】
いくつかの実施形態において、デバイス1502は、セグメントデータベース202、定義エンジン206、エフォート/現行活動データベース1703、マッチングエンジン1708、設定パラメータデータベース1702、および、フィードバックエンジン1704の少なくとも一部もしくは等価の機能を備えてよく、それにより、デバイス1502は、ユーザの活動中にセグメントマッチングサーバ1
508と情報をやり取りする必要なしに、デバイス1502でリアルタイムなフィードバックを提供することができる。いくつかの実施形態において、デバイス1502は、ユーザが身体活動を行う前にセグメントマッチングサーバ1508からセグメントデータをプリフェッチしてローカルに格納する。そうすれば、活動の実行中に、プリフェッチ済みのデータに基づいて、フィードバックデータ(例えば、少なくとも一致したセグメントを含むデータ)が生成されうる。
【0135】
図18は、いくつかの実施形態に従って、セグメントに関連する現行活動中にリアルタイムのフィードバックを提供するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理1800は、システム1500で実施される。いくつかの実施形態において、処理1800は、システム1500のデバイス1502で実施される。
【0136】
工程1802では、ユーザの現行活動に関連するセグメントが、それまでに記録された位置情報の少なくとも一部に少なくとも部分的に基づいて決定される。いくつかの実施形態において、位置情報(例えば、GPSデータ)は、ユーザが活動を行っている間にユーザの現行活動(例えば、サイクリングまたはランニング)について記録される。いくつかの実施形態では、ユーザの現行活動の関連データも、ユーザが活動を行っている間に記録される。関連データ(例えば、速度、心拍数、仕事率/ワット、リズム)の少なくとも一部は、現行活動中のユーザパフォーマンスに関連する。経時的に、さらなるGPSデータおよび関連データが、ユーザの現行活動について記録される。ユーザの現行活動中の或る時点に、記録済みのGPSデータの少なくとも一部を用いて、ユーザの現行活動に関連するセグメントが決定される。いくつかの実施形態において、ユーザの現行活動に関連するセグメントは、ユーザの現行活動についてそれまでに記録された位置情報の少なくとも一部が一致するセグメントである。
【0137】
工程1804では、セグメントでのユーザの現行活動に関連するリアルタイムのセグメントパフォーマンス情報が伝達される。いくつかの実施形態において、伝達されるパフォーマンス情報のタイプおよび方法は、ユーザおよび/または位置情報を生成したデバイスに関連する設定済みパラメータのセットに基づいて決定される。いくつかの実施形態において、(例えば、セグメントマッチングによって)セグメントが決定されると、そのセグメントに関連して格納されたデータがリトリーブされる。いくつかの実施形態において、リトリーブされたデータは、ユーザ(現行活動を行っているユーザと、その他のユーザとを含む)の関連セグメント(例えば、一致したセグメント)に関する履歴パフォーマンスデータと、現在セグメント上にいる他のユーザの関連セグメントに関する同時パフォーマンスデータとを含みうる。いくつかの実施形態において、それまでに決定済みセグメントでユーザの現行活動について記録されたパフォーマンスデータは、決定済みセグメントに関連するリトリーブ済みのデータの対応する部分と比較され、比較結果は、伝達されるパフォーマンス情報を含む。例えば、比較結果は、決定済みセグメントでのユーザの履歴パフォーマンスデータをそのセグメントでのユーザの現行活動のパフォーマンスデータと比較することによって生成されうる。いくつかの実施形態において、パフォーマンス情報は、セグメントに沿ったユーザの現在の進捗を含み、それまでに記録された位置情報と、セグメントに沿って地理的位置を特定するデータとに少なくとも部分的に基づいて決定される。いくつかの実施形態において、パフォーマンス情報は、記録された位置情報と、ユーザの現行活動の関連データとに基づいた、達成された個人的成果に関する指摘を含む。いくつかの実施形態において、決定済みのセグメントでのユーザの現行活動に関連するパフォーマンス情報(他の情報の代わりまたは追加で)が、(例えば、位置情報および関連データを生成したデバイスの)ユーザインターフェースの表示もしくは音声および/または映像出力を通して伝達されうる。
【0138】
いくつかの実施形態において、ユーザの現行活動の現在位置に近接/隣接したセグメントに関する情報も伝達される。いくつかの実施形態において、ユーザの現在位置に近接または隣接するセグメントは、ユーザの現行活動に一致しないがユーザの現在位置まで指定された距離の範囲内にあるセグメントを含む。例えば、ユーザは、ユーザの現在位置および/またはユーザが現在進んでいるセグメントに近い(例えば、半径10マイルの範囲内など、指定された距離の範囲内の)推奨セグメントに関心を持ちうる。近くのセグメントをユーザに知らせれば、ユーザが、存在を知らなかったセグメントまたは現在位置の近くに存在することを知らなかったセグメントを発見するのに役立ちうる。いくつかの実施形態では、1または複数の基準に合うセグメントのみが検出されてユーザに推奨されるように、ユーザに対して近くのセグメントの検出/通知/推奨を行うためのフィルタのパラメータが設定されうる。例えば、近くのセグメントの検出に関する基準は、以下の内の1または複数を含みうる。ユーザの現在位置まで特定の距離の範囲内にあるセグメント、ユーザが関心を持っていることを示唆したセグメント、ユーザが関心を持っていることを示唆したセグメントに(例えば、地理、距離、標高、および/または、その他の基準に基づいて)類似していると判定されたセグメント、ならびに/もしくは、1または複数の他のユーザの間で人気があると判定されたセグメント。いくつかの実施形態において、ユーザが現行活動を行うと現在位置が変化するため、近くのセグメントの検出は、ユーザの現行活動の間中、定期的および/またはその他のイベント時に実行されうる。例えば、ユーザが現行活動を進めていくと、新しいおよび/または異なる地理的領域に入る場合があり、そこで、異なるセットの近くのセグメントが検出されてユーザに推奨されうる。いくつかの実施形態において、ユーザの現行活動中に各イベントが起きた時に、設定済みの基準およびユーザの更新された現在位置に基づいて、近くのセグメントの決定がなされうるように、かかるイベントが設定されうる。例えば、イベントは、以前の決定から10分間の経過、または、以前の決定から5マイルの距離の進行であってよい。
【0139】
図19は、いくつかの実施形態に従って、デバイスで記録された情報をリモートのセグメントマッチングサーバに送信することに関するパラメータを設定するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理1900は、システム1900で実施される。いくつかの実施形態において、処理1900は、処理1800の実行前に実施される。
【0140】
処理1900は、サーバがデータを受信して解析を実行できるように、記録済みのGPSデータおよび関連データ(例えば、パフォーマンスデータ)が、記録されているデバイスから、セグメントマッチングサーバ(セグメントマッチングサーバ1508など)に送信される時に関連するパラメータを設定するために利用されうる。いくつかの実施形態において、処理1900の選択は、デバイス1502などのデバイスに関連するユーザインターフェースでユーザによって入力されうる。いくつかの実施形態において、処理1900によって設定されたパラメータは、格納されてユーザの活動中に利用されうる。いくつかの実施形態において、データ送信のためのパラメータは、例に示したものより多くても少なくてもよい。いくつかの実施形態において、設定されたパラメータに基づいて、デバイスが記録済みデータをセグメントマッチングサーバに送信する頻度は、ユーザの現行活動を通して動的でありうる。いくつかの実施形態において、データ送信のために設定されたパラメータが、より高い頻度のデータ送信を定義した場合、サーバから返されるデータ解析結果(すなわち、フィードバックデータ)は、より高頻度/詳細になりうるが、デバイスの電力消費が増大する。しかしながら、データの送信頻度を低くすると、サーバからのフィードバックデータの頻度は低くなるが、デバイスの電力消費は小さくなる。
【0141】
工程1902では、データの送信をトリガするイベントが設定されるか否かが決定される。トリガイベントが設定される場合、制御は工程1904に進む。そうれなければ、制御は工程1906に進む。工程1904では、1または複数のトリガイベントの定義が受信される。例えば、ユーザが休憩している、および/または、ユーザの現行活動に関して異常なことが起きていることを示しうるユーザの現行活動の中断に、1つのトリガイベントが関連付けられうる。
【0142】
工程1906では、データの送信が定期的に行われるか否かが決定される。データが定期的に送信される場合、制御は工程1908に進む。そうれなければ、制御は工程1910に進む。工程1908では、期間定義が受信される。例えば、期間は、データが10秒ごとにサーバに送信されるように設定されうる。
【0143】
工程1910では、データの送信が、デバイスのバッテリ寿命の節約に関する関心度に依存するか否かが決定される。データの送信が、バッテリ寿命の節約に関する関心度に依存する場合、制御は工程1912に進む。そうれなければ、制御は工程1914に進む。工程1912では、バッテリ寿命節約に関連する1または複数の定義が受信される。例えば、デバイスのバッテリ寿命の節約に対するいくつかのレベルの関心度(例えば、バッテリ寿命の節約を強く望むレベルからバッテリ寿命の節約への関心が低いレベルまで)が、記録済みのデータをサーバに送信する頻度についての対応する設定と共に定義されうる。したがって、例えば、バッテリ寿命の節約への強い関心度は、比較的低い頻度でデータをサーバに送信することに関連付けられ、バッテリ寿命の節約への低い関心度は、比較的高い頻度でデータをサーバに送信することに関連付けられる。
【0144】
工程1914では、他のルールが設定されるか否かが決定される。他のルールが設定される場合、制御は工程1916に進む。そうでなければ、処理1900は終了する。例えば、工程1902、1906、および、1910に記載された例以外のルールが定義されうる。
【0145】
図20は、いくつかの実施形態に従って、セグメントデータをサーバからプリフェッチして、デバイスでリアルタイムのフィードバックを生成するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理2000は、システム1500で実施される。
【0146】
処理2000を用いれば、ユーザの身体活動の開始前にセグメントマッチングサーバ(セグメントマッチングサーバ1508など)からどのデータをプリフェッチするのかを決定し、後になってユーザの身体活動中にデバイスでローカルにリアルタイムのフィードバックを生成できるように、かかるデータをデバイスに格納することができる。いくつかの実施形態において、処理2000は、活動のGPSデータが決定されうるように、ユーザの身体活動中にネットワーク接続の利用を必要とするが、セグメントマッチングサーバからプリフェッチしたデータを用いて、フィードバックデータを生成するための解析をローカルで実行できるため、リモートのセグメントマッチングサーバに記録済みのGPSデータおよびその他のデータを繰り返し送信する必要はない。いくつかの実施形態において、処理2000は、リモートのセグメントマッチングサーバと頻繁に通信する必要のある処理よりも、バッテリ寿命の消費が遅く、フィードバックデータを早く提供しうる。
【0147】
工程2002では、任意選択的に、セグメントに関連する1または複数の選択が受信される。いくつかの実施形態において、かかる選択は、デバイスに関連するユーザインターフェースでユーザによって入力されうる。いくつかの実施形態において、工程2002は、ユーザが身体活動を行う前に(また、おそらくは、ユーザが身体活動を始める準備の時に)ユーザがマッチングしたいと思うセグメントのみを選択する機会をユーザに与える。したがって、工程2002において受信されたセグメントに関する選択を用いて、データが格納されている全セグメントではなく、上記のようなセグメントのみを含むデータを決定することができる。
【0148】
いくつかの実施形態において、かかる1または複数の選択は、ユーザにとって関心のあるセグメントにも関連してよく、かかるセグメントは、ユーザが身体活動中にセグメントの近く(例えば、半径10マイル以内など、指定された距離の範囲内)にいる場合に検出される。例えば、ユーザは、ユーザにとって関心のあるセグメントに関連するセグメントデータを選択して、セグメントマッチングサーバからプリフェッチすることが可能であり、そうすれば、ユーザは、身体活動中、かかるセグメントの近くにいる時に通知される。例えば、後に、ユーザが身体活動を行っている時に、セグメントマッチングサーバからデバイスにロードされたプリフェッチ済みのデータは、ユーザの現行活動がセグメントに一致しているか否か、および/または、ユーザの現在位置の近くにセグメントがあるか否かを(例えば、定期的および/またはユーザがXマイル進むごとに)判定するために利用されうる。
【0149】
工程2004では、セグメントに関するデータが、1または複数の選択に少なくとも部分的に基づいてサーバから取得される。いくつかの実施形態において、選択によって特定されたセグメントに関するデータは、セグメントに一致すると判定されたエフォートの履歴パフォーマンスデータ、および、セグメントの各々を規定する地理情報(例えば、タイルまたはMBRのセット)の一方または両方を含む。
【0150】
いくつかの実施形態において、1または複数の選択によって特定されたセグメント以外のセグメントに関するさらなるセグメントデータが取得されてもよい。例えば、選択されたセグメントに類似すると判定されたセグメントに関するデータが取得されてもよい。
【0151】
工程2006では、取得されたデータがローカルに格納される。ユーザの身体活動の開始前に取得されたデータは、デバイスの一時記憶装置または永続記憶装置のいずれかに格納されてよく、そうすれば、後にユーザの身体活動中に利用できるため、ユーザが現在身体活動を行っている間に、一致するセグメントおよび/またはユーザに近い任意のセグメントを決定するために、リモートのセグメントマッチングサーバが必要にならない。
【0152】
工程2008では、ユーザの現行活動に関連する位置情報およびパフォーマンス情報が、格納済みのデータと比較される。例えば、それまでにユーザの現行活動について記録されたGPSデータの少なくとも一部を用いて、ユーザ活動の開始前にセグメントマッチングサーバからプリフェッチされたデータを含むデータがローカルに格納されているセグメントをマッチングすることができる。また、例えば、ユーザの現行活動に一致したセグメントに一致すると判定されたエフォートの履歴パフォーマンスデータを用いて、それまでのユーザの現行活動について記録されたパフォーマンスデータと比較することができる。いくつかの実施形態において、ユーザの現行活動に関する位置情報およびパフォーマンス情報ならびにローカルに格納された情報を用いて、他の判定がなされてもよい。例えば、ローカルに格納されたデータを用いて、ユーザの現在位置に近接/隣接したセグメントが存在するか否かを判定することができる。
【0153】
図21は、いくつかの実施形態に従って、ユーザの現行活動のパフォーマンスデータとの比較のために取得されるデータへのフィルタに関するパラメータを設定するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理2100は、システム1500において実施される。
【0154】
処理2100は、ユーザが関心を持つデータ(例えば、ユーザの現行活動中にセグメントマッチングサーバ1508などのセグメントマッチングサーバから取得される)のタイプを特定するパラメータを設定するために利用されうる。なお、パラメータは、ユーザにとって関心のないデータをフィルタアウトするために利用できる。いくつかの実施形態において、処理2100の選択および定義は、例えば、デバイスに関連するユーザインターフェースでユーザによって入力されうる。いくつかの実施形態において、処理2100は、潜在的にマッチングしたい、または、現行活動中に近くにあるか否かを検出したいと、ユーザが実際に思うセグメントのサブセット(例えば、ユーザは多くのセグメントを含む地理的領域を横切りうるため、セグメントの多くに関心を示さないため)、他のユーザに関連するパフォーマンスデータのサブセット(例えば、ユーザは、友達である特定の他のユーザとのみパフォーマンスの比較を行いたいと思う場合があるため)、および、少なくとも2人のユーザの間の同時性の範囲に関するユーザ所望の定義(例えば、ユーザは、自分のパフォーマンスデータを「同時の」ユーザと比較したいと思い、時間的または空間的に近いと思うユーザのみを含むように同時性の範囲を定義して、そのようなユーザのパフォーマンスデータが同じセグメントの同時ユーザとして比較されうるよう望むため)を特定するために利用される。例に示したようなフィルタとして機能しうるパラメータを設定することにより、大量のデータ(そのほとんどは、デバイスを利用するユーザにとって潜在的に望まれていない)をデバイスでリトリーブすることなしに、焦点を絞った効率的な方法でセグメントマッチングサーバからデータをリトリーブすることができる。
【0155】
工程2102では、マッチングすべき、または、近くにあるか否かを検出すべき1または複数のセグメントに関する1または複数の選択がリトリーブされる。いくつかの実施形態において、セグメントに関する選択は、セグメントの名称(例えば、「Old La Honda」)に対応する識別子であってもよいし、1または複数のセグメントの特性(例えば、距離=30+マイル、難関度=中、セグメント内の傾斜の最大数=5)を記述してもよい。次いで、選択は、選択内に含まれる記述に対応する1または複数のセグメントを検索するために利用されてよく、見つかったセグメントは、ユーザの現行活動の記録済みのGPSデータと比較され、ユーザの現行活動が、見つかったセグメントの内の任意の1または複数のセグメントと一致するか否か、または、近くにあるか否かが判定される。換言すると、選択の対応するセグメントのみを用いて、それらの内のいずれかが、ユーザの現行活動が行われているセグメントであるか否か、および/または、ユーザの現在位置に近いか否かを判定する。
【0156】
工程2104では、検出対象の1または複数の他のユーザに関する1または複数の選択がリトリーブされる。いくつかの実施形態において、他のユーザに関する選択は、ユーザの現行活動が一致したセグメントでの他のユーザのパフォーマンスデータの内、ユーザが同じセグメントでの自分のパフォーマンスデータと潜在的に比較したいと思うのはどのデータであるのかを判定するために利用される。例えば、ユーザBarryは、自分のパフォーマンスデータを友達のデータとのみ比較したいと思うかもしれない。いくつかの実施形態において、他のユーザに関する選択は、ユーザが活動を行っている時にどの他のユーザを検出したいのかを決定する。例えば、ユーザBarryは、友達のCarrie(Carieもデバイス1502などのデバイスを用いる)も近く(例えば、Barryがサイクリングしていない時にBarryと同じセグメントまたは近くのセグメント)で身体活動を行っているという通知をいつ受信するのかを設定することができる。いくつかの実施形態において、検出対象の他のユーザに関する選択は、他のユーザに関連付けられた識別子、例えば、セグメントマッチングサーバのユーザのアカウントに関連付けられたユーザの実際の名前またはニックネーム、を含む。いくつかの実施形態において、検出対象の他のユーザに関する選択は、1または複数の身体的特徴、例えば、年齢の範囲、性別、および、関連する経験レベル、を含む。例えば、ユーザBarryは、自分と似た身体的特徴を持つユーザ(ユーザとすでに友達であってもなくてもよい)を、身体活動を行っていない時に検出したいと思いうる。そうすれば、Barryの活動中にそのようなユーザとパフォーマンスデータの比較が行われるため、Barryは、類似した個人とのパフォーマンスの対比を知ることができる。
【0157】
工程2106では、少なくとも2人のユーザの間の同時性の範囲の定義が受信される。いくつかの実施形態において、同時性の範囲の定義は、その範囲内にある2以上のユーザを同時であると分類するための時間または距離の範囲であってよい。例えば、2人のユーザが、同じセグメントに沿ってサイクリングしていたとしても、異なる時間に出発した場合があり、結果として、各々が所与の時間にセグメントの別の地点にいることになる。しかしながら、ユーザは、2人のユーザが、同時にセグメントをスタートしなかった場合、および/または、並んでサイクリングしていない場合でも、同じセグメントにいる別のユーザを自分と同時であると見なしたい場合がある。したがって、例えば、ユーザは、同時性の範囲を、2人のユーザの間の距離10マイルまで、または、2人のユーザの間のスタート時間の差2分まで、と定義できる。このように、ユーザは、現在同じセグメントに存在するがユーザの1分前にセグメントの仮想スタートラインを横切った別のユーザに関するフィードバックデータを潜在的に受信できる。こうして、ユーザは、他の同時のユーザの知識を受信すると、その同時のユーザに追いつくまたは追い越すよう動機づけられうる。
【0158】
図22は、いくつかの実施形態に従って、ユーザの現行活動にセグメントをマッチングさせるための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理2200は、デバイス1502において実施される。
【0159】
処理2200は、ユーザの現行活動中にユーザがセグメントに一致した場合(すなわち、ユーザがセグメント上で活動を行っている場合)を決定するための技術の一例である。
【0160】
工程2202では、ユーザの現行活動に関する位置情報が記録される。いくつかの実施形態において、位置情報は、GPSデータを含む。いくつかの実施形態において、ユーザの現行活動の位置情報は、ユーザによって、または、情報を記録するデバイス1502などのデバイスのデフォルト設定によって設定された頻度で記録される。いくつかの実施形態において、記録された位置情報は、リモートセグメントマッチングサーバ1508などのリモートセグメントマッチングサーバに送信される。
【0161】
工程2204では、セグメントの仮想スタートラインが横切られたか否かが判定される。いくつかの実施形態では、ユーザの現行活動中にそれまでに記録された位置情報の少なくとも一部を用いて、活動の地理的経路が格納済みのセグメントに対して定義された仮想スタートラインを横切ったか否かを判定する。例えば、仮想スタートラインが横切られたか否かの判定は、
図12で説明した技術に基づいてなされうる。いくつかの実施形態において、工程2204の判定は、セグメントマッチングサーバでなされる。いくつかの実施形態において、工程2204の判定は、セグメントデータ(例えば、セグメントおよびそれらの仮想スタートラインを定義するデータのセット)がデバイスにローカルに格納されている場合、そのデバイスでなされる。仮想スタートラインが横切られたと判定された場合、制御は工程2206に進む。仮想スタートラインがまだ横切られていないと判定された場合、制御は工程2202に戻り、ユーザの現行活動に関するさらなる位置情報が、経時的に記録される。
【0162】
工程2206では、横切られたスタートラインに関連するセグメントが、ユーザの現行活動に一致すると決定される。いくつかの実施形態では、ユーザの現行活動の位置情報が横切ったと判定された仮想スタートラインに関連するセグメントについて、ユーザが、そのセグメントに存在すると仮定される。いくつかの実施形態において、セグメントに一致すると判定されたエフォートに関連する履歴パフォーマンスデータおよび/またはセグメントに一致すると判定された他のユーザの現行活動の同時パフォーマンスデータが、セグメントマッチングサーバからリトリーブされるか、または、かかるデータのコピーがデバイスでローカルに入手可能である場合にはローカルでリトリーブされる。リトリーブされたデータは、例えば、ユーザの現行パフォーマンスデータと、一致したセグメントでのユーザの履歴パフォーマンスデータとの比較結果、ならびに、ユーザの現行パフォーマンスデータと、一致したセグメントでの他のユーザの履歴および/または同時パフォーマンスデータとの比較結果など、ユーザのための1または複数のタイプのフィードバックデータを提供するために利用されうる。
【0163】
いくつかの実施形態において、格納されたセグメントがループを形成し、それに対して定義された仮想スタートラインを持たない場合、ユーザの現行活動がかかるループセグメントに一致するか否かを判定する際には、工程2204も工程2206も実行されなくてよい。代わりに、いくつかの実施形態では、ユーザの現行活動について記録された位置情報がループセグメントの少なくとも一部を横切った(これは、ユーザがループに入ったことを示しうる)場合に、ユーザの現行活動がループセグメントに一致すると判定される。
【0164】
図23は、いくつかの実施形態に従って、セグメントに沿ったユーザの進捗を決定するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理2300は、システム1500において実施される。いくつかの実施形態において、処理1800は、処理2300を用いて実施される。
【0165】
処理2300は、ユーザの現行活動がセグメントに一致する(すなわち、セグメント上で行われている)と(処理2200などの処理で)判定された後に利用されうる。処理2300は、経時的に(例えば、定期的に)、ユーザの現行活動が、一致したセグメント上で継続されているか否かを判定し、そうである場合に、ユーザがセグメントに沿ってどれだけ進んだかを決定するために利用できる。いくつかの実施形態では、ユーザがまだ、一致したセグメント上を進んでいると判定された場合に、その判定に少なくとも部分的に基づいてフィードバックデータが提供される。
【0166】
工程2302では、ユーザの現行活動に関連するセグメントが決定される。いくつかの実施形態において、セグメントは、処理2200などの処理を用いてユーザの現行活動についてそれまでに記録された位置情報の少なくとも一部に一致するセグメントとして決定される。
【0167】
工程2304では、ユーザがまだセグメント上にいるか否かが判定される。いくつかの実施形態において、工程2304は、一致したセグメントが決定された後の或る時に実行される。いくつかの実施形態では、工程2304では、ユーザの現行活動についてそれまでに記録された位置情報を、一致したセグメントを定義するデータ(例えば、MBRのセット)と比較して、ユーザの現行活動がまだセグメントに沿って進んでいるのか、セグメントから逸脱したのかを判定する。例えば、一致したセグメントが、格納されたMBRのセットとして表される場合、ユーザの現行活動についてそれまでに記録された位置情報も、MBRのセットに変換されうる。次いで、ユーザの現行活動についてそれまでに記録された位置情報に関連するMBRが、格納されたセグメントに関連する1セットのMBRの少なくとも一部とほとんど重複する場合に、ユーザの現行活動がまだセグメント上にあると判定される。いくつかの実施形態において、工程2304の判定は、セグメントマッチングサーバ1508などのリモートセグメントマッチングサーバで実行されるか、もしくは、セグメントデータがデバイス1502などのデバイスにローカルに格納されている場合にそのデバイスで実行される。ユーザがもはやセグメント上にいないと判定された場合、処理2300は終了する。ユーザがまだセグメント上にいると判定された場合、制御は工程2306に進む。
【0168】
工程2306では、セグメントに沿った現在の進捗が、それまでのユーザの現行活動に関連する位置情報に少なくとも部分的に基づいて決定される。例えば、ユーザの現行活動についてそれまでに記録された位置情報から変換されたMBRと重複する格納済みセグメントに関連する1セットのMBRの割合を決定することが可能であり、この割合をセグメントに沿ったユーザの現在の進捗として決定できる。
【0169】
工程2308では、現在の進捗に少なくとも部分的に基づいたセグメントでのユーザの現行活動に関連するリアルタイムのセグメントパフォーマンス情報が伝達される。いくつかの実施形態では、工程2308は、任意選択的に実行される。いくつかの実施形態において、セグメントにおけるユーザの決定された現在の進捗に少なくとも部分的に基づいて決定されたパフォーマンス情報のフィードバックデータが伝達される。例えば、設定されたパラメータを用いて、どのような場合に、現在の進捗がユーザに伝達されるのが望ましいのかを決定できる。一例としては、ユーザがセグメントの中間地点にいる時であり、その時に、いくつかのパフォーマンス情報(例えば、パフォーマンスデータの比較に基づいて決定されたもの)が、ユーザに伝達される。例えば、かかるフィードバックデータのユーザへの伝達は、「Old La Hondaの中間地点を過ぎました。自己最高記録のペースを11秒上回っています」という表示および/または音声出力としてデバイスでなされうる。
【0170】
図24は、いくつかの実施形態に従って、ユーザの現行活動に関するリアルタイムのパフォーマンス情報を伝達するための処理の一実施形態を示すフローチャートである。いくつかの実施形態において、処理2400は、システム1500において実行される。いくつかの実施形態において、処理1800の工程1804は、処理2400を用いて実施される。
【0171】
処理2400は、ユーザの現行活動中にユーザに提供されるリアルタイムフィードバックのタイプを決定する一例として利用されうる。
【0172】
工程2402では、ユーザの現行活動に一致すると判定されたセグメントに関するデータがリトリーブされる。いくつかの実施形態では、(例えば、ユーザの現行活動についてそれまでに記録された位置情報に基づいて)、ユーザの現行活動がセグメントに一致することがすでに判定されている。いくつかの実施形態において、セグメントに一致すると判定されたエフォートに関連する履歴パフォーマンスデータおよび/またはセグメントに一致すると判定された他のユーザの現行活動の同時パフォーマンスデータが、セグメントマッチングサーバ1508などのリモートセグメントマッチングサーバからリトリーブされる。
【0173】
工程2404では、それまでのユーザの現行活動に関するパフォーマンスデータが、リトリーブされたデータと比較される。いくつかの実施形態において、ユーザの現行活動についてデバイス(デバイス1502など)によって記録された関連データのパフォーマンスデータ部分が、リトリーブされたデータと比較される。様々なタイプのデータ比較が実行されうる。いくつかの実施形態では、行われる比較のタイプは、リトリーブされた設定済みパラメータのセットによって指定される。例えば、セグメントでのユーザの現行活動に関するパフォーマンスデータは、同じセグメントでのユーザ自身の履歴パフォーマンスデータ(例えば、そのユーザの以前に一致したエフォートに由来するもの)と比較されうる。また、例えば、セグメントでのユーザの現行活動に関するパフォーマンスデータは、同じセグメントでの他のユーザの履歴パフォーマンスデータ(例えば、他のユーザの以前に一致したエフォートに由来するもの)と比較されうる。別の例では、セグメントでのユーザの現行活動に関するパフォーマンスデータは、同時に同じセグメントにいる他のユーザのパフォーマンスデータと比較されうる。
【0174】
工程2406では、比較に少なくとも部分的に基づいて決定された結果が提示される。例えば、比較結果は、画像、テキスト、映像、および、音声の内の1または複数を用いてデバイスのユーザインターフェースでユーザに提供されうる。
【0175】
ユーザがまだ活動を行っている時、または、ユーザが活動を終えた直後に、デバイス1502などのデバイスで決定および提示されうるリアルタイムフィードバックデータのいくつかの例を以下に示す。
【0176】
それまでのセグメントでのユーザの現行活動に関する記録済みのパフォーマンスデータに基づいてユーザの将来のパフォーマンスを推定することに基づいて決定されたフィードバックデータの例は以下を含む。
【0177】
「80Paradise Loopルートに入って34マイルです。現在のペースでは、2時間15分後、4:30pmにゴールします」
【0178】
「Paradise Loopルートのおよそ半分です。あなたの全平均ペースでは、45分でゴールします」
【0179】
「Paradise Loopルートのおよそ半分です。現在の平均ペースでは、35分でゴールします」
【0180】
「Paradise Loopルートのおよそ半分です。平均的なライダーでは、45分でゴールです」
【0181】
セグメントでのユーザの現行活動に関するパフォーマンスデータを、同じセグメントでのそのユーザの履歴パフォーマンスデータと比較することに基づいて決定されたフィードバックデータの例は以下を含む。
【0182】
「Old La Hondaでの自己最高記録を22秒更新しました」
【0183】
「Old La Hondaで3位の自己記録が出ました。1ヶ月前の自己最高記録と13秒の差です」
【0184】
「現在Old La Hondaの中間地点です。自己最高記録のペースを11秒上回っています」
【0185】
「現在Old La Hondaの中間地点です。自己最高記録のペースを7秒下回っています」
【0186】
セグメントでのユーザの現行活動に関するパフォーマンスデータを、同じセグメントでの他のユーザの履歴または同時パフォーマンスデータと比較することに基づいて決定されたフィードバックデータの例は以下を含む。
【0187】
「Old La Hondaの最高記録を更新しました。Mark Shawの以前の記録を22秒上回りました」。この例では、Mark Shawに関連するデータは、履歴であり、Old La Hondaでのユーザの現行活動と同時進行のデータではない。
【0188】
「Old La Hondaで28位になりました。27位のAaron Fosterと15秒の差です」。
図25は、いくつかの実施形態に従って、「Marincello Trail」セグメントで完了したエフォートに関する順位表(Leaderboard)を表示したユーザインターフェースのスクリーンショットを示す図である。この例のスクリーンショットは、スマートフォンデバイスのアプリケーションに関連する。スクリーンショットに示すように、セグメントを完了した様々なユーザ(Christian Hobbs、Aaron Foster、Mark Shaw、Jane Mitchell、および、Rich Adams)が、それぞれのセグメント完了タイムに基づいて順位表に順位付けされている。この例では、セグメントでの活動を完了したばかりの現行ユーザMark Shawは、順位表の27位に位置するAaron Fosterの次に順位付けされる。
【0189】
「現在の順位:1位Mark S.、2位Chris D.、3位John D. あなたは現在17位で、トップとの差は4分30秒です」。この例に示すように、(ユーザが身体活動を完了した後に、ユーザだけの順位表を決定するのではなく)、ユーザがまだ身体活動を行っている間に、ユーザおよびユーザと同じセグメント上のその他の同時ユーザとについて、順位表が決定されうる。
【0190】
「現在、Mark Shawのタイムを13秒上回り、300メートル先にいます」。この例では、Mark Shawもユーザの現行活動と同じセグメントで活動を行っているため、Mark Shawに関するデータは同時データである。
【0191】
「現在、Mark Shawのタイムを13秒下回り、300メートル後ろにいます」
【0192】
「Markは、Alpine Dam登山道を終えたところです。2人ともAlpine Dam Mt. Tam Loopを歩き続ければ、現在のペースでは30分で追いつきます」
【0193】
「Paradise Loopルートに、2人のライダーが前にいます。30秒前方にMark S.、45秒前方にChris D.。1人のライダーが後ろにいます。5分後方にPan T.」
【0194】
ユーザの現行活動に関連する位置情報データを、格納されたセグメントデータと比較することに基づいて検出された近くのセグメント(例えば、ユーザは現在そこにいないが近くにいるセグメント)を含むフィードバックデータの例は以下を含む。
【0195】
「Mark Shawは5.0マイル離れています。彼は、Paradise Loopルートのおよそ半分に到達しそうです。今日、彼はすでに16マイル進んでいます」
【0196】
「距離1.5マイル、標高差1500フィートの新しいカテゴリ2の登山道を発見しました。この登山道を保存して名前をつけますか?」
【0197】
図26は、いくつかの実施形態に従って、ユーザの現行活動の近くに位置する検出されたセグメント(「登山道(climbs)」)のリストを表示したユーザインターフェースのスクリーンショットを示す図である。この例のスクリーンショットは、スマートフォンのアプリケーションに関連する。例に示すように、近くのセグメントのリストに含まれる各エントリは、セグメントの物理的特徴のいくつかと共にリストされている。
【0198】
図27は、いくつかの実施形態に従って、ユーザの現行活動の近くに位置する検出されたセグメント(「登山道(climbs)」)の地図(map)を表示したユーザインターフェースのスクリーンショットを示す図である。この例のスクリーンショットは、スマートフォンのアプリケーションに関連する。例において、紫色のピンは、検出された各セグメントが始まる場所を示す。
【0199】
検出された近くの他のユーザに通知を送信することを含むフィードバックデータの例は以下を含む。
【0200】
「Mark Shawは1.0マイル離れています。彼はAlpine Dam登山道を終えたところです。2人ともAlpine Dam Mt. Tam Loopを歩き続ければ、現在のペースでは30分で追いつきます。彼に待つように通知を送りますか?」
【0201】
近くのユーザと出会うことに関する指摘を含むフィードバックデータの例は以下を含む。
【0202】
「Mark S.とChris D.が、Paradise Loopルートの出発地点から10分進んだ所で待っています」
【0203】
「お気に入りのライディンググループのライダーが、現在のセグメントで、およそ5分後方にいます」
【0204】
検出された近くの他のユーザに挑戦状を送信することを含むフィードバックデータの例は以下を含む。
【0205】
「Mark S.は1.0マイル離れています。Old La Hondaで勝負をする旨の挑戦状を送りますか?彼の自己最高記録は、あなたを22秒上回っています。グッドラック!」
【0206】
ユーザの個人的成果の指摘を含むフィードバックデータの例は以下を含む。
【0207】
「今週、100マイルを達成しました。おめでとうございます!」
【0208】
「今月、200マイルを達成しました。おめでとうございます!」
【0209】
いくつかの実施形態では、ユーザまたはデバイスに対して設定されたパラメータにより、ユーザに提供されたどのフィードバックデータを1または複数のソーシャルネットワーク(例えば、Facebook)で共有するのかが決定されうる。例えば、ユーザが身体活動を開始する前に設定されたパラメータにより、ユーザの身体活動中、ユーザが現在、セグメントの順位表の1位であった場合に、その記事をユーザのFacebookのウォールに投稿するように指示することができる。例えば、サードパーティのサーバ(Facebookプラットフォームをサポートするサーバなど)と通信するために、セグメントマッチングサーバ1508などのセグメントマッチングサーバは、適切なAPIおよび認証情報を用いてFacebookサーバと通信することができる。記事がソーシャルネットワークで共有されると、ソーシャルネットワークの友達またはその他のユーザが、その記事に関する選択を行いうる(すなわち、ユーザに仮想の賞賛を与えることができる)。そして、例えば、ソーシャルネットワークでの他のユーザの選択をユーザに知らせるために、その選択は、ユーザのデバイスに送信されてよい。
【0210】
いくつかの実施形態において、ユーザに対して設定されるパラメータは、他のユーザがユーザの現行活動のリアルタイムの進捗を見ることができるか否かを決定してもよく、そうである場合に、どの他のユーザに閲覧を許可するのかを決定しうる。例えば、セグメントマッチングサーバおよび/またはサードパーティのサーバ(ソーシャルネットワークをサポートするサーバなど)に関連するウェブサイトで、ユーザの現行活動の視覚的表現が提示されてよく、その視覚的表現は、活動が一致したセグメントに沿ってユーザが進むにつれて更新されうる。視覚的表現は、地図に沿ったマーカ、および/または、セグメントでのユーザのパフォーマンスデータに関する他のデータを含みうる。例えば、身体活動を開始する前に、ユーザは、活動中の一致セグメントに沿った自分のリアルタイムの進捗を共有したいこと、そして、誰がその進捗を閲覧できるのかを示すために、パラメータを設定できる。例えば、ユーザは、特定の他のユーザ(例えば、ソーシャルネットワークのユーザの友達)だけに活動中の自分の進捗を閲覧する許可を与えてもよいし、任意の他のユーザが自分の進捗を閲覧することを許可するように選択してもよい。いくつかの実施形態において、セグメントに沿ったユーザのリアルタイムの進捗を閲覧する許可を有する他のユーザは、ユーザの活動がまだ続いている間に、デバイス(例えば、携帯型デバイスまたはデスクトップコンピュータ)を用いて適切なウェブサイト(例えば、セグメントマッチングサーバおよび/またはソーシャルネットワークに関連するウェブサイト)にアクセスすることによって、進捗を閲覧することができる。いくつかの実施形態において、閲覧しているユーザは、ユーザのリアルタイムの進捗に関する選択を行うこともできる(すなわち、仮想の賞賛をユーザに与える)。そして、例えば、ウェブサイトでの他のユーザの選択をユーザに知らせるために、その選択は、ユーザのデバイスに送信されてよい。
【0211】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
適用例1:リアルタイムのセグメントパフォーマンス情報を提供する方法であって、
それまでに記録された位置情報の少なくとも一部に少なくとも部分的に基づいて、ユーザの現行活動に関連するセグメントを決定し、
前記セグメントでの前記ユーザの現行活動に関するリアルタイムのセグメントパフォーマンス情報を伝達すること、
を備える、方法。
適用例2:適用例1に記載の方法であって、前記ユーザの現行活動に関連する前記セグメントの決定は、前記ユーザの現行活動が前記セグメントに一致するか否かを判定することを含む、方法。
適用例3:適用例2に記載の方法であって、前記ユーザの現行活動が前記セグメントに一致するか否か判定は、前記それまでに記録された位置情報の少なくとも一部が、前記セグメントに関連付けられている仮想スタートラインを交差しているか否かを判定することを含む、方法。
適用例4:適用例2に記載の方法であって、前記ユーザの現行活動が前記セグメントに一致するか否かの判定は、前記それまでに記録された位置情報の少なくとも一部が、前記セグメントに関連付けられている部分を交差しているか否かを判定することを含む、方法。
適用例5:適用例1に記載の方法であって、前記位置情報は、全地球測位システム(GPS)のポイントと、各GPSポイントにおける関連のタイムスタンプとを含む、方法。
適用例6:適用例1に記載の方法であって、さらに、デバイスによるデータの送信に関するユーザ設定可能な選択を受信することであって、1または複数のトリガイベント定義を受信すること、期間定義を受信すること、バッテリ寿命の節約に関する1または複数の定義を受信することの内の1または複数を含む、方法。
適用例7:適用例1に記載の方法であって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスに送信されたフィードバックデータに少なくとも部分的に基づく、方法。
適用例8:適用例1に記載の方法であって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスで生成されたフィードバックデータに少なくとも部分的に基づく、方法。
適用例9:適用例1に記載の方法であって、前記セグメントは、潜在的にマッチングされるセグメントのユーザ選択に関連する、方法。
適用例10:適用例1に記載の方法であって、さらに、
潜在的にマッチングされる1または複数のセグメントに関するデータをデバイスに取得することを備え、
前記取得されたセグメントデータは、前記デバイスにローカルに格納され、前記位置情報の前記少なくとも一部、および前記ユーザの現行活動に関する他のデータは、前記デバイスにおいて前記ローカルに格納されたデータと比較される、方法。
適用例11:適用例1に記載の方法であって、前記パフォーマンス情報は、前記セグメントでの前記ユーザの現行活動に関する前記パフォーマンスデータと、前記セグメントに関連する格納された履歴パフォーマンスデータとの間の比較結果を含む、方法。
適用例12:適用例1に記載の方法であって、前記格納された履歴パフォーマンスデータは、前記ユーザおよび別のユーザの一方または両方に関するデータを含む、方法。
適用例13:適用例1に記載の方法であって、前記パフォーマンス情報は、前記セグメントでの前記ユーザの現行活動に関する前記パフォーマンスデータと、前記セグメントでの他のユーザの現行活動に関する格納された同時パフォーマンスデータとの間の比較結果を含む、方法。
適用例14:適用例1に記載の方法であって、さらに、前記ユーザの現行活動に関する前記パフォーマンスデータと比較されるパフォーマンスデータを有する1または複数の他のユーザに関するユーザ設定可能な選択を受信することを備える、方法。
適用例15:適用例1に記載の方法であって、さらに、同時性の範囲に関するユーザ設定可能な選択を受信し、
前記範囲内のユーザ活動のパフォーマンスデータは互いに比較される、方法。
適用例16:適用例1に記載の方法であって、さらに、サードパーティが運営するソーシャルネットワークに前記パフォーマンス情報の少なくとも一部を送信することを備える、方法。
適用例17:適用例1に記載の方法であって、さらに、前記パフォーマンス情報の前記送信された一部に少なくとも部分的に基づいて、前記サードパーティが運営するソーシャルネットワークから応答を受信することを備える、方法。
適用例18:適用例1に記載の方法であって、さらに、前記セグメントでの前記ユーザの現行活動に関する現在の進捗を決定することを備える、方法。
適用例19:適用例1に記載の方法であって、さらに、別のセグメントが前記ユーザの現行活動の現在位置の近くに存在するか否かを判定することを備える、方法。
適用例20:リアルタイムのセグメントパフォーマンス情報を提供するためのシステムであって、
プロセッサであって、
それまでに記録された位置情報の少なくとも一部に少なくとも部分的に基づいて、ユーザの現行活動に関連するセグメントを決定し、
前記セグメントでの前記ユーザの現行活動に関するリアルタイムのセグメントパフォーマンス情報を伝達するよう構成されているプロセッサと、
前記プロセッサに接続され、前記プロセッサに命令を提供するよう構成されているメモリと、
を備える、システム。
適用例21:適用例20に記載のシステムであって、前記ユーザの現行活動に関連する前記セグメントの決定は、前記ユーザの現行活動が前記セグメントに一致するか否かを判定することを含む、システム。
適用例22:適用例20に記載のシステムであって、前記プロセッサは、さらに、デバイスによるデータの送信に関するユーザ設定可能な選択を受信することであって、1または複数のトリガイベント定義を受信すること、期間定義を受信すること、バッテリ寿命の節約に関する1または複数の定義を受信することの内の1または複数を含む、デバイスによるデータの送信に関するユーザ設定可能な選択を受信するように構成されている、システム。
適用例23:適用例20に記載のシステムであって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスに送信されたフィードバックデータに少なくとも部分的に基づく、システム。
適用例24:適用例20に記載のシステムであって、前記リアルタイムのセグメントパフォーマンス情報の伝達は、デバイスで生成されたフィードバックデータに少なくとも部分的に基づく、システム。
適用例25:適用例20に記載のシステムであって、前記プロセッサは、さらに、
潜在的にマッチングされる1または複数のセグメントに関するデータをデバイスに取得するように構成されており、
前記取得されたセグメントデータは、前記デバイスにローカルに格納され、前記位置情報の前記少なくとも一部、および前記ユーザの現行活動に関する他のデータは、前記デバイスにおいて前記ローカルに格納されたデータと比較される、システム。
適用例26:適用例20に記載のシステムであって、前記パフォーマンス情報は、前記セグメントでの前記ユーザの現行活動に関する前記パフォーマンスデータと、前記セグメントに関連する格納された履歴パフォーマンスデータとの間の比較結果を含む、システム。
適用例27:適用例20に記載のシステムであって、前記パフォーマンス情報は、前記セグメントでの前記ユーザの現行活動に関する前記パフォーマンスデータと、前記セグメントでの他のユーザの現行活動に関する格納された同時パフォーマンスデータとの間の比較結果を含む、システム。
適用例28:適用例20に記載のシステムであって、前記プロセッサは、さらに、前記ユーザの現行活動に関する前記パフォーマンスデータと比較されるパフォーマンスデータを有する1または複数の他のユーザに関するユーザ設定可能な選択を受信するように構成されている、システム。
適用例29:適用例20に記載のシステムであって、前記プロセッサは、さらに、同時性の範囲に関するユーザ設定可能な選択を受信するように構成されており、
前記範囲内のユーザ活動のパフォーマンスデータは互いに比較される、システム。
適用例30:リアルタイムのセグメントパフォーマンス情報を提供するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、
それまでに記録された位置情報の少なくとも一部に少なくとも部分的に基づいて、ユーザの現行活動に関連するセグメントを決定するためのコンピュータ命令と、
前記セグメントでの前記ユーザの現行活動に関するリアルタイムのセグメントパフォーマンス情報を伝達するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。