首页 › 具身智能 › 02-机器人基础和控制、手眼协调 › 05综合实战与仿真

05综合实战与仿真

1. 实战练习:UR5 机器人 DH 参数表​

UR5 是工业界最经典的 6 自由度协作机器人。以下是其标准 DH 参数(注意:不同厂商或文献可能使用改进型 DH,即 MDH,这里展示标准 DH 以符合本文档 2 的定义)。​

单位: ​(毫米 mm), ​(弧度 rad)​

​

​
关节 Joint (i)​
​
​
αi (Twist)​
​
​
ai (Link Length)​
​
​
di (Link Offset)​
​
​
θi (Range)​
​
​
1 (Base)​
​
​
​
​
​
​
0​
​
​
89.16​
​
​
​
​
​
​
2 (Shoulder)​
​
​
0​
​
​
-425.00​
​
​
0​
​
​
​
​
​
​
3 (Elbow)​
​
​
0​
​
​
-392.25​
​
​
0​
​
​
​
​
​
​
4 (Wrist 1)​
​
​
​
​
​
​
0​
​
​
109.15​
​
​
​
​
​
​
5 (Wrist 2)​
​
​
​
​
​
​
0​
​
​
94.65​
​
​
​
​
​
​
6 (Wrist 3)​
​
​
0​
​
​
0​
​
​
82.30​
​
​
​
​
​

​

练习题:请尝试使用文档 2 提供的 forward_kinematics 代码,输入上述参数,计算 UR5 处于零位 (​) 时的末端坐标。​

2. 动力学仿真:单摆的相图与时域响应​

我们在文档 3 中推导出了单摆的动力学方程。现在,我们使用 Python 的科学计算库 scipy 对其进行数值积分,模拟真实的物理运动。​

微分方程形式:​

我们将二阶微分方程 ​(加入阻尼项 ​) 转换为一阶状态空间方程组:​

令状态向量 ​,则:​

​​

3. Python 仿真代码 (scipy.integrate.odeint)​

​

代码块​

Python

import numpy as np​

from scipy.integrate import odeint​

import matplotlib.pyplot as plt​

​

# 1. 定义系统动力学方程 (导数函数)​

def pendulum_dynamics(y, t, g, L, m, b):​

"""​

y: 状态向量 [theta, omega]​

t: 时间点​

g, L, m, b: 物理参数​

"""​

theta, omega = y​

​

# 状态方程:​

# d(theta)/dt = omega​

# d(omega)/dt = -(g/L)sin(theta) - (b/(mL^2))omega​

dydt = [omega, -(g/L)*np.sin(theta) - (b/(m*L**2))*omega]​

​

return dydt​

​

# 2. 设置参数​

​

4. 结果分析​

•

时域图 (上图): 你会看到单摆从高处落下,震荡几次后,由于阻尼 ​

b

的存在,振幅逐渐减小,最终趋于 0(垂直向下)。​

•

相图 (下图): 展示了 ​

θ

和 ​

ω

的轨迹。它应该是一个向原点收缩的螺旋线,这直观地展示了系统的稳定性。​

​

​