JP6975854B2 - 制御コントローラおよび車両制御システム - Google Patents

制御コントローラおよび車両制御システム Download PDF

Info

Publication number
JP6975854B2
JP6975854B2 JP2020525010A JP2020525010A JP6975854B2 JP 6975854 B2 JP6975854 B2 JP 6975854B2 JP 2020525010 A JP2020525010 A JP 2020525010A JP 2020525010 A JP2020525010 A JP 2020525010A JP 6975854 B2 JP6975854 B2 JP 6975854B2
Authority
JP
Japan
Prior art keywords
function group
unit
control controller
function
situation
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
JP2020525010A
Other languages
English (en)
Other versions
JPWO2019239522A1 (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 Ltd
Original Assignee
Hitachi 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 Ltd filed Critical Hitachi Ltd
Publication of JPWO2019239522A1 publication Critical patent/JPWO2019239522A1/ja
Application granted granted Critical
Publication of JP6975854B2 publication Critical patent/JP6975854B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/06Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)

Description

本開示は、制御コントローラおよび車両制御システムに関する。
組込み制御システムは、様々な状況で安全に動作することが求められる。例えば、状況Aで最適に動作するアルゴリズムと状況Bで最適に動作するアルゴリズムが異なる場合には両者のプログラムを搭載する必要がある。しかしながら、両者のプログラムを搭載するためには更に高性能なCPUやメモリが必要となるため、システムのハードウェアコストが高くなる課題がある。例えば、自動運転システムの標識認識プログラムにおいて国Aと国Bの標識を高精度で識別するためには、各国ごとに最適化された2つのプログラムを用意する必要がある。これは2国に限らず、国Cや国Dなどと更に増える可能性があり、全てのプログラムをシステムに搭載することはコスト増に繋がるため現実的に困難である。
そこで、例えばOTA(Over The Air)と呼ばれる、必要となった状況で必要なプログラムをダウンロードする技術が提唱されている。
また、前述の標識認識プログラムの例の他に、例えば、システムの状況が故障のない通常走行モード(状況A)からコントローラ故障が発生したモード(状況B)に切り替わった際に、残存コントローラの性能に応じて、制御機能を再構成し、フェールオペレーショナルを試みるユースケースも考えられる。コントローラは、電子制御ユニット(ECU)と呼ばれ、ECU間は車載ネットワークで接続される。ECU間は制御データやプログラムの転送がネットワークを介して可能である。
例えば、特許文献1は、ECUのマイコン故障が発生した際には、残存するECUの中から優先度に基づいて機能代替するECUを動的に選定し、選定対象に対して、機能代替するプログラムを転送し、システムの縮退制御を実現可能とする一連の流れを示している。
特許第4399987号公報
ISO26262 AVIONICS APPLICATION SOFTWARE STANDARD INTERFACE, PART 1 - REQUIRED SERVICES, ARINC SPECIFICATION 653P1-3, 2010
しかしながら、特許文献1では走行中にプログラムを入れ替えることは考慮されていない。このため、特許文献1の技術には、複数のプログラムを1つのECUのマイコン上で動作させる際に互いに干渉し、制御性能に影響を与えるという課題があり、処理切り替え後の動作を保証するものではない。
一方、無干渉とする方法として、非特許文献1に示す自動車向け機能安全規格ISO26262は、Freedom From Interferenceとして無干渉とする方法について開示している。また、一つの実現方法として、非特許文献2では時分割スケジューリングが示されている。
しかしながら、非特許文献2による時分割スケジューリングでは、静的にスロットを設計する必要がある。このため、故障後の処理に対しても予めスロットを割り当てておく必要がある。つまり、故障後にも故障前の割り当てが残存し、逆に故障前でも故障後のための割り当てが設定された状態となっている。これは状況Aや状況Bだけでなくすべての状況に対して予めスロット(リソース)を割り当てておくことを示しており、非特許文献2の技術には、リソースを有効利用できないという課題がある。
本開示はこのような状況に鑑みてなされたものであり、状況変化に応じて、動的に一部のプログラムを入れ替える際に、他のプログラムの動作に影響を与えずにシステムを更新する技術を提供する。
上記課題を解決するために、本開示による制御コントローラは、複数の機能を予め決められた機能グループの単位で管理し、実行する制御コントローラであって、動的に機能グループ単位を変更するパーティション更新部と、制御コントローラの外部から、システムの稼働環境の変化に応じて機能グループの変更を指示する機能グループ変更実施要求を受信し、当該機能グループ変更実施要求に応答して、パーティション更新部によって変更された機能グループの実行を許可するモード変更部と、を備える。
本開示に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、本開示の態様は、要素及び多様な要素の組み合わせ及び以降の詳細な記述と添付される請求の範囲の様態により達成され実現される。
本明細書の記述は典型的な例示に過ぎず、本開示の請求の範囲又は適用例を如何なる意味においても限定するものではないことを理解する必要がある。
本開示の制御コントローラによれば、制御に影響を与えずに状況に応じてシステムの機能を変更可能となるため、可用性と安全性を担保できる。
本実施形態による車両システム10のユースケース(車両システムにおける状態遷移)を示す図である。 本実施形態による車両システム10の概略構成例を示す図である。 本実施形態におけるECU−A11の状態遷移の例を示す図である。 本実施形態による機能グループのデータフローの例を示す図である。 第1の実施形態の更新前(状況A01)におけるタスク構成1111の例を示す図である。 第1の実施形態の更新中(状況AtoB02)における更新機能グループのタスク情報1112と実行管理設定1113の構成例を示す図である。 第1の実施形態の更新後(状況B03)におけるタスク構成1114の例を示す図である。 第1の実施形態に係るスロット(タイムスロット)設計の例を示す図である。 第1の実施形態によるタスクのスケジューリング例を示す図である。 本実施形態におけるメモリ保護設定の例を示す図である。 本実施形態におけるメモリマップの例を示す図である。 走行計画部1101よる走行計画生成処理を説明するためのフローチャートである。 判断機能部1102による走行軌道決定処理を説明するためのフローチャートである。 共通初期化部1103による共通初期化処理を説明するためのフローチャートである。 周辺認識1部1104による周辺認識処理を説明するためのフローチャートである。 状況A固有初期化部1105による状況A固有初期化処理を説明するためのフローチャートである。 周辺認識2部1106による周辺認識処理を説明するためのフローチャートである。 状況B固有初期化部1107による状況B固有初期化処理を説明するためのフローチャートである。状況B固有初期化部の動作フロー モード変更部1108によるモード変更処理を説明するためのフローチャートである。 パーティション更新部1109によるパーティション更新処理(ステップ1903の詳細)を説明するためのフローチャートである。 時分割制御部1110による時分割制御処理を説明するためのフローチャートである。 ECU−B12の画面表示部1201より画面表示処理を説明するためのフローチャートである。 ECU−B12の更新準備指示部1202による更新準備指示処理を説明するためのフローチャートである。 ECU−B12の更新実施指示部1203による更新実施指示処理を説明するためのフローチャートである。 第2の実施形態の、状況AtoB02における更新機能グループのタスク情報2112と状況B03におけるタスク情報2114の例を示す図である。 第2の実施形態によるスロット設計の例を示す図である。 第2の実施形態によるタスクスケジューリングの例を示す図である。
本実施形態に係る制御コントローラは、制御システムの制御機能を動的に更新するための技術に関するものである。例えば、当該制御コントローラは、機能グループ同士を無干渉とする、時間的および空間的パーティショニングを実行しつつ、稼働状況に応じて機能グループの一部を入れ替えることにより、システムの可用性と安全性を担保することができる制御システムの制御機能を提供する。
以下、添付図面を参照して本開示の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本開示の原理に則った具体的な実施形態と実装例を示しているが、これらは本開示の理解のためのものであり、決して本開示を限定的に解釈するために用いられるものではない。
本実施形態では、当業者が本開示の技術を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本開示の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
更に、本開示の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
なお、以後の説明では「テーブル」形式によって本開示の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
本実施形態では、各ECUが所定の判断をするように設定されている場合について説明するが、各ECUを制御する制御装置が設けられ、当該制御装置が上記所定の判断をするように設定してもよい。
(1)第1の実施形態
<車両システムのユースケース>
図1は、本実施形態による車両システム10のユースケース(車両システムにおける状態遷移)を示す図である。
図1に示されるように、車両システム10は、状況A01では、状況Aに適した機能構成で走行するシステム1となる。また、車両システム10は、状況Aから状況Bに移動する際の状況B付近の状況A(状況AtoB02)では、状況Bに適した機能構成で走行する準備を行うシステム2となる。さらに、車両システム10は、状況B03では、状況Bに適した機能構成で走行するシステム3となる。
例えば、状況Aを車両システム10がA国(B国との国境付近ではない場所)にいる状況とし、状況AtoBを車両システム10がA国とB国の国境付近にいる状況とし、状況Bを車両システム10がB国(A国との国境付近ではない場所)にいる状況とすることができる。また、例えば、状況Aを各ECUが正常に動作している状況とし、状況AtoBを何れかのECUで故障が発生しそうな状況とし、状況Bを何れかのECUで故障が発生した後の状況とすることができる。
<車両システムの構成>
図2は、本実施形態による車両システム10の概略構成例を示す図である。車両システム10は、例えば、ECU−A11とECU−B12とその他のECUで構成され、ネットワークバス13で接続される。第1の実施形態では、各ECUがネットワークバス13で接続されているが、このような形態に限られず、各ECUが1対1に接続されるようなネットワークトポロジであってもよい。
車両システム10が状況A01にあるときのシステム1におけるECU―A11は、例えば、プログラムとしての、走行計画部1101と、判断機能部1102と、共通初期化部1103と、周辺認識1部1104と、状況A固有初期化部1105と、モード変更部1108と、パーティション更新部1109と、時分割制御部1110とによって構成される。また、当該システム1におけるECU―B12は、プログラムとしての、画面表示部1201と、更新準備指示部1202と、更新実施指示部1203とによって構成される。車両システム10が状況AtoBにあるときのシステム2は、ECU−A11において、システム1の構成と、プログラムとしての、周辺認識2部1106と、状況B固有初期化部1107とによって構成されている。
車両システム10が状況Bにあるときのシステム3は、ECU−A11において、システム2の構成から、プログラムとしての、周辺認識1部1104と、状況A固有初期化部1105とが削除されている構成となっている。なお、状況A固有初期化部1105の削除は、ECU−A11が実行してもよいし、各ECUを管理・制御する制御装置(図示せず)が実行してもよい。
<ECU−Aの状態遷移>
図3は、本実施形態におけるECU−A11の状態遷移の例を示す図である。ECU−A11は、はキーONによりシステム初期化モード001となり、全体初期化処理(共通初期化処理)を行う。初期化終了後、ECU−A11は、パーティションを有効とし、それにより、状態は走行モード002に遷移する。ここで、本実施形態における「パーティション」とは、メモリを複数の領域に区切り、処理すべきデータを各領域に適切に割り当てること(空間分離)、および時間分離で各種処理をスケジューリングし、このスケジュールに従って処理を実行(CPUを使うときに影響を受けない)すること(時間分離)を意味する。なお、時間分離の場合、CPUがシングルコアの場合とマルチコアの場合とでは処理の態様が異なる。前者の場合、時分割でスケジューリングして処理が実行され、後者の場合、例えば、1つ目のコアが共通機能グループの処理を実行し、2つ目のコアが個別機能グループの処理を実行する。また、後者の場合、物理メモリは共通となるが、使用されるメモリ領域(アドレス空間)は異なってくる。
走行モード002では、最初は状況A走行モード0021となり、共通機能グループと状況A向け機能グループを実行する(状況Aの機能の実行)。ECU−A11は、外部(例えば、ECU−B12や図示しない全体を制御する制御装置など)から更新準備要求を受信すると、状態を機能更新モード0022に遷移させる。
機能更新モード0022では、ECU−A11は、更新プログラムと設定情報(更新情報)を取得し、その情報に基づいてパーティションの部分更新と部分初期化処理を実施する。ECU−A11は、部分更新と部分初期化処理と同時に、継続実行対象の機能処理を実行し続ける。例えばECU−B12から更新実施要求を受信した場合、ECU−A11は、使用しない機能をOFFにし、状態を状況B走行モード0023に遷移させる。状況B走行モード0023では、ECU−A11は、共通機能グループと状況B向け機能グループを実行する。
なお、本実施形態では、更新プログラムおよび設定情報は、すでに車両システム10内のECUに保存され、ネットワークバス13経由で配信されることを想定しているが、これに限らない。更新プログラムと設定情報は車両システム外のサーバに保存され、OTAに基づいて配信されてもよいし、これ以外の方法でも良い。また、更新プログラムや設定情報は、予め、ECU−A11内のメモリ(図示せず)に格納されており、ECU−A11がそこから取得するようにしてもよいし、ECU−A11の外部に専用のメモリ領域が設けられ、ECU−A11がそこから取得するようにしてもよい。
<機能グループのデータ処理の流れ>
図4は、本実施形態による機能グループのデータフローの例を示す図である。
図4において、状況A01では、周辺認識1部1104は、カメラ画像とポイントクラウド情報(点群(形状)と距離の情報)を入力とし、走行環境情報を出力する。走行計画部1101は、走行環境情報を入力とし、起動候補情報を出力する。また、判断機能部1102は、起動候補情報を入力とし、走行軌道情報を出力する。
状況B03では、周辺認識1部1104が周辺認識2部1106に入れ替わる。また、入力と出力情報には変更がない。なお、状況A02は、状況A01と同様であるので、説明は省略する。
<更新前のタスク構成>
図5は、第1の実施形態の更新前(状況A01)におけるタスク構成1111の例を示す図である。なお、当該タスク構成1111(テーブル)は、例えば、ECU−A11のメモリ(図示しない)に設定されて管理される。最初からデータとしてメモリ上に設定されていてもよいし、例えばECU−B12からデータが送信されてきて設定されるようにしてもよい。
タスク構成1111は、タスク名11111と、タスクID11112と、実行周期11113と、タスク優先度11114と、通常実行期間11115と、初期化実行時間11116と、機能グループ11117と、スケジューリング11118とを構成項目としている。
タスク名11111は、実行する機能をタスクの名称として示す情報である。例えば、走行計画タスクは走行計画部1101を、判断機能タスクは判断機能部1102を、周辺認識1タスクは周辺認識1部1104を、モード変更タスクはモード変更部1108を、それぞれ実行する。
タスクID11112は、タスクを一意に識別・特定することができる識別情報である。実行周期11113は、タスクを起動する周期を示す情報である。単位は例えばミリ秒である。第1の実施形態では、すべての実行周期を同じにしているがこれに限らない。異なる周期であってもよい。
タスク優先度11114は、タスクの優先度を示す情報である。この優先度は、タスクが同時に実行可能状態であるときに、優先して実行される度合いを示しており、数字が小さいほど優先度が高い。この考え方は優先度スケジューリングに基づいている。
通常実行時間11115は、初期化終了後のタスク実行時間(タスク実行に割り当てられた時間)を示す情報である。初期化実行時間11116は、初期化処理の実行時間(初期化処理に割り当てられた時間)を示す情報である。第1の実施形態では、通常実行時間11115と初期化実行時間11116を、最長の実行時間を設定することを想定しているが、これに限らない。例えば、最長の実行時間にマージンを加えたものであってもよいし、別の態様でもよい。
機能グループ11117は、タスクが所属する機能グループを示す情報である。例えば、共通機能グループは、状況に左右されずに実行されるアプリケーションプログラムである。状況A向け機能グループは、状況Aで実行される機能グループである。システムグループは、基本ソフトウェアの機能グループである。
スケジューリング11118は、タスクが実行されるスケジューリングポリシーを示す情報である。第1の実施形態では、複数のスケジューリングポリシーが共存することを想定しているが、これに限らない。例えば、1つのスケジューリングで統一されていてもよい。FIFO(First-In-First-Out)スケジューリングでは、タスク優先度11114の優先度に基づいて実行され、タスクの終了まで継続して実行される。EDF(Earliest Deadline First)は、タスクの実行周期11113をデッドラインと見なすポリシーである(動的スケジューリング)。つまり、EDFでは、プロセスは優先度付きキューに置かれ、スケジューリングイベントが発生すると(タスク終了、新規タスク生成など)、そのキューを探索して最も実行期限(デッドライン)が近いプロセスが選択され、そのプロセスが次に実行すべきものとしてスケジュールされる。より具体的に説明すると、次の周期が始まる時刻から実行時間通常11115を引いた時間を余裕時間とし、余裕時間がないほど優先度が高く設定される。例えば、ある処理によって実行時間が消費されたが、他にも実行すべきタスクが複数あり、全てのタスクを実行していると50ms内に収まらないときに、EDFがポリシーとして与えられているタスクが50ms内に必ず実行されるように優先度が動的に高く設定されることになる。なお、時分割制御の優先度はこれらのタスクの優先度よりも高く設定されるため、時分割制御の動作は保証される。第1の実施形態では、機能グループをタスク単位としているがこれに限らない。例えば、関数単位(プログラム単位)としてもよい。この場合、1つのタスクが複数の機能グループを実行することがありえる。
<更新中のタスク構成>
図6は、第1の実施形態の更新中(状況AtoB02)における更新機能グループのタスク情報1112と実行管理設定1113の構成例を示す図である。なお、当該タスク構成1112および実行管理設定1113(テーブル)は、例えば、ECU−A11のメモリ(図示しない)に設定されて管理される。最初からデータとしてメモリ上に設定されていてもよいし、例えばECU−B12からデータが送信されてきて設定されるようにしてもよい。
(i)タスク情報1112は、タスク名11121と、タスクID11122と、実行周期11123と、タスク優先度11124と、通常実行時間11125と、初期化実行時間11126と、機能グループ11127と、スケジューリング11128とを構成項目としている。
タスク名11121は、実行する機能をタスクの名称として示す情報である。例えば、周辺認識2タスクでは、周辺認識2部1106が実行される。タスクID11122は、タスクを一意に識別・特定することができる識別情報である。実行周期11123は、タスクを起動する周期を示す情報である。単位はミリ秒である。
タスク優先度11124は、タスクの優先度を示す情報である。通常実行時間11125は、初期化終了後の実行時間を示す情報である。初期化実行時間11126は、初期化処理の実行時間を示す情報である。
機能グループ11127は、タスクが所属する機能グループを示す情報である。例えば、状況B向け機能グループは、状況Bで実行される機能グループを意味する。スケジューリング11118は、タスクが実行されるスケジューリングポリシーを示す情報である。
第1の実施形態では、機能グループをタスク単位としているがこれに限らない。例えば関数単位(プログラム単位)としてもよい。この場合、1つのタスクが複数の機能グループを実行することがありえる。
(ii)実行管理設定1113は、タスク名11131と、タスクID11132と、実行管理11133と、機能グループ11134と、スケジューリング11135とを構成項目としている。
タスク名11131は、タスク名称を示す情報である。タスクID11132は、タスクを一意に識別・特定することができる識別情報である。
実行管理11133は、状況の変化に応じて、処理を終了する機能グループと処理を開始する機能グループを示す情報である。例えば、OFFは処理の終了、ONは処理の開始を意味する。ONとOFFは機能グループごとに管理される。状況AtoBでは、周辺認識2タスクがONとなるように制御され、状況AでONであった周辺認識1タスクはOFFとなるように制御される。
機能グループ11134は、タスクが所属する機能グループを示す情報である。スケジューリング11135は、タスクが実行されるスケジューリングポリシーを示す情報である。
<更新後のタスク構成>
図7は、第1の実施形態の更新後(状況B03)におけるタスク構成1114の例を示す図である。なお、当該タスク構成1114(テーブル)は、例えば、ECU−A11のメモリ(図示しない)に設定されて管理される。最初からデータとしてメモリ上に設定されていてもよいし、例えばECU−B12からデータが送信されてきて設定されるようにしてもよい。
タスク構成1114は、更新前と同様に、タスク名11141と、タスクID11142と、実行周期11143と、タスク優先度11144と、通常実行時間11145と、初期化実行時間11146と、機能グループ11147と、スケジューリング11148とを構成項目としている。
タスク名11141は、実行する機能をタスクの名称として示す情報である。例えば、走行計画タスクは走行計画部1101を、判断機能タスクは判断機能部1102を、周辺認識2タスクは周辺認識2部1106を、モード変更タスクはモード変更部1108を、それぞれ実行する。
タスクID11142は、タスクを一意に識別・特定することができる識別情報である。実行周期11143は、タスクを起動する周期を示す。単位はミリ秒である。第1の実施形態ではすべての実行周期を同じにしているがこれに限らず、異なる周期であってもよい。
タスク優先度11144は、タスクの優先度を示す情報である。この優先度は、タスクが同時に実行可能状態であるときに、優先して実行される度合いであり、数字が小さいほど優先度が高い。この考え方は優先度スケジューリングに基づいている。
通常実行時間11145は、初期化終了後の実行時間を示す情報である。初期化実行時間11146は、初期化処理の実行時間を示す情報である。第1の実施形態では、通常実行時間と初期化実行時間を、最長の実行時間を設定することを想定しているが、これに限らない。例えば、最長の実行時間にマージンを加えたものであってもよいし、別の態様であってもよい。
機能グループ11147は、タスクが所属する機能グループを示す情報である。例えば、共通機能グループは、状況に左右されずに実行されるアプリケーションプログラムであり、状況B向け機能グループは状況Bで実行される機能グループである。システムグループは、基本ソフトウェアの機能グループである。
スケジューリング11148は、タスクが実行されるスケジューリングポリシーを示す情報である。第1の実施形態では、複数のスケジューリングポリシーが共存することを想定しているがこれに限らない。例えば、1つのスケジューリングで統一されていてもよい。FIFO(First-In-First-Out)スケジューリングでは、タスク優先度11114の優先度に基づいてタスクが実行され、タスクの終了まで継続して実行される。EDF(Earliest Deadline First)は、タスクの実行周期11143をデッドラインと見なすポリシーである。次の周期が始まる時刻から実行時間通常11145を引いた時間を余裕時間とし、余裕時間がないほど優先度が高く設定される方式である。なお、時分割制御の優先度はこれらのタスクの優先度よりも高く設定されるため、時分割制御の動作は保証される。実施の形態1では機能グループをタスク単位としているがこれに限らない。例えば、関数単位(プログラム単位)としてもよい。この場合、1つのタスクが複数の機能グループを実行することがありえる。
<スロット設計>
図8は、第1の実施形態に係るスロット(タイムスロット)設計の例を示す図である。図8では、状況Aと、状況AtoBと、状況Bのときのスロット設計が示されている。スロット設計は、スロットID11151、11161、および11171と、開始時間11152、11162、および11172と、終了時間11153、11163、および11173と、実行対象11154、11164、および11174と、を構成項目としている。
(i)状況A01のスロット設計1115
スロットID11151は、スロットを一意に識別・特定できる識別情報である。開始時間11152は、スロットと定めた時間の開始時刻を示す情報である。終了時刻11153は、スロットと定めた時刻の終了時刻を示す情報である。実行対象11154は、該当するスロットで実行許可されている機能グループを示す情報である。
(ii)状況AtoB02のスロット設計1116
スロットID11161は、スロットを一意に識別・特定できる識別情報である。開始時間11162は、スロットと定めた時間の開始時刻を示す情報である。終了時刻11163は、スロットと定めた時刻の終了時刻を示す情報である。実行対象11164は、該当するスロットで実行許可されている機能グループを示す情報である。
(iii)状況B03のスロット設計1117
スロットID11171は、スロットを一意に識別・特定できる識別情報である。開始時間11172は、スロットと定めた時間の開始時刻を示す情報である。終了時刻11173は、スロットと定めた時刻の終了時刻を示す情報である。実行対象11174は、該当するスロットで実行許可されている機能グループを示す情報である。
第1の実施形態では、一例として、時分割制御のシステム周期を50msとしている。システム周期とは前述のスロット設計に基づいて繰り返し実行される周期である。例えば、スロットID11151が「1」のスロットは、開始時刻11152が0であるため、0ms目、50ms目、100ms目、・・・、というように、50ms毎に実行される。
また、状況A01において、スロット2と4の間に、空き時間(待機時間)が設けられている。この空き時間は、情報AtoB02において、スロット3が割り当てられている。さらに、同様に、状況B03では、スロット1と2の間に、空き時間(待機時間)が設けられている。
<タスクスケジューリング>
図9は、第1の実施形態によるタスクのスケジューリング例を示す図である。当該スケジューリング例は、図8のスロット設計に基づいてなされたものである。図8は、時分割(時間分離)パーティショニングによるタスクスケジューリングについて示している。
状況A走行モード0021では、スロットID1において、タスクID1および2のタスク(共通機能グループのタスク)が実行され、スロットID2において、タスクID3のタスク(状況A向け機能グループのタスク)が実行され、スロットIDおいて、タスクID5のタスク(システムグループのタスク)が実行される。システム周期11155は50msである。
機能更新モード0022では、スロットID1において、タスクID1と2のタスク(共通機能グループのタスク)が実行され、スロットID2において、タスクID3のタスク(状況A向け機能グループのタスク)が実行され、スロットID3において、タスクID4(状況B向け機能グループのタスク)のタスクが実行され、スロットID4において、タスクID5(システムグループのタスク)が実行される。システム周期11165は50msである。スロットID3では、デッドライン判定が無効(デッドライン監視がOFF)になっているため、タスクID4のタスクが初期化処理を実行する。そのスロット時間以内に終了しない場合、初期化処理は、スロット終了時に中断されるが、次のスロット開始時刻に再開される。
状況B走行モード0023では、スロットID1において、タスクID1と2のタスク(共通機能グループのタスク)が実行され、スロットID3において、タスクID4のタスク(状況B向け機能グループのタスク)が実行され、スロットID4において、タスクID5のタスク(システムグループのタスク)が実行される。システム周期11175は、上述と同様に、50msである。
<メモリ保護設定>
図10は、本実施形態におけるメモリ保護設定の例を示す図である。メモリ保護設定は、表形式で実現され(ただし、表形式に限定されない)、対象となる機能グループの名称(種別であってもよい)を示す機能グループ411、421、および431と、対応する機能グループがアクセスできるメモリ領域を示すアクセス可能領域412、422、および432と、対応する機能グループがアクセスできないメモリ領域を示すアクセス不可領域413、423、および433と、を構成項目として有している。
状況A01、状況AtoB、および状況B03において、アクセス可能領域412、422、および432は、書き込み、読み出し、関数実行が許可されている領域を示す。アクセス不可領域413、423、および433は、データの書き込み、データの読み出し、関数実行が許可されていない領域を示す。
なお、本実施形態では、アクセス可能領域412、422および432とアクセス不可領域413、423、および433の2つ(2種類)でメモリアクセスを管理しているが、これに限らない。例えば、限定アクセス可能領域として、データの読み出しのみ許可されている領域を設定できるようにしてもよいし、これにも限らない。例えば、各状況において、個別機能グループ(例えば、状況A向け機能グループおよび状況B向け機能グループ)に割り当てられたメモリアドレス空間(領域)に対しては、個別機能グループの各タスクの実行、書き込み、読み出しが許可されているが、共通機能グループのタスクは読み出しのみ許可されるように構成してもよい。
<メモリマップ>
図11は、本実施形態におけるメモリマップの例を示す図である。図11の例では、ECU−A11が使用するメモリは、4つ領域(領域AからD)に分割されている(空間分離)。ただし、本実施形態によるメモリマップでは、非特許文献1とは異なり、各領域にアクセスできる機能グループが固定となっていない。例えば、外部からの指令に従って、ECU−A11が各機能グループについて使用するメモリ領域を割り当てることも可能である(例えば、第2の実施形態参照)。
状況A01のメモリマップ51では、共通機能グループ511が領域A517にマッピングされ、共有メモリ領域512と空きメモリ領域513が領域B518にマッピングされ、状況A向け機能グループ514と空きメモリ領域515が領域C519にマッピングされ、空きメモリ領域516が領域D510にマッピングされている。
状況AtoB02のメモリマップ52では、共通機能グループ5201が領域A5208にマッピングされ、共有メモリ領域5202と空きメモリ領域5203が領域B5209にマッピングされ、状況A向け機能グループ5204と空きメモリ領域5205が領域C5210にマッピングされ、状況B向け機能グループ5206と空きメモリ領域5207が領域D5211にマッピングされている。
状況B03のメモリマップ53では、共通機能グループ531が領域A537にマッピングされ、共有メモリ領域532と空きメモリ領域533が領域B538にマッピングされ、空きメモリ領域534が領域C539にマッピングされ、状況B向け機能グループ535と空きメモリ領域536が領域D530にマッピングされている。
<走行計画生成処理>
図12は、走行計画部1101よる走行計画生成処理を説明するためのフローチャートである。ここでは、走行計画部1101を動作主体としているが、走行計画部1101はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
ステップ1201において、走行計画部1101は、周辺状況に応じた走行軌道の候補を算出し、保存する。周辺状況は、例えば、カメラによって撮像された画像とポイントクラウド情報を用いて周辺認識1部1104によって演算される。周辺状況の情報としては、例えば、前方の車両の有無やその距離、道路の車線の情報、周辺の地物の情報などである。
<走行軌道決定処理>
図13は、判断機能部1102による走行軌道決定処理を説明するためのフローチャートである。ここでは、判断機能部1102を動作主体としているが、判断機能部1102はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ1301
判断機能部1102は、走行計画生成処理(図12)で得られた走行軌道の候補から採用する走行軌道を決定する。
(ii)ステップ1302
判断機能部1102は、ステップ1301で決定した走行軌道を、ネットワークバス13を介してECU−A11の外部(例えば、ECU−B12や各ECUを制御する制御装置)に送信する。
<共通初期化処理>
図14は、共通初期化部1103による共通初期化処理を説明するためのフローチャートである。ここでは、共通初期化部1103を動作主体としているが、共通初期化部1103はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ1401
共通初期化部1103は、走行計画部1101と判断機能部1102の初期化を実施する。
(ii)ステップ1402
共通初期化部1103は、パーティションを有効にする。つまり、メモリ保護(空間的分離:図11)と時分割スケジューリングのデッドライン判定(時間的分離:図9)を有効にする。
なお、時分割スケジューリングは、CPUがシングルコアの場合に行われるが、CPUがマルチコアの場合には、例えば共通機能グループのプログラムと個別機能グループのプログラムを異なるコアに割り当てることにより時間分離が実現されることになる。
(iii)ステップ1403
共通初期化部1103は、現在の状況に応じた機能の実行許可イベントを発行する。
(iv)ステップ1404
共通初期化部1103は、時分割スケジューリングを開始する。具体的には、時分割制御部1110を実行するためにタイマをセットする。
<周辺認識処理1>
図15は、周辺認識1部1104による周辺認識処理を説明するためのフローチャートである。ここでは、周辺認識1部1104を動作主体としているが、周辺認識1部1104はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ1501
周辺認識1部1104は、状況A固有初期化部1105に対して、状況A固有初期化処理を実行するように命令する。なお、ステップ1501の詳細は後述する(図16参照)。
(ii)ステップ1502
状況A固有初期化処理が完了すると、周辺認識1部1104は、状況Aに適したアルゴリズムを用いて、受信した画像とポイントクラウドを解析し、周囲の状況を認識する。
(iii)ステップ1503
周辺認識1部1104は、認識結果を周辺情報としてメモリ(図示せず)に保存する。
<状況A固有初期化処理>
図16は、状況A固有初期化部1105による状況A固有初期化処理を説明するためのフローチャートである。ここでは、状況A固有初期化部1105を動作主体としているが、状況A固有初期化部1105はプログラムで実現されるので、ECUA−11を動作主体としてもよい。なお、本実施形態では、初期化処理には2種類ある。1つはエンジンを掛けたとき(ステップ15016)、もう1つは走行中に状況が変化したとき(状況Aから状況AtoBになったとき)である。
(i)ステップ15011
状況A固有初期化部1105は、パーティションが有効中であるか、即ち空間分離(メモリ保護)および時間分離(時分割スケジューリング)が有効であるか判定する。パーティションが有効中(時分割スケジューリング中(走行中))である場合(ステップ15011でYesの場合)、処理はステップ15012に移行する。パーティションが有効中でない場合(例えば、エンジンを掛けたとき:ステップ15011でNoの場合)、処理はステップ15016に移行する。
(ii)ステップ15012
状況A固有初期化部1105は、状況Aで実行される機能グループのデッドライン監視をOFFに設定する。つまり、初期化処理時には、デッドラインタスクは実行されない。
(iii)ステップ15013
状況A固有初期化部1105は、周辺認識1部1104の初期化を実施する。
(iv)ステップ15014
状況A固有初期化部1105は、実行許可イベントを待つ。待っている間、時分割スケジューリングが実行されている場合は、ディスパッチが発生する。
(v)ステップ15015
状況A固有初期化部1105は、状況Aで実行される機能グループのデッドライン監視をON(デッドライン判定を有効)にする。
(vi)ステップ15016
状況A固有初期化部1105は、周辺認識1部1104の初期化を実施する。
<周辺認識処理2>
図17は、周辺認識2部1106による周辺認識処理を説明するためのフローチャートである。ここでは、周辺認識2部1106を動作主体としているが、周辺認識2部1106はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ1701
周辺認識2部1106は、状況B固有初期化部1107に対して、状況B固有初期化処理を実行するように命令する。なお、ステップ1701の詳細は後述する(図18参照)。
(ii)ステップ1702
状況B固有初期化処理が完了すると、周辺認識2部1104は、状況Bに適したアルゴリズムを用いて、受信した画像とポイントクラウドを解析し、周囲の状況を認識する。
(iii)ステップ1703
周辺認識2部1106は、認識結果を周辺情報としてメモリ(図示せず)に保存する。
<状況B固有初期化処理>
図18は、状況B固有初期化部1107による状況B固有初期化処理を説明するためのフローチャートである。ここでは、状況B固有初期化部1107を動作主体としているが、状況B固有初期化部1107はプログラムで実現されるので、ECUA−11を動作主体としてもよい。なお、本実施形態では、初期化処理には2種類ある。1つはエンジンを掛けたとき(ステップ17016)、もう1つは走行中に状況が変化したとき(状況Bから状況AtoBになったとき)である。
(i)ステップ17011
状況B固有初期化部1107は、パーティションが有効中であるか、即ち空間分離(メモリ保護)および時間分離(時分割スケジューリング)が有効であるか判定する。パーティションが有効中(時分割スケジューリング中(走行中))である場合(ステップ15011でYesの場合)、処理はステップ17012に移行する。パーティションが有効中でない場合(例えば、エンジンを掛けたとき:ステップ17011でNoの場合)、処理はステップ17016に移行する。
(ii)ステップ17012
状況B固有初期化部1107は、状況Bで実行される機能グループのデッドライン監視をOFFに設定する。つまり、初期化処理時には、デッドラインタスクは実行されない。
(iii)ステップ17013
状況B固有初期化部1107は、周辺認識2部1106の初期化を実施する。
(iv)ステップ17014
状況B固有初期化部1107は、実行許可イベントを待つ。待っている間、時分割スケジューリングが実行されている場合は、ディスパッチが発生する。
(v)ステップ17015
状況B固有初期化部1107は、状況Bで実行される機能グループのデッドライン監視をON(デッドライン判定を有効)にする。
(vi)ステップ17016
状況B固有初期化部1107は、周辺認識2部1106の初期化を実施する。
<モード変更処理>
図19は、モード変更部1108によるモード変更処理を説明するためのフローチャートである。ここでは、モード変更部1108を動作主体としているが、モード変更部1108はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ1901
モード変更部1108は、更新準備要求が受信しているかを判定する。ECUA−11が外部(例えば、ECUB−12や図示しない各ECUを全体制御する制御装置)から受信するのは更新準備要求あるいは更新実施要求である。
更新準備要求を受信した場合(ステップ1901でYesの場合)、処理はステップ1902に移行する。更新準備要求を受信しなかった場合(ステップ1901でNoの場合:更新実施要求を受信した場合、あるいは何の要求も受信しなかった場合)、処理はステップ1905に移行する。
(ii)ステップ1902
モード変更部1108は、プログラムと設計情報を外部から受信する。本実施形態では、受信対象をプログラムとしているが、これに限らない。例えば、パラメータのみを受信し、プログラムがパラメータを変更するだけで状況変化に追従できる構成であってもよい。
(iii)ステップ1903
モード変更部1108は、パーティション更新部1109を呼び出してパーティションを変更する。ステップ1903の詳細については後述する(図20参照)。
(iv)ステップ1904
モード変更部1108は、更新機能グループを起動する。本実施形態では状況Aから状況Bに移行する例が示されているため、状況B向け機能グループが起動されることになる。
(v)ステップ1905
モード変更部1108は、更新実施要求を受信しているかを判定する。更新実施要求を受信した場合(ステップ1905でYesの場合)、処理はステップ1906に移行する。更新実施要求を受信しなかった場合(ステップ1905でNoの場合:何の要求も受信しなかった場合)、モード変更処理は終了する。
(vi)ステップ1906
モード変更部1108は、実行許可イベントを発行する。
<パーティション更新処理>
図20は、パーティション更新部1109によるパーティション更新処理(ステップ1903の詳細)を説明するためのフローチャートである。ここでは、パーティション更新部1109を動作主体としているが、パーティション更新部1109はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ19031
パーティション更新部1109は、受信したプログラムを空きメモリ領域に保存し、メモリ保護を実施する。具体的には、図11における状況AtoBのときの処理である。
(ii)ステップ19032
パーティション更新部1109はメモリ保護を実施できたかを判定する。メモリ保護ができた場合(ステップ19032でYesの場合)、処理はステップ19033に移行する。メモリ保護ができなかった場合(ステップ19032でNoの場合)、処理はステップ19036に移行する。
(iii)ステップ19033
パーティション更新部1109は、外部から送信されてきた設計情報(なお、ECU−A11内部に保持している設計情報でもよい)に基づいて、空きスロットの範囲内でスロットを設計する。例えば、空きスロットの時間から対象とするタスクの実行時間を引き、正の数である場合にはタスクの実行時間をスロットの時間とする。ただし、この方法に限定されるものではない。
(iv)ステップ19034
パーティション更新部1109は、スロット設計を実施できたか判定する。スロット設計が実施できた場合(ステップ19034でYesの場合)、処理はステップ19035に移行する。スロット設計が実施できなかった場合(ステップ19034でNoの場合)、処理はステップ19036に移行する。
(v)ステップ19035
パーティション更新部1109は、動的機能更新準備環境を示すイベントをネットワークバス13に送信する。例えば、ECU−B12や外部のサーバ(図示せず)が当該イベントを受信し、状況B走行モードの更新実施要求をECU−A11に送信する。
(vi)ステップ19036
パーティション更新部1109は、動的機能更新エラーを示すイベントをネットワークバス13に送信する。この場合、ユーザへの注意喚起のため、動的機能更新がエラーとなったことが表示部の画面上に表示されるようにしてもよい。
<時分割制御処理>
図21は、時分割制御部1110による時分割制御処理を説明するためのフローチャートである。ここでは、時分割制御部1110を動作主体としているが、時分割制御部1110はプログラムで実現されるので、ECUA−11を動作主体としてもよい。
(i)ステップ2101
時分割制御部1110は、現スロットの前のスロット(スロットIDが1つ前のスロット)の処理が終了しているか判断する。前のスロットの処理が終了している場合(ステップ2101でYesの場合:当該スロットについて最初の実行の場合)、処理はステップ2106に移行する。前のスロットの処理が終了していない場合(ステップ2101でNoの場合)、処理はステップ2102に移行する。
(ii)ステップ2102
時分割制御部1110は、対象タスクのデッドライン判定が有効であるか(デッドライン監視がONか)を判定する。デッドライン判定が有効である場合(ステップ2102でYesの場合)、処理はステップ2103に移行する。デッドライン判定が無効である場合(ステップ2102でNoの場合)、処理はステップ2104に移行する。
(iii)ステップ2103
時分割制御部1110は、前スロットにおける未終了の処理を強制停止させる。スロットの終端に来たにも拘らず処理が終了していないときには、そのままその未了の処理を実行し続けると次の処理のために使うCPU(プロセッサ)を使ってしまう。また、この段階ではパーティショニングがされていないため、未終了の処理を強制終了させる。例えば、状況AtoBになったとき、最初は初期化処理が実行されるが、初期化処理は、図6に示されるように、通常の処理も処理時間が長くなることが多い。このため、初期化処理が実行周期(例えば、50ms)の間に終了しないことがある。この未終了という事象は処理が異常であったから発生したわけではないため、未終了の処理は強制停止されることになる。
(iv)ステップ2104
時分割制御部1110は、前スロットにおける未終了の処理を異常停止させる(例えば、デッドラインオーバしてしまったため、異常と判断し処理を停止させる)。
(v)ステップ2105
時分割制御部1110は、デッドラインミスを通知するイベントをネットワークバス13に送信する。これにより、例えば、他のECU(ECU−B12)や各ECUの全体制御を実行する制御装置は、異常停止のタスクを認識することができる。
(vi)ステップ2106
時分割制御部1110は、スロット設計表に基づいて次のスロットで実行する特定のタスクを指定スケジューリングで起動する。前回強制停止の場合には、時分割制御部1110は、強制終了したタスクを再開する。ただし、前回異常停止の場合にはタスクを再度起動しない。
(vii)ステップ2107
時分割制御部1110は、次のスロットの終了時間に時分割制御部1110を起動するタイマをセットする。
<画面表示処理>
図22は、ECU−B12の画面表示部1201より画面表示処理を説明するためのフローチャートである。ここでは、画面表示部1201を動作主体としているが、画面表示部1201はプログラムで実現されるので、ECU−B12を動作主体としてもよい。
(i)ステップ2201
画面表示部1201は、ECU−A11の時分割制御部1110から受信したデッドラインミスイベントに基づいて画面にエラーを表示する。
(ii)ステップ2202
画面表示部1201は、ECU−A11のパーティション更新部1109から受信した動的機能更新エラーイベントに基づいて画面にエラーを表示する。
本実施形態ではエラー時に画面表示を行っているが、これに限らない。システムを安全に停止するようなフェールセーフを行ってもよい。また、図示しないサーバにこれを通知し、再度実行してもよいが、これに限られるわけではない。
<更新準備指示処理>
図23は、ECU−B12の更新準備指示部1202による更新準備指示処理を説明するためのフローチャートである。ここでは、更新準備指示部1202を動作主体としているが、更新準備指示部1202はプログラムで実現されるので、ECU−B12を動作主体としてもよい。
(i)ステップ2301
更新準備指示部1202は、状況が遷移状態(境界)にあるとき(例えば、状況AtoBのとき、あるいは状況BtoAのとき)に、更新準備要求をネットワークバス13に送信する。
(ii)ステップ2302
更新準備指示部1202は、ネットワークバス13を介して更新プログラムと設計情報をECU−A11に送信し、ECU−A11がそれらを利用できるようにする。
<更新実施指示処理>
図24は、ECU−B12の更新実施指示部1203による更新実施指示処理を説明するためのフローチャートである。ここでは、更新実施指示部1203を動作主体としているが、更新実施指示部1203はプログラムで実現されるので、ECU−B12を動作主体としてもよい。
(i)ステップ2401
更新実施指示部1203は、動的機能更新準備の完了イベントを受信したかを判定する。動的機能更新準備の完了イベントを受信している場合(ステップ2401でYesの場合)、処理はステップ2402に移行する。動的機能更新準備の完了イベントを受信していない場合(ステップ2401でNoの場合)、更新実施指示処理は終了する。
(ii)ステップ2402
更新実施指示部1203は、状況が切り替わったとき(例えば、状況AtoBから状況Bに切り替わったとき、あるいは状況BtoAから状況Aに切り替わったとき)に、ネットワークバス13を介して更新実施要求をECU−A11に送信する。
<第1の実施形態のまとめ>
第1の本実施形態によれば、機能グループ単位で更新が可能となるため、ハードウェアリソースを節約できる。また、状況に応じて適した機能グループを選択し、車両走行が可能となるため、安全で快適な走行が可能となる。
(2)第2の実施形態
<更新機能グループのタスク情報とタスク構成>
図25は、第2の実施形態の、状況AtoB02における更新機能グループのタスク情報2112と状況B03におけるタスク情報2114の例を示す図である。構成項目は第1の実施形態と同様である。なお、図25では、状況Aのタスク情報は第1の実施形態と同じであるため、省略されている(図5参照)。
(i)状況AtoB02において、タスク情報2112のタスク名21121は、実行する機能のタスクの名称を示している。例えば、周辺認識2タスクは周辺認識2部1106を実行する。
タスクID21122は、タスクを識別可能なIDを示す。実行周期21123はタスクを起動する周期を示す。単位はミリ秒である。
タスク優先度21124は、タスクの優先度を示す。ただし、スケジューリングがEDF(Earliest Deadline First)の場合には、タスク優先度は設定されない(表には数値は入力されない)。通常の実行時間21125は、初期化処理終了後の通常タスクの実行時間を示す。初期化実行時間21126は、初期化処理の実行時間を示す。
機能グループ21127は、タスクが所属する機能グループを示す。状況B向け機能グループは状況Bで実行される機能グループを意味する。スケジューリング21118は、タスクが実行されるスケジューリングポリシーを示す。
第2の実施形態では、第1の実施形態と比べて、初期化実行時間21126が短く設定されている。
(ii)状況B03において、第2の実施形態に係る更新後(状況B03)のタスク構成2114におけるタスク名21141は、実行する機能をタスクの名称を示している。例えば、走行計画タスクは走行計画部1101を、判断機能タスクは判断機能部1102を、周辺認識2タスクは周辺認識2部1106を、モード変更タスクはモード変更部1108を、それぞれ実行する。
タスクID21142は、タスクを識別可能なIDを示す。実行周期21143は、タスクを起動する周期を示す。単位はミリ秒である。タスク優先度21144は、タスクの優先度を示す。
通常の実行時間21145は、初期化終了後の通常タスクの実行時間を示す。初期化実行時間21146は、初期化処理の実行時間を示す。第2の実施形態では通常実行時間と初期化実行時間を、最長の実行時間を設定することを想定しているが、これに限らない。例えば、最長の実行時間にマージンを加えたものであってもよい。ただし、これに限られるわけではない。
機能グループ21147は、タスクが所属する機能グループを示す。スケジューリング21148は、タスクが実行されるスケジューリングポリシーを示す。
<スロット設計>
図26は、第2の実施形態によるスロット設計の例を示す図である。構成項目は第1の実施形態と同様である。以下、各状況に対応したスロット設計について説明する。
(i)状況A01において、スロット設計表2115のスロットID21151は、スロットを識別可能なIDを示す。開始時間21152は、スロットと定めた時間の開始時刻を示す。終了時刻21153は、スロットと定めた時刻の終了時刻を示す。実行対象21154は、該当のスロットで実行許可されている機能グループを示す。
(ii)状況AtoB02において、スロット設計表2116のスロットID21161は、スロットを識別可能なIDを示す。開始時間21162は、スロットと定めた時間の開始時刻を示す。終了時刻21163は、スロットと定めた時刻の終了時刻を示す。実行対象21164は、該当のスロットで実行許可されている機能グループを示す。
(iii)状況B03において、スロット設計表2117のスロットID21171は、スロットを識別可能なIDを示す。開始時間21172はスロットと定めた時間の開始時刻を示す。終了時刻21173はスロットと定めた時刻の終了時刻を示す。実行対象21174は該当のスロットで実行許可されている機能グループを示す。実施の形態2は実施の形態1の差は、状況AtoB02において状態B向け機能グループが実行されていない点である。
<タスクスケジューリング>
図27は、第2の実施形態によるタスクスケジューリングの例を示す図である。以下、各状況に対応したタスクスケジューリングについて説明する。
(i)状況A走行モード0021では、ID=1のスロットにおいて、ID=1および2のタスクが実行される。また、ID=2のスロットにおいて、ID=3のタスクが実行される。さらに、ID=3のスロットにおいて、ID=5のタスクが実行される。システム周期21150は50msに設定されている。
(ii)状況AtoB機能更新モード0022では、ID=1のスロットにおいて、ID=1および2のタスクが実行される。また、ID=2のスロットにおいて、ID=3のタスクが実行される。さらに、ID=3のスロットにおいて、ID=5のタスクが実行される。この場合も、システム周期11165は50msに設定されている。
(iii)状況B走行モード0023では、ID=1のスロットにおいて、ID=1および2のタスクが実行される。また、ID=2のスロットにおいて、ID=4のタスクが実行される。この場合も、システム周期11175は50msn設定されている。
<第2の実施形態のまとめ>
第2の実施形態によれば、異なる状況における同じスロットの時間において、異なる機能グループを動作させることが可能となる、したがって、ハードウェアリソースを節約できる。また、初期化処理の時間が短い際にはデッドラインを有効のまま、機能更新が可能になり、煩雑な設計を回避可能となる。
(3)変形例
第1および第2の実施形態によると、シングルコアにおいてタイムパーティションを実現するために時分割スケジューリングを使用したが、これに限らない。例えば、マルチコアシステムにおいて、継続する機能グループと更新する機能グループを異なるコアで実行させることで、タイムパーティショニングを実現してもよい。この場合、第1および第2の実施形態と同様にメモリ保護は必要となり、モード変更部1108は継続する機能グループと同様のコアで実行され、他のコアの機能グループを更新することとなる。
(4)総括
(i)本実施形態によれば、車両制御システムの制御コントローラ(ECU−A)は、複数の機能を予め決められた機能グループの単位で管理し、実行する。当該制御コントローラ(ECU−A)は、動的に機能グループ単位を変更し(パーティション更新部)、制御コントローラの外部(別のECU(ECU−B)や図示しないサーバ)から、システムの稼働環境の変化に応じて機能グループの変更を指示する機能グループ変更実施要求を受信し、当該機能グループ変更実施要求に応答して、パーティション更新(変更)された機能グループの実行を許可する(モード変更部)ように構成されている。これにより、状況変化を検知した外部のECUやサーバからの指令にと応答してシステムの機能を変更することができ、システムの可用性と安全性を担保することができる。
また、制御コントローラ(ECU−Aのモード変更部)は、機能グループ変更実施要求を受信する前に、外部(別のECU(ECU−B)、図示しない車両制御システム内の全体制御装置やサーバ)から、機能グループの変更の準備を要求する機能グループ変更準備要求を受信し、当該機能グループ変更準備要求に応答して、外部(別のECU(ECU−B)、図示しない車両制御システム内の全体制御装置やサーバ)から変更すべき事項が記述された変更情報を取得し、当該変更情報に基づいて、機能グループのパーティションの変更を実行する(機能グループのパーティショニングの再設定)。このように、状況が変化してから機能グループの構成を変更するのではなく、状況変化が起こりつつある状態で機能グループの構成の変更を開始するので、実際に状況が変化した段階では即座に変化した状況に対応したシステムの機能に遷移することが可能となる。
(ii)本実施形態では、ECU−Aにおいて、空間分離および時間分離に基づいて、複数の機能のパーティショニングが実行される。具体的には、ECU−Aは、例えば、空間分離として機能グループ単位に使用するメモリ空間を別にし、時間分離として、機能グループ単位に実行する時間を別にするように構成されている。このように空間分離および時間分離によってパーティショニングを実行することにより、スロット設計の自由度を高くすることができ、ハードウェアリソースを有効に活用することができるようになる。
さらに、具体的には、機能グループは、少なくとも、複数の状況において共通に実行される機能である共通機能グループと状況に応じて実行される機能が異なる個別機能グループとを含む。そして、空間分離において、共通機能グループのメモリアドレス空間と個別機能グループのメモリアドレス空間が区別されており、共通機能グループと個別機能グループとの間のメモリ領域は共有メモリ空間を介して構成される。共通機能グループは、車両制御システムの安全性を保証する処理を実行する機能であり、個別機能グループは、車両制御システムの可用性を向上させる処理を実行する機能である。
時間分離の実現に関しては、制御コントローラにおけるプロセッサ構成をシングルコアやマルチコアとすることができる。前者の場合、時分割スケジューリングによってタイムパーティションジングが実現される。この場合、制御コントローラは、機能グループ毎にスロット(各機能に相当するタスクを実行するためのタイムスロット)を割り当てる(時分割制御部)。一方、後者の場合、共通機能グループと個別機能グループとを異なるコアプロセッサで実行し、時間分離を実現する。
(iii)時間分離でパーティショニングされる場合、制御コントローラ(ECU−A)は、更新対象である個別機能グループに含まれるタスクを更新している間に、更新対象以外の共通機能グループに含まれるタスクの処理を継続的に実行する。このようにすることにより、他のプログラムの動作に影響を与えず、状況変化に伴うシステム更新(変更)を実現することができるようになる。
(iv)時分割制御の場合、制御コントローラ(ECU−A:モード変更部)は、時分割制御によって機能グループに割り当てられているスロット以外のスロットで、パーティションを更新(パーティション更新部)した後に、更新機能グループを起動する。確実にスロットを割り当てた後に更新された機能を実行するので、システムの安全性を担保することができる。
(v)空間分離の場合、個別機能グループに対しては、実行、書き込み、および読み出しが可能となるようにメモリ空間が割り当てられ、共通機能グループやシステムグループに対しては、個別機能グループに割り当てられたメモリ空間からの読み出しが可能となるようにメモリ空間が設定される。このようにメモリ空間を設定することにより、メモリを保護することができ、システム稼働の安定性を実現することができる。
なお、機能グループ単位でのメモリ空間の割り当てとスロットの割り当てに失敗した場合に、制御コントローラ(ECU−A)は、動的機能更新エラーを示すイベントを生成し、ネットワークへ出力する。これにより、状況変化に伴うパーティショニング更新が正常に終了したかを監視することができるようになる。
(vi)時分割制御を実行する際に、機能グループに含まれるタスクについてデッドライン判定が有効であり、かつスロットの終了時に当該スロットに割り当てられたタスクが未終了の場合、制御コントローラ(ECU−A:時分割制御部)は、当該未終了のタスクを異常停止させ、デッドラインミスイベントを生成し、出力する。これにより、タスク処理が完了していない場合でも異常によって完了していないのか、あるいは単なる遅延で完了していないのか判断することができ、処理遅延に対して適切に対処することができる。
(vii)本実施形態は、ソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本開示を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
さらに、実施形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本開示は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本開示を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
加えて、本技術分野の通常の知識を有する者には、本開示のその他の実装がここに開示された本開示の明細書及び実施形態の考察から明らかになる。記述された実施形態の多様な態様及び/又はコンポーネントは、データを管理する機能を有するコンピュータ化ストレージシステムに於いて、単独又は如何なる組み合わせでも使用することが出来る。明細書と具体例は典型的なものに過ぎず、本開示の範囲と精神は後続する請求の範囲で示される。
01 状況A
02 状況AtoB
03 状況B
11 ECU−A
12 ECU−B
1101 走行計画部
1102 判断機能部
1103 共通初期化部
1104 周辺認識1部
1105 状況A固有初期化部
1106 周辺認識2部
1107 状況B固有初期化部
1108 モード変更部
1109 パーティション更新部
1110 時分割制御部
1201 画面表示部
1202 更新準備指示部
1203 更新実施指示部

