SDK说明

一、概述

fd_api C++ SDK 是天链机器人外设的 C++ 共享库, 提供高效、低延迟的接口用于控制机器人升降、头部、腰部、手部四大外设模块, 并支持实时状态读取与异步订阅。适用于对性能要求较高的 C++ 上位机应用。

SDK 底层基于 ROS 2 通信机制实现,采用 PIMPL(Pointer to Implementation) 惯用法设计, 对外头文件不包含任何 ROS 头文件,使用者无需依赖 ROS 2 构建环境即可编译引用。

提供与 Python SDK 一致的接口语义,便于多语言团队协作维护。

核心特性

统一架构
Control / State 分离,职责清晰
PIMPL 封装
对外零 ROS 头文件暴露
双模状态
同步缓存读取 + 异步回调订阅
多手兼容
RoHand & Inspire 双后端
健康监控
外设健康 + 系统资源实时感知
自动限幅
头/腰部角度自动限幅防越界
零拷贝回调
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"
fd_api C++ 共享库
Control(控制)· State(状态)· types(类型)
PIMPL 实现 · 对外零 ROS 暴露
ROS 2(rclcpp)通信层
发布 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)。 请确保回调函数内部无竞态条件。
fd_api C++ SDK — 天链机器人 © 2026