使用前准备
在使用 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.xxx,xxx为 2~254 之间的任意数,且不能与机械臂冲突)。 - 具体配置方式请查看 静态IP配置 章节内容。
示例:
- 机械臂 IP:
192.168.0.232 - PC IP:
192.168.0.100 - 子网掩码:
255.255.255.0 - DNS服务器:
114.114.114.114
- 机械臂 IP:
验证:完成网络配置后,可在 PC 终端执行以下命令,若能成功返回数据包,则说明网络连接正常:
ping 192.168.0.232
- MyCobot Pro 450 默认 IP 地址:
关节零位校准
功能说明
本示例用于对 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]
表示校准完成。
若输出警告信息,请重新执行校准。