Pre-launch preview — prices, stock and shipping rates shown here are provisional and online payment is not open yet. Questions: service@nenpower.com
English

Calibration

标定流程

预计 1–2 小时:机械标定(臂长测量与配置)、回零标定、视觉标定(棋盘格、像素到毫米映射)与精度测试。

系统标定流程

预计用时:1–2 小时 | 重要程度:★★★★★

⚠️ 为什么要标定? 标定确保机器人的实际运动与软件指令一致,直接影响定位精度和系统可靠性。

1. 机械标定

1.1 臂长测量

用数显卡尺精确测量臂长(球头中心距):

臂长测量 用卡尺测量臂长

参数 标准值 实测值 配置文件
上臂长度(L) 150 mm ______ mm robotGeometry.cpp
下臂长度(l) 281 mm ______ mm robotGeometry.cpp
末端执行器偏移 50 mm ______ mm config.h

1.2 修改配置文件

esp32/robotGeometry.cpp 中填入实测值:

// 文件:esp32/robotGeometry.cpp(约第 10 行)
float L = 150.0;   // 上臂长度(改为实测值)
float l = 281.0;   // 下臂长度(改为实测值)

// 文件:esp32/config.h(约第 15 行)
#define END_EFFECTOR_OFFSET 50.0  // 末端执行器偏移

提示: 修改后需要重新把固件烧录到 ESP32。

2. 回零标定

2.1 限位开关测试

如果使用限位开关,确保安装正确并完成测试:

回零过程 回零位置示意图

  • 手动把机械臂移动到限位开关位置

  • 观察限位开关指示灯是否触发

  • 通过串口发送 G28 测试自动回零

2.2 调整 HOME_STEPS

如果没有限位开关,需要手动设置回零步数:

// 文件:esp32/config.h
#define X_HOME_STEPS 0   // X 限位到初始位置的步数
#define Y_HOME_STEPS 0   // Y 限位到初始位置的步数
#define Z_HOME_STEPS 0   // Z 限位到初始位置的步数

// 调整方法:
// 1. 手动把机械臂移到最高点
// 2. 记录此位置的步数
// 3. 设为 HOME_STEPS

2.3 验证回零

# 发送回零指令
G28

# 观察:
# - 3 个电机应同步转动
# - 末端执行器升到最高点
# - 到位后停止

✅ 回零成功的标志:

  • 每次回零后末端执行器位置一致

  • 回零后发送 G0 X0 Y0 Z-200 能准确到达中心

3. 视觉标定

3.1 摄像头安装

重要: 摄像头位置一旦固定就不要再动!移动后需要重新标定。

推荐的摄像头位置:

  • 高度:机器人底座上方 400–500mm

  • 角度:垂直向下(或略微倾斜)

  • 视野:覆盖整个工作空间(Ø200mm)

3.2 棋盘格标定(可选)

使用 OpenCV 棋盘格标定法校正摄像头畸变:

棋盘格标定 棋盘格标定过程

# 运行标定程序(如项目中包含)
python calibrate_camera.py

# 按提示从不同角度拍摄棋盘格
# 生成 camera_matrix.npy 与 dist_coeffs.npy

3.3 像素到毫米的映射

建立像素坐标与机械臂坐标之间的映射:

坐标映射 坐标映射示意图

# 映射方法:
# 1. 在工作空间标记已知物理坐标的点(如 4 个角)
# 2. 记录这些点在图像中的像素坐标
# 3. 用透视变换矩阵建立映射

# 示例代码(Python):
import cv2
import numpy as np

# 图像坐标(像素)
pts_src = np.array([[100, 100], [540, 100], [540, 380], [100, 380]])

# 物理坐标(毫米)
pts_dst = np.array([[-100, 100], [100, 100], [100, -100], [-100, -100]])

# 计算透视变换矩阵
h, status = cv2.findHomography(pts_src, pts_dst)

# 保存矩阵
np.save('homography_matrix.npy', h)

3.4 映射精度验证

  • 在工作空间的已知位置放一个物体(如 X=50, Y=0)

  • 通过视觉系统识别物体坐标

  • 比较识别坐标与实际坐标,误差应在允许范围内

4. 精度测试

4.1 重复定位精度测试

测试机械臂多次到达同一位置的一致性:

# 测试脚本
for i in range(10):
    send_gcode("G28")          # 回零
    send_gcode("G0 X0 Y0 Z-200")  # 移到测试点
    time.sleep(1)
    # 手动测量实际位置,记录偏差

# 目标精度:±0.5mm

4.2 工作空间边界验证

测试工作空间边界是否与理论值一致:

# 测试边界点
G0 X100 Y0 Z-200
G0 X-100 Y0 Z-200
G0 X0 Y100 Z-200
G0 X0 Y-100 Z-200

# 检查能否到达、是否超限

4.3 精度评估标准

测试项 目标精度 测试结果
重复定位精度 ±0.5 mm ______ mm
绝对定位精度 ±1.0 mm ______ mm
视觉坐标误差
✅ 标定完成!
所有测试通过后,系统即可投入使用。

→ 下一步:编程教程

最后更新 21 Sep 2026