MATLABでライブIoTデータを活用:RTI Connext DDS連携
センサーデータを分析する際、典型的なワークフローは、生データを収集し、使いやすい形式に変換し、MATLABの強力な分析機能を活用することです。しかし、データ変換ステップは時間がかかります。MathWorksの最近の統合により、MATLABはIIoT通信のデファクトミドルウェアであるDDSを介してデータを直接購読・公開できるようになりました。これにより、開発者は最小限のオーバーヘッドでリアルタイム分析のプロトタイピングとテストが可能になります。
はじめに
開始前に、MATLABとRTI Connext DDSがインストールされていることを確認してください。例で使用したバージョンは以下の通りです:
- MathWorks MATLAB R2016b
- MathWorks DDS Blockset 2.9.2
- RTI Connext DDS 5.2.3(LinuxおよびWindows)
- RTI Shapes Demoアプリケーション(Connext DDSに同梱)
- Windows 10 PC
インストール動画を見て、すべてのコンポーネントが正しく構成されているか確認してください:インストール動画。
初期化
インストール後、以下の手順でMATLAB内でDDSを初期化します:
- プロジェクトに必要なIDLデータ型をインポート
- DDS Domain Participantを作成
- DDS DataWriterを作成
- DDS DataReaderを作成
IDLファイルをインポートすると、対応する.mファイルがMATLAB用に自動生成されます。例えば、ShapeType.idlをインポートするには:
> DDS.import('ShapeType.idl','matlab','f')
インポート後、そのデータ型は以降のDataReader/DataWriter作成で利用可能になります。Domain Participantを作成:
> dp = DDS.DomainParticipant;
ShapeTypeデータ型でTriangleとSquareトピックにライターとリーダーを接続:
> dp.addWriter('ShapeType','Triangle')
> dp.addReader('ShapeType','Square')
Shapes Demoでのデータ購読
RTI Shapes Demoは、Square、Circle、Triangleの事前設定済みトピックを提供し、すべてShapeTypeベースです。デモを使ってTriangleトピックの購読者を作成し、QoS設定はデフォルトのままにします。
MATLABからのデータ公開
DataWriterを設定したら、緑の三角形を公開します:
%% ShapeTypeのインスタンスを作成 myData = ShapeType; myData.x = int32(75); myData.y = int32(100); myData.shapesize = int32(50); myData.color = 'GREEN'; %% DDSにデータを書き込み dp.write(myData);
Shapes Demoには、以下のように単一の緑の三角形が表示されます:
その他の公開パターン:
%% 1Hzで直線上に緑の三角形 for i=1:10 myData.x = int32(20 + 10*i); myData.y = int32(40 + 10*i); dp.write(myData); pause(1); end %% 20Hzで円周上に緑の三角形 for i=1:1000 angle = 10*pi * (i/200); myData.x = int32(100 + (50 * cos(angle))); myData.y = int32(100 + (50 * sin(angle))); myData.shapesize = int32(40); myData.color = 'GREEN'; dp.write(myData); pause(0.05); end
デモではこれらのパターンが以下のように可視化されます:
Shapes Demoでのデータ公開
Shapes DemoでSquareトピックのパブリッシャーを作成します。色(例:オレンジ)を選び、QoSはデフォルトのまま。デモは30ミリ秒ごとに正方形のX,Y位置をブロードキャストします。
MATLABでのデータ購読
Square DataReaderを使ってShapes Demoからデータを消費します。1秒間隔で10サンプル読み取り:
%% データ読み取り for i=1:10 dp.read() pause(1); end
MATLABは以下のスクリーンショットのような10メッセージを出力します:
高度なユースケース:変換と可視化
双方向通信を確立したら、受信した正方形データのX座標とY座標を入れ替え、赤い三角形として再公開し、X位置を時間経過でプロットします。以下のMATLABスクリプトがこのワークフローを示します:
%% 100サンプル用の配列を確保
xArray = zeros(1,100);
%% 収集、変換、再公開
for i=1:100
[myData, status] = dp.read();
if ~isempty(myData)
x = myData(1).x;
y = myData(1).y;
xArray(i) = x;
yArray(i) = y;
myData(1).y = x;
myData(1).x = y;
myData(1).color = 'RED';
dp.write(myData(1));
end
pause(0.05);
end
%% X位置をプロット
t = 1:100;
plot(t,xArray);
legend('xPos');
xlabel('Time');
ylabel('Position');
title('X Positions');
Shapes Demoには今、オレンジの正方形をミラーリングした赤い三角形が表示され、MATLABにはX位置のプロットが描画されます:
DDSとMATLABの統合により、データの取り込み、注入、分析が効率化されます。このデモはシンプルなShapesアプリケーションを使用していますが、同じアプローチはあらゆるDDSベースのIoTデータソースで機能します。MATLABのDDS統合についてさらに詳しくは、MathWorksのMATLAB DDS Integrationページをご覧ください。Connext DDSのさらなる探求は、こちらの開発者リソースからアクセスできます。
モノのインターネットテクノロジー
- MQTT vs DDS:IoT向け最適なM2Mプロトコルの選択
- 産業用IoTにおけるConnext DDS:信頼性・セキュリティ・拡張性のための5つの重要知見
- ハノーバーメッセからの教訓:ITを産業オペレーションに活かす5つの実証済み戦略
- モノのインターネットにおけるデータコンプライアンスの確保
- 製造現場はIoT導入の準備ができているか? 実践ガイド
- IoTの民主化:次世代衛星IoTがもたらす普遍的で手頃な接続性
- IoTデータの価値を引き出す:セキュアでインサイト主導の戦略
- IoTデータをビジネス価値に変える:実践ガイド
- IoTデータを活用した製造エクセレンスの実現
- 2026年に向けた主要クラウド型IoT分析プラットフォーム11選
- MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数