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 port
がjetsoncpu_udp.m
スクリプトのjetson_port
パラメーターと一致する必要があります。
Enabled Subsystem の UDP Send ブロック
ターゲットの "UDP Send" ブロックでは、
Remote IP port
がjetsoncpu_udp.m
スクリプトのhost_port
パラメーターと一致する必要があります。[リモート IP アドレス] パラメーターで、ホスト コンピューターの IP アドレスを指定します。
Windows® マシンで IP アドレスを見つけるには、次のようにします。
コマンド プロンプトを開きます。
コマンド プロンプトで "ipconfig" と入力し、Enter キーを押します。
Linux® マシンで IP アドレスを見つけるには、次のようにします。
ターミナルを開きます。
ターミナルに "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
スクリプトを実行します。
スクリプトが
値を Jetson ボードに送信します。
Jetson ボードが、モデルで指定された "Gain" ブロックの値をそれに乗算して、ホストに送信します。
スクリプトがこの値を受け取り、コマンド ウィンドウに表示します。
"Gain" ブロックの値を変更し、スクリプトを再実行します。コマンド ウィンドウで新しい値を確認します。
エクスターナル シミュレーションを停止するには、[ハードウェア] タブに移動し、[停止] ボタンをクリックしてエクスターナル モード シミュレーションを終了します。
その他の試行
"Gain" ブロックを他の計算ブロックに置き換えます。