以下、図1〜図11を用いて、本発明の一実施形態による車両の制御装置の構成について説明する。
最初に、図1を用いて、本実施形態による車両の制御装置のシステム構成について説明する。
図1は、本発明の一実施形態による車両の制御装置の構成を示すシステム構成図である。
車両速度コントローラSC,レーダセンサRS,エンジンコントローラEC,ブレーキコントローラBC,変速機コントローラTCは、互いに、ローカルエリアネットワークLANを介して接続されており、相互に、制御信号やデータを送受信する。
レーダセンサRSは、先行車と自車との車間距離と、先行車と自車との相対速度を検出する。レーダセンサRSは、検出した車間距離と相対速度をローカルエリアネットワークLANを介して車両速度コントローラSCに送信する。
車両速度コントローラSCは、図2を用いて後述するように、車輪速センサを備えており、自車速度を検出する。また、車両速度コントローラSCは、目標車間距離設定手段SETを用いて、運転者の操作により設定された目標車間距離を取り込む。車両速度コントローラSCは、図2を用いて後述するように、カーナビゲーションのような位置情報表示手段を備えており、道路のカーブや坂道等の道路情報を位置情報表示手段と共有している。
車両速度コントローラSCは、レーダセンサRSから送信された車間距離,相対速度と、車輪速センサによって検出された自車速度と、設定手段SETによって設定された目標車間距離と、位置情報表示手段と共有している道路情報に基づいて、目標速度を算出する。また、車両速度コントローラSCは、算出された目標速度と自車速度に基づいて、目標トルクを算出し、エンジンコントローラECとブレーキコントローラBCにそれぞれ目標トルク指令を送信する。また、車両速度コントローラSCは、ギア比を変更する必要があれば、変速機コントローラTCにギア変更指令を送信する。
エンジンコントローラECは、車両速度コントローラSCから送信された目標トルク指令に基づいて、目標トルクが正の時には、電子制御スロットル12の開度や、燃料噴射弁14から噴射される燃料量や、点火プラグ16の点火タイミングを適宜操作し、エンジントルクを制御する。
ブレーキコントローラBCは、車両速度コントローラSCから送信された目標トルク指令に基づいて、目標トルクが負の時に、油圧ポンプ21や比例ソレノイド弁22を操作し、車輪のブレーキトルクを制御する。弁23は、比例ソレノイド弁で調整される自動ブレーキ油圧と、運転者がブレーキペダル24を操作することによりマスタシリンダ25から加えられるフットブレーキ油圧とのいずれか大きい油圧を、ABS26を介して、ブレーキ機構27に伝え、ブレーキ28を制御する。ブレーキ油圧センサ28は、ブレーキ機構27にかかるブレーキ油圧を検出する。ブレーキコントローラBCは、ブレーキ油圧センサ14によって検出されたブレーキ油圧の値を参照して、比例ソレノイド弁22をフィードバック制御する。また、ブレーキコントローラBCは、車両速度コントローラSCによって検出され、ローカルエリアネットワークLANを介して送られた4つの車輪の車輪速データに基づいて、ブレーキのロック状態を検出すると、車輪ロックの解除指令をABS26に出力する。ABS26は、車輪ロックの解除指令に基づいて、4個のブレーキ機構27を制御して、車輪ロックを解除する。
変速機コントローラTCは、車両速度コントローラSCから送信されたギア変更指令に基づいて、自動変速機を制御する。
次に、図2を用いて、本実施形態による車両の制御装置に用いる車両速度コントローラSCのシステム構成について説明する。
図2は、本発明の一実施形態による車両の制御装置に用いる車両速度コントローラSCの構成を示すシステム構成図である。
本実施形態による車両速度コントローラSCは、カーナビゲーションのような位置情報表示手段と、車間距離を制御する車速制御手段の少なくとも2つの機能を有しており、それぞれの機能に対応したオペレーティングシステム(OS)を搭載している。なお、車両速度コントローラSCは、2つのOS以外にもOSを備えているが、少なくとも、位置情報表示手段のOSと、車速制御手段OSは、道路情報などの位置情報を共有するものである。
車両速度コントローラSCは、演算処理部100と、入出力制御部110を備えている。
演算処理部100は、位置を測定するための各種センサ(車輪速センサ150,方位センサ155,ジャイロ160,GPS受信装置165)から出力されるセンサ情報から現在位置を検出する。そして、得られた現在位置情報を基に地図表示に必要な地図メッシュデータを地図データベース125から読み出し、地図データをグラフィックス展開する。この地図データに現在地を示すマークを重ね、ディスプレイ120へ表示する現在位置表示をディスプレイ120に表示する。また、演算処理部100は、ユーザから指示された目的地と現在地を結ぶ最適な経路を探索し、その経路を地図に重ねてディスプレイ120に表示し、ユーザを目的地に誘導する経路誘導を実行する。さらに、演算処理部100は、ユーザが必要とする動的情報を情報サービスセンターに問い合わせ、得られた動的情報をディスプレイ120へ表示する。以上のように、演算処理部100は、カーナビゲーションのような位置情報表示手段としての機能を有しており、図4を用いて後述するように、この機能を達成するための第1のOSを備えている。
また、演算処理部100は、レーダセンサRSから送信された車間距離,相対速度と、車輪速センサによって検出された自車速度と、設定手段SETによって設定された目標車間距離と、位置情報表示手段と共有している道路情報に基づいて、目標速度を算出する。そして、車両速度コントローラSCは、算出された目標速度と自車速度に基づいて、目標トルクを算出し、エンジンコントローラECとブレーキコントローラBCにそれぞれ目標トルク指令を送信する。また、車両速度コントローラSCは、ギア比を変更する必要があれば、変速機コントローラTCにギア変更指令を送信する。以上のように、演算処理部100は、車速制御手段としての機能を有しており、図4を用いて後述するように、この機能を達成するための第2のOSを備えている。
入出力制御部110は、演算処理部100と周辺デバイスを接続するユニットであり、周辺デバイスのインタフェースに応じたI/Oを備える。入出力制御部110の詳細については、図3を用いて後述する。入出力制御部110には、ディスプレイ120,地図データベース125,音声入出力装置130,入力装置135,LAN装置140,通信装置145,車輪速センサ150,方位センサ155,ジャイロ160,GPS受信装置165,放送受信装置170が接続されている。
ディスプレイ120は、入出力制御部110で生成されたグラフィックス情報を表示するユニットであり、CRTや液晶ディスプレイで構成される。また、演算処理部100とディスプレイ120間の信号S1は、RGB信号やNTSC(National Television System Committee)信号でる。
通信装置145は、公衆回線網や専用回線網と接続し、双方向通信するための装置で、公衆回線網に接続するための機器として携帯電話やPHSなどが、専用回線網としてMCA無線などがある。また、有料道路の料金や通行税を徴収するために設置が進んでいるETC(自動料金徴収システム)といったDSRC(短距離スポット通信)もここに含まれる。通信装置145を介して、車載用ナビゲーション手段からインターネットに接続することで、極めて豊富な最新コンテンツを車内に取り込むことができる。コンテンツの例として、自車両が位置する場所の半径2km内の地図メッシュデータ、案内情報、検索情報、道路勾配、道路の曲率半径、交差点の位置を含む地図情報がある。
放送受信装置170は、地上に設置された放送局や衛星から送られる放送波を受信するための装置である。放送波は、大きくアナログ放送とデジタル放送に分離され、主にデジタル放送で受信した内容を受信機でデコードし、演算処理部100でフィルタリング処理することで必要な情報を抽出する。
地図データベース125は、CD−ROMやDVD−ROM、DVD−RAM、ICカード、ハードディスクといった大容量記憶媒体から構成される。地図データベースは、地図表示で必要とする地図メッシュデータ,案内情報,検索情報等を格納している。また、通信装置145や放送受信装置170を介して、車両外部から地図メッシュデータ、案内情報、検索情報や、車両制御で必要とする道路勾配、道路の曲率半径、目標地点までの距離などを記録し、または随時更新して格納している。
音声入出力装置130は、経路誘導などにおいて演算処理部100が生成したユーザへのメッセージ(例えば、誘導案内音声)を音声信号に変換する。また、音声入出力装置130は、ユーザが発した声を音声認識し、その認識結果を演算処理部130に転送する。なお、音声入出力装置130は、音声信号をデジタル信号に変換する機能のみ搭載し、音声認識は演算処理部100で実行してもよいものである。
入力装置135は、ユーザからの指示を受け付けるユニットであり、スクロールキーや縮尺変更キーなどのハードスイッチ,ジョイスティック,及びディスプレイ上に設置されたタッチパネル,ステアリングに取り付けられたセット,リジューム,キャンセル,車間距離設定スイッチなどで構成する。また、赤外線で通信するリモコンであってもよいものである。
LAN装置140は、車両内に設置された様々な機器と双方向通信するための装置である。LANは、その用途毎に異なるLANに接続するのが一般的であり、情報系,制御系,電装系,診断系に分類できる。また各々の用途で要求される伝送スピードや品質が異なるため、複数の方式のLANを搭載してもよいものである。
車載ナビゲーション手段で位置を検出するために使用するセンサは、車輪の円周と計測される車輪の回転数の積から距離を測定し、さらに対となる車輪の回転数の差から移動体が曲がった角度を計測する車輪速センサ150や、地球が保持している磁場を検知し移動体が向いている方角を検出する方位センサ155や、光ファイバジャイロや振動ジャイロといった移動体が回転した角度を検出するジャイロ160や、GPS衛星からの信号を受信し移動体とGPS衛星間の距離と距離の変化率を3個以上の衛星に対して測定することで移動体の現在位置,移動速度及び移動方位を測定するGPS受信装置165などから構成する。なお、位置検出には全てのセンサが必須ではなく、各々のセンサ単独ないし組み合わせであってもよいものである。
次に、図3を用いて、本実施形態による車両の制御装置に用いる車両速度コントローラSCの演算処理部100及び入出力制御部110のハードウェア構成について説明する。
図3は、本発明の一実施形態による車両の制御装置に用いる車両速度コントローラSCの演算処理部100及び入出力制御部110のハードウェア構成図である。
入出力制御部110は、演算処理部100と周辺デバイスを接続するユニットであり、周辺デバイスのインタフェースに応じたI/Oを備えている。I/Oには、A/D変換器111,SCI(Serial Communication Interface)112,PIO(Parallel Input Output)113,カウンター114,描画コントローラ115などがある。A/D変換器111は、入力されたアナログ信号をデジタル信号に変換する。SCI112は、所定の通信速度で時系列的に通信するシリアル信号をパラレル信号に、パラレル信号をシリアル信号に変換する。PIO113は、パラレル信号を所定のタイミングでサンプリングする。カウンター114は、パルス信号を積分することで所定時間単位に入力されたパルス数をカウントし手いる。描画コントローラ115は、描画データを画素情報に高速に変換し、所定のビットレートでディスプレイに表示信号を出力する。
入出力制御部110は、プロセッサバスPBを介して演算処理部100に接続されている。また、周辺デバイスとの入出力動作完了などを通知するため、割込み信号線ISがプロセッサ112に対して出力される。図3では説明のため割込み信号線ISとプロセッサバスPBが信号線であるように記載しているが、実際には、割込み信号線ISはプロセッサバスPBの一部である。
演算処理部100は、数値演算及び各デバイスを制御するといった様々な処理を実行するプロセッサ102と、地図データ,検索データ,演算データといったデータ類及び処理プログラムを格納するメモリ104と、高速にメモリとメモリ間及びメモリと各デバイス間のデータ転送を実行するDMA(Direct Memory Access)106といったデバイスによって構成されている。本実施形態の特徴である共有オブジェクトは、メモリ104に格納される。
次に、図4を用いて、本実施形態による車両の制御装置に用いる車両速度コントローラSCのハードウェア構成とソフトウェア構成の関係について説明する。
図4は、本発明の一実施形態による車両の制御装置に用いる車両速度コントローラSCのハードウェア構成とソフトウェア構成を示すブロック図である。
プロセッサ102は、複数個のオペレーティングシステムを動作させるためのマイクロプロセッサである。メモリ104は、オペレーティングシステムプログラムOS1,OS2と、各オペレーティングシステム上で動作するタスクプログラムTA,TB,TC,TD,TE,TFと、OS間制御機能プログラムCONTとを保持している。
オペレーティングシステムプログラムOS1,OS2は、リスケジューラプログラムOS1−R,OS2−Rと、各オペレーティングシステムのための入出力ドライバプログラムOS1−D,OS2−Dと、割込みハンドラプログラムOS1−I,OS2−Iとを保持している。
OS間制御機能プログラムCONTは、共有オブジェクトCOと、OSコンテクスト切替OS−CHとを保持している。共有オブジェクトCOは、OS間共有メモリCMと、OS間通信機能CoFと、OS間セマフォ機能CeFとを保持している。なお、これらのプログラムは、プロセッサ102によって読み出されて実行される。
プロセッサ102は、割込み信号線ISによって通知される外部割込みなどからの内部割込みをマスクできる機能を備えている。割込みマスクとは、プログラムが割込みマスクを解除するまで、特定の割込みが入ることを遅延させる機能である。一般に、割込みマスク機能には、次の3種類が存在する。
(1)全割込みマスク:全ての割込みをマスクする。
(2)個別割込みマスク:個々の割込みをそれぞれマスクできるようにする。
(3)割込みレベルマスク:各割込みにレベルを設定し、指定レベル以下の割込みをマスクする。
プロセッサ102の種類によって、上記(1)(2)の組合せ、または(1)(3)の組合せのいずれかを装備することが多いものである。後者の組合せを装備するプロセッサを採用する場合、対応する入出力装置の重要性や最小応答時間に応じ割込みレベルを割り当てることになる。
本実施形態による車両速度コントローラSCは、2つのオペレーティングシステムOS1,OS2を並列に動作させる。オペレーティングシステムOS1,OS2は、各自に割り当てられたメモリ、及びプロセッサ資源を用い、タスクTA,…,TFを実行する。なお、図中では、オペレーティングシステム数が2個、全タスク数が6個の例を示しているが、これらの数値よりも多い、または、少ないオペレーティングシステム,タスクを実装することも可能である。本実施形態では、オペレーティングシステム上のタスク数の動的な変更は想定しないが、各オペレーティングシステムが動的にタスク生成・削除を行うことは可能である。また、オペレーティングシステムOS1,OS2の組み合わせはがいかなる種類であってもよく、例えば,一方を短起動周期のリアルタイムOS(例:起動周期10[ms])、他方を長起動周期のリアルタイムOS(例:起動周期100[ms])とする。また、説明の便宜上、第2のオペレーティングシステムOS2の優先順位は、第1のオペレーティングシステムOS2より優先順位が高いと仮定する。この仮定では、第2のオペレーティングシステムOS2のいずれかのタスクが実行状態の場合は第2のオペレーティングシステムOS2がプロセッサ資源を使用し、第2のオペレーティングシステムOS2のすべてのタスクがアイドル状態またはウェイト状態の場合は第1のオペレーティングシステムOS1にコンテクストが切り替えられ、プロセッサ資源が使用する。
オペレーティングシステムOS1,OS2の入出力ドライバOS1−D、OS2−Dは、入出力装置との間でデータ入出力を処理する。入出力ドライバOS1−D,OS2−Dは、各タスクから入出力装置を制御するためのインタフェースを提供し、入出力装置を読み書きすることでデータ入出力したり、入出力装置を制御するといった機能を提供する。
割込みハンドラOS1−I,OS2−Iは、入出力装置からの割込み要求を受ける。割込みハンドラOS1−I,OS2−Iは、割込みの種別毎に呼び出され、ユーザが定義した割込み処理プログラムを実行する。
リスケジューラ208,209は、タスクの生成・削除・停止・再開や、外部割込み・内部割込みに伴ってタスク切替を行わなければならない場合に起動される。リスケジューラは直前に実行していたタスクの実行環境(プログラムカウンタ,ステータスレジスタ,汎用レジスタなど)をタスク管理テーブルに格納し、新たに実行すべきタスクを決定し、そのタスクの実行環境をタスク管理テーブルから取り出し各レジスタに設定することで、選択したタスクを実行する。
OS間制御機能CONTは、第1のオペレーティングシステムOS1及び第2のオペレーティングシステムOS2を一つのプロセッサ102上で連携しながら動作させるためのものである。OS間制御機能CONTは、共有オブジェクトCOと、OSコンテクスト切替OSCHとを備えている。共有オブジェクトCOは、複数のオペレーティングシステム上で動作する複数のタスクから、全てのタスクが共有すべき情報の排他管理や同期処理を実行する機能である。共有オブジェクトCOは、OS間共有メモリCMと、OS間通信機能CoFと、OS間セマフォ機能CeFとを備えている。OS間共有メモリCMは、第1のオペレーティングシステムOS1と第2のオペレーティングシステムOS2間の両者からアクセス可能なメモリである。OS間通信機能CoFは、第1のオペレーティングシステムOS1と第2のオペレーティングシステムOS2間でメッセージ転送を行うものである。OS間セマフォ機能CeFは、第1のオペレーティングシステムOS1と第2のオペレーティングシステムOS2間で、排他制御,及び同期を実現するものである。また、OSコンテクスト切替218は、第1のオペレーティングシステムOS1と第2のオペレーティングシステムOS2の実行環境を切り替えるものである。
車両速度コントローラSCにおいて、共有オブジェクトCOが管理する情報は、例えば,自車両の現在位置や、目的地、経由地といったノード単位で管理すべき位置情報や、渋滞情報や所定地点までの経路情報といったリンク単位で管理すべき位置情報や、位置情報とそれに付加された静的情報・動的情報や、自車両の周囲の情報である車間距離や、相対速度や、自車速度等がある。静的情報とは、施設の名称やサービス内容といった時間によって変化しない情報である。動的情報とは、営業時間や駐車場の満空情報といった時間と共に変化する情報である。なお、共有オブジェクトに登録するする情報はこれらに限ったものではなく、様々な情報を登録・参照することが可能である。
ところで、複数のオペレーティングシステムからOS間共有メモリを参照するとき、次のような問題が発生する。第1に、例えば,第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報登録をしている最中にOSコンテクスト切替が発生し、第2のオペレーティングシステムOS2上で実行されるアプリケーションから同一情報を参照しようとするとする場合、情報の登録が中途半端であると誤った情報を参照する可能性がある。
第2に、第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報登録をしても、第2のオペレーティングシステムOS2上で実行中のアプリケーションが情報更新を認識することができないことになる。第3に、各々のアプリケーションに上記機能を個別に実装すると、新たな情報を複数のオペレーティングシステム間で共有しようとしたとき、プログラムの修正が発生し、開発工数や期間が増加することになる。
そこで、本実施形態では、上述の問題を解決するため、アプリケーションから複数のオペレーティングシステムで共有すべき情報を管理する共有オブジェクトCOを分離・独立させ、複数のオペレーティングシステムから同時に共有オブジェクトCOへの登録・参照が発生しても情報を排他的にアクセスする機能や、共有オブジェクトに登録や参照といった作業をしたとき、他のアプリケーションに情報登録や更新がされた旨のメッセージを通知する機能を備えるようにしている。これら機能は、共有オブジェクトCOからOS間共有メモリCM,OS間通信機能CoF,OS間セマフォ機能CeFを組み合わせて呼び出すことにより実現する。
共有オブジェクトCOにアクセスするためのインタフェースとして、それぞれのオペレーティングシステムのアプリケーションに対して、共有オブジェクトの作成,共有オブジェクトへの登録,共有オブジェクトの参照,共有オブジェクトの削除といったAPI(Application Programing Interface)を用いている。また、オブジェクト毎のアクセスを実現するため、共有すべきオブジェクト毎に異なるAPIを設けるか、または、APIに対する引数でオブジェクトを判別するようにしている。これら共通のAPIを用い、各アプリケーションより共有オブジェクトにアクセスする。
共有オブジェクトCOのOS間共有メモリCMは、オペレーティングシステム間で高速なデータ交換を実現することを目的とし、第1のオペレーティングシステムOS1と第2のオペレーティングシステムOS2の両者から読み書きが可能なものである。OS間通信機能CoFは、各オペレーティングシステムに対応するメッセージキューを準備し、各オペレーティングシステム間でメッセージを受け渡す。OS間セマフォ機能CeFは、バイナリセマフォで、オペレーティングシステム間での排他制御を実現するために使用する。OSコンテクスト切替218は、割込み要求やOS間制御機能の呼び出しによりオペレーティングシステムの切替が必要と判断されたときコンテクストを切り替える。
次に、図5を用いて、本実施形態による車両の制御装置に用いるプロセッサ102の内部構成について説明する。
図5は、本発明の一実施形態による車両の制御装置に用いるプロセッサ102の内部構成を示すブロック図である。
プロセッサ102は、キャッシュメモリ102Aと、CPU102Bと、汎用レジスタ102Cと、プログラムカウンタ102Dと、ステータスレジスタ102Eと、割込みコントローラ102Fと、タイマ装置102Gとを備えている。キャッシュメモリ102A,CPU102B,汎用レジスタ102C,プログラムカウンタ102D,ステータスレジスタ102Eは、互いに、データ転送を行うデータバスDaB及びアドレス指定を行うアドレスバスAdBによって接続されている。
キャッシュメモリ102Aは、メモリ104上のデータまたは命令を一時的に格納するバッファ記憶装置である。CPU102Bは演算回路であり、メモリ104若しくはキャッシュメモリ102A上に存在する命令を順次読み出して実行する。命令実行に際して、演算結果を一時的に保持するための汎用レジスタ102Cと、実行命令アドレスを保持するプログラムカウンタ102Dと、実行状態を保持するステータスレジスタ102Eが用いられる。
入出力制御部110からの割込み信号線ISと、タイマ装置102Gは、割込みコントローラ102Fに接続される。割込みコントローラ102Fは、CPU102Bに対して割込み状態信号ISSを生成する。割込み状態信号ISSは、CPU102Bに対して現在如何なる種類の割込みが発生しているかを示す信号線である。通常、ステータスレジスタ102Eは現在の割込みマスクに関する情報を有しており、割込み状態信号ISSで指定される割込みを受け付けるか否かを決定する。割込みを受け付ける場合、割込みコントローラ102Fは、プログラムカウンタ102D、ステータスレジスタ102Eなどの値を書き換え、対応する割込み処理プログラムを実行させる。
次に、図6を用いて、共有オブジェクトの作成について説明し、図7を用いて、共有オブジェクトへの登録について説明し、図8を用いて、共有オブジェクトの参照について説明する。
最初に、図6を用いて、共有オブジェクトの作成処理の内容について説明する。
図6は、本発明の一実施形態による車両の制御装置に用いる共有オブジェクトの作成処理の内容を示すフローチャートである。
ステップs100において、第2オペレーティングシステムOS2は、指定された共有オブジェクトの属性や、必要なメモリ量に基づいて、共有オブジェクトCOが使用するOS間共有メモリCMを取得する。OS間共有メモリCMは、共有メモリとして割り当てられたメモリ空間より、未使用のメモリ空間を探し出し、そのメモリ区間を該共有オブジェクトCOに割り当てる。
ステップs110において、第2オペレーティングシステムOS2は、OS間共有メモリCMが取得できたか否かを判断し、取得できた場合にはステップs120に進み、取得できなかった場合にはステップs140に進む。例えば、空きメモリ空間が不足し、OS間共有メモリが取得できないといったエラーが発生した場合はエラー処理s140に処理を遷移する。
OS間共有メモリCMの取得が成功すると、ステップs120において、第2オペレーティングシステムOS2は、共有オブジェクトCMを排他的に管理するためのOS間セマフォCeFを作成する。ここで使用するOS間セマフォCeFは、バイナリセマフォであり、複数のオペレーティングシステム上の一つのタスクのみセマフォを取得できる。
次に、ステップs130において、第2オペレーティングシステムOS2は、は、OS間セマフォCeFがセマフォを作成できたか否かを判断する。セマフォが作成できた場合はステップs150に進み、失敗した場合はエラー処理s140に遷移する。
ステップs110の判断でOS間共有メモリが取得できなった場合や、ステップs130の判断でOS間セマフォCeFが作成できなった場合には、ステップs140において、第2オペレーティングシステムOS2は、エラー処理を実行する。エラー処理の内容としては、取得した資源を解放する。ここで解放する資源とは、OS間共有メモリやOS間セマフォである。これら資源を解放することで、OS間共有メモリやOS間セマフォで使用するメモリ資源がリークするこを防止する。
ステップs130の判断でOS間セマフォCeFが作成できた場合には、ステップs150において、第2オペレーティングシステムOS2は、作成した共有オブジェクトCOに情報を登録ないし参照したとき、OS間メッセージ通信でメッセージを送信するか判定する。ここでの判定処理は、共有オブジェクト作成時の入力パラメータより判定し、メッセージ通信先が入力されている場合は通信要求有りと判断する。通信要求有りと判定された場合はステップ1007に進み、無しと判定された場合は共有オブジェクトの作成処理を終了する。
通信要求有りと判定されると、ステップs160において、第2オペレーティングシステムOS2は、共有オブジェクトCOに情報を登録ないし参照したとき、OS間メッセージ通信でメッセージ送信する相手先のタスクを登録する。ここで登録するタスクは、一つであってもよいし、複数であってもよいものである。
なお、上述の説明では、共有オブジェクト作成時に、共有オブジェクトに情報を登録ないし参照したとき、OS間メッセージ通信でメッセージ送信する相手先のタスクを登録するものとして説明したが、さらに共有オブジェクトに情報を登録ないし参照するアプリケーションから、メッセージを通知するアプリケーションを設定する構成でもよいものである。これにより、共有オブジェクト作成後も自由にメッセージ通知先を設定できるため、既存のアプリケーションの修正無しに位置情報を登録・参照するアプリケーションを新たに追加することができるようになる。
なお、上述の説明では、共有オブジェクトの作成を、第2オペレーティングシステムOS2が行うものとしているが、第1オペレーティングシステムOS1が行ってもよいものである。
また、上述の説明は、共有オブジェクトCOの作成処理についてであるが、共有オブジェクトの削除処理では、上述したエラー処理と同様に、共有オブジェクトが使用していたOS間共有メモリ及びOS間セマフォを解放する処理を実行する。
次に、図7を用いて、共有オブジェクトへの登録処理について説明する。
図7は、本発明の一実施形態による車両の制御装置に用いる共有オブジェクトの登録処理の内容を示すフローチャートである。
ステップs200において、登録処理を実行するオペレーティングシステム(例えば、第1オペレーティングシステム)は、登録するオブジェクト種別に応じ、対応するOS間セマフォCeFを取得する。セマフォを取得する方法には、セマフォが取得できないときは直ちにエラーリターンする方法、所定時間取得できないときはエラーリターンする方法、取得できるまで永遠に待つ方法などがある。ここでは、所定時間取得できないときはエラーリターンする方法を採用するようにしている。エラーリターンした場合は、共有オブジェクトへの登録処理を終了する。
次に、ステップs210において、登録処理を実行するオペレーティングシステムは、登録するオブジェクト種別に応じて、OS間共有メモリCMに与えられた情報を登録する。
次に、ステップs220において、登録処理を実行するオペレーティングシステムは、現在登録処理中の共有オブジェクトにおいて、情報登録されたときにメッセージ通信すべきタスクが登録されているかを判断する。登録されていない場合はステップs240に遷移し、登録されている場合はステップs230に進む。
メッセージ通信すべきタスクが登録されている場合には、ステップs230において、登録処理を実行するオペレーティングシステムは、登録されている1ないし複数のタスクに共有オブジェクトへの登録が実行されたことをメッセージ通信で通知する。ここで、登録したタスクと通知するタスクが同一オペレーティングシステム上で動作している場合は、そのオペレーティングシステムに備えられたメッセージ通信を、異なるオペレーティングシステム上で動作している場合は、OS間メッセージ通信を用いる。
次に、ステップs240において、登録処理を実行するオペレーティングシステムは、ステップs200で取得したOS間セマフォを解放し、共有オブジェクトへの登録処理を終了する。
以上の処理において、ステップs210〜s230の処理が実行中は、OS間セマフォ機能CeFは、他のOSからのセマフォ取得を禁止するようにしている。従って、例えば,第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報登録をしている最中にOSコンテクスト切替が発生し、第2のオペレーティングシステムOS2上で実行されるアプリケーションから同一情報を参照しようとするとする場合、情報の登録が中途半端であると誤った情報を参照するような事態を回避することができる。
また、第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報登録すると、ステップs230の処理により、他のタスクに登録メッセージを送信するようにしているので、第2のオペレーティングシステムOS2上で実行中のアプリケーションが情報更新を認識することが可能となる。
さらに、共有オブジェクトは、各々のアプリケーションが共有しているので、新たな情報を複数のオペレーティングシステム間で共有しようとするときにも、プログラムの修正が不要となり、開発工数や期間を短縮することができる。
次に、図8を用いて、共有オブジェクトの参照処理について説明する。
図8は、本発明の一実施形態による車両の制御装置に用いる共有オブジェクトの参照処理の内容を示すフローチャートである。
ステップs300において、参照処理を実行するオペレーティングシステム(例えば、第1オペレーティングシステム)は、参照するオブジェクト種別に応じ、対応するOS間セマフォCeFを取得する。セマフォを取得する方法には、セマフォが取得できないときは直ちにエラーリターンする方法、所定時間取得できないときはエラーリターンする方法、取得できるまで永遠に待つ方法などがある。ここでは、所定時間取得できないときはエラーリターンする方法を採用するようにしている。エラーリターンした場合は、共有オブジェクトへの参照処理を終了する。
次に、ステップs310において、参照処理を実行するオペレーティングシステムは、参照するオブジェクト種別に応じて、OS間共有メモリCMに与えられた情報を参照する。
次に、ステップs320において、参照処理を実行するオペレーティングシステムは、現在参照処理中の共有オブジェクトにおいて、情報参照されたときにメッセージ通信すべきタスクが登録されているかを判断する。登録されていない場合はステップs340に遷移し、登録されている場合はステップs330に進む。
メッセージ通信すべきタスクが登録されている場合には、ステップs230において、参照処理を実行するオペレーティングシステムは、登録されている1ないし複数のタスクに共有オブジェクトへの参照が実行されたことをメッセージ通信で通知する。ここで、参照したタスクと通知するタスクが同一オペレーティングシステム上で動作している場合は、そのオペレーティングシステムに備えられたメッセージ通信を、異なるオペレーティングシステム上で動作している場合は、OS間メッセージ通信を用いる。
次に、ステップs340において、参照処理を実行するオペレーティングシステムは、ステップs300で取得したOS間セマフォを解放し、共有オブジェクトへの参照処理を終了する。
以上の処理において、ステップs310〜s330の処理が実行中は、OS間セマフォ機能CeFは、他のOSからのセマフォ取得を禁止するようにしている。従って、例えば,第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報を参照をしている最中にOSコンテクスト切替が発生し、第2のオペレーティングシステムOS2上で実行されるアプリケーションから同一情報を登録しようとするとすることにより、誤った情報を参照するような事態を回避することができる。
また、第1のオペレーティングシステムOS1上で実行されるアプリケーションから情報を参照すると、ステップs330の処理により、他のタスクに登録メッセージを送信するようにしているので、第2のオペレーティングシステムOS2上で実行中のアプリケーションが情報の参照を認識することが可能となる。
次に、図9〜図11を用いて、本実施形態による車両の制御装置の具体例について説明する。
最初に、図9を用いて、本実施形態による車両の制御装置に、車両速度制御アプリケーションとナビアプリケーションを実装した場合の本実施形態による車両速度コントローラSCのハードウェア構成とソフトウェア構成の関係について説明する。
図9は、本発明の一実施形態による車両の制御装置に用いる車両速度コントローラSCのハードウェア構成とソフトウェア構成を示すブロック図である。なお、図4と同一符号は、同一部分を示している。
本実施形態では、第1のオペレーティングシステムOS1のアプリケーションとして、車両速度制御アプリケーションSCAを実装している。また、第2のオペレーティングシステムOS2のアプリケーションとして、ナビアプリケーションNAを実装している。第1のオペレーティングシステムOS1は、走行制御を高速・高信頼に行うための単純な構成のリアルタイムオペレーティングシステムである。第2のオペレーティングシステムOS2は、カーナビゲーションといった低速だが複雑なリアルタイム処理を要求するアプリケーションを実行するためリアルタイムオペレーティングシステムである。
ナビ基本機能SCA−Pは、ナビゲーション装置で必要とする基本機能を備えたライブラリである。ナビ基本機能SCA−Pには、地図表示機能,検索機能,自車位置測定機能,推奨経路探索機能,推奨経路誘導機能などを備えている。ナビアプリケーションNAは、位置情報やユーザ操作情報を解析し、ナビ基本機能SCA−Pを呼び出すことで、ディスプレイや音声といった出力インタフェースを介しユーザにナビ情報を提供する。道路情報マネージャNA−Rは、道路情報を共有オブジェクトCOに登録すると共に、共有オブジェクトCOから道路情報を参照する。ここで、共有オブジェクトCOに登録する情報は、車両位置の道路勾配や道路の曲率半径などの道路情報や、施設の位置情報やそれに付帯する静的/動的な情報や、道路渋滞情報や、推奨経路情報などの付帯情報である。ここで、道路渋滞情報や推奨経路情報の表現方法として、位置情報点列の羅列で表現する方法や、線状のリンクで表現する方法など様々な方法がある。
道路情報ハンドラSCA−Rは、道路情報マネージャNA−Rが登録した道路情報を参照すると共に、共有オブジェクトCOに必要な情報を登録する。速度制御基本機能SCA−Pは、車間距離,相対速度,自車速度から目標速度を設定するが、その際、道路情報ハンドラSCA−Pが共有オブジェクトCOから参照した道路情報に基づいても、目標速度を設定する。そして、速度制御基本機能SCA−Pは、目標速度に基づいて、目標エンジントルクや目標制動トルクを計算する。
次に、図10及び図11を用いて、本実施形態による車両の制御装置に実装した車両速度制御アプリケーションの処理内容について説明する。
図10及び図11は、本発明の一実施形態による車両の制御装置に実装した車両速度制御アプリケーションの処理内容を示すフローチャートである。なお、図11のステップs435は、図10のステップs430から続く処理である。
ステップs400において、車両速度制御アプリケーションSCAの速度制御基本機能SCA−Sは、図2に示した車輪速センサ150の出力により、自車速度V0を取得する。
次に、ステップs405において、速度制御基本機能SCA−Sは、図1に示したレーダセンサRSの出力により、相対速度Vrを取得する。
次に、ステップs410において、速度制御基本機能SCA−Sは、目標車間距離Drを設定する。先行車速度は、自車速度V0と相対速度Vrの和から測定が可能である。先行車速度がゼロ以下のとき、目標車間距離Drは停止車間距離に設定する。先行車速度がゼロ以上のときは自車速度V0に応じて走行目標車間距離Drを設定する。
次に、ステップs415において、速度制御基本機能SCA−Sは、測定車間距離Dmを取得する。
次に、ステップs420において、速度制御基本機能SCA−Sは、直線路の目標速度Vtmpを設定する。目標速度Vtmpの設定は、以下の式(1)により計算される。
Vtmp=V0+ki・∫(Dr−Dm)dt+kp・∫(Dr−Dm)dt+kd・Vr …(1)
ここで、ki,kp,kdは制御定数であり、所定の値に設定されている。
次に、ステップs425において、道路情報ハンドラSCA−Rは、共有オブジェクトCObのOS間共有メモリCMから道路情報を取得する。そして、速度制御基本機能SCA−Sは、取得した道路情報から、これから走行する道路の曲率半径rを計算する。道路情報は、道路の各ポイント(ノード)の座標(緯度経度の座標)であるため、これらのノードを連続的に結ぶことによって、道路の曲率を求めることができる。また、道路情報には、道路の各ポイント(ノード)の座標の他に、標高も含まれているため、これらのノードを連続的に結ぶことによって、道路の勾配を求めることもできる。
次に、ステップs430において、速度制御基本機能SCA−Sは、曲率半径rから決定される補正速度Vcoastを用いて、以下の式(2)から目標速度Vcmdを決定する。補正速度Vcoastは、道路の曲率半径に応じて減速するための速度の補正分である。
Vcmd=Vtmp−Vcoast(r) …(2)
次に、図11のステップs435において、速度制御基本機能SCA−Sは、目標速度Vcmdと、自車速度V0から、目標トルクTcmdを、以下の式(3)を用いて算出する。
Tcmd=Kj・∫(Vcmd−V0)dt+KQ・V0 …(3)
ここで、KjとKqはそれぞれ制御定数であり、所定の値に設定されている。
次に、ステップs440において、速度制御基本機能SCA−Sは、所定のトルクTthと目標トルクTcmdを比較する。目標トルクが大きい場合にはステップs455以降の処理に進み、目標トルクが小さい場合はステップs445以降の処理に進む。
目標トルクが小さい場合は、ブレーキを掛ける必要がある場合であり、ステップs445において、目標エンジントルクを図1のエンジンコントローラECに送信する。その送信内容は、エンジンの回転数をアイドル回転数に設定するような目標エンジントルクである。エンジンコントローラECは、この目標エンジントルクに応じて、エンジンを制御する。
次に、ステップs440において、速度制御基本機能SCA−Sは、図1のブレーキコントローラBCに目標トルクを送信する。その送信内容は、所定のトルクTthと目標トルクTcmdが一致するようにするためのブレーキの掛かり具合を示すトルクである。ブレーキコントローラBCは、この目標トルクに応じて、ブレーキの掛かり具合を制御する。
一方、目標トルクが大きい場合には、ステップs455において、速度制御基本機能SCA−Sは、エンジン回転数と車輪回転数から、現在の変速比nを計算する。
次に、ステップs460において、速度制御基本機能SCA−Sは、算出した変速比nが、車両に搭載している変速機の所定の変速比と同じか否かで、変速中を判定する。変速中の場合にはステップs485に進み、変速中でない場合にはステップs465に進む。
変速中でない場合には、ステップs465において、速度制御基本機能SCA−Sは、車両に搭載している変速機のギア比を用い、それぞれのギアを使用した場合の目標エンジン回転数を計算する。
次に、ステップs470において、速度制御基本機能SCA−Sは、それぞれのギアを使用した場合の目標エンジントルクを計算する。
次に、ステップs475において、速度制御基本機能SCA−Sは、目標エンジン回転数と、目標エンジントルクと、エンジン熱効率のマップから、それぞれのギア比を使用した場合のエンジン熱効率を検索する。その中で、エンジン熱効率が最良のギア比と、目標エンジン回転数,目標エンジントルクを選択する。例えば、図11のステップs475中に図示したマップの例では、1速のギア比のときエンジン熱効率は20%、2速のギア比のときエンジン熱効率は30%であるので、エンジン熱効率に応じたギア比を選択する。
次に、ステップs480において、速度制御基本機能SCA−Sは、変速機コントローラTCにギア比を指令値として送信する。
次に、ステップs485において、速度制御基本機能SCA−Sは、エンジンコントローラECに目標エンジントルクを指令値として送信する。エンジンコントローラECは、受信した目標エンジントルクに基づいて、エンジンを制御する。
なお、ステップs460で変速中と判定した場合、エンジンコントローラは変速機コントローラの指令に基づいて動作するので、車間距離コントローラからの指令は送信しないものである。そして、ステップs485が実行される。
次に、ステップs490において、速度制御基本機能SCA−Sは、ブレーキコントローラに目標トルク(この例では、自動ブレーキ解除)の指令を送信する。
以上の説明では、道路情報の中の曲率半径の情報に基づいて、走行速度を制御するようにしているが、他の道路情報に基づいて、走行速度を制御するようにしてもよいものである。すなわち、前述したように、道路情報マネージャNA−Rは、道路情報を共有オブジェクトCOに登録すると共に、共有オブジェクトCOから道路情報を参照する。ここで、共有オブジェクトCOに登録する情報は、車両位置の道路勾配や道路の曲率半径などの道路情報や、施設の位置情報やそれに付帯する静的/動的な情報や、道路渋滞情報や、推奨経路情報などの付帯情報である。車両速度制御アプリケーションSCAは、共有オブジェクトCOに登録された道路情報の中の、たとえば、勾配を参照して、自車の走行速度を制御することもできる。
さらに、ナビアプリケーションNAは、放送受信装置170やGPS受信装置160のような放送または通信によって受信した信号を解析し、道路情報を抽出すると共に、道路情報に付帯する情報を抽出して、共有オブジェクトCOに付帯情報を登録する。車両速度制御アプリケーションSCAは、共有オブジェクトCOに登録された道路情報及び付帯情報に基づいて、自車の走行速度を制御することができる。また、共有オブジェクトCOにナビアプリケーションNAが登録した自車の周囲の走行環境情報を参照して、自車の走行速度を制御することもできる。
また、以上の説明では、ACC(車速制御)とカーナビゲーションとの組合せについて説明したが、本発明は、この2つ以外ににも適用可能である。例えば、1)エンジン制御(燃料制御,スロットル制御など、点火タイミング制御,EGR制御など)、2)レーダ制御(周波数制御,FFT,トラッキング処理など)、3)ACC制御(車速制御)、4)ブレーキ制御(ブレーキ液圧力制御)、5)AT制御(ソレノイドON/OFF,ライン圧力,変速比など)、6)カーナビゲーション、7)ステアリング制御(電流,油圧,ステアリングトルクなど)、8)カメラ制御(焦点距離,絞り,光量,波長など)の少なくとも2つ以上の組合せに対しても適用可能なものである。
以上説明したように、本実施形態では、複数個の装置の持つ機能を1つの装置で実現し、情報を共有化するための通信タスクを設定することなく、道路情報を基にした車両速度の設定が可能となり、運転者に対してより高度な運転支援を行う車両の走行制御装置を提供することができる。
また、複数個のオペレーティングシステムが1つのプロセッサ上で動作する位置情報表示装置において、共有オブジェクトを用いることで、各々のオペレーティングシステムに実装されたアプリケーションから非同期で道路情報を登録,参照することができるので、異なるオペレーティングシステム間で道路情報を用い連携動作するアプリケーションを容易に開発することが可能になる。共有オブジェクトを導入することにより、これら機能が実現できるため、使い勝手の良いユーザインタフェースを提供できる。
さらに、一方のオペレーティングシステムのアプリケーションから道路情報を共有オブジェクトに登録・変更している最中に、他方のオペレーティングシステムのアプリケーションから道路情報を共有オブジェクトに登録ないし参照を禁止するように動作するため、誤った位置情報を参照することを回避して、システムの信頼性を向上することができる。
そして、一方のオペレーティングシステムのアプリケーションから道路情報を共有オブジェクトに登録・更新したとき、複数のオペレーティングシステムで動作しているアプリケーションに対して道路情報の登録,参照を通知するメッセージを送信するように動作するため、メッセージに同期して直ちに道路情報を参照できるというリアルタイム性が改善されると共に、最小限のプロセッサ負荷で上記処理を実行できる。