Fast RTPS on Windows
12月 1
ROS
ROS, Fast DDS
字数统计: 572(字)
阅读时长: 2(分)
网上很多资料是Linux环境下的配置步骤,这篇文章是在Windows下安装配置编译链接生成可执行程序的。
关于Fast DDS,可以参考官网 。
这里是参考了官网的Windows installation from sources
有三个package要安装
foonathan_memory_vendor , an STL compatible C++ memory allocator library. # 可以简单理解为申请内存的
fastcdr , a C++ library that serializes according to the standard CDR serialization mechanism. # 可以简单理解为序列化,反序列化的
fastrtps , the core library of eProsima Fast DDS library. # fast rtps的核心组件
环境的预配
Visual Studio
Chocolatey
CMake
git
OpenSSL(配置环境变量,如OPENSSL_ROOT_DIR=C:\Program Files\OpenSSL-Win64)
依赖
Asio
TinyXML2
依赖下载后,直接到文件夹里用
1 choco install -y -s <PATH_TO_DOWNLOADS> asio tinyxml2
CMake安装方法
我这里用的CMake安装,对比Colcon installation方法,我觉得更能知道install做了什么。
clone下面的每个package的代码,并用cmake编译。
在比如D盘位置,新建Fast-DDS文件夹,或者其他你自定义的文件夹,然后进入该文件夹
1 2 3 4 5 6 cd D:\Fast-DDSgit clone https://github.com/eProsima/foonathan_memory_vendor.git cd foonathan_memory_vendormkdir build && cd build cmake .. -DBUILD_SHARED_LIBS=ON cmake --build . --target install
cmake build默认是debug的,如果想release,那么添加–config Release
1 2 3 4 5 6 cd D:\Fast-DDSgit clone https://github.com/eProsima/Fast-CDR.git cd Fast-CDRmkdir build && cd build cmake .. cmake --build . --target install
1 2 3 4 5 6 cd D:\Fast-DDSgit clone https://github.com/eProsima/Fast-DDS.git cd Fast-DDSmkdir build && cd build cmake .. cmake --build . --target install
没问题后,在如下应该有。
Fast DDS-Gen的安装(可选)
Fast DDS-Gen是从idl文件生成cxx文件的。
环境配置,安装后再配置环境变量
Java JDK
Gradle
1 2 3 git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git cd Fast-DDS-Gengradle assemble
在Fast DDS-Gen文件夹里会有
share/fastddsgen, 有个.jar包
scripts, 有bat脚本,用来生成cxx文件。为方便使用,可以添加这个文件夹到系统环境变量或者每次都要指定这个fastddsgen.bat。
用法
1 2 3 4 5 // HelloWorld.idl struct HelloWorld { string message; };
1 D:\03-ROS\testFastRTPS> .../fastddsgen.bat -example CMake HelloWorld.idl
会生成如下文件
编译
管理员权限打开’Developer Command Prompt for VS 2019’
1 2 3 mkdir build && cd build cmake .. cmake --build .
这样就会生成Debug文件夹里的HelloWorld.exe
1 HelloWorld.exe publisher
1 HelloWorld.exe subscriber
会有这样的消息