Main Content

NVIDIA Jetson プラットフォームでの UDP によるデータ送受信

この例では、MATLAB® Coder™ Support Package for NVIDIA® Jetson® and NVIDIA DRIVE® を使用して、Jetson ボード上のネットワーク経由で UDP データを送受信する方法を示します。

この例を使用すると、次のことができる Simulink® モデルを作成して展開できます。

  • ホスト コンピューターから UDP 経由でデータを受信。

  • ホスト コンピューターに UDP 経由でデータを送信。

必要条件

  • NVIDIA Jetson Nano 組み込みプラットフォーム。

  • ターゲット ボードとホスト PC を接続するイーサネット クロスオーバー ケーブル (ターゲット ボードをローカル ネットワークに接続できない場合)。

  • コンパイラおよびライブラリ用の、ターゲット ボード上のツール、ライブラリ、および環境変数。詳細については、Install and Setup Prerequisites for NVIDIA Boardsを参照してください。

UDP 通信用の Simulink モデル

この例では、事前構成された jetsoncpu_udp_communication モデルを使用します。このモデルは UDP Receive ブロックと UDP Send ブロックを使用してデータを交換します。このモデルでは、Jetson ボードは、ホスト コンピューターから UDP データを受信し、データを操作した後、ホスト コンピューターに送り返します。

open_system('jetsoncpu_udp_communication')

モデルのボード パラメーターの構成

Jetson ボードへのライブ接続を設定するには、Jetson Nano ボードのデバイス アドレス、ユーザー名、およびパスワードを指定します。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[ハードウェア実行] ペインに移動します。

  • [ハードウェア ボード] ドロップダウン リストからターゲット ハードウェアを選択します。

  • [ハードウェア ボード][NVIDIA Jetson] に設定します。

  • [Target Hardware Resources] セクションで、[Board Parameters] ペインを開き、Jetson ボードのデバイス アドレス、ユーザー名、およびパスワードを入力します。

  • [適用] をクリックした後、[OK] をクリックしてダイアログ ボックスを閉じます。

UDP ブロックの構成

Simulink モデルで、次のブロックをダブルクリックし、指定されたパラメーター値が以下に示すものと同じであることを確認します。

  • Jetson UDP 通信モデルの UDP Receive ブロック

  • ターゲットの "UDP Receive" ブロックでは、Local IP portjetsoncpu_udp.m スクリプトの jetson_port パラメーターと一致する必要があります。

  • Enabled Subsystem の UDP Send ブロック

  • ターゲットの "UDP Send" ブロックでは、Remote IP portjetsoncpu_udp.m スクリプトの host_port パラメーターと一致する必要があります。

  • [リモート IP アドレス] パラメーターで、ホスト コンピューターの IP アドレスを指定します。

Windows® マシンで IP アドレスを見つけるには、次のようにします。

  1. コマンド プロンプトを開きます。

  2. コマンド プロンプトで "ipconfig" と入力し、Enter キーを押します。

Linux® マシンで IP アドレスを見つけるには、次のようにします。

  1. ターミナルを開きます。

  2. ターミナルに "ip add" と入力し、Enter キーを押します。

ホスト スクリプトの構成

この例では、jetsoncpu_udp スクリプトを使用して、ホスト コンピューターがデータを Jetson ボードに送信し、ボードからのデータを読み取り、UDP データを表示できるようにします。

type jetsoncpu_udp.m
function jetsoncpu_udp()
%   Copyright 2021 The MathWorks, Inc.

% Enter the IP address of the NVIDIA board.
jetson_ipaddress = 'xxx.xxx.xxx.xxx';

% Enter the Port number on which the UDP block on the  NVIDIA board is
% listening
jetson_port = 10000;

% Enter the Port number to which the UDP block on the  NVIDIA board  is
% sending data to.
host_port = 11000;

% Create a udpport object to send and receive data from the NVIDIA board.
udpObj = udpport('LocalPort', host_port);

% The Jetson board needs the data in Little Endian format.
udpObj.ByteOrder = 'littleEndian';

% sendVal is the number to be sent to the target.
sendVal = pi;
disp(['Send number: ' num2str(sendVal)]);
write(udpObj,sendVal,'double',jetson_ipaddress,jetson_port);

% recVal is the number received from the target.
recVal = read(udpObj, 1 ,'double');
disp(['Received number: ' num2str(recVal)]);

end

スクリプトでは、jetson_ipaddress パラメーターに Jetson ボードの "IP アドレス" を指定します。

モデルの監視と調整

Jetson UDP Communication モデルを監視および調整する際、ホスト コンピューターは、生成された実行可能ファイルが実行されるターゲットと通信します。

モデルを監視および調整するには、[ハードウェア] タブを開き、[監視と調整] をクリックします。診断ビューアーからは、モデル用にコードが生成され、生成された実行可能ファイルを読み込んだ後、ホストがターゲットに接続することが確認できます。

jetsoncpu_udp.m スクリプトを実行します。

  • スクリプトが $\pi$ 値を Jetson ボードに送信します。

  • Jetson ボードが、モデルで指定された "Gain" ブロックの値をそれに乗算して、ホストに送信します。

  • スクリプトがこの値を受け取り、コマンド ウィンドウに表示します。

"Gain" ブロックの値を変更し、スクリプトを再実行します。コマンド ウィンドウで新しい値を確認します。

エクスターナル シミュレーションを停止するには、[ハードウェア] タブに移動し、[停止] ボタンをクリックしてエクスターナル モード シミュレーションを終了します。

その他の試行

"Gain" ブロックを他の計算ブロックに置き換えます。