主要内容

DDS定位系统的应用

这个示例展示了如何导入、建模和部署DDS应用程序。实例应用是一个多传感器定位系统,用于估计车辆的位置。该定位系统由三个组件组成:传感器组件、估计组件和显示组件。在定位系统中,传感器将数据发送给估计组件,估计组件计算车辆位置估计,然后将该估计发送给显示组件,以显示估计的车辆位置。

导入定位系统的DDS定义

对于定位系统,DDS定义(例如,域、主题、类型和QoS策略)在通用DDS块集工作流中,您可以使用DDS应用程序快速启动导入这些XML定义。在本例中,XML已经导入。要查看定位系统的XML规范,请打开XML文件定位系统.xml。要查看DDS块集中这些定义的表示形式,请打开DDS字典:

打开定位系统.sldd

建模和配置传感器组件

定位系统中的第一个组件是传感器。定位系统使用加速计和GPS(每个都由模型表示)来估计车辆位置。每个传感器模型都被构造为发布者。要查看模型结构和界面,请打开模型:

open_system (“ex_加速计”);

open_system (“ex_gps”);

在每个传感器模型中,您可以查看在Simulink中建模的Publisher的各个方面:金宝app

  1. 传感器模型逻辑,由模拟传感器输入数据的Function块组成。

  2. 将传感器数据从Simulink数据类型转换为DDS数据类型的写入DDS采样块。金宝app

  3. 发送DDS数据类型的总线元件输出块。

除了传感器的建模外,还为每个传感器模型配置了DDS接口。你可以在代码映射编辑器中查看每个传感器的DDS接口:

  1. 在toolstrip上,单击代码接口选择单个元素代码映射.

  2. 外港选项卡,您可以查看配置模式被设置为使用Writer XML路径。此配置将数据写入程序设置为XML中指定的定义。

建模和配置位置估计组件

第二部分是估计模型。估计模型接收来自传感器的数据并计算出车辆的估计位置。评估模型被构造为传感器的订阅服务器和显示组件的发布服务器。要查看模型结构和接口,请打开模型:

open_system (“ex_positionestimator”);

在估算模型中,您可以查看Simulink中建模的订阅者和发布者的各个方面:金宝app

  1. 估计模型有两个总线元件,在模块中配置为DDS数据类型,以接收传感器数据。

  2. 该模型有一个Take DDS Sample块附加到每个Bus Element块,以将DDS数据类型转换为Simulink数据类型。金宝app

  3. 估计模型计算用于估计车辆位置的逻辑。

  4. 该模型使用Write DDS Sample块将Simulink数据类型转换为DDS数据类型。金宝app

  5. 估算模型使用总线元件输出块将估算作为DDS数据类型发送到显示组件。

除了对估计模型进行建模外,还为估计模型配置了DDS接口。你可以在代码映射编辑器中查看DDS接口:

  1. 在toolstrip上,单击代码接口选择单个元素代码映射.

  2. 入口选项卡,您可以查看配置模式被设置为使用读取器XML路径. 此配置将DataReader设置为XML中指定的定义。

  3. 外港选项卡,您可以查看配置模式被设置为使用Writer XML路径。此配置将DataWriter设置为XML中指定的定义。

建模和配置显示组件

第三个组件是显示模型。显示模型接收并以图形方式显示估计的车辆位置。显示模型被构造为评估组件的订阅服务器。要查看模型结构和接口,请打开模型:

open_system (“ex_resultdisplay”);

在显示模型中,您可以查看作为Simulink中建模的订户的应用程序的各个方面:金宝app

  1. 估计模型有一个配置为DDS数据类型的总线元素块,以接收车辆位置估计。

  2. 该模型有一个Take DDS Sample块,将DDS数据类型转换为Simulink数据类型,以便它可以显示车辆估计。金宝app

  3. 显示部件的模型逻辑以图形方式显示车辆位置的估计值。

除了对显示模型进行建模外,还配置了DDS接口。您可以在代码映射编辑器中查看DDS接口:

  1. 在toolstrip上,单击代码接口选择单个元素代码映射.

  2. 入口选项卡,您可以查看配置模式被设置为使用读取器XML路径。此配置将DataReader设置为XML中指定的定义。

构建和部署定位系统

为了直观地展示DDS定位系统的应用,本实例模拟了DDS网络,展示了定位系统的结果。在加速度计和位置估计模型块之间放置一个队列块来模拟历史QoS。当您模拟该应用程序时,您可以在仪表板上看到位置估计系统生成的车辆位置比传感器输入的位置更准确。

open_system (“ex_定位系统”);

set_param (“ex_定位系统/DDS样本:GPSPos”,“时间跨度”,'10');设置参数(“ex_positioningsystem / DDS样本:EstPos”,“时间跨度”,'10');sim卡(“ex_定位系统”);设置参数(“ex_定位系统/DDS样本:GPSPos”,“时间跨度”,'100');设置参数(“ex_positioningsystem / DDS样本:EstPos”,“时间跨度”,'100');

要查看服务质量(QoS)对估计的影响,如果不遵守QoS,则结果不准确。

设置参数([“历史ex_positioningsystem /队列”换行符“QoS模拟”],...“评论”,“通过”)设置参数(“ex_定位系统/DDS样本:GPSPos”,“时间跨度”,'10');设置参数(“ex_positioningsystem / DDS样本:EstPos”,“时间跨度”,'10');sim卡(“ex_定位系统”);设置参数(“ex_定位系统/DDS样本:GPSPos”,“时间跨度”,'100');设置参数(“ex_positioningsystem / DDS样本:EstPos”,“时间跨度”,'100');

在回顾了定位系统的模拟之后,如果您想部署这个示例,您可以构建模型并使用可执行文件在DDS网络上部署这个应用程序。

相关的话题

外部网站