Claims (18)

  1. 複数の機能を予め決められた機能グループの単位で管理し、実行する制御コントローラであって、
    動的に機能グループ単位を変更するパーティション更新部と、
    前記制御コントローラの外部から、システムの稼働環境の変化に応じて機能グループの変更を指示する機能グループ変更実施要求を受信し、当該機能グループ変更実施要求に応答して、前記パーティション更新部によって変更された前記機能グループの実行を許可するモード変更部と、を備え
    前記パーティション更新部は、前記機能グループ単位に使用するメモリ空間を別にする空間分離と前記機能グループ単位に実行する時間を別にする時間分離とに基づいて、前記複数の機能のパーティショニングを実行する、制御コントローラ。
  2. 請求項1において、
    前記モード変更部は、前記機能グループ変更実施要求を受信する前に、前記制御コントローラの外部から、前記機能グループの変更の準備を要求する機能グループ変更準備要求を受信し、当該機能グループ変更準備要求に応答して、前記制御コントローラの外部から変更すべき事項が記述された変更情報を取得し、前記パーティション更新部に前記機能グループのパーティションの変更を指示し、
    前記パーティション更新部は、前記変更情報に基づいて、前記機能グループのパーティショニングを再設定する、制御コントローラ。
  3. 請求項において、
    前記機能グループは、少なくとも、複数の状況において共通に実行される機能である共通機能グループと状況に応じて実行される機能が異なる個別機能グループとを含む、制御コントローラ。
  4. 請求項において、
    前記空間分離において、前記共通機能グループのメモリアドレス空間と前記個別機能グループのメモリアドレス空間が区別されており、前記共通機能グループと前記個別機能グループとの間のメモリ領域は共有メモリ空間を介して構成される、制御コントローラ。
  5. 請求項において、
    前記制御コントローラは、シングルコアプロセッサで構成され、
    前記パーティション更新部は、前記時間分離として、時分割スケジューリングによってタイムパーティショニングを実現し、
    前記制御コントローラは、さらに、前記機能グループ毎にスロットを割り当てる時分割制御部を備える、制御コントローラ。
  6. 請求項において、
    前記制御コントローラは、マルチコアプロセッサで構成され、
    前記共通機能グループと前記個別機能グループとは異なるコアプロセッサで実行される、制御コントローラ。
  7. 請求項において、
    前記制御コントローラに含まれるプロセッサは、更新対象である前記個別機能グループに含まれるタスクを更新している間に、更新対象以外の前記共通機能グループに含まれるタスクの処理を継続的に実行する、制御コントローラ。
  8. 請求項において、
    前記モード変更部は、前記時分割制御部によって前記機能グループに割り当てられているスロット以外のスロットで、前記パーティション更新部にパーティション変更を指示し、前記パーティション更新部によるパーティション更新後、更新機能グループを起動する、制御コントローラ。
  9. 請求項において、
    前記パーティション更新部は、前記個別機能グループに対しては、実行、書き込み、および読み出しが可能となるように前記メモリ空間を割り当て、少なくとも前記共通機能グループに対しては、前記個別機能グループに割り当てられた前記メモリ空間からの読み出しが可能となるように前記メモリ空間を設定する、制御コントローラ。
  10. 請求項において、
    前記パーティション更新部は、前記機能グループ単位でのメモリ空間の割り当てとスロットの割り当てに失敗した場合に、動的機能更新エラーを示すイベントを生成し、出力する、制御コントローラ。
  11. 請求項において、
    前記機能グループに含まれるタスクについてデッドライン判定が有効であり、かつ前記スロットの終了時に当該スロットに割り当てられた前記タスクが未終了の場合、前記時分割制御部は、当該未終了のタスクを異常停止させ、デッドラインミスイベントを生成し、出力する、制御コントローラ。
  12. 請求項において、
    前記個別機能グループは、当該個別機能グループに含まれるタスクの初期化処理を実行する初期化処理部を含み、
    前記初期化処理部は、前記初期化処理を実行する場合には、前記タスクのデッドライン判定を無効にし、当該タスクの初期化処理を完了させた後に前記デッドライン判定を有効にする、制御コントローラ。
  13. 請求項において、
    前記共通機能グループは、車両制御システムの安全性を保証する処理を実行する機能であり、
    前記個別機能グループは、前記車両制御システムの可用性を向上させる処理を実行する機能である、制御コントローラ。
  14. 第1の制御コントローラと、
    第2の制御コントローラと、を備え、
    前記第1の制御コントローラは、請求項1に記載の制御コントローラであり、
    前記第2の制御コントローラは、前記機能グループ変更実施要求を発行し、前記第1の制御コントローラに送信する、車両制御システム。
  15. 請求項1において、
    前記第2の制御コントローラは、前記機能グループ変更実施要求を発行する前に、前記
    機能グループの変更の準備を要求する機能グループ変更準備要求を発行して前記第1の制御コントローラに送信し、
    前記第1の制御コントローラの前記モード変更部は、前記第2の制御コントローラから、前記機能グループ変更準備要求を受信し、当該機能グループ変更準備要求に応答して、前記制御コントローラの外部から変更すべき事項が記述された変更情報を取得し、前記パーティション更新部に前記機能グループのパーティションの変更を指示し、
    前記第1の制御コントローラの前記パーティション更新部は、前記変更情報に基づいて、前記機能グループのパーティショニングを再設定する、車両制御システム。
  16. 請求項1において、
    前記パーティション更新部は、空間分離および時間分離に基づいて、前記複数の機能のパーティショニングを実行する、車両制御システム。
  17. 請求項1において、
    前記第1の制御コントローラは、第1の機能の処理を実行しつつ、当該第1の機能とは異なる第2の機能を更新する、車両制御システム。
  18. 請求項1において、
    前記機能グループは、少なくとも、複数の状況において共通に実行される機能である共通機能グループと状況に応じて実行される機能が異なる個別機能グループとを含み、
    前記第1の制御コントローラは、第1の状況に応じた第1の機能グループの処理を実行しつつ、前記第1の状況とは異なる第2の状況に応じた第2の機能グループの処理を更新する、車両制御システム。
