DDS Blockset Shapes Demo

        此示例演示DDS模块集Blockset形状演示应用程序。Shapes Demo是一个常见的数据分发服务(DDS)应用程序,用于介绍DDS概念,你可以使用它发布和订阅以简单形状(圆形、方形和三角形)表示的主题,并观察发布者和订阅者的连接。许多提供使用DDS标准的产品和服务的组织都提供了自己版本的Shapes Demo,以展示DDS的核心功能。

        Shapes Demo的DDS模块集Blockset版本订阅Square主题,处理包括(x,y)位置的订阅者样本数据,并发布使用Square(x,y)位置值的Circle主题,每个值偏移一个常量。

        在本例中,你将:

  1. 查看DDS模块集Blockset形状演示使用的类型、域和主题定义。
  2. 查看实现订阅服务器和发布服务器的Simulink模型元素。
  3. 查看模型元素与DDS主题、数据读取器和数据写入器定义之间的DDS接口映射。
  4. 构建应用程序。
  5. 使用第三方Shapes Demo与DDS模块集Blockset可执行文件进行通信。

        DDS模块集Blockset为DDS供应商RTI和eProsima提供开箱即用的支持。此演示使用DDS RTI Connext软件,并且需要安装RTI Connex 6.1.0+软件。如果需要,你可以使用提供的RTI Connext软件的文件交换版本。有关下载和安装信息,请参阅DDS模块集Blockset系统要求。构建和部署DDS模块集Blockset模型还需要Embedded Coder。

1.视图类型和域定义

        此演示使用shapesdemo.slx模型,该模型已经从XML文件导入了类型和域参与者定义。

        DDS定义是从DDS XML文件shapesexample.XML导入的,并保存在shapesesample.sldd字典中。你可以打开shapesexample.xml文件来查看xml描述。有关如何导入XML或IDL定义的更多信息,请参阅导入或创建DDS定义。

        要在DDS Dictionary中查看导入的DDS定义,请打开.sldd文件。

open shapesexample.sldd

        数据字典将在模型资源管理器中打开。在“模型层次Model Hierarchy”窗格中,选择“Simulink根”>“shapesesample”>“DDS库”。然后,单击“打开DDS库Open DDS Libraries”。

        在DDS Dictionary的Types(类型)选项卡下,查看导入的数据类型。对于每个导入的数据类型,都可以在“详细信息”窗格中看到属性信息。例如,Simulink。总线结构ShapeType定义成员颜色、x、y和形状大小。

DDS字典中的这些数据类型是直接从XML文件shapesexample.XML导入的类型和定义。

<types>

    <const name="MAX_COLOR_LEN" type="int32" value="128" />

    <struct name="ShapeType">

        <member name="color" stringMaxLength="128" type="string" key="true"/>

        <member name="x" type="int32" />

        <member name="y" type="int32" />

        <member name="shapesize" type="int32" />

    </struct>

</types>

        在“域Domains ”选项卡下,查看域和主题定义。域ShapesDomain使用域ID 0,包括主题“Circle”、“Square”和“Triangle”。每个主题都使用注册的数据类型ShapeType,它描述了主题的有效负载数据。

        DDS字典中的这些域参与者定义直接从XML文件shapesexample.XML导入。

<domain_participant_library name="MyParticipantLibrary">

    <domain_participant name="MyParticipant"

                     domain_ref="ShapesDomainLibrary::ShapesDomain">

        <register_type name="ShapeType" type_ref="ShapeType" />

        <topic name="Square" register_type_ref="ShapeType" />

        <topic name="Circle" register_type_ref="ShapeType" />

        <topic name="Triangle" register_type_ref="ShapeType" />

        ...

    </domain_participant>

</domain_participant_library>

        在QoS选项卡下,你将查看服务质量(QoS)定义。由于此示例的XML中没有提供QoS定义,因此此选项卡为空。此演示中的发布者和订阅者使用DDS供应商提供的默认QoS配置文件。

2.视图发布服务器和订阅服务器模型构建

        打开Shapes Demo模型。

open_system("shapesdemo");

        在Shapes Demo的Simulink模型中,查看端口ports 和Take DDS Sample(获取DDS采样)块和Write DDS Sample块是如何用于订阅和发布形状的采样数据的。

2.1 查看订阅块Subscriber Blocks

        右键单击块MySubscriber.Square中的总线元素,并选择“块参数Block Parameters”。输入端口的DDS类型是ShapeType,总线是非虚拟的。

        在“获取DDS采样块DDS Sample block”上单击鼠标右键,然后选择“块参数”。“获取DDS样本”块将DDS数据类型转换为Simulink数据类型。

2.2 查看逻辑子系统Logic Subsystem

        双击Shapes Demo模型的逻辑子系统以打开。逻辑组件使用Simulink数据类型,并为发布者设置数据采样值。逻辑子系统将输出颜色配置为常量“RED”,将输出(x,y)位置设置为输入(x,y)位置,每个值偏移常量Distance,并将输出形状大小设置为常量MyShapeSize。

