机器人自由度计算避坑:构型空间与Grübler公式

发布时间:2026/10/27 5:04:54
机器人自由度计算避坑:构型空间与Grübler公式 简介《现代机器人学》课后习题答案PDF面向机器人专业学生、工程师及自学者用于对照教材巩固运动学、动力学、路径规划与控制等核心知识适合课程复习、习题自查和考前查漏补缺。压缩包内含1个PDF文件大小约13.97MB按章节组织解答覆盖第2至第13章练习涉及自由度计算、球形关节与约束分析、七自由度上肢机构等典型题目便于按知识模块定位。已有1247人学习说明其在机器人学学习群体中具有一定参考价值。读者可借助逐题推导核对思路理解机构运动特性、空间定位与关节约束之间的关联对复杂公式和刚体约束的推导过程可反复研读并延伸到机械设计、规划和控制问题的分析从而提升理论联系实际的能力。1. 自由度为什么总差一位从数关节到数约束的视角切换把一个并联平台摊在纸上一条腿一条腿地数关节很容易数出一个远大于 6 的数字但平台整体只能有 6 个自由度。机器人学里最容易被低估的一课就在这里自由度不是关节数量的加总而是构型空间的维数。同一套机构换一种记账方式公式给出的数字可以差出好几位。这套覆盖第 2 到第 13 章的习题解答真正有价值的部分不是答案本身而是它反复演示的记账规则先定拓扑再数连杆再数关节最后才代公式。把这套规则吃透看到任何并联或过约束机构都能判断出「公式给的值」和「实物能不能动」之间的差距从哪来。2. 构型空间n 个点为什么恰好有 n(n1)/2 个自由度2.1 逐点放置每一步到底扣掉了几个自由度先从最朴素的建模动作开始在空间里放置 n 个点让它们构成一个刚体。第一个点没有任何约束n 个自由度随你摆。第二个点不行了它必须和第一个点保持固定距离于是被约束在一个以第一点为球心、半径固定的球面 S^{n-1} 上只剩 n-1 个自由度。第三个点同时受前两个点约束落在两个球面的交集上剩 n-2 个。依此类推最后一个点只能落在 S^1 上贡献 1 个自由度。把这串数字加起来就是 n (n-1) (n-2) … 1首尾配对后每对都等于 n1共 n/2 对结果是 n(n1)/2。这个求和技巧本身没什么稀奇稀奇的是它揭示的机制刚体的自由度不是一次性给定的而是一个点一个点钉出来的每钉一个点就消耗掉一维球面上的位置选择。这条推理还能顺手解释一个常见困惑为什么确定一个刚体位姿只要 n1 个点。第 n1 个点之后它需要落到的球面已经退化成 S^0两个离散点再加点就只剩离散的镜像选择连续的构型空间不再增长。超定约束并不会增加自由度只会让机构要么变成结构要么在几何巧合下产生新的运动——这一点在第 4 章会展开。def point_placement_dof(n): n 个点构成刚体时构型空间的维数分解 total n * (n 1) // 2 # n (n-1) ... 1 linear n # 第一个点贡献的平移自由度 rotational total - linear # n(n-1)/2逐点落到球面上的剩余选择 spheres x .join(fS^{k} for k in range(n - 1, 0, -1)) return total, linear, rotational, fR^{n} x {spheres} for n in (2, 3, 4): print(n, point_placement_dof(n)) # 2 (3, 2, 1, R^2 x S^1) # 3 (6, 3, 3, R^3 x S^2 x S^1) # 4 (10, 4, 6, R^4 x S^3 x S^2 x S^1)参数只有点数 n 一个total对应答案里反复出现的 n(n1)/2linear和rotational是同一笔账按性质拆开的两栏。对照一下 n2 和 n3 的输出很有意思平面两点给出 3 个自由度正好是平面刚体的标准值空间三点给出 6 个正好是空间刚体的标准值。这不是巧合而是这套构造方法在 n1 个点时自然收束到刚体自由度。2.2 线性项与旋转项n 与 n(n-1)/2 是怎么分开的答案里明确写了「n 个自由度是放置第一个点的线性自由度其余 n(n-1)/2 是旋转自由度」。这句话容易被当成一句注脚跳过其实它决定了后续所有误差传播的判断方式。线性项来自第一个点的位置它和刚体自身的朝向完全解耦可以直接用欧氏距离度量。旋转项来自逐个点相对前一个点的方向选择它们不是独立的平移而是相互耦合的角度量。两者在数值优化里的病态程度完全不同平移项的条件数通常良好旋转项在接近奇异位形时会急剧恶化。理解这一点之后看到「这个机构有 7 个自由度」时就不会只当它是一个计数结果而会追问这 7 个里几个是可以直接驱动的直线量几个是必须靠角度闭环控制的量。实际选型时直线自由度多的机构标定更容易纯旋转自由度多的机构精度更依赖减速比和编码器分辨率。2.3 同维不同拓扑R^n × S^{n-1} × … × S^1 与 SE(n) 的差别答案给出了构型空间的拓扑形式 R^n × S^{n-1} × S^{n-2} × … × S^1。这串乘积的维数加起来正好是 n(n1)/2和刚体一致。但维数相同不等于空间相同这是很多人翻车的地方。以 n3 为例R^3 × S^2 × S^1 和真正的刚体位形空间 SE(3) R^3 × SO(3) 都是 6 维局部看起来完全一样但整体拓扑不同SO(3) 同胚于 RP^3基本群是 Z/2意味着绕任意轴转 2π 回不到原位、转 4π 才回到而 S^2 × S^1 的基本群是 Z绕杆轴转一圈是实打实的一圈。这个差别不是数学洁癖它直接影响路径规划在 S^2 × S^1 上做插值绕杆自旋的路径和杆方向的路径可以分开处理在 SO(3) 上做插值就得用四元数或指数坐标处理那个双覆盖带来的符号翻转。答案里 Exercise 2.16(b) 还点出了另一层结构四转动关节的球面机构只有 1 个自由度它的构型空间不是整个 T^4而是 T^4 里的一条曲线——可能闭合也可能自交。这条曲线才是规划器真正搜索的空间直接在 T^4 上撒点会采到大量物理上不可达的位形。拓扑判断的第一步永远是先写出 C-space 的实际结构再决定用什么度量、什么采样策略。3. Grübler 公式N、J、f_i 三个计数到底在数什么3.1 从 3(N-1) 减到 3(N-1-J)Σf_i 的推导公式本身很好记但只有自己推一遍才知道每个符号在防什么错。取平面情形N 个连杆里有一个是地面固定不动剩下 N-1 个活动连杆各自本来有 3 个自由度总账是 3(N-1)。每接一个关节就扣掉一部分自由度。一个自由度为 f_i 的关节在平面里最多允许 3 个相对运动实际只给 f_i 个于是扣掉 3 - f_i 个约束。把所有关节扣掉的部分加起来dof 3(N-1) - Σ(3 - f_i) 3(N-1) - 3J Σf_i 3(N-1-J) Σf_i空间情形把系数 3 换成 6推导过程一字不改。这就是公式的真面目它不是在数自由度而是在数被关节吃掉的自由度。这也解释了为什么 N 必须包含地面、为什么 J 数错了结果会差 3 或 6 的整数倍——错误总是以整块约束的形式出现的。def grubler(N, joint_dofs, dim): N: 连杆总数含 1 个 ground joint_dofs: 每个关节的自由度列表如 [1,1,1,3,3] dim: 3 表示平面6 表示空间 J len(joint_dofs) f_sum sum(joint_dofs) return dim * (N - 1 - J) f_sum print(grubler(7, [1, 1, 1, 1, 1, 3, 3], 6)) # 5六连杆带两球关节 print(grubler(14, [1] * 18, 3)) # 3全 R/P 的平面机构 print(grubler(8, [3] * 12, 6)) # 6六腿球关节并联平台三个调用分别对应答案里 Exercise 2.5、2.9(b)、2.13 的原始输入。参数N一旦把地面漏掉前两个例子会分别变成 -1 和 0看起来像机构卡死其实是记账错了。3.2 七自由度手臂用约束反推关节构型的逆向用法答案里 Exercise 2.2 的推理方向和常规用法相反不是已知关节求自由度而是先给出手掌固定后还剩 1 个自由度这个结论再反推整条手臂应该是 7 个自由度。具体拆解是这样肩部视为球关节 3 个自由度肘部 1 个腕部 2 个前臂绕自身轴线的旋转 1 个3121 7。手掌在空间中固定位置和姿态等于施加了刚体的 6 个约束7-6 1剩下的是肘尖可以沿一段圆弧滑动。这个 1 很有说服力它不是随便算出来的余数而是有明确物理图像的。肩关节中心不动、手掌不动整条手臂的可行位形就退化成一维曲线。逆向使用公式的价值在于它能把一个模糊的结构合理判断变成一个可证伪的数字。如果有人设计出一条号称 6 自由度却能同时锁住手掌和肘部的手臂公式会立刻给出 0提示要么关节数记错了要么存在过约束。答案里 Exercise 2.3 把这一招用得更狠把前臂看成肱骨与腕骨之间的闭链用已知的 7 自由度反推前臂各关节的自由度总和。假设关节数取最少 4 个解出四个关节要贡献 10 个自由度取最多 6 个要贡献 25 个。25 这个数意味着平均每个关节超过 4 个自由度标准关节模型撑不住只有韧带复合体稳定下的非标准连接才能满足。公式在这里不是计算器而是模型证伪器——它告诉你把前臂简化成两个转动关节这个假设在自由度层面就不成立。3.3 并联机构的腿数无关性6(α-6)n 的稳定点答案里 Exercise 2.8 的推导值得单独拎出来。把每条开链腿的自由度记作 α机构变成 N2平台 地面、Jn、Σf αn代入空间公式dof 6(2 - 1 - n) αn 6 (α - 6)n只要 α 6n 取任何值结果都是 6。并联平台的自由度不随腿数变化这条结论打破了很多人的直觉——加了腿怎么会不变机制在于每条腿贡献的净约束是 α-6。α6 的腿刚好抵消自己引入的那部分自由度所以每条腿都是零净贡献整体自由度锚定在 6。如果腿是 5 自由度的比如少一个被动关节净贡献变成 -1每加一条腿就少一个自由度反之如果是冗余驱动的 7 自由度腿净贡献 1整体反而更松。这条公式直接对应设计取舍实际并联平台用 6 条腿而不是 8 条不是因为多两条更稳而是因为超过 6 条之后每条腿都变成过约束条件几何误差会让装配产生内应力。冗余腿换来的是刚度均匀性和工作空间形状代价是标定复杂度和成本——自由度账面上不变力学性能上变化很大。3.4 关节合并的记账一致性RP 与 C 的等价条件答案里 Exercise 2.9 用两种编码算了同一个机构一种把相邻的转动关节和移动关节合并成圆柱关节 C另一种全部拆开按 R 和 P 单独数。两种方式都得到 3这个都才是重点。合并操作的规则必须完整把串联的 RP 换成 C关节数 J 减 1自由度之和 Σf 不变11 变成 2同时中间那个连杆必须一起消掉N 也减 1。三者同时调整代入 3(N-1-J)Σf_i 后结果不变原编码N, J, Σf - 3(N-1-J) Σf 合并后N-1, J-1, Σf - 3((N-1)-1-(J-1)) Σf 3(N-1-J) Σf只改 J 不改 N结果会硬生生多出 3平面或 6空间。这是自由度计算里最常见的一类错误看起来只是换了个写法实际上偷偷删掉了一个刚体却保留了对它的约束记账。合并与拆分本身是自由的前提是三个量必须同步维护缺一个就失真。4. 公式失效的边界过约束、球面机构与降维记账4.1 过约束空间正方形机构为什么算出 0 却能动答案里 Exercise 2.15 给了一个非常干净的对照。五个正方形通过六个转动关节首尾相连用平面公式算dof 3(6-1-6) 6 3用空间公式算dof 6(6-1-6) 6 0。0 意味着这是一个结构动不了。但答案是在所有正方形尺寸相同的假设下这个机构确实能以一个自由度运动。公式错了或者说公式的前提不成立。原因在于 Grübler 公式默认每个关节施加的约束彼此独立。正方形机构里多个转动关节的轴线在运动过程中始终保持特定的几何关系约束之间线性相关实际被扣掉的独立约束少于公式假设的数量多出来的那部分就变成了额外运动。这类机构叫过约束机构它的可动性来自几何巧合不是来自关节数量。这对工程实践的含义很直接过约束机构用几何对称性换刚度。同样是支撑一个平台过约束结构在理想几何下应力分布均匀、刚度高一旦装配误差破坏了那个巧合机构要么卡死要么产生不可预测的内力。所以这类设计必须配一套误差敏感度分析不能只靠公式算出来的自由度下结论。如何验证对任意位形求雅可比矩阵的秩秩掉下来就说明约束相关。理想对称的正方形机构在整条运动路径上雅可比都掉秩这就是公式说 0、实物能动的数值证据。4.2 隐藏降维4R 球面机构的 -2 与 1Exercise 2.16 的四转动关节机构更极端。四个连杆的转轴全部交于一点所有构件被限制在一个球面上运动。此时每个活动构件能到达的位形空间是 2 维的球面不是 3 维的空间扣约束时应该扣 2 - f_i 而不是 3 - f_i。用二维公式N4、J4、Σf4dof 3(4-1-4) 4 1正确。用空间公式dof 6(4-1-4) 4 -2直接给出一个物理上不可能的值。def mobility(N, joint_dofs, dim): return dim * (N - 1 - len(joint_dofs)) sum(joint_dofs) spherical_4r [1, 1, 1, 1] print(mobility(4, spherical_4r, 3)) # 1构件被限制在球面上 print(mobility(4, spherical_4r, 6)) # -2约束被重复扣除同一个机构、同一组关节只因为维度参数选错答案从能正常运动变成物理上不可能。负的自由度几乎总是记账错误的信号而不是机构真的存在某种反物理特性。看到负数先别怀疑机构先怀疑维度选错了。这条规则可以推广成一个判定习惯拿到机构先检查所有转轴是否共点、所有运动是否共面、是否存在某个方向被整体锁死。只要有一项成立就说明机构的真实位形空间维度低于 3或 6必须换用降维后的公式。4.3 几何巧合当约束用穿点工具与 SP 关节等效Exercise 2.17 讨论的手术工具是个好例子。工具必须始终穿过基座上的一个固定点 A这个要求不是靠某个具体关节实现的而是一种几何约束。答案把这种约束等效成一个四自由度的 SP 关节球关节确定工具的朝向3 个自由度移动关节确定工具沿自身轴线的位移1 个自由度合起来正好 4 个。加入这个等效关节后N 不变、J 加 1、Σf 加 4代入空间公式后自由度从 4 降到 2。数字变化的背后是约束被正确地外化成了一个虚拟关节——把几何约束翻译成虚拟关节是处理这类问题的通用手法比在公式外额外减自由度要可靠得多因为它保持了记账体系的封闭性。答案的第三小问走了另一条路不引入虚拟关节而是把所有转轴都设计成通过 A 点整个机构退化成球面机构改用二维公式。两种建模路径给出自洽的结果这也是检查建模正确性的常用手段——用两种不同的等效方式算同一个机构答案必须一致不一致就说明某一处的 N、J、Σf 有一栏漏了。代价同样明显。把约束寄托在几何巧合上意味着装配误差会直接破坏约束关系机构从恰好 2 自由度变成过约束状态轻则运动受阻重则关节承受异常载荷。实际设计里要么留柔性环节要么把这部分误差纳入标定。5. 自由度计算的避坑清单五次翻车对应的现象、原因与解法5.1 计数类合并关节与连杆归并的两处失真现象一把一对串联的 R 关节和 P 关节合并成一个 C 关节之后自由度从 3 变成了 6多出来的正好是平面系数的 3 倍。原因只改了 J 和 Σf忘掉中间那个连杆已经不存在了N 没有跟着减 1。解决合并操作永远三栏一起改改完立刻代回公式验算只要结果和合并前不等就说明漏了一栏。现象二两个人在同一张机构简图上算出不同的自由度差值是 3 的整数倍。原因对什么算一个连杆没有统一约定。用螺栓刚性连在一起的两块板一个人算两个连杆加一个关节另一个人算一个连杆两者的 N 和 J 同时差 1结果却可能因为关节自由度不同而不一致。解决动笔之前先把刚性连接的零件合并成连杆画出只含连杆和关节的拓扑图图上每个节点都必须能相对邻居运动否则就还没合并干净。5.2 建模类地面重复计入与维度选错现象三并联平台算出来的自由度是负数而且绝对值随腿数增加而增大。原因每条腿的固定基座都被单独算成了一个 groundN 里塞进了多个地面。解决全机构只保留一个 ground所有固定在基座上的关节都接到同一个节点上。这条规则在串联机构里几乎不会错一到并联就特别容易忘。现象四球面机构或平面机构用空间公式算出 0 或负数。原因没有识别出隐藏的降维每个构件仍按 6 个自由度扣约束。解决先做三项检查——转轴是否共点、运动是否共面、是否存在整体被锁的方向——命中任何一项就换用低维公式。Exercise 2.16 的 -2 就是没做这项检查的典型后果。5.3 判定类把必要条件当充分条件现象五公式给出 0判定机构是结构实物装配起来却能转动或者公式给出正数实物却卡在某几个位形动不了。原因Grübler 公式是必要条件不是充分条件。前者对应过约束约束相关实际自由度更多后者对应奇异位形某些位形下雅可比掉秩瞬时自由度减少。解决公式只用来做初筛和交叉验证最终结论必须靠雅可比秩检验或数值仿真。对疑似过约束的机构在整条运动路径上采样若干位形分别算秩秩恒定偏低才说明是结构性的过约束而不是某个孤立奇异点。这套排查顺序我自己的习惯是倒着走先看结果是否合理负数、零、超出预期都算异常再回头查 N、J、Σf 三栏最后才怀疑公式前提。绝大多数错误在前两步就暴露了真正需要动用秩检验的不到一成。6. 把答案当验证器自由度建模的自检回路与取舍这套习题解答最容易用错的方式是当成对答案的抄写本。翻到某一题、看一遍解法、觉得懂了然后合上。下一次遇到新机构还是从零开始数关节还是会在并联的地方把地面数两遍。更有效的用法是把它当成一个验证器而且是有冗余的验证器。同一道题往往给出多种等效编码——Exercise 2.9 把关节合并和不合并各算一遍Exercise 2.17 用虚拟关节和几何降维各算一遍。这些殊途同归不是排版冗余而是内置的交叉检验。如果两种正确编码给出不同结果那一定是其中一种的记账漏了东西这个后悔药比任何口诀都管用。具体落到流程上我建议的顺序是先只读题干不看解答自己画拓扑图、标 N 和 J再算一遍自由度记下数值然后才翻解答重点不看它算出的数字而看它的 N 和 J 各是多少、有没有引入虚拟关节、用的是三维还是二维公式。三个量对上两个基本就说明建模方向没错只有一个对得上就得回去查是不是漏了降维或者多算了地面。做这个对照时有个判断标准值得记住自由度相同的两种编码不一定都正确但自由度不同的两种编码一定有一种是错的。前者可能是因为两处错误恰好互相抵消后者没有侥幸空间。从设计取舍的角度看这份答案真正传递的是一种态度公式给出的数字是一个待验证的假设不是结论。过约束机构告诉你几何巧合可以换来刚度和额外运动球面机构告诉你维度选错会让答案变成负数穿点工具告诉你几何约束可以外化成虚拟关节来统一记账。这三件事的共同点是它们都无法只靠套公式发现必须靠对机构的物理直觉加上至少一种独立的验证手段。从那以后我每次建完拓扑图都会强制把 N、J、Σf 三栏单独抄在一张纸上核对一遍再代公式最后拿另一种等效编码复算一次。三步走完花不了几分钟但省下来的返工时间远不止几分钟。这套答案覆盖第 2 章到第 13 章从构型空间、自由度一路铺到轨迹规划和控制把它放在手边当参照系比自己闷头推要快得多。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询