FastDDS cmake 安装 on linux

FastDDS 源码安装:

1. 安装 foonathan memory

# ----------------------
# for foonathan_memory
# ----------------------
mkdir ~/Fast-DDS && cd ~/Fast-DDS
git clone https://github.com/eProsima/foonathan_memory_vendor.git
mkdir foonathan_memory_vendor/build && cd foonathan_memory_vendor/build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON
sudo cmake --build . --target install

2. 安装 fast CDR

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-CDR.git
mkdir Fast-CDR/build && cd Fast-CDR/build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON
sudo cmake --build . --target install

3. 安装 eProsima Fast DDS

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-DDS.git
mkdir Fast-DDS/build && cd Fast-DDS/build
cmake ..  -DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON
sudo cmake --build . --target install

echo 'export LD_LIBRARY_PATH=/usr/local/lib/' >> ~/.bashrc

FastDDS 样例编译运行:

1. 编译

cd <Your DDS Directory>/Fast-DDS/examples/cpp/dds/HelloWorldExample/
mkdir build && cd build
cmake ../ && make

2. 运行

- Terminal 1

./DDSHelloWorldExample publisher

- Terminal 2

./DDSHelloWorldExample subscriber

- 运行结果

官网安装步骤链接:3. Linux installation from sources — Fast DDS 2.7.1 documentation (eprosima.com)https://fast-dds.docs.eprosima.com/en/latest/installation/sources/sources_linux.html#global-installation-sl

