Skip to content

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.git
shell
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 协议

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()启动固件升级
帮助