目录
第一章:【FastDDS学习笔记】Ubuntu22上安装fastDDS环境
第二章:【FastDDS学习笔记】HelloWorld示例程序编译和运行
第三章:【FastDDS学习笔记】Fast-DDS-Gen安装记录
为什么选择FastDDS
eProsima Fast DDS是一个独立的 Cpp 中间件实现,提供OMG DDS 1.4和OMG RTPS 2.2可互操作的有线协议标准。
eProsima Fast DDS 速度惊人,在 Windows 和 Linux 中都击败了ZeroMQ和其他 DDS 中间件解决方案等替代方案。
该框架使用接口定义语言 (IDL) 从主题定义生成发布/订阅代码,允许开发人员专注于他的应用程序逻辑,而无需担心网络细节。
eProsima Fast DDS 是一款免费和开源软件(Apache License 2.0),具有多种功能和工具,以及商业支持选项。
Fast DDS Docker 映像现在 可供下载。
优点
-
高性能: 即使在低带宽环境中也能实现低延迟、高吞吐量 。请参阅性能基准。
-
轻松的多平台集成: Windows、Linux、Mac OS、QNX、VxWorks、iOS、Android、Raspbian/Debian Buster。
-
免费和开源: Apache 许可证 2.0
-
基于标准且可互操作的 DDS 合规性:符合 OMG DDS 1.4。
-
完全符合 RTPS:符合 OMG RTPS 2.2
-
提供个性化服务和商业支持
-
有据可查且易于使用:请参阅我们的 可用文档
-
非常适合: 机器人、物联网、汽车、关键应用。
安装FastDDS
要使用 Fast DDS 首先需要安装它,有 bin、Source、docker image 3 种方式.
但是 bin 和 docker image 需要到官网预留个人信息才能下载,所以这里可以考虑源码下载。
要下载 3 份源码:
- vendor
- fast cdr
- fast dds
在 ubuntu 下用 cmake 方式编译。
开始安装
参考文档: 官网
安装需要下载以下代码源码:
- foonathan_memory_vendor, STL兼容的C++内存分配库.
- fastcdr,支持 standard CDR 序列化机制的C++序列化库
- fastrtps, eProsima Fast DDS 库的核心库
安装编译工具
在unbuntu上安装首先需要相关的工具:
sudo apt install cmake g++ python3-pip wget git
安装FastDDS依赖的库
安装eProsima Fast DDS运行过程中依赖的库:
- Asio and TinyXML2 libraries
Asio and TinyXML2 libraries
Asio 是一个用于网络和低级 I/O 编程的跨平台 C++ 库,它提供了一致的异步模型。
TinyXML2 是一个简单、小巧、高效的 C++ XML 解析器。
在 Ubuntu 上使用以下命令:
sudo apt install libasio-dev libtinyxml2-dev
编译安装Foonathan memory
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=~/Fast-DDS/install -DBUILD_SHARED_LIBS=ON
cmake --build . --target install
执行效果(部分截图):
编译安装Fast CDR
Fast CDR,是一个 C++ 库,提供了两种序列化机制。
一种是标准的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=~/Fast-DDS/install
cmake --build . --target install
执行效果(部分截图):
编译安装Fast-DDS
cd ~/Fast-DDS
git clone git@github.com:eProsima/Fast-DDS.git
mkdir Fast-DDS/build && cd Fast-DDS/build
cmake .. -DCMAKE_INSTALL_PREFIX=~/dds/fast-dds/install -cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
cmake --build . --target install
执行效果(部分截图):
编译安装Fast-DDS-Gen(有报错,未解决)
Fast-DDS-Gen用来把IDL生成代码,并不妨碍代码执行。
cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-DDS-Gen.git
cd Fast-DDS-Gen
./gradlew build
注意:这里需要先安装Java环境
执行后发生以下问题:
安装gradle后,问题还是存在,今天先到这里,这个问题以后再解决。
可能的问题
下载的过程可能有点慢
如果下载失败,可以手动下载代码: 代码传送门
安装的权限设置(参考内容)
要在系统上直接安装,请删除和的配置步骤中出现的所有标志,并将配置步骤中Fast-DDS的第一个标志更改为foonathan_memory_vendor以下内容:
-DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON
注意:在系统目录上安装可能需要权限。也许权限必须通过 sudo.
sudo cmake --build . --target install