Skip to main content

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() 都可能使机器人运动。实机调试前必须清空活动区域、确认急停可用,并先用小幅度目标验证。