Skip to main content

灵犀力控版Python SDK

1. 介绍

Gloria-D 力控版 SDK 是一套用于控制 灵犀 Gloria-D 力控版平行二指夹爪 的 Python 开发工具包。力控版内置力矩传感与反馈机制,可在夹持过程中精确控制施加的力矩大小,适用于对夹持力有严格要求的场景(如易碎物品抓取、柔性物体操作等)。

1.1 主要特性

核心能力
  • 力矩控制:支持 0 ~ 1000 范围力矩精确设定(1000 对应舵机最大扝矩 35kg·cm),实现柔顺抓取
  • 位置控制:支持毫米级精度的开口宽度设定
  • 力反馈读取:实时读取负载反馈,判断夹持状态
  • 多型号适配:支持 50mm / 100mm 夹爪型号
  • 状态读取:实时获取位置、速度、负载、电压、温度等传感器数据

2. 环境准备

2.1 依赖安装

  • Python 3.10 及以上版本
  • pyserial
pip install pyserial

2.2 硬件连接

  1. 将夹爪通过串口转接板(USB-TTL / RS485)连接至电脑
  2. 确认串口号:
    • Windows:设备管理器中查看,如 COM5
    • Linux/dev/ttyUSB0
    • macOS/dev/tty.usbserial-xxx
  3. 确保夹爪供电正常

3. 快速开始

from Gloria_D import BusServo

# 创建连接(波特率默认 1000000)
servo = BusServo(port='COM5', baudrate=1000000, verbose=True)

try:
# 检查舵机连接
err = servo.ping(1)
if err == 0:
print("夹爪连接正常")
else:
print(f"连接异常,错误码: {err}")

# 控制夹爪张开到 50mm,力矩 200,速度 100
servo.set_gripper_position(
servo_id=1,
gripper_type="100mm",
position_mm=50,
torque=200,
speed=100
)
finally:
servo.close()
警告

力控版的 speed 范围为 0 ~ 150(150 对应最大舵机转速 110rpm),请勿使用基础版的速度值(0 ~ 3000),否则可能导致不可预期的行为。

4. 参数说明

4.1 核心控制参数

参数范围说明
position_mm0 ~ 夹爪最大行程目标开口宽度(毫米)
torque0 ~ 1000夹持力矩,力控版核心参数(1000 对应最大扭矩 35kg·cm),0 表示不施加额外力矩
speed0 ~ 150运动速度,力控版速度范围较小(150 对应最大舵机转速 110rpm)

4.2 支持的夹爪型号

型号开口范围适用场景
"50mm"0 ~ 50 mm小型精密物体抓取
"100mm"0 ~ 100 mm中等尺寸物体抓取

5. 典型使用场景

5.1 柔性物体夹持(低力矩)

适用于抓取易碎或柔软物体,使用较低力矩防止损坏。

import time
from Gloria_D import BusServo

servo = BusServo(port='COM5', baudrate=1000000)

try:
# 先张开夹爪
servo.set_gripper_position(1, "100mm", 80, torque=0, speed=100)
time.sleep(1)

# 低力矩缓慢闭合夹持
servo.set_gripper_position(1, "100mm", 20, torque=150, speed=50)
finally:
servo.close()

5.2 刚性物体夹持(高力矩)

适用于抓取金属、塑料等硬质物体,施加较大夹持力确保稳固。

import time
from Gloria_D import BusServo

servo = BusServo(port='COM5', baudrate=1000000)

try:
# 张开夹爪
servo.set_gripper_position(1, "100mm", 80, torque=0, speed=100)
time.sleep(1)

# 高力矩闭合夹持
servo.set_gripper_position(1, "100mm", 10, torque=800, speed=80)
finally:
servo.close()

5.3 力反馈读取与夹持检测

力控版夹爪可实时读取负载反馈,用于判断是否成功夹持物体。

import time
from Gloria_D import BusServo

servo = BusServo(port='COM5', baudrate=1000000)

try:
# 执行夹持
servo.set_gripper_position(1, "100mm", 15, torque=300, speed=60)
time.sleep(1)

# 读取传感器数据
sensor = servo.read_sensor_data(1)
if sensor:
print(f"当前位置: {sensor['position']}")
print(f"当前负载: {sensor['load']}")
print(f"当前速度: {sensor['speed']}")
print(f"电压: {sensor['voltage'] * 0.1:.1f}V")
print(f"温度: {sensor['temperature']}℃")

# 判断是否夹到物体(负载非零说明有阻力)
if abs(sensor['load']) > 50:
print("检测到夹持物体")
else:
print("未检测到物体")
finally:
servo.close()

5.4 循环夹放测试

import time
from Gloria_D import BusServo

servo = BusServo(port='COM5', baudrate=1000000)

try:
for i in range(5):
print(f"\n--- 第 {i+1} 次 ---")
# 张开
servo.set_gripper_position(1, "100mm", 80, torque=0, speed=100)
time.sleep(1.5)

# 闭合夹持
servo.set_gripper_position(1, "100mm", 10, torque=400, speed=60)
time.sleep(1.5)

# 读取状态
sensor = servo.read_sensor_data(1)
if sensor:
print(f"负载: {sensor['load']}, 位置: {sensor['position']}")
finally:
servo.close()

6. API 参考

方法说明
BusServo(port, baudrate, verbose)创建串口连接实例
ping(servo_id)检查舵机连接状态
set_gripper_position(id, type, mm, torque, speed)控制夹爪开口(力控核心接口)
move_servo(id, position, torque, speed)直接控制舵机原始位置
read_sensor_data(servo_id)读取传感器综合数据
get_position(servo_id)读取当前位置值
set_servo_id(old_id, new_id)修改舵机 ID
set_baudrate(servo_id, baudrate)设置通信波特率
set_servo_torque_enable(servo_id, enable)扭矩使能开关
close()关闭串口连接

7. 力控版与基础版对比

特性力控版(Force Control)基础版(Standard)
速度范围0 ~ 150(最大 110rpm)0 ~ 3000(最大 110rpm)
力矩控制支持(0 ~ 1000,最大 35kg·cm)不支持(torque=0
负载反馈精确力矩反馈基本反馈
典型场景易碎品、柔性物体高速抓放、产线节拍
控制复杂度较高简单

8. 注意事项

使用提示
  1. 速度范围:力控版速度范围为 0 ~ 150(150 对应最大舵机转速 110rpm),切勿使用基础版的速度值(0 ~ 3000)
  2. 力矩设置:力矩值 0 表示不施加额外力矩(自由运动),根据目标物体选择合适的力矩值
  3. 操作顺序:建议先将夹爪张开到大于目标物体的位置,再闭合夹持
  4. 通信间隔:连续发送指令之间建议加入 time.sleep(0.05) 以上的延时
  5. 断电保护:操作完成后务必调用 servo.close() 关闭连接