SDK说明
fd_api C++ SDK 说明
天链机器人外设控制 · C++ 共享库软件开发工具包
PIMPL 封装 · 无 ROS 头文件暴露一、概述
fd_api C++ SDK 是天链机器人外设的 C++ 共享库, 提供高效、低延迟的接口用于控制机器人升降、头部、腰部、手部四大外设模块, 并支持实时状态读取与异步订阅。适用于对性能要求较高的 C++ 上位机应用。
SDK 底层基于 ROS 2 通信机制实现,采用 PIMPL(Pointer to Implementation) 惯用法设计, 对外头文件不包含任何 ROS 头文件,使用者无需依赖 ROS 2 构建环境即可编译引用。
提供与 Python SDK 一致的接口语义,便于多语言团队协作维护。
核心特性
统一架构
Control / State 分离,职责清晰
Control / State 分离,职责清晰
PIMPL 封装
对外零 ROS 头文件暴露
对外零 ROS 头文件暴露
双模状态
同步缓存读取 + 异步回调订阅
同步缓存读取 + 异步回调订阅
多手兼容
RoHand & Inspire 双后端
RoHand & Inspire 双后端
健康监控
外设健康 + 系统资源实时感知
外设健康 + 系统资源实时感知
自动限幅
头/腰部角度自动限幅防越界
头/腰部角度自动限幅防越界
零拷贝回调
const 引用传递,避免数据拷贝
const 引用传递,避免数据拷贝
可配置线程池
回调线程数可配置
回调线程数可配置
适用场景
- 高性能机器人上位机应用程序开发
- 实时机器人遥操作与远程监控系统
- 工业自动化流程集成
- 嵌入式 / 边缘计算节点部署
接口说明
详细的 Control / State 接口定义与使用方法请参见 《fd_api C++ 接口文档》。
二、支持的操作系统与软件版本
操作系统
| 平台 | 支持版本 | 架构 |
|---|---|---|
| Ubuntu | 20.04 LTS / 22.04 LTS | amd64 (x86_64) |
| 兼容 ROS 2 的 Linux 发行版 | — | amd64 (x86_64) |
ARM 架构(如 Jetson 系列)如需使用,请联系技术支持获取交叉编译方案。
软件依赖
| 组件 | 版本要求 | 说明 |
|---|---|---|
| ROS 2 | Humble / Galactic / Foxy | 通信中间件(仅运行时/编译需要) |
| C++ 标准 | C++17 | 编译要求 |
| 编译器 | GCC ≥ 9.4 | 支持 C++17 |
| colcon | ≥ 1.2 | ROS 2 构建工具 |
| CMake | ≥ 3.16 | 构建系统 |
ROS 2 依赖包
# ROS 2 Humble (Ubuntu 22.04)
sudo apt install ros-humble-std-msgs ros-humble-diagnostic-msgs
# ROS 2 Galactic (Ubuntu 20.04)
sudo apt install ros-galactic-std-msgs ros-galactic-diagnostic-msgs
# ROS 2 Foxy (Ubuntu 20.04)
sudo apt install ros-foxy-std-msgs ros-foxy-diagnostic-msgs
与 Python SDK 的区别:C++ SDK 对外头文件不包含任何 ROS 头文件, 链接时依赖 ROS 2 库;Python SDK 则直接依赖
rclpy 运行时环境。三、SDK 结构
3.1 包目录结构
fd_api/ # ROS 2 功能包根目录
├── package.xml # ROS 2 包元信息
├── CMakeLists.txt # 构建配置(C++ + Python 混合编译)
├── setup.py # Python 模块安装配置
│
├── include/ # C++ 对外头文件 ★
│ └── fd_api/
│ ├── control.h # Control 类声明
│ ├── state.h # State 类声明(含回调类型)
│ ├── types.h # 枚举类型定义
│ └── robot_state_types.h # 健康状态数据结构
│
├── src/ # C++ 实现源文件
│ ├── control.cpp # Control 实现(PIMPL)
│ ├── state.cpp # State 实现(PIMPL)
│ └── ... # 内部实现文件
│
├── fd_api/ # Python 模块目录
│ └── ...
│
├── test/
│ ├── api_test_node.cpp # C++ 交互测试节点
│ └── api_test_node_for_python_api.py
│
└── launch/
3.2 模块分层
上层应用程序
#include "fd_api/control.h"
▼
#include "fd_api/control.h"
fd_api C++ 共享库
Control(控制)· State(状态)· types(类型)
PIMPL 实现 · 对外零 ROS 暴露
▼
Control(控制)· State(状态)· types(类型)
PIMPL 实现 · 对外零 ROS 暴露
ROS 2(rclcpp)通信层
发布 Topic · 订阅 Topic
▼
发布 Topic · 订阅 Topic
机器人硬件外设
升降 · 头部 · 腰部 · 手部
升降 · 头部 · 腰部 · 手部
3.3 头文件说明
| 头文件 | 职责 | 公开内容 |
|---|---|---|
| include/fd_api/control.h | 控制接口声明 | fd_robot::Control 类、Control::Options 配置结构体 |
| include/fd_api/state.h | 状态读取/订阅接口 | fd_robot::State 类、State::Options 配置结构体、回调类型别名 |
| include/fd_api/types.h | 枚举类型定义 | HeadType · HandType · HandBackend |
| include/fd_api/robot_state_types.h | 健康状态数据结构 | HealthLevel · ApiFaultKind · PeripheralId · PeripheralHealth · SystemResources · RobotHealthSnapshot |
四、快速开始
4.1 环境准备
确保已安装 ROS 2 并完成环境配置:
source /opt/ros/humble/setup.bash
4.2 编译安装
# 在工作空间下编译
colcon build --packages-select fd_api
# 加载环境
source install/setup.bash
4.3 运行交互测试
ros2 run fd_api api_test_node
启动后进入菜单,可按按键交互测试各外设的控制与状态功能。详细接口使用请参见 《fd_api C++ 接口文档》。
五、注意事项
速度模式超时停止:升降速度模式(
lift_up / lift_down)下, 驱动在约 1 秒 内未收到新速度命令会自动停止, 上位机须 周期性调用(建议间隔 < 500ms),单次调用不足以维持连续升降。实机安全:运行前请确认机器人外设节点已启动且机器人处于安全状态。
头部角度限幅:
HeadType::kLower (yaw) 限幅 -45°~+45°, HeadType::kUpper (pitch) 限幅 -15°~+25°。输入超限值会被自动钳位。腰部角度范围:位置控制范围为 0°~35°。
回调线程安全:状态订阅回调在线程池中执行,线程数量由
State::Options::callback_thread_count 配置(默认 2)。 请确保回调函数内部无竞态条件。