☰
一篇看懂雅可比矩阵与手眼协调:Every-Embodied速度运动学入门指南,新手也能快速上手
2026/9/26 2:08:36 网站建设 项目流程

一篇看懂雅可比矩阵与手眼协调:Every-Embodied速度运动学入门指南,新手也能快速上手

【免费下载链接】every-embodied仅需Python基础,从0构建自己的具身智能机器人;从0逐步构建VLA/OpenVLA/SmolVLA/Pi0, 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied

Every-Embodied是一个仅需 Python 基础就能"从 0 构建具身智能机器人"的开源教程仓库。这篇文章带你一次看懂两个新手最容易卡住的概念:雅可比矩阵(速度运动学的核心)和手眼协调(视觉引导抓取的基石)。不需要高深数学背景,读完你就能明白:关节速度如何变成末端速度、机械臂为什么会在某些姿态"使不上劲"、以及相机怎么"告诉"机械臂物体在哪。

为什么速度运动学重要:从"在哪"到"多快"

学机器人时,你会先学位置运动学(DH 参数、正运动学),解决的是"关节转到多少度,末端在哪个位置"。但真实控制关心的是另一件事:

末端想以某个速度移动,每个关节该以多快的角速度转动?

这就是速度运动学要解决的问题,而连接"关节速度"与"末端速度"的桥梁,正是雅可比矩阵(Jacobian Matrix)。项目里 04速度运动学与雅可比矩阵.md 开头就点明了它的地位:

  • 没有雅可比矩阵,你无法根据末端想要的速度反推关节转速;
  • 也无法根据末端抓取的负载计算关节电机需要多大的力矩。

下图是仓库"综合实战"章节中的单摆动力学仿真结果(时域响应 + 相图),可以看到速度(角速度 ω)如何随位置变化——这正是"从位置到速度"这一思想在动力学里的直观体现:

雅可比矩阵速览:一个偏导数矩阵

对于一个 n 自由度机器人,关节变量为 $q=[q_1,\dots,q_n]^T$,末端位姿 $x=f(q)$。雅可比矩阵就是末端位姿对关节角的偏导数矩阵:

$$J(q)=\frac{\partial f}{\partial q}$$

它只有两条核心公式,记住即可:

  1. 速度映射(关节速度 → 末端速度):$v = J(q)\dot{q}$
  2. 力映射(末端受力 → 关节力矩,虚功原理):$\tau = J^T(q)F$

以平面 2R 两连杆机械臂为例,取末端位姿 $[x,y,\phi]^T$,雅可比是 3×2 矩阵:前两行对应线速度,第三行对应末端姿态角速度。仓库里用sympy符号推导自动求出了这个雅可比,并做了数值验证,完整代码见 04速度运动学与雅可比矩阵.md。

💡 新手记忆技巧:J 管"快慢",J 的转置管"力气"。方向一致,维度转置。

奇异性:机械臂"伸直胳膊"时为什么会卡住

雅可比矩阵最重要的实践含义之一是奇异性判断。当机械臂完全伸直(2R 臂的 $\theta_2=0$)时,线速度子矩阵 $J_v$ 的行列式趋近于 0:

  • 此时末端在某些方向上"动不了",无论关节怎么动都无法产生该方向的线速度;
  • 反过来,末端只要在该方向有微小外力,关节就需要极大的力矩——这就是机械臂接近奇异位形时必须减速保护的原因。

仓库的代码对"手臂伸直"这一姿态做了奇异性数值测试(det(Jv)接近 0),见 04速度运动学与雅可比矩阵.md。

⚠️ 新手常见误区:对 3×2 这类非方阵不能直接取det(J),位置任务的奇异性判断要用前两行组成的线速度子矩阵 $J_v$。

手眼协调两种形态:Eye In Hand 还是 Eye To Hand

机械臂要"看着抓",必须知道相机坐标系和机器人末端坐标系之间的变换关系,这就是手眼标定(Hand-Eye Calibration)。它只解决一个关系:手与眼之间相对位姿(相机装在哪、朝向如何)。

根据相机安装位置,分为两种经典形态:

形态相机位置标定方式典型场景
Eye In Hand(眼在手上)装在机械臂末端,随手臂一起动标定板固定,机械臂移动到多个位姿拍照近距离精细操作、跟随抓取
Eye To Hand(眼在手外)固定在外部(如底座、支架)标定板固定在末端,机械臂拿着板绕相机拍照大范围俯视工作区、安全隔离

