SDK说明
双臂俯仰复合机器人 SDK 说明
Robot API · Python 软件开发工具包 · Ver 1.0
一、概述
Robot API 是双臂复合机器人平台的 Python 软件开发工具包(SDK), 提供统一、便捷的接口用于控制机械臂运动、底盘导航、视觉感知、坐标转换、末端执行器控制等全栈能力, 并支持实时状态读取、Web 远程监控与多种通信协议。
SDK 采用 分层模块化架构 设计,各功能包独立可插拔, 底层封装了 TCP Socket、串口 Modbus RTU、RS-485、USB 等通信细节, 上层应用无需关心硬件协议,通过简洁的 Python API 即可快速集成机器人控制功能。
API 接口详细说明与示例代码请参见单独的 API 接口文档页面。
核心特性
模块化架构
9 大独立功能包,按需组合
9 大独立功能包,按需组合
多协议支持
TCP / Modbus RTU / 串口 / USB / HTTP
TCP / Modbus RTU / 串口 / USB / HTTP
视觉全链路
D435 采集 → YOLO 检测 → 坐标转换 → 抓取
D435 采集 → YOLO 检测 → 坐标转换 → 抓取
统一 Web 控制台
HTTP + WebSocket 实时遥测推送
HTTP + WebSocket 实时遥测推送
多夹爪兼容
RG / PGC / EG2 三型夹爪,统一接口
RG / PGC / EG2 三型夹爪,统一接口
完整底盘能力
导航到点 / 巡游 / 速度控制 / 地图管理
导航到点 / 巡游 / 速度控制 / 地图管理
适用场景
- 双臂复合机器人上位机应用程序开发
- 视觉引导抓取与搬运系统集成
- 移动底盘自主导航与巡检
- 多传感器数据融合与自动化流程
- 远程 Web 监控与遥操作
系统框图
上层应用程序
from tianlian_arm_api import TianLianArmController
▼
from tianlian_arm_api import TianLianArmController
Robot API Python 模块
机械臂 · 底盘 · 相机 · 坐标转换 · YOLO · 升降 · 夹爪 · 舵机 · Web
▼
机械臂 · 底盘 · 相机 · 坐标转换 · YOLO · 升降 · 夹爪 · 舵机 · Web
硬件通信层
TCP Socket · Modbus RTU · RS-485 · USB 3.0 · HTTP
▼
TCP Socket · Modbus RTU · RS-485 · USB 3.0 · HTTP
机器人硬件设备
天链机械臂 · 云迹底盘 · D435 相机 · 升降轴 · 夹爪 · 头部舵机
天链机械臂 · 云迹底盘 · D435 相机 · 升降轴 · 夹爪 · 头部舵机
二、支持的操作系统与软件版本
操作系统
| 平台 | 支持版本 | 架构 |
|---|---|---|
| Ubuntu | 20.04 LTS / 22.04 LTS | amd64 (x86_64) |
| Windows | 10 / 11 | x86_64 |
| Jetson (Linux) | JetPack 5.x / 6.x | ARM (aarch64) |
Ubuntu 20.04+ 为推荐平台,RealSense / 串口 / YOLO 驱动支持最佳。
Python 版本
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Python | ≥ 3.8 | 推荐 3.10+ |
| pip | ≥ 21.0 | 包管理器 |
第三方依赖一览
| API 包 | 必需依赖 | 通信方式 | 操作系统 |
|---|---|---|---|
| tianlian_arm_api | pyserial pin==3.7.0 numpy scipy |
TCP 6001/7000 + RS-485 | Ubuntu / Windows |
| camera_api | pyrealsense2 opencv-python numpy |
USB 3.0 | Ubuntu / Windows |
| yunji_api | 仅 Python 标准库 | TCP Socket :31001 | Ubuntu / Windows |
| head_api | pyserial |
串口 RS-485 @9600 | Ubuntu / Windows |
| convert_transform_api | numpy scipy |
纯计算(无通信) | 全平台 |
| dahuan_api | pyserial |
Modbus RTU 串口 | Ubuntu / Windows |
| leesn_lift_api | fastapi uvicorn pyserial |
Modbus RTU + HTTP | Ubuntu / Windows |
| yolo_infer_api | ultralytics opencv-python numpy |
本地推理 | Ubuntu / Windows |
| robot_web_console | fastapi uvicorn websockets |
HTTP + WebSocket | Ubuntu / Windows |
基础依赖安装
# 基础依赖
pip install numpy scipy opencv-python requests
# 串口通信
pip install pyserial
# Web 服务
pip install fastapi uvicorn python-multipart websockets
# 深度学习推理
pip install ultralytics
# 相机驱动
pip install pyrealsense2
# 机械臂官方 SDK
pip install pin==3.7.0 numpy==1.24.0 scipy==1.8.0
三、SDK 结构
3.1 包目录结构
robot_api_new/ # SDK 根目录
│
├── README.md # 项目总体说明文档
│
├── tianlian_arm_api/ # ① 天链机械臂控制 API
│ ├── __init__.py # 包入口,导出全部公开 API
│ ├── arm_controller.py # 机械臂控制器(核心)
│ ├── gripper_controller.py # 钧舵 RG 夹爪 Modbus RTU 驱动
│ └── arm_sdk/ # 官方 TCB SDK (v22.07)
│
├── head_api/ # ② 头部舵机控制 API
│ ├── head_api.py # HeadControlSDK 主类
│ ├── servo_api.py # 舵机控制接口
│ └── test_api.py # 测试脚本
│
├── camera_api/ # ③ Intel D435 相机 API
│ ├── D435_rgb_depth.py # D435Camera 封装类
│ ├── camera_list.py # 相机列表工具
│ └── D435_API_接口对照表.md # 接口对照文档
│
├── yunji_api/ # ④ 云迹 WATER 底盘 API
│ ├── yunji_chassis_api.py # TCP 客户端封装(核心)
│ ├── yunji_demo.py # 演示程序
│ └── yunji_chassis_api_call_manual.md # 调用手册
│
├── leesn_lift_api/ # ⑤ 升降轴与夹爪控制 API
│ ├── web_server.py # FastAPI Web 服务(入口)
│ ├── device_manager.py # 设备管理器
│ ├── motor_service.py # 升降轴 Modbus 服务(核心)
│ ├── gripper_service.py # EG2 夹爪服务
│ ├── pgc_gripper_service.py # PGC 夹爪服务
│ ├── lift_client.py # 升降轴 HTTP 客户端
│ ├── gripper_client.py # 夹爪 HTTP 客户端
│ ├── leesn_control.py # Leesn Modbus 底层驱动
│ ├── config/devices.json # 设备配置文件
│ └── logs/ # 运行时日志
│
├── dahuan_api/ # ⑥ 大寰 PGC 夹爪 API
│ └── dahuan_api.py # PGCGripper Modbus RTU 驱动
│
├── convert_transform_api/ # ⑦ 坐标转换 API
│ ├── convert_transform_api.py # CameraToBaseConverter(核心)
│ ├── coordinate_transform.example.json # 配置文件示例
│ └── coordinate_transform_usage_example.py # 使用示例
│
├── yolo_infer_api/ # ⑧ YOLO 推理 API
│ ├── yolo_infer_api.py # YOLO 推理封装(核心)
│ ├── yolo_infer_config.example.json # 配置文件示例
│ └── yolo_infer_usage_example.py # 使用示例
│
├── yolo_api/ # ⑨ YOLO 完整推理服务
│ ├── inference/ # 推理模块
│ │ ├── yolo_infer_core.py # 推理核心
│ │ ├── send_camera_to_api.py # 相机推流 HTTP 服务
│ │ └── models/ # 模型文件
│ ├── training/ # 训练模块
│ │ ├── train_yolov8.py # 训练脚本
│ │ └── dataset.yaml # 数据集配置
│ └── logs/ # 日志
│
├── robot_web_console/ # ⑩ 统一 Web 控制台
│ ├── web_server.py # FastAPI 入口(默认 :8010)
│ ├── device_manager.py # 设备管理器
│ ├── config/devices.json # 设备配置
│ ├── services/ # 设备服务层
│ │ ├── lift_serial.py # 升降轴串口服务
│ │ ├── gripper_eg2.py # EG2 夹爪服务
│ │ ├── gripper_dahuan.py # PGC 夹爪服务
│ │ └── vacuum_stub.py # 吸盘 Stub
│ └── logs/ # 运行日志
│
└── 具身双臂复合机器人SDK手册.docx/pdf # 官方 SDK 手册
3.2 模块分层
上层应用程序
from tianlian_arm_api import TianLianArmController
▼
from tianlian_arm_api import TianLianArmController
Robot API Python 模块层
机械臂控制 · 视觉感知 · 底盘导航 · 坐标转换 · 末端执行器
▼
机械臂控制 · 视觉感知 · 底盘导航 · 坐标转换 · 末端执行器
硬件驱动 / 通信层
TCP 6001/7000 · Modbus RTU · RS-485 · USB · HTTP
▼
TCP 6001/7000 · Modbus RTU · RS-485 · USB · HTTP
硬件设备层
天链机械臂 · 云迹底盘 · D435 相机 · 升降轴 · 夹爪 · 头部舵机
天链机械臂 · 云迹底盘 · D435 相机 · 升降轴 · 夹爪 · 头部舵机
3.3 模块文件说明
| 模块 | 文件 | 职责 | 公开类 / 函数 |
|---|---|---|---|
| tianlian_arm_api | __init__.py |
模块入口,统一导出 | TianLianArmController · ArmConnectionConfig · JodellGripperController · GripperSerialConfig · 枚举类型 |
arm_controller.py |
机械臂控制接口 | TianLianArmController 类 |
|
gripper_controller.py |
钧舵 RG 夹爪驱动 | JodellGripperController · GripperSerialConfig · JodellGripperState |
|
| head_api | head_api.py |
头部舵机控制接口 | HeadControlSDK 类 |
servo_api.py |
舵机控制接口 | ServoControlSDK 类 |
|
| camera_api | D435_rgb_depth.py |
D435 相机封装 | D435Camera · list_realsense_devices() · print_realsense_devices() |
| yunji_api | yunji_chassis_api.py |
云迹底盘 TCP 客户端 | YunjiChassisClient · ChassisConfig |
| dahuan_api | dahuan_api.py |
大寰 PGC 夹爪驱动 | PGCGripper · GripStatus |
| leesn_lift_api | web_server.py |
FastAPI Web 入口 | app (FastAPI 实例) |
device_manager.py |
设备管理与命令分发 | DeviceManager |
|
motor_service.py |
升降轴运行态服务 | MotorService |
|
gripper_service.py |
EG2 夹爪服务 | GripperService |
|
pgc_gripper_service.py |
PGC 夹爪服务 | PGCGripperService |
|
lift_client.py |
升降 HTTP 客户端 | LiftClient |
|
gripper_client.py |
夹爪 HTTP 客户端 | GripperClient · GripperTelemetry |
|
leesn_control.py |
Leesn Modbus 底层驱动 | LiftAxis · KTechMotor |
|
| convert_transform_api | convert_transform_api.py |
坐标转换核心 | CameraToBaseConverter · convert_camera_to_base() · convert_camera_to_base_detail() · init_converter() |
| yolo_infer_api | yolo_infer_api.py |
YOLO 推理封装 | YoloInferAPI · init_yolo_infer_api() · infer_yolo_image() |
| robot_web_console | web_server.py |
统一 Web 控制台 | app (FastAPI 实例) |
device_manager.py |
设备管理与缓存 | DeviceManager |
3.4 通信协议总览
| 模块 | 协议 | 默认地址 / 端口 | 传输方式 |
|---|---|---|---|
| tianlian_arm_api | 自定义 TCP 协议 | 192.168.2.14:6001 (控制) / 7000 (运动) | TCP |
| tianlian_arm_api (夹爪) | Modbus RTU | /dev/ttyUSB0 @115200/8N1 | RS-485 |
| head_api | 自定义串口协议 | /dev/ttyUSB0 @9600 | RS-485 串口 |
| camera_api | librealsense | USB 3.0 | USB |
| yunji_api | 类 URL 字符串协议 | 192.168.10.10:31001 | TCP Socket |
| dahuan_api | Modbus RTU | /dev/ttyUSB0 @115200/8N1 | RS-485 |
| leesn_lift_api | Modbus RTU | /dev/ttyCH341USB0 @115200 | RS-485 串口 |
| leesn_lift_api (Web) | HTTP / WebSocket | 127.0.0.1:8000 | TCP |
| robot_web_console | HTTP / WebSocket | 127.0.0.1:8010 | TCP |
| yolo_infer_api | 本地进程内推理 | — | 内存 |
四、注意事项
机械臂安全:首次运行请使用低速(speed ≤ 10),确认示教器急停按钮有效, 避免超限运动导致碰撞。运行前务必确认工作空间无障碍。
速度模式超时:
lift_up / lift_down 速度模式下, 驱动约 1 秒 内未收到新速度命令会自动停止,上位机须周期性调用(建议间隔 < 500ms)。串口权限:Linux 下使用串口需将用户加入
dialout 组: sudo usermod -aG dialout $USER,然后重新登录。头部角度范围:舵机角度建议在 0~1000 范围内操作,初始位置为 500。 俯仰(ID:1)和偏航(ID:2)的机械限位请在实际测试中确认。
坐标转换校准:
rotation_cam_to_ee 必须为右手旋转矩阵(行列式=+1), 平移向量 translation_cam_to_ee_m 需通过手眼标定获得。方向正确但整体偏移时,优先调整平移向量。YOLO 深度鲁棒策略:反光物体易导致中心点深度为 0,SDK 采用 mask 内采样 + 窗口逐级扩大 + 中位数滤波策略。如仍无效,可在配置中调整
center_window_radii_px 和 trim_ratio。多相机场景:使用前先调用
print_realsense_devices() 查看各相机序列号, 实例化时务必传入 serial 参数,避免启动错设备。回调线程安全:状态订阅回调在线程池中执行,注意回调函数的线程安全性。 串口通信不是线程安全的,多线程调用时应增加
threading.Lock()。