1.开源Fast-DDS安装示例及DDS模型架构
开源Fast-DDS安装示例及DDS模型架构
讨论本文的源码主题之前,先更正一个错误,解析在 DDS概述及DCPS模型一文中提到:CP Autosar中,源码暂时不支持DDS。解析此处表述有误,源码CP Autosar R-版本中,解析opencv dilate源码已开始支持DDS。源码
提示:本文使用Linux(Ubuntu.4)操作系统
DDS和Autosar一样,解析是源码一套标准,任何组织或者个体,解析均可以去实现它。源码不同组织或者公司实现该标准时,解析会形成不同的源码风格和版本。比如:Fast-DDS就是解析一套开源的DDS标准实现,由eProsima维护。源码之前讨论的MICRO-XRCE-DDS也由eProsima发布。MICRO-XRCE-DDS需要代理(Agent),wordpress 外贸源码面向的对象是MCU这种资源紧缺的Device,如果使用域控或者中央大脑对应的平台,在资源和算力足够的情况下,可以使用Fast-DDS,不用代理。
Fast-DDS安装及注意事
本文讨论的开源Fast-DDS采用源码安装方式,安装参考链接: fast-dds.docs.eprosima.com...
(一)3.1. Fast DDS library installation
本文选择"3.1. Fast DDS library installation"小节的方式安装,按照提示,luacov源码解析逐步安装。
Q1:command vcs not found
A1:解决措施,修改PATH环境变量:PATH=$PATH:~/.local/bin
参考链接: cnblogs.com/tengzijian/...
(二)3.3. Fast DDS-Gen installation 安装Fast DDS-Gen的主要目的是根据用户自定义idl文件生成对应的源文件。编译Fast DDS-Gen之前,需要先安装Java JDK和Gradle。
需要将编辑好的*.idl文件放置在~~/Fast-DDS/Fast-DDS-Gen/Scripts文件下,*.idl文件放置位置如下所示:
在此文件夹下打开终端,并输入如下命令:
生成的dropwatch源码分析源文件如下所示:
HelloWord示例
(一)启动Publisher
在示例进程中,使用命令行启动Publisher进程,如下所示:
(二)启动Subscriber
在示例进程中,使用命令行启动Subscriber进程,如下所示:
(三)订阅/发布的通信示意
Publisher与Subscriber之间的发布、订阅行为如下所示:
DDS模型架构
DDS模型架构可以分为四层:Application、DDS、RTPS、Transport。贪玩辅助源码如下所示:
(一)Application
如果用户应用程序需要通过DDS协议与对等实体通信,可以直接调用封装的DDS API。发布数据时,可以调用DataWriter对象的Write()接口;接收数据时,可由SubscriberListener触发DataReader注册的on_data_on_readers()接口。
(二)DDS
DDS层可以部署多个DDS Domian,相同DDS Domian下的DomainParticipant通过Publish/Subscribe方式交互信息。关于DDS,后续文章会展开细节讨论,不在这过多赘述。
(三)RTPS
RTPS(Real-Time Publish-Subscribe),抽象传输层,为什么要抽象传输层呢?答:DDS协议并未有明确使用什么方式传输数据,但是,数据的交互又脱离不开通信方式。所以,这就是RTPS出现的目的。
(四)Transport
可使用多种方式传输DDS数据,eg:UDP、TCP、SHM(Shared Memory)。不管UDP还是TCP,使用的总线类型均为Ethernet,使用CAN或者其他总线是否可行呢?答:个人理解,可以。但是,任何方案的落地均脱离不了使用场景,如果使用场景是高速、大数据传输,选用CAN总线可不是一个明智之举。