FourierDDS
1. 概述
FourierDDS 是 Fourier 机器人软件使用的 DDS 通信 SDK。它基于 Fast DDS 提供 C++ 和 Python API,用于创建 participant、发布 topic、订阅 topic,以及实现 request/response service。
本文面向已经安装 SDK 的应用开发者。使用这些 API 不需要 FourierDDS 源码。
| 元素 | 值 |
|---|---|
| C++ namespace | fourier_dds |
| Python package | fourierdds_py |
| DDS backend | Fast DDS |
| 默认安装前缀 | /opt/fftai |
| C++ 标准 | C++17 |
2. 通信检查清单
所有需要互相通信的 participant 都必须使用兼容配置。
| 配置项 | 要求 |
|---|---|
domain_id | 两端必须一致。 |
| Topic 或 service 名称 | namespace 和 ROS 兼容命名映射后必须一致。 |
| 消息类型 | 生成消息和 PubSubType 必须匹配。 |
| Namespace | 两端必须一致,或两端都关闭。 |
| ROS 兼容 | 与 ROS 2 兼容 DDS 名称通信时必须一致。 |
| Discovery Server | 启用时所有进程必须使用同一组 server 地址。 |
| QoS | Publisher 和 subscriber 的 QoS 必须兼容。 |
本机单机测试时,建议显式设置 domain,并关闭 namespace 和 Discovery Server。
3. 确认 SDK 已安装
3.1 C++ SDK
Bash
ls /opt/fftai/lib/cmake/fourier_dds/fourier_ddsConfig.cmake
ls /opt/fftai/fourier_dds_msgs/lib/libfourierdds_core.so*
如果 CMake 找不到 fourier_dds,设置:
Bash
export CMAKE_PREFIX_PATH=/opt/fftai:${CMAKE_PREFIX_PATH}
如果可执行程序运行时找不到共享库,设置:
Bash
export LD_LIBRARY_PATH=/opt/fftai/fourier_dds_msgs/lib:${LD_LIBRARY_PATH}
3.2 Python SDK
Bash
python3 - <<'PY'
import fourierdds_py
import fourierdds_py._core
import fastdds
from fourier_msgs_pod.msg.ActuatorState import ActuatorStatePubSubType
print("fourierdds_py:", fourierdds_py.__file__)
print("core binding: OK")
print("message package: OK")
PY
如果检查失败,请确认 fourierdds-py、fourierdds_core、Fast DDS、fastcdr 和生成消息包来自同一批兼容版本。
4. C++ SDK
4.1 CMake 接入
将 MotorCfgState 替换成目标消息包交付的消息库名称。
CMake
cmake_minimum_required(VERSION 3.13)
project(my_fourierdds_app CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(fourier_dds REQUIRED)
find_package(fastdds 3 REQUIRED)
add_executable(my_app main.cpp)
target_include_directories(my_app PRIVATE ${fourier_dds_INCLUDE_DIRS})
target_link_directories(my_app PRIVATE ${fourier_dds_LIBRARY_DIRS})
target_link_libraries(my_app PRIVATE
fastdds
${fourier_dds_LIBRARIES}
MotorCfgState
)
4.2 核心类
| 类 | 用途 |
|---|---|
fourier_dds::DdsNode |