正运动学模拟器 返回
机器人学模拟器

正运动学模拟器 — 二连杆平面机械臂

由连杆长度 L₁、L₂ 与关节角度 θ₁、θ₂ 实时计算末端位置 (x, y),可视化机械臂姿态、环状工作空间,并显示雅可比行列式 detJ = L₁L₂sinθ₂。

参数设置
L1 连杆 1 长度
cm
L2 连杆 2 长度
cm
θ1 关节 1 角度
deg
θ2 关节 2 角度
deg
在 −180° 到 180° 之间连续扫描 θ1。
计算结果
末端 x
末端 y
原点距离 r
|sinθ₂| = |detJ|/(L₁L₂)
机械臂姿态与工作空间
关节空间雅可比图 (θ₁, θ₂)
理论与主要公式

二连杆平面机械臂的末端位置(正运动学):

$$x = L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2)$$ $$y = L_1\sin\theta_1 + L_2\sin(\theta_1+\theta_2)$$

雅可比行列式(奇异点指标):

$$\det J = L_1\,L_2\,\sin\theta_2$$

工作空间半径:$|L_1 - L_2| \le r \le L_1 + L_2$,奇异姿态:$\theta_2 = 0°$ 或 $180°$。

什么是正运动学

🙋
正运动学是从关节角度算末端位置吧?为什么大家都说这个方向"简单",逆运动学反而难?
🎓
大致这样理解:知道全部关节角后,直接代入三角函数就能得到末端坐标,解唯一且写得出闭式。比如这个二连杆机械臂就是 x = L₁cosθ₁ + L₂cos(θ₁+θ₂)。逆运动学要从目标位置反推角度,可能有多解或根本无解。所以工程中一般先用 FK 把机械臂画出来,再用 IK 反推目标角度。
🙋
右下角的"雅可比图"上有红色虚线叫"奇异曲线",这是什么?
🎓
这是今天的重点。雅可比矩阵 J 描述关节角速度如何映射为末端速度。对于二连杆 detJ = L₁L₂sinθ₂,当 θ₂ = 0°(完全展开)或 180°(折叠)时 sinθ₂ = 0,行列式为零,沿某个方向的末端运动需要无穷大的关节速度。真实机械臂在这些姿态附近非常危险,所以路径规划会避开这些"奇异带"。
🙋
我发现把 L₁ 和 L₂ 设成相同的时候,机械臂能到达基座本身。连杆长度的比例有这么重要吗?
🎓
没错,工作空间的内径就是 r_min = |L₁ − L₂|。当 L₁ = L₂ 时死区收缩为零,工作空间是完整圆盘。例如 L₁ = 30 cm、L₂ = 25 cm 时半径 5 cm 的小圆形区域不可达。工业机械臂会根据被操作物的尺寸调节这个比例,让死区不影响实际作业。

物理模型与主要方程

二连杆平面机械臂以原点为基座关节,连杆 1 的长度为 $L_1$,旋转角 $\theta_1$;其末端是第二个关节,连杆 2 长度 $L_2$,相对角 $\theta_2$。末端位置 $(x, y)$ 是简单的三角函数之和。

$$x = L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2),\quad y = L_1\sin\theta_1 + L_2\sin(\theta_1+\theta_2)$$

雅可比矩阵:$J = \begin{pmatrix} -L_1\sin\theta_1 - L_2\sin(\theta_1+\theta_2) & -L_2\sin(\theta_1+\theta_2) \\ L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2) & L_2\cos(\theta_1+\theta_2)\end{pmatrix}$,$\det J = L_1 L_2 \sin\theta_2$。

到达距离:$r = \sqrt{x^2+y^2}$,工作空间:$|L_1-L_2| \le r \le L_1+L_2$,奇异姿态:$\theta_2 = 0°, \pm 180°$。

真实世界中的应用

工业机械臂示教再现:焊接、装配、搬运等场景中,记录关节角度的时间序列后用正运动学在示教器或仿真器中重现末端轨迹。ROS、MoveIt、RoboDK 等仿真平台的核心计算都依赖这种 FK。

FEM 多体分析的姿态布置:多关节机械臂的刚度、模态、接触分析必须先按代表性姿态布置网格。由关节角度通过正运动学得到各连杆坐标后,再施加载荷与约束。

外科机器人与遥操作:主端操作的关节角度通过正运动学映射为从端末端位置,并实时叠加到画面上。闭式 FK 能将通信与计算时延降到最低,对手术安全极为关键。

CG、动画与 VR 绑定:角色的关节旋转通过 FK 推动末端位置,再叠加 IK 实现目标跟随,可生成自然的运动。

常见误解与注意事项

首先,"FK 简单所以不用关心精度"是错误的。编码器分辨率和连杆制造公差直接累加到末端误差。例如 L₁ = L₂ = 50 cm 的机械臂,关节角度有 0.1° 误差时末端约偏离 0.17 mm,臂越长误差放大越明显。工业设备必须做运动学标定。

其次,"θ₂ 是绝对角度"是常见混淆。本工具的 θ₂ 是相对角,即相对连杆 1 的旋转。在一些教材中使用绝对角 θ₂' = θ₁ + θ₂。引用论文或 CAD 数据时务必确认定义。

最后,"奇异点只是数学概念"是非常危险的想法。靠近奇异点时所需的关节速度急剧增大,伺服易饱和并产生振动甚至失控。把 θ₂ 推到 0° 或 180° 附近,右下方热图会变暗,这就是警告信号。路径规划要么避开奇异区,要么使用阻尼最小二乘法(DLS)进行稳定化。

常见问题

默认 L₁ = 30 cm、L₂ = 25 cm、θ₁ = 30°、θ₂ = 60° 时,x = 30·cos30° + 25·cos90° = 25.98 cm(约 26.0 cm),y = 30·sin30° + 25·sin90° = 40.0 cm,原点距离 r = √(26.0² + 40.0²) ≈ 47.7 cm,雅可比的归一化值 |sinθ₂| = sin60° ≈ 0.866。
雅可比矩阵 J 的每一列是 (x, y) 对一个关节角的偏导。将 2×2 行列式展开,交叉项通过 sin(θ₁+θ₂)cosθ₁ − cos(θ₁+θ₂)sinθ₁ = sinθ₂ 化简,最终得到 detJ = L₁L₂sinθ₂,与 θ₁ 无关。
最小可达距离对应两连杆折叠的姿态,r_min = |L₁ − L₂|。当 L₁ ≠ L₂ 时,半径 |L₁ − L₂| 的小圆区域不可达。设 L₁ = L₂ 可使死区收缩为零。
颜色代表 |sinθ₂|,在 θ₂ = ±90° 处最大,θ₂ = 0°、±180° 处为零,因此周期为 180°。红色虚线恰好标出这些零交叉位置(奇异曲线)。
对于 n 关节串联机械臂,可使用 Denavit-Hartenberg 参数依次相乘齐次变换矩阵,从结果矩阵读出末端位置与姿态。本工具是该方法在二维平面上的最简单实例;UR5、Fanuc M-20 等 6 自由度机械臂在三维空间中使用相同的代数。