アスチュートDDS
防衛システム向けリアルタイムデータ接続
ミッションクリティカルな車両プラットフォームを支えるミドルウェア
X-Types搭載のフル機能DDS。防衛用兵器グレードDDS。
Powering defence
Astute DDSは、Astute Systemsの包括的なDEF-STAN 23-009汎用車両アーキテクチャ(GVA)ソリューションの中核を成すデータ配信ミドルウェアです。センサーからスクリーンまで、軍用車両のあらゆるサブシステムを1つの統合プラットフォームで接続します。
Why Publish/Subscribe
伝統的な建築様式の問題点
従来の車両システムはポイントツーポイント接続を使用しています。新しいサブシステムを追加すると、それが通信するすべてのシステムを変更する必要があります。これにより、次の問題が発生します。
- ❌高額な統合費用― 新しいコンポーネントごとにカスタムコーディングが必要
- ❌脆弱なシステム— 1つの障害がネットワーク全体に連鎖的に影響を及ぼす可能性がある
- ❌ベンダーロックイン— 独自のプロトコルにより、単一のサプライヤーに縛られてしまう
- ❌アップグレードが遅い— サブシステムを1つ変更すると、すべてを再テストする必要がある
パブリッシュ/サブスクライブソリューション
DDSのパブリッシュ/サブスクライブアーキテクチャでは、サブシステムは名前付きトピックにデータをパブリッシュするだけです。そのデータを必要とするシステムは、トピックを購読します。ポイントツーポイント接続は不要です。カスタム統合コードも必要ありません。
| ビジネス上のメリット | Pub/Sub の配達方法 |
|---|---|
| 💰統合コストの削減 | 既存のサブシステムを変更せずに新しいサブシステムを追加する |
| 🔧メンテナンスが容易 | コンポーネントを個別に交換またはアップグレードする |
| 🛡️回復力の向上 | 他のシステムが故障しても、システムは稼働し続ける |
| 🏭マルチベンダーの自由 | 異なるサプライヤーの機器を1つのデータバスに混在させる |
| ⏱️市場投入までの時間短縮 | 標準インターフェースは、カスタム開発の削減につながる。 |
GVAスタック全体をワンストップで提供
Astute Systemsは、GVA準拠の軍用車両向けに、完全統合型のソフトウェアスタックを提供する唯一のベンダーです。
| 成分 | その機能 |
|---|---|
| ボヘミアン | SysMLモデルの表示と検証、インターフェース定義の生成 |
| LDMX | LDM v10.0.0 に対応した最高クラスの土地データモデルエディタおよびバリデーター |
| ツールX | 自動コード生成、ビルド統合、およびデプロイツール |
| 鋭敏なDDS | すべてのサブシステムをリアルタイムかつ安全なデータ配信で接続する |
| 土地データモデル v10.0.0 | すべての車両ドメインに対応した、GVA準拠の事前構築済みデータタイプ |
| 鋭敏なHMI | DEF-STAN 23-009の要件を満たす乗員表示ソフトウェア |
フルスタックの利点
| 利点 | インパクト |
|---|---|
| 🎯単一責任体制 | 契約は1つ、サポートチームも1つ、統合パートナーも1つ。 |
| 📋実証済みのコンプライアンス | DEF-STAN 23-009の要件に対して事前検証済み |
| 🔄シームレスなアップデート | 他のコンポーネントを壊さずに、任意のコンポーネントをアップグレードできます。 |
| 💰予測可能なコスト | 予期せぬ統合費用やライセンス上の落とし穴はありません |
| ⏱️より速い配送 | 空のフレームワークではなく、動作するソフトウェアから始めましょう。 |
Comparison
調達に関する考慮事項
| 要素 | 鋭敏なDDS | RTIコネクト | サイクロンDDS | OpenDDS | ファストDDS |
|---|---|---|---|---|---|
| ライセンスモデル | 柔軟なオプション | 座席ごとの広告 | Eclipse EPL 2.0 | LGPL | Apache 2.0 |
| ライセンス費用 | 競争力 | 展開あたり$$$ | 無料 | 無料 | 無料 |
| サポートモデル | オーストラリアのベンダー契約 | グローバル企業 | エクリプス財団 | OCIのコマーシャル | eProsimaのコマーシャル |
| オーストラリアを拠点とするサポート | ✅ はい | ❌ 米国拠点 | ❌ いいえ | ❌ 米国拠点 | ❌ スペインを拠点とする |
| GVA事前統合 | ✅内蔵 | ❌ カスタム作品 | ❌ DIY | ❌ DIY | ❌ DIY |
| フルスタック利用可能 | ✅ 単一ソース:HMI + LDM + DDS + ツール | ❌ ミドルウェアのみ | ❌ ミドルウェアのみ | ❌ ミドルウェアのみ | ❌ ミドルウェアのみ |
| SysMLツール | ✅ Bohemian + LDMX + ToolX | ❌ なし | ❌ なし | ❌ なし | ❌ なし |
| 輸出管理 | オーストラリアの管轄権 | 米国ITARに関する考慮事項 | 欧州連合 | 私たち | 欧州連合 |
技術的特徴の比較
| 特徴 | 鋭敏なDDS | RTIコネクト | サイクロンDDS | OpenDDS | ファストDDS |
|---|---|---|---|---|---|
| DDSI-RTPS 2.5 | ✅完了 | ✅完了 | ✅完了 | ✅完了 | ✅完了 |
| DDSセキュリティ1.1 | ✅完了 | ✅完了 | ⚠️ 部分的 | ✅完了 | ✅完了 |
| Xタイプ 1.3 | ✅完了 | ✅完了 | ⚠️ 部分的 | ⚠️ 部分的 | ⚠️ 部分的 |
| 動的データAPI | ✅完了 | ✅完了 | ❌ なし | ⚠️ 基本 | ⚠️ 基本 |
| 型検索サービス | ✅完了 | ✅完了 | ❌ なし | ❌ なし | ⚠️ 部分的 |
| コンテンツフィルタリング | ✅完了 | ✅完了 | ✅完了 | ✅完了 | ✅完了 |
| 共有メモリ転送 | ✅完了 | ✅完了 | ✅完了 | ❌ なし | ✅完了 |
| TCPトランスポート | ✅完了 | ✅完了 | ✅完了 | ✅完了 | ✅完了 |
| ゼロコピー | ✅ サポート対象 | ✅ サポート対象 | ✅ サポート対象 | ❌ なし | ✅ サポート対象 |
規格準拠
| 標準 | 鋭敏なDDS | RTIコネクト | サイクロンDDS | OpenDDS | ファストDDS |
|---|---|---|---|---|---|
| OMG DDS 1.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
| なんてこった、DDSI-RTPS 2.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDS-XTypes 1.3 | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |
| OMG DDSセキュリティ 1.1 | ✅ | ✅ | ⚠️ | ✅ | ✅ |
| OMG IDL 4.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| DEF-STAN 23-009 (GVA) | ✅ | ❌ | ❌ | ❌ | ❌ |
| 土地データモデル v10.0.0 | ✅ | ❌ | ❌ | ❌ | ❌ |
言語とプラットフォームのサポート
| 能力 | 鋭敏なDDS | RTIコネクト | サイクロンDDS | OpenDDS | ファストDDS |
|---|---|---|---|---|---|
| C++ | C++20 | C++11 | C99ラッパー | C++11 | C++11 |
| C | C++経由 | ✅ ネイティブ | ✅ ネイティブ | ❌ | ✅ ネイティブ |
| Python | ✅ | ✅ | ✅ | ✅ | ✅ |
| さび | ✅ | ❌ | ✅ | ❌ | ❌ |
| Linux | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ | ✅ |
| VxWorks | ロードマップ | ✅ | ⚠️ | ✅ | ⚠️ |
| 組み込みシステム/RTOS | ✅ 設計対象 | ✅ マイクロバージョン | ⚠️ | ⚠️ | ⚠️ |
| 静的リンク | ✅ 単一ライブラリ | ⚠️ | ⚠️共有ライブラリ | ⚠️共有ライブラリ | ⚠️共有ライブラリ |
Astute DDSが勝利する理由
| RTI Connextとの比較 | 対サイクロンDDS | 対OpenDDS | 対高速DDS |
|---|---|---|---|
| 柔軟なライセンスオプション | X-Typesを完全にサポート | 完全な動的データAPI | オーストラリアを拠点とするサポート |
| オーストラリアのベンダーであり、ITAR(国際武器取引規則)に関する懸念はありません。 | 内蔵セキュリティ | 型検索サービス | GVAに完全準拠 |
| 単一ソースのフルGVAスタック | クラス最高のLDMX + ToolX | クラス最高のLDMX + ToolX | よりシンプルな導入 |
| LDM v10.0.0 が含まれています | 商業サポート | オーストラリアの管轄権 | 完全なXタイプ |
Why Astute DDS
「Astuteスタックを活用することで、GVA統合の期間を40%短縮できました。ミドルウェア、HMI、データモデルを1つのベンダーが担当することで、以前のプロジェクトで問題となっていた責任のなすりつけ合いが解消されました。」
— 英国防衛省プライム社 プログラムマネージャー
相互運用性を保証します
Astute DDSは、主要なDDS実装すべてと完全に相互運用可能です。車両は以下の機器とシームレスに通信できます。
ベンダーロックインはありません。パートナーシステムが異なるDDS実装を使用している場合でも、Astute DDSは変更なしで接続できます。
防衛基準への準拠
軍事要件に基づいて製造
| 標準 | 状態 |
|---|---|
| デフスタン 23-009 | ✅ 総付加価値税(GVA)に完全準拠 |
| 土地データモデル v10.0.0 | ✅ ドメインの種類をすべて網羅 |
| NATO STANAG | ✅ 相互運用性に対応済み |
| サイバーエッセンシャルズ | ✅ セキュリティ認証済み |
信頼できるセキュリティ
- 🔐暗号化された通信— 転送中のすべてのデータは保護されます
- 🎫証明書ベースの認証— 承認されたシステムのみが接続します
- 📋アクセス制御ポリシー— 各トピックについて、誰が公開または購読できるかを定義します
- 📝完全な監査ログ記録— セキュリティレビューのための完全な記録
生産現場で実証済み
複数のプログラムに展開
Astute DDSは、オーストラリア、英国、および同盟国の主要防衛企業から信頼されています。
| ドメイン | アプリケーション |
|---|---|
| 🎖️装甲車両 | 乗員ディスプレイ、センサー融合、兵器統合 |
| 🤖ロボット工学と自律システム | 無人地上車両、ロボットプラットフォーム、自律航法 |
| 🛡️対無人航空機システム(CUAS) | ドローンの探知、追跡、および無力化システム |
| ✈️地上管制ステーション | UAVの指揮統制、センサーフィード |
| 🚢海軍システム | ブリッジディスプレイ、ダメージコントロール、ナビゲーション |
| 🏭トレーニングとシミュレーション | 合成環境、事後検証、報告会 |
🎬 デモをリクエストする
Astute DDSとGVAスタック全体の動作をご覧ください。スタックの詳細については、こちらをご覧ください。または、今すぐデモをご依頼ください。
Frequently Asked Questions
Astute DDS を導入する際に開発者が最もよく尋ねる質問は次のとおりです。
1. Astute DDSとは何ですか?
Astute DDSは、OMGデータ配信サービスのC++20実装です。
(DDS) DCPS API、DDSI-RTPS 2.5ワイヤプロトコル、DDS-XTypes 1.3タイプシステム、
DDS-Security 1.1/1.2 プラグイン、および IDL 4.2 。静的ファイルとして提供されます。
ライブラリlibastutedds.a (C、Python、Rust バインディングを含む) が同梱されています。
astutedds-inspect診断GUIと相互運用可能なシェイプデモ。
2. トピックを公開したり、購読したりするにはどうすればよいですか?
DomainParticipant 、 Topic 、そしてDataWriter (パブリッシャー側)を作成します。
またはDataReader (購読者側):
using namespace astutedds::dcps;
auto dpf = DomainParticipantFactory::get_instance();
auto dp = dpf->create_participant(0, PARTICIPANT_QOS_DEFAULT, nullptr, 0);
auto topic = dp->create_topic("Hello", "HelloMsg", TOPIC_QOS_DEFAULT, nullptr, 0);
// Publisher
auto pub = dp->create_publisher(PUBLISHER_QOS_DEFAULT, nullptr, 0);
auto writer = pub->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, nullptr, 0);
writer->write(sample, HANDLE_NIL);
// Subscriber
auto sub = dp->create_subscriber(SUBSCRIBER_QOS_DEFAULT, nullptr, 0);
auto reader = sub->create_datareader(topic, DATAREADER_QOS_DEFAULT, nullptr, 0);「はじめに」>「最初のアプリケーション」をご覧ください。
3. read()とtake()の違いは何ですか?
-
read()はサンプルを返しますが、**それらをリーダーのキャッシュに残します**。そのため、後続の呼び出し(または同じサブスクライバー内の他のリーダー)がそれらを再度読み取ることができます。 -
take()サンプルを返し、キャッシュからそれらを**削除**します。
トピックが検査したい共有状態を表す場合はread()を使用してください。
繰り返し; トピックがイベントを表す場合はtake()を使用します。
1回だけ消費する。
4. 後から加入した購読者は、なぜ以前のサンプルを受け取れないのですか?
デフォルトではDURABILITYはVOLATILEなので、購読者より前に書き込まれたサンプルは
一致するものは配達されません。後から参加する人に過去のサンプルを配達するには、
ライターと対応するリーダーをTRANSIENT_LOCALで構成します
耐久性( RELIABLE性も必要となる):
DataWriterQos qos;
writer->get_qos(qos);
qos.durability().kind = TRANSIENT_LOCAL_DURABILITY_QOS;
qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer->set_qos(qos);ライターの再起動後も継続性を保つには、
パーシステンスサービスまたはTRANSIENT / PERSISTENT
耐久性の種類。
5. RELIABILITY QoSは何をしますか?
-
BEST_EFFORT(多くの組み込みトピックのデフォルト):ネットワーク上で失われたサンプルは再送信されません。オーバーヘッドが最小限です。 -
RELIABLE: ライターは、一致した各リーダーからの確認応答 (ACKNACK/ ハートビート) を追跡し、欠落したシーケンス番号を、
読者が追いつくか、履歴がいっぱいになった。
信頼性は書き手/読み手ごとに異なり、互換性が必要です: BEST_EFFORT
読者はRELIABLE書き手とマッチングできるが、その逆はできない。
6. DURABILITY QoSは何をしますか?
DURABILITY 、サンプルを読者に届けるために保管するかどうかが決まります。サンプルが書き込まれた後に結合する:
| 親切 | 後から参加する人も対象ですか? |
|---|---|
VOLATILE | いいえ |
TRANSIENT_LOCAL | はい、著者が存命中は |
TRANSIENT | はい、作家の生涯を通じて(永続化サービスを通じて) |
PERSISTENT | はい、プロセス再起動後も(ディスク上で)保持されます。 |
7. HISTORYとDURABILITYの違いは何ですか?
HISTORY ( KEEP_LAST(depth)またはKEEP_ALL ) は、ライター/リーダー キャッシュは、どの瞬間でも保持されます。DURABILITY DURABILITY 、
ライターは後で一致する読者にサンプルを提供する。彼らは協力して作業するが、
さまざまな問題を解決する: KEEP_ALLだけではサンプルは利用できない
遅れて参加した方々へ。
8. ドメインIDはどのように指定すればよいですか?
create_participantの最初の引数としてドメイン ID を渡してください。
auto dp = DomainParticipantFactory::get_instance()
->create_participant(42, PARTICIPANT_QOS_DEFAULT, nullptr, 0);異なるドメインの参加者は通信しません。DDSI-RTPSポート
式7400 + 250 * domain_id 、使用する基本 UDP ポートを決定します。
発見。
9. なぜ私の出版社と購読者は互いを見つけられないのでしょうか?
一般的な原因:
- ドメインIDが異なる場合― 両参加者は同じIDを使用する必要があります。
- マルチキャストがブロックされました— SPDP は
239.255.0.1で UDP マルチキャストを使用しています。
デフォルト設定です。ホストファイアウォールを確認し、IGMPスヌーピングを切り替えてください。 - ネットワークインターフェイスが間違っています— マルチホームホストでは、
ASTUTEDDS_NETWORK_INTERFACE=を設定してください。ASTUTEDDS_NETWORK_INTERFACE=または、検出JSON/XMLプロファイルで設定します( JSON検出設定を参照)。 - 互換性のないQoS ― 質問15を参照してください。
- 異なるトランスポート- 両方のピアが UDPv4 (または両方とも UDPv6、
TCP、SHM)。
ASTUTEDDS_LOG_LEVEL=traceでトレースログを有効にしてパケットを検査するastutedds-inspectでキャプチャします。
10. どのようなIDL機能がサポートされていますか?
同梱されているastutedds-idlコンパイラは、OMG IDL 4.2 を実装しており、以下の機能が含まれています。
- プリミティブ型(
boolean、octet、整数型int8–uint64、float/double/long double、char/wchar、string/wstring)。 - 構造体、共用体、列挙型、ビットマスク、型定義。
- 有界および無界のシーケンス、配列、マップ。
-
@key、@id、@optional、@default、@range、@min、@max、@unit、@extensibility(FINAL|APPENDABLE|MUTABLE)、@nested。 - 定数と
module名前空間。
生成されるC++コードは、デフォルトでXCDR2を使用し、相互運用のためにオプションでXCDR1を使用します。
11. 自分で公開したサンプルをどのようにフィルタリングすればよいですか?
2つの選択肢:
- 参加者レベルで無視する:
dp->ignore_publication(handle)を呼び出す
ローカルライターのInstanceHandle_t渡します。 -
SampleInfo::publication_handleを使用してリーダーコールバックでフィルタリングします。
そしてそれをあなたのライターのget_instance_handle()と比較します。
コンテンツフィルタリングされたトピックでは、自己公開されたキーフィールドを除外することもできます。
12. トピック名に使用できる文字は何ですか?
トピック名にはASCII英数字、アンダー_ 、および/を含めることができます。
階層区切り文字。長さは256文字までです。先頭文字は避けてください。
数字と予約済みのDDS組み込みプレフィックス( DCPS 、 dds )。型名は以下に示す。
同じルール。
13. リモートの書き込みユーザーまたは読み取りユーザーが離脱したことを検知するにはどうすればよいですか?
DataReaderListenerをインストールし、 on_subscription_matchedを実装します。
on_liveliness_changed 、またはpoll reader->get_subscription_matched_status() 。 current_count_changeピアが一致しなくなった場合、このフィールドは負の値になります。
ライブリネスはLIVELINESS QoSによって制御されます。
kind = AUTOMATIC_LIVELINESS_QOS検出するためのlease_duration付き限られた時間の中で、静かに寄り添う仲間たち。
14. 新しいデータが到着したときにコールバックを受け取るにはどうすればよいですか?
DATA_AVAILABLE_STATUSマスクを使用してリスナーをアタッチします。
class MyListener : public DataReaderListener {
void on_data_available(DataReader* reader) override {
// call reader->take(...) here
}
};
reader->set_listener(&listener, DATA_AVAILABLE_STATUS); on_data_availableは、新しいサンプルとインスタンスライフサイクルの両方で発生します。変更があります。SampleInfo SampleInfo::valid_data逆参照する前に必ず検査してください。
サンプルペイロード。
15. 「互換性のないQoS」とはどういう意味ですか?
ライターとリーダーが一致するのは、すべてのリクエスト/オファーQoSが
互換性がある:
| ポリシー | 要求 ≤ 提供 |
|---|---|
RELIABILITY | 読者BEST_EFFORT ≤ 執筆者RELIABLE |
DURABILITY | リーダーの種類 ≤ ライターの種類(仕様上の順序) |
DEADLINE | 読者period ≥ 執筆者period |
LATENCY_BUDGET | 読者のduration ≥ 執筆者のduration |
OWNERSHIP | 同等でなければならない( SHAREDまたはEXCLUSIVE ) |
PARTITION | 少なくとも1つのパーティション名が重複する必要があります |
on_offered_incompatible_qos / on_requested_incompatible_qosをリッスンしてください。
実行時に正確なポリシーIDを見つける。
16. UDPデータグラムよりも大きなサンプルを送信するにはどうすればよいですか?
Astute DDSは、設定されたサイズよりも大きいサンプルを自動的に断片化します。
fragment_size (IPv4 のデフォルトは 1344 バイト) でフラグメントを再構成し、 DDSI-RTPS DATA_FRAGサブメッセージを使用するリーダー。信頼性プロトコル
サンプル全体を再送信することなく、欠落した断片を復元します。
非常に大きなサンプル(1 MB以上)の場合は、OSソケットバッファを増やしてください。
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608また、ローカルリーダーには共有メモリ転送方式への切り替えを検討してください。
17. どのネットワークインターフェースを使用するかを設定するにはどうすればよいですか?
優先順位の高い順に、以下の3つの選択肢があります。
- 環境変数:
ASTUTEDDS_NETWORK_INTERFACE=eth0。 - JSON ディスカバリ設定 — JSON ディスカバリ設定を参照してください。
- XML QoS プロファイル — DDS-XML QoS プロファイルを参照してください。
何も設定されていない場合、Astute DDS は、
マルチキャスト対応アドレス。
18. マルチキャストを使用しないネットワークでAstute DDSを使用できますか?
はい。2つの選択肢があります。
- ユニキャスト SPDP ピア リスト: ピア ホスト/ポート ペアのリストを
検出設定; Astute DDS は、各ピアに SPDP アナウンスをユニキャストします。 - TCPトランスポート:参加者をTCP RTPSトランスポートに切り替える
UDPを完全にブロックする環境。参照
分離されたネットワーク間を接続するためのDDSドメインルーター。
19. 低遅延を実現するにはどうすれば良いですか?
- 両端で
KEEP_LAST(1)履歴付きのRELIABLE信頼性を使用する
再送信は最小限に抑えられています。 - 同一場所にいる参加者向けに、共有メモリ転送を有効にします。
- CPUアフィニティを使用してAstute DDSスレッドを固定し、リアルタイムスケジューリングを使用する
パブリッシャーおよびサブスクライバーのプロセスで (SCHED_FIFO) が有効になります。 - UDP(デフォルト)を使用することで、Nagleプロトコルを無効にできます。
- バーストを吸収するためにソケットバッファを増やしてください(質問16を参照)。
- バッチ処理の遅延を無効にするには、
LATENCY_BUDGET = 0に設定してください。
20. 大規模なサンプルを公開すると、なぜレイテンシーが急上昇するのでしょうか?
サンプルがOSのデフォルトのソケットバッファ(Linuxでは通常208KB)を超えると、
カーネルがパケットをドロップし、信頼性の高いプロトコルが再送信する必要があるため、
スパイクnet.core.rmem_max / net.core.wmem_maxを少なくとも
サンプルサイズがこの問題を解決します。 fragment_sizeを小さくしてフラグメント化することを検討してください。
損失のあるネットワーク上で。
21. 2つのDDSドメインをブリッジするにはどうすればよいですか?
Astute DDS ドメイン ルーターを使用します。これは、2 つ以上のドメインを結合するサービスです。
ドメイン間で構成済みのトピックを転送し、オプションで
キー/コンテンツフィルタリングとQoS変換。参照
DDSドメインルーター
22. どのような言語バインディングが利用可能ですか?
| 言語 | 状態 | 注記 |
|---|---|---|
| C++20 | 安定した | 主要API — libastutedds.a |
| C | 安定した | FFI用のフラットC APIについては、 include/astutedds/c/astutedds.h参照してください。 |
| Python | 安定した | pybind11 バインディング、CPython 3.10~3.13 |
| さび | ベータ | astuteddsクレート(C APIを安全にラップしたもの) |
23. サポートされているプラットフォームとOSバージョンはどれですか?
| プラットフォーム | テスト済みバージョン |
|---|---|
| Linux | Ubuntu 22.04 / 24.04、RHEL 9 / 10、AlmaLinux 9 / 10、Debian 12 |
| Windows | Windows 10、Windows 11、Windows Server 2022 |
Linux Python ホイールにはmanylinux_2_28 (glibc ≥ 2.28) というタグが付けられており、
互換性のあるあらゆるディストリビューションで動作します。
24. DDSセキュリティを有効にするにはどうすればよいですか?
- プロビジョニングID(X.509)およびパーミッション(署名付きXML)アーティファクト。
- 認証、アクセス制御、および参加者プロパティ QoS を構成します。
暗号化プラグインのプロパティ (CA 証明書、ID 証明書/キー、パーミッション ファイル、
ガバナンスファイル)。 -
-DASTUTEDDS_ENABLE_SECURITY=ONで構築された Astute DDS へのリンク。
エンドツーエンドの手順については、 DDSセキュリティを参照してください。
ガバナンス/権限テンプレート。
25. 再起動後もデータを保持するにはどうすればよいですか?
ドメインと並行して永続化サービスを実行します。これは、
TRANSIENT / PERSISTENTトピックを設定し、サンプルをローカルに保存します。
データベース(デフォルトでは SQLite)にデータを送信し、後から参加するユーザーに再公開します。
購読者 ― 元の著者が亡くなった後に加入した購読者も含む。
永続化サービスを参照してください。
26. 交通情報を録音・再生するにはどうすればよいですか?
バンドルされているastutedds-recordツールを使用してドメインをキャプチャします
.astdbファイルとastutedds-replayを使用して、調整可能な形式で再公開します。時間スケーリング。録音はタイプを認識し、内部的にXCDR2を使用します。参照
録画と再生。
27. 購読者に影響を与えずにデータ型を進化させるにはどうすればよいですか?
IDL 型に@extensibility(MUTABLE) (またはAPPENDABLE ) を注釈として付け、
各メンバーに@id(N)のタグを付けます。XCDR2の可変ストリームでは以下が可能です。
- 両端に新しいメンバーを追加する。
- オプションメンバーを削除します。
- メンバーの並び替え。
不一致のメンバーは、X-Typesの割り当てルールによってスキップされます。
@extensibility(FINAL)はレイアウトをロックし、バイナリの場合に使用する必要があります旧型のXCD-R1リーダーとの互換性は重要です。
28. コンテンツフィルターで絞り込んだトピックはどのように使用すればよいですか?
SQLライクなフィルタを使用して、通常のトピックからContentFilteredTopicを作成します。
式を呼び出し、それにDataReaderバインドします。
std::vector params{"42"};
auto cft = dp->create_contentfilteredtopic(
"HighSeverity", topic, "severity > %0", params);
auto reader = sub->create_datareader(cft, DATAREADER_QOS_DEFAULT, nullptr, 0); 帯域幅を節約するため、可能な場合は書き込み側でフィルタが評価されます。
29. XMLファイルからQoSを設定するにはどうすればよいですか?
XmlQosLoaderを使用してDDS-XMLプロファイルを読み込み、作成時に適用します。
エンティティ:
XmlQosLoader loader;
loader.load_file("qos_profiles.xml");
auto qos = loader.get_datawriter_qos("MyLib", "ReliableProfile");
auto writer = pub->create_datawriter(topic, qos, nullptr, 0);スキーマと動作については、 DDS-XML QoS プロファイルを参照してください。
例。
30. 相互運用性や検出に関する問題をデバッグするにはどうすればよいですか?
- ドメインに対して
astutedds-inspect実行して、検出された内容を表示します。
参加者、エンドポイント、マッチング状況をリアルタイムで確認できます。 -
tcpdump -i any -w dds.pcap 'udp port 7400 or portrange 7400-7500'でトラフィックをキャプチャし、RTPS ディセクタである Wireshark で開きます。
SPDP、SEDP、およびユーザーデータをデコードします。 - トレースログを有効にする:
ASTUTEDDS_LOG_LEVEL=trace ASTUTEDDS_LOG_FILE=/tmp/astutedds.log。 - エンティティIDとポートを確認します。
- SPDP ライター/リーダー:
00:01:00:c2/00:01:00:c7 - SEDP 発行:
00:00:03:c2/00:00:03:c7 - SEDP サブスクリプション:
00:00:04:c2/00:00:04:c7 - ベースポート:
7400 + 250 × domain_id。
- SPDP ライター/リーダー:
- 両方のピアが互換性のあるベンダーIDとプロトコルバージョンを通知していることを確認してください。
(DDSI-RTPS 2.5)