以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
<ネットワークシステムの全体構成>
まず、本実施の形態にかかるネットワークシステム1の全体構成と動作概要とについて説明する。図1は、本実施の形態にかかるネットワークシステム1の全体構成を示すイメージ図である。
図1を参照して、ネットワークシステム1の全体構成について簡単に説明する。ネットワークシステム1は、主に、複数の通信端末100と、サーバ200を含む。複数の通信端末100は、スマートフォン、タブレット、ノートパソコン、カーナビなどの通信機能を有する装置である。サーバ200は、複数の通信端末100のそれぞれとデータ通信することができる。
そして、本実施の形態においては、複数の通信端末100のうちの少なくとも1台(図1における100A,100B,100Cなど)は、衛星測位システムGNSS(Global Navigation Satellite System)などの位置取得機能を利用することによって自身の現在位置を取得することができる。そのような通信端末100は、自分の現在位置や移動速度や移動方向などをサーバ200に送信することができる。
また、複数の通信端末100は、ディスプレイを利用して文字や画像を表示することができる。そのような複数の通信端末100は、サーバ200からのデータに基づいて、上記の位置取得機能を有する複数の通信端末100の位置を表示することができる。なお、本実施の形態においては、現在位置をサーバにアップロードする機能と、現在位置をディスプレイに表示する機能は、いずれか1つを起動させてもよいし、両方を起動させてもよい。
<ネットワークシステムの動作概要>
次に、本実施の形態にかかるネットワークシステム1の動作概要について説明する。図2は、本実施の形態にかかる通信端末100の第1の表示画面の推移を示すイメージ図である。なお、以下では、複数の通信端末100のユーザが、互いに、自転車レースなどのチームのメンバーである場合について説明する。ただし、複数の通信端末100のユーザは、自転車に乗って遠出をしているグループに属するものでも良いし、バイクに乗ってツーリングをしているグループに属するものでも良いし、自動車に乗って旅行をしているグループに属するものでも良いし、ハイキングをしているグループに属するものであってもよい。
まず、予め、各チームに属する複数のユーザは、各々がサーバ200から自分の通信端末100に位置取得用のアプリケーションプログラムをダウンロードする。ただし、位置取得用のアプリケーションプログラムは、サーバ200以外のサーバから供給されるものであってもよい。なお、以下では、位置取得用のアプリケーションプログラムは、単に位置取得プログラムともいう。
位置取得プログラムは、通信端末100の現在位置や移動速度や移動方向や端末の向き(姿勢)や加速度などを取得して、時刻とともにサーバ200へ送信する発信モードと、サーバ200から他の通信端末100の現在位置および時刻などを取得して、他の通信端末100の現在位置を地図上に表示する取得モードと、を少なくとも有している。
そして、本実施の形態にかかる位置取得プログラムは、発信モードと取得モードとを同時に実行させることもできる。たとえば、通信端末100は、発信モードとして自分の位置情報を発信しながら、取得モードとしてサーバ200から受信した他の通信端末100または自身の通信端末100の現在位置を取得して地図上に表示することができる。
本実施の形態においては、チームに属する複数のユーザ各々の通信端末100は、サーバ200から、チームに属する複数のユーザそれぞれの複数の通信端末100の現在位置と当該現在位置にいた時刻とを示す情報と、将来的に所定時間経過するまでにどの程度移動するかを示す予測情報とを取得する。
図2は、本実施の形態にかかる通信端末100における第1の表示画面の推移を示すイメージ図である。ここでは、AAAさん、BBBさん、CCCさんが発信モードを起動中であり、AAAさん、BBBさん、CCCさん、DDDさんが取得モードを起動中であるものとする。
図2(A)に示すように、AAAさん、BBBさん、CCCさんの各々の通信端末100が現在位置を取得した直後に、サーバ200を介して、AAAさん、BBBさん、CCCさん、DDDさんの通信端末100は、AAAさん、BBBさん、CCCさんの現在位置と、当該現在位置にいた時刻と、将来的にどの程度移動するかを示す予測情報とを取得する。本実施の形態においては、予測情報は、コース毎の位置毎の、所定時間における移動量の予測値を含む。図2(A)に示すように、AAAさん、BBBさん、CCCさん、DDDさんの通信端末100は、AAAさん、BBBさん、CCCさんの正確な現在位置を表示することができる。
しかしながら、その後、数秒から数十分程度、AAAさん、BBBさん、CCCさん、DDDさんの通信端末100のいずれか、たとえば、DDDさんの通信端末100が、AAAさん、BBBさん、CCCさんの通信端末100のいずれか、たとえば、CCCさんの現在位置を取得できない事態が生じる場合がある。この場合であっても、本実施の形態においては、図2(b)に示すように、DDDさんの通信端末100は、予測情報に基づいて、AAAさん、BBBさんの現在位置だけでなく、CCCさんの現在位置も更新することができる。
その後、DDDさんの通信端末100が、CCCさんの現在位置を取得できると、図2(c)に示すように、DDDさんの通信端末100は取得した最新の現在位置によって、CCCさんの表示位置を修正する。なお、通信端末100は取得した最新の現在位置と、現在の表示位置とが異なる場合は、徐々に修正していくことが好ましい。
このように、本実施の形態においては、サーバ200が、コース上の位置に対応する予測情報を通信端末100に提供するため、最新の現在位置が届かない場合であっても従来よりも正確な現在位置を予測して表示することができる。
<通信端末100のハードウェア構成>
まず、通信端末100のハードウェア構成の一態様について説明する。図3は、本実施の形態にかかる通信端末100のハードウェア構成を表わすブロック図である。
図3を参照して、通信端末100は、主たる構成要素として、CPU110と、メモリ120と、タッチパネル150(ディスプレイ130とポインティングデバイス140)と、通信インターフェイス160と、位置取得部170と、スピーカ180とを含む。
CPU110は、メモリ120あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、通信端末100の各部を制御する。すなわち、CPU110は、メモリ120に格納されているプログラムを実行することによって、各種の処理、たとえば図4、図6、図8などに記載の各ステップを実行する。
メモリ120は、各種のRAM(Random Access Memory)、各種のROM(Read-Only Memory)、フラッシュメモリーなどによって実現される。なお、メモリ120は、インターフェイスを介して利用される、USB(Universal Serial Bus)(登録商標)メモリ、CD(Compact Disc)、DVD(Digital Versatile Disk)、メモリカード、ハードディスク、IC(Integrated Circuit)カード、光カード、マスクROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable Programmable Read-Only Memory)などの記憶媒体などによっても実現される。
メモリ120は、CPU110によって実行されるプログラムや、CPU110によるプログラムの実行により生成されたデータ、ポインティングデバイス140を介して入力されたデータ、サーバ200から受信したデータ、地図を表示するための地図データなどを記憶する。
ディスプレイ130は、CPU110からの信号に基づいて、文字や画像を出力する。ポインティングデバイス140は、ユーザからの命令を受け付けて、当該命令をCPU110に入力する。なお、本実施の形態においては、通信端末100は、ディスプレイ130とポインティングデバイス140とが組み合わされたタッチパネル150を有する。
通信インターフェイス160は、アンテナやコネクタによって実現される。通信インターフェイス160は、有線通信あるいは無線通信によって他の装置との間でデータをやり取りする。CPU110は、通信インターフェイス160を介して、後述する位置データ、その他のテキストデータ、その他の画像データなどを、サーバ200などの他の装置に送信する。また、CPU110は、通信インターフェイス160を介して、チームのユーザの通信端末100の位置を示すための位置データ、プログラム、制御命令、画像データ、テキストデータなどを、サーバ200などの他の装置から受信する。
位置取得部170は、GPS機能などを利用して、GPS衛星や無線LANやBluetooth(登録商標)などの外部からの信号を受信する。CPU110は、位置取得部170が取得した信号に基づいて、通信端末100の現在位置、すなわちGPS機能の場合は現在の緯度と経度とを取得する。取得する現在位置に、高度(高さ情報)を含めても良い。
スピーカ180は、CPU110からの信号に応じて、警告音など、様々な音声を発する。
<通信端末100のCPU110の処理>
次に、本実施の形態にかかる通信端末100におけるCPU110が位置取得プログラムに従って、実行する処理について説明する。図4は、本実施の形態にかかる位置取得プログラムの処理の流れを示すフローチャートである。図5は、本実施の形態にかかる通信端末100における第2の表示画面の推移を示すイメージ図である。
図4および図5を参照して、予めCPU110は、ユーザからの命令に従って、通信インターフェイス160を介して、他のサーバから位置取得プログラムをダウンロードしている(ステップS002)。CPU110は、ユーザからの命令に応じて、位置取得プログラムを起動する(ステップS004)。CPU110は、タッチパネル150に利用規約を表示する(ステップS006)。
CPU110は、タッチパネル150を介して、ユーザから、自分の通信端末100の現在位置をサーバ200に発信する発信モードか、他のユーザの通信端末100または自分の通信端末100の現在位置を取得して表示する取得モードか、の選択命令を受け付ける(ステップS008、図5の(a))。
ユーザが発信モードを選択した場合、CPU110は、タッチパネル150を介してユーザからニックネームの入力を受け付ける(ステップS010、図5の(b))。CPU110は、ユーザからユーザIDの取得命令を受け付けて、通信インターフェイス160を介してサーバ200にユーザIDを要求する。CPU110は、サーバ200からユーザIDを取得して、当該ユーザIDをディスプレイに表示させる。
ここで、本実施の形態にかかる位置取得プログラムは、自分のユーザIDを他の通信端末100に伝える命令も受け付ける。たとえば、CPU110は、ユーザからの当該命令を受け付けて、メール送受信プログラムを立ち上げる。CPU110は、通信インターフェイス160を介して、ユーザから指定された他のユーザの通信端末100に、取得したユーザIDを送信する(ステップS012)。
そして、CPU110は、タッチパネル150を介して、位置取得および位置データ送信を開始するための命令を待ち受ける。たとえば、レースの開始直前などに、CPU110は、当該開始命令を受け付ける。すると、CPU110は、位置取得機能を利用して、通信端末100の現在位置を取得し始める。そして、CPU110は、当該現在位置をサーバ200を介して他のユーザの通信端末100に送信し始める(ステップS014)。
一方、ユーザがステップS008にて取得(表示)モードを選択した場合、CPU110は、ユーザから現在位置を取得したい通信端末100のユーザIDの入力を受け付ける(ステップS016、図5の(c))。なお、CPU110は、電子メールを利用して他の通信端末100からユーザIDを取得してもよい。CPU110は、他の通信端末100の現在位置を受信すると、タッチパネル150に地図上に当該他の通信端末100の現在位置を表示させる(ステップS018、図2)。
なお、発信モードにおいて位置情報を発信している状態において、ユーザが、図5(c)に示す画面に自身の通信端末100に関するユーザIDを入力すると、あるいは自身の通信端末100からの受信メールに基づいてユーザIDが入力されると、タッチパネル150には自身の通信端末100の現在位置が地図上に表示されることになる。
<通信端末100における位置データ送信処理>
次に、本実施の形態にかかる通信端末100における位置データ送信処理について詳しく説明する。図6は、本実施の形態にかかる通信端末100における位置データ送信処理を示すフローチャートである。
図6を参照して、通信端末100のCPU110は、まずタイマーをリセットする(ステップS102)。CPU110は、メモリ120から位置データの更新間隔を取得する(ステップS104)。
CPU110は、タイマーの値が更新間隔を超えているか否かを判断する(ステップS106)。タイマーの値が更新間隔を超えていない場合(ステップS106においてNOである場合)、ステップS106の処理を繰り返す。
CPU110は、タイマーの値が更新間隔を超えている場合(ステップS106においてYESである場合)、位置取得部170を利用して、通信端末100の現在位置、移動速度、移動方向、姿勢などを取得する(ステップS108)。CPU110は、現在位置、移動速度、移動方向、姿勢などに基づいて送信データを作成する(ステップS110)。CPU110は、通信インターフェイス160を利用することによって、送信データをサーバ200に送信する(ステップS112)。CPU110は、ステップS110からの処理を繰り返す。
<通信端末100における位置取得表示処理>
次に、現在位置を表示するユーザを指定するための処理について説明する。なお、図7は、本実施の形態にかかる通信端末100における第3の表示画面の推移を示すイメージ図である。
まず、図5(a)に戻って、ユーザが通信端末100のタッチパネル150あるいはスイッチを介して取得(表示)モードを選択した場合、図5の(c)および図7の(a)に示すように、CPU110は、ユーザから、現在位置の表示をしたい複数の通信端末100に関するユーザIDの入力を受け付ける。
図7の(a)を参照して、本実施の形態においては、CPU110は、タッチパネル150に、複数の通信端末100に関するユーザIDの受け付け画面を表示させる。なお、他の通信端末100からメールなどによってユーザIDが送付されてきた場合には、CPU110は、自動的にユーザIDを入力欄に入力する。
ユーザが、現在位置の表示をしたい通信端末100に関するユーザIDを入力して検索ボタンを押すと、あるいは現在位置の表示をしたい通信端末100からの受信メールに基づいてユーザIDが入力された状態でユーザが検索ボタンを押すと、CPU110は、通信インターフェイス160を介してサーバ200にユーザIDを送信する。
図7の(b)を参照して、サーバ200は、ユーザIDに対応するニックネームを通信端末100に送信する。CPU110は、タッチパネル150に現在位置を表示したい通信端末100に関わるニックネームを表示させる。これによって、通信端末100のユーザは、現在位置を取得しようとしている通信端末100が所望のユーザのものであるか確認することができる。
さらに、ユーザが、現在位置の表示をしたい他の通信端末100に関するユーザIDを入力して検索ボタンを押すと、あるいは現在位置の表示をしたい通信端末100からの受信メールに基づいてユーザIDが入力された状態でユーザが検索ボタンを押すと、CPU110は、通信インターフェイス160を介してサーバ200にユーザIDを送信する。
図7の(c)を参照して、サーバ200は、さらに他の通信端末100に関するユーザIDに対応するニックネームを通信端末100に送信する。CPU110は、タッチパネル150に現在位置を表示したい他の通信端末100に関わるニックネームを表示させる。これによって、通信端末100のユーザは、現在位置を取得しようとしている他の通信端末100が所望のユーザのものであるか確認することができる。
このとき、CPU110は、指定された1または複数の通信端末100の現在位置の表示を開始するための命令を受け付けるためのソフトウェアボタンをタッチパネル150に表示させる。当該命令を受け付けると、CPU110は、通信インターフェイス160を介して、サーバ200から1または複数の通信端末100の現在位置や予測情報を取得し始める。すなわち、CPU110は、サーバ200あるいは他のデータベースあるいは自身の位置取得プログラムから取得できる地図データに基づいて、図2に示すように、タッチパネル150に、ユーザによって指定された複数の通信端末100の現在位置を地図上に表示させる。
また、上述したように、発信モードにおいて位置情報を発信しながら、図7の(a)に示す状態において、ユーザが自身の通信端末100に関するユーザIDを入力すると、あるいは自身の通信端末100からの受信メールに基づいてユーザIDが入力されると、タッチパネル150には他の通信端末100の現在位置とともに自身の通信端末100の現在位置が地図上に表示されることになる。
次に、本実施の形態にかかる通信端末100における位置データ取得表示処理について説明する。図8は、本実施の形態にかかる通信端末100における位置データ送信処理を示すフローチャートである。
図8を参照して、通信端末100のCPU110は、まずタイマーをリセットする(ステップS122)。CPU110は、メモリ120から地図の更新間隔を取得する(ステップS124)。
CPU110は、タイマーの値が更新間隔を超えているか否かを判断する(ステップS126)。タイマーの値が更新間隔を超えていない場合(ステップS126においてNOである場合)、ステップS126の処理を繰り返す。
CPU110は、タイマーの値が更新間隔を超えている場合(ステップS126においてYESである場合)、通信インターフェイス160を介して、サーバ200に少なくとも1つの通信端末100の位置データを要求する(ステップS128)。
CPU110は、サーバ200から全てのメンバーの通信端末100に関する表示用位置データを受信できると(ステップS130においてYESである場合)、全てのメンバーの通信端末100の表示用位置データをメモリ120に格納する。CPU110は、通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置を特定する(ステップS132)。なお、短い時間であっても現在位置が取得されたときから表示されるまでに時間が経過していることを考慮して、CPU110は、通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて、現在位置を計算してもよい。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
一方、CPU110は、サーバ200から全てのメンバーの通信端末100の表示用位置データを受信できなかった場合(ステップS130においてNOである場合)、最新の表示用位置データを受信できた通信端末100だけに関する表示用位置データをメモリ120に格納する。CPU110は、最新の表示用位置データを受信できた通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置に基づいて、現在位置を計算し、最新の表示用位置データを受信できなかった通信端末100毎に、過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて、現在位置を計算する(ステップS133)。
たとえば、CPU110は、現在位置が取得されてから表示されるまでの経過時刻と予測情報とから、現在位置からの移動距離を計算し、道路やコースに沿って当該移動距離進んだ地点を現在位置と特定する。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
なお、本実施の形態においては、ステップS134において、過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて求められた現在位置が、取得した最新の表示用位置データに含まれる現在位置よりも進んでいる場合には、第1の警告音とともに、第1の色または形状のアイコンによって通信端末100の現在位置を表示しながら、徐々に最新の表示用位置データに含まれる現在位置へと近づけていく。ただし、取得した最新の表示用位置データに含まれる現在位置が追い付いてくるまで、現在位置の表示位置を移動させない形態であってもよい。
過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて求められた現在位置が、取得した最新の表示用位置データに含まれる現在位置よりも遅れている場合には、第2の警告音とともに、第2の色または形状のアイコンによって通信端末100の現在位置を表示しながら、徐々に最新の表示用位置データに含まれる現在位置へと近づけていく。
過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と、取得した最新の表示用位置データに含まれる現在位置とが実質的に同じである場合には、通信端末100のユーザが停止していると判断し、第3の警告音とともに、第3の色または形状のアイコンによって、すぐに最新の表示用位置データに含まれる現在位置に修正する。
<サーバ200のハードウェア構成>
次に、サーバ200のハードウェア構成の一態様について説明する。図9は、本実施の形態にかかるサーバ200のハードウェア構成を表わすブロック図である。
図9を参照して、サーバ200は、主たる構成要素として、CPU210と、メモリ220と、通信インターフェイス260とを含む。
CPU210は、メモリ220あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、サーバ200の各部を制御する。すなわち、CPU210は、メモリ220に格納されているプログラムを実行することによって、各種の処理、たとえば後述する様々な処理を実行する。
メモリ220は、各種のRAM、各種のROM、フラッシュメモリーなどによって実現される。なお、メモリ220は、インターフェイスを介して利用される、USB(登録商標)メモリ、CD、DVD、メモリカード、ハードディスク、ICカード、光カード、マスクROM、EPROM、EEPROMなどの記憶媒体などによっても実現される。
メモリ220は、CPU210によって実行されるプログラムや、CPU210によるプログラムの実行により生成されたデータ、入出力部を介して入力されたデータ、複数の通信端末100から受信したデータ、後述する各種のデータベース、レースに使用されるコースの位置や形状を示すデータ、道路地図を表示するためのデータ、道路の傾斜や地形など走行経路上の任意の位置の性質を特定するためのデータ、などを記憶する。そして特に、本実施の形態にかかるメモリ220は、位置情報データベース221と、コースなどの走行経路毎の位置毎の予測データ222A,222Bとを記憶する。
図10は、本実施の形態にかかる位置情報データベース221を示すイメージ図である。図10を参照して、位置情報データベース221は、通信端末100毎に、端末IDと、現在位置データを取得した時刻と、現在位置を示すための緯度と経度と、通信端末100の移動速度と、通信端末100の移動方向と、の対応関係を格納する。なお、図10に示す位置情報データベース221が、チーム毎に作成されるものであってもよいし、図7の登録に応じてサーバ200が別途、取得モードを起動中の通信端末100の端末IDと取得先の通信端末100を特定するための端末IDとの対応関係を示すデータベースを記憶してもよい。
図11は、本実施の形態にかかる実施の形態にかかる第1の予測データ222Aを示すイメージ図である。図12は、本実施の形態にかかる実施の形態にかかる第2の予測データ222Bを示すイメージ図である。図11および図12を参照して、メモリ220は、道路やコースなどの走行経路上の位置毎に、予測データ222A,222B・・・を記憶する。予測データ222A,222B・・・の各々は、現在の通信端末100の速度と、道路やコースを所定時間、たとえば1秒間とか5秒間とか10秒間とか、に進む移動距離の予想値と、の対応関係を含む。なお、予測データ222A,222B・・・の各々は、緯度や経度などのような走行経路上の位置を示す情報と、通信端末100の現在の速度と、に応じて将来的にどの程度の距離だけ移動するかを予測できるものであればどのような形式のデータであってもよい。
そして、本実施の形態においては、サーバ200あるいは他のコンピュータが、取得した複数の通信端末100の現在位置の変化に基づいて、走行経路上の位置毎の複数の通信端末100の速度と移動距離との組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データ222A,222B・・・を更新していく。
図9に戻って、通信インターフェイス260は、アンテナやコネクタによって実現される。通信インターフェイス260は、有線通信あるいは無線通信によって他の装置との間でデータをやり取りする。CPU210は、通信インターフェイス260を介して、通信端末100の位置データ、制御命令、画像データ、テキストデータなどを通信端末100などの他の装置から受信する。また、CPU210は、通信インターフェイス260を介して、チーム毎のユーザの現在位置を表示するためのデータ、その他のテキストデータ、その他の画像データなどを、複数の通信端末100などの他の装置に送信する。
<サーバ200における位置データ取得送信処理>
次に、本実施の形態にかかるサーバ200における位置データ取得送信処理について説明する。図13は、本実施の形態にかかるサーバ200における表示用位置データ取得送信処理を示すフローチャートである。
図13を参照して、サーバ200のCPU210は、通信インターフェイス260を介して通信端末100からデータを受信すると以下の処理を実行する。CPU210は、受信したデータに通信端末100の現在位置と速度を示すデータが含まれているか否かを判断する(ステップS152)。受信したデータに通信端末100の現在位置と速度を示すデータが含まれている場合(ステップS152にてYESである場合)、CPU210は、受信データから通信端末100のユーザのIDを特定する(ステップS154)。CPU210は、端末IDと現在位置と速度とを位置情報データベース221に格納する(ステップS156)。CPU210は、通信インターフェイス260を介して、通信端末100からの次のデータを待ち受ける。
受信したデータに通信端末100の現在位置と速度を示すデータが含まれていない場合(ステップS152にてNOである場合)、CPU210は、受信データに表示用位置データの要求が含まれているか否かを判断する(ステップS162)。受信データに表示用位置データの要求が含まれている場合(ステップS162にてYESである場合)、受信データから、現在位置が所望されている通信端末100のユーザのIDを特定する(ステップS164)。
CPU210は、通信端末100で利用される表示用位置データを作成するための表示用位置データ作成処理(ステップS170)を実行する。なお、表示用位置データ作成処理については後述する。
CPU210は、通信インターフェイス260を介して、通信端末100に表示用位置データを送信する(ステップS190)。CPU210は、通信インターフェイス260を介して、通信端末100からの次のデータを待ち受ける。
通信端末100からの受信データに表示用位置データの要求が含まれていない場合(ステップS162にてNOである場合)、CPU210は、受信データから、他の命令や情報を取得して、各種の処理を実行する(ステップS192)。CPU210は、通信インターフェイス260を介して、通信端末100からの次のデータを待ち受ける。
<サーバ200における表示用データ作成処理>
次に、本実施の形態にかかるサーバ200における表示用位置データ作成処理について説明する。図14は、本実施の形態にかかる通信端末100における表示用位置データ作成処理を示すフローチャートである。
図14を参照して、CPU210は、受信データによって指定された通信端末100の端末IDに基づいて、位置情報データベース221から通信端末100の現在位置を読み出す(ステップS172)。CPU210は、通信端末100の現在位置と通信端末100の速度とに基づいて、予測データ222A,222B・・・から、コース上の当該現在位置における将来の所定時間における移動距離の予測値を取得する(ステップS174)。CPU210は、現在位置を示すデータと予測値を示すデータとを組み合わせて、表示用位置データを作成する(ステップS176)。CPU210は、表示用位置データ作成処理を終了して、位置データ送信処理に戻る。
これによって、図8のステップS130〜ステップS134に示すように、通信端末100側では、表示用位置データに含まれる最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の表示用位置データに含まれる現在位置と予測値と経過時間とに基づいて、通信端末100の現在位置を地図上に表示する。
<第2の実施の形態>
第1の実施の形態においては、図11および図12に示したように、道路やコースなどの位置毎に、通信端末100の速度と、所定時間の間に走行経路を進む移動距離の予想値と、の対応関係を準備するものであった。しかしながら、本実施の形態においては、単なる距離ではなく、現在位置からの通信端末100の速度ベクトルを、道路やコースに合わせて補正するため差分ベクトルを利用する。
なお、以下では、本実施の形態にかかる通信端末100における表示位置の更新方法と、サーバ200における表示用位置データ作成処理とについてのみ説明する。他の構成は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
まず、本実施の形態にかかる通信端末100における表示位置の更新方法の一部に関して説明する。図8を参照して、通信端末100のCPU110は、サーバ200から全てのメンバーの通信端末100の表示用位置データを受信できた場合(ステップS130においてYESである場合)、全てのメンバーの通信端末100の表示用位置データをメモリ120に格納する。CPU110は、通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置を特定する(ステップS132)。なお本実施の形態および以下の実施の形態においても、現在位置が取得されたときから表示されるまでに時間が経過していることを考慮して、CPU110は、通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて、現在位置を計算してもよい。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
次に、CPU110は、サーバ200から全てのメンバーの通信端末100の表示用位置データを受信できなかった場合(ステップS130においてYESである場合)、最新の表示用位置データを受信できた通信端末100だけに関する表示用位置データをメモリ120に格納する。そして、CPU110は、最新の表示用位置データを受信できた通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置と時刻と予測情報とに基づいて、現在位置を計算する。一方、最新の表示用位置データを受信できなかった通信端末100に関しては、過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と速度ベクトルと経過時間と予測情報の差分ベクトルとに基づいて、現在位置を計算する(ステップS133)。
図15は、本実施の形態にかかる現在位置の予測方法の一例を示すイメージ図である。図15に示すように、本実施の形態にかかるステップS133においては、たとえば、CPU110は、速度ベクトルと経過時刻と差分ベクトルとから、現在位置からの移動ベクトルを計算し、当該移動ベクトル分だけ進んだ地点を現在位置と特定する。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
次に、本実施の形態にかかるサーバ200における表示用位置データ作成処理について説明する。図16は、本実施の形態にかかるサーバ200における表示用位置データ作成処理を示すフローチャートである。
なお、本実施の形態にかかるサーバ200のメモリ220は、予測データとして、道路やコースなどの走行経路上の位置毎に、通信端末100の速度または速度ベクトルと、差分ベクトルと、との対応関係を格納する。本実施の形態においても、サーバ200あるいは他のコンピュータが、取得した複数の通信端末100の現在位置の変化に基づいて、走行経路上の位置毎の複数の通信端末100の速度と差分ベクトルとの組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データを更新していく。
図16を参照して、CPU210は、現在位置の情報が所望される通信端末100の端末IDに基づいて、位置情報データベース221から通信端末100の現在位置を読み出す(ステップS272)。CPU210は、通信端末100の現在位置と通信端末100の速度ベクトルとに基づいて、予測データから、コース上の当該現在位置に対応する速度ベクトルを取得する(ステップS274)。CPU210は、現在位置や速度ベクトルを組み合わせて、表示用位置データを作成する(ステップS276)。CPU210は、表示用位置データ作成処理を終了して、位置データ送信処理に戻る。
これによって、図8のステップS130〜ステップS134に示すように、通信端末100側では、最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の現在位置と速度ベクトルと予測の差分ベクトルと経過時間とに基づいて移動ベクトルを計算し、通信端末100の現在位置を地図上に表示する。
<第3の実施の形態>
第2の実施の形態においては、現在位置の通信端末100の速度ベクトルを、道路やコースに合わせて補正するための差分ベクトルを利用するものであった。すなわち、サーバ200が、表示用位置データとしての差分ベクトルを通信端末100に送信し、通信端末100が、速度ベクトルと差分ベクトルと経過時間とから移動ベクトルを作成し、過去の位置に当該移動ベクトルを組み合わせることによって最新の現在位置を計算するものであった。
しかしながら、本実施の形態としては、図17に示すように、サーバ200が、移動ベクトル自体を通信端末100に送信する。すなわち、本実施の形態にかかるサーバ200のメモリ220は、予測データとして、道路やコースなどの走行経路上の位置毎に、現在の通信端末100の速度または速度ベクトルと、将来的に予想される移動ベクトルと、の対応関係を格納する。そして、サーバ200は、通信端末100からの少なくとも現在位置に対応する移動ベクトルを通信端末100に提供する。
そして、本実施の形態においても、サーバ200あるいは他のコンピュータが、取得した複数の通信端末100の現在位置の変化に基づいて、走行経路上の位置毎の複数の通信端末100の速度と移動ベクトルとの組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データを更新していく。
この場合は、図8のステップS130〜ステップS134に示すように、通信端末100側では、最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の現在位置と移動ベクトルと経過時間とに基づいて移動ベクトルを計算し、通信端末100の現在位置を地図上に表示する。
<第4の実施の形態>
第1の実施の形態においては、図11および図12に示したように、道路やコースなどの走行経路上の位置毎に、通信端末100の速度と、所定時間に道路やコース上の移動距離の予想値と、の対応関係を準備するものであった。しかしながら、本実施の形態においては、将来的な1つの移動距離だけではなく、将来的な連続する複数の移動距離を利用する。
なお、以下では、本実施の形態にかかる通信端末100における表示位置の更新方法と、サーバ200における表示用位置データ作成処理とについてのみ説明する。他の構成は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
まず、本実施の形態にかかる通信端末100における表示位置の更新方法の一部に関して説明する。図8を参照して、通信端末100のCPU110は、サーバ200から全てのメンバーの通信端末100の表示用位置データを受信できた場合(ステップS130においてYESである場合)、全てのメンバーの通信端末100の表示用位置データをメモリ120に格納する。CPU110は、通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置を特定する(ステップS132)。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
次に、CPU110は、サーバ200から全てのメンバーの通信端末100の表示用位置データを受信できなかった場合(ステップS130においてNOである場合)、最新の表示用位置データを受信できた通信端末100だけに関する表示用位置データをメモリ120に格納する。そして、CPU110は、最新の表示用位置データを受信できた通信端末100毎に、取得した最新の表示用位置データに含まれる現在位置を特定する。一方、図15に示すように、最新の表示用位置データを受信できなかった通信端末100毎に、過去に取得してメモリ120に蓄積していた表示用位置データに含まれる現在位置と速度と複数の移動距離とに基づいて、現在位置を計算する(ステップS133)。
そして、本実施の形態においては、CPU110は、経過時刻に基づいて移動距離を算出する際に、複数の移動距離を組み合わせて、過去の現在位置からの移動距離を計算し、当該移動距離分だけ進んだ地点を現在位置と特定する。たとえば、予測データに1秒間の移動距離の予測値が格納されている場合に、経過時刻が5秒の場合は、5つ分の移動距離を合わせた距離を移動距離とする。CPU110は、それらの現在位置に基づいて、タッチパネル150の地図上に少なくとも1つの通信端末100の現在位置を示すアイコンを表示させる(ステップS134、図2)。CPU110は、ステップS122からの処理を繰り返す。
次に、本実施の形態にかかるサーバ200の予測データ222Cについて説明する。図18は、本実施の形態にかかる予測データ222Cを示すイメージ図である。図18を参照して、メモリ220は、道路やコースなどの位置毎に、予測データ222Cを記憶する。予測データ222Cの各々は、現在の通信端末100の速度と、所定時間に道路やコースを進む距離の予想値と、所定時間後の通信端末100の速度との対応関係を含む。なお、予測データ222C・・・の各々は、緯度や経度など、走行経路上の位置を示す情報と、通信端末100の現在の速度と、に応じて将来的にどの程度の距離だけ移動するかを予測できるものであればどのような形式のデータであってもよい。
そして、本実施の形態においても、サーバ200あるいは他のコンピュータが、取得した複数の通信端末100の現在位置の変化に基づいて、走行経路上の位置毎の複数の通信端末100の速度と移動距離との組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データ222Cを更新していく。
次に、本実施の形態にかかるサーバ200における表示用位置データ作成処理について説明する。図19は、本実施の形態にかかるサーバ200における表示用位置データ作成処理を示すフローチャートである。
図19を参照して、CPU210は、現在位置の情報が所望される通信端末100の端末IDに基づいて、位置情報データベース221から通信端末100の現在位置を読み出す(ステップS472)。CPU210は、通信端末100の現在位置と通信端末100の速度とに基づいて、予測データ222Cから、コース上の当該現在位置における所定時間の移動距離の予測値と所定時間後の速度の予測値とを取得する(ステップS474)。
本実施の形態においては特に、CPU210は、所定時間の移動距離から、所定時間後の現在位置を特定する。そして、CPU210は、所定時間後の現在位置における、所定時間の移動距離の予測値とさらに所定時間後の速度の予測値を特定する。CPU210は、この処理を複数回繰り返す(ステップS474)。
CPU210は、現在位置と、1回目の所定時間における移動距離の予測値と、2回目の所定時間における移動距離の予測値と、・・・・n回目の移動距離の予測値とを組み合わせて、表示用位置データを作成する(ステップS476)。CPU210は、表示用位置データ作成処理を終了して、位置データ送信処理に戻る。
これによって、図8のステップS130〜ステップS134に示すように、通信端末100側では、最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の現在位置と複数の将来の移動距離の予測値と経過時間とに基づいて移動距離を計算し、通信端末100の現在位置を地図上に表示する。
なお、本実施の形態にかかる技術は、他の実施の形態に適用することもできる。たとえば、サーバ200が、現在位置と、1回目の所定時間における差分ベクトルまたは移動ベクトルの予測情報と、2回目の所定時間における差分ベクトルまたは移動ベクトルの予測情報と、・・・・n回目の差分ベクトルまたは移動ベクトルの予測情報とを組み合わせて、表示用位置データを作成する。そして、通信端末100側では、最新の現在位置に基づいて、あるいは過去の現在位置と複数の将来の差分ベクトルまたは移動ベクトルの予測情報と経過時間とに基づいて、通信端末100の現在位置を地図上に表示する。
<第5の実施の形態>
第1の実施の形態においては、図11および図12に示したように、道路やコースなどの走行経路上の位置毎に、通信端末100の速度と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものであった。しかしながら、本実施の形態においては、ユーザ毎または端末毎に、通信端末100の速度と道路の傾斜と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものである。
なお、以下では、サーバ200における表示用位置データ作成処理についてのみ説明する。他の構成は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
まず、本実施の形態にかかるサーバ200の予測データ222Xについて説明する。図20は、本実施の形態にかかる予測データ222Xを示すイメージ図である。図20を参照して、メモリ220は、ユーザ毎または端末毎に、予測データ222Xを記憶する。予測データ222Xは、速度と道路の傾斜との組み合わせ毎に、所定時間に道路やコースなどの走行経路を進む移動距離の予想値を格納する。なお、予測データ222Xは、ユーザ毎または端末毎に、通信端末100の現在の速度および傾斜と、に応じて将来的にどの程度の距離だけ移動するかを予測できるものであればどのような形式のデータであってもよい。
そして、本実施の形態においては、サーバ200あるいは他のコンピュータが、取得した通信端末100の現在位置の変化に基づいて、通信端末100の速度と傾斜と移動距離との組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データ222Xを更新していく。
次に、本実施の形態にかかるサーバ200における表示用位置データ作成処理について説明する。図21は、本実施の形態にかかるサーバ200における表示用位置データ作成処理を示すフローチャートである。
図21を参照して、CPU210は、受信データにて指定される通信端末100の端末IDに基づいて、位置情報データベース221から通信端末100の現在位置と方向とを読み出す(ステップS572)。CPU210は、地図データおよび地形データを参照して、通信端末100の現在位置と方向とから、道路の傾斜を取得する(ステップS574)。
CPU210は、通信端末100の速度と道路の傾斜とに基づいて、予測データ222Xから、コース上の当該現在位置における所定時間の移動距離の予測値を取得する(ステップS576)。CPU210は、現在位置と、所定時間における移動距離の予測値とを組み合わせて、表示用位置データを作成する(ステップS578)。CPU210は、表示用位置データ作成処理を終了して、位置データ送信処理に戻る。
これによって、図8のステップS130〜ステップS134に示すように、通信端末100側では、最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の現在位置と複数の将来の移動距離の予測値と経過時間とに基づいて移動距離を計算し、通信端末100の現在位置を地図上に表示する。
<第6の実施の形態>
第5の実施の形態においては、図20に示したように、ユーザ毎または端末毎に、通信端末100の速度と道路の傾斜と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものであった。しかしながら、本実施の形態においては、ユーザ毎または端末毎に、通信端末100の速度と道路の曲がり具合と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものである。
なお、以下では、サーバ200における表示用位置データ作成処理についてのみ説明する。他の構成は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
まず、本実施の形態にかかるサーバ200の予測データ222Yについて説明する。図22は、本実施の形態にかかる予測データ222Yを示すイメージ図である。図22を参照して、メモリ220は、ユーザ毎または端末毎に、予測データ222Yを記憶する。予測データ222Yは、速度と曲率半径との組み合わせ毎に、所定時間に道路やコースなどの走行経路上を進む距離の予想値を格納する。なお、予測データ222Yは、ユーザ毎または端末毎に、通信端末100の現在の速度および走行経路の曲率半径と、に応じて将来的にどの程度の距離だけ移動するかを予測できるものであればどのような形式のデータであってもよい。
そして、本実施の形態においては、サーバ200あるいは他のコンピュータが、取得した通信端末100の現在位置の変化に基づいて、通信端末100の速度と曲率半径と移動距離との組み合わせを計算する。サーバ200あるいは他のコンピュータは、これらの統計データに基づいて予測データ222Yを更新していく。
次に、本実施の形態にかかるサーバ200における表示用位置データ作成処理について説明する。図23は、本実施の形態にかかるサーバ200における表示用位置データ作成処理を示すフローチャートである。
図23を参照して、CPU210は、現在位置の情報が所望される通信端末100の端末IDに基づいて、位置情報データベース221から通信端末100の現在位置と方向とを読み出す(ステップS672)。CPU210は、地図データおよび地形データを参照して、通信端末100の現在位置と方向とから、道路の曲率半径を取得する(ステップS674)。
CPU210は、通信端末100の速度と曲率半径とに基づいて、予測データ222Xから、コース上の当該現在位置における所定時間の移動距離の予測値を取得する(ステップS676)。CPU210は、現在位置と、所定時間における移動距離の予測値とを組み合わせて、表示用位置データを作成する(ステップS678)。CPU210は、表示用位置データ作成処理を終了して、位置データ送信処理に戻る。
これによって、図8のステップS130〜ステップS134に示すように、通信端末100側では、最新の現在位置に基づいて通信端末100の現在位置を地図上に表示する。あるいはCPU110は、過去の現在位置と将来の移動距離の予測値と経過時間とに基づいて移動距離を計算し、通信端末100の現在位置を地図上に表示する。
<第7の実施の形態>
第5の実施の形態においては、図20に示したように、ユーザ毎または端末毎に、通信端末100の速度と道路の傾斜と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものであった。また、第6の実施の形態においては、図22に示したように、ユーザ毎または端末毎に、通信端末100の速度と道路の曲がり具合と、所定時間に道路やコースを進む距離の予想値と、の対応関係を準備するものであった。
しかしながら、本実施の形態としては、ユーザ毎または端末毎に、他のパラメータと、所定時間の走行経路の移動距離の予想値と、の対応関係を準備してもよい。たとえば、ユーザ毎または端末毎に、道路の傾斜および道路の曲がり具合と、所定時間の走行経路の移動距離の予想値と、の対応関係を準備してもよい。あるいは、ユーザ毎または端末毎に、天気および時間帯と、所定時間の走行経路の移動距離の予想値と、の対応関係を準備してもよい。
さらには、ユーザ毎または端末毎に、同じ道路の同じ位置の、直前または数分前における、他のユーザまたは端末の移動距離の統計データから移動距離の予想値を求めてもよい。
<第8の実施の形態>
第1から第7の実施の形態においては、通信端末100の最新の現在位置の情報を取得できない場合であっても、サーバ200からの表示用位置データに基づいて、現在位置を予測して表示するものであった。本実施の形態としては、現在位置の予測の精度に応じて、通信端末100の現在位置を示すアイコンの周りに円を表示する。
より詳細には、サーバ200は、走行経路上の位置毎に、あるいは速度・傾斜・曲がり具合毎に、過去の統計データから移動距離の予測値の標準偏差を取得してもよい。たとえば、予測データ222A,222B・・・が、走行経路上の位置毎に、あるいは速度・傾斜・曲がり具合毎に標準偏差に応じた精度(m)を格納する。サーバ200のCPU210は、走行経路と上の位置に応じた、あるいは速度・傾斜・曲がり具合に応じた、精度を表示用位置データに含ませる。通信端末100のCPU110は、図2に示すように、通信端末100の現在位置を表示する際に、予測される現在位置の回りに精度に応じた円150Xをタッチパネル150に表示させる。
<第9の実施の形態>
第1〜第8の実施の形態においては、サーバ200が予測値を格納し、サーバ200が表示用位置データを作成し、通信端末100が表示用位置データに基づいて現在位置を更新していくものであった。
しかしながら、第1〜第8の実施の形態におけるサーバ200の役割の一部を通信端末100に担わせてもよいし、他のサーバや他のデータベースに担わせてもよい。逆に、第1〜第8の実施の形態における通信端末100の役割の一部をサーバ200や他のサーバや他のデータベースに担わせてもよい。
<その他の応用例>
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体(あるいはメモリ)を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わる他の記憶媒体に書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。