C++ SDK - Revo 1 灵巧手
系统要求
- Linux: Ubuntu 20.04/22.04 LTS (x86_64/aarch64), glibc ≥ 2.31
- macOS: 10.15+
- Windows: 10/11
快速开始
克隆仓库
shell
git clone https://github.com/BrainCoTech/brainco-hand-sdk.gitshell
git clone git@github.com:BrainCoTech/brainco-hand-sdk.git安装与配置
shell
# 安装依赖
# 需要: build-essential, cmake, make, gcc, g++ 等
# 安装 SDK 依赖库
./download-lib.sh
# 配置设备权限
# Linux 系统中,串口设备(如 /dev/ttyUSB0)通常归属于 dialout 或 tty 用户组
# 只有该组成员才能访问设备,例如:
# crw-rw---- 1 root dialout 188, 0 Aug 14 12:00 /dev/ttyUSB0
# 将当前用户添加到 dialout 组
sudo usermod -aG dialout $USER
# 注意:添加后需要重新登录才能生效
# 编译并运行示例(跨平台统一目录)
cd c && make
cd demo && ./hand_demo.exe # 自动检测设备并运行shell
# 安装 Xcode 或 Xcode Command Line Tools
xcode-select --install
# 安装 SDK 依赖库
./download-lib.sh
# 编译并运行示例(跨平台统一目录)
cd c && make
cd demo && ./hand_demo.exe # 自动检测设备并运行shell
# 需要 MinGW 或 MSVC 编译环境
# 安装 SDK 依赖库
./download-lib.sh
# 编译并运行示例(跨平台统一目录)
cd c && make
cd demo && hand_demo.exe # 自动检测设备并运行示例代码
SDK 提供了丰富的示例代码,涵盖不同通信协议和应用场景。
跨平台示例(推荐)⭐
统一的跨平台示例,支持自动检测设备和多种通信协议。
shell
cd c
make
cd demo
./hand_demo.exe # 自动检测设备并运行演示| 示例 | 说明 |
|---|---|
| hand_demo.cpp | 综合演示(8种模式:位置/速度/电流控制、动作序列、触觉传感器等) |
| hand_monitor.cpp | 实时数据监控(电机状态、触觉数据) |
| hand_dfu.cpp | 固件升级 |
| auto_detect.cpp | 设备自动检测 |
支持的初始化方式:
shell
./hand_demo.exe # 自动检测(推荐)
./hand_demo.exe -m /dev/ttyUSB0 115200 1 # Modbus
./hand_demo.exe -p /dev/ttyUSB0 10 # Protobuf
./hand_demo.exe -c /dev/cu.usbmodem14201 1000000 1 # CAN 2.0 (ZQWL)
./hand_demo.exe -s can0 1 # SocketCAN CAN 2.0 (外部适配)
./hand_demo.exe -b can0 1 # SocketCAN CAN 2.0 (SDK 内置)传统协议示例(已归档)
⚠️ 以下示例已归档至
archive/目录,建议使用上方 跨平台示例 (c/demo/),支持自动检测多种协议和设备。
Modbus-RTU 协议
触觉传感器
CAN 2.0 协议
- 自定义 CAN 设备 - C++ 示例
- ZLG USBCAN 设备 - C++ 示例
- ZQWL USBCAN 设备 - C++ 示例
API 参考
C/C++ API 查阅建议以 bc-stark-sdk (v2.x) 发布包随附的完整 C ABI 头文件为准:下载 stark-sdk.h。下方保留常用接口的快速参考。
API 快速参考
初始化与配置
| API | 说明 |
|---|---|
init_logging() | 初始化 SDK 日志 |
连接管理
| API | 说明 |
|---|---|
stark_auto_detect() | 自动检测设备(推荐,支持所有协议) |
init_from_detected() | 从检测结果初始化设备 |
close_device_handler() | 关闭设备连接(推荐) |
list_zqwl_devices() | 列出 ZQWL CAN 适配器 |
init_zqwl_can() | 初始化 ZQWL CAN 适配器 |
close_zqwl() | 关闭 ZQWL 适配器 |
modbus_open() | 打开 Modbus 连接 |
modbus_close() | 关闭 Modbus 连接 |
init_device_handler() | 创建设备处理器(CAN/CANFD,需手动管理适配器) |
init_device_handler_with_hw_type() | 创建设备处理器并预设硬件类型(跳过 get_device_info)⭐ |
auto_detect_device() | 自动检测设备(已弃用) |
auto_detect_modbus_revo1() | 自动检测 Revo 1 设备(已弃用) |
list_available_ports() | 列出可用串口 |
设备信息
| API | 说明 |
|---|---|
stark_get_device_info() | 获取设备完整信息 |
stark_get_device_sn() | 获取设备序列号 |
stark_get_device_fw_version() | 获取固件版本 |
stark_get_sku_type() | 获取 SKU 类型 |
stark_get_voltage() | 获取电池电压 |
stark_get_serialport_cfg() | 获取串口配置 |
stark_set_serialport_baudrate() | 设置波特率 |
stark_set_slave_id() | 设置从站 ID |
设备配置
| API | 说明 |
|---|---|
stark_get_force_level() | 获取力度等级 |
stark_set_force_level() | 设置力度等级 |
stark_get_auto_calibration_enabled() | 获取自动校准状态 |
stark_set_auto_calibration() | 设置自动校准 |
stark_calibrate_position() | 手动校准位置 |
stark_get_turbo_mode_enabled() | 获取 Turbo 模式状态 |
stark_set_turbo_mode_enabled() | 设置 Turbo 模式 |
stark_get_turbo_config() | 获取 Turbo 配置 |
stark_set_turbo_config() | 设置 Turbo 配置 |
stark_reboot() | 重启设备 |
设备类型检查
| API | 说明 |
|---|---|
stark_is_touch_device() | 检查是否有触觉传感器 |
stark_uses_revo1_motor_api() | 检查是否使用 Revo 1 电机 API |
stark_uses_revo1_touch_api() | 检查是否使用 Revo 1 触觉 API |
stark_uses_revo2_touch_api() | 检查是否使用 Revo 2 触觉 API |
stark_uses_pressure_touch_api() | 检查是否使用压力触觉 API |
stark_get_touch_sensor_type() | 获取触觉传感器类型 |
电机控制 - 位置
| API | 说明 |
|---|---|
stark_set_finger_position() | 设置单个手指位置(0~1000) |
stark_set_finger_positions() | 设置所有手指位置 |
stark_get_finger_positions() | 获取所有手指位置 |
电机控制 - 速度
| API | 说明 |
|---|---|
stark_set_finger_speed() | 设置单个手指速度(-1000~+1000) |
stark_set_finger_speeds() | 设置所有手指速度 |
stark_get_finger_speeds() | 获取所有手指速度 |
电机控制 - 电流
| API | 说明 |
|---|---|
stark_set_finger_current() | 设置单个手指电流(-1000~+1000) |
stark_set_finger_currents() | 设置所有手指电流 |
stark_get_finger_currents() | 获取所有手指电流 |
电机状态
| API | 说明 |
|---|---|
stark_get_motor_status() | 获取电机综合状态 |
stark_get_motor_state() | 获取电机运行状态 |
触觉传感器
| API | 说明 |
|---|---|
stark_get_touch_sensor_enabled() | 获取触觉传感器启用状态 |
stark_get_touch_sensor_fw_versions() | 获取触觉传感器固件版本 |
stark_get_touch_sensor_raw_data() | 获取触觉原始数据 |
stark_get_touch_sensor_status() | 获取触觉传感器状态 |
stark_touch_sensor_setup() | 设置触觉传感器 |
stark_touch_sensor_reset() | 重置触觉传感器 |
stark_touch_sensor_calibrate() | 校准触觉传感器 |
LED 和按钮
| API | 说明 |
|---|---|
stark_get_led_info() | 获取 LED 状态 |
stark_set_led_info() | 设置 LED 状态 |
stark_get_button_event() | 获取按钮事件 |
动作序列
| API | 说明 |
|---|---|
stark_get_action_sequence() | 获取动作序列 |
stark_transfer_action_sequence() | 上传动作序列 |
stark_run_action_sequence() | 执行动作序列 |
固件升级
| API | 说明 |
|---|---|
stark_start_dfu() | 启动固件升级 |