Generic DDS publisher

Overview

rtctkGenDdsPub is a troubleshooting tool to publish DDS Agnostic samples to several DDS topic(s) in parallel. It can be used to publish samples to verify if DDS agnostic topic data can be received on a particular machine. It can be run instead of Telemetry Republisher. For troubleshooting and diagnosis of FastDDS related problems some additional tools such as fastddsMonitor can be used. These additional tools are provided as part of FastDDS.

Prerequisites

Similar to other DDS based applications, the generic DDS publisher uses FastDDS as well. Its DDS QoS is configured using the default XML file telemDataPathDdsQos.xml which is installed in $INTROOT/resource/config/rtctk/dds/. A different file can be specified using the --qos-file command line option. This file needs to be located under rtctk/dds/ in the $CFGPATH.

Note

FASTRTPS_DEFAULT_PROFILES_FILE environment variable shall not be used (set). In particular, if the file that the variable points to contains the same QoS profiles.

Running

The generic DDS publisher is run by executing: rtctkGenDdsPub with the proper command line arguments. For a list of command line options run the executable with option -h.

E.g. run the publisher that publishes samples to three topics in parallel: TestTopic0 TestTopic1 TestTopic2

$ rtctkGenDdsPub -t TestTopic0 TestTopic1 TestTopic2

Initially it waits for a specified number of subscribers to be available (command line option -w [ --wait-for-subs ], default value is 1) for each topic passed as argument. This is indicated with a message like:

[12:48:07:983][INFO ][rtctkGenDdsPub] [TestTopic0] Waiting for a minimum number of subscriber(s) 0 of 1 before publishing.
[12:48:07:984][INFO ][rtctkGenDdsPub] [TestTopic1] Waiting for a minimum number of subscriber(s) 0 of 1 before publishing.
[12:48:07:984][INFO ][rtctkGenDdsPub] [TestTopic2] Waiting for a minimum number of subscriber(s) 0 of 1 before publishing.

When the required number of subscribers is reached, it starts publishing samples. If the debug option is specified on the command line (-d), messages are logged once every 1000 samples. These messages output the number of received samples, the average time between sample receiving, and the estimated (receiving) frequency for each published topic. E.g. for TestTopic0:

[12:49:34:519][DEBUG][rtctkGenDdsPub] [TestTopic0] Published sample 3000.
[12:49:34:520][DEBUG][rtctkGenDdsPub] [TestTopic1] Published sample 3000.
[12:49:34:520][DEBUG][rtctkGenDdsPub] [TestTopic2] Published sample 3000.
...

Messages informing that a DDS subscriber has matched/subscribed for particular topic (e.g. TestTopic0), as well as the current total number of (matched) subscribers are also logged. E.g.:

[12:51:45:266][INFO ][rtctkGenDdsPub] [TestTopic0] on_publication_match
[12:51:45:266][INFO ][rtctkGenDdsPub] [TestTopic0] on_publication_match - matched. Current matched: 1
[12:51:45:267][INFO ][rtctkGenDdsPub] [TestTopic1] on_publication_match
[12:51:45:267][INFO ][rtctkGenDdsPub] [TestTopic1] on_publication_match - matched. Current matched: 1
[12:51:45:268][INFO ][rtctkGenDdsPub] [TestTopic2] on_publication_match
[12:51:45:268][INFO ][rtctkGenDdsPub] [TestTopic2] on_publication_match - matched. Current matched: 1

The following message indicates that a DDS subscriber for a particular topic (e.g. TestTopic0) has gone (unmatched):

[12:56:59:004][INFO ][rtctkGenDdsPub] [TestTopic0] on_publication_match
[12:56:59:004][INFO ][rtctkGenDdsPub] [TestTopic0] on_publication_match - unmatched. Current matched: 0
[12:56:59:005][INFO ][rtctkGenDdsPub] [TestTopic1] on_publication_match
[12:56:59:005][INFO ][rtctkGenDdsPub] [TestTopic1] on_publication_match - unmatched. Current matched: 0
[12:56:59:006][INFO ][rtctkGenDdsPub] [TestTopic2] on_publication_match
[12:56:59:006][INFO ][rtctkGenDdsPub] [TestTopic2] on_publication_match - unmatched. Current matched: 0

Stopping

The process can be stopped using Ctrl-C.