完整定义与坐标系关系(基座、末端、相机、标定目标四个坐标系)见 补充01手眼协调.md。

手眼标定的数据采集:两种形态怎么拍

Eye In Hand:相机随末端一起动,标定板不动。机械臂摆出多个不同位姿,每个位姿拍一张:

Eye To Hand:相机不动,标定板固定在机械臂末端。机械臂拿着标定板绕固定相机运动、拍照:

手眼标定的核心方程:AH = HB 与 OpenCV 一行求解

两种形态推导后都会得到同一个方程 $AH = HB$(H 就是要求的"手眼变换矩阵")。求法上有两类经典思路:

  • 独立闭式解:先解旋转、再解平移(如 Tsai-Lenz 法、Park 法);
  • 同时闭式解 / 迭代法:整体优化求解,精度与算力开销需权衡。

推导过程(基于 SO(3) 李群伴随性质、最小二乘与点云配准视角)在 补充01手眼协调.md 中有完整展开。而实际工程上,OpenCV 已经把常用方法都封装好了:

采集多组标定数据后,把机械臂末端位姿和标定板定位结果传给cv2.calibrateHandEye,选择CALIB_HAND_EYE_TSAI(默认)或CALIB_HAND_EYE_PARK即可得到手眼变换矩阵 H。标定效果的评估,则是比较"测量值"与"预测值"的距离误差,计算均值(系统误差)和标准差(随机误差)。

新手手眼标定 6 条实操避坑清单

结合仓库文档总结的标定注意事项(源自 补充01手眼协调.md),第一次标定前请逐条核对:

  1. 内参一致:用calibrateCamera求标定板到相机的 R、t 时,内参要和实际抓取用的内参一致,否则引入误差;
  2. 角点方向统一:标定板角点检测默认从左到右,若出现从右到左会导致坐标系不统一;
  3. 覆盖工作区:标定板不要只在画面中心小范围移动,要覆盖到边缘,否则边缘精度差;
  4. 姿态要变化:拍照时要有旋转姿态变化,不能只平移;
  5. 数量要够:至少10 张以上照片;
  6. 深度相机注意:RGB-D 相机的变换矩阵要特别留意(彩色相机与深度相机光心不同)。

Every-Embodied 学习路径:从雅可比到手眼协调的完整路线

这篇入门指南对应的知识,在仓库里都配有可运行的 Python 验证代码,建议按以下顺序推进:

步骤模块文件
1️⃣ 坐标与空间描述02-机器人基础和控制01机器人空间描述与坐标变换.md
2️⃣ 位置运动学02-机器人基础和控制02机器人运动学与 DH 参数.md
3️⃣ 速度运动学02-机器人基础和控制04速度运动学与雅可比矩阵.md
4️⃣ 手眼标定02-机器人基础和控制补充01手眼协调.md
5️⃣ 综合实战02-机器人基础和控制05综合实战与仿真.md

🎯 想动手玩控制算法?仓库还有 CartPole 的 PID / LQR / MPC 三种算法实战:cartpole建模与控制.md

想获取完整资料,可以克隆仓库:

git clone https://gitcode.com/gh_mirrors/ev/every-embodied

小结:一张表记住雅可比与手眼协调

概念一句话理解核心公式 / 工具
雅可比矩阵 J关节速度 → 末端速度的桥梁$v=J(q)\dot{q}$
雅可比转置 Jᵀ末端受力 → 关节力矩的桥梁$\tau=J^T F$
奇异性雅可比"降秩",臂伸直时最危险判断 $\det(J_v)\approx 0$
手眼标定求相机与末端的手眼变换 H$AH=HB$
标定实操OpenCV 一行调用cv2.calibrateHandEye

雅可比矩阵解决"手怎么动、要出多大力",手眼标定解决"眼怎么看、坐标怎么统一"。两者一结合,机械臂就具备了"看着抓"的能力——这也是 Every-Embodied 后续 VLA 与视觉抓取内容的重要基础。

【免费下载链接】every-embodied仅需Python基础,从0构建自己的具身智能机器人;从0逐步构建VLA/OpenVLA/SmolVLA/Pi0, 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询