(57)【特許請求の範囲】
【請求項１】
個別の機能であるサービスを実現するソフトウェア要素の複数を個別に実行可能な制御装置の複数と、複数の前記制御装置を相互に接続するネットワークと、を有する制御通信システムであって、
複数の前記サービスのそれぞれに対応して、前記サービスの起動条件のデータを含む実行マニフェストと、前記サービスが配置された前記制御装置の識別子及び前記サービスの識別子のデータを含む通信マニフェストと、が設けられ、
複数の前記制御装置のそれぞれは、
前記制御装置に配置された前記サービスのソフトウェア要素、及び当該サービスの前記実行マニフェスト及び前記通信マニフェストを記憶するサービス記憶部と、
前記サービス記憶部に記憶された前記サービスの前記実行マニフェストに含まれる前記起動条件が満たされる場合に当該サービスを起動するサービス実行管理部と、
前記サービス記憶部に記憶された前記サービスの前記通信マニフェストを用いて、他の前記サービスと通信するサービス間通信部と、
前記サービスのソフトウェア要素、及び当該サービスの前記実行マニフェスト及び前記通信マニフェストの前記サービス記憶部への更新、追加、及び削除を行うソフトウェア更新管理部と、を備え、
全ての前記制御装置よりも少ない、１つ以上の予め設定された前記制御装置である特定制御装置は、
予め設定された前記サービスである監視対象サービスに係る異常の有無を検知する異常監視部と、
前記異常監視部により前記監視対象サービスに係る異常が検知された場合に、異常が検知された前記監視対象サービスを、現在配置されている前記制御装置から変更して配置する他の前記制御装置である再配置制御装置を選定し、異常が検知された前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを、前記再配置制御装置の前記サービス記憶部に、前記ソフトウェア更新管理部を介して転送し追加させるリカバリ部と、を更に備える制御通信システム。
【請求項２】
複数の前記サービスのそれぞれの前記実行マニフェストには、前記サービスが使用する処理回路のリソース使用情報が含まれ、
前記異常監視部は、前記監視対象サービスに係る異常を検知した場合に、各々の前記制御装置の前記サービス実行管理部に対して、各々の前記制御装置の処理回路のリソースの使用状態の情報を要求し、各々の前記制御装置から送信された前記リソースの使用状態の情報を取得し、
前記リカバリ部は、前記異常監視部が取得した前記制御装置のそれぞれの前記リソースの使用状態の情報、及び前記異常が検知された前記監視対象サービスの前記実行マニフェストに含まれる前記リソース使用情報に基づいて、異常が検知された前記監視対象サービスが使用するリソースが収まる前記制御装置を判定し、判定した前記制御装置の１つを、前記再配置制御装置として選定する請求項１に記載の制御通信システム。
【請求項３】
前記リカバリ部は、異常が検知された前記監視対象サービスが使用するリソースが収まる前記制御装置がないと判定した場合は、前記監視対象サービス以外のサービスの実行を終了させて、異常が検知された前記監視対象サービスが使用するリソースが収まる前記制御装置を確保し、当該制御装置を前記再配置制御装置として選定する請求項２に記載の制御通信システム。
【請求項４】
前記サービス実行管理部は、前記制御装置において動作している前記サービスの異常を検知し、
前記異常監視部は、前記監視対象サービスに係る異常として、前記監視対象サービスが配置された前記制御装置の前記サービス実行管理部が検知した前記監視対象サービスの異常と、前記サービス間通信部による前記監視対象サービスと他のサービスとの間のサービス間通信の異常の有無を検知する請求項１から３のいずれか一項に記載の制御通信システム。
【請求項５】
前記サービス間通信部は、前記サービスの成果物の情報を提供可能である旨のメッセージを他の前記サービスに送信する提供送信、及び他の前記サービスの成果物の情報を利用する旨のメッセージを他の前記サービスに送信する利用送信の一方又は双方を実行し、
前記異常監視部は、前記監視対象サービスと他の前記サービスとの間において、前記提供送信の実行が停止した場合、又は前記利用送信の実行が停止した場合に、前記監視対象サービスに係る異常が発生したと判定する請求項１から４のいずれか一項に記載の制御通信システム。
【請求項６】
前記リカバリ部は、異常が検知された前記監視対象サービスの前記通信マニフェストの前記制御装置の識別子を、前記再配置制御装置の識別子に書き換えた上で、異常が検知された前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを、前記再配置制御装置の前記サービス記憶部に、前記ソフトウェア更新管理部を介して転送し、追加させる請求項１から５のいずれか一項に記載の制御通信システム。
【請求項７】
前記再配置制御装置の前記サービス実行管理部は、前記サービス記憶部に追加された前記監視対象サービスの前記実行マニフェストに含まれる前記起動条件が満たされる場合に当該監視対象サービスを起動する請求項１から６のいずれか一項に記載の制御通信システム。
【請求項８】
前記異常監視部は、異常が検知された前記監視対象サービスのソフトウェア要素及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストが、前記再配置制御装置に転送された後、前記再配置制御装置に対して、前記再配置制御装置の処理回路のリソースの使用状態の情報を要求し、前記再配置制御装置から送信された前記リソースの使用状態の情報を取得し、前記再配置制御装置の前記リソースの使用状態の情報に基づいて、転送した前記監視対象サービスが正常に起動したか否かを判定する請求項１から７のいずれか一項に記載の制御通信システム。
【請求項９】
前記リカバリ部は、前記異常監視部により転送された前記監視対象サービスが正常に起動したと判断された場合は、異常が検知された前記監視対象サービスが実行されていた前記制御装置の前記サービス記憶部から、前記ソフトウェア更新管理部を介して、前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを削除する請求項８に記載の制御通信システム。
【請求項１０】
前記特定制御装置は、
前記監視対象サービスと、前記監視対象サービスの前記実行マニフェスト及び前記通信マニフェストと、をリカバリ用として記憶する監視対象サービス記憶部を備え、
前記リカバリ部は、異常が検知された前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを、前記監視対象サービス記憶部から前記再配置制御装置の前記サービス記憶部に転送し追加させる請求項１から９のいずれか一項に記載の制御通信システム。
【請求項１１】
前記特定制御装置は、
前記監視対象サービスと、前記監視対象サービスの前記実行マニフェスト及び前記通信マニフェストと、をリカバリ用として記憶した外部装置と、通信を行う外部通信部を備え、
前記リカバリ部は、異常が検知された前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを、前記外部通信部を介して、前記外部装置から取得し、前記再配置制御装置の前記サービス記憶部に転送し追加させる請求項１から９のいずれか一項に記載の制御通信システム。
【請求項１２】
複数の前記サービスは、車両に搭載された複数の前記制御装置により実行され、
前記ネットワークは、車載ネットワークであり、
前記監視対象サービスは、車両の自動運転を行うために必要な前記サービスに設定されている請求項１から１１のいずれか一項に記載の制御通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、制御通信システムに関するものである。
【背景技術】
【０００２】
近年、例えば自動車等、複数の制御装置をネットワークにより接続して通信を行うシステムは、高度な制御を実現するために複雑なシステムとなっている。この複雑なシステムの一例として、自動車の運転支援システム、自動運転が挙げられる。このようなシステムは、高い安全性が求められるため、一部の機能が故障しても、自動車の制御が不能になることなく、安全に停止することと、安全な場所まで走行することが求められる。  
【０００３】
特許文献１では、複数の制御装置とは別に制御装置を予め用意しておき、複数の制御装置の内、いずれかの制御装置が故障した場合に、その故障した制御装置が実行するプログラムを別に用意した制御装置で実行する方法が提案されている。  
【０００４】
特許文献２では、複数の制御装置によって構成されるシステムにおいて、正常な制御装置が故障した制御装置があることを検知すると、正常な制御装置は、記憶した設定情報を用いて故障した制御装置を特定する。故障した制御装置の特定後、故障した制御装置で行うデータの入出力及び演算を正常な制御装置で代わりに行うために、正常な制御装置で記憶する設定情報を変更する。この設定情報の変更により、正常な制御装置上では、本来行うデータの入出力及び演算に加えて、故障した制御装置が担っていたデータの入出力及び演算を行うことができ、制御システムを維持することができる。  
【０００５】
特許文献３では、２つの制御装置から構成される自動運転制御装置において、一方の制御装置が故障した場合に、もう一方の制御装置が、故障した制御装置が実行していたプログラムを実行する方法が提案されている。具体的には、それぞれの制御装置において、別の制御装置で実行する自動運転用のプログラムを記憶しておき、別の制御装置が故障した場合に、自身の制御装置で実行している、自動運転とは無関係のプログラムを削除し、記憶しておいた別の制御装置の自動運転用のプログラムをロード及び実行する。これにより、制御装置の故障時においても自動運転機能の継続性低下を抑制している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許６１８９００４号
【特許文献２】特開２０１９−２８５０６号公報
【特許文献３】特開２０１９−８９３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１のシステムでは、複数の制御装置とは別にバックアップ専用の制御装置を設ける必要があるため、コストの増加及びシステムの複雑さが増すおそれがある。特許文献２のシステムでは、各制御装置の故障に備えて、それぞれの制御装置において、設定情報を用意し、故障の特定から故障した制御装置が行う処理の代替までを考慮する必要があり、例えば、一つの制御装置に変更があった場合に、変更箇所が多岐にわたるといった、システムの複雑さが増すおそれがある。  
【０００８】
特許文献３のシステムでも、特許文献２と同様に、各制御装置の故障に備えて、それぞれの制御装置において、他の制御装置の代替を可能にする必要があるため、システムの複雑さが増すおそれがある。  
【０００９】
そこで、本願は、バックアップ専用の待機制御装置を設けることなく、全ての制御装置にバックアップを管理する機能を持たせることなく、制御装置が提供する機能に異常が発生した場合に、その異常が発生した機能を別の制御装置に配置転換することで、機能の継続性が損なわれることを抑制する制御通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願に係る制御通信システムは、個別の機能であるサービスを実現するソフトウェア要素の複数を個別に実行可能な制御装置の複数と、複数の前記制御装置を相互に接続するネットワークと、を有する制御通信システムであって、
複数の前記サービスのそれぞれに対応して、前記サービスの起動条件のデータを含む実行マニフェストと、前記サービスが配置された前記制御装置の識別子及び前記サービスの識別子のデータを含む通信マニフェストと、が設けられ、
複数の前記制御装置のそれぞれは、
前記制御装置に配置された前記サービスのソフトウェア要素、及び当該サービスの前記実行マニフェスト及び前記通信マニフェストを記憶するサービス記憶部と、
前記サービス記憶部に記憶された前記サービスの前記実行マニフェストに含まれる前記起動条件が満たされた場合に当該サービスを起動するサービス実行管理部と、
前記サービス記憶部に記憶された前記サービスの前記通信マニフェストを用いて、他の前記サービスと通信するサービス間通信部と、
前記サービスのソフトウェア要素、及び当該サービスの前記実行マニフェスト及び前記通信マニフェストの前記サービス記憶部への更新、追加、及び削除を行うソフトウェア更新管理部と、を備え、
全ての前記制御装置よりも少ない、１つ以上の予め設定された前記制御装置である特定制御装置は、
予め設定された前記サービスである監視対象サービスに係る異常の有無を検知する異常監視部と、
前記異常監視部により前記監視対象サービスに係る異常が検知された場合に、異常が検知された前記監視対象サービスを、現在配置されている前記制御装置から変更して配置する他の前記制御装置である再配置制御装置を選定し、異常が検知された前記監視対象サービスのソフトウェア要素、及び当該監視対象サービスの前記実行マニフェスト及び前記通信マニフェストを、前記再配置制御装置の前記サービス記憶部に、前記ソフトウェア更新管理部を介して転送し追加させるリカバリ部と、を更に備えるものである。
【発明の効果】
【００１１】
本願に係る制御通信システムによれば、サービスを実行可能な全ての制御装置が、サービス記憶部、サービス実行管理部、及びサービス間通信部を備えており、全ての制御装置よりも少ない、１つ以上の特定制御装置が、サービス記憶部、サービス実行管理部、及びサービス間通信部に加えて、監視対象サービスのリカバリ処理を行う異常監視部及びリカバリ部を備えている。よって、バックアップ専用の待機制御装置を設けることなく、全ての制御装置にバックアップを管理する機能を持たせることなく、予め設定された監視対象サービスに異常が発生した場合に、その異常が発生した監視対象サービスを他の制御装置に再配置して、監視対象サービスの継続性が損なわれることを抑制できる。また、各制御装置は、制御装置の識別子及びサービスの識別子のデータを含む通信マニフェストを用いて、他のサービスと通信を行うサービス間通信部を備えているので、複数のサービスを複数の制御装置に分散配置させ、サービス間の相互通信を行うことが容易になり、異常が検知された監視対象サービスを他の制御装置に再配置させても、サービス間の相互通信を維持させることができ、監視対象サービスを継続させることができる。
【図面の簡単な説明】
【００１２】
【図１】本願の実施の形態１に係る制御通信システムの概略全体構成図である。
【図２】本願の実施の形態１に係る第１制御装置の機能ブロック図である。
【図３】本願の実施の形態１に係る第１制御装置のハードウェア構成図である。
【図４】本願の実施の形態１に係る第２制御装置の機能ブロック図である。
【図５】本願の実施の形態１に係る第２制御装置のハードウェア構成図である。
【図６】本願の実施の形態１に係る第３制御装置の機能ブロック図である。
【図７】本願の実施の形態１に係る第３制御装置のハードウェア構成図である。
【図８】本願の実施の形態１に係る各監視対象サービスの関係性を示す図である。
【図９】本願の実施の形態１に係る各監視対象サービスの実行マニフェスト及び通信マニフェストを説明する図である。
【図１０】本願の実施の形態１に係る監視側の各サービスの関係性を示す図である。
【図１１】本願の実施の形態１に係る監視側の各サービスの実行マニフェスト及び通信マニフェストを説明する図である。
【図１２】本願の実施の形態１に係る画像前処理サービスのシーケンス図である。
【図１３】本願の実施の形態１に係る物体検出サービスのシーケンス図である。
【図１４】本願の実施の形態１に係る車両制御サービスのシーケンス図である。
【図１５】本願の実施の形態１に係る異常監視サービスに係る処理を説明するフローチャートである。
【図１６】本願の実施の形態１に係る異常監視サービスにより作成されるデータベースを説明する図である。
【図１７】本願の実施の形態１に係る異常監視サービスに係る処理を説明するフローチャートである。
【図１８】本願の実施の形態１に係る異常監視サービスにより作成される各制御装置のリソースの使用状態のリストを説明する図である。
【図１９】本願の実施の形態１に係るリカバリサービスに係る処理を説明するフローチャートである。
【図２０】本願の実施の形態１に係るリカバリサービスに係る処理を説明するフローチャートである。
【図２１】本願のその他の実施の形態に係る制御装置のハードウェア構成図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
実施の形態１に係る制御通信システム１００について図面を参照して説明する。本実施の形態では、自動車に搭載された複数の制御装置が、車載ネットワークにより相互に接続された制御通信システムを例に説明する。図１は、本実施の形態に係る制御通信システムの概略全体構成図である。  
【００１４】
制御通信システム１００では、第１制御装置１１０、第２制御装置１２０、第３制御装置１３０が、通信バス１０１を用いた車載ネットワークによって相互接続される。車載ネットワークは、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、ＣＡＮ（Control Area Network、登録商標）等の通信規格を用いて通信を行い、以下では、Ｅｔｈｅｒｎｅｔが用いられる場合を例に説明する。  
【００１５】
第１制御装置１１０は、マルチメディア装置１４０と接続されている。また、第１制御装置１１０のＩＰアドレスは、１９２．１６８．１．１に設定されている。マルチメディア装置１４０は、マルチメディア機能を実現する装置であり、例えば、オーディオ装置、画像表示装置、ヒューマンインターフェイス装置等である。なお、ＩＰアドレスが、本願における「制御装置の識別子」に相当する。  
【００１６】
第２制御装置１２０は、車両情報センサ群１５０と接続されており、車両情報センサ群１５０の出力信号が入力される。第２制御装置１２０のＩＰアドレスは、１９２．１６８．１．２に設定されている。車両情報センサ群１５０は、車両制御用の各種のセンサであり、例えば、車速センサ、加速度センサ、ヨーレートセンサ、舵角センサ、周辺監視カメラ、周辺監視レーダ（ミリ波レーダ、レーザレーダ、超音波レーダ等）、位置センサなどである。位置センサは、ＧＮＳＳ（Global Navigation Satellite System）によって位置情報を取得できる装置である。  
【００１７】
第３制御装置１３０は、操舵制御装置１６０及び動力制御装置１７０に接続されている。また、第３制御装置１３０のＩＰアドレスは、１９２．１６８．１．３に設定されている。操舵制御装置１６０は、車両情報センサ群１５０の検出信号に基づいて決定された舵角の目標値に、車輪の舵角が追従するように、電動パワーステアリング装置の駆動モータ等を制御する。動力制御装置１７０は、車両情報センサ群１５０の検出信号に基づいて決定された車速の目標値に、車速が追従するように、モータ、内燃機関等の動力機の出力トルクを制御する。
【００１８】
車両情報センサ群１５０には、監視対象サービス（本例では、画像前処理サービス３１０）に関係するセンサ（本例では、カメラ）が含まれるので、画像前処理サービス３１０が第２制御装置１２０から第１制御装置１１０又は第３制御装置１３０に再配置される場合に備えて、再配置に関係する車両情報センサ群１５０のセンサ（カメラ）は、第１制御装置１１０及び第３制御装置１３０にも冗長的に接続されている（図１に破線で表示）。また、操舵制御装置１６０及び動力制御装置１７０は、監視対象サービス（本例では、車両制御サービス３３０）に関係する装置であるので、車両制御サービス３３０が第３制御装置１３０から、第１制御装置１１０又は第２制御装置１２０に再配置される場合に備えて、操舵制御装置１６０及び動力制御装置１７０は、第１制御装置１１０及び第２制御装置１２０にも冗長的に接続されている（図１に破線で表示）。  
【００１９】
或いは、監視対象サービスの再配置に関係する車両情報センサ群１５０、操舵制御装置１６０、及び動力制御装置１７０は、再配置に対応できるように、車載ネットワークに接続されていてもよい。
【００２０】
＜第１制御装置１１０＞
図２に示すように、第１制御装置１１０は、サービス記憶部５１０、サービス実行管理部５１１、サービス間通信部５１２、ソフトウェア更新管理部５１３、異常監視部５１４、リカバリ部５１５、監視対象サービス記憶部５１６、及び外部通信部５１７等の機能部を備えている。
【００２１】
第１制御装置１１０の各機能部５１０から５１７等は、第１制御装置１１０が備えた処理回路により実現される。例えば、第１制御装置１１０は、図３に示すように、処理回路として、ＣＰＵ（Central Processing Unit）等の演算処理装置１１１（コンピュータ）、演算処理装置１１１とデータのやり取りをする記憶装置１１３、車載ネットワークを介して他の制御装置と通信を行う通信装置１１２、マルチメディア装置１４０と信号の入出力を行う入出力装置１１４、及びサーバ等の外部装置１１６と通信を行う外部通信装置１１５等を備えている。
【００２２】
演算処理装置１１１として、ＤＳＰ（Digital Signal Processor）、ＧＰＵ（Graphics Processing Unit）、ニューロチップ、ＡＳＩＣ（Application Specific Integrated Circuit）、ＩＣ（Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）、各種の論理回路、及び各種の信号処理回路等が備えられてもよい。また、演算処理装置１１１として、同じ種類のもの又は異なる種類のものが複数備えられ、各処理が分担して実行されてもよい。記憶装置１１３として、ＲＡＭ（Random Access Memory）等の揮発性の主記憶装置１１３ａと、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、フラッシュメモリ等の不揮発性の補助記憶装置１１３ｂと、が用いられている。補助記憶装置１１３ｂに記憶されたデータは、演算処理装置１１１により必要に応じて主記憶装置１１３ａにロードされ、演算処理装置１１１の処理に用いられる。また、主記憶装置１１３ａに記憶されたデータは、演算処理装置１１１により必要に応じて補助記憶装置１１３ｂに記憶される。通信装置１１２は、例えば、Ｅｔｈｅｒｎｅｔ等の通信規格を用いて通信を行う。外部通信装置１１５は、Ｗｉ−Ｆｉ（登録商標）等の無線通信によりネットワーク網に接続し、ネットワーク網に接続されたサーバ等の外部装置１１６と通信を行う。
【００２３】
そして、第１制御装置１１０が備える各機能部５１０から５１７の機能は、演算処理装置１１１が、記憶装置１１３に記憶されたソフトウェア（プログラム）を実行し、記憶装置１１３、入出力装置１１４、通信装置１１２、及び外部通信装置１１５等の他のハードウェアと協働することにより実現される。
【００２４】
＜第２制御装置１２０＞
図４に示すように、第２制御装置１２０は、サービス記憶部５２０、サービス実行管理部５２１、サービス間通信部５２２、ソフトウェア更新管理部５２３等の機能部を備えている。
【００２５】
第２制御装置１２０の各機能部５２０から５２３等は、第２制御装置１２０が備えた処理回路により実現される。例えば、図５に示すように、第２制御装置１２０は、処理回路として、ＣＰＵ等の演算処理装置１２１（コンピュータ）、主記憶装置１２３ａ及び補助記憶装置１２３ｂ等の記憶装置１２３、車載ネットワークを介して他の制御装置と通信を行う通信装置１２２、及び車両情報センサ群１５０と信号の入出力を行う入出力装置１２４等を備えている。第２制御装置１２０の各処理回路の構成は、第１制御装置１１０の各処理回路の構成と同様であるので説明を省略する。
【００２６】
そして、第２制御装置１２０が備える各機能部５２０から５２３の機能は、演算処理装置１２１が、記憶装置１２３に記憶されたソフトウェア（プログラム）を実行し、記憶装置１２３、入出力装置１２４、及び通信装置１２２等の他のハードウェアと協働することにより実現される。
【００２７】
＜第３制御装置１３０＞
図６に示すように、第３制御装置１３０は、第２制御装置１２０と同様に、サービス記憶部５３０、サービス実行管理部５３１、サービス間通信部５３２、ソフトウェア更新管理部５３３等の機能部を備えている。
【００２８】
第３制御装置１３０の各機能部５３０から５３３等は、第３制御装置１３０が備えた処理回路により実現される。例えば、図７に示すように、第３制御装置１３０は、処理回路として、ＣＰＵ等の演算処理装置１３１（コンピュータ）、主記憶装置１３３ａ及び補助記憶装置１３３ｂ等の記憶装置１３３、車載ネットワークを介して他の制御装置と通信を行う通信装置１３２、及び操舵制御装置１６０及び動力制御装置１７０と信号の入出力を行う入出力装置１３４等を備えている。第３制御装置１３０の各処理回路の構成は、第１制御装置１１０の各処理回路の構成と同様であるので説明を省略する。
【００２９】
そして、第３制御装置１３０が備える各機能部５３０から５３３の機能は、演算処理装置１３１が、記憶装置１３３に記憶されたソフトウェア（プログラム）を実行し、記憶装置１３３、入出力装置１３４、及び通信装置１３２等の他のハードウェアと協働することにより実現される。
【００３０】
＜自動運転制御を実現する複数のサービス＞
次に、自動車の自動運転制御を実現する機能構成について説明する。自動運転制御では、自動車に搭載されるセンサ又は外部情報により自動車の周辺環境を認識して、目標となる軌道経路及び車速を決定するとともに、その目標値を達成するために、舵角及び車速に係わる各アクチュエータを制御する。  
【００３１】
本実施の形態では、簡易化のために、車両情報センサ群１５０を周辺監視カメラとし、この周辺監視カメラにより取得されるデータから車線及び前方の車両を検出し、この検出した情報から目標値を算出し、操舵制御装置１６０が舵角を制御し、動力制御装置１７０が車速に係わる各アクチュエータを制御するものとする。  
【００３２】
自動運転制御は、個別の機能であるサービスを実現するソフトウェア要素の複数を組み合わせて実現される。このサービスを実現するソフトウェア要素（プログラム）は、ＳＯＡ（Service Oriented Architecture：サービス指向型アーキテクチャ）に基づき設計される。ＳＯＡでは、サービスを、サービスの成果物の情報を他のサービスに提供するサービスであるサービス提供者と、他のサービスから提供された成果物の情報を利用するサービスであるサービス利用者との２種類で定義している。そして、ＳＯＡでは、ネットワーク上に、サービス提供者とサービス利用者とが存在する場合において、サービス提供者とサービス利用者との間の通信を確立させ、データ授受を可能にするためのインターフェイス（きまりごと）が規定される。
【００３３】
図８は、ＳＯＡに基づいて設計された、自動運転制御を実現する複数のサービスとしての画像前処理サービス３１０、物体検出サービス３２０、及び車両制御サービス３３０と、各サービスの関係性を示す図である。なお、自動運転制御を行うためには、これ以外のサービスもあり、各制御装置に配置されているが、簡略化のため、説明を省略する。  
【００３４】
画像前処理サービス３１０は、周辺監視カメラで撮影された画像データに対して、物体検出を行い易くするための画像処理を行い、画像処理後の画像データを提供する。例えば、画像前処理サービス３１０は、画像データに対して、グレースケール化、所定の閾値に達していない箇所のデータを０とする閾値処理、ホワイトノイズの除去に適しているガウシアンフィルタ等の平滑化を行い、それらの画像処理を行った後の画像データを提供する。
【００３５】
物体検出サービス３２０は、画像前処理サービス３１０から画像処理後の画像データを取得し、画像処理後の画像データに写っている物体を検出し、検出した物体の情報を提供する。例えば、物体検出サービス３２０は、画像処理後の画像データから、自車両が走行する車線の位置と、前方車両の位置とを検出し、検出した車線の位置情報及び前方車両の位置情報を提供する。  
【００３６】
車両制御サービス３３０は、物体検出サービス３２０から物体の情報を取得し、取得した物体の情報に基づいて、車輪の舵角の目標値及び車速の目標値を算出し、算出した舵角の目標値及び車速の目標値を提供する。例えば、車両制御サービス３３０は、車線の位置情報に基づいて、車線の中央位置からの自車両の逸脱距離を計算し、逸脱を軽減する方向に舵角の目標値を設定し、前方車両の位置情報に基づいて、前方車両があるか否かを判定し、前方車両がない場合は、所定の車速の目標値を設定し、前方車両がある場合は、自車両と前方車両との車間距離を保つ方向に車速の目標値を設定する。  
【００３７】
図８に示していないが、操舵制御装置１６０は、車両制御サービス３３０から舵角の目標値を取得し、取得した舵角の目標値に、舵角が追従するように、電動パワーステアリング装置の駆動モータ等を制御する。また、動力制御装置１７０は、車両制御サービス３３０から車速の目標値を取得し、取得した車速の目標値に、車速が追従するように、動力機の出力トルクを制御する。
【００３８】
また、各サービスは、サービスを実行する際に発生するエラー及び故障等の異常を検出する機能を備え、各サービスが配置されている制御装置のサービス実行管理部に通知する。ここで、検出される異常には、例えば、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）エラー、データ書き込み読み出し失敗等のハードウェアに起因するもの、バッファオーバーフロー、メッセージ認証失敗等のサイバーセキュリティ攻撃に起因するもの等が含まれる。  
【００３９】
＜実行マニフェスト、通信マニフェスト＞
複数のサービスのそれぞれについて、実行マニフェスト及び通信マニフェストが設けられる。実行マニフェストには、対応するサービスの起動条件のデータと、対応するサービスが使用する処理回路のリソース使用情報とが含まれる。処理回路のリソース使用情報には、演算処理装置の最大使用率（本例では、ＣＰＵの最大使用率）、ＲＡＭ等の主記憶装置の最大メモリ使用量が含まれる。通信マニフェストには、対応するサービスが配置された制御装置の識別子、及び対応するサービスの識別子のデータが含まれる。
【００４０】
図９に示すように、本実施の形態では、画像前処理サービス３１０に対して、画像前処理サービス３１０の実行マニフェスト３１１及び通信マニフェスト３１２が設けられ、物体検出サービス３２０に対して、物体検出サービス３２０の実行マニフェスト３２１及び通信マニフェスト３２２が設けられ、車両制御サービス３３０に対して、車両制御サービス３３０の実行マニフェスト３３１及び通信マニフェスト３３２が設けられている。１つのサービスのプログラムと、対応するサービスの実行マニフェストのファイル及び通信マニフェストのファイルとのまとまりは、１つのパッケージとして扱われる。
【００４１】
ここで、画像前処理サービス３１０の実行マニフェスト３１１及び通信マニフェスト３１２を用いて、詳細に説明する。実行マニフェスト３１１には、対応するサービスが配置されている制御装置における対応サービスの起動条件の情報が含まれる。図９には、起動条件の情報の１つとして、「マシン状態」が示されている。マシン状態が「実行中」である場合は、画像前処理サービス３１０が配置されている制御装置（本例では、第２制御装置１２０）が起動され、画像前処理サービス３１０を起動可能な状態であることを示す。
【００４２】
実行マニフェスト３１１には、起動条件の情報の１つとして、対応するサービスが起動される前に起動されている必要があるサービス（依存サービス）の情報が含まれ、図９には、「依存サービス」で示されている。依存サービスがある場合は、依存サービスが起動されているか否かが、サービスの起動条件の１つになる。画像前処理サービス３１０では、依存サービスがないため、実行マニフェスト３１１には、依存サービスが「なし」に設定されている。そのため、画像前処理サービス３１０は、他のサービスの起動状態に依存せずに起動される。
【００４３】
上述したように、実行マニフェスト３１１には、実行マニフェスト３１１の実行により使用する演算処理装置の最大使用率（本例では、ＣＰＵの最大使用率）の情報が含まれ、図９には、「ＣＰＵ最大使用率」で示されている。また、実行マニフェスト３１１には、実行マニフェスト３１１の実行により使用するＲＡＭ等の主記憶装置の最大メモリ使用量の情報が含まれ、図９には、「メモリ最大使用量」で示されている。
【００４４】
上述したように、実行マニフェスト３１１には、対応するサービスが配置された制御装置の識別子の情報が含まれ、図９には、Ｅｔｈｅｒｎｅｔ上で制御装置を識別する識別子である「ＩＰアドレス」で示されている。実行マニフェスト３１１には、対応するサービスの識別子の情報が含まれ、図９には、「サービスＩＤ」で示されている。
【００４５】
本実施の形態では、画像前処理サービス３１０及び物体検出サービス３２０は、第２制御装置１２０に配置されているので、これらのサービスの通信マニフェスト３１２、３２２のＩＰアドレスには、第２制御装置１２０のＩＰアドレスである「１９２．１６８．１．２」が設定されている。車両制御サービス３３０は、第３制御装置１３０に配置されているので、車両制御サービス３３０の通信マニフェスト３３２のＩＰアドレスには、第３制御装置１３０のＩＰアドレスである「１９２．１６８．１．３」が設定されている。
【００４６】
画像前処理サービス３１０のソフトウェア要素と、画像前処理サービス３１０の実行マニフェスト３１１及び通信マニフェスト３１２は、第２制御装置１２０のサービス記憶部５２０（例えば、フラッシュメモリ等の補助記憶装置１２３ｂ）に記憶されている。物体検出サービス３２０のソフトウェア要素と、物体検出サービス３２０の実行マニフェスト３２１及び通信マニフェスト３２２は、第２制御装置１２０のサービス記憶部５２０（例えば、フラッシュメモリ等の補助記憶装置１２３ｂ）に記憶されている。車両制御サービス３３０のソフトウェア要素と、車両制御サービス３３０の実行マニフェスト３３１及び通信マニフェスト３３２は、第３制御装置１３０のサービス記憶部５３０（例えば、フラッシュメモリ等の補助記憶装置１３３ｂ）に記憶されている。
【００４７】
＜マルチメディアサービス、ナビゲーションサービス＞
第１制御装置１１０には、音楽再生等により音声信号を生成しオーディオ装置に提供するオーディオサービス、画像信号を生成し画像表示装置に提供するビジュアルサービス、目的地までの目標経路の情報を生成し提供するカーナビゲーションサービス等が配置されている。オーディオサービス、ビジュアルサービス、及びカーナビゲーションサービスのそれぞれのソフトウェア要素、実行マニフェスト、及び通信マニフェストは、第１制御装置１１０のサービス記憶部５１０に記憶されており、第１制御装置１１０により実行される。これらのマルチメディアサービス及びナビゲーションサービスは、監視対象サービスに設定されていないので、以下では、説明を省略する。
【００４８】
＜第１制御装置１１０（特定制御装置）の機能説明＞
第１制御装置１１０は、全ての制御装置よりも少ない、１つ以上の予め設定された制御装置である特定制御装置である。図２に示したように、第１制御装置１１０は、サービス記憶部５１０、サービス実行管理部５１１、サービス間通信部５１２、ソフトウェア更新管理部５１３に加えて、異常監視部５１４、リカバリ部５１５、監視対象サービス記憶部５１６、及び外部通信部５１７等の機能部を備えている。以下、各機能について説明する。
【００４９】
サービス記憶部５１０は、第１制御装置１１０に配置されたサービスのソフトウェア要素、及び当該サービスの実行マニフェスト及び通信マニフェストを記憶する。本実施の形態では、サービス記憶部５１０は、第１制御装置１１０の補助記憶装置１１３ｂに設けられている。
【００５０】
第１制御装置１１０の補助記憶装置１１３ｂには、サービス実行管理部５１１、サービス間通信部５１２、ソフトウェア更新管理部５１３、異常監視部５１４、及びリカバリ部５１５のそれぞれのソフトウェア要素（プログラム）が記憶されている。これらのソフトウェア要素（プログラム）は、補助記憶装置１１３ｂから主記憶装置１１３ａにロードされて、演算処理装置１１１によって実行される。また、補助記憶装置１１３ｂには、ＯＳ（Operation System）が記憶されている。ＯＳの少なくとも一部は、主記憶装置１１３ａにロードされて、演算処理装置１１１によって実行される。また、プログラムを実行して得られるデータは、主記憶装置１１３ａ、補助記憶装置１１３ｂ、或いは演算処理装置１１１内のレジスタ又はキャッシュメモリといった記憶装置に記憶される。
【００５１】
サービス実行管理部５１１は、サービス記憶部５１０に記憶されたサービスの実行マニフェストに含まれる起動条件が満たされた場合に当該サービスを起動する。本実施の形態では、サービス実行管理部５１１は、ＯＳによって起動され、補助記憶装置１１３ｂに記憶されている全ての実行マニフェストを主記憶装置１１３ａにロードして、各サービスの起動条件を確認し、起動条件を満たすサービスを起動する。
【００５２】
また、サービス実行管理部５１１は、第１制御装置１１０において動作しているサービスの異常を検知する異常情報管理機能を有する。本実施の形態では、上述したように、各サービスは、サービスを実行する際に発生するエラー及び故障等の異常を検出する機能を備え、検知した異常を、各サービスが配置されている制御装置のサービス実行管理部に通知する。サービス実行管理部５１１は、第１制御装置１１０において動作しているサービスが検知するエラー及び故障等の異常情報を取得する。
【００５３】
このサービス実行管理部５１１の異常情報管理機能は、サービス実行管理部５１１により実行され、ＳＯＡのサービス間通信により他のサービスと通信が行われる異常情報管理サービス３４０１として動作する。
【００５４】
サービス間通信部５１２は、サービス記憶部５１０に記憶されたサービスの通信マニフェストを用いて、他のサービスと通信する。サービス間通信部５１２は、第１制御装置１１０において動作しているサービスと他のサービスとの間の成果物の情報の授受を行う。サービス間通信部５１２は、第１制御装置１１０上のサービスが、サービスの成果物の情報を提供するサービス提供者である場合は、サービスの成果物の情報を提供可能である旨のメッセージを他のサービスに送信する。そして、サービス間通信部５１２は、他のサービスから成果物の情報を利用する旨のメッセージを受信すると、メッセージを受信した他のサービスに対して成果物の情報を送信する制御を行う。
【００５５】
また、サービス間通信部５１２は、第１制御装置１１０上のサービスが、他のサービスから提供された成果物の情報を利用するサービス利用者である場合は、他のサービスの成果物の情報を利用する旨のメッセージを他のサービスに送信する。例えば、サービス間通信部５１２は、他のサービスが送信しているメッセージを検索し、他のサービスから利用対象の成果物の情報を提供可能である旨のメッセージを受信すると、メッセージを受信した他のサービスに対して、成果物の情報を利用する旨のメッセージを送信し、他のサービスから送信された成果物の情報を受信する。サービス間通信部５１２は、通信装置１１２を用いて、他の制御装置に配置されたサービスと通信を行う。なお、サービス間通信部５１２は、相互通信を行う２つのサービスが同じ第１制御装置１１０に設けられている場合は、第１制御装置１１０内で情報の伝達を行う。
【００５６】
ソフトウェア更新管理部５１３は、サービスのソフトウェア要素、及び当該サービスの実行マニフェスト及び通信マニフェストのサービス記憶部５１０（本例では、補助記憶装置１１３ｂに設けられる）への更新、追加、及び削除を行う。ソフトウェア更新管理部５１３は、他の制御装置又は自己の制御装置のリカバリ部から転送されたサービスのソフトウェア要素、及びその実行マニフェスト及び通信マニフェストを、補助記憶装置１１３ｂに設けられたサービス記憶部５１０に記憶する。また、ソフトウェア更新管理部５１３は、リカバリ部からサービスの削除要求を受信したとき、サービス実行管理部５１１に対して、サービスの停止要求を行い、サービス記憶部５１０に記憶されている削除要求を受けたサービスのソフトウェア要素、及びその実行マニフェスト及び通信マニフェストを削除する。  
【００５７】
また、リカバリ部５１５が、監視対象サービス記憶部５１６から再配置制御装置に監視対象サービスのソフトウェア要素、及びその実行マニフェスト及び通信マニフェストを転送する際に、ソフトウェア更新管理部５１３を介して転送してもよい。すなわち、ソフトウェア更新管理部５１３は、リカバリ部５１５の指令に従って、監視対象サービス記憶部５１６から監視対象サービスのソフトウェア要素等を読み出し、再配置制御装置に転送してもよい。
【００５８】
監視対象サービス記憶部５１６は、予め設定されたサービスである監視対象サービスのソフトウェア要素と、監視対象サービスの実行マニフェスト及び通信マニフェストと、をリカバリ用として記憶している。本実施の形態では、監視対象サービス記憶部５１６は、第１制御装置１１０の補助記憶装置１１３ｂに設けられている。監視対象サービスは、例えば、制御通信システムが最低限機能するために必要なサービスに設定される。なお、監視対象サービスのソフトウェア要素等は、記憶容量を削減するために、圧縮をして補助記憶装置１１３ｂに記憶されてもよいし、監視対象サービスに含まれるサービス内容を限定し、ソフトウェア規模を縮小したもの補助記憶装置１１３ｂに記憶してもよい。
【００５９】
本実施の形態では、監視対象サービスは、自動車の自動運転を行うために必要なサービス、ここでは、画像前処理サービス３１０、物体検出サービス３２０、車両制御サービス３３０に予め設定されている。
【００６０】
異常監視部５１４は、監視対象サービスに係る異常の有無を検知する。異常監視部５１４は、監視対象サービスに係る異常として、監視対象サービスが配置された制御装置のサービス実行管理部が検知した監視対象サービスの異常情報を収集する。また、異常監視部５１４は、監視対象サービスに係る異常として、サービス間通信部による監視対象サービスと他のサービスとの間のサービス間通信の異常の有無を検知する。例えば、異常監視部５１４は、監視対象サービスと他のサービスとの間において、成果物の情報を提供可能である旨のメッセージの送信が停止した場合、又は成果物の情報を利用する旨のメッセージの送信が停止した場合に、異常が生じたと判定する。
【００６１】
本実施の形態では、異常監視部５１４は、監視対象サービスに係る異常を検知した場合に、各制御装置のサービス実行管理部に対して、各制御装置の処理回路のリソースの使用状態の情報を要求し、各制御装置から送信されたリソースの使用状態の情報を取得する。リソースの使用状態には、現在の演算処理装置の使用率（本例では、ＣＰＵ使用率）、現在のＲＡＭ等の主記憶装置のメモリ使用量が含まれる。
【００６２】
また、異常監視部５１４は、後述するリカバリ部５１５により異常が検知された監視対象サービスのソフトウェア要素及び当該監視対象サービスの実行マニフェスト及び通信マニフェストが、再配置制御装置に転送された後、再配置制御装置に対して、再配置制御装置の処理回路のリソースの使用状態の情報を要求し、再配置制御装置から送信されたリソースの使用状態の情報を取得し、再配置制御装置のリソースの使用状態の情報に基づいて、転送した監視対象サービスが正常に起動したか否かを判定する。具体的には、異常監視部５１４は、リカバリ部５１５のリカバリ処理後の再配置制御装置のリソースの使用状態が、リカバリ処理前の再配置制御装置のリソースの使用状態と監視対象サービスのリソース使用情報との合計に対応している場合は、正常に起動したと判定し、対応していない場合は、正常に起動していないと判定する。そして、異常監視部５１４は、正常に起動していないと判定した場合は、監視対象サービスに係る異常が発生したと判定し、リカバリ部５１５に別の再配置制御装置を選定させて、リカバリ処理を実行させる。
【００６３】
これらの異常監視部５１４の機能は、サービス実行管理部５１１により実行され、ＳＯＡのサービス間通信により他のサービスと通信が行われる異常監視サービス３５０として動作する。
【００６４】
リカバリ部５１５は、異常監視部５１４により監視対象サービスに係る異常が検知された場合に、異常が検知された監視対象サービスを、現在配置されている制御装置から変更して配置する他の制御装置である再配置制御装置を選定する。そして、リカバリ部５１５は、異常が検知された監視対象サービスのソフトウェア要素、及び当該監視対象サービスの実行マニフェスト及び通信マニフェストを、監視対象サービス記憶部５１６から再配置制御装置のサービス記憶部に、ソフトウェア更新管理部を介して転送し追加させる。
【００６５】
本実施の形態では、リカバリ部５１５は、異常監視部５１４が取得した各制御装置のリソースの使用状態の情報、及び異常が検知された監視対象サービスの実行マニフェストに含まれるリソース使用情報に基づいて、異常が検知された監視対象サービスが使用するリソースが収まる制御装置を判定し、判定した制御装置の１つを、再配置制御装置として選定する。
【００６６】
また、リカバリ部５１５は、異常が検知された監視対象サービスが使用するリソースが収まる制御装置がないと判定した場合は、監視対象サービス以外のサービスの実行を終了させて、異常が検知された監視対象サービスが使用するリソースが収まる制御装置を確保し、確保した制御装置を再配置制御装置として選定する。
【００６７】
リカバリ部５１５は、異常が検知された監視対象サービスの通信マニフェストの制御装置の識別子を、再配置制御装置の識別子に書き換えた上で、異常が検知された監視対象サービスのソフトウェア要素、及び当該監視対象サービスの実行マニフェスト及び通信マニフェストを、再配置制御装置のサービス記憶部に、ソフトウェア更新管理部を介して転送し、追加させる。例えば、リカバリ部５１５は、異常が検知された監視対象サービスのソフトウェア要素等を、再配置制御装置のソフトウェア更新管理部に、第１制御装置１１０のソフトウェア更新管理部５１３を介して転送し、再配置制御装置のソフトウェア更新管理部は、転送された監視対象サービスのソフトウェア要素等を再配置制御装置のサービス記憶部に記憶する。
【００６８】
再配置制御装置のサービス実行管理部は、サービス記憶部に追加された監視対象サービスの実行マニフェストに含まれる起動条件が満たされた場合に当該監視対象サービスを起動する。
【００６９】
リカバリ部５１５は、異常が検知された監視対象サービスが実行されていた制御装置（以下、異常検知制御装置と称す）のサービス記憶部から、ソフトウェア更新管理部を介して、監視対象サービスのソフトウェア要素、及び当該監視対象サービスの実行マニフェスト及び通信マニフェストを削除する。例えば、リカバリ部５１５は、異常検知制御装置のソフトウェア更新管理部に、異常が検知された監視対象サービスを削除する指令を伝達し、異常検知制御装置のソフトウェア更新管理部は、異常検知制御装置のサービス記憶部から、異常が検知された監視対象サービスのソフトウェア要素等を削除する。
【００７０】
なお、監視対象サービスと、監視対象サービスの実行マニフェスト及び通信マニフェストと、を記憶した監視対象サービス記憶部は、第１制御装置１１０に備えられなくてもよく、外部のサーバに備えられてもよい。この場合は、リカバリ部５１５は、外部通信部５１７を介して、外部のサーバから、異常が検知された監視対象サービスと、監視対象サービスの実行マニフェスト及び通信マニフェストを取得し、再配置制御装置のサービス記憶部に転送し追加させてもよい。なお、外部通信部５１７は、外部通信装置１１５を用いて、サーバ等の外部装置１１６と通信を行う。
【００７１】
このリカバリ部５１５の機能は、サービス実行管理部５１１により実行され、ＳＯＡのサービス間通信により他のサービスと通信が行われるリカバリサービス３６０として動作する。
【００７２】
＜第２制御装置１２０の機能説明＞
第２制御装置１２０は、図４に示したように、サービス記憶部５２０、サービス実行管理部５２１、サービス間通信部５２２、ソフトウェア更新管理部５２３等の機能部を備えている。第２制御装置１２０は、特定制御装置でないので、異常監視部、リカバリ部、監視対象サービス記憶部、及び外部通信部等は備えられていない。第２制御装置１２０の各機能部５２０〜５２３は、第１制御装置１１０の各機能部５１０〜５１３と同様であるので、説明を省略する。
【００７３】
＜第３制御装置１３０の機能説明＞
第３制御装置１３０は、図６に示したように、サービス記憶部５３０、サービス実行管理部５３１、サービス間通信部５３２、ソフトウェア更新管理部５３３等の機能部を備えている。第３制御装置１３０は、特定制御装置でないので、異常監視部、リカバリ部、監視対象サービス記憶部、及び外部通信部等は備えられていない。第３制御装置１３０の各機能部５３０〜５３３は、第１制御装置１１０の各機能部５１０〜５１３と同様であるので、説明を省略する。
【００７４】
＜異常情報管理サービス、異常監視サービス、リカバリサービスの説明＞
本実施の形態では、上述したように、３つの制御装置のサービス実行管理部５１１、５２１、５３１の異常情報管理機能、第１制御装置１１０の異常監視部５１４及びリカバリ部５１５は、各制御装置のサービス実行管理部により実行され、ＳＯＡのサービス間通信により他のサービスと通信が行われる異常情報管理サービス３４０１、３４０２、３４０４、異常監視サービス３５０、リカバリサービス３６０として動作する。
【００７５】
図１０は、第１制御装置の異常情報管理サービス３４０１、第２制御装置の異常情報管理サービス３４０２、第３制御装置の異常情報管理サービス３４０３、異常監視サービス３５０、リカバリサービス３６０の関係を示す図である。３つの異常情報管理サービス３４０１、３４０２、３４０３は、異常監視サービス３５０と接続され、異常監視サービス３５０は、リカバリサービス３６０と接続される。
【００７６】
図１１は、３つの異常情報管理サービス３４０１、３４０２、３４０３、異常監視サービス３５０、リカバリサービス３６０それぞれの実行マニフェスト及び通信マニフェストを示す図である。  
【００７７】
第１制御装置の異常情報管理サービス３４０１のソフトウェア要素と、その実行マニフェスト３４１１及び通信マニフェスト３４２１は、第１制御装置１１０のサービス記憶部５１０（本例では、補助記憶装置１１３ｂ）に記憶されている。異常監視サービス３５０及びリカバリサービス３６０のソフトウェア要素と、それらの実行マニフェスト３５１、３６１及び通信マニフェストは３５２、３６２、第１制御装置１１０のサービス記憶部５１０（本例では、補助記憶装置１１３ｂ）に記憶されている。第２制御装置の異常情報管理サービス３４０２のソフトウェア要素と、その実行マニフェスト３４１２及び通信マニフェスト３４２２は、第２制御装置１２０のサービス記憶部５２０（本例では、補助記憶装置１２３ｂ）に記憶されている。第３制御装置の異常情報管理サービス３４０３のソフトウェア要素と、その実行マニフェスト３４１３及び通信マニフェスト３４２３は、第３制御装置１３０のサービス記憶部５３０（本例では、補助記憶装置１３３ｂ）に記憶されている。
【００７８】
＜正常時の自動運転制御の動作＞
まず、正常時における自動運転制御の動作について説明する。車両の電源がオンされると、第１制御装置１１０の補助記憶装置１１３ｂに記憶されているＯＳが、主記憶装置１１３ａにロードされて、演算処理装置１１１によって実行される。ＯＳが実行されると、ＯＳは、補助記憶装置１１３ｂに記憶されているサービス実行管理部５１１のプログラムを補助記憶装置１１３ｂにロードして、ＯＳ管理下のプロセスとして、実行を開始する。次に、サービス実行管理部５１１は、補助記憶装置１１３ｂに記憶されているサービス間通信部５１２のプログラムを補助記憶装置１１３ｂにロードして、サービス間通信部５１２を起動させる。同様に、サービス実行管理部５１１は、補助記憶装置１１３ｂに記憶されているソフトウェア更新管理部５１３のプログラムを補助記憶装置１１３ｂにロードして、ソフトウェア更新管理部５１３を起動させる。  
【００７９】
第２制御装置１２０及び第３制御装置１３０についても、第１制御装置１１０と同様の手順で、それぞれの制御装置において、ＯＳが起動され、その後、サービス実行管理部５２１、５３１、サービス間通信部５２２、５３２、及びソフトウェア更新管理部５２３、５３３が起動される。
【００８０】
図１２及び図１３は、前述したサービス実行管理部５２１、サービス間通信部５２２、及びソフトウェア更新管理部５２３が起動された後における第２制御装置１２０の動作を示したシーケンス図である。同様に、図１４は、前述したサービス実行管理部５３１、サービス間通信部５３２、及びソフトウェア更新管理部５３３が起動された後における第３制御装置１３０の動作を示したシーケンス図である。  
【００８１】
まず、図１２を用いて、第２制御装置１２０に配置されている画像前処理サービス３１０の動作を説明する。  
【００８２】
ステップＳ１０１において、サービス実行管理部５２１は、第２制御装置１２０のサービス記憶部５２０（本例では、補助記憶装置１２３ｂ）に記憶されている画像前処理サービス３１０の実行マニフェスト３１１を主記憶装置１２３ａにロードして、画像前処理サービス３１０の起動条件を確認し、起動条件が満たされている場合に画像前処理サービス３１０を起動させる。  
【００８３】
ステップＳ１０２において、画像前処理サービス３１０は、サービス実行管理部５２１に対して、起動が正常に完了したことを通知する。  
【００８４】
ステップＳ１０３において、画像前処理サービス３１０は、サービス間通信部５２２に対してサービスの成果物の情報（本例では、画像処理後の画像データ）を提供可能である旨のサービス提供可能の登録を要求する。  
【００８５】
ステップＳ１０４において、画像前処理サービス３１０からサービス提供可能の登録の要求を受けたサービス間通信部５２２は、各制御装置に対して、画像前処理サービス３１０がサービス提供可能である旨のメッセージを送信する。各制御装置へのメッセージ送信は、例えば、マルチキャスト方式で行い、メッセージには、サービス記憶部５２０（補助記憶装置１２３ｂ）に記憶されている画像前処理サービス３１０の通信マニフェスト３１２に含まれる画像前処理サービス３１０の識別子０ｘ０１と画像前処理サービス３１０が配置されている第２制御装置１２０のＩＰアドレス１９２．１６８．１．２を含める。また、このサービス提供可能の登録のメッセージは、画像前処理サービス３１０の停止又は停止要求がない限り、所定の周期で、各制御装置へ送信され、画像前処理サービス３１０が提供可能であることを確認できるようにしている。  
【００８６】
次に、ステップＳ１０５において、サービス間通信部５２２は、後述する図１３に示すステップＳ２０５において送信された画像前処理サービス３１０を利用するサービスがあることを示すメッセージを受信する。また、この受信したメッセージには、画像前処理サービス３１０を利用するサービスが配置されている制御装置のＩＰアドレスが含まれる。
【００８７】
ステップＳ１０６において、サービス間通信部５２２は、画像前処理サービス３１０に対して、画像前処理サービス３１０を利用するサービスがあることを通知する。  
【００８８】
ステップＳ１０７において、画像前処理サービス３１０は、前述した周辺監視カメラで撮影された画像データに対して、物体検出を行いやすくするための画像処理を行い、画像処理後の画像データを生成する。  
【００８９】
ステップＳ１０８において、サービス間通信部５２２は、ステップＳ１０５で受信したＩＰアドレスに基づき、画像前処理サービス３１０を利用するサービスが配置されている制御装置に対して、ステップＳ１０７で生成した画像データを送信する。
【００９０】
次に、図１３を用いて、第２制御装置１２０に配置されている物体検出サービス３２０の動作を説明する。  
【００９１】
ステップＳ２０１において、サービス実行管理部５２１は、第２制御装置１２０のサービス記憶部５２０（本例では、補助記憶装置１２３ｂ）に記憶されている物体検出サービス３２０の実行マニフェスト３２１を主記憶装置１２３ａにロードして、物体検出サービス３２０の起動条件を確認し、起動条件が満たされている場合に物体検出サービス３２０を起動させる。  
【００９２】
ステップＳ２０２において、物体検出サービス３２０は、サービス実行管理部５２１に対して、起動が正常に完了したことを通知する。  
【００９３】
ステップＳ２０３において、物体検出サービス３２０は、サービス間通信部５２２に対して、利用する成果物の情報（本例では、画像処理後の画像データ）を提供する他のサービス（本例では、画像前処理サービス３１０）の検索を要求する。ステップＳ２０４において、画像前処理サービス３１０の検索要求を受けたサービス間通信部５２２は、画像前処理サービス３１０のサービス提供可能を示すメッセージを待機し、図１２に示すステップＳ１０４によって送信される画像前処理サービス３１０のサービス提供可能を示すメッセージを受信する。  
【００９４】
ステップＳ２０５において、サービス間通信部５２２は、画像前処理サービス３１０のサービス提供可能を示すメッセージを受信すると、サービス提供可能を示すメッセージに含まれる画像前処理サービス３１０が配置される第２制御装置１２０のＩＰアドレス１９２．１６８．１．２を取得し、その第２制御装置１２０に対して、画像前処理サービス３１０の利用要求を示すメッセージを送信する。このサービス利用要求メッセージには、サービス記憶部５２０（補助記憶装置１２３ｂ）に記憶されている物体検出サービス３２０の通信マニフェスト３２２に含まれる物体検出サービス３２０が配置されている第２制御装置１２０のＩＰアドレス１９２．１６８．１．２が含まれる。  
【００９５】
これらのステップＳ２０３〜Ｓ２０５は、物体検出サービス３２０の停止又はサービス検索停止要求がない限り、所定の周期で行われ、画像前処理サービス３１０に対して画像前処理サービス３１０を利用するサービスが存在することを定期的に示す。  
【００９６】
次に、ステップＳ２０６において、サービス間通信部５２２は、図１２に示すステップＳ１０８において画像前処理サービス３１０が送信した画像データを受信し、主記憶装置１２３ａ、または補助記憶装置１２３ｂに記憶する。  
【００９７】
ステップＳ２０７において、サービス間通信部５２２は、物体検出サービス３２０に対して、画像前処理サービス３１０が送信するデータを受信したことを通知する。  
【００９８】
ステップＳ２０８において、物体検出サービス３２０は、ステップＳ２０６により、サービス間通信部５２２が主記憶装置１２３ａ又は補助記憶装置１２３ｂに記憶した画像データを取得する。  
【００９９】
ただし、物体検出サービス３２０及び画像前処理サービス３１０は、同じ第２制御装置１２０に配置されているため、サービス間通信部５２２を介してメッセージ及びデータを送受信する必要はなく、主記憶装置１２３ａ又は補助記憶装置１２３ｂを介して、メッセージ及びデータの授受を行ってもよい。  
【０１００】
次に、ステップＳ２０９において、物体検出サービス３２０は、サービス間通信部５２２に対してサービスの成果物の情報（本例では、検出物体の情報）を提供可能である旨のサービス提供可能の登録を要求する。
【０１０１】
ステップＳ２１０において、物体検出サービス３２０からのサービス提供可能の登録の要求を受けたサービス間通信部５２２は、各制御装置に対して、物体検出サービス３２０がサービス提供可能である旨を示すメッセージを送信する。各制御装置へのメッセージ送信は、例えば、マルチキャスト方式で行い、メッセージには、サービス記憶部５２０（補助記憶装置１２３ｂ）に記憶されている物体検出サービス３２０の通信マニフェスト３２２に含まれる物体検出サービス３２０の識別子０ｘ０２と物体検出サービス３２０が配置されている第２制御装置１２０のＩＰアドレス１９２．１６８．１．２を含める。また、このサービス提供可能の登録のメッセージは、物体検出サービス３２０の停止又は停止要求がない限り、所定の周期で、各制御装置へ送信され、物体検出サービス３２０が提供可能であることを確認できるようにしている。  
【０１０２】
次に、ステップＳ２１１において、サービス間通信部５２２は、後述する図１４に示すステップＳ３０５によって、送信される物体検出サービス３２０を利用するサービスがあることを示すメッセージを受信する。また、この受信したメッセージには、物体検出サービス３２０を利用するサービスが配置されている制御装置である第３制御装置１３０のＩＰアドレス１９２．１６８．１．３が含まれる。  
【０１０３】
ステップＳ２１２において、サービス間通信部５２２は物体検出サービス３２０に対して、物体検出サービス３２０を利用するサービスがあったことを通知する。  
【０１０４】
ステップＳ２１３において、物体検出サービス３２０は、ステップＳ２０８において画像前処理サービス３１０から送信された画像データを用いて、画像データに写っている物体を検出し、検出した物体の情報を提供する。例えば、物体検出サービス３２０は、画像データから、自車両が走行する車線の位置と、前方車両の位置とを検出し、検出した車線の位置情報及び前方車両の位置情報を算出する。  
【０１０５】
ステップＳ２１４において、サービス間通信部５２２は、ステップＳ２１１で受信したＩＰアドレスに基づき、物体検出サービス３２０を利用するサービスが配置されている制御装置に対して、ステップＳ２１３で算出した検出物体の情報（例えば、車線の位置情報と前方車両の位置情報）を送信する。
【０１０６】
次に、図１４を用いて、第３制御装置１３０に配置されている車両制御サービス３３０の動作を説明する。  
【０１０７】
ステップＳ３０１において、サービス実行管理部５３１は、第３制御装置１３０のサービス記憶部５３０（本例では、補助記憶装置１３３ｂ）に記憶されている車両制御サービス３３０の実行マニフェスト３３１を主記憶装置１３３ａにロードして、車両制御サービス３３０の起動条件を確認し、起動条件が満たされている場合に車両制御サービス３３０を起動させる。  
【０１０８】
ステップＳ３０２において、車両制御サービス３３０は、サービス実行管理部５３１に対して、起動が正常に完了したことを通知する。  
【０１０９】
ステップＳ３０３において、車両制御サービス３３０は、サービス間通信部５３２に対して、利用する成果物の情報（本例では、検出物体の情報）を提供する他のサービス（本例では、物体検出サービス３２０）の検索を要求する。ステップＳ３０４において、物体検出サービス３２０の検索要求を受けたサービス間通信部５３２は、物体検出サービス３２０のサービス提供可能を示すメッセージを待機し、図１３に示すステップＳ２０４によって送信される物体検出サービス３２０のサービス提供可能を示すメッセージを受信する。
【０１１０】
ステップＳ３０５において、サービス間通信部５３２は、物体検出サービス３２０のサービス提供可能を示すメッセージを受信すると、サービス提供可能を示すメッセージに含まれる物体検出サービス３２０が配置される第２制御装置１２０のＩＰアドレス１９２．１６８．１．２を取得し、その第２制御装置１２０に対して、物体検出サービス３２０の利用要求を示すメッセージを送信する。このサービス利用要求メッセージには、サービス記憶部５３０（本例では、補助記憶装置１３３ｂ）に記憶されている車両制御サービス３３０の通信マニフェスト３３２に含まれる車両制御サービス３３０が配置されている第３制御装置１３０のＩＰアドレス１９２．１６８．１．３が含まれる。  
【０１１１】
これらのステップＳ３０３〜Ｓ３０５は、車両制御サービス３３０の停止又はサービス検索停止要求がない限り、所定の周期で行われ、物体検出サービス３２０に対して車両制御サービス３３０を利用するサービスが存在することを定期的に示す。  
【０１１２】
次に、ステップＳ３０６において、サービス間通信部５３２は、図１３に示すステップＳ２１４によって送信される物体検出サービス３２０が送信する車線の位置情報と前方車両の位置情報を受信し、主記憶装置１３３ａ、または補助記憶装置１３３ｂに記憶する。
【０１１３】
ステップＳ３０７において、サービス間通信部５３２は、車両制御サービス３３０に対して、物体検出サービス３２０が送信するデータを受信したことを通知する。  
【０１１４】
ステップＳ３０８において、車両制御サービス３３０は、ステップＳ３０６により、サービス間通信部５３２が主記憶装置１３３ａ、または補助記憶装置１３３ｂに記憶した車線の位置情報と前方車両の位置情報を取得する。  
【０１１５】
ステップＳ３０８の実行後、図では示さないが、車両制御サービス３３０は、取得した車線の位置情報より、車線の中央位置からの逸脱距離を計算し、逸脱を軽減する方向に舵角の目標値を設定し、同様に取得した前方車両の位置情報より、前方車両がない場合は、一定の車速を維持する目標値を設定し、前方車両がある場合は、一定の車間距離を保つ方向に車速の目標値を設定する。その後、設定した目標値を、操舵制御装置１６０と動力制御装置１７０のそれぞれに送信し、各制御装置は、取得した目標値を満たすようにアクチュエータを制御する。  
【０１１６】
ここで、図１２〜図１４に示すステップにおいて、ステップＳ１０３〜Ｓ１０８、Ｓ２０９〜Ｓ２１４の処理については、ＳＯＡにおいてサービスの成果物の情報を提供する処理であり、ステップＳ２０３〜Ｓ２０７、Ｓ３０３〜Ｓ３０７の処理については、ＳＯＡにおいてサービスの成果物の情報を利用する処理であり、これらの処理を実行することで、それぞれのサービス間通信を実現している。以下で説明する異常情報管理サービス、異常監視サービス、リカバリサービスのサービス間通信も同様の手順で行われる。
【０１１７】
＜異常発生時のリカバリ処理の動作＞
次に、図１５〜図１８を用いて、監視対象サービスの異常を監視し、異常が検知された監視対象サービスを、別の制御装置に再配置することで監視対象サービスのリカバリを行う方法を説明する。  
【０１１８】
図１５は、リカバリさせるための初期処理に関するフローを示す図である。  
【０１１９】
ステップＳ４０１において、各制御装置のサービス実行管理部が備える異常情報管理サービスを起動する。具体的には、第２制御装置１２０において、自動車が始動し、サービス実行管理部５２１とサービス間通信部５２２の実行が開始されると、サービス実行管理部５２１は、補助記憶装置１２３ｂに記憶されている異常情報管理サービス３４０２のプログラムを、主記憶装置１２３ａにロードして、異常情報管理サービス３４０２を起動させる。異常情報管理サービス３４０２は、起動すると、サービス間通信部５２２に対して、異常情報を提供可能である旨のサービス提供可能の登録を要求する。ここまでの動作は、図１２のステップＳ１０１〜Ｓ１０４、図１３のＳ２０１、Ｓ２０２、Ｓ２０９、Ｓ２１０と同様である。また、第１制御装置１１０及び第３制御装置１３０についても、同様の手順で、異常情報管理サービス３４０１、３４０３が起動される。  
【０１２０】
次に示すステップＳ４０２〜Ｓ４０４に関しては、第１制御装置１１０が行う動作である。  
【０１２１】
ステップＳ４０２において、第１制御装置１１０のサービス実行管理部５１１は、第１制御装置１１０の補助記憶装置１１３ｂに記憶されている、異常監視部５１４として機能する異常監視サービス３５０のプログラムを主記憶装置１１３ａにロードして、異常監視サービス３５０を起動させる。異常監視サービス３５０は、サービス間通信部５１２に対し、各制御装置で動作する異常情報管理サービス３４０１〜３４０３が提供する異常情報の利用を要求する。ステップＳ４０１において、各制御装置の異常情報管理サービス３４０１〜３４０３は、サービス提供可能を示すメッセージを送信しているため、ステップＳ４０２において、異常情報管理サービス３４０１〜３４０３と異常監視サービス３５０との間で、異常情報の提供と利用を行うサービス間通信が確立する。
【０１２２】
ステップＳ４０３において、第１制御装置１１０のサービス実行管理部５１１は、補助記憶装置１１３ｂに記憶されている、リカバリ部５１５として機能するリカバリサービス３６０のプログラムを主記憶装置１１３ａにロードして、リカバリサービス３６０を起動させる。リカバリサービス３６０は、異常監視サービス３５０が各サービスの異常を検出するまでスタンバイ状態となる。  
【０１２３】
ステップＳ４０４において、異常監視サービス３５０は、ステップＳ４０２で利用要求する異常情報管理サービス３４０１〜３４０３に対して、各異常情報管理サービス３４０１〜３４０３が配置された制御装置で動作している監視対象サービスの異常情報の提供を要求する。  
【０１２４】
ステップＳ４０５において、各異常情報管理サービス３４０１〜３４０３は、それぞれのサービス実行管理部５１１、５２１、５３１に監視対象サービスに係る異常の有無を問い合わせて、その異常の有無と監視対象サービスの識別子を異常監視サービス３５０に送信する。また、監視対象サービスに異常が発生している場合は、異常内容の情報を含めて送信されてもよい。具体的には、第２制御装置１２０において、異常情報管理サービス３４０２は、サービス実行管理部５２１から、第２制御装置１２０で動作している監視対象サービスである画像前処理サービス３１０及び物体検出サービス３２０の異常情報を収集し、第１制御装置１１０の異常監視サービス３５０へ送信する。他の制御装置についても、各制御装置の異常情報管理サービスは、同様の手順で、各制御装置において動作している監視対象サービスの異常情報を異常監視サービス３５０へ送信する。  
【０１２５】
ステップＳ４０６において、異常監視サービス３５０は、異常情報管理サービス３４０１〜３４０３から異常に係る情報を受信すると、図１６に示すような、監視対象サービスの異常に係る状態を一覧にしたデータベースを作成し、第１制御装置の主記憶装置１１３ａ又は補助記憶装置１１３ｂに記憶する。また、異常情報管理サービス３４０１〜３４０３は、異常情報を送信する際、その異常情報管理サービスが配置された制御装置のＩＰアドレスも併せて送信するため、このＩＰアドレスもデータベースに記録され、各監視対象サービスがどの制御装置に配置されているかも把握可能である。
【０１２６】
また、異常監視サービス３５０は、監視対象サービスから他のサービスに送信されている、サービスの成果物の情報を提供可能である旨のメッセージを収集し、このメッセージの送信が停止している場合に、監視対象サービスに係る異常が生じたと判定する。また、異常監視サービス３５０は、監視対象サービスから他のサービスに送信されている、サービスの成果物の情報を利用する旨のメッセージを収集し、このメッセージの送信が停止している場合に、監視対象サービスに係る異常が生じたと判定する。
【０１２７】
図１６に示すデータベースは、ステップＳ４０６において、異常監視サービス３５０が作成するデータベースの例である。図１６の上段のデータベース４００ａは、ステップＳ４０６により作成されるデータベースであり、中段のデータベース４００ｂは、後述する物体検出サービス３２０に異常が発生し、上段のデータベース４００ａを更新した後のデータベースであり、下段のデータベース４００ｃは、物体検出サービス３２０の配置を変更し、中段のデータベース４００ｂを更新した後のデータベースである。
【０１２８】
次に、図１７を用いて、監視対象サービスにおいて異常が発生したときの動作を説明する。  
【０１２９】
ステップＳ４１１において、異常監視サービス３５０は、異常情報管理サービス３４０１〜３４０３から送信される監視対象サービスに係る異常の有無を確認する。異常情報を受信していない場合はステップＳ４１２へ進み、異常情報を受信している場合はステップＳ４１３へ進む。具体的には、第２制御装置１２０に配置された物体検出サービス３２０は、異常を検知すると第２制御装置のサービス実行管理部５２１へ通知する。そして、第２制御装置の異常情報管理サービス３４０２は、物体検出サービス３２０の異常情報を異常監視サービス３５０へ送信する。  
【０１３０】
ステップＳ４１２において、異常監視サービス３５０は、監視対象サービスから他のサービスに送信されている、サービス提供可能を示すメッセージ、及びサービス利用要求を示すメッセージの一方又は双方を受信する。図１６に示した上段のデータベース４００ａの通信状態と相違がある場合は、監視対象サービスに異常が発生したと判定して、ステップＳ４１３へ進み、相違がない場合、監視対象サービスに異常はないと判断し、ステップＳ４１１へ戻り、監視対象サービスの監視を続ける。このステップＳ４１２において通信状態により異常が検出される場合は、例えば、物体検出サービス３２０に想定外の異常が発生し、物体検出サービス３２０からサービス実行管理部５２１への異常通知が完了することなく、物体検出サービス３２０が停止し、物体検出サービス３２０が定期的に送信するサービス提供可能を示すメッセージ、及びサービス利用要求を示すメッセージが送信されなくなった場合である。  
【０１３１】
次に、ステップＳ４１３において、ステップＳ４１１又はステップＳ４１２で得られた異常情報を、図１５に示すステップＳ４０６で作成するデータベース４００ａを更新する。例えば、ステップＳ４１１において異常情報を受信した場合は、物体検出サービス３２０の異常有無を「あり」に変更する。図１６の中段のデータベース４００ｂは、ステップＳ４１３により更新された後のデータベースである。  
【０１３２】
ステップＳ４１４において、異常監視サービス３５０は、異常情報管理サービス３４０１〜３４０３に対して、各制御装置のＣＰＵ使用率とメモリ使用量といったリソース情報を要求する。
【０１３３】
ステップＳ４１５において、各制御装置の異常情報管理サービス３４０１〜３４０３は、異常監視サービス３５０から制御装置の処理回路のリソースの使用状態の情報の要求を受けた場合に、各制御装置のサービス実行管理部を介して、ＯＳから制御装置のＣＰＵ使用率及びメモリ使用量を取得し、異常監視サービス３５０へ送信する。例えば、第２制御装置１２０において、異常情報管理サービス３４０２は、サービス実行管理部５２１を介して、ＯＳから第２制御装置１２０の現在のＣＰＵ使用率及びメモリ使用量を取得し、異常監視サービス３５０に送信する。
【０１３４】
ステップＳ４１６において、異常監視サービス３５０は、異常情報管理サービス３４０１〜３４０３から送信された各制御装置のＣＰＵ使用率及びメモリ使用量に基づいて、各制御装置のリソースの使用状態のリストを作成し、第１制御装置の主記憶装置１１３ａ又は補助記憶装置１１３ｂに記憶する。図１８に、ステップＳ４１６で作成する各制御装置のリソースの使用状態のリスト４０１の例を示している。リスト４０１には、各制御装置のＩＰアドレスと、各制御装置のＣＰＵ使用率及びメモリ使用量とが記憶される。
【０１３５】
次に、図１９を用いて、リカバリサービス３６０のリカバリ処理を説明する。
【０１３６】
ステップＳ４２１において、リカバリサービス３６０は、異常監視サービス３５０が異常監視サービスに係る異常を検知し、図１７に示すステップＳ４１６において各制御装置のリソースの使用状態（ＣＰＵ使用率及びメモリ使用量）の収集が完了すると、スタンバイ状態から実行状態に遷移し、異常が検知された監視対象サービスを再配置する再配置制御装置を選定する。
【０１３７】
例えば、第２制御装置１２０に配置されている物体検出サービス３２０に係る異常が検知された場合は、リカバリサービス３６０は、監視対象サービス記憶部５１６（本例では、第１制御装置の補助記憶装置１１３ｂ）に記憶されているリカバリ用の物体検出サービス３２０の実行マニフェスト３２１を主記憶装置１１３ａにロードし、リソース使用情報（本例では、ＣＰＵの最大使用率、最大メモリ使用量）を読み取る。そして、リカバリサービス３６０は、各制御装置のリソースの使用状態を示す図１８のリスト４０１と比較し、物体検出サービス３２０のＣＰＵの最大使用率と最大メモリ使用量が収まる第３制御装置１３０を選択する。ただし、リカバリサービス３６０は、ＣＰＵの最大使用率と最大メモリ使用量が収まる制御装置が複数ある場合は、予め設定した各制御装置の優先度に基づいて、より優先度の高い制御装置を選定してもよい。或いは、各監視対象サービスを再配置する制御装置が予め設定されていてもよい。
【０１３８】
一方、異常が検知された監視対象サービスのリソースが収まる制御装置が存在しない場合は、リカバリサービス３６０は、監視対象サービス以外のサービス、例えば、マルチメディアサービスなど、自動運転制御への影響が少ないサービスのＣＰＵ使用率とメモリ使用量を確認し、監視対象サービス以外のサービスの停止によって、異常が検知された監視対象サービスのリソースを確保できる場合は、監視対象サービス以外のサービスを停止させる処理を行い、そのリソースを確保した制御装置を、再配置制御装置として選定してもよい。また、異常が検知された監視対象サービスが配置されている制御装置において、ＣＰＵ及びメモリの領域を複数の領域に分割することができる場合は、異常が検知された監視対象サービスが現在使用している領域とは別の領域に監視対象サービスを再配置してもよい。すなわち、同一の制御装置における別の領域が選定され、再配置されてもよい。
【０１３９】
ステップＳ４２２において、リカバリサービス３６０は、異常が検知された監視対象サービスのリカバリ用の通信マニフェストを、ステップＳ４２１で選定された再配置制御装置のＩＰアドレスに書き換える。例えば、リカバリサービス３６０は、異常が発生した物体検出サービス３２０のリカバリ用の通信マニフェスト３２２のＩＰアドレスを第２制御装置のＩＰアドレス１９２．１６８．１．２から再配置制御装置である第３制御装置のＩＰアドレス１９２．１６８．１．３に書き換える。  
【０１４０】
ステップＳ４２３において、リカバリサービス３６０は、第１制御装置のソフトウェア更新管理部５１３に指令して、異常が発生した物体検出サービス３２０のリカバリ用のソフトウェア要素（プログラム）、及びその実行マニフェスト及びステップＳ４２２で書き換えた通信マニフェストのパッケージを再配置制御装置のサービス記憶部に転送し追加させる。
【０１４１】
ステップＳ４２４において、再配置制御装置は、ステップＳ４２３で転送された異常が検知された監視対象サービスのソフトウェア要素等のパッケージを受信する。再配置制御装置のソフトウェア更新管理部は、受信したパッケージを、再配置制御装置のサービス記憶部（本例では、補助記憶装置）に記憶する。このとき、ソフトウェア更新管理部は、受信したパッケージに含まれる監視対象サービスのソフトウェア要素が圧縮されている場合は、解凍してから補助記憶装置に記憶する。また、正常にパッケージを受信できたことを確認するために、転送前後のファイルサイズを比較してもよい。
【０１４２】
例えば、再配置制御装置に選定された第３制御装置１３０は、ステップＳ４２３で転送された物体検出サービス３２０のソフトウェア要素等のパッケージを受信する。パッケージを受信すると第３制御装置のソフトウェア更新管理部５３３は、パッケージに含まれる物体検出サービス３２０のソフトウェアを解凍した後、補助記憶装置１３３ｂに記憶し、実行マニフェスト３２１及び通信マニフェスト３２２も補助記憶装置１３３ｂに記憶する。
【０１４３】
次に、ステップＳ４２５において、再配置制御装置のサービス実行管理部は、転送されたリカバリ用の監視対象サービスのパッケージに含まれる実行マニフェストを補助記憶装置から主記憶装置にロードし、サービスの起動条件を確認し、起動条件が満たされた場合に、サービスを起動する。そして、起動したサービスは、上述したように、サービス提供者である場合は、サービス間通信部に対し、サービス提供可能の登録を要求し、サービス利用者である場合は、サービス間通信部に対し、サービス利用を要求する。
【０１４４】
例えば、第３制御装置１３０のサービス実行管理部５３１は、物体検出サービス３２０の実行マニフェスト３２１を補助記憶装置１３３ｂから主記憶装置１３３ａにロードし、起動条件が満たされた場合、物体検出サービス３２０を起動する。起動した物体検出サービス３２０は、サービス間通信部５３２に対し、物体検出サービス３２０のサービス提供可能の登録の要求と車両制御サービス３３０の利用検索要求を伝達し、サービス間通信部５３２は、物体検出サービス３２０がサービス提供可能であることを示すメッセージの送信と、車両制御サービス３３０がサービス提供可能であることを示すメッセージの受信待機を行う。これらのリカバリ後の動作は、図１３に示した処理を、第３制御装置１３０が行えばよい。
【０１４５】
次に、図２０を用いて、リカバリ処理後の動作を説明する。  
【０１４６】
ステップＳ４３１において、異常監視サービス３５０は、図１５のステップＳ４０４からステップＳ４０６と同様に、再配置制御装置に再配置された監視対象サービスに係る異常の有無を検知する。例えば、第３制御装置１３０に再配置された物体検出サービス３２０は、第３制御装置１３０において正しく動作すると、図１６に示した異常検知時の中段のデータベース４００ｂは、下段のデータベース４００ｃに更新され、物体検出サービス３２０の異常有無が「なし」に変更され、物体検出サービス３２０が配置されている制御装置のＩＰアドレスが、第３制御装置のＩＰアドレス１９２．１６８．１．３に変更される。
【０１４７】
ステップＳ４３２において、異常監視サービス３５０は、ステップＳ４３１で取得した監視対象サービスの状態に基づいて、再配置制御装置に再配置された監視対象サービスが、正常に動作しているか否かを判定し、正常に動作している場合は、ステップＳ４３３に進み、正常に動作していると判定されない場合は、所定時間経過後に再度ステップＳ４３２を実施する。また、ステップＳ４３２を所定回数繰り返しても正常に動作していると判定されない場合は、図１９のステップＳ４２１へ戻り、再度リカバリ処理を実施してもよい。
【０１４８】
ステップＳ４３３において、リカバリサービス３６０は、第３制御装置のソフトウェア更新管理部５１３を介して、異常が検知された監視対象サービスが再配置前に配置されていた再配置前の制御装置に対して、異常が検知された監視対象サービスのソフトウェア要素、及びその実行マニフェスト及び通信マニフェストを削除する要求を伝達する。例えば、リカバリサービス３６０は、ソフトウェア更新管理部５１３に指令して、第２制御装置１２０に対して、物体検出サービス３２０のソフトウェア要素、その実行マニフェスト３２１及び通信マニフェスト３２２を含むパッケージを削除するメッセージを伝達させる。
【０１４９】
次に、ステップＳ４３４において、ステップＳ４３３によりパッケージの削除要求を受けた再配置前の制御装置では、ソフトウェア更新管理部が、補助記憶装置から削除要求を受けたパッケージを削除する。例えば、第２制御装置１２０のソフトウェア更新管理部５２３は、物体検出サービス３２０が動作している場合は、サービス実行管理部５２１を介して、物体検出サービス３２０を停止させ、補助記憶装置１２３ｂに記憶されている物体検出サービス３２０のソフトウェア要素、その実行マニフェスト３２１及び通信マニフェスト３２２のパッケージを削除する。ただし、物体検出サービス３２０を停止させるタイミングは、物体検出サービス３２０に係る異常を検知したタイミングで行われてもよい。
【０１５０】
〔その他の実施の形態〕
最後に、本願のその他の実施の形態について説明する。なお、以下に説明する各実施の形態の構成は、それぞれ単独で適用されるものに限られず、矛盾が生じない限り、他の実施の形態の構成と組み合わせて適用することも可能である。
【０１５１】
（１）上記の実施の形態１では、各制御装置のサービス実行管理部の異常情報管理機能、特定制御装置の異常監視部及びリカバリ部は、各制御装置のサービス実行管理部により実行され、ＳＯＡのサービス間通信により他のサービスと通信が行われる異常情報管理サービス、異常監視サービス、リカバリサービスとして動作する場合を例に説明した。しかし、本願の実施の形態はこれに限定されない。すなわち、各制御装置のサービス実行管理部の異常情報管理機能、特定制御装置の異常監視部及びリカバリ部は、ＯＳ上で動作するアプリケーションとして動作してもよい。
【０１５２】
（２）上記の実施の形態１では、リカバリ用の監視対象サービスのソフトウェア要素及びその実行マニフェスト及び通信マニフェストを記憶した監視対象サービス記憶部が、特定制御装置に設けられている場合を例に説明した。しかし、本願の実施の形態はこれに限定されない。すなわち、監視対象サービス記憶部は外部装置１１６に設けられ、特定制御装置は、外部装置と通信を行う外部通信部５１７を備え、リカバリ部は、異常が検知された監視対象サービスのソフトウェア要素、及び当該監視対象サービスの実行マニフェスト及び通信マニフェストを、外部通信部を介して、外部装置から取得し、再配置制御装置のサービス記憶部に転送し追加させるように構成されてもよい。例えば、外部装置１１６は、ネットワーク網に接続されたサーバとされ、外部通信部５１７は、ネットワーク網に接続し、ネットワーク網を介してサーバと通信を行う。
【０１５３】
（３）上記の実施の形態１では、各制御装置は、処理回路としてＣＰＵ等の演算処理装置及び記憶装置を備えている場合を例に説明した。しかし、本願の実施の形態はこれに限定されない。すなわち、各制御装置は、処理回路として、図２１に示すように、専用のハードウェア９３、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ニューロチップ、ＡＳＩＣ、ＦＰＧＡ、又はこれらを組み合わせた回路等が備えられてもよい。
【０１５４】
（４）上記の実施の形態１では、複数のサービスは、車両に搭載された複数の制御装置により実行され、ネットワークは、車載ネットワークであり、監視対象サービスは、車両の自動運転を行うために必要なサービスに設定されている場合を例に説明した。しかし、本願の実施の形態はこれに限定されない。すなわち、制御通信システムは、車両に搭載された制御通信システム以外の任意の制御通信システムであってもよい。例えば、制御通信システムは、発電所、工場等のプラントに設けられた複数の制御装置をイントラネットワークにより相互に接続する制御通信システムとされてもよく、或いは複数の制御装置を、インターネットなどの公共のネットワーク網により相互に接続する制御通信システムとされてもよい。
【０１５５】
（５）上記の実施の形態１では、図１に破線で示したように、車両情報センサ群１５０は、第２制御装置１２０だけでなく、再配置の可能性のある第１制御装置１１０及び第３制御装置１３０にも接続線により冗長的に接続され、再配置に関係する操舵制御装置１６０及び動力制御装置１７０は、第３制御装置１３０だけでなく、再配置の可能性のある第１制御装置１１０及び第２制御装置１２０にも接続線により冗長的に接続されている場合を例に説明した。しかし、本願の実施の形態はこれに限定されない。すなわち、車両情報センサ群１５０、操舵制御装置１６０、及び動力制御装置１７０は、再配置の可能性のある各制御装置にも冗長的に接続されなくてもよい。この場合は、例えば、車両情報センサ群１５０、操舵制御装置１６０、及び動力制御装置１７０は、車載ネットワークを介して、再配置の可能性のある各制御装置に接続されてもよい。
【０１５６】
本願は、例示的な実施の形態が記載されているが、実施の形態に記載された様々な特徴、態様、及び機能は特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも１つの構成要素を変形する場合、追加する場合または省略する場合が含まれるものとする。
【符号の説明】
【０１５７】
１００  制御通信システム、１１０  第１制御装置（特定制御装置）、１２０  第２制御装置、１３０  第３制御装置、３１０  画像前処理サービス、３２０  物体検出サービス、３３０  車両制御サービス、３５０  異常監視サービス、３６０  リカバリサービス、５１０  第１制御装置のサービス記憶部、５１１  第１制御装置のサービス実行管理部、５１２  第１制御装置のサービス間通信部、５１３  第１制御装置のソフトウェア更新管理部、５１４  第１制御装置の異常監視部、５１５  第１制御装置のリカバリ部、５１６  第１制御装置の監視対象サービス記憶部、５１７  第１制御装置の外部通信部、５２０  第２制御装置のサービス記憶部、５２１  第２制御装置のサービス実行管理部、５２２  第２制御装置のサービス間通信部、５２３  第２制御装置のソフトウェア更新管理部、５３０  第３制御装置のサービス記憶部、５３１  第３制御装置のサービス実行管理部、５３２  第３制御装置のサービス間通信部、５３３  第３制御装置のソフトウェア更新管理部、３４０１  第１制御装置の異常情報管理サービス、３４０２  第２制御装置の異常情報管理サービス、３４０３  第３制御装置の異常情報管理サービス
【要約】
【課題】制御装置が提供する機能に異常が発生した場合に、その異常が発生した機能を別の制御装置に配置転換することで、機能の継続性が損なわれることを抑制する制御通信システムを提供する。
【解決手段】監視対象サービスに係る異常が検知された場合に、監視対象サービスを、現在配置されている制御装置から変更して配置する再配置制御装置を選定し、監視対象サービスのソフトウェア要素、及び実行マニフェスト及び通信マニフェストを、再配置制御装置のサービス記憶部に、転送し追加させる制御通信システム１００。
【選択図】図１【図１】
0006779354.tif 000002
【図２】
0006779354.tif 000003
【図３】
0006779354.tif 000004
【図４】
0006779354.tif 000005
【図５】
0006779354.tif 000006
【図６】
0006779354.tif 000007
【図７】
0006779354.tif 000008
【図８】
0006779354.tif 000009
【図９】
0006779354.tif 000010
【図１０】
0006779354.tif 000011
【図１１】
0006779354.tif 000012
【図１２】
0006779354.tif 000013
【図１３】
0006779354.tif 000014
【図１４】
0006779354.tif 000015
【図１５】
0006779354.tif 000016
【図１６】
0006779354.tif 000017
【図１７】
0006779354.tif 000018
【図１８】
0006779354.tif 000019
【図１９】
0006779354.tif 000020
【図２０】
0006779354.tif 000021
【図２１】
0006779354.tif 000022