<think>好的,用户之前询问了GMock,现在又问Fast DDS。我需要先确认Fast DDS是什么。Fast DDS应该是与DDS(数据分发服务)相关的实现,可能是一个开源库。用户可能是在做分布式系统或实时通信方面的开发,之前用了GMock做测试,现在需要了解通信中间件。 首先,我需要回忆DDS的基本概念,确认Fast DDS的具体信息。记得DDS是一种用于实时系统的数据通信标准,常用于物联网、自动驾驶等领域。Fast DDS,原名eProsima Fast RTPS,是DDS标准的开源实现,由eProsima公司维护。它是基于RTPS协议(实时发布订阅协议),属于OMG组织定义的DDS规范的一部分。 用户可能想知道Fast DDS的核心功能、应用场景、优势,以及如何使用。可能需要与之前介绍的GMock结构类似,分点说明。同时,用户可能对如何开始使用Fast DDS感兴趣,比如安装、基本代码示例等。 需要检查Fast DDS的最新信息,比如是否改名或更新了重要特性。确认其支持的语言,主要是C++,可能也有其他语言的绑定。还要注意其与ROS 2的关系,因为Fast DDS是ROS 2默认的中间件,这点对用户可能有帮助。 用户可能的实际需求可能包括:在分布式系统中实现高效通信,需要低延迟、高吞吐量;或者是在自动驾驶项目中处理传感器数据。因此,需要强调Fast DDS在实时性、可靠性、可扩展性方面的优势。 需要组织回答的结构,比如核心功能、特点、使用场景、安装使用步骤、示例代码、资源链接等。同时,要注意与GMock的回答格式相似,保持一致性,方便用户比较和消化信息。 可能遇到的疑问点:DDS与其他通信协议(如MQTT、ROS)的区别,Fast DDS与其他DDS实现(如OpenDDS)的对比。虽然用户没直接问,但可能需要简要提及,以突出Fast DDS的优势。 需要确保技术细节准确,比如支持的QoS策略、平台支持、配置方式。同时,示例代码要简单明了,展示如何创建发布者和订阅者,让用户快速上手。 最后,提醒注意事项,比如性能调优、系统资源消耗,以及社区支持情况,帮助用户评估是否适合他们的项目。</think>Fast DDS(原名 **eProsima Fast RTPS**)是符合 **DDS(Data Distribution Service)** 标准的开源通信中间件,专为实时系统设计,广泛应用于物联网(IoT)、自动驾驶、机器人等分布式场景。它是 **ROS 2(Robot Operating System 2)** 默认的通信层实现。 --- ### **核心功能** 1. **实时数据分发** 基于 **RTPS(Real-Time Publish-Subscribe)** 协议,支持低延迟、高吞吐量的数据通信。 2. **灵活通信模式** - 发布-订阅模型(Topic-based) - 支持一对一、一对多、多对多通信 - 提供同步/异步数据传输 3. **服务质量(QoS)策略** 支持20+种QoS配置(如可靠性、持久化、生命周期控制),适应不同场景需求。 **示例配置**: ```cpp // 设置可靠通信模式 ReliabilityQosPolicy reliability; reliability.kind = RELIABLE_RELIABILITY_QOS; ``` 4. **跨平台兼容** 支持 Windows、Linux、macOS 及嵌入式系统(如 ARM 架构)。 --- ### **核心优势** - **实时性**:微秒级延迟,满足硬实时系统需求。 - **可扩展性**:支持数千节点的高效通信。 - **标准化**:遵循 OMG DDS 规范,兼容其他 DDS 实现(如 *OpenDDS*)。 - **开源免费**:Apache 2.0 协议,社区活跃(GitHub 仓库超 1.4k Star)。 --- ### **典型应用场景** | 领域 | 用途 | |----------------|----------------------------------------------------------------------| | **自动驾驶** | 传感器数据(激光雷达、摄像头)实时分发到多个计算节点 | | **工业物联网** | 设备状态监控与控制指令传输 | | **机器人** | ROS 2 中实现机器人各模块(导航、感知)间通信 | | **医疗设备** | 手术机器人指令同步、医疗仪器数据共享 | --- ### **快速上手示例** #### 步骤1:安装 Fast DDS ```bash # Linux(Ubuntu) sudo apt install ros-<distro>-fastrtps # 或从源码编译(推荐最新版本) git clone https://github.com/eProsima/Fast-DDS.git cd Fast-DDS && mkdir build && cd build cmake .. && make && sudo make install ``` #### 步骤2:编写发布者(Publisher) ```cpp #include <fastdds/dds/domain/DomainParticipant.hpp> int main() { eprosima::fastdds::dds::DomainParticipant* participant = eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->create_participant(0); // 创建Topic、Publisher和数据写入器(DataWriter) // ...(定义数据类型并发布数据) return 0; } ``` #### 步骤3:编写订阅者(Subscriber) ```cpp #include <fastdds/dds/subscriber/DataReader.hpp> class MyListener : public eprosima::fastdds::dds::DataReaderListener { public: void on_data_available() override { // 接收并处理数据 } }; int main() { eprosima::fastdds::dds::DomainParticipant* participant = /* 同发布者 */; // 创建Subscriber和DataReader MyListener listener; DataReader* reader = subscriber->create_datareader(topic, DATAREADER_QOS_DEFAULT, &listener); return 0; } ``` --- ### **性能优化建议** 1. **调整QoS策略** 根据场景选择`BEST_EFFORT`(速度优先)或`RELIABLE`(可靠性优先)。 2. **使用零拷贝(Zero-Copy)** 减少内存复制开销,提升吞吐量。 3. **配置线程池** 通过XML配置文件优化线程资源分配。 --- ### **学习资源** - **官方文档**:[Fast DDS Documentation](https://fast-dds.docs.eprosima.com/) - **GitHub仓库**:[eProsima Fast DDS](https://github.com/eProsima/Fast-DDS) - **示例项目**:[Fast DDS Examples](https://github.com/eProsima/Fast-DDS-examples) --- ### **与其他协议对比** | 协议 | 特点 | |-----------|----------------------------------------------------------------------| | **MQTT** | 轻量级,适合带宽受限场景,但实时性弱于DDS | | **ROS 1** | 基于TCP,无实时QoS支持;ROS 2已集成Fast DDS解决此问题 | | **gRPC** | 适合RPC调用,但流式数据处理效率低于DDS | --- 通过 Fast DDS,开发者可快速构建高效、可靠的分布式系统,尤其适合对实时性要求严苛的领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值