§ 3.3 夹爪关节标定

0. 概要

本文讲解了如何进行夹爪关节标定,将舵机原始角度映射为夹爪关节角度。

需要注意的是,这个步骤不是必须的,因为夹爪在安装时,都会做对齐。如果你发现在后续测试案例中,设置夹爪张开宽度与实际的宽度差异比较大,则需要重新进行标定。

1. 导入依赖

import numpy as np
# 从阿凯机器人工具箱导入二指夹爪
from kyle_robot_toolbox.end_effector import Gripper2FUart

2. 创建舵机对象

# 创建夹爪对象
gripper = Gripper2FUart(config_path="./config")
# 舵机卸力
gripper.disable()

3. 采集样本1

记录夹爪闭合时刻的舵机原始位置

alpha_close = gripper.get_servo_position()
print(f"alpha_close={alpha_close}")

输出日志:

alpha_close=-0.4

4. 采集样本2

让夹爪尽量张大,测量此时的夹爪间距,以及舵机原始位置。

# 夹爪张开距离, 尺子测量得到
width_1 = 68.0
alpha_1 = gripper.get_servo_position()
print(f"alpha_1={alpha_1} 夹爪张开距离: {width_1} mm")

输出日志:

alpha_1=54.8 夹爪张开距离: 68.0 mm

5. 计算标定系数

result = gripper.calib_gripper_joint(alpha_close, width_1, alpha_1)
k_joint2servo, b_joint2servo = result

print(f"k_joint2servo: {k_joint2servo:.4f}")
print(f"b_joint2servo: {b_joint2servo:.4f}")

输出日志:

k_joint2servo: 49.7614
b_joint2servo: 7.4522

完成标定后,修改 config/gripper_2f.yaml 里面的配置文件。

# 夹爪关节(rad)转换为夹爪舵机角度(deg)
k_joint2servo: 57.8658
b_joint2servo: 9.3310