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,用户可以更改该值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/611756.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何设计测试用例

一、介绍 测试用例就是一个文档&#xff0c;描述输入、动作、或者时间和一个期望的结果&#xff0c;其目的是确定应用程序的某个特性是否正常的工作。 二、基本格式 用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果等。 用例编号&#…

适合年轻人的恋爱交友脱单软件有哪些?中国十大社交软件排行榜分享

交友始祖&#xff1a;Tinder 一直很受欢迎&#xff0c;可以向上扫给 super like (每日有一次免费机会)。如果双方互相 like&#xff0c;代表配对成功&#xff0c;就可以开始聊天。另外&#xff0c;每日有 10 个 top picks 供选择&#xff0c;你可以免费选一位 主力编外&#xf…

添加一个索引要投产,需要哪些步骤?

编程一生 致力于写大家都能看懂的、有深度的 技术文章 05/2024 01 开场白 亚马逊有个bar raiser文化。就是说新招来的人一定要超过之前入职人员的平均水平&#xff0c;宁缺毋滥。越来越多的公司在推行这种文化。在这种氛围下&#xff1a;“虽然我不懂&#xff0c;但是活儿是能出…

一文了解webpack和vite中Tree-Shaking

1、什么是Tree-Shaking 1.1 摇树优化&#xff08;Tree Shaking&#xff09;是Webpack中一种用于优化JavaScript代码的技术。它的目标是通过静态分析&#xff0c;从代码中剔除未被使用的模块&#xff0c;从而减少最终打包文件的大小。 1.2 Tree-shaking 它的名字来源于通过摇晃…

纯血鸿蒙APP实战开发——数字滚动动效实现

介绍 本示例主要介绍了数字滚动动效的实现方案。 该方案多用于数字刷新&#xff0c;例如页面刷新抢票数量等场景。 效果图预览 使用说明&#xff1a; 下拉页面刷新&#xff0c;数字进行刷新。 实现思路 通过双重ForEach循环分别横向、纵向渲染数字。 Row() {ForEach(this…

基于SSM的文化遗产的保护与旅游开发系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的文化遗产的保护与旅游开发系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;…

Java中包的概念package

Package Package:包 指明方法、类所处的包&#xff1b; 将类分配到不同的包中&#xff0c;方便管理&#xff1b; 用于指明文件中定义的类、接口等结构所在的包&#xff1b; 一个源文件只要一个包的声明语句&#xff0c;必须放到开头&#xff1b; 属于标识符&#xff0c;满足命…

Java类加载器介绍

在Java中&#xff0c;类加载器是一种动态加载类的机制&#xff0c;它负责在运行时查找、加载和链接类文件。当Java应用程序需要创建某个类的对象时&#xff0c;类加载器会在运行时查找该类对应的.class文件&#xff0c;并将其加载到Java虚拟机中。Java类加载器通常分为三层&…

《ESP8266通信指南》15-MQTT连接、订阅MQTT主题并打印消息(基于Lua|适合新手|非常简单)

往期 《ESP8266通信指南》14-连接WIFI&#xff08;基于Lua&#xff09;-CSDN博客 《ESP8266通信指南》13-Lua 简单入门&#xff08;打印数据&#xff09;-CSDN博客 《ESP8266通信指南》12-Lua 固件烧录-CSDN博客 《ESP8266通信指南》11-Lua开发环境配置-CSDN博客 《ESP826…

空间复杂度

前言 通过上一节的学习&#xff0c;我们知道了衡量一个算法是否高效的标准就是复杂度&#xff0c;我们已经学习了时间复杂度&#xff0c;那么本节我们就了解一下空间复杂度的相关知识&#xff0c;那么我们废话不多说&#xff0c;正式进入今天的学习 空间复杂度 空间复杂度也是…

Bugku Crypto 部分题目简单题解(三)

where is flag 5 下载打开附件 Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ 看着像base64解码 尝试后发现&#xff0c;使用在线工具无法解密 编写脚本 import base64enc Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ tex…

机器学习——6.模型训练案例: 预测儿童神经缺陷分类TD/ADHD

案例目的 有一份EXCEL标注数据&#xff0c;如下&#xff0c;训练出合适的模型来预测儿童神经缺陷分类。 参考文章&#xff1a;机器学习——5.案例: 乳腺癌预测-CSDN博客 代码逻辑步骤 读取数据训练集与测试集拆分数据标准化数据转化为Pytorch张量label维度转换定义模型定义损…

MySQL慢查询SQL优化

一、慢查询日志 描述&#xff1a;通过慢查询日志等定位那些执行效率较低的SQL语句 查看 # 慢查询是否开启 show variables like slow_query_log%; # 慢查询超时时间 show variables like long_query_time%;执行SQL 开启慢查询日志 set global slow_query_log ON;设置慢查…

Secure Transformer Inference Made Non-interactive

目录 1.概述2.Attention2.1 Matrix multiplication (ciphertext-plaintext).2.2 Matrix multiplication (ciphertext-ciphertext)2.3 Placement of bootstrapping3.SIMD密文压缩和解压缩4.SIMD槽折叠5.实验结果 1.概述 我们提出了NEXUS&#xff0c;这是第一个用于安全变压器推…

pdf编辑软件,四款软件让你轻松玩转PDF编辑!

在信息爆炸的当今时代&#xff0c;PDF格式文档因其跨平台、不易被篡改的特性而深受大家喜爱。然而&#xff0c;如何高效地编辑PDF文档却成为许多人的难题。今天&#xff0c;我将为大家推荐四款实用的PDF编辑软件&#xff0c;让你轻松玩转PDF编辑&#xff0c;告别繁琐操作&#…

【Linux】为什么有僵尸状态,什么是僵尸进程,造成危害以及如何避免“内存泄漏”问题详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

基于Springboot的校园竞赛管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园竞赛管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

HarmonyOS开发案例:【生活健康app之编写通用工具类】(5)

本节将介绍日志打印、时间换算等通用工具类的编写和使用&#xff0c;工具类可以简化应用代码编写和业务流程处理。 日志类 日志类Logger旨在提供一个全局的日志打印、日志管理的地方&#xff0c;既可以规范整个应用的日志打印&#xff0c;也方便日后对日志工具类进行修改&…

02.文件IO

文件描述符 表述打开的文件的 它是open函数的返回值&#xff0c;一个进程启动之后&#xff0c;会默认打开3个文件标识符 0标准输入&#xff0c;1标准输出&#xff0c;2标准错误 新的打开的文件返回文件描述符表中未使用过的最小的文件描述符 open函数 用来打开或者新建一个文件…

vue3实现动态表格

vue3结合element-plus实现动态表格&#xff0c;可添加、删除、对单行数据判断。 实现效果&#xff1a;查看源代码 实现代码&#xff1a; <div class"arrTable-Box"><el-table :data"tableData" border max-height"250"><el-t…