Pythonを使用したConnextDDS用のRTIラボとコネクタの紹介
これ以降、多くのことが起こりました。最初に公開された投稿。 PythonまたはJavascriptを使用してDDSにアクセスできるようになったことをご存知ですか? Connext
®
のRTIコネクタとしての需要を高めてくれたRTILabsプログラムのベータテスターに感謝します。 DDSは、Connext製品スイートの一部として利用できるようになりました。
今週は、産業用IoT向けに開発している新しいテクノロジーにお客様が早期にアクセスできる無料のプログラムであるRTILabsを発表できることに興奮しています。私たちはそれらを実験的プロジェクトと呼んでいます。 RTI Labsを利用するお客様は、次世代テクノロジーを活用し、実験機能に関するフィードバックを提供することで、製品ロードマップに影響を与える機会があります。それはお互いに有利な状況です!
3つの新しい実験プロジェクトでプログラムを開始します。最初のプロジェクトはConnext DDS用のRTI(R)コネクタです。 RTI Connext5.3.0をダウンロードしてRTILauncherを起動した場合は、[ラボ]タブにいくつかの新しいアイコンが表示されます。これらのアイコンの1つはコネクタ用です。
コネクタアイコンをクリックすると、コミュニティポータルのRTIコネクタページに移動します。 Connectorは、デモの作成と迅速なテストを支援するためにRTIの研究チームによって開発されました。 ConnectorはRTIPrototyperへのLuaインターフェースから始まり、その後、PythonやJavaScript /node.jsなどのスクリプト言語のサポートが追加されました。
しかし、RTIコネクタとは何ですか?
Connext DDS用のRTIコネクタは、JavaScript、Python、Luaなどのさまざまなスクリプト言語からRTI ConnextDDSの機能と機能にすばやく簡単にアクセスする方法です。 XMLアプリの作成や動的データなど、ConnextDDSのいくつかの強力な機能に基づいて構築されています。
このブログ投稿はRTI ConnectorのPythonインターフェースに焦点を当てていますが、ほとんどの概念はJavaScript /node.jsとlua / prototyperに簡単に適用できます。
ユースケース
RTIコネクタには多くの使用例があります。アーリーアダプターのユースケースには、次のようなものがあります。
- テスト : 多くの場合、複雑な分散システムを開発しているときは、一部のコンポーネントの準備ができていない可能性があります。この場合、Connectorは、後でまたは別のグループによって完了するDDSコンポーネントの動作をエミュレートするために使用されます。 これにより、コンポーネントを個別にテストできます。これは、分散チームで作業している場合や、テストする前にすべてのコンポーネントが構築されるまで待ちたくない場合に役立ちます。
- プロトタイピング: ソフトウェア開発では、多くの場合、すべての詳細が利用可能になる前にアイデアを検証する必要があります。 Pythonのようなスクリプト言語と簡略化されたDDSAPIを使用して、デモまたは概念実証の開発を非常に簡単かつ迅速に行うことができます。 1桁少ないコードを使用してください!
- ユーザーインターフェース: シンプルなUIの開発(ボタンとシンプルなトリガーを使用したDDSデータの視覚化または送信)が非常に簡単に RTIコネクタがPythonQTなどのPythonで利用可能なUIテクノロジーとペアになっている場合。
- 統合: Pythonやその他のスクリプト言語には、巨大なエコシステムが付属しています。このブログが書かれた時点で、PyPlには112,439個のパッケージがありました。何かを統合しようとしている場合は、役立つpythonパッケージがある可能性が高く、Connectorを使用してDDSと話すことができます!
- ここでのユースケース: フォーラムでRTIコネクタを別の方法で使用している場合はお知らせください。
RTIの使用を開始する
このブログ投稿では、Pythonにある程度精通していることを前提としています。 RTIコネクタはPython3と<3の両方で動作します。すべての主要なエンタープライズシステムと、RaspberryPiなどのボードでサポートされています。利用可能なプラットフォームのリストはここで確認できます。他のサポートが必要な場合は、フォーラムで遠慮なく質問してください。 RTI Connector for Connext DDSをPythonにインストールするには、PyPIで入手可能なパッケージを使用できます:
pip install rticonnextdds_connector
別の方法は、リポジトリのクローンを作成することです:
git clone https://github.com/rticommunity/rticonnextdds-connector.git
リポジトリには、開始するための例もいくつかあります。
- simple / writer.js:ライターを作成し、インスタンスを設定し、サンプルを公開する方法を示します。
- simple / reader.js:リーダーを取得し、サンプルを取得し、それらのコンテンツにアクセスする方法を示します。
- simple / read_and_write.py:2つのフィールドを反転した後に受け取ったサンプルごとにサンプルを書き込む方法を示します。
- mixed /:これらの例は定期的に更新され、シーケンスの長さにアクセスする方法、wait()の使用方法などに関するさまざまな例が含まれています。
APIの概要
APIがどのように見えるか見てみましょう。より詳細な情報が必要な場合は、GitHubリポジトリでREADMEを表示できます。
最初に行うことは、RTIコネクタライブラリをインポートすることです。
rticonnextdds_connectorをrtiとしてインポートします
RTIコネクタへの参照を取得したら、APIを呼び出して新しいコネクタを作成できます:
コネクタ=rti.Connector( "MyParticipantLibrary ::Zero"、 "./ ShapeExample.xml");
最初の文字列は使用する構成の名前であり、2番目の文字列はXMLベースのアプリ作成構成を含むXMLファイルです。そのファイルの例をここで見ることができます。
コネクタが作成されると、getOutput APIを使用してすべてのデータライターにアクセスできます:
output =Connector.getOutput( "MyPublisher ::MySquareWriter")
または、同じ方法でデータリーダーにアクセスできます:
input =Connector.getInput( "MySubscriber ::MySquareReader");
どちらのAPIも、XMLファイルで定義されたエンティティの名前を表すパラメータとして1つの文字列を取得します。
データライターへの参照(この例では出力)を取得したら、関連付けられたインスタンスのフィールドを設定できます。辞書を渡すことでそれを行うことができます:
output.instance.setDictionary(sample);
または各フィールドを個別に設定する:
output.instance.setNumber( "y"、2);
データリーダー側(この例では入力)では、readまたはtakeを呼び出すことができます:
input.read();
または
input.take();
次に、受け取ったサンプルを反復処理できます:
numOfSamples =input.samples.getLength();
範囲(1、numOfSamples + 1)のjの場合:
input.infos.isValid(j)の場合:
x =input.samples.getNumber(j、 "x");
y =input.samples.getNumber(j、 "y");
....
サンプルには2つの方法でアクセスできます。辞書として:
sample =input.samples.getDictionary(j);
またはフィールドごと:
y =input.samples.getNumber(j、 "y");
size =input.samples.getNumber(j、 "shapesize");
マルチスレッドライブラリを使用する場合は、コネクタへのアクセスを保護することを忘れないでください。これを行う方法の例はここにあります。
この力のすべてには境界があります
RTIコネクタは優れており、多くの課題を解決できます。しかし、すべてとして、それはすべてに完璧ではありません。 APIのセットは限られています。ConnextDDSProで実行できることのいくつかは、RTIコネクタでは実行できません。動的データでのみ機能し、コンパイルされたタイプでは機能しません。使いやすく、移植するために、特定のユースケースを念頭に置いていくつかの仮定を立てました。特定のユースケースを解決できない場合や、最も効率的な解決方法ではない場合がありますが、おそらく別のツールまたはサービスがあります。あなたの特定の問題:私たちに聞いてください!
いくらですか?
このテクノロジーの費用について疑問に思われるかもしれません…無料です!!あなたはそれを手に入れて実験することができます。私たちがお願いするのは、あなたが私たちにあなたのフィードバックと提案を与えることだけです。このフィードバックは、今後の製品リリースに含めるアップデートと機能を優先する際に考慮されるため、ロードマップに影響を与えることができます。
結論
このブログは、Python用のRTIコネクタの紹介にすぎません。あなたが興味を持っているなら、学ぶための最良の方法はそれを試すことです。 RTIコミュニティフォーラムでご不明な点やご質問がございましたら、お気軽にお問い合わせください。喜んでお手伝いさせていただきます。それが好きで、改善のための提案やアイデアがある場合は、お気軽にお問い合わせください。次のことを決定する際にフィードバックを求めています...
モノのインターネットテクノロジー
- オープンDDSとRTIDDSソフトウェア
- Connext DDS用のTelegrafプラグイン:DDSとInfluxDBを使用して時系列監視システムを構築する
- Connext 6:利用可能になりました!
- Connext DDSと産業用IoT:知っておくべき5つのこと
- ConnextDDSの最新のRTIパフォーマンスを発表
- 誰もが自動運転車にRTIConnextDDSを使用している理由はここにあります
- IIoT開発者向けの2017年のトップ7リソース
- DDSとLabVIEW2017を使用して産業用IoTシステムを設計する方法
- ConnextDDS入門-ELI5をお願いします。
- RaspberryPiとPythonを使用したロボットの構築
- Python の type() と isinstance() と例