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.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 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 专有或增强功能