An Easier Way to Design DDS Applications with RTI System Designer
Written by Fabrizio Bertocci
October 5, 2018
RTI System Designer is an easy-to-use (yet powerful!) tool, that is available as a prototype product since the release of RTI Connext DDS Pro 5.3. The online version can be started from within the standard Connext DDS installation, where it is launched from the RTI Labs tab of the Connext Launcher. It is also available directly from our Community site.
RTI System Designer can significantly help with understanding, designing, and configuring the various components of a Connext DDS-based system including data types, QoS, and (if your design is based on the RTI Application Creation) also entities, such as Topics, DomainParticipants, Publishers, Subscribers, DataReaders and DataWriters.
System Designer contains four major components:
- Type Editor: this component allows you to visualize, navigate and change the data types used by your DDS-based system. For large and complex systems which may rely on many data types, with often complex definitions, it can become overwhelming to access these definitions through the IDL or XML files. System Designer helps you understand and navigate your types by visualizing them all in one place, even when they are defined in multiple files. The Type Editor also allows you to modify or create new data types (structs, unions, and valuetypes), as well as non-instantiable entities like constants, bitsets, bitmasks, enumerations, and typedefs. System Designer lets you see and export your type definitions in XML or IDL. If, for example, you are not familiar with IDL syntax, you can create your type system using System Designer, then export an IDL or XML representation of it which can be consumed by rtiddsgen to generate type support code for your DDS applications.
- QoS Editor: the Quality of Service (QoS) section of System Designer can offer you that “quality of life improvement” you might need when facing the potentially overwhelming number of configurable QoS parameters that Connext DDS exposes to its users. The QoS Editor lets you create and edit all of the QoS profiles used by your system. Your profiles can inherit values from the built-in profiles included in the Connext DDS libraries. For each QoS profile, the QoS Editor will allow you to inspect the final value of each parameter, along with a description of how each value was obtained (by showing its inheritance chain). Any customized QoS parameter will be highlighted for easier reference, while default values will be shown (possibly derived from parent profiles) for those that are unassigned.
- Domain Editor: this section lets you customize the DDS domains used within your system. It provides a guided graphical user interface that allows you to build your DDS types and topics, including any topic-specific QoS configuration your system might need. The generated XML domain definitions can be deployed in your applications using XML Application Creation.
- Participant Editor: this is where all the magic happens! Here you will be able to define your system’s DomainParticipants, Publishers, Subscribers, DataReaders and DataWriters. Once all DDS entities have been defined with System Designer, the generated XML description can be loaded in your code using XML Application Creation, allowing you to instantiate and access all entities with a simple function call.
Using RTI System Designer together with RTI Connector (which relies extensively on XML Application Creation) gives you a very powerful way to create DDS-based applications in just a few minutes:
- Start by defining the data types used by your app with the help of the System Designer Type Editor.
- Define a DDS domain configuration that includes these types, then define topics with them which will be used by applications in your DDS system.
- Define at least one DomainParticipant, with a Publisher and/or subscriber, and all the DataReaders and DataWriters that your application needs.
- Alternatively, you can also use the artifacts generated by System Designer with RTI Prototyper with Lua.
That's it! Simply use Output objects to publish data from your application, and Input objects to read it in.
A newer version of System Designer with new powerful features (like XML direct file access, QoS inheritance, and configuration of DDS Security properties) is under active development and it will be made available soon. Meanwhile, if you want to have a taste of how System Designer works, you can test drive it using our online demo that you can find here – and, please let us know what you think in the comments!