メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

CAN FD と TCP/IP を使用した前方衝突警告アプリケーション

この例では、CAN FD および TCP/IP プロトコルを介してセンサーとビジョン データをライブで再生して前方衝突警告 (FCW) アプリケーションを実行する方法を示します。テスト車両に搭載されたセンサー スイートから記録されたデータは、車両のネットワーク インターフェイスを介して送信されているかのようにライブで再生されます。Vehicle Network Toolbox ™ と Instrument Control Toolbox ™ はこれらのインターフェースを提供します。このセットアップは、Automated Driving Toolbox ™ の機能を使用して開発された FCW システムをテストするために使用されます。実際の FCW アルゴリズムの設計と開発のサポートについては、例 Forward Collision Warning Using Sensor Fusion (Automated Driving Toolbox) を参照してください。

システム構成

この例では、Vector の仮想 CAN FD チャネルを使用します。これらの仮想デバイス チャネルは、www.vector.com から Vector Driver Setup パッケージをインストールすると使用できるようになります。

この例には 2 つの主なコンポーネントがあります。

  1. 送信機:センサーとビジョンデータを CAN FD および TCP/IP 経由で送信します。この部分はサンプルの車両環境を表しています。実際の車両と同じように、事前に記録されたデータを再生します。

  2. 受信側:すべてのデータを収集し、FCW アルゴリズムと可視化を実行します。この部分はアプリケーション コンポーネントを表します。

この例を実行するには、送信部と受信部を MATLAB ® の別々のセッションから実行します。これは、開発ツールとして機能する MATLAB セッションの外部に存在するデータ ソースを複製します。さらに、この例では、異なるパフォーマンス特性を持つ複数の実行モード (インタープリタおよび MEX) で FCW アプリケーションを実行できます。

データを生成する

送信アプリケーションは helperStartTransmitter 関数を介して実行されます。現在の MATLAB セッションの外部で実行される別の MATLAB プロセスを起動します。送信機は自動的に初期化され、センサーとビジョン データの送信を開始します。送信機を実行するには、system コマンドを使用します。

system('matlab -nodesktop -nosplash -r helperStartTransmitter &')

FCW Example MATLAB Command Window.PNG

前方衝突警告システムの実行(解釈モード)

受信側の FCW アプリケーションを開くには、helperStartReceiver 関数を実行します。START をクリックすると、データの受信、処理、可視化を開始できます。helperStartReceiver 関数を調べると、Vehicle Network Toolbox CAN FD 関数、Instrument Control Toolbox TCP/IP 関数、および Automated Driving Toolbox 関数が相互に連携してどのように使用されるかを確認できます。

helperStartReceiver('interpreted')

FCW_Example_BEP_Window_1_80.png

結果の確認

準備ができたら、コマンド ウィンドウのウィンドウを閉じるボタンを使用して送信機アプリケーションを停止します。受信側の FCW アプリケーションで STOP をクリックし、そのウィンドウも閉じます。

受信側の FCW アプリケーションが停止すると、アプリケーションのパフォーマンス特性の詳細を示すプロットが表示されます。データの受信、FCW アルゴリズムの処理、可視化の実行に費やされた時間を表示します。ベンチマークは、パフォーマンスの改善が必要なセットアップの部分を示すのに役立ちます。FCW アルゴリズムの実行にかなりの時間が費やされていることは明らかです。次のセクションでは、パフォーマンスを向上させる戦略としてのコード生成について説明します。

FCW Example Interpreted Plot.png

前方衝突警報システムを実行する(MEXモード)

ワークフローでより高速なパフォーマンスが必要な場合は、MATLAB Coder ™ を使用して MATLAB コードを MEX コードとして生成およびコンパイルできます。この例を MEX コードとしてビルドするには、helperGenerateCode 関数を使用します。ビルドでは、FCW アプリケーションを MATLAB 内で直接呼び出せる MEX 関数にコンパイルします。

helperGenerateCode('mex')

送信機アプリケーションを再起動します。

system('matlab -nodesktop -nosplash -r helperStartTransmitter &')

受信側の FCW アプリケーションも再起動できます。今回は、前の手順で構築された MEX コンパイル済みコードを使用するための入力引数を使用します。

helperStartReceiver('mex')

準備ができたら、送信機と受信側の FCW アプリケーションを停止して閉じます。MEX 実行の時間プロットと解釈モードのプロットを比較すると、FCW アルゴリズムのパフォーマンスが向上していることがわかります。

FCW Example MEX Plot.png

物理ハードウェアと複数のコンピュータを使用する

この例では、単一のコンピューターを使用して、仮想接続を備えたシステム全体をシミュレートします。そのため、そのパフォーマンスは近似値として意図されています。この例は、2 台のコンピューター (1 台は送信機、1 台は受信機) を使用して実行することもできます。これは、より実際のライブデータシナリオを表します。これを実現するには、サンプル コードに簡単な変更を加えます。

CAN FD 通信を仮想デバイスから物理デバイスに変更するには、仮想チャネルの代わりにハードウェア デバイスを使用して canChannel を呼び出すように送信コードと受信コードを編集する必要があります。ハードウェアの機能に応じて、configBusSpeed への呼び出しを変更する必要がある場合もあります。これらの呼び出しは、例の helperStartReceiver 関数と dataTransmitter 関数にあります。

複数のコンピュータの TCP/IP 通信を変更するには、送信側の TCP/IP アドレスをローカル ホスト (127.0.0.1) から静的な値 (192.168.1.2 を推奨) に調整する必要があります。このアドレスは、ホスト送信コンピュータで最初に設定されます。その後、helperStartReceiver 関数の tcpipAddr 変数を一致するように変更します。

設定して物理的に接続すると、1 台のコンピューターで送信機アプリケーションを実行し、もう 1 台のコンピューターで FCW アプリケーションを実行できます。