[この開示の実施形態の説明]
以下の説明および図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
(1)この開示の第1の局面に係る接続先サーバの選択装置は、通信回線を通じて接続するサーバを選択するための接続先サーバの選択装置であって、通信回線に接続されている複数個のサーバのアドレスのリストを記憶するためのアドレス記憶装置と、アドレス記憶装置に記憶された各アドレスのサーバとの通信の遅延時間を測定する遅延時間測定装置と、アドレス記憶装置に記憶された各アドレスのサーバとの通信の遅延時間と、当該サーバの状態とに応じて接続すべきサーバを選択し接続するサーバ選択装置とを含む。
このサーバ選択装置は、単にサーバの負荷状態に基づいて接続するサーバを選択するのではなく、サーバとの通信の遅延を考慮してサーバを選択する。したがって、ネットワークを介した通信状態まで考慮したうえで好ましい処理が実行できるサーバを選択できる。
(2)好ましくは、サーバ選択装置は、アドレス記憶装置に記憶されたリストのアドレスを、遅延時間測定装置により測定された、当該アドレスのサーバとの通信の遅延時間の短い順に並べ替える並べ替え装置と、リスト内のサーバを選択して接続要求を送信する処理を、接続要求に対する承認を受信するまで、並べ替え装置により並べ替えられたアドレスの順番に送信先のサーバを変更しながら実行する接続要求送信装置と、接続要求送信装置が承認を受信したことに応答して、当該承認を送信したサーバとの接続を確立する第1の接続確立装置とを含む。
サーバの選択装置は、遅延時間の短いサーバから選択して順番に接続要求を送信する。遅延時間の短いサーバから順番に接続が可能かどうかについて判断されるので、サーバの選択に要する時間を短縮化できる。
(3)より好ましくは、選択先サーバの選択装置はさらに、接続要求送信装置と第1の接続確立装置とによる処理が、リストに含まれるすべてのアドレスに対して失敗したことに応答して、リスト内のいずれかのサーバについて、当該サーバに接続している他の装置にハンドオーバを実行させ、当該サーバと接続先サーバの選択装置との間の接続を確立するハンドオーバ実行装置を含む。
リスト内のいずれのサーバについても接続ができない場合には、各サーバに対してハンドオーバ実行装置がハンドオーバ処理を依頼する。ハンドオーバが完了することでそのサーバとの接続が可能になり、サーバに接続することが難しい状況でもサーバに接続できる。
(4)さらに好ましくは、ハンドオーバ実行装置は、リスト内のサーバを選択して、当該サーバに接続中のいずれかの装置についてハンドオーバ処理を行わせるハンドオーバ要求を送信する処理を、当該ハンドオーバ要求に対する承認を受信するまで、並べ替え装置により並べ替えられたアドレスの順番に送信先のサーバを変更しながら実行するハンドオーバ要求送信装置と、ハンドオーバ要求送信装置が承認を受信したことに応答して、当該承認を送信したサーバとの接続を確立する第2の接続確立装置とを含む。
リスト内のサーバを選択してハンドオーバ要求を送信し、ハンドオーバ要求が承認されると、リスト内の他のサーバに対するハンドオーバ要求の送信をせずにそのサーバと接続できる。サーバと接続するために要する時間が長くなることが防止できる。
(5)好ましくは、接続先サーバの選択装置はさらに、遅延時間測定装置による遅延時間の測定の実行前に、接続先サーバの選択装置に最も近い位置にあるサーバに対して初期接続要求を送信する初期接続要求送信装置と、初期接続要求送信装置が初期接続要求の送信先のサーバから承認を受信したことに応答して、当該初期接続要求の送信先のサーバとの接続を確立し、遅延時間測定装置の動作を無効化する初期接続確立装置と、初期接続要求送信装置が初期接続要求の送信先のサーバから接続の拒否を受信したことに応答して、遅延時間測定装置の動作を開始させる、遅延による接続処理の実行装置とを含む。
初期接続要求送信装置が、各サーバに対する遅延時間の測定前に、最寄りのサーバとの接続を試みる。最寄りのサーバとの接続が確立できたら、遅延による接続処理の実行は開始されない。その結果、通信資源および接続に要する時間を節約できる。
(6)より好ましくは、遅延時間測定装置は、リストに記憶されている各アドレスに対して、当該アドレスとの間の通信の応答速度を測定し、当該応答速度から遅延時間を算出する測定速度測定装置を含む。
リストに記憶されている各アドレスに対して応答速度を測定し、その応答速度から遅延時間を測定する。実際の応答時間に基づいて遅延時間を計算するので、通信の実態に応じた正確な測定が行える。
(7)この開示の第2の局面に係る車載装置は、上記したいずれかの接続先サーバの選択装置と、接続先サーバの選択装置により選択されたサーバから運転支援情報を受信し、当該運転支援情報を用いて運転者に対する運転支援を行なう運転支援装置とを含む。
この運転支援装置は、単にサーバの負荷状態に基づいて接続するサーバを選択するのではなく、サーバとの通信の遅延を考慮してサーバを選択する。したがって、ネットワークを介した通信状態まで考慮したうえで好ましい処理が実行できるサーバを選択し、運転支援に利用できる。
(8)好ましくは、接続先サーバの選択装置はさらに、車載装置を搭載した車両の移動速度と、複数個のサーバの位置とに基づいて、所定時間後の車両と、複数個のサーバの各々との間の距離を算出する距離算出装置と、複数個のサーバの各々について、距離算出装置により算出された距離と、遅延時間測定装置により算出された遅延時間との間に、距離と遅延時間との双方の単調増加関数として定義される換算遅延時間を算出する換算遅延時間算出装置とを含み、サーバ選択装置は、アドレス記憶装置に記憶された各アドレスのサーバについて換算遅延時間算出装置により算出された換算遅延時間と、当該サーバの状態とに応じて接続すべきサーバを選択し接続する装置を含む。
この運転支援装置は、単にサーバの負荷状態に基づいて接続するサーバを選択するのではなく、サーバとの通信の遅延と、さらにこの運転支援装置を搭載した車両と各サーバとの間の距離を考慮してサーバを選択する。したがって、ネットワークを介した通信でハンドオーバをできるだけ少なくし、かつ低遅延で運転支援が実行できるサーバを選択できる。
(9)この開示の第3の局面に係る車両は、上記したいずれかの車載装置を搭載した車両である。
この車両は、単にサーバの負荷状態に基づいて接続するサーバを選択するのではなく、サーバとの通信の遅延を考慮してサーバを選択する。したがって、ネットワークを介した通信状態まで考慮したうえで好ましい処理が実行できるサーバを選択し、運転支援に利用できる。
(10)この開示の第4の局面に係る接続先サーバの選択方法は、通信回線を通じて接続するサーバを選択するための接続先サーバの選択方法であって、アドレス記憶装置が、通信回線に接続されている複数個のサーバのアドレスのリストを記憶するステップと、遅延時間測定装置が、アドレス記憶装置に記憶された各アドレスのサーバとの通信の遅延時間を測定するステップと、サーバ選択装置が、アドレス記憶装置に記憶された各アドレスのサーバとの通信の遅延時間と、当該サーバの状態とに応じて接続すべきサーバを選択し接続するステップとを含む。
このサーバの選択方法によれば、単にサーバの負荷状態に基づいて接続するサーバを選択するのではない。遅延時間測定装置が、サーバとの通信の遅延を測定し、サーバ選択装置がこの遅延を考慮してサーバを選択する。したがって、ネットワークを介した通信状態まで考慮したうえで好ましい処理が実行できるサーバを選択できる
(11)この開示の第5の局面に係るサーバは、1または複数の端末装置と通信する通信装置と、通信装置を介して他のアドレスから応答速度測定のための応答要求を受信したことに応答して、当該他のアドレスに対して当該応答要求に対する応答を送信する応答装置と、通信装置を介し、接続中でない端末装置から接続要求を受信したことに応答して、通信装置を介して当該端末装置との接続を確立することが可能か否かを判定する接続可否判定装置と、接続可否判定装置による判定にしたがって、接続要求を送信した端末装置との接続を確立する処理と、接続要求を送信した端末装置に対し、接続拒否の応答を送信する処理とを実行する、応答装置と、通信装置を介し、接続中でない端末装置からハンドオーバ要求を受信したことに応答して、複数の端末装置のいずれかとの接続を解除して他のサーバと接続させるハンドオーバ処理を実行するハンドオーバ装置と、ハンドオーバ装置によるハンドオーバが完了したことに応答して、ハンドオーバ要求を送信してきた接続中でない端末装置との接続を確立する接続確立装置とを含む。
端末装置から接続要求を受信すると、サーバの接続可否判定装置は、その端末装置との接続を確立することが可能か否かを判定し、この判定結果にしたがって、応答装置が接続要求を送信してきた端末装置との接続を確立する処理と、接続要求を送信してきた端末装置に対し、接続拒否の応答を送信する処理とを実行する。さらに、接続中でない端末装置からハンドオーバ要求を受信すると、接続中の端末装置のいずれかとの接続を解除して、ハンドオーバ要求を送信してきた端末と接続する。端末装置がサーバのいずれとも接続ができないときにこのサーバにハンドオーバ要求を送信すると、このサーバではハンドオーバ処理をしてその端末装置との接続を行なう。その結果、他のサーバと接続することが困難な端末装置がこのサーバに接続できる。
(12)好ましくは、サーバは、さらに、通信装置を介して複数の端末装置から送信された、各端末装置が収集したセンサデータを処理することで運転支援情報を生成する運転支援装置と、運転支援装置により生成された運転支援情報を、所定の送信タイミングで複数の端末装置に対して送信する運転支援情報送信装置とを含む。
このサーバは、複数の端末装置から送信されてきたセンサデータを処理して、各端末に運転支援情報を送信する。他のサーバのサービスを受けることができなかった端末装置でもこのサーバに対しては接続可能であり、その結果、端末装置が多数存在していて、各端末装置がサーバに接続が難しい場合でも、このサーバに接続して運転支援情報を受信し運転支援に利用できる。
[この開示の実施形態の詳細]
この開示の実施形態に係る接続先サーバの選択装置、それを備えた車載装置、接続先サーバの選択方法、およびサーバの具体例を、以下に図面を参照しつつ説明する。なお、この開示はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、以下の開示の一部を任意に組合せてもよい。
〈構成〉
図2を参照して、この発明に係る運転支援システム160では、ハードウェア的な構成は図1に示す運転支援システム50と同様である。しかしこの運転支援システム160で、例えば車両が接続先のサーバを選択する際には、各サーバの負荷だけではなく、その車両から各サーバまでの通信に生ずる遅延を考慮に入れる点で図1に示す運転支援システム50と異なる。
図2に示す運転支援システム160は、同一の幹線道路の異なるエリア110、112、および114をそれぞれカバーする無線基地局60、64および68と、これら無線基地局60、64および68にそれぞれ近い位置に設置され、無線基地局60、64および68にそれぞれ接続されているエッジサーバ180、182および184とを含む。無線基地局60、64および68は、バックホール170によりコアネットワーク82に接続されている。
例えば無線基地局60および無線基地局68は図1に示すものと同様、それぞれ光ファイバ120および光ファイバ124でバックホール170に接続されている。一方、無線基地局64はメタル線122によりバックホール170に接続されている。バックホール170はさらに光ファイバ126によってコアネットワーク82に接続されている。
エッジサーバ180、182および184では、それぞれこれらエリア110、112および114に存在する車両から送信されてくるセンサデータを処理する運転支援サーバが稼働している。各運転支援サーバからの運転支援情報は、エッジサーバ180、182および184から、それぞれ無線基地局60、64および68等を介して各車両に送信される。
図2の例では、エリア110内には多数の車両が存在し、エリア112およびエリア114内にはほとんど車両が存在しないものとする。この場合、エリア110内の車両172が運転支援サーバに接続するときには、最初は特許文献1における運転支援システム50と同様、エッジサーバ180に接続しようとする。しかしエッジサーバ180の負荷がある程度以上大きいときにはエッジサーバ180は新たな車両の接続を許可しない。そのときには、例えば車両172は、バックホール170内のエッジサーバ180を除く各エッジサーバの中でも車両172との通信において最も遅延の少ないものを選択して接続する。図2に示す例では無線基地局64がバックホール170とメタル線122により接続されているのに対し、無線基地局68は光ファイバ124によりバックホール170に接続されている。したがって、通常の状態では車両172との通信では、無線基地局68に接続されたエッジサーバ184の方が無線基地局64に接続されたエッジサーバ182より小さな遅延で通信できる。そのため、車両172は、無線基地局64の近傍に設けられたエッジサーバ182ではなく、無線基地局68の近傍に設けられたエッジサーバ184と接続する。なお、この実施の形態では、各無線基地局の近傍には1または複数のエッジサーバが存在し、それらはその無線基地局に接続されていることが前提である。複数のエッジサーバが同一の無線基地局に接続されている場合でも、最終的な選択は各エッジサーバとの遅延の大小により決定される。仮に遅延が全く同じエッジサーバが複数個存在するときには、何らかの手段、例えば乱数によりいずれかを選択すればよい。
図3に、例えば車両172の概略構成図を示す。図3を参照して、車両172は、LiDAR204、車載カメラ202、およびミリ波レーダ200等の各種のセンサ、およびこれらセンサからセンサデータを収集しエッジサーバに無線通信により送信するための車載装置210と、を含む。
図4に、車載装置210の機能的構成をブロック図形式で示す。図4を参照して、車載装置210は、無線通信部230と、無線通信部230との通信を通じて、車載装置210と接続可能なエッジサーバのアドレス等に関する管理を行なうためのエッジサーバ管理部232と、エッジサーバ管理部232に接続され、車載装置210が接続可能なエッジサーバのアドレスのリストを記憶するエッジサーバリスト記憶部234と、エッジサーバリスト記憶部234に接続され、エッジサーバリスト記憶部234に記憶された各アドレスのエッジサーバに対してping命令を発行し応答を受信するまでの時間により、各エッジサーバとの間の通信の遅延を測定し、エッジサーバリスト記憶部234の各アドレスに付加するためのエッジサーバ遅延測定部240と、エッジサーバ遅延測定部240に記憶された各アドレスを、その遅延の昇順にソートし、サーバ候補リストとして出力するためのサーバリストソート処理部242と、サーバリストソート処理部242により出力されたサーバ候補リストを記憶するためのサーバ候補リスト記憶部244と、サーバ候補リスト記憶部244に記憶されたサーバ候補リストを先頭から順番に、接続可能なエッジサーバが発見されるまで選択しそのアドレスをサーバ候補リスト記憶部244から読出し、接続を試みるためのサーバ選択部238とを含む。
車載装置210はさらに、サーバ選択部238による処理で接続可能なエッジサーバが見つからなかったことに応答して、再度、サーバ候補リスト記憶部244に記憶されている各エッジサーバに対し、そのエッジサーバに接続されている他の端末装置についてハンドオーバを依頼することで、車載装置210をそのエッジサーバに接続することを試みるためのハンドオーバ依頼処理部246と、車載装置210が接続しているエッジサーバから上記したハンドオーバの通知を受けたときに、そのエッジサーバとの接続を終了し他のエッジサーバと接続を確立するハンドオーバを実行するためのハンドオーバ処理部248と、以上のような処理で車載装置210が接続されているエッジサーバから運転支援情報を受信し、運転者に提示する等の運転支援処理を実行する運転支援処理部250と、センサからのデータを各センサから受信し、所定のフォーマットに変換処理し無線通信部230を介してエッジサーバに送信するための運転支援処理部250とを含む。
図5を参照して、エッジサーバ180はこうした運用を可能にするために以下のような構成を持つ。エッジサーバ180は、上記したように複数のインフラセンサ設備(カメラおよびLiDARのいずれかまたは双方を含む。)からの信号および車両搭載センサ(カメラおよびLiDARのいずれかまたは双方を含む。)からの信号を無線通信で受信し、エッジサーバ180からの情報を無線通信または有線通信で各車両に送信するための通信装置270と、通信装置270が受信したデータをその内容により振り分ける受信処理部272とを含む。
エッジサーバ180はさらに、受信処理部272が受信したセンサデータを集約して解析することにより、管理対象の範囲内に存在する車両および歩行者を含む各移動体の位置、速度、属性等を出力するための集約解析結果を出力する集約解析部274と、集約解析部274が出力する集約解析結果を記憶するための集約解析結果記憶部276と、受信処理部272が受信した信号の内、個別の車両による解析結果(車両解析結果)を統合的に管理して車両解析結果を出力する個別解析部278と、個別解析部278が出力する個別解析結果を記憶する個別解析結果記憶部280とを含む。
集約解析部274が行うセンサデータの集約による解析手法自体は公知のもののいずれを採用してもよい。センサデータの集約により、個々のセンサ信号を解析するだけでは得られない情報を獲得できる。交通環境の検出では、オクルージョンにより、ある動体が単独のセンサ情報だけからは検知できない場合がある。そうした状態でも、センサデータの集約解析を使用することで動体を発見できることがある。そのためには、各車両が複数のセンサを搭載していることが望ましく、またセンサの種類も複数であることが望ましい。多様なセンサ出力を組合せることで集約解析の結果の信頼性が高められる。
エッジサーバ180はさらに、受信処理部272が各車両から受信した信号に基づいて、管理対象のエリア内に存在する車両等の位置、速度、移動方向、車種、および識別情報等からなる車両情報を得るための車両追跡部286と、車両追跡部286により解析された各車両の車両情報を記憶するための車両情報記憶部288とを含む。
エッジサーバ180はさらに、集約解析結果記憶部276に記憶された集約解析結果と、個別解析結果記憶部280に記憶された個別の車両解析結果とに基づいて、交通状況俯瞰マップを生成し、運転支援情報を生成する運転支援情報生成部282と、運転支援情報生成部282により生成された運転支援情報を記憶するための運転支援情報記憶部284と、運転支援情報記憶部284に記憶された運転支援情報を、車両情報記憶部288に記憶された車両情報により決まる送信先に配信する処理を行なうための運転支援情報配信部290とを含む。
エッジサーバ180はさらに、エッジサーバ180の近傍に存在するエッジサーバのアドレスのリストを記憶する近傍サーバリスト記憶部294と、通信装置270および受信処理部272を介して近傍のエッジサーバと通信することにより、近傍サーバリスト記憶部294に記憶された近傍サーバリストを管理するとともに、クライアントである車載装置からの接続要求に応答し、近傍サーバリスト記憶部294に記憶された近傍サーバリストを用いて、複数のエッジサーバの間で、ネットワーク遅延を考慮した負荷分散処理を実行するための負荷分散処理部292と、運転支援情報配信部290からの運転支援情報、および負荷分散処理部292からの負荷分散処理のためのデータを、通信装置270を介してそれぞれ所定の送信先(車載装置)に送信する処理を実行するための情報送信処理部296とを含む。
図6は、図5に示す負荷分散処理部292のより詳細な機能的ブロック図である。図6を参照して、負荷分散処理部292は、受信処理部272から与えられた負荷分散に関するデータ(車載装置の接続要求またはハンドオーバ依頼処理)をその種類により振分ける処理を実行する処理振分部320と、処理振分部320から車載装置の接続要求を受信し、自身の負荷状態を調べ、車載装置からの接続要求を認めるか否かを判定する負荷確認部321と、負荷確認部321により車載装置からの接続要求が認められたことに応答して、接続要求を送信してきた車載装置との接続を確立し、車両に対する運転支援情報の提供からなる車両サービスを開始することを示す応答を生成し出力する車両サービス開始処理部322と、負荷確認部321により車載装置からの接続要求を処理することができないと判定されたことに応答して、接続を拒否する応答を生成し出力する負荷応答生成部324と、処理振分部320からハンドオーバ依頼を受信し、近傍サーバリスト記憶部294に記憶されている近傍サーバリストを参照して、自己に接続している車載装置のいずれかを収容可能な他のエッジサーバがあるか否かを判定しその結果を出力するハンドオーバ処理確認部326と、ハンドオーバ処理確認部326の判定が否定であることに応答して、そのハンドオーバ依頼を送信してきた車載装置に対し、ハンドオーバ依頼を拒否する応答を生成する処理を実行するハンドオーバ拒否部328と、車両サービス開始処理部322、負荷応答生成部324およびハンドオーバ拒否部328からの応答を出力する出力部330とを含む。ハンドオーバ処理確認部326の出力が肯定のときには、車両サービス開始処理部322が、車載装置に対して接続が可能であることを示す応答を生成し出力部330に出力する。
図7を参照して、車載装置210は実質的にはコンピュータ350を含むプロセッサであって、CPU(Central Processing Unit)370、CPU370とコンピュータ350内の各部との間のデータおよび命令の伝送経路となるバス372とを含む。コンピュータ350はさらに、いずれもバス372に接続されたROM(Read-Only Memory)374、RAM(Random Access Memory)376、ハードディスクまたはSSD(Solid State Drive)等からなる不揮発性の補助記憶装置378、無線通信により外部との通信を提供する無線通信部380、入出力インターフェイス(I/F)382、ユーザとの音声によるインタラクションを提供するための音声処理I/F390、およびUSBメモリ362が着脱可能で、USBメモリ362とコンピュータ350内の他の各部との通信を可能にするUSBメモリポート384を含む。
車載装置210はさらに、バス372に接続された、タッチパネル352、表示制御装置を含む液晶等のモニタ354、入出力I/F382に接続された車両の制御のための各種アクチュエータ356およびLiDAR204等(図3参照)の各種センサ358と、音声処理I/F390に接続されたスピーカおよびマイク360とを含む。ROM374にはコンピュータ350の起動プログラム等が記憶されている。RAM376はCPU370による処理の際に様々な変数を記憶するための作業領域として使用される。
図8に、図7のUSBメモリ362または補助記憶装置378により記憶され、CPU370により実行される、車載装置によるエッジサーバへの接続の際のサーバ選択処理を行なうプログラムの制御構造をフローチャート形式で示す。このプログラムは、実行時にはUSBメモリ362からUSBメモリポート384及びバス372を介してRAM376にロードされる。またはこのプログラムは、補助記憶装置378からバス372を介してRAM376にロードされる。USBメモリ362からUSBメモリポート384を介して補助記憶装置378にプログラムを保存することもできる。なお、この実施の形態では、無線基地局は、近隣のエッジサーバのリストを管理しており、定期的に、報知情報の一部としてそのリストを送信しているものとする。車載装置は、基地局との通信を開始するに先立ち、基地局からの報知情報を受信することで、最寄りのエッジサーバのアドレスリストを取得している。このリストの先頭には、この無線基地局に最も近いエッジサーバのアドレスが記録されている。
図8を参照して、このプログラムは、最寄りの基地局から受信したエッジサーバのリストの先頭にあるエッジサーバに接続要求を送信するステップ420を含む。後述するように、この接続要求を受信したエッジサーバは、自己の負荷状況と新たな車載装置との通信による負荷とから、この接続要求を承認するか拒否するかを決定し、それを明らかにする応答を車載装置に送信する。
このプログラムはさらに、ステップ420で送信した接続要求をエッジサーバが承認したか否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ422と、ステップ422の判定が肯定、すなわち接続要求が承認されたと判定されたことに応答して、そのエッジサーバとの接続を確立し、処理を終了するステップ424とを含む。すなわちこの場合、ステップ420で接続要求を送信した先のエッジサーバが車載装置の接続相手として選択されたことになる。
このプログラムはさらに、ステップ422の判定が否定であることに応答して、エッジサーバのリストにリストされている各エッジサーバを接続先のサーバ候補とし、各サーバ候補に対してping命令を送信し、応答時間を測定することによりそのサーバ候補との通信の遅延時間を確認し、遅延時間を追加したサーバ候補リストを生成するステップ426と、ステップ426により生成されたサーバ候補リストを遅延時間の昇順でソートするステップ428とを含む。
このプログラムはさらに、ステップ428に続き、サーバ候補リストにリストされた先頭のサーバ候補を選択するステップ430と、選択されたサーバ候補に対して接続要求を送信するステップ432と、このサーバ候補からの回答を受信するステップ434と、ステップ434で受信した回答が接続要求を承認するものである場合に、制御をステップ424に進めてこのサーバ候補との接続を行なうステップ436と、ステップ436の判定が否定である(接続要求を拒否する)ものである場合に、サーバ候補リストの中にまだ接続要求を送信していない(未試行の)エッジサーバがあるか否かを判断し、判断結果にしたがって制御の流れを分岐させるステップ438と、ステップ438の判定が肯定であるときには、サーバ候補リストの次のサーバ候補を選択し、制御をステップ432に戻すステップ440とを含む。
このプログラムはさらに、ステップ438の判定が否定のときに、再度、サーバ候補リストにリストされた各サーバ候補に対してハンドオーバ処理を試みることを依頼するハンドオーバ処理依頼を送信するステップ442と、ステップ442の処理の結果、この車載装置との送信が可能であるサーバ候補があったか否かを判定し、そうしたサーバ候補があった場合には制御をステップ424に、それ以外の場合には一定時間経過後にステップ420に、それぞれ移動させるステップ444とを含む。
ここで、「ハンドオーバ処理」とは、エッジサーバにおいて行われる処理であり、そのエッジサーバに接続している端末装置のいずれかとの接続を終了し、その端末装置を他のエッジサーバに接続させる処理のことをいう。エッジサーバにおいてハンドオーバ処理が可能であれば、新たな端末装置(ここでは車載装置)との接続を確立することが可能になる。ハンドオーバについては後述するが、他のエッジサーバに接続を切り替えることが可能な場合と、そうでない場合とがあり得る。
「ハンドオーバ依頼」とは、エッジサーバに対し、上記したハンドオーバ処理を試みることを依頼することをいう。ハンドオーバ依頼処理を受信したエッジサーバは、上記したハンドオーバ処理を試み、ハンドオーバ処理が成功すればハンドオーバ依頼を送信した端末に対して接続が可能であることを回答する。ハンドオーバ処理が失敗すれば、エッジサーバは接続を拒否する旨の回答を送信してくる。
図9に、図8のステップ442で実行されるハンドオーバ依頼処理のより詳細なフローチャートを示す。図9を参照して、ハンドオーバ依頼処理を実現するプログラムは、サーバ候補リストの先頭のエッジサーバを選択するステップ470と、選択されたエッジサーバに、そのエッジサーバと接続している車両のハンドオーバをするよう依頼するステップ472と、ステップ472で送信したハンドオーバ依頼に対するそのエッジサーバからの回答を受信するステップ474と、ステップ474で受信した回答がハンドオーバ可(接続可)か否かを判定し、その判定にしたがって制御の流れを分岐させるステップ476とを含む。
このプログラムはさらに、ステップ476の判定が肯定であるときに、ハンドオーバが可能か否かを示すハンドオーバ不可フラグをリセットしてこのプログラムの実行を終了するステップ484と、ステップ476の判定が否定であるときに、サーバ候補リストにまだハンドオーバ依頼を行っていないエッジサーバがあるか否かを判定して制御の流れを分岐させるステップ478と、ステップ478の判定が肯定であるときに、サーバ候補リストの次のサーバ候補を選択して制御をステップ472に戻すステップ482と、ステップ478の判定が否定であるときに、ハンドオーバ不可フラグをセットしこのプログラムの実行を終了させるステップ480とを含む。
図10にエッジサーバ180の1例の外観を示し、図11にエッジサーバ180を構成するコンピュータのハードウェアブロック図を示す。
図10を参照して、エッジサーバ128を実現するこのコンピュータシステムは、DVD(Digital Versatile Disc)ドライブ650を有するコンピュータ640と、いずれもコンピュータ640に接続されたキーボード646、マウス648、およびモニタ642とを含む。
図11を参照して、コンピュータ640は、DVDドライブ650に加えて、CPU656と、GPU(Graphic Processing Unit)657と、CPU656、GPU657、DVDドライブ650に接続されたバス666と、バス666に接続され、コンピュータ640のブートアッププログラム等を記憶するROM658と、バス666に接続され、プログラム命令、システムプログラム、および作業データ等を記憶するRAM660と、バス666に接続された不揮発性メモリであるハードディスクドライブ(HDD)654とを含む。ハードディスク654は、CPU656が実行するプログラム、CPU656が実行するプログラムが使用するデータ等を記憶するためのものである。コンピュータ640はさらに、他端末との通信を可能とするネットワーク668への接続を提供するネットワークI/F644と、USBメモリ670が着脱可能で、USBメモリ670とコンピュータ640内の各部との通信を提供するUSBメモリポート652とを含む。ネットワーク668は、例えば図1および図2に示すバックホール80である。
上記実施形態では、図5に示す集約解析結果記憶部276、個別解析結果記憶部280、車両情報記憶部288、および運転支援情報記憶部284等は、いずれもHDD654またはRAM660により実現される。典型的には、これらはエッジサーバ180の稼働時にはRAM660に記憶されており、定期的にバックアップとしてハードディスク654に保存される。
このコンピュータシステムをエッジサーバ128およびその構成要素の機能として動作させるためのコンピュータプログラムは、DVDドライブ650に装着されるDVD662に記憶され、DVDドライブ650からHDD654に転送される。または、このプログラムはUSBメモリ670に記憶され、USBメモリ670をUSBメモリポート652に装着し、プログラムをハードディスク654に転送する。または、このプログラムはネットワーク668を通じてコンピュータ640に送信されHDD654に記憶されてもよい。プログラムは実行の際にRAM660にロードされる。CPU656は、その内部のプログラムカウンタと呼ばれるレジスタ(図示せず)により示されるアドレスにしたがってRAM660からプログラムを読出して命令を解釈し、命令の実行に必要なデータを命令により指定されるアドレスにしたがってRAM660、ハードディスク654またはそれ以外の機器から読出して命令を実行する。CPU656は、実行結果のデータを、RAM660、ハードディスク654、CPU656内のレジスタ等、プログラムにより指定されるアドレスに格納する。コンピュータプログラムは、DVD662から、USBメモリ670から、またはネットワークを介して、直接にRAM660にロードしてもよい。なお、CPU656が実行するプログラムの中で、一部のタスク(主として数値計算)については、プログラム内の命令により、またはCPU656による命令実行時の解析結果にしたがって、GPU657にディスパッチされる。
エッジサーバ180の各機能を実現するプログラムは、コンピュータ640に上記実施形態に係るエッジサーバ128として動作を行なわせる複数の命令を含む。この動作を行なわせるのに必要な基本的機能のいくつかはコンピュータ640上で動作するオペレーティングシステム(OS)若しくはサードパーティのプログラム、またはコンピュータ640にインストールされる各種ツールキットのモジュールにより提供される。したがって、このプログラムはこの実施形態のシステムおよび方法を実現するのに必要な機能すべてを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能または「プログラミング・ツール・キット」を呼出すことにより、上記したエッジサーバ128およびその構成要素としての動作を実行する命令のみを含んでいればよい。この点は図7に示すコンピュータ350の場合も同様である。コンピュータ350および640の動作方法は周知であるので、ここでは繰返さない。なお、GPU657は並列処理を行うことが可能であり、多くの動的物体に関する交通状況俯瞰マップを同時並列的な処理で生成・管理する際に有効に機能する。
この実施の形態において図5に示すエッジサーバ180の各機能を実現するプログラムの制御構造を、図12にフローチャート形式で示す。図12を参照して、このプログラムは、エッジサーバ180がネットワークから受信したメッセージの内容を確認するステップ700と、ステップ700で確認したメッセージが、車載装置からの接続要求可否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ702とを含む。
このプログラムはさらに、ステップ702における判定が肯定であることに応答して、自己の負荷状態を確認するステップ704と、ステップ704で確認した自己の負荷が一定の値より高い負荷であるか否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ706と、ステップ706の判定が肯定であることに応答して、車載装置に対して接続要求を処理できないことを示す回答を、エッジサーバの再選択の依頼とともに送信しプログラムの実行を終了するステップ708と、ステップ706の判定が否定であることに応答して、接続可能であることを示す回答を車載装置に送信し、その車載装置を搭載した車両に対するサービスを開始するステップ716とを含む。この実施の形態では、ステップ704ではエッジサーバ180の現在の負荷状態のみを確認する。しかしこの開示はそのような実施の形態には限定されない。特許文献1と同様、自己の現在の負荷状態に、車載装置との接続を行なうことにより発生する新たな負荷を加算したものについて確認を行っても良い。
このプログラムはさらに、ステップ702の判定が否定であることに応答して、ステップ700で確認したメッセージがハンドオーバ処理依頼であるか否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ710と、ステップ710での判定が肯定であることに応答して、ハンドオーバ処理を実行するステップ712と、ステップ712の処理の後、ハンドオーバフラグの値に基づいてハンドオーバ処理が成功したか否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ714と、ステップ714の判定が否定であることに応答して、車載装置に対してこのエッジサーバでは当該車載装置の収容ができないことを示す通知を送信してこのプログラムの実行を終了するステップ718とを含む。ステップ714の判定結果が肯定であれば制御はステップ716に進み、車載装置との通信を確立して当該車載装置を搭載している車両に対するサービスを開始する。
このプログラムはさらに、ステップ710の判定結果が否定であることに応答して、メッセージの内容に応じた他の処理を実行し、プログラムの実行を終了するステップ720を含む。
図13に、図12のステップ712を実現するプログラムの制御構造をフローチャート形式で示す。図13を参照して、このプログラムは、ハンドオーバの対象となる車両のリストの記憶領域を確保し、その内容をクリアするステップ740と、ハンドオーバ可能な車両の数を示す変数iに0を代入するステップ742と、ステップ742の後、自己に接続しているすべての車両の車載装置に対して以下の処理746を実行するステップ744と、ステップ744の実行が完了した後に、ハンドオーバ可能な車両の数を示す変数iの値が0か否かを判定し、判定結果に応じて制御の流れを分岐させるステップ748と、ステップ748の判定が肯定であることに応答して、フラグに9を代入しこのプログラムの実行を収容するステップ750とを含む。
このプログラムはさらに、ステップ748での判定が否定(すなわちi≧0)であったことに応答して、変数iの値が1と等しいか否かを判定し、判定結果に応答して制御を分岐させるステップ752と、ステップ752の判定が肯定であるときに、そのただ1つの車載装置を搭載した車両を選択し、その車載装置に対して、他のエッジサーバに接続するよう指示を送信するステップ756と、ステップ756の後に、フラグの値を0に設定してこのプログラムの実行を終了するステップ758と、ステップ752の判定が否定のとき、すなわち複数の車載装置において、そのエッジサーバリストの中に他のエッジサーバがリストされている場合に、その中で最も低遅延、かつ運転支援サービスの許容遅延以内で他のエッジサーバと接続可能な車両を選択し、制御をステップ756に移すステップ760とを含む。
処理746は、接続中の車両(車載装置)からその車両が持つエッジサーバリストを取得するステップ780と、ステップ780で取得したリストに、他のエッジサーバがリストされているか否かを判定し判定結果が否定のときに対象車両に対する処理746の実行を終了するステップ782と、ステップ782の判定が肯定のときに、処理中の車両を候補車両リストに追加するステップ784と、ステップ784に続き、変数iの値に1を加算して対象の車両に対する処理746を終了するステップ786とを含む。
〈動作〉
以上説明した構造を有するこの発明に係る運転支援システム160は以下のように動作する。以下の動作の説明では、車両172(図1)がエッジサーバ180に接続を試みる際の車両172の動作とエッジサーバ180の動作とを、図4から図6を使用し、適宜図8および図12から図13を参照しながら説明する。
なお、図4を参照して、車載装置210は、その車両に搭載されているセンサからのセンサデータを受信し、運転支援処理部250によりエッジサーバ180への送信データを生成して無線通信部230を介してエッジサーバ180に定期的に送信する。
図5を参照して、通信装置270を介してセンサデータを受信した受信処理部272は、センサデータを集約解析部274および個別解析部278に、それぞれ渡す。集約解析部274は、複数の車載装置から受信したセンサデータを集約して解析し、集約解析結果記憶部276に保存する。一方、個別解析部278は、各車載装置から受信したセンサデータを個別に解析し、個別解析結果を個別解析結果記憶部280に保存する。運転支援情報生成部282が集約解析結果記憶部276に記憶された集約解析結果と個別解析結果記憶部280に記憶された個別解析結果とから交通状況俯瞰マップを生成し、交通状況俯瞰マップから運転支援情報を生成して運転支援情報記憶部284に格納する。
一方、各車両の車載装置は、その車両のセンサから得られる情報に基づいて、自己の位置、速度、移動方向、車種、および自己の識別情報等をエッジサーバ180に送信する。エッジサーバ180の受信処理部272は、こうした車両に関する情報に基づいて各車両の位置を追跡し、各車両の位置、速度、移動方向、車種、識別情報等を車両情報記憶部288に記憶する。
運転支援情報配信部290は、運転支援情報記憶部284に記憶された運転支援情報を定期的に読出し、車両情報記憶部288に記憶された車両のアドレスに基づいて、各車両に配信する処理を実行する。この運転支援情報は情報送信処理部296および通信装置270を介して対象車両の車載装置に送信される。
これらセンサデータに関する運転支援情報の生成および配信とは別に、各車両とエッジサーバとの接続の確立については以下のような処理がエッジサーバ180と車載装置との間で実行される。
なお、車両172は、以下に述べる接続処理に先立ち、無線基地局60が定期的に送信する報知情報を受信し、無線基地局60の管理するエッジサーバリストを入手して、図6に示す近傍サーバリスト記憶部294に記憶しているものとする。すなわち、無線通信部230は無線基地局60が定期的に送信する報知情報を受信し、エッジサーバリストを報知情報から抽出してエッジサーバ管理部232に与える。エッジサーバ管理部232はこのエッジサーバリストをエッジサーバリスト記憶部234に記憶する。
図4を参照して、この運転支援情報を受信した無線通信部230は運転支援情報を運転支援処理部250に与える。運転支援処理部250はこの運転支援情報に基づいて各種の情報の表示、音声の発生等の運転支援処理を実行する。
図4を参照して、車両172の車載装置210は、エッジサーバリストの先頭にリストされている無線基地局60にアクセスし、接続を要求する(図8のステップ420)。図5を参照して、通信装置270を介してこの接続要求を受信したエッジサーバ180の集約解析部274は、この接続要求を負荷分散処理部292に与える。
図12を参照して、エッジサーバ180の負荷分散処理部292は、この要求を読み、その内容を確認する(ステップ700)。要求が接続要求なので(ステップ702においてYES)制御はステップ704に進み、負荷分散処理部292はエッジサーバ180の現在の負荷状況について確認する。この負荷状況の確認は、例えばCPUの稼働状況(%)、メモリの消費率(%)、エッジサーバ180のCPU温度等を考慮して行われる。負荷状況が新たな接続を収容できる程度である(高負荷でない)と判定されると(ステップ706の判定がNO)、制御はステップ716に進み、相手である車載装置との接続を確立し、その車載装置を搭載した車両に対するサービスを開始してこの処理を終了する。
エッジサーバ180の負荷が、新たな車載装置との接続が許容できないほど高いと判定された場合(ステップ706においてYES)、制御はステップ708に進み、他のエッジサーバとの接続を試す(エッジサーバを再選択する)ように依頼する回答を対象の車載装置に送信し、処理を終わる。
図8を参照して、エッジサーバ180からの回答を受信した車載装置210の無線通信部230は、この回答がエッジサーバ180との接続を認めるものか否かを判定する(ステップ422)。判定が肯定のときには無線通信部230はエッジサーバ接続処理部236を制御してエッジサーバ180との接続を確立させ(ステップ424)、エッジサーバ180による運転支援のサービスの受信を開始する。受信した回答が接続要求を拒否するものである場合(ステップ422における判定が否定)には、無線通信部230はサーバ選択部238を制御し、接続先のエッジサーバを選択する処理を開始する。
サーバ選択部238は、エッジサーバ遅延測定部240を制御し、無線基地局60(図2)から受信しエッジサーバリスト記憶部234に記憶されているエッジサーバリスト内で、先頭にあるエッジサーバ以外の各エッジサーバ(サーバ候補)の、通信における遅延を測定させ、エッジサーバリスト記憶部234にその遅延量を追加して書込む(図8のステップ426)。具体的には、エッジサーバ遅延測定部240は、エッジサーバリスト記憶部234内の各サーバ候補に対してping命令を送信し、その応答を受信するまでの時間に基づいて各エッジサーバとの通信における遅延を算出する。このように遅延時間をping命令の応答時間に基づいて計算するので、簡単に遅延を確認できる。なお、ここで使用する命令はping命令には限定されない。他のサーバに対して応答を要求する命令であればどのようなものでもよい。
続いてサーバリストソート処理部242は、遅延時間が追加されたエッジサーバリストを読出し、遅延時間の昇順でエッジサーバリストをソートしてサーバ候補リストを生成しサーバ候補リスト記憶部244に保存する(図8のステップ428)。
図4のサーバ選択部238は、サーバ候補リスト記憶部244に記憶されたサーバ候補リストの先頭にリストされたサーバ候補を選択し(図8のステップ430)、選択したエッジサーバに接続要求を送信する(図8のステップ432)。サーバ選択部238は、このサーバ候補からの回答を受信し(図8のステップ434)、その回答がサーバ候補との接続を認めるものかどうか判定する(ステップ436)。回答が肯定なら(ステップ436でYES)サーバ選択部238はエッジサーバ接続処理部236を制御し、そのサーバ候補との接続を確立させる(ステップ424)。回答が否定なら(ステップ436でNO)、サーバ選択部238はサーバ候補リストに次のエッジサーバがあるか否かを判定する(図8のステップ438)。判定が肯定なら、サーバ選択部238はそのサーバ候補を選択し(ステップ440)、そのエッジサーバに対して接続要求を送信する(ステップ432)。判定が否定なら(図4のステップ438においてNO)、図4に示すハンドオーバ依頼処理部246は、サーバ候補リスト記憶部244に記憶されたサーバ候補リストにリストされた各サーバ候補に対し、ハンドオーバ処理を依頼するハンドオーバ依頼処理を実行する(ステップ442)。
より具体的には、ハンドオーバ依頼処理部246は、サーバ候補リスト記憶部244に記憶されたサーバ候補リストの先頭にリストされたサーバ候補を選択する(図9のステップ470)。そして選択したエッジサーバに対して車両のハンドオーバを依頼する(ステップ472)。
図5を参照して、このハンドオーバの依頼を受信したエッジサーバ(通常はエッジサーバ180とは別のサーバとなるが、個々では説明のために仮にエッジサーバ180とする)の受信処理部272は、この依頼を負荷分散処理部292に与える。負荷分散処理部292は以下のような処理を実行する。
図12を参照して、負荷分散処理部292はまず受信したメッセージの内容を確認する(ステップ700)。このメッセージは接続要求ではなくハンドオーバの依頼なので、ステップ702の判定は否定、ステップ710の判定は肯定となる。ステップ712でエッジサーバ180はハンドオーバ処理を実行する。ハンドオーバ処理の詳細については後に説明するが、この処理では、要するに、エッジサーバ180に接続している車載装置のうち、1台との接続を解除して別のエッジサーバと接続させ、ハンドオーバ依頼を送信してきた車載装置と接続することが可能かどうかを判定する処理である。
ハンドオーバ処理が完了した後、負荷分散処理部292は、ハンドオーバが可能かどうかを判定し(ステップ714)、ハンドオーバができない場合(ステップ714においてNO)、収容不可を相手の車載装置に送信(ステップ718)し処理を終了する。ハンドオーバが可能な場合には、ハンドオーバの結果として負荷が減少したことに基づいて、ハンドオーバを依頼してきた車載装置との接続を確立し、その車載装置を搭載した車両への運転支援サービスの提供を開始し(ステップ716)、処理を終了する。
再び図9を参照して、相手のサーバ候補からハンドオーバ可の回答を受信すると(ステップ476においてYES)、車載装置210は、ハンドオーバ不可フラグをリセットし、このプログラムの実行を終了する(ステップ484)。図8に戻り、ステップ444の判定が肯定となるため、ステップ424においてハンドオーバ可能であるサーバ候補との接続を確立し、エッジサーバとの接続処理を終了する。
ハンドオーバ不可の回答を受信すると(ステップ476においてNO)、車載装置210はまた最初からエッジサーバとの接続処理を再開する(ステップ444からステップ420)。
図6および図13を参照して、図12のハンドオーバ処理の詳細について説明する。ハンドオーバ処理が開始されると、負荷分散処理部292のハンドオーバ処理確認部326は、まずハンドオーバの対象となる候補車両のリストをクリアする(図13のステップ740)。続いて、ハンドオーバが可能な車両の数を係数する変数iに0を代入することで変数iを初期化する(ステップ742)。そして、エッジサーバ180に接続中の全車両に対して処理746(図13)を実行する。
処理746では、処理対象の車両について、その車両が保持しているエッジサーバリスト(図4のエッジサーバリスト記憶部234に保持されている。)をその車両の車載装置から取得する(図13のステップ780)。そのリスト内に、エッジサーバ180とは異なるエッジサーバがあるか否かを判定する(ステップ782)。もしもそのようなエッジサーバがあれば、この車両を候補車両リストに追加し(ステップ784)、変数iの値に1を加算して(ステップ786)、この車両に対する処理746を終了し、次の車両の処理に移る。エッジサーバリスト内にエッジサーバ180以外のエッジサーバがなければ(ステップ782でNO)この車両に対しては何もせず処理746を終了し、次の車両の処理に移る。
ステップ744が終了すると変数iの値が0か否かを判定する。変数iは他のエッジサーバをリスト内に持つ車載装置(車両)の数を表す。変数iが0であれば、他のエッジサーバに接続先を変更できる車載装置は全く存在しないということである。したがって、ハンドオーバ処理が可能か否かを示すフラグに、不可能であることを示す値(9)を代入して処理を終了する。もしも変数iの値が1に等しければ、1台の車載装置のみが他のエッジサーバにハンドオーバ可能ということである。したがってその車両をハンドオーバの対象に選択し(ステップ754)、選択された車両をそのサーバに接続させる処理を行って(ステップ756)、フラグにハンドオーバ可能であることを示す値(0)を代入して(ステップ758)処理を終了する。
ステップ752における判定が否定のとき、すなわち変数iの値が2以上であるときは、エッジサーバ180以外のエッジサーバをエッジサーバリストに持つ車載装置が2以上存在するということである。この中のいずれかを選択する必要がある。どの車載装置を選択するかについての基準はランダムに選ぶことを含めて複数個あり得る。しかし、運転支援システム160の資源を有効に用いることから考えると、この車載装置を新たなエッジサーバに接続させるときにも、互いの通信の遅延ができるだけ小さくすることが好ましい。そこで、この実施の形態では、ステップ744の処理で選択された複数個の車載装置のうちで、エッジサーバと組合せたときの遅延が最も小さくなるような車載装置を選択し、そのときのエッジサーバに接続させるようにする(ステップ760)。こうすることで、新たな車両172をエッジサーバ180に接続可能にするだけではなく、この処理のために他のエッジサーバへのハンドオーバが必要となる他の車載装置についても、最小限の遅延で運転支援サービスが受けられることになる。
この実施の形態によれば、エッジサーバがサービスを提供するエリアに多数の車両が存在し、すべての車載装置が同じエッジサーバに接続することが難しい環境でも、この実施の形態に係る車載装置は他のエリアを管理するエッジサーバに接続して低遅延でエッジサーバのサービスを受けることが可能になる。遅延を測定し、その昇順でソートして順にエッジサーバへの接続を試みるので、遅延が小さなサーバを早く見つけることができる。そうしたサーバが見つからないときには、車載装置がエッジサーバに対しハンドオーバを要求できる。したがって、車載装置がいずれかのエッジサーバに接続でき、しかもそのエッジサーバと低遅延で通信できる可能性が高い。その結果、低遅延でエッジサーバによる運転支援サービスを直ちに受けることができる。
なお、この実施の形態では、ハンドオーバが可能な車載装置の候補を複数個抽出し、その中から1台を選んでハンドオーバの対象としている。しかしこの開示はそのような実施の形態には限定されない。例えば、ハンドオーバ可能な車載装置が1台見つかった時点で直ちにその車載装置をハンドオーバの対象として選択してもよい。こうすることで、ハンドオーバによって車載装置がエッジサーバに接続できるまでの時間を短縮できる。
[第2の実施の形態]
上記実施の形態では、車載装置が接続するエッジサーバを選択する際に、最も遅延が小さなものを選択している。しかしこの開示はそのような実施の形態には限定されない。車載装置が移動する車両に搭載されるという特性を備えていることを考えると、単に通信の遅延時間だけではなく、車載装置を搭載した車両の移動速度および方向も考慮することが望ましい。そこでこの第2の実施の形態では、車載装置がエッジサーバに接続する際には、エッジサーバとの間の通信の遅延だけではなく、車両の移動方向および速度も考慮して、車載装置とエッジサーバとの接続においてハンドオーバができるだけ少なくなるように接続先を選択する。
図14に、この第2の実施の形態に係る車載装置で実行される、エッジサーバとの接続処理を実現するコンピュータプログラムの制御構造をフローチャート形式で示す。図14を参照して、このプログラムは、図8のステップ426の後に、ステップ800を新たに含み、図8のステップ428に替えて、ステップ802を持つ。その他の点ではこのプログラムは図8に示すものと同様である。
図14を参照して、このプログラムは、図8と同様最寄りの基地局から受信したエッジサーバのリストの先頭にあるエッジサーバに接続要求を送信するステップ420を含む。この実施の形態では、無線基地局60等は、報知情報としてエッジサーバリストを送信する際に、それらに最も近接した無線基地局の位置を自己の位置とともに送信する。
このプログラムはさらに、ステップ420で送信した接続要求をエッジサーバが承認したか否かを判定し、判定結果にしたがって制御の流れを分岐させるステップ422と、ステップ422の判定が肯定、すなわち接続要求が承認されたと判定されたことに応答して、そのエッジサーバとの接続を確立し、処理を終了するステップ446とを含む。これは第1の実施の形態と同様である。
このプログラムはさらに、ステップ422の判定が否定であることに応答して、エッジサーバのリストにリストされている各サーバ候補に対してping命令を送信して応答時間を測定することによりそのサーバ候補との通信の遅延時間dを確認し、遅延時間を追加したサーバ候補リストを生成するステップ426と、各サーバ候補リストに付されているそのサーバ候補の近傍に位置する無線基地局の位置と、自己の現在の位置および速度(移動方向と移動の速さ)とに基づいて、一定時間後の自己との間の予測距離Lを算出するステップ800と、ステップ426で算出された遅延dとステップ800で算出された距離Lとの間で例えば換算遅延量D=αd+(1-α)L(ただしαは0≦α≦1)により換算遅延量Dを計算し、サーバ候補リスト内の各サーバ候補に付与するステップ802と、この換算遅延量Dの昇順でサーバ候補をソートするステップ804とを含む。ステップ804の後のステップ430以下の処理は図8の場合と同様である。
ステップ420で最初に最寄りのエッジサーバに接続を要求し、その要求が承認されると直ちにそのエッジサーバに接続する。したがって通常時には複雑な処理を行わなくてもよい。最寄りのエッジサーバに接続できず、他のエッジサーバへの接続を試みる際には、上記したように換算遅延量Dを用いることにより、単に現時点での遅延時間が最小であるようなエッジサーバではなく、一定時間にわたってある程度好ましい遅延時間での通信が期待でき、かつ将来のハンドオーバが少なくて済むようなエッジサーバを選択できる。
なお、上記した式におけるαは0≦α≦1を満たす任意の定数であるが、例えば車載装置を搭載した車両の移動の速さおよび方向またはその双方に依存する変数としてもよい。例えば移動の速さが小さい場合にはαは1に近い値とし、移動の速度が大きな場合にはαは0に近い値とする、等である。
また、換算遅延量Dの算出式は上記した式に限らない。遅延時間dが大きくなれば換算遅延量Dも大きくなり、距離Lが大きくなれば換算遅延量Dも大きくなるような式、すなわち遅延時間dと距離Lとの双方に関する単調増加関数に相当するものであればどのような式を採用してもよい。この場合の単調増加関数は好ましくは遅延時間dと距離Lとの相補について狭義の単調増加関数であるが、定義域の一部区間において広義の単調増加関数であってもよい。
さらには、ステップ800において無線基地局の位置を用いるのではなく、エッジサーバの位置を用いて車載装置との間の距離を算出するようにしてもよい。この場合には、エッジサーバのリストにそのエッジサーバの位置データを付しておくようにすればよい。
以上のようにこの実施の形態によれば、車載装置が接続するエッジサーバを選択する際に、エッジサーバの負荷状況のみで車載装置との接続を判定するのではなく、エッジサーバとの通信の遅延と、車載装置を搭載した車両と各エッジサーバとの間の距離の変化とを考慮して車載装置が接続するエッジサーバを選択できる。その結果、低遅延で、かつ将来にわたって長い間ハンドオーバなしで一定のエッジサーバとの接続を継続し、その運転支援サービスを受けることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。この開示の範囲は、発明の詳細な説明の記載により示されるわけではなく、特許請求の範囲の各請求項によって示され、特許請求の範囲の文言と均等の意味および範囲内でのすべての変更が含まれることが意図される。