JP7421634B2 - 制御装置及び方法 - Google Patents

制御装置及び方法 Download PDF

Info

Publication number
JP7421634B2
JP7421634B2 JP2022511568A JP2022511568A JP7421634B2 JP 7421634 B2 JP7421634 B2 JP 7421634B2 JP 2022511568 A JP2022511568 A JP 2022511568A JP 2022511568 A JP2022511568 A JP 2022511568A JP 7421634 B2 JP7421634 B2 JP 7421634B2
Authority
JP
Japan
Prior art keywords
task
prediction
buffer
value
control device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022511568A
Other languages
English (en)
Other versions
JPWO2021199607A1 (ja
Inventor
亮輔 林
一 芹沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Publication of JPWO2021199607A1 publication Critical patent/JPWO2021199607A1/ja
Application granted granted Critical
Publication of JP7421634B2 publication Critical patent/JP7421634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、制御装置及び方法に関する。
制御装置は入力データを処理して、後段の装置にデータを出力する。リアルタイム性を必要とする制御については、データの入力及び出力タイミングに制約が設けられており、その制約を満たすように設計が行われる。周期タスクは、所定の時間(周期タスクの起動タイミングからデッドラインまで)内に処理を行う。デッドラインは、システムが破綻しないよう決定しなければならない。
特許文献1では、タスクと通信の同期技術について記載されている。同文献では、タスクの古い出力データを出力メモリ領域に保持し、後続タスクの入力メモリに転送することで、後続タスクの時刻決定的な動作を保証している。
特許文献2では、車両制御装置のタスクの遅延度を監視する技術について記載している。同文献においては、タスクを構成するサブタスクの遅延度を監視し、遅延度が閾値以上であれば前記タスクに代えてフェールセーフタスクを実行し、タスクがデッドライン内に処理を完了できずシステム全体がシャットダウンすることを防いでいる。
特表2016―523409号公報 特開2016-66139号公報
周期タスクのデッドラインはあらかじめ計算された最悪実行時間に基づいて決定するのが一般的である。しかしながら、システムが大規模化、複雑化するにつれ、最悪実行時間の計算が難しくなってきた。また、処理の高速化の要求から、ごく低確率でしか発生しない最悪実行時間に基づいたデッドラインを採用すること自体が難しくなってきている。そのため、おおよそ十分な処理周期を設定し、万一周期を守れない場合の対応が必要になってきている。
ある周期タスクが所定の時間内に処理を完了しない(オーバーラン)場合、前回値を使うなど、処理の精度を大きく落とさなければならなかった。
本発明は、上記の課題を解決するためになされたものであり、処理精度の低下を抑制することができる制御装置及び方法を提供することを目的とする。
上記目的を達成するために、本発明の一例である制御装置は、バッファと、所定の実行周期で第1タスクを実行し、前記実行周期において前記第1タスクの締め切りタイミングを示す第1タスクデッドラインまでに前記第1タスクが完了した場合、前記第1タスクの出力値を前記バッファに書き込む第1タスク部と、前記第1タスクデッドラインまでに前記第1タスクが完了するか否かに関わらず、前記実行周期において前記第1タスクの出力値が前記バッファに書き込まれる前に、前記第1タスクの前記出力値を予測し、予測値を前記バッファに書き込む予測タスク部と、前記実行周期において前記バッファに書き込まれた最新の値を読み出し、前記バッファから読み出した前記最新の値を入力として第2タスクを実行し、前記第2タスクの出力値を出力する第2タスク部と、を備える。

本発明によれば、処理精度の低下を抑制することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の実施例1に係る車両制御装置の構成の一例を示すブロック図である。 本発明の実施例1に係る車両制御装置の機能要素の構成の一例を示す図である。 本発明の実施例1に係る周期タスクAで行われる処理の一例を示すフローチャートである。 本発明の実施例1に係る予測タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例1に係る周期タスクBで行われる処理の一例を示すフローチャートである。 本発明の実施例1に係るスケジューラで行われる処理の一例を示すフローチャートである。 本発明の実施例1における各処理の動作を時間軸上で模式的に説明する図である。 本発明の実施例2に係るスケジューラで行われる処理の一例を示すフローチャートである。 本発明の実施例2における各処理の動作を時間軸上で模式的に説明する図である。 本発明の実施例3に係る予測タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例3における各処理の動作を時間軸上で模式的に説明する図である。 本発明の実施例4に係る周期タスクAで行われる処理の一例を示すフローチャートである。 本発明の実施例4に係るスケジューラで行われる処理の一例を示すフローチャートである。 本発明の実施例5に係る周期タスクAで行われる処理の一例を示すフローチャートである。 本発明の実施例5に係るスケジューラで行われる処理の一例を示すフローチャートである。 本発明の実施例5における各処理の動作を時間軸上で模式的に説明する図である。 本発明の実施例6に係るエンジン制御ユニットの構成の一例を示すブロック図である。 本発明の実施例6に係るエンジン制御ユニットの機能要素の構成の一例を示す図である。 本発明の実施例6係る点火時期算出タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例6係るタイマセットタスクで行われる処理の一例を示すフローチャートである。 本発明の実施例6係る予測タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例7に係るADユニットの構成の一例を示すブロック図である。 本発明の実施例7に係るADユニットの機能要素の構成の一例を示す図である。 本発明の実施例7係る縦位置推定タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例7係る横位置推定タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例7係る経路算出タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例7係る縦位置予測タスクで行われる処理の一例を示すフローチャートである。 本発明の実施例7係る横位置予測タスクで行われる処理の一例を示すフローチャートである。
以下、実施例について図面を用いて説明する。なお、本発明は以下の実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲で、各部の構成などを適宜追加、変更、削除などして実施することができる。ここでは例として、本発明を車両制御装置に適用した場合の形態を示す。以下の実施例に係る車両制御装置は、例えば、処理のオーバーラン時に精度が低下することの防止を目的とする。
[実施例1]
図1は、実施例1に係る車両制御装置1の構成の一例を示すブロック図である。車両制御装置1は、プロセッサ2と、メモリ3と、不揮発性メモリ4と、バッファ15を含む。
プロセッサ2~バッファ15は、インターコネクト8を介して接続される。
メモリ3には、OS(Operating System)7と、周期タスクA(11)と、予測タスク12と、周期タスクB(13)がロードされてプロセッサ2によって実行される。以下では、便宜上、タスクを各処理の動作主体として説明することもあるが、各処理の実際の動作主体はプロセッサ2である。
周期タスクA(11)と、予測タスク12と、周期タスクB(13)と、スケジューラ14は、OS7上で稼働するソフトウェアである。OS7は、例えば、AUTOSAR(Automotive Open System Architecture)に準拠したOSや、リアルタイムOSを用いることができる。
図2は、実施例1に係る車両制御装置1の機能要素の構成図である。
車両制御装置1では、周期タスクA(11)が処理を行い、出力値をバッファ15に格納する。周期タスクB(13)は、バッファ15から周期タスクA(11)が格納した値を読み込み、処理を行う。予測タスク12は、周期タスクA(11)の出力値を予測し、バッファ15に格納する。スケジューラ14は、周期タスクA(11)、予測タスク12、周期タスクB(13)の起動および終了を行う。
換言すれば、車両制御装置1(制御装置)は、少なくとも、バッファ15、第1タスク部、予測タスク部、第2タスク部を備える。なお、本実施例では、第1タスク部、予測タスク部、第2タスク部は、それぞれメモリ3(図1)にロードされるソフトウェアとプロセッサ2(図1)が協働することにより実現されるが、FPGA(Field-Programmable Gate Array)等のハードウェアで実現してもよい。
ここで、第1タスク部(プロセッサ2)は、所定の実行周期で第1タスク(周期タスクA)を実行し、第1タスク(周期タスクA)の出力値をバッファ15に書き込む。予測タスク部(プロセッサ2)は、実行周期において第1タスク(周期タスクA)の出力値がバッファ15に書き込まれる前に、第1タスク(周期タスクA)の出力値を予測し、予測値をバッファ15に書き込む。第2タスク部(プロセッサ2)は、実行周期でバッファ15から第1タスク(周期タスクA)の出力値または予測値を読み出し、バッファ15から読み出した出力値または予測値を入力として第2タスク(周期タスクB)を実行し、第2タスク(周期タスクB)の出力値を出力する。これらの動作の詳細は図7を用いて後述される。
これにより、実行周期において第1タスク(周期タスクA)の出力値がバッファ15に書き込まれなくても第1タスク(周期タスクA)の予測値を入力として第2タスク(周期タスクB)を完了することができる。その結果、第2タスク(周期タスクB)の出力値(例えば、アクチュエータの制御量)の精度が低下することを抑制することができる。
なお、予測値は、例えば、バッファ15に書き込まれた後、第1タスク(周期タスクA)の出力値で上書きされる。上書きに代えてリングバッファを用いてもよい。
図3は、実施例1に係る周期タスクA(11)で行われる処理の一例を示すフローチャートである。周期タスクA(プロセッサ2)の処理100は、以下のように実行される。
ステップ101では、周期タスクAは入力値を取得する。
ステップ102では、周期タスクAは取得した入力値を用いて、演算処理を行う。
ステップ103では、周期タスクAは演算処理の結果を出力値としてバッファ15に書き込む。
図4は、実施例1に係る予測タスク12で行われる処理の一例を示すフローチャートである。予測タスク(プロセッサ2)の処理200は、以下のように実行される。
ステップ201では、予測タスクは入力値を取得する。
ステップ202では、予測タスクは取得した入力値を用いて、周期タスクA(11)で出力される値を予測する。
ステップ203では、予測タスクは得られた予測値をバッファ15に書き込む。
図5は、実施例1に係る周期タスクB(13)で行われる処理の一例を示すフローチャートである。周期タスクB(プロセッサ2)の処理300は、以下のように実行される。
ステップ301では、周期タスクBは入力値をバッファ15から取得する。
ステップ302では、周期タスクBは取得した入力値を用いて、演算処理を行う。
ステップ303では、周期タスクBは演算処理の結果を出力値として出力する。
図6は、実施例1に係るスケジューラ14で行われる処理の一例を示すフローチャートである。スケジューラ14(プロセッサ2)の処理400は、以下のように実行される。
ステップ401では、スケジューラ14は時刻と、周期タスクA起動時刻16とを比較する。スケジューラ14は、時刻が周期タスクA起動時刻16と一致する場合はステップ402へ進み(ステップ401:Yes)、時刻が周期タスクA起動時刻16と一致しない場合には(ステップ401:No)、ステップ403へ進む。
ステップ402では、時刻が周期タスクA起動時刻であるので、スケジューラ14は周期タスクA(11)を起動させる。
ステップ403では、スケジューラ14は時刻と、周期タスクAデッドラインとを比較し、さらに周期タスクA(11)が実行中であるか判定する。スケジューラ14は、時刻が周期タスクAデッドラインと一致し、かつ周期タスクA(11)が実行中の場合(ステップ403:Yes)、ステップ404へ進み、時刻が周期タスクAデッドラインと一致しない、もしくは周期タスクA(11)が実行中でない場合(ステップ403:No)、ステップ405へ進む。
ステップ404では、スケジューラ14は周期タスクA(11)を終了させる。
ステップ405では、スケジューラ14は時刻と、周期タスクB起動時刻とを比較する。スケジューラ14は、時刻が周期タスクB起動時刻と一致する場合は(ステップ405:Yes)、ステップ406へ進み、時刻が周期タスクB起動時刻と一致しない場合には(ステップ405:No)、ステップ407へ進む。
ステップ406では、時刻が周期タスクB起動時刻であるので、スケジューラ14は周期タスクB(13)を起動させる。
ステップ407では、スケジューラ14は時刻と、予測タスク起動時刻とを比較する。
スケジューラ14は、時刻が予測タスク起動時刻と一致する場合は(ステップ407:Yes)、ステップ408へ進み、時刻が予測タスク起動時刻と一致しない場合には(ステップ407:No)、ステップ401へ進む。
ステップ408では、時刻が予測タスク起動時刻であるので、スケジューラ14は予測タスク12を起動させる。
図7は、実施例1における各処理の動作を時間軸上で模式的に説明する図である。
図中の黒色矢印は、スケジューラ14の命令を表し、白色矢印はバッファ15からの読み込み、もしくはバッファ15への書き込みを表している。
本例は、時刻(t)=26において、周期タスクA(11-2)がオーバーランを起こした場合について説明する。
スケジューラ14は、予測タスク起動時刻20において、予測タスク12を起動させる(ステップ408)。これにより予測タスク12-1が起動する。予測タスク12-1は演算が完了すると、バッファ15へ予測値を書き込む。なお、予測タスク12-1の処理時間は、周期タスクAの処理時間又は周期タスクBの処理時間に対して十分に小さい(後述の12-2も同様)。
スケジューラ14は、周期タスクA起動時刻21において、周期タスクA(11)を起動させる。これにより周期タスクA(11-1)が起動する。周期タスクA(11-1)は演算が完了すると、バッファ15へ出力値を書き込む。
スケジューラ14は、周期タスクB起動時刻23において、周期タスクB(13)を起動させる。これにより周期タスクB(13-1)が起動する。周期タスクB(13-1)は、周期タスクA(11-1)によって書き込まれた値を、バッファ15から読み込み、これを用いて演算を行う。
スケジューラ14は、予測タスク起動時刻24において、予測タスク12を起動させる。これにより予測タスク12-2が起動する。予測タスク12-2は演算が完了すると、バッファ15へ予測値を書き込む。
スケジューラ14は、周期タスクA起動時刻25において、周期タスクA(11)を起動させる。これにより周期タスクA(11-2)が起動する。しかし、本例では周期タスクA(11-2)は、所定の周期タスクAデッドライン26までに演算が完了しなかったとする。スケジューラ14は、周期タスクAデッドライン26において、周期タスクA(11-2)を終了させる。
スケジューラ14は、周期タスクB起動時刻27において、周期タスクB(13)を起動させる。これにより周期タスクB(13-2)が起動する。周期タスクB(13-2)は、予測タスク12-2によって書き込まれた値を、バッファ15から読み込み、これを用いて演算を行う。
換言すれば、第2タスク部(プロセッサ2)は、実行周期において第1タスク(周期タスクA)の締め切りタイミングを示す第1タスクデッドライン(周期タスクAデッドライン)までに第1タスク(周期タスクA)が完了しない場合、第1タスク(周期タスクA)の予測値を入力として第2タスク(周期タスクB)を実行する。これにより、第1タスクデッドライン(周期タスクAデッドライン)までに第1タスク(周期タスクA)が完了しなくても第1タスク(周期タスクA)の予測値を入力として第2タスク(周期タスクB)を完了することができる。
以上、本実施例1によれば、ある処理が所定の出力周期内に演算を完了することができなかった場合、あらかじめ予測した出力値を用いることで、前回値の使用を防ぐことができ、処理の精度が低下することを防ぐことが可能となる。
[実施例2]
図8は、実施例2に係るスケジューラ14で行われる処理の一例を示すフローチャートである。スケジューラ14(プロセッサ2)の処理500は、以下のように実行される。
なお、図6と同様の説明は省略する。
ステップ507では、スケジューラ14は時刻と、予測タスク起動時刻βとを比較する。スケジューラ14は、時刻が予測タスク起動時刻βと一致する場合は(ステップ507:Yes)、ステップ509へ進み、時刻が予測タスク起動時刻βと一致しない場合には(ステップ507:No)、ステップ510へ進む。
ステップ509では、スケジューラ14は周期タスクB(13)が演算を完了しているか判定する。周期タスクB(13)が演算を完了している場合は(ステップ509:Yes)、ステップ408へ進む。周期タスクB(13)が演算を完了していない場合は、ステップ401へ進む。
ステップ408では、時刻が予測タスク起動時刻であるので、スケジューラ14は予測タスク12を起動させる。
ステップ510では、スケジューラ14は時刻と、予測タスク起動時刻αを比較し、さらに予測タスク12が未実行であるか判定する。ここで、β<αである。スケジューラ14は、時刻が予測タスク起動時刻αと一致し、かつ予測タスク12が未実行の場合(ステップ510:Yes)、ステップ511へ進み、時刻が予測タスク起動時刻αと一致しない、もしくは予測タスク12が実行済みの場合(ステップ510:No)、ステップ401へ進む。
ステップ511では、スケジューラ14は予測タスク12を起動する。
図9は、実施例2における各処理の動作を時間軸上で模式的に説明する図である。
本例は、時刻(t)=28において、予測タスク12-3が起動し、時刻(t)=26において、周期タスクA(11-2)がオーバーランを起こした場合について説明する。
なお、図7と同様の説明は省略する。
スケジューラ14は、周期タスクB起動時刻23において、周期タスクB(13)を起動させる。これにより周期タスクB(13-3)が起動する。
スケジューラ14は、予測タスク起動時刻β(28)において、予測タスク12を起動させる。これにより予測タスク12-3が起動する(ステップ408)。
スケジューラ14は、予測タスク起動時刻α(24)において、すでに予測タスク12-3が実行されたため、予測タスク12を起動しない。
スケジューラ14は、周期タスクB起動時刻27において、周期タスクB(13)を起動させる。これにより周期タスクB(13-4)が起動する。周期タスクB(13-4)は予測タスク12-3によって書き込まれた値を、バッファ15から読み込み、これを用いて演算を行う。
以上、本実施例2によれば、実施例1において予測タスク12が占有していたプロセッサの実行時間を、他の任意の処理に割り当てることが可能となる。また、周期タスクBの演算が完了していれば、次周期の予測タスクの起動が実施例1より早くなる。
[実施例3](空き時間の大小で予測アルゴリズムを変更する)
図10は、実施例3に係る予測タスク12で行われる処理の一例を示すフローチャートである。予測タスク12(プロセッサ2)の処理600は、以下のように実行される。なお、図4と同様の説明は省略する。
ステップ602では、予測タスク12が予測タスク起動時刻βで起動したか判定する。
予測タスク12が予測タスク起動時刻βで起動していた場合は(ステップ602:Yes)、ステップ603へ進む。予測タスク12が予測タスク起動時刻βで起動していなかった場合は(ステップ602:No)、ステップ604へ進む。
ステップ603では、予測タスク12は、より高精度な予測アルゴリズムを用いて、取得した入力値をもとに、周期タスクA(11)で出力される値を予測する。なお、高精度な予測アルゴリズムは、例えば、高次の回帰曲線や多数のデータを用いるアルゴリズムである。
ステップ604では、予測タスク12は、より高速な予測アルゴリズムを用いて、取得した入力値をもとに、周期タスクA(11)で出力される値を予測する。なお、高速な予測アルゴリズムは、例えば、テーブル参照により、入力値に対応する予測値を取得するアルゴリズムである。
図11は、実施例3における各処理の動作を時間軸上で模式的に説明する図である。なお、図7、9と同様の説明は省略する。
スケジューラ14は、予測タスク起動時刻β(28)において、予測タスク12を起動させる。これにより予測タスク12-4が起動する。予測タスク12-4は、予測タスク起動時刻βで起動したため、高精度な予測アルゴリズムを用いて、予測を行う(ステップ603)。
換言すれば、予測タスク部(プロセッサ2)は、実行周期において第2タスク(周期タスクB)が完了し、かつ、次の第1タスク(周期タスクA)の出力値の予測を開始するタイミング(予測タスク起動時刻β)から実行周期が終わるタイミングまでの時間を示す空き時間が第1閾値(例えば、第1予測(高精度)に要する時間)を超える場合、速度よりも精度を優先する第1予測を行い、空き時間が第1閾値以下の場合、精度よりも速度を優先する第2予測を行う。これにより、空き時間の長さに応じて、精度を優先する第1予測と、速度を優先する第2予測を切り替えることができる。
以上、実施例3によれば、予測タスク12は他のタスクの処理状況次第で、高精度な予測アルゴリズムを用いて、より精度の良い予測値を出力することが可能となる。また、予測タスク12が高速な予測アルゴリズムを用いる場合には計算負荷が低減するため、車両制御装置が消費する電力を抑制することができる。
[実施例4]
図12は、実施例4に係る周期タスクA(11)で行われる処理の一例を示すフローチャートである。周期タスクA(プロセッサ2)の処理700は、以下のように実行される。なお、図3と同様の説明は省略する。
ステップ703では、周期タスクAは予測タスクスキップフラグが無効か判定する。予測タスクスキップフラグが無効の場合は(ステップ703:Yes)、ステップ704へ進む。予測タスクスキップフラグが無効でない場合は(ステップ703:No)、ステップ103へ進む。
ステップ704では、周期タスクAはバッファ15から予測値を読み込む。
ステップ705では、周期タスクAは、読み込んだ予測値と、演算結果とを用いて、予測精度を求め、予測精度をあらかじめ決められた閾値と比較する。予測精度が閾値以上の場合は、ステップ103へ進む。予測精度が閾値未満の場合は、ステップ706へ進む。
ステップ706では、周期タスクAは予測タスクスキップフラグを有効にする。
換言すれば、第1タスク部(プロセッサ2)は、周期タスクAの出力値(演算結果)と予測値の一致の度合いを示す予測精度が第2閾値より低い場合、予測タスク部(プロセッサ2)の起動をスキップさせる。これにより、予測精度が低い場合に、第1タスク(周期タスクA)の出力値を入力として第2タスク(周期タスクB)を完了することができる。
図13は、実施例4に係るスケジューラ14で行われる処理の一例を示すフローチャートである。スケジューラ14(プロセッサ2)の処理800は、以下のように実行される。なお、図6と同様の説明は省略する。
ステップ807では、スケジューラ14は予測タスクスキップフラグが無効か判定する。予測タスクスキップフラグが無効の場合は(ステップ807:Yes)、ステップ407へ進む。予測タスクスキップフラグが無効でない場合は(ステップ807:No)、ステップ811へ進む。
ステップ811では、スケジューラ14は予測タスクスキップカウンタを減算する。予測タスクスキップカウンタは、あらかじめ決められた値を持つ。
ステップ812では、スケジューラ14は予測タスクスキップカウンタが0か判定する。0の場合は、ステップ813へ進む。0でない場合は、ステップ401へ進む。
ステップ813では、スケジューラ14は予測タスクスキップフラグを無効にし、予測タスクスキップカウンタの値を初期化する。
以上、実施例4によれば、予測の精度があらかじめ決められた閾値に満たない場合に、予測タスク12の実行をスキップすることができる。これにより、予測タスク12が占有していたプロセッサの実行時間を、他の任意の処理に割り当てることが可能となる。また、車両制御装置が消費する電力を抑制することができる。
[実施例5]
図14は、実施例5に係る周期タスクA(11)で行われる処理の一例を示すフローチャートである。周期タスクA(プロセッサ2)の処理900は、以下のように実行される。なお、図3と同様の説明は省略する。
ステップ902では、周期タスクAは演算処理Iを実行する。
ステップ903では、周期タスクAは、時刻が、所定の演算処理Iデッドライン以内であるか判定する。時刻が演算処理Iデッドライン以内(以前)である場合は(ステップ903:Yes)、ステップ904へ進む。時刻が演算処理Iデッドラインを超えている場合は(ステップ903:No)、ステップ905へ進む。
ステップ904では、周期タスクAは演算処理IIを実行する。
ステップ905では、周期タスクAは予測タスク起動イベントを発生させる。
換言すれば、第1タスク(周期タスクA)は、少なくとも第1演算処理(演算処理I)と第2演算処理(演算処理II)を含む。第1タスク部(プロセッサ2)は、第1演算処理(演算処理I)がその締め切りタイミングを示す第1演算処理デッドライン(演算処理Iデッドライン)を超えて完了した場合、第2演算処理(演算処理II)の実行をキャンセルし、予測タスク部(プロセッサ2)を起動させる。これにより、第1演算処理デッドライン(演算処理Iデッドライン)を超えて第1演算処理(演算処理I)が完了した場合、第2演算処理(演算処理II)の実行をキャンセルし、第2演算処理(演算処理II)が使用するリソースを確保する必要がなくなる。
図15は、実施例5に係るスケジューラ14で行われる処理の一例を示すフローチャートである。スケジューラ14(プロセッサ2)の処理1000は、以下のように実行される。なお、図6と同様の説明は省略する。
ステップ1007では、スケジューラ14は予測タスク起動イベントを受信しているか判定する。予測タスク起動イベントを受信している場合は(ステップ1007:Yes)、ステップ408へ進む。予測タスク起動イベントを受信していない場合は(ステップ1007:No)、ステップ401へ進む。
図16は、実施例5における各処理の動作を時間軸上で模式的に説明する図である。なお、図7と同様の説明は省略する。
周期タスクA(11-3)は、時刻30において、演算処理Iを完了する。しかし、これは周期タスクA演算処理Iデッドライン29を超える時刻であるため、予測タスク起動イベントを発生させ、処理を終了する(ステップ905)。
スケジューラ14は、時刻30において、予測タスク起動イベントを受信したため、予測タスク12を起動させる(ステップ408)。これにより予測タスク12-5が起動する。予測タスク12-5は、周期タスクA(11-3)の出力値を予測する。
以上、実施例5によれば、周期タスクA(11)がオーバーラン(デッドラインを超えてしまうこと)することを未然に防ぎ、周期タスクB13が予測タスク12から出力される予測値を用いて演算を行うことが可能となる。
[実施例6]
図17は、実施例6に係る本発明を適用したエンジン制御ユニット1-10の構成の一例を示すブロック図である。なお、図1と同様の説明は省略する。センサ入力22は、クランク角センサなど、各種センサからの入力を受け取る装置である。点火ドライバ23-10は、エンジンの点火系に接続し、点火タイマ24-10の指示に従って、プラグに点火するための電流を流す。点火タイマ24-10は、プロセッサが指定した時刻に点火ドライバ23-10を起動する。
図18は、実施例6に係る本発明を適用したエンジン制御ユニット1-10の機能構成の一例を示すブロック図である。回転数算出タスク21-10は、周期内のクランク角センサ割込みをカウントし、回転数を算出する。点火時期算出タスク11-10は、回転数や吸気温度などの入力から点火時期を算出し、バッファ15に点火時期の値(上死点到達予定時刻からの相対時間)を書き込む。タイマセットタスク13-10は、バッファ15から点火時期を読み取り、絶対時刻に変換して点火タイマをセットする。予測タスク12は、点火時期の予測値を算出してバッファ15に書き込む。スケジューラ14は、各タスクを所定の周期で起動する。
図19は、実施例6に係る点火時期算出タスク11-10(プロセッサ2)で行われる処理の一例を示すフローチャートである。図20は、実施例6に係るタイマセットタスク13-10(プロセッサ2)で行われる処理の一例を示すフローチャートである。なお、図5と同様の説明は省略する。
図20のステップ1202では、タイマセットタスクは点火タイマをセットする。
図21は、実施例6に係る予測タスク12(プロセッサ2)で行われる処理の一例を示すフローチャートである。予測タスクの処理1300は、以下のように実行される。なお、図4と同様の説明は省略する。
予測タスク12は、入力処理(ステップ201)において回転数を入力し、前回との回転数の差分が一定値より小さい場合、処理を終了する(ステップ1302:Yes)。そうでない場合(ステップ1302:Yes)、予測タスク12は、高回転かどうかを判定し(ステップ1303)、高回転の場合(ステップ1303:Yes)は軽量アルゴリズム、すなわち回転数に応じたテーブル参照と参照した値を前回の点火時期に加算して点火時期を決定する。
高回転でない場合(ステップ1303:No)、予測タスク12は、高精度アルゴリズム、すなわち複数周期前からの回転数の変化から現在の回転数を予測し、その予測値に基づいて点火時期を予測する(ステップ603)。予測タスク12は出力処理においてバッファ15に点火時期の予測値を書き込む。
ステップ1302では、前回との回転数の差分が一定値より小さい場合予測処理および出力処理をスキップすることができ、予測が不要な場合すなわち前回値との差分が一定以下になる場合に処理負荷を削減することができる。
ステップ1303、603、604では、高回転の場合は(ステップ1303:Yes)、軽量アルゴリズム(ステップ604)、そうでない場合(ステップ1303:No)は高精度アルゴリズムに基づいて予測処理を行うことで(ステップ603)、処理負荷に合わせて予測処理を切り替えることができる。
以上、実施例6によれば、エンジン制御ユニットにおいて、点火時期算出タスク11-10が所定の出力周期内に演算を完了することができなかった場合、あらかじめ予測した出力値を用いることで、前回値の使用を防ぐことができ、タイマセットタスク13-10の精度が低下することを防ぐことが可能となる。
[実施例7]
図22は、本発明を適用したADユニット1-20(Autonomous Driving Unit)の構成の一例を示すブロック図である。なお、図1と同様の説明は省略する。
メモリ3には、OS7と、縦位置推定タスク11-20と、横位置推定タスク11-21と、縦位置予測タスク12-20と、横位置予測タスク12-21と、シーン判定タスク31と、フュージョンタスク32がロードされてプロセッサ2によって実行される。
ADユニットは自動運転の制御を行う制御ユニットであり、カメラなど各種センサからの入力を受け取り、その入力から自車周辺の物体の認識等を行い、認識した物体情報などを統合(フュージョン)したり、自車の走行状況(シーン)を判定したり、自車の自己位置を推定したりしたのち、自車が進むべき経路を算出し、その経路を走行するために必要な舵角等の制御情報を算出して、EPS(電動ステアリングシステム)などのアクチュエータに制御情報を出力する。
なお、本発明は、ADユニットの機能のうち、自己位置推定に適用するため、自己位置推定にかかわる構成要素のみ図示する。
図23は、本発明を適用したADユニット1-20の機能構成の一例を示すブロック図である。
フュージョンタスク32は認識した物体情報などを統合し、縦位置推定タスク11-20および横位置推定タスク11-21が必要とする情報を出力する。
シーン判定タスク31は、自車加速中または先行車減速中などで先行車との衝突リスクが一定以上ある場合か、左右の車線変更中かを判断して出力する。
縦位置推定タスク11-20は、自車の縦位置を推定して結果を縦位置バッファ15-20に出力する。
横位置推定タスク11-21は、自車の横位置を推定して結果を横位置バッファ15-21に出力する。
縦位置予測タスク12-20は、自車の縦位置を予測して結果を縦位置バッファ15-20に出力する。
横位置予測タスク12-21は、自車の横位置を予測して結果を横位置バッファ15-21に出力する。
経路算出タスク13-20は自車の縦位置および横位置や車線情報、フリースペース情報などから自車の進むべき経路を算出する。
図24は、実施例7に係る縦位置推定タスク11-20で行われる処理の一例を示すフローチャートである。図25は、実施例7に係る横位置推定タスク11-21で行われる処理の一例を示すフローチャートである。図26は、実施例7に係る経路算出タスク13-20で行われる処理の一例を示すフローチャートである。経路算出タスク1600の処理は、以下のように実行される。なお、図5と同様の説明は省略する。
図26のステップ1601では、入力値を、縦位置バッファ15-20と横位置バッファ15-21から取得する。
図27は、実施例7に係る縦位置予測タスク12-20で行われる処理の一例を示すフローチャートである。縦位置予測タスク(プロセッサ2)の処理1700は、以下のように実行される。なお、図4と同様の説明は省略する。
ステップ1702では、縦位置予測タスクは自車と先行車が衝突するリスクがあるか判定する。
縦位置予測タスク12-20は、入力処理(ステップ201)においてフュージョン結果およびシーン判定結果を入力し、先行車との衝突リスクが一定以下の場合(ステップ1702:No)、処理を終了する。そうでない場合(ステップ1702:Yes)、予測処理(ステップ202)において自車縦位置の予測を行い、出力処理(ステップ203)において出力値を縦位置バッファ15-20へ書き込む。
図28は、実施例7に係る横位置予測タスク12-21で行われる処理の一例を示すフローチャートである。横位置予測タスク(プロセッサ2)の処理1800は、以下のように実行される。なお、図4と同様の説明は省略する。
ステップ1802では、横位置予測タスク12-21は車線を変更中であるか判定する。
横位置予測タスク12-21は、入力処理(ステップ201)においてフュージョン結果およびシーン判定結果を入力し、車線変更中でない場合(ステップ1802:No)、処理を終了する。そうでない場合(ステップ1802:Yes)、予測処理(ステップ202)において自車横位置の予測を行い、出力処理(ステップ203)において出力値を横位置バッファ15-21へ書き込む。
ステップ1702、ステップ1802において、シーン判定結果に基づいてどの予測処理を行うか切り替えることができ、不要な予測処理による処理負荷上昇を回避することができる。
以上、実施例7によれば、ADユニットにおいて、縦位置推定タスク11-20もしくは横位置推定タスク11-21が所定の出力周期内に演算を完了することができなかった場合、あらかじめ予測した出力値を用いることで、前回値の使用を防ぐことができ、経路算出タスク13-20の精度が低下することを防ぐことが可能となる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。
例えば、上述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
なお、本発明の実施例は、以下の態様であってもよい。
(1).所定周期でタスクを実行するタスク実行部(プロセッサ)を備えた制御装置において、前記タスク実行部は、実行周期における前記タスクの出力値を、前記実行周期での出力前に予測することを特徴とする制御装置。
(2).(1)において、前記タスク実行部は、前記実行周期内に前記タスクが完了しない場合、前記予測した値を受け取り可能な状態にすることを特徴とする制御装置。
(3).(1)または(2)において、前記タスク実行部は、前記実行周期における前記出力値を予測する際、前記実行周期での出力前のいずれかの実行周期の空き時間が所定より多い場合、精度を優先する予測をし、前記実行周期での出力前のいずれかの実行周期の空き時間が所定より少ない場合、速度を優先する予測をすることを特徴とする制御装置。
(4).(1)または(2)において、前記タスク実行部は、前記実行周期の前記タスクの遅延が閾値を超える場合、前記実行周期の前記タスクを中断して、前記実行周期の前記出力値を予測することを特徴とする制御装置。
(5).(3)において、精度を優先する予測は、高次の回帰曲線又は多数のデータを用いるアルゴリズムを用い、速度を優先する予測は、テーブル参照により、入力値に対応する予測値を取得するアルゴリズムを用いる。
(6).(1)において、制御装置は、ADユニットである。
すなわち、制御装置は、プロセッサとメモリを有し、入力装置から取得した入力データを用いて演算を行い、出力値を生成し、所定の時間内に出力装置を制御する制御装置であって、前記入力装置からデータを受け付けて、当該受け付けたデータに対して所定の演算処理を行って出力値を生成する周期タスクAと、当該生成された出力値を入力として演算処理を行う周期タスクBと、前記周期タスクAの出力値を予測する予測タスクと、を有し、前記周期タスクBは、前記周期タスクAが所定の時間内に処理を完了しない場合に、前記予測タスクの出力値を用いて、演算処理を行う。
この制御装置によれば、ある処理が所定の出力周期内に演算を完了することができなかった場合、あらかじめ予測した出力値を用いることで、処理の精度が低下することを防ぐことができる。
1…車両制御装置
2…プロセッサ
3…メモリ
4…不揮発性メモリ
8…インターコネクト
11…周期タスクA
12…予測タスク
13…周期タスクB
14…スケジューラ
15…バッファ

Claims (6)

  1. バッファと、
    所定の実行周期で第1タスクを実行し、前記実行周期において前記第1タスクの締め切りタイミングを示す第1タスクデッドラインまでに前記第1タスクが完了した場合、前記第1タスクの出力値を前記バッファに書き込む第1タスク部と、
    前記第1タスクデッドラインまでに前記第1タスクが完了するか否かに関わらず、前記実行周期において前記第1タスクの出力値が前記バッファに書き込まれる前に、前記第1タスクの前記出力値を予測し、予測値を前記バッファに書き込む予測タスク部と、
    前記実行周期において前記バッファに書き込まれた最新の値を読み出し、前記バッファから読み出した前記最新の値を入力として第2タスクを実行し、前記第2タスクの出力値を出力する第2タスク部と、
    を備えることを特長とする制御装置。
  2. 請求項1に記載の制御装置であって、
    前記第2タスク部は、
    前記実行周期において前記第1タスクデッドラインまでに前記第1タスクが完了しない場合、前記第1タスクの前記予測値を入力として前記第2タスクを実行する
    ことを特長とする制御装置。
  3. 請求項2に記載の制御装置であって、
    前記予測タスク部は、
    前記実行周期において前記第2タスクが完了し、かつ、次の前記第1タスクの前記出力値の予測を開始するタイミングから前記実行周期が終わるタイミングまでの時間を示す空き時間が第1閾値を超える場合、速度よりも精度を優先する第1予測を行い、
    前記空き時間が第1閾値以下の場合、精度よりも速度を優先する第2予測を行う
    ことを特長とする制御装置。
  4. 請求項2に記載の制御装置であって、
    前記第1タスクは、
    少なくとも第1演算処理と第2演算処理を含み、
    前記第1タスク部は、
    前記第1演算処理がその締め切りタイミングを示す第1演算処理デッドラインを超えて完了した場合、前記第2演算処理の実行をキャンセルし、前記予測タスク部を起動させる
    ことを特長とする制御装置。
  5. 請求項2に記載の制御装置であって、
    前記第1タスク部は、
    前記出力値と前記予測値の一致の度合いを示す予測精度が第2閾値より低い場合、前記予測タスク部の起動をスキップさせる
    ことを特長とする制御装置。
  6. 所定の実行周期で第1タスクを実行し、前記実行周期において前記第1タスクの締め切りタイミングを示す第1タスクデッドラインまでに前記第1タスクが完了した場合、前記第1タスクの出力値をバッファに書き込む第1工程と、
    前記第1タスクデッドラインまでに前記第1タスクが完了するか否かに関わらず、前記実行周期において前記第1タスクの出力値が前記バッファに書き込まれる前に、前記第1タスクの前記出力値を予測し、予測値を前記バッファに書き込む第2工程と、
    前記実行周期において前記バッファに書き込まれた最新の値を読み出し、前記バッファから読み出した前記最新の値を入力として第2タスクを実行し、前記第2タスクの出力値を出力する第3工程と、
    をプロセッサに実行させる方法。
JP2022511568A 2020-03-31 2021-01-22 制御装置及び方法 Active JP7421634B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2020063374 2020-03-31
JP2020063374 2020-03-31
PCT/JP2021/002148 WO2021199607A1 (ja) 2020-03-31 2021-01-22 制御装置及び方法

Publications (2)

Publication Number Publication Date
JPWO2021199607A1 JPWO2021199607A1 (ja) 2021-10-07
JP7421634B2 true JP7421634B2 (ja) 2024-01-24

Family

ID=77929916

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022511568A Active JP7421634B2 (ja) 2020-03-31 2021-01-22 制御装置及び方法

Country Status (3)

Country Link
JP (1) JP7421634B2 (ja)
DE (1) DE112021000387T5 (ja)
WO (1) WO2021199607A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001515242A (ja) 1997-09-04 2001-09-18 イクエーター テクノロジーズ インコーポレイテッド プロセッサ資源分配装置及び方法
JP2006090356A (ja) 2004-09-21 2006-04-06 Denso Corp 車両制御装置、および処理負荷制御プログラム。
JP2009181497A (ja) 2008-01-31 2009-08-13 Nomura Research Institute Ltd ジョブ処理システムおよびジョブ処理方法
US20200097333A1 (en) 2018-09-26 2020-03-26 Ciena Corporation Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT514444A2 (de) 2013-06-24 2015-01-15 Fts Computertechnik Gmbh Verfahren und Vorrichtung zur zeitrichtigen Datenübergabe an die zyklischen Tasks in einem verteilten Echtzeitsystem
JP2016066139A (ja) 2014-09-24 2016-04-28 日立オートモティブシステムズ株式会社 車両制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001515242A (ja) 1997-09-04 2001-09-18 イクエーター テクノロジーズ インコーポレイテッド プロセッサ資源分配装置及び方法
JP2006090356A (ja) 2004-09-21 2006-04-06 Denso Corp 車両制御装置、および処理負荷制御プログラム。
JP2009181497A (ja) 2008-01-31 2009-08-13 Nomura Research Institute Ltd ジョブ処理システムおよびジョブ処理方法
US20200097333A1 (en) 2018-09-26 2020-03-26 Ciena Corporation Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis

Also Published As

Publication number Publication date
JPWO2021199607A1 (ja) 2021-10-07
DE112021000387T5 (de) 2022-11-17
WO2021199607A1 (ja) 2021-10-07

Similar Documents

Publication Publication Date Title
JP5195913B2 (ja) マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
CN101713970B (zh) 重启飞行控制系统的方法和系统
JP4536742B2 (ja) 優先順位によるフラッシュメモリの演算処理装置及び方法
JP4728020B2 (ja) 車両制御用ソフトウェア及び車両制御装置
US20100199283A1 (en) Data processing unit
US11709697B2 (en) Vehicle control device, vehicle control method, and recording medium storing vehicle control program
JP4241462B2 (ja) 制御ユニットおよびマイクロコンピュータ
JP5406072B2 (ja) 組込み制御装置
JP7421634B2 (ja) 制御装置及び方法
JP6165677B2 (ja) 電子制御システム
US9128757B2 (en) Method and lightweight mechanism for mixed-critical applications
JP6808090B1 (ja) 制御装置および分散処理方法
JP7147615B2 (ja) タスク管理装置
US20240054002A1 (en) Vehicle-mounted computer, computer execution method, and computer program
WO2023149001A1 (ja) 車両制御装置
JP2020091540A (ja) 情報処理装置
WO2023112623A1 (ja) 車載制御装置、制御方法及びコンピュータプログラム
WO2022137665A1 (ja) 電子制御装置
WO2022180893A1 (ja) 制御装置及び制御方法
JP7439773B2 (ja) 車載コンピュータ、コンピュータ実行方法及びコンピュータプログラム
JP7236939B2 (ja) 制御装置および制御方法
US20230219596A1 (en) Control apparatus for autonomous vehicle and method thereof
JP5703505B2 (ja) バスパーティション構造を備えるコンピュータ
JP6909128B2 (ja) 電子制御装置
JP6865707B2 (ja) 車両用制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231002

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240112

R150 Certificate of patent or registration of utility model

Ref document number: 7421634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150