2.3 查看发布块Publish Blocks

        双击“写入DDS采样块DDS Sample block”以查看其属性。写入DDS样本块将Simulink数据类型转换为要发送的DDS数据样本。

        右键单击总线元素输出块MyPublisher。圈出,然后选择“块参数Block Parameters”。输出端口的DDS类型为ShapeType,其中更新的位置由x和y总线元件提供。

        此外,在配置参数中,此模型的根级输出日志记录未设置。

2.4 查看配置的DDS接口

        导入的XML描述,还包括发布者和订阅者的DataWriter和DataReader定义。你可以使用代码映射编辑器将主题topics、数据读取器data readers,和数据写入器data writers映射到输入Inports和输出Outports端口。

        在工具栏上,单击“代码界面Code Interface”,然后选择“单个元素代码映射Individual Elements Code Mappings”,将打开“代码映射Individual Elements Code Mappings”面板。

2.4.1 Inports

        要查看映射到输入端口的主题和数据读取器,请单击【Inports】选项卡。在topic列下,可以映射DDS字典中定义的主题。在ReaderXMLPath列下,可以映射导入的DDSDataReaders。

2.4.2 Outports

        要查看映射到输出端口的主题和数据写入程序,请单击“输出Inports ”选项卡。

3 构建和部署形状演示

        DDS模块集Blockset为DDS供应商RTIeProsima提供开箱即用的支持。此演示生成特定于DDS RTI Connext软件的可执行文件,并要求安装RTI Connex 6.1.0+软件。对于eProsimaFastDDS产品包含在DDS模块集Blockset中,无需额外设置。

        如果你没有安装RTI Connext软件,请参阅DDS模块集Blockset系统要求页面,了解有关开始使用RTI Connex的信息。构建和部署DDS模块集Blockset模型还需要Embedded Coder。

        此外,在构建模型之前,在MATLAB命令窗口中,使用mex命令验证是否为你的平台设置了受支持的C++编译器和受支持的编译器版本。有关每个平台要求的更多信息,请参阅DDS模块集Blockset系统要求。

mex -setup c++

   MEX configured to use 'Microsoft Visual C++ 2019' for C++ language compilation.

   To choose a different C++ compiler, select one from the following:

   ...

        要构建应用程序模型并生成C++代码,请在Tools Trip的DDS选项卡下单击【build】。

        要部署生成的可执行文件,请在MATLAB命令窗口中运行shapesdemo.exe可执行文件:

cd shapesdemo_ert_rtw/exe

!shapesdemo.exe

        当DDS Blockset Shapes Demo应用程序运行时,它订阅Square主题并发布一个提供偏移(x,y)位置的Circle主题。在MATLAB命令窗口中看不到输出。可执行文件在前台运行,因此在shapesdemo.exe运行时,你将无法访问MATLAB提示。

        下一节提供了有关可选地验证DDS可执行文件与订阅Circle主题并发布Square主题的其他DDS应用程序的连接的信息。

4 使用第三Shapes Demo应用程序与DDS模模块集BlocksetShapes Demo进行通信

        可以使用DDS模块集Blockset形状可执行文件与使用相同数据类型的其他DDS应用程序交换DDS数据。ShapeType数据类型是DDS中广泛用于演示目的的类型,不同的DDS供应商已经使用此ShapeType创建了桌面ShapeType演示应用程序。

        本文中的信息适用于使用RTI Shapes Demo 6.1.1的试用版与DDS模块集BlocksetShapes Demo可执行文件进行通信。运行RTI Shapes Demo 6.1.1提供了一个图形界面,在画布上显示已发布和订阅的ShapeType数据。或者,你也可以使用RTI Launcher附带的RTI Shapes Demo。

        要查看连接【connectivity】,可以使用RTI Shapes Demo应用程序在Square主题上发布一个形状,并订阅Circle主题。这是通过启动RTI Shapes Demo 6.1.1应用程序进行配置的,在控制窗口中,单击“发布Publish”下的“方形Square”,单击“订阅Subscribe”下的”圆形Circle “,并使用两者的默认值。

        DDS Blockset Shapes Demo应用程序订阅了Square主题。它接收RTI Shapes Demo第三方应用程序发布的Square样本数据,向Square的(x,y)位置添加偏移量,并发布使用偏移量(x,y)位置的红色圆圈。

        启动并配置RTI Shapes Demo应用程序后,你可以在RTI Shape Demo控制窗口中看到此通信。画布显示由RTI Shapes Demo发布的蓝色正方形,并显示正方形后面的最后六个红色圆圈样本。这些圆圈由DDS模块集Blockset形状演示发布,并由RTI形状演示订阅。RTI Shapes Demo显示了六个红色圆圈,因为在创建订户时,默认的“历史”QoS值设置为6,用户可以更改该值。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pony12

助力1000篇OpenDDS文

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值