JP2020525010A 2018-06-13 2018-06-13 制御コントローラおよび車両制御システム Active JP6975854B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/022599 WO2019239522A1 (ja) 2018-06-13 2018-06-13 制御コントローラおよび車両制御システム

Publications (2)

Publication Number Publication Date
JPWO2019239522A1 JPWO2019239522A1 (ja) 2021-06-03
JP6975854B2 true JP6975854B2 (ja) 2021-12-01

Family

ID=68843080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020525010A Active JP6975854B2 (ja) 2018-06-13 2018-06-13 制御コントローラおよび車両制御システム

Country Status (4)

Country Link
US (1) US11934865B2 (ja)
EP (1) EP3809263A4 (ja)
JP (1) JP6975854B2 (ja)
WO (1) WO2019239522A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7123843B2 (ja) * 2019-03-29 2022-08-23 日立Astemo株式会社 演算装置、判定方法
JP7547949B2 (ja) * 2020-11-10 2024-09-10 トヨタ自動車株式会社 情報処理装置、方法、プログラム、及び車両
WO2022218510A1 (en) * 2021-04-13 2022-10-20 Cariad Se Method for scheduling software tasks on at least one heterogeneous processing system using a backend computer system, wherein each processing system is situated in a respective vehicle of a vehicle fleet, and control framework for at least one vehicle

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4399987B2 (ja) 2001-01-25 2010-01-20 株式会社デンソー 車両統合制御におけるフェイルセーフシステム
JP2010190673A (ja) 2009-02-17 2010-09-02 Toyota Motor Corp 車両用仕様変更装置
JP5373862B2 (ja) 2011-07-22 2013-12-18 株式会社日立製作所 信号保安システム及び車上信号装置
JP6683566B2 (ja) 2016-07-29 2020-04-22 日本電信電話株式会社 通信装置、設計方法及びコンピュータプログラム
US11300958B2 (en) * 2017-07-13 2022-04-12 Waymo Llc Sensor adjustment based on vehicle motion

