Skip to main content

灵犀基础版Python SDK

1. 介绍

Gloria-D 基础版 SDK 是一套用于控制 灵犀 Gloria-D 基础版平行二指夹爪 的 Python 开发工具包。基础版采用位置控制模式,通过直接设定目标开口宽度和运动速度来控制夹爪动作,具有响应速度快、控制简单的特点,适用于对速度要求较高且不需要精确力矩控制的场景。

1.1 主要特性

核心能力
  • 位置控制:支持毫米级精度的开口宽度设定
  • 高速运动:速度范围 0 ~ 3000(3000 对应最大舵机转速 110rpm),满足高节拍场景需求
  • 多型号适配:支持 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,速度 2000
servo.set_gripper_position(
servo_id=1,
gripper_type="100mm",
position_mm=50,
torque=0,
speed=2000
)
finally:
servo.close()
tip

基础版(非力控版本)的 torque 参数无效,建议始终设为 0

4. 参数说明

4.1 核心控制参数

参数范围说明
position_mm0 ~ 夹爪最大行程目标开口宽度(毫米)
torque0基础版无力矩控制,固定设为 0
speed0 ~ 3000运动速度,数值越大越快(3000 对应最大舵机转速 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", 100, torque=0, speed=3000)
time.sleep(0.8)

# 快速闭合
servo.set_gripper_position(1, "100mm", 0, torque=0, speed=3000)
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=2000)
time.sleep(1)

# 低速闭合到目标位置
servo.set_gripper_position(1, "100mm", 25, torque=0, speed=500)
finally:
servo.close()

5.3 多级开口切换

在不同工位之间切换不同的夹持宽度。

import time
from Gloria_D import BusServo

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

try:
positions = [80, 50, 30, 10, 50, 100] # 毫米序列

for pos in positions:
print(f"移动到 {pos}mm")
servo.set_gripper_position(1, "100mm", pos, torque=0, speed=2000)
time.sleep(1)

# 读取实际位置
sensor = servo.read_sensor_data(1)
if sensor:
print(f" 实际位置值: {sensor['position']}")
finally:
servo.close()

5.4 传感器状态读取

基础版同样支持传感器数据读取,可用于监控运行状态。

import time
from Gloria_D import BusServo

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

try:
# 移动到指定位置
servo.set_gripper_position(1, "100mm", 50, torque=0, speed=2000)
time.sleep(1)

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

5.5 循环夹放测试

import time
from Gloria_D import BusServo

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

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

# 闭合
servo.set_gripper_position(1, "100mm", 5, torque=0, speed=2500)
time.sleep(0.8)

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

6. API 参考

方法说明
BusServo(port, baudrate, verbose)创建串口连接实例
ping(servo_id)检查舵机连接状态
set_gripper_position(id, type, mm, torque, speed)控制夹爪开口(核心接口,torque 设为 0)
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. 基础版与力控版对比

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

8. 注意事项

使用提示
  1. 速度范围:基础版速度范围为 0 ~ 3000(3000 对应最大舵机转速 110rpm),切勿与力控版混淆
  2. 力矩参数:基础版 torque 无效,建议始终设为 0
  3. 夹持保护:基础版无力矩反馈,闭合时注意避免过度挤压目标物体
  4. 通信间隔:连续发送指令之间建议加入 time.sleep(0.05) 以上的延时
  5. 断电保护:操作完成后务必调用 servo.close() 关闭连接