Skip to content

C++ SDK - Revo 2 灵巧手

系统要求

  • 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 460800 127               # Modbus
./hand_demo.exe -c /dev/cu.usbmodem14201 1000000 1       # CAN 2.0 (ZQWL)
./hand_demo.exe -f /dev/cu.usbmodem14201 1000000 5000000 127  # CANFD (ZQWL)
./hand_demo.exe -s can0 1                                # SocketCAN CAN 2.0 (外部适配)
./hand_demo.exe -S can0 127                              # SocketCAN CANFD (外部适配)
./hand_demo.exe -b can0 1                                # SocketCAN CAN 2.0 (SDK 内置)
./hand_demo.exe -B can0 127                              # SocketCAN CANFD (SDK 内置)
./hand_demo.exe -z 2                                     # ZLG CAN 2.0
./hand_demo.exe -Z 127                                   # ZLG CANFD

传统协议示例(已归档)

⚠️ 以下示例已归档至 archive/ 目录,建议使用上方 跨平台示例 (c/demo/),支持自动检测所有协议和设备。

Modbus-RTU 协议

CANFD 协议

EtherCAT 协议

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/CANFD 设备 ⭐
init_zqwl_canfd()初始化 ZQWL CANFD 设备
init_zqwl_can()初始化 ZQWL CAN 2.0 设备
close_zqwl()关闭 ZQWL 设备
list_socketcan_devices()列出 SocketCAN 可用设备 (Linux) ⭐
init_socketcan_canfd()初始化 SocketCAN CANFD 设备 (Linux)
init_socketcan_can()初始化 SocketCAN CAN 2.0 设备 (Linux)
close_socketcan()关闭 SocketCAN 设备 (Linux)
scan_can_devices()扫描 CAN 总线设备

连接管理(传统)

API说明
modbus_open()打开 Modbus 连接
modbus_close()关闭 Modbus 连接
init_device_handler()创建设备处理器(CAN/CANFD/EtherCAT,需手动管理适配器)
init_device_handler_with_hw_type()创建设备处理器并预设硬件类型(跳过 get_device_info)⭐
auto_detect_device()自动检测设备(仅 Modbus)
auto_detect_modbus_revo2()自动检测 Revo 2 设备(仅 Modbus)
list_available_ports()列出可用串口

设备信息

API说明
stark_get_device_info()获取设备完整信息
stark_is_touch_device()判断是否支持触觉 ⭐
stark_uses_revo1_motor_api()判断是否使用 Revo 1 电机 API ⭐
stark_uses_pressure_touch_api()判断是否使用压力触觉 API ⭐
stark_get_touch_vendor()获取触觉传感器类型 ⭐
stark_get_voltage()获取设备电压
stark_get_rs485_baudrate()获取 RS485 波特率
stark_set_rs485_baudrate()设置 RS485 波特率
stark_get_canfd_baudrate()获取 CANFD 波特率
stark_set_canfd_baudrate()设置 CANFD 波特率
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()重启设备

电机控制 - 位置(统一范围 0-1000)

API说明
stark_set_finger_position()设置单个手指位置
stark_set_finger_position_with_millis()设置位置(指定时间)⭐
stark_set_finger_position_with_speed()设置位置(指定速度)⭐
stark_set_finger_positions()设置所有手指位置
stark_set_finger_positions_and_durations()设置位置和时间 ⭐
stark_set_finger_positions_and_speeds()设置位置和速度 ⭐
stark_get_finger_positions()获取所有手指位置

电机控制 - 速度(统一范围 -1000~+1000)

API说明
stark_set_finger_speed()设置单个手指速度
stark_set_finger_speeds()设置所有手指速度
stark_get_finger_speeds()获取所有手指速度

电机控制 - 电流(统一范围 -1000~+1000)

API说明
stark_set_finger_current()设置单个手指电流
stark_set_finger_currents()设置所有手指电流
stark_get_finger_currents()获取所有手指电流

电机控制 - PWM(统一范围 -1000~+1000)⭐

API说明
stark_set_finger_pwm()设置单个手指 PWM
stark_set_finger_pwms()设置所有手指 PWM

电机状态

API说明
stark_get_motor_status()获取电机综合状态
stark_get_motor_state()获取电机运行状态

电机设置 ⭐

API说明
stark_get_finger_unit_mode()获取单位模式
stark_set_finger_unit_mode()设置单位模式
stark_get_finger_min_position()获取最小位置限制
stark_set_finger_min_position()设置最小位置限制
stark_get_finger_max_position()获取最大位置限制
stark_set_finger_max_position()设置最大位置限制
stark_get_finger_max_speed()获取最大速度限制
stark_set_finger_max_speed()设置最大速度限制
stark_get_finger_max_current()获取最大电流限制
stark_set_finger_max_current()设置最大电流限制
stark_get_finger_protected_current()获取保护电流
stark_set_finger_protected_current()设置保护电流
stark_get_thumb_aux_lock_current()获取拇指辅助锁定电流
stark_set_thumb_aux_lock_current()设置拇指辅助锁定电流

触觉传感器

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()校准触觉传感器

Force3D 触觉传感器 ⭐

API说明
stark_get_force3d_touch_summary()获取 4 指触觉摘要(FxFyFz)
stark_get_force3d_finger_array()获取单指完整阵列数据(31路)

面阵压力传感器 (ArrayPressure) ⭐

API说明
stark_get_array_pressure_touch_data()获取面阵压力数据
stark_set_array_pressure_sleep()设置面阵传感器休眠状态

高性能数据采集 ⭐

API说明
motor_buffer_new()创建电机状态缓冲区
motor_buffer_free()释放电机状态缓冲区
motor_buffer_pop_all()获取所有电机数据
touch_buffer_new()创建触觉状态缓冲区
touch_buffer_free()释放触觉状态缓冲区
pressure_summary_buffer_new()创建压力摘要缓冲区
pressure_detailed_buffer_new()创建压力详细缓冲区
data_collector_new_basic()创建基础采集器
data_collector_new_capacitive()创建电容触觉采集器
data_collector_new_pressure_summary()创建压力摘要采集器
data_collector_new_pressure_detailed()创建压力详细采集器
data_collector_new_pressure_hybrid()创建混合模式采集器
data_collector_new_force3d()创建 Force3D 采集器
data_collector_new_array_pressure()创建面阵压力采集器
data_collector_new_v3_basic()创建 Revo3 基础采集器
data_collector_new_v3_full()创建 Revo3 全参数采集器
data_collector_start()启动数据采集
data_collector_stop()停止数据采集
data_collector_wait()等待采集线程结束
data_collector_free()释放数据采集器

LED、蜂鸣器、震动 ⭐

API说明
stark_get_led_enabled()获取 LED 启用状态
stark_set_led_enabled()设置 LED 启用状态
stark_get_buzzer_enabled()获取蜂鸣器启用状态
stark_set_buzzer_enabled()设置蜂鸣器启用状态
stark_get_vibration_enabled()获取震动启用状态
stark_set_vibration_enabled()设置震动启用状态

动作序列

API说明
stark_get_action_sequence()获取动作序列
stark_transfer_action_sequence()上传动作序列
stark_run_action_sequence()执行动作序列

EtherCAT 专用 ⭐

API说明
stark_ec_setup_sdo()设置 SDO
stark_ec_start_loop()启动循环
stark_ec_stop_loop()停止循环
stark_ec_start_dfu()启动固件升级

固件升级

API说明
stark_start_dfu()启动固件升级

⭐ 标记表示 Revo 2 专有或增强功能

帮助