Also Published As

Publication number Publication date
WO2019239522A1 (ja) 2019-12-19
EP3809263A4 (en) 2021-12-29
JPWO2019239522A1 (ja) 2021-06-03
US20210216361A1 (en) 2021-07-15
EP3809263A1 (en) 2021-04-21
US11934865B2 (en) 2024-03-19

Similar Documents

Publication Publication Date Title
JP6975854B2 (ja) 制御コントローラおよび車両制御システム
CN109997112B (zh) 数据处理
US8595746B2 (en) Method and apparatus for scheduling tasks to control hardware devices
JP4345630B2 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
JP2007011491A (ja) 情報端末、計算機資源管理方法、および仮想マシンの実行切り替え方法
JP2000194674A (ja) 分散ジョブ統合管理システム
CN112052068A (zh) 一种Kubernetes容器平台CPU绑核的方法与装置
JP5458998B2 (ja) 仮想マシンシステムおよび仮想マシン管理方法
WO2007072544A1 (ja) 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム
WO2020208954A1 (ja) 車載コンピュータ、車載通信システム、コンピュータ実行方法及びコンピュータプログラム
CN113849264A (zh) 用于编排终端设备上的基于容器的应用的方法
JPH0816410A (ja) スケジュール制御装置とその方法
EP2833264B1 (en) Virtual computer schedule method
WO2022138218A1 (ja) 車載コンピュータ、コンピュータ実行方法及びコンピュータプログラム
WO2018127394A1 (en) Scalable control system for a motor vehicle
JP6796040B2 (ja) アクセス制御装置
JP6836536B2 (ja) ストレージシステム及びio処理の制御方法
JP2013041361A (ja) リソース調停システム及び調停方法
JP3524961B2 (ja) マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
JP7447781B2 (ja) 車載コンピュータ、コンピュータ実行方法及びコンピュータプログラム
US20240303103A1 (en) Vehicle-mounted computer, computer execution method, and computer program
CN104714924B (zh) 一种资源控制方法和装置
JP2019040325A (ja) 電源管理装置,ノード電源管理方法およびノード電源管理プログラム
Meier et al. Enhancing Task Assignment in Many-Core Systems by a Situation Aware Scheduler
CN113900807A (zh) 端口分配方法、装置和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211014

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: 20211026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211108

R150 Certificate of patent or registration of utility model

Ref document number: 6975854

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150