DDS Blockset Shapes Demo

news2025/2/24 10:58:40

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解分布式锁

知识点&#xff1a; 单体锁存在的问题&#xff1a; 单体锁&#xff0c;即单体应用中的锁&#xff0c;通过加单体锁&#xff08;synchronized或RentranLock&#xff09;可以保证单个实例并发安全 单体锁是JVM层面的锁&#xff0c;只能保证单个实例上的并发访问安全 如果将单…

vue2结合element-ui实现TreeSelect 树选择功能

需求背景 在日常开发中&#xff0c;我们会遇见很多不同的业务需求。如果让你用element-ui实现一个 tree-select 组件&#xff0c;你会怎么做&#xff1f; 这个组件在 element-plus 中是有这个组件存在的&#xff0c;但是在 element-ui 中是没有的。 可能你会直接使用 elemen…

nginx配置文件和配置命令详解案例

一.nginx.conf配置结构 1.1配置结构图 1.2 nginx中配置nginx.conf配置内容 #user nobody; user root; # 表示worker进程是有root用户去执行的 worker_processes 2; events {# 默认使用epolluse epoll;# 每个worker链接最大数据worker_connections 1024; } http {include …

Java入门基础学习笔记14——数据类型转换

类型转换&#xff1a; 1、存在某种类型的变量赋值给另一种类型的变量&#xff1b; 2、存在不同类型的数据一起运算。 自动类型转换&#xff1a; 类型范围小的变量&#xff0c;可以直接赋值给类型范围大的变量。 byte类型赋值给int类型&#xff0c;就是自动类型转换。 pack…

【MySQL基本查询(下)】

文章目录 一、update案例 二、Delete案例注意&#xff1a;delete 全表数据的行为慎用&#xff01;truncate 三、插入查询结果案例 四、了解一些函数1.count函数2.sum函数3. avg函数4.max函数5. min函数 五、group by子句的使用案例having和where 一、update 该关键字的功能就是…

基于SpringBoot的全国风景区WebGIS按省展示实践

目录 前言 一、全国风景区信息介绍 1、全国范围内数据分布 2、全国风景区分布 3、PostGIS空间关联查询 二、后台查询的设计与实现 1、Model和Mapper层 2、业务层和控制层设计 三、WebGIS可视化 1、省份范围可视化 2、省级风景区可视化展示 3、成果展示 总结 前…

C++ 抽象与封装

一 抽象 抽象实例&#xff1a;时钟 数据抽象&#xff1a; 具有表面当前时间的时、分、秒 行为抽象&#xff1a; 具有设置时间和显示时间两个最基本的功能。 抽象实例&#xff1a;人 数据抽象&#xff1a;姓名、年龄、性别等。 行为抽象&#xff1a; 生物属性&#xff1a;吃…

Cocos creator实现《战机长空》关卡本地存储功能

Cocos creator实现《战机长空》关卡本地存储功能 Cocos creator在开放小游戏过程中&#xff0c;经常会出现设置关卡&#xff0c;这里记录一下关卡数据本地存储功能。 一、关卡设置数据 假如我们有关卡数据如下&#xff0c; let settings [ { level: 1, // 第1关 score: 0,…

Java类加载器介绍

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

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-11 0…

系统架构设计师 - 计算机组成与体系结构(1)

计算机组成与体系结构 计算机组成与体系结构计算机结构 ★CPU 组成结构运算器组成控制器组成 计算机体系结构冯诺依曼结构哈弗结构 嵌入式芯片&#xff08;了解&#xff09; 存储系统 ★★★★概述Cache主存编址磁盘管理磁盘基本结构与存取过程磁盘优化分布存储磁盘管理 大家好…

C++:多态-重写和重载

重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是面向对象编程中常用的两个概念&#xff0c;它们虽然都涉及到方法的定义&#xff0c;但是在实现和使用上有着不同的特点。 重写&#xff08;Override&#xff09;&#xff1a; 重写是指在子类中重…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言&#xff0c;虽然之前没接触过这门语言&#xff0c;但在大模型的帮助下&#xff0c;边看项目边写代码也能进行go的项目开发&#xff0c;不过&#xff0c;写了一段时间代码之后&#xff0c;总感觉对go语言本身&#xff0c;我的知识体…

【SRC实战】合成类小游戏外挂漏洞

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合” 合成类小游戏三个特点&#xff1a; 1、一关比一关难&#xff0c;可以参考“羊了个羊” 2、无限关卡无限奖励&#xff0c;可以参考“消灭星星…

BBS客户端服务器的编写

根据网络编程中的内容&#xff0c;我们本篇文章将讲解一个bbs通信的项目&#xff0c;首先让我们了解一下什么是bbs. 一、bbs介绍 BBS&#xff0c;即Bulletin Board System的缩写&#xff0c;中文译为“电子公告板系统”或“网络论坛”。它是一个在网络上进行信息交流和讨论的…

【科研】常用的实验结果评价指标(1) —— R2(R-square)是什么?

常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能为负数吗&#xff1f;&#xff01; 提示&#xff1a;先说概念&#xff0c;后续再陆续上代码 文章目录 常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能…

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…

【智能算法应用】基于麻雀搜索算法-支持向量回归预测(SSA-SVR)

目录 1.算法原理2.数学模型3.结果展示4.调试记录5.参考文献6.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 支持向量机(SVM)是针对二分类问题&#xff0c;支持向量回归(SVR)基于SVM应用与回归问题。SVR回归与SVM分类的区…

【JVM】了解JVM规范中的虚拟机结构

目录 JVM规范的主要内容 1&#xff09;字节码指令集(相当于中央处理器CPU) JVM指令分类 2&#xff09;Class文件的格式 3&#xff09;数据类型和值 4&#xff09;运行时数据区 5&#xff09;栈帧 6&#xff09;特殊方法 7&#xff09;类库 JVM规范的主要内容 1&#…