使用前准备

在使用 Python API 之前,请先确认以下硬件和环境准备齐全:

  • 硬件设备

    • MyCobot Pro 450 机械臂
    • 网线(用于连接机械臂与电脑)
    • 电源适配器
    • 急停开关(确保安全操作)
  • 软件与环境

    • 已安装 Python 3.6 及以上版本
    • 已安装 pymycobot 库(通过 pip install pymycobot 终端命令安装)
    • 确保 MyCobot Pro 450 已正确接通电源,并处于待机状态
    • 注意:Pro 450 服务端会在设备上电后自动启动,无需手动操作
  • 网络配置

    • MyCobot Pro 450 默认 IP 地址:192.168.0.232
    • 默认端口号:4500
    • 注意:PC 端需要将本机网卡 IP 设置为 同一网段(例如 192.168.0.xxxxxx 为 2~254 之间的任意数,且不能与机械臂冲突)。
    • 具体配置方式请查看 静态IP配置 章节内容。
    • 示例:

      • 机械臂 IP:192.168.0.232
      • PC IP:192.168.0.100
      • 子网掩码:255.255.255.0
      • DNS服务器:114.114.114.114
    • 验证:完成网络配置后,可在 PC 终端执行以下命令,若能成功返回数据包,则说明网络连接正常:

      ping 192.168.0.232
      

关节零位校准

功能说明

本示例用于对 Pro 450 机械臂进行 关节零位校准。 零位校准会影响所有后续运动精度,请严格按照步骤操作。


操作前安全说明

  • 零位校准过程中会 放松全部关节
  • 机械臂可能因重力 突然下坠
  • 请务必 双手扶稳机械臂
  • 确保周围 无人员 / 无障碍物

步骤1:新建零位校准脚本

新建文件 set_joint_zero.py,并写入以下代码:

import time
from pymycobot import Pro450Client

def safe_input(prompt):
    """安全的 yes/no 输入"""
    while True:
        ans = input(prompt + " (yes/no): ").strip().lower()
        if ans in ('y', 'yes'):
            return True
        elif ans in ('n', 'no'):
            return False
        else:
            print("请输入 y/yes 或 n/no")

def read_angles(pro450, retry=3, delay=0.2):
    """安全读取关节角度"""
    for _ in range(retry):
        angles = pro450.get_angles()
        if isinstance(angles, list):
            return angles
        time.sleep(delay)
    return None

def check_zero_position(angles, tolerance=0.5):
    """检查角度是否接近零位"""
    if angles is None:
        return False, None
    ok = all(abs(a) <= tolerance for a in angles)
    off_joints = [f"J{i+1}:{round(a,2)}°" for i,a in enumerate(angles) if abs(a) > tolerance]
    return ok, off_joints

def main():
    pro450 = Pro450Client('192.168.0.232', 4500)

    # 上电检查
    if pro450.is_power_on() != 1:
        print("机器人未上电,正在上电...")
        pro450.power_on()
        time.sleep(0.02)

    if safe_input("即将放松全部关节,请扶好机械臂!输入 yes 回车后将【立即放松所有关节】"):
        pro450.set_motor_enabled(254, 0)
        time.sleep(0.02)
    else:
        print("已取消零位校准。")
        return

    if safe_input("请将各关节手动拖至零位刻度线,输入 yes 回车后将【锁紧关节并进行零位校准】"):
        pro450.set_motor_enabled(254, 1)
        time.sleep(0.02)
        # 执行关节零位校准
        for i in range(1, 7):
            pro450.set_servo_calibration(i)
            time.sleep(0.05)

        # 校准完成读取角度
        angles = read_angles(pro450)
        ok, off_joints = check_zero_position(angles)

        if ok:
            print("✅ 零位校准成功,当前角度:{}".format([round(a, 2) for a in angles]))
        else:
            print(f"⚠️ 零位校准失败,以下关节偏离零位:{off_joints}")
    else:
        print("已锁紧关节,但未进行零位校准。")
        pro450.set_motor_enabled(254, 1)
        time.sleep(0.02)

if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        print(f"❌ 脚本执行异常: {e}")

步骤2:运行脚本

在终端中执行:

python set_joint_zero.py

步骤3:放松关节

程序会提示:

即将放松全部关节,请扶好机械臂!输入 yes 回车后将【立即放松所有关节】 (yes/no):
  • 确认机械臂已扶稳

  • 输入 yes 并回车

步骤4:零位校准

  • 手动拖动各关节

  • 对齐机械臂上的零位刻度线

  • 保持机械臂稳定

程序会提示:

请将各关节手动拖至零位刻度线,输入 yes 回车后将【锁紧关节并进行零位校准】 (yes/no):

输入 yes 后,系统将自动完成校准。

步骤4:校准验证

若终端输出:

✅ 零位校准成功,当前角度:[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

表示校准完成。

若输出警告信息,请重新执行校准。


← 上一页 | 下一页 →

results matching ""

    No results matching ""