IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウーブン・プラネット・ホールディングス株式会社の特許一覧

特許7518931条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法
<>
  • 特許-条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法 図1
  • 特許-条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法 図2
  • 特許-条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法 図3
  • 特許-条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法 図4
  • 特許-条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-09
(45)【発行日】2024-07-18
(54)【発明の名称】条件付きブレークポイントを有する自律運転アプリケーションをデバッグするための装置と方法
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240710BHJP
【FI】
G06F11/36 136
【請求項の数】 18
【外国語出願】
(21)【出願番号】P 2023006818
(22)【出願日】2023-01-19
(65)【公開番号】P2023129257
(43)【公開日】2023-09-14
【審査請求日】2023-01-19
(31)【優先権主張番号】17/686,500
(32)【優先日】2022-03-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521042770
【氏名又は名称】ウーブン・バイ・トヨタ株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100120499
【弁理士】
【氏名又は名称】平山 淳
(72)【発明者】
【氏名】孫 林玉
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許出願公開第2015/0121346(US,A1)
【文献】米国特許出願公開第2007/0168994(US,A1)
【文献】特表2018-538583(JP,A)
【文献】米国特許出願公開第2013/0318504(US,A1)
【文献】米国特許第08578340(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
自律運転のアプリケーションをデバッグするための方法であって、
前記アプリケーションのソースコードのラインにおいてラインブレークポイントを設定することと、
前記アプリケーションを実行するシミュレータのシミュレーションデータに対する誘発条件を設定することと、
前記アプリケーションをデバッグするためにデバッガにより前記アプリケーションを作動させることと、
前記ラインブレークポイントに到達したこと、および前記誘発条件が満たされたことに基づいて、前記デバッガによる前記アプリケーションの前記作動を一時停止することを備えていることを特徴とし、
前記シミュレーションデータは、前記シミュレータにより生成されたログデータであり、前記誘発条件は、前記ログデータのタイムラインにおけるログブレークポイントであり、
前記誘発条件を前記設定することは、前記ログデータを再生するためのログプレーヤを介して前記誘発条件を設定することを備えていることを特徴とする方法。
【請求項2】
前記アプリケーションの前記作動を前記一時停止することは、
前記ログブレークポイントに到達したことに基づいて、前記ログプレーヤによる前記ログデータの再生を一時停止すること、および前記デバッガに通知を送ることと、
前記通知が前記デバッガにより受信されたことに基づいて、前記ラインブレークポイントで前記デバッガによる前記アプリケーションの前記作動を一時停止することを備えていることを特徴とする請求項1の方法。
【請求項3】
前記通知が前記デバッガにより受信されたことに応答して、前記デバッガは、前記ラインブレークポイントを調べることを開始することを特徴とする請求項2の方法。
【請求項4】
前記ログプレーヤにより前記ログデータを再生することを更に備え、
前記ログプレーヤにより前記ログデータを前記再生することは、ログデータを前記デバッガに送ること、および前記ログブレークポイントに対して、前記再生されたログデータを調べることを備えていることを特徴とする請求項1~3のいずれか1項の方法。
【請求項5】
前記ログブレークポイントは、前記ログプレーヤのタイムラインまたはプレイバーにおいて設定されることを特徴とする請求項1~3のいずれか1項の方法。
【請求項6】
前記誘発条件は、前記シミュレータにおけるシミュレーション条件であり、
前記誘発条件を前記設定することは、前記シミュレータにおいて前記誘発条件を設定することを備えていることを特徴とする請求項1~3のいずれか1項の方法。
【請求項7】
前記アプリケーションの前記作動を前記一時停止することは、
前記シミュレータが前記アプリケーションを実行している間に前記シミュレーション条件が満たされたことに基づいて、前記シミュレータを一時停止すること、および通知を前記デバッガに送ることと、
前記通知と、前記ラインブレークポイントに到達したことに基づいて、前記デバッガによる前記アプリケーションの前記作動を一時停止することを備えていることを特徴とする請求項6の方法。
【請求項8】
前記通知が前記デバッガにより受信されたことに応答して、前記デバッガは、前記ラインブレークポイントを調べることを開始することを特徴とする請求項7の方法。
【請求項9】
前記シミュレータにより前記アプリケーションを実行することを更に備え、
前記シミュレータにより前記アプリケーションを前記実行することは、前記シミュレーション条件を調べることを備えていることを特徴とする請求項6の方法。
【請求項10】
前記シミュレーション条件は、エゴ車両と対象物との間の衝突までの時間が特別な閾値未満であること、特別なモデルまたは対象物の故障、前記エゴ車両と対象物または車線との間の距離が所定の値未満であること、エゴ車両の速度が特別な値を超えていること、およびエゴ車両の加速度が特別な値を超えていることの1つであることを特徴とする請求項6の方法。
【請求項11】
自律運転のアプリケーションをデバッグするための装置であって、
少なくとも1つの命令を格納しているメモリと、
プロセッサを備え、前記プロセッサは、
前記アプリケーションのソースコードのラインにおいてラインブレークポイントを設定し、
前記アプリケーションを実行するシミュレータのシミュレーションデータ対する誘発条件を設定し、
前記アプリケーションをデバッグするためにデバッガにより前記アプリケーションを作動させ、
前記ラインブレークポイントに到達したこと、および前記誘発条件が満たされたことに基づいて、デバッガによる前記アプリケーションの作動を一時停止するために、前記少なくとも1つの命令を実行するように構成され、
前記シミュレーションデータは、前記シミュレータにより生成されたログデータであり、前記誘発条件は、前記ログデータのタイムラインにおけるログブレークポイントであり、
前記プロセッサは、前記ログデータを再生するためのログプレーヤを介して前記誘発条件を設定するために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする装置。
【請求項12】
前記プロセッサは、
前記ログブレークポイントに到達したことに基づいて、前記ログプレーヤによる前記ログデータの再生を一時停止し、通知をデバッガに送り、
前記通知が前記デバッガにより受信されたことに基づいて、前記ラインブレークポイントにおいて前記デバッガによる前記アプリケーションの前記作動を一時停止するために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする請求項11の装置。
【請求項13】
前記プロセッサは、前記通知が前記デバッガにより受信されたことに応答して、前記ラインブレークポイントを調べることを開始するように前記デバッガを制御するために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする請求項12の装置。
【請求項14】
前記プロセッサは、前記ログプレーヤにより前記ログデータを再生し、前記デバッガに前記ログプレーヤからログデータを送り、前記ログブレークポイントに対して、前記再生されたログデータを調べるために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする請求項11~13のいずれか1項の装置。
【請求項15】
前記ログブレークポイントは、前記ログプレーヤのタイムラインまたはプレイバーにおいて設定されることを特徴とする請求項11~13のいずれか1項の装置。
【請求項16】
前記誘発条件は、前記シミュレータにおけるシミュレーション条件であり、
前記プロセッサは、前記シミュレータにおいて前記誘発条件を設定するために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする請求項1~13のいずれか1項の装置。
【請求項17】
前記プロセッサは、
前記シミュレータが前記アプリケーションを実行している間に前記シミュレーション条件が満たされたことに基づいて前記シミュレータを一時停止し、通知を前記デバッガに送り、
前記通知と、前記ラインブレークポイントに到達したことに基づいて、前記デバッガによる前記アプリケーションの前記作動を一時停止するために、前記少なくとも1つの命令を実行するように構成されていることを特徴とする請求項16の装置。
【請求項18】
命令を格納している非一時的コンピュータ読み取り可能媒体であって、前記命令は1つ以上の命令を備え、前記1つ以上の命令は、装置の1つ以上のプロセッサにより実行されると前記1つ以上のプロセッサに、
自律運転のアプリケーションをデバッグするために、デバッガにより該アプリケーションを作動させ、
前記アプリケーションのソースコードのラインにおいて設定されたラインブレークポイントに到達したこと、および前記アプリケーションを実行するシミュレータのシミュレーションデータに対して設定された誘発条件が満たされたことに基づいて、デバッガによる前記アプリケーションの作動を一時停止させ、
前記シミュレーションデータは、前記シミュレータにより生成されたログデータであり、前記誘発条件は、前記ログデータのタイムラインにおけるログブレークポイントであり、
前記誘発条件は、前記ログデータを再生するためのログプレーヤを介して設定されることを特徴とする非一時的コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、自律運転アプリケーションをデバッグすることに関し、特には、条件が満たされたことに基づいて、デバッガにおけるブレークポイントを誘発することにより自律運転アプリケーションをデバッグすることに関する。
【背景技術】
【0002】
所与の自律運転シミュレータは、自律運転車両における使用のための、エゴ車両を制御する自律運転スタックまたは、カメラ画像から周囲の対象物を検出する知覚アプリケーションなどのような特別なアプリケーションをテストするために種々のシミュレーションモデルを使用する。関連する技術の自律運転シミュレーションシステムは、コアシミュレータ、車両シミュレータ、および1つ以上のセンサシミュレータを含んでいる。コアシミュレータを介して、アクタとそれらの動きと共に、シミュレーションの仮想世界を定義できる。車両シミュレータは、自律運転車両(エゴ車両)をシミュレートし、周囲の対象物に基づいて、車両の位置を制御するための車両コントローラを含んでいる。センサシミュレータは、エゴ車両の種々のセンサをシミュレートし、仮想世界におけるエゴ車両の周囲の画像を取り込むためのカメラセンサモデルを含んでいる。コアシミュレータが、アプリケーションをテストするために作動されている間に、ログデータがシミュレータにより生成される。このログデータはその後、デバッガとの連携においてアプリケーションをデバッグするためにログプレーヤにより再生される。
【0003】
典型的に、ユーザは、ソースコードの特別なラインにブレークポイント、つまりラインブレークポイントを設定するためにデバッガを使用できる。アプリケーションをデバッグする際に、例えば、アプリケーションをデバッグモードで実行する際に、デバッガは、実行が、ブレークポイントが設定されているラインに到達するとシミュレーションを中断する。これにより、ユーザが、アプリケーションを少しずつ進んでいくこと、および/または、アプリケーションを遡ることと共に、変数値、プログラムパラメータ、およびコールスタックを解析することなどのように、種々のデバッグステップの何れのステップをも実行することを可能にする。
【発明の概要】
【0004】
しかし、自律運転シミュレーションのためのコアシミュレータの状況においては、大量のシリアルデータが生成される。これは、シミュレーションの一回の実行に対して、数万ものフレームという範囲になり得る。再生するとき、デバッガは、それぞれの箇所、つまりシリアルデータのすべてのフレームにおけるラインブレークポイントで停止する。これは、冗長、不便、且つ現実的でないデバッグという結果になり、ユーザが特定のフレーム(例えば、衝突が起こる直前のフレーム、または、特別の項目が誤作動する直前のフレーム)におけるプログラムパラメータまたは変数を解析することに関心があるときは特にそうである。その特定のフレームに到達するためには、ユーザはその前の各フレームにおけるブレークポイントをひとつひとつ進まなければならなくなる。更に、ユーザが関心のあるフレームで実行を手動で中断しようとしても、ユーザがログデータを解析したいと所望するコードの正確なラインでの中断を正確に計時することはほぼ不可能である。
【0005】
本開示は、条件が満たされたことに基づいてデバッガにおいてブレークポイントを誘発することにより、自律運転アプリケーションをデバッグするための方法と装置を提供する。
【0006】
開示の態様は、自律運転アプリケーションをデバッグするための方法を提供する。方法は、アプリケーションのソースコードのラインにおいてラインブレークポイントを設定することと、アプリケーションを実行するシミュレータのシミュレーションデータに対する誘発条件を設定することと、アプリケーションをデバッグするためにデバッガによりアプリケーションを作動させることと、ラインブレークポイントに到達したことと、誘発条件が満たされたことに基づいて、デバッガによるアプリケーションの作動を一時停止することを含むことができる。
【0007】
シミュレーションデータは、シミュレータにより生成されたログデータであってよく、誘発条件は、ログデータのタイムラインにおけるログブレークポイントであってよい。
【0008】
誘発条件を設定することは、ログデータを再生するためのログプレーヤを介して誘発条件を設定することを含むことができる。
【0009】
アプリケーションの作動を一時停止することは、ログブレークポイントに到達したことに基づいて、ログプレーヤによるログデータの再生を一時停止すること、およびデバッガに通知を送ることと、通知がデバッガにより受信されたことに基づいて、そのラインブレークポイントでデバッガによるアプリケーションの作動を一時停止することを含むことができる。
【0010】
通知がデバッガにより受信されたことに応答して、デバッガは、ラインブレークポイントを調べることを開始できる。
【0011】
方法は更に、ログプレーヤによりログデータを再生することを含むことができる。ログプレーヤによりログデータを再生することは、ログデータをデバッガに送ること、およびログブレークポイントに対して、再生されたログデータを調べることを備えている。
【0012】
ログブレークポイントは、ログプレーヤのタイムラインまたはプレイバーにおいて設定できる。
【0013】
誘発条件は、シミュレータにおけるシミュレーション条件であってよく、誘発条件を設定することは、シミュレータにおいて誘発条件を設定することを含むことができる。
【0014】
アプリケーションの作動を一時停止することは、シミュレータがアプリケーションを実行している間にシミュレーション条件が満たされたことに基づいて、シミュレータを一時停止することと、通知をデバッガに送ることと、通知と、ラインブレークポイントに到達したことに基づいて、デバッガによるアプリケーションの作動を一時停止することを含むことができる。
【0015】
通知がデバッガにより受信されたことに応答して、デバッガは、ラインブレークポイントを調べることを開始できる。
【0016】
方法は更に、シミュレータによりアプリケーションを実行することを含むことができる。シミュレータによりアプリケーションを実行することは、シミュレーション条件を調べることを含むことができる。
【0017】
シミュレーション条件は、エゴ車両と対象物との間の衝突までの時間が特別な閾値未満であること、特別なモデルまたは対象物の故障、エゴ車両と対象物または車線との間の距離が所定の値未満であること、エゴ車両の速度が特別な値を超えていること、およびエゴ車両の加速度が特別な値を超えていることの1つであってよい。
【0018】
開示の他の態様は、自律運転アプリケーションをデバッグするための装置を提供する。装置は、少なくとも1つの命令を格納しているメモリとプロセッサを含むことができ、このプロセッサは、アプリケーションのソースコードのラインにおいてラインブレークポイントを設定し、アプリケーションを実行するシミュレータのシミュレーションデータ対する誘発条件を設定し、アプリケーションをデバッグするためにデバッガによりアプリケーションを作動させ、ラインブレークポイントに到達したこと、および誘発条件が満たされたことに基づいて、デバッガによるアプリケーションの作動を一時停止するために、少なくとも1つの命令を実行するように構成されている。
【0019】
シミュレーションデータは、シミュレータにより生成されたログデータであってよく、誘発条件は、ログデータのタイムラインにおけるログブレークポイントであってよく、そして、誘発条件を設定することは、ログデータを再生するためのログプレーヤを介して誘発条件を設定することを含むことができる。
【0020】
プロセッサは、ログブレークポイントに到達したことに基づいて、ログプレーヤによるログデータの再生を一時停止し、通知をデバッガに送り、通知がデバッガにより受信されたことに基づいて、ラインブレークポイントにおいてデバッガによるアプリケーションの作動を一時停止するために、少なくとも1つの命令を実行するように構成できる。
【0021】
プロセッサは、通知がデバッガにより受信されたことに応答して、ラインブレークポイントを調べることを開始するようにデバッガを制御するために、少なくとも1つの命令を実行するように構成できる。
【0022】
プロセッサは、ログプレーヤによりログデータを再生するために、少なくとも1つの命令を実行するように構成できる。ログプレーヤによりログデータを再生することは、ログデータをデバッガに送ることと、ログブレークポイントに対して再生されたログデータを調べることを含むことができる。
【0023】
ログブレークポイントは、ログプレーヤのタイムラインまたはプレイバーにおいて設定できる。
【0024】
誘発条件は、シミュレータにおけるシミュレーション条件であってよく、誘発条件を設定することは、シミュレータにおいて誘発条件を設定することを含むことができる。
【0025】
プロセッサは、シミュレータがアプリケーションを実行している間にシミュレーション条件が満たされたことに基づいてシミュレータを一時停止し、通知をデバッガに送り、通知と、ラインブレークポイントに到達したことに基づいて、デバッガによるアプリケーションの作動を一時停止するために、少なくとも1つの命令を実行するように構成できる。
【0026】
プロセッサは、通知がデバッガにより受信されたことに応答して、ラインブレークポイントを調べることを開始するようにデバッガを制御するために、少なくとも1つの命令を実行するように構成できる。
【0027】
プロセッサは、シミュレータによりアプリケーションを実行するために、少なくとも1つの命令を実行するように構成できる。シミュレータによりアプリケーションを実行することは、シミュレーション条件を調べることを含むことができる。
【0028】
シミュレーション条件は、エゴ車両と対象物との間の衝突までの時間が特別な閾値未満であること、特別なモデルまたは対象物の故障、エゴ車両と対象物または車線との間の距離が所定値未満であること、エゴ車両の速度が特別な値を超えていること、およびエゴ車両の加速度が特別な値を越えていることの1つであってよい。
【0029】
開示の他の態様は、命令を格納している非一時的コンピュータ読み取り可能媒体を提供する。命令は1つ以上の命令を含むことができ、1つ以上の命令は、装置の1つ以上のプロセッサにより実行されるとその1つ以上のプロセッサに、自律運転アプリケーションのソースコードのラインにおいてラインブレークポイントを設定させ、アプリケーションを実行するシミュレータのシミュレーションデータ対する誘発条件を設定させ、アプリケーションをデバッグするためにデバッガによりアプリケーションを作動させ、ラインブレークポイントに到達したことと、誘発条件が満たされたことに基づいて、デバッガによるアプリケーションの作動を一時停止させる。
【図面の簡単な説明】
【0030】
開示の例としての実施形態の特徴、利点、および技術的且つ産業的意味は、付随する図面を参照して下記に記述され、図面においては類似の符号は類似の要素を示している。
【0031】
図1】実施形態に係わる、条件付きブレークポイントを使用してアプリケーションをデバッグする方法の概観のフローチャートである。
【0032】
図2】ここにおいて記述されているシステムおよび/または方法を実現できる、例としての環境の図である。
【0033】
図3】実施形態に係わる、デバッグの方法を実行するための装置の、例としての構成要素の図である。
【0034】
図4】実施形態に係わる、アプリケーションをデバッグするための、例としてのプロセス400の図である。
【0035】
図5】他の実施形態に係わる、アプリケーションをデバッグするための、例としてのプロセス500の図である。
【発明を実施するための形態】
【0036】
本開示に係わるデバッグの方法は、自律運転アプリケーションをデバッグするための条件付きブレークポイントを提供する。関心のあるコードにおいて実行を中断するための正確なタイミングを提供するために、ラインブレークポイントをソースコードに設定できる。一方、ログデータの各フレームにおける繰り返しの中断を防止するために、実施形態に係わるデバッガを、ラインブレークポイントと追加的誘発条件の両者が満たされない限り、実行を停止するように誘発しなくてもよい。追加的誘発条件は、ログプレーヤを介してログデータにおいて、または、シミュレーションの実行それ自体においてシミュレーションデータと関連して設定できる。
【0037】
図1は、実施形態に係わる、条件付きブレークポイントを使用してアプリケーションをデバッグする方法の概観のフローチャートである。
【0038】
図1を参照すると、動作110において、ラインブレークポイントを、アプリケーションのソースコードにおいて設定できる。例えば、ラインブレークポイントは、アプリケーションをその時点において解析できるように、機能への入り口において設定できる。幾つかの実施形態においては、複数のラインブレークポイントを、解析を実行できる箇所においてソースコードを通して設定できる。
【0039】
動作120において、誘発条件を、アプリケーションを作動させるシミュレータのシミュレーションデータに対して設定する。実施形態においては、誘発条件は、シミュレーションにより生成されたログデータ(例えば、ログプレーヤを介して)に設定できる。例えば、1つ以上のログブレークポイントを、ログプレーヤのタイムラインまたはプレイバーにおいて設定でき、それにより、ユーザがコードまたはアプリケーションを解析したいと所望する特別なフレームを容易に選択することを可能にする。他の実施形態においては、誘発条件は、シミュレータにおいて検出された(または、検出されるべき)条件に基づいてシミュレータを介して設定できる。例えば、シミュレーション条件は、エゴ車両と対象物との間の衝突までの時間が特別な閾値未満であること、特別なモデルまたは対象物の故障、エゴ車両と対象物または車線との間の距離が所定の値未満であること、エゴ車両の速度が特別な値を超えていること、および/またはエゴ車両の加速度が特別な値を超えていることとして設定できる。結果として、ユーザは、アプリケーションをデバッグするためのシミュレーションにおいて所望の時点を容易に選択できる。
【0040】
動作130において、アプリケーションをデバッガにより作動させることができる(例えば、アプリケーションをデバッグモードで実行できる)。デバッガは、アプリケーションを作動させるシミュレータ、および/または、アプリケーションを作動させている間にシミュレータにより生成されたログデータを再生するログプレーヤと通信状態であることができる。幾つかの実施形態においては、デバッガは、シミュレータおよび/またはログプレーヤと同時に作動できる。
【0041】
動作140において、デバッガによるアプリケーションの作動を、ラインブレークポイントに到達したこと、および誘発条件が満たされたことに基づいて一時停止(中断)することができる。例えば、デバッガが作動しているときに、複数のラインブレークポイントに到達する可能性がある。しかし、デバッガは、誘発条件が満たされていない場合は、実行を一時停止することなくラインブレークポイントを通過する。誘発条件が満たされると、デバッガは、シミュレータまたはログプレーヤにより通知され(例えば、一時停止コールを受信することにより)、デバッガは、ソースコードにおけるラインブレークポイントに次回到達したときに一時停止する。
【0042】
このようにして、ここにおける幾つかの実現形態は、条件が満たされることに基づいて、適切な点においてのみ中断することにより効率的なデバッグを可能にする。つまり、条件付きブレークポイントの結果として、シリアルデータの各フレームにおいて実行を繰り返して停止することなく、シミュレーションの特定のフレームまたはログデータにおけるデバッグのためにコードの正確なラインを設定できる。
【0043】
図2は、ここにおいて記述されているシステムおよび/または方法を実現できる、例としての環境200の図である。図2において示されているように、環境200は、互いに通信状態にあるシミュレータ210、デバッガ220、およびログプレーヤ230を含むことができる。実施形態によれば、環境200の構成要素は、パーソナルコンピュータ、ワークステーションコンピュータ、サーバ装置、または、他のタイプの演算および/または通信装置などのような、単一の装置上で作動するソフトウェアプログラムとして実現できる。他の実施形態においては、構成要素は、有線接続、無線接続、または、有線および無線接続の組み合わせを介して相互接続されている複数の装置上で動作できる。
【0044】
図2において示されている装置とネットワークの数と配置は例として提供されている。実際は、図2において示されている要素以外の追加的構成要素、それらよりもより少ない構成要素、それらとは異なる構成要素、または、それらとは異なるように配置されている構成要素もあり得る。例えば、種々の実施形態においては、シミュレータとログプレーヤの1つは省略できる。
【0045】
図3は、実施形態に係わる、デバッグの方法100を実行するための装置300の、例としての構成要素の図である。装置300は、方法100を実行する単一の装置、または、方法100を実行する複数の装置の1つに対応することができる。装置300は、図2において例示されているシミュレータ210、デバッガ220、およびログプレーヤ230の少なくとも1つを含むことができ、または実現できる。図3において示されているように、装置300は、バス310、プロセッサ320(または、少なくとも1つのプロセッサ)、メモリ330(または、少なくとも1つのメモリ)、格納構成要素340、入力構成要素350、出力構成要素360、および通信インタフェース370を含むことができる。
【0046】
バス310は、装置300の構成要素間の通信を可能にする構成要素を含むことができる。つまり、バス310は、装置300の構成要素間でのデータと情報の転送を可能にする通信システムまたはサブシステムである。
【0047】
プロセッサ320は、ハードウェア、ファームウェア、または、ハードウェアとソフトウェアの組み合わせにおいて実現できる。プロセッサ320は、中央演算処理装置(CPU)、グラフィックス処理ユニット(GPU)、アクセラレーテッド処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または他のタイプの処理構成要素の少なくとも1つを含むことができる。幾つかの実施形態においては、プロセッサ320は、機能を実行するようにプログラムすることができる1つ以上のプロセッサを含んでいる。
【0048】
メモリ330は、プロセッサ320による使用のための情報および/または命令を格納している。メモリ330は、情報および/または命令を格納するために、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、および/または他のタイプのダイナミックまたはスタティック格納装置(例えば、フラッシュメモリ、磁気メモリ、および/または光メモリ)の少なくとも1つを含むことができる。
【0049】
格納構成要素340は、装置300の動作と使用に関する情報および/またはソフトウェアを格納できる。例えば、格納構成要素340は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(CD)、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスク、カートリッジ、磁気テープ、および/または他のタイプの非一時的コンピュータ読み取り可能媒体を、対応するドライブと共に含むことができる。
【0050】
入力構成要素350は、ユーザ入力を介してなどのように、装置300が情報を受信することを可能にする構成要素(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)を含むことができる。追加的に、または代替的に、入力構成要素350は、情報を感知するためのセンサ(例えば、全地球測位システム(GPS)構成要素、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含むことができる。出力構成要素360は、装置300からの出力情報を提供する構成要素(例えば、ディスプレイ、スピーカ、1つ以上の発光ダイオード(LED)、外部ディスプレイまたはスピーカに接続するためのインタフェースなど)を含むことができる。
【0051】
通信インタフェース370は、装置300が、有線接続、無線接続、または有線接続と無線接続の組み合わせを介してなどのように、他の装置と通信することを可能にする、トランシーバに類似している構成要素(例えば、トランシーバおよび/または別個の受信機と送信機)を含むことができる。通信インタフェース370は、装置300が、他の装置から情報を受信し、および/または、他の装置に情報を提供することを可能にできる。例えば、通信インタフェース370は、イーサネット(登録商標)インタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(RF)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、Wi-Fiインタフェース、セルラーネットワークインタフェース、などを含むことができる。
【0052】
装置300は、ここにおいて記述されている1つ以上のプロセスを実行できる。装置300は、プロセッサ320が、メモリ330および/または格納構成要素340などのような、非一時的コンピュータ読み取り可能媒体に格納されているソフトウェア命令を実行することを介して、これらのプロセスを実行できる。コンピュータ読み取り可能媒体は、ここにおいては非一時的メモリ装置として定義されている。メモリ装置は、単一の物理格納装置内のメモリ空間、または、複数の物理格納装置にわたり広がっているメモリ空間を含んでいる。
【0053】
ソフトウェア命令は、通信インタフェース370を介して、他のコンピュータ読み取り可能媒体または他の装置から、メモリ330内および/または格納構成要素340内に読み込むことができる。メモリ330および/または格納構成要素340に格納されているソフトウェア命令は実行されるとプロセッサ320に、ここにおいて記述されている1つ以上のプロセスを実行させることができる。追加的に、または代替的に、ここにおいて記述されている1つ以上のプロセスを実行するために、物理的に結線された回路を、ソフトウェア命令の代わりに、またはそれとの組み合わせにおいて使用できる。そのため、ここにおいて記述されている実現形態は、ハードウェア回路とソフトウェアの特定の組み合わせの何れにも制限されない。
【0054】
図3において示されている構成要素の数と配置は、例として提供されている。実際は、装置300は、図3において示されている構成要素以外の追加的構成要素、それらよりも、より少ない構成要素、それらとは異なる構成要素、または、それらとは異なるように配置されている構成要素を含むことができる。追加的に、または代替的に、装置300の構成要素のセット(例えば、1つ以上の構成要素)は、装置300の構成要素の他のセットにより実行されるものとして記述されている1つ以上の機能を実行できる。
【0055】
図4は、実施形態に係わる、アプリケーションをデバッグするための、例としてのプロセス400の図である。幾つかの実施形態によれば、アプリケーションは、自律運転アプリケーションであってよい。幾つかの実施形態においては、図4の1つ以上の動作は、装置300により実行できる。幾つかの実施形態においては、図4の1つ以上の動作は、他の装置または、装置300とは別個の、または装置300を含んでいる装置のグループにより実行できる。
【0056】
図4において示されているように、プロセス400は、ログプレーヤ230がデバッガ220と通信することを含むことができる。特別なシナリオにおいてアプリケーションを実行する車両をシミュレートするシミュレータ210により生成されたログデータは、ログプレーヤ230に入力でき、アプリケーションからのソースコードは、デバッガ220に入力できる。例えば、装置300上のシミュレータ210は、自律運転アプリケーションを実行でき、ログデータを生成でき、そのログデータはその後、ログプレーヤ230により再生される。
【0057】
ログデータがログプレーヤ230に入力され、自律運転アプリケーションのソースコードがデバッガ220に入力されると、時間T1において、ログプレーヤ230とデバッガ220の両者はフリーランに設定される。
【0058】
時間T2(または、それ以前)において、1つ以上の誘発条件を、ログブレークポイントとしてログプレーヤ230に設定できる。例えば、ログブレークポイントは、ログプレーヤ230のタイムラインまたはプレイバーにおいて設定できる。そのため、ユーザがコードまたはアプリケーションを解析したいと所望する特別なフレームを容易に選択できる。
【0059】
時間T2(または、異なる時間)においてはまた、1つ以上のラインブレークポイントを、デバッガ220により作動されているソースコードに設定できる。ラインブレークポイントは、解析から恩典を受けることができるコードにおける点において設定できる。例えば、ラインブレークポイントは、アプリケーションの機能の開始に対応するコードの位置に設定できる。
【0060】
時間T3において、ログプレーヤ230は、シミュレーションからのログを作動させること、およびログデータをデバッガ220に送ることを開始できる。例えば、自律運転アプリケーションを実行する自律運転シミュレータなどのような仮想プラットフォームにより生成されたログデータは、ログプレーヤ230上で作動でき、ログプレーヤ230から、アプリケーションのソースコードのデバッグにおける使用のために、デバッガ220に送ることができる。
【0061】
デバッガ220は、アプリケーションをデバッグするために、受信したログデータに基づいてアプリケーションを実行することを開始できる。デバッガ220は、ログプレーヤ230が誘発条件は満たされたということを示されていない場合、実行を中断することなくソースコードにおける如何なるラインブレークポイントもパスする。
【0062】
時間T4において、ログプレーヤ230は、ログが作動しているときに、時間T2において設定された誘発条件(ログブレークポイント)に対してログデータを調べる。幾つかの実施形態においては、ログプレーヤは、ログプレーヤ230がログを作動することを開始するときに、誘発条件を調べることを開始できる。
【0063】
時間T5において、ログプレーヤは、誘発条件が満たされたと決定できる。例えば、ログプレーヤは、誘発条件として設定されたタイムライン上の点に到達する可能性がある。誘発条件が満たされたことに基づいて、ログプレーヤはログを作動することを一時停止し、デバッガ220に、誘発条件が満たされたということを通知する。
【0064】
誘発条件が満たされたことを示す通知を受信すると(または、通知を受信したことに基づいて)、デバッガ220は、ソースコードにおけるラインブレークポイントを調べることを開始できる。そのためデバッガ220は、ソースコードにおけるラインブレークポイントに到達するまでアプリケーションを実行し続けることができる。ソースコードにおけるブレークポイントに到達すると、デバッガ220は、ユーザがアプリケーションをデバッグすることを可能にするために実行を一時停止する。誘発条件が満たされたことを示す通知を受信する前は、デバッガ220はラインブレークポイントを調べなくてもよく、または、ラインブレークポイントを無視することができる。
【0065】
図5は、他の実施形態に係わる、アプリケーションをデバッグするための、例としてのプロセス500の図である。幾つかの実施形態によれば、アプリケーションは、自律運転アプリケーションであってよい。幾つかの実施形態においては、図5の1つ以上の動作は、装置300により実行できる。幾つかの実施形態においては、図5の1つ以上の動作は、他の装置、または、装置300とは別個の、または装置300を含む装置のグループにより実行できる。
【0066】
図5において示されているように、プロセス500は、シミュレータ210がデバッガ220と通信することを含むことができる。実施形態によれば、シミュレータ210は、エゴ車両の自律運転アプリケーションを実行している間に、特別なシナリオにおけるエゴ車両の動作をシミュレートするために提供された仮想プラットフォームであってよく、デバッガ220は、デバッグのためにアプリケーションを実行できる(例えば、デバッグモードにおいて)。
【0067】
自律運転アプリケーションのソースコードがシミュレータ210とデバッガ220に入力されると、時間T1において、シミュレータ210とデバッガ220の両者はフリーランに設定される。
【0068】
時間T2(または、異なる、またはそれ以前の時間)において、1つ以上の誘発条件を、シミュレーション条件としてシミュレータ210において設定できる。例えば、シミュレーション条件は、エゴ車両と対象物との間の衝突までの時間が特別な閾値未満であること、特別なモデルまたは対象物の故障、エゴ車両と対象物または車線との間の距離が所定の値未満であること、エゴ車両の速度が特別な値を超えていること、および/またはエゴ車両の加速度が特別な値を超えていることとして設定できる。
【0069】
時間T2(または、異なる時間)においても、1つ以上のラインブレークポイントを、デバッガ220により作動させられているソースコードに設定できる。ラインブレークポイントは、解析から恩典を受けることができるコードにおける点において設定できる。例えば、ラインブレークポイントは、アプリケーションの機能の開始に対応するソースコードの点において設定できる。
【0070】
時間T3において、シミュレータ210は、アプリケーションに基づくシミュレーションを作動させることを開始できる。例えば、シミュレータ210は、自律運転アプリケーションに基づいて、エゴ車両の動作をシミュレートできる。
【0071】
時間T4において、シミュレータ210は、シミュレーションが作動しているときに、時間T2(または、それ以前)に設定された誘発条件(シミュレーション条件)を調べることができる。幾つかの実施形態においては、シミュレータ210は、シミュレータ210が作動を開始するときに、誘発条件を調べることを開始できる。
【0072】
時間T5において、シミュレータ210は、誘発条件が満たされたと決定できる。例えば、シミュレータ210は、エゴ車両の速度が特別な値を越えていると決定できる。誘発条件が満たされたことに基づいて、シミュレータ210はシミュレーションを一時停止でき、デバッガ220に誘発条件が満たされたことを通知できる。
【0073】
誘発条件が満たされたことを示す通知を受信すると(または、通知を受信したことに基づいて)、デバッガ220は、ソースコードにおけるラインブレークポイントを調べることができる。そのため、デバッガ220は、ソースコードにおけるラインブレークポイントに到達するまでアプリケーションを実行し続けることができる。ソースコードにおけるブレークポイントに到達すると、デバッガ220は、ユーザがアプリケーションをデバッグすることを可能にするために実行を一時停止できる。誘発条件が満たされたことを示す通知を受信する前は、デバッガ220は、ラインブレークポイントを調べなくてもよく、または、ラインブレークポイントを無視することができる。
【0074】
上述したように、実施形態に係わる方法とシステムは、自動車の電子制御ユニット(ECU)において、目標の自律運転アプリケーションをデバッグするための複数の誘発ブレークポイントを提供する。複数の誘発ブレークポイントの結果として、各フレームにおいて実行を繰り返し停止することなく、コードの正確なラインを、シミュレーションまたはログデータの特定のフレームにおけるデバッグのために設定できる。従って、デバッグの精度と効率は、関連する技術のデバッグシステムと方法に比べて向上される。
【0075】
前述の開示は、例示と記述を提供しているが、全部を網羅することは意図されておらず、また、実現形態を開示されている正確な形状に制限することも意図されていない。修正と変形は上記の開示を考慮すれば可能であり、または、実現形態の実践から取得できる。
【0076】
ここにおいて使用されているように、構成要素という用語は、ハードウェア、ファームウェア、または、ハードウェアとソフトウェアとの組み合わせとして広く解釈されることが意図されている。
【0077】
ここにおいて記述されているシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形状で実現できるということは明白であろう。これらのシステムおよび/または方法を実現するために使用されている実際の特殊化された制御ハードウェアまたはソフトウェアコードは、実現形態を制限するものではない。そのため、システムおよび/または方法の動作と挙動は、ここにおいては、特定のソフトウェアコードに言及せずに記述したが、ソフトウェアとハードウェアは、ここにおける記述に基づいて、システムおよび/または方法を実現するために設計できるということは理解される。
【0078】
特徴の特別な組み合わせが、特許請求の範囲において列挙され、および/または明細書において開示されているが、これらの組み合わせは、可能な実現形態の開示を制限することは意図されていない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されていない、および/または明細書において具体的に開示されていない方法で組み合わせることができる。下記に一覧で示されているそれぞれの従属請求項は、1つの請求項のみに直接依存することができるが、可能な実現形態の開示は、請求項のセットにおけるすべての他の請求項との組み合わせにおける各従属請求項を含んでいる。
【0079】
ここにおいて使用されている要素、行動、または命令は何れも、明示的に重要または必要不可欠なものとして記述されない限り、そのように解釈されるべきではない。また、ここにおいて使用されているような冠詞「ある」は、1つ以上の項目を含むことが意図されており、「1つ以上」と交換可能に使用できる。更に、ここにおいて使用されているような用語「セット」は、1つ以上の項目(例えば、関連する項目、関連しない項目、関連する項目と関連しない項目の組み合わせなど)を含むことが意図されており、「1つ以上」と交換可能に使用できる。1つの項目のみが意図されているときは、「1つの」という用語または類似の言語が使用される。また、ここにおいて使用されているような用語「有する」、「有している」などは、何の制約もない用語であることが意図されている。更に、「基づいて」というフレーズは、そうでないと明示的に記述されない限り、「少なくとも部分的には基づいて」を意味している。
図1
図2
図3
図4
図5