fastdds通信中间件-简介(一)

本文介绍了DDS协议的基础概念及其实现方式,并重点讲解了fastDDS这一实现版本的特点与使用方式,包括其提供的API接口、生成序列化工具及RTPS协议接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、先了解下DDS

介绍fastdds前先了解下dds,dds是用于分布式软件应用通信的数据中心的通信协议,主要定义了通信应用程序的接口API和通信语义。同时DDS又是一个以数据为中心的发布订阅模型,因此定义了三个关键实体:发布者、订阅者、话题;
OMG组织定义了DDS通信协议和通信api,但是各个厂商对DDS协议进行了编译语言的实现,从而有了各种DDS的通信中间件;类似的还有opendds这些;
有兴趣的同学可以去OMG的官网看下原版协议
https://www.omg.org/

二、fastdds简介

前面已经说过fastdds仅仅是对DDS协议的一种实现;fastdds实现DDS协议后主要对外提供三种使用:

  • DDS的API接口
  • dds-gen用于生成学序列化和反序列化的java工具
  • RTPS协议的API接口

这里有一个新名词RTPS(实时发布订阅协议),在下图fastdds的整个架构我们可以看出dds层处于最上层,其核心层是和RTPS进行通信的,所以实际上RTPS已经能够实现订阅发布的功能,所有fastdds同样对外提供RTPS的API接口供原有熟悉rtps协议的人使用。
在这里插入图片描述
对于做应用开发的同学来说,和我们相关的是应用层和dds层的API接口,可以通过fastdds的官网熟悉fastdds已经实现的dds接口和常用定义
https://fast-dds.docs.eprosima.com/en/latest/index.html

<think>好的,我现在需要在Ubuntu上使用VSCode配置和开发FastDDS通信。首先,我得了解FastDDS是什么。FastDDS是eProsima实现的个DDS(Data Distribution Service)中间件,用于实时通信,广泛应用于物联网和分布式系统。用户想在Ubuntu上用VSCode进行配置和开发,需要指导他们安装必要的工具和库,配置开发环境,并编写测试代码。 首先,安装依赖项。可能需要安装CMake、g++、python3-pip等构建工具。然后,安装Fast-DDS本身,可以通过源码编译或者使用二进制包。接着,配置VSCode,安装C++扩展,配置CMake Tools,设置include路径和库路径。然后,创建个示例项目,编写IDL文件定义数据结构,生成代码,编写发布者和订阅者,配置CMakeLists.txt,编译运行测试。过程中可能遇到的问题包括依赖项缺失、路径配置错误、编译错误等,需要给出解决方法。还要考虑是否需要安装其他辅助工具,比如Wireshark来监控通信。最后,生成相关问题,比如如何调试FastDDS应用,如何优化性能等。</think>### 在Ubuntu上使用VSCode配置与开发FastDDS通信的步骤 #### 1. 安装系统依赖 ```bash sudo apt update sudo apt install -y cmake g++ python3-pip libssl-dev libasio-dev libtinyxml2-dev ``` 这些工具为编译FastDDS和项目提供基础支持[^2]。 #### 2. 安装Fast-DDS **方法1:源码编译** ```bash git clone --recursive https://github.com/eProsima/Fast-DDS.git cd Fast-DDS && mkdir build && cd build cmake .. -DTHIRDPARTY=ON sudo make install ``` **方法2:APT安装(推荐)** ```bash sudo apt install ros-foxy-rmw-fastrtps-cpp # 适用于ROS 2用户 # 或直接安装eProsima仓库版本 sudo apt install libfastcdr-dev libfastrtps-dev ``` #### 3. 配置VSCode环境 1. 安装扩展: - **C/C++**(Microsoft官方扩展) - **CMake Tools** 2. 配置`c_cpp_properties.json`: ```json "includePath": [ "/usr/include/fastrtps", "/usr/include/fastcdr" ], "compilerPath": "/usr/bin/g++" ``` #### 4. 创建示例项目 **目录结构:** ``` fastdds_demo/ ├── CMakeLists.txt ├── HelloWorld.idl ├── publisher.cpp └── subscriber.cpp ``` **HelloWorld.idl:** ```idl struct HelloWorld { unsigned long index; string message; }; ``` **生成代码:** ```bash fastddsgen HelloWorld.idl # 需安装fastddsgen工具 ``` #### 5. 编写CMakeLists.txt ```cmake cmake_minimum_required(VERSION 3.10) project(fastdds_demo) find_package(fastrtps REQUIRED) add_executable(publisher publisher.cpp HelloWorld.cxx HelloWorldPubSubTypes.cxx) target_link_libraries(publisher fastrtps) add_executable(subscriber subscriber.cpp HelloWorld.cxx HelloWorldPubSubTypes.cxx) target_link_libraries(subscriber fastrtps) ``` #### 6. 编译与运行 ```bash mkdir build && cd build cmake .. && make # 分别启动两个终端运行 ./publisher ./subscriber ``` #### 7. 调试配置(.vscode/launch.json) ```json { "configurations": [ { "name": "Debug Publisher", "type": "cppdbg", "program": "${workspaceFolder}/build/publisher" }, { "name": "Debug Subscriber", "type": "cppdbg", "program": "${workspaceFolder}/build/subscriber" } ] } ``` ### 常见问题解决 - **找不到fastddsgen**:通过`pip install fastddsgen`安装[^3] - **类型未注册错误**:确保IDL生成的代码包含在编译目标中 - **QoS配置失败**:检查XML配置文件路径是否正确
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值