Roban2 C++ SDK 介绍
本章面向使用 Lejulab_ARM 开发包进行 Roban2 二次开发的用户。当前公开接口为 C++17 API,底层通过 Cyclone DDS 通信,不使用旧版 Python SDK、ROS1 或 WebSocket。
SDK 构成
| SDK | 公开头文件 | 用途 |
|---|---|---|
lejusdk-lowlevel | <lejusdk-lowlevel/leju_sdk.h> | 机器人信息,关节、IMU、普通手柄和硬件状态,以及底层关节、双手、姿态高度和停止指令 |
lejusdk-vr | <lejusdk-vr/lejusdk_vr.h> | 手臂、头部、腰部和移动控制,Quest 数据,控制器、runtime 和动作服务 |
SDK 已随开发包安装在 installed/,包含头文件、动态库、运行程序和示例程序。使用者不需要重新编译 SDK;只需编译自己的业务程序。
文档范围
本组文档只记录当前开发包公开头文件和仓库示例能够验证的功能。当前不包含雷达、相机、旧版语音合成、手臂 FK/IK 等未公开接口。
目录结构
<Lejulab_ARM> 表示开发包根目录,网页教程不绑定某台设备的绝对路径。
<Lejulab_ARM>/
├── installed/
│ ├── setup.bash # 运行环境
│ ├── include/ # SDK 公开头文件
│ ├── lib/ # SDK 及 DDS 动态库
│ └── bin/ # 节点、工具和已编译示例
└── src/
├── lejusdk/examples/ # C++ 示例源码
└── leju_launch/ # 启动脚本和 DDS 配置
开发前准备
Roban2.2 使用版本号 17。先设置版本,再加载随包环境:
cd <Lejulab_ARM>
export ROBOT_VERSION=17
source installed/setup.bash
setup.bash 负责加入 installed/bin、SDK 动态库和头文件路径,并配置 DDS 环境。如果终端已加载过其他 ROS/DDS 环境,建议新建终端后再执行上述命令。
Roban VR API 初始化
1. 功能描述
创建 RobanVRAPI 并初始化 DDS 通信。手臂、头部、腰部、移动、控制器和动作服务的示例都以此为起点。
2. 所属 SDK 和头文件
- SDK:
lejusdk-vr - 头文件:
<lejusdk-vr/lejusdk_vr.h> - 类:
leju::vr::RobanVRAPI
3. 请求或消息类型
bool initialize();
void shutdown();
bool isInitialized() const;
4. 字段说明
该接口无消息字段。构造时传入 leju::RobotVersion::from_env() 读取到的版本,使程序与 ROBOT_VERSION 保持一致。
5. 返回值
initialize():初始化成功返回true,失败返回false。isInitialized():已初始化返回true。shutdown():无返回值。
6. 使用前提
- 已设置
ROBOT_VERSION=17并加载installed/setup.bash。 - 需要调用 RPC 或发布控制指令时,对应的真机或仿真控制链路已启动。
- 一个
RobanVRAPI对象在使用期间保持存活,结束前调用shutdown()。
7. C++ 示例
#include <iostream>
#include <lejusdk-vr/lejusdk_vr.h>
int main() {
const auto version = leju::RobotVersion::from_env();
leju::vr::RobanVRAPI vr(version);
if (!vr.initialize()) {
std::cerr << "VR SDK 初始化失败\n";
return 1;
}
std::cout << "VR SDK 已初始化\n";
vr.shutdown();
return 0;
}
8. 对应仓库示例
- 通用初始化流程:
src/lejusdk/examples/src/lejusdk-vr/01_basic_init.cpp - Roban 类型的直接示例:
src/lejusdk/examples/src/lejusdk-vr/07_roban_arm.cpp
01_basic_init.cpp 是通用 VR SDK 流程示例;用于 Roban2 时,应将其中的 KuavoVRAPI 替换为本页所示的 RobanVRAPI。
文档导航
实机安全
任何 publish*Cmd()、模式切换、startRuntime()、startMotion() 或 playTact() 都可能使机器人运动。实机调试前必须清空活动区域、确认急停可用,并先用小幅度目标验证。