资讯动态

格里布勒公式与机构自由度:从约束扣减到构型空间的建模指南

发布时间:2026/10/17 22:46:01 来源:尧图企业网站定制
简介《现代机器人学机制、规划与控制》课后习题答案是一份面向机器人专业学生、研究者及工程师的高质量学习资源。该资源以英文原版 Exercise Solutions 为内容覆盖第2至第13章从运动学自由度计算、机构分析到动力学、路径规划与控制理论均有系统解答便于读者对照教材逐章巩固核心概念。压缩包共1个文件为PDF格式整体大小约13.97MB文件排版清晰、公式完整适合在电脑或移动设备上随时查阅。目前已有1245人学习下载可见其在机器人学习群体中的实用价值。通过这份答案读者不仅能核对课后习题结果更能从解题过程中理解自由度计算、空间约束、关节运动等关键知识点的推导逻辑为后续从事机器人设计、建模与控制实践打下扎实基础。无论是初学者入门还是工程师进阶都能从中获得明确指引。1. 格里布勒公式算出 0机构却还在转为什么自由度不是“数数”而是“扣减”同一张机构图纸用平面版的格里布勒公式算自由度是 3换用空间版公式一算变成 0可你把连杆模型搭出来它分明还能顺畅地转。这看起来像公式失效其实是输入“喂错”了格里布勒公式不是一台产生答案的计算器而是一台做约束扣减的计数器——机构所在的运动空间、关节的类型与自由度、开链与闭链的区分方式任何一个参数没对齐结果就会偏离物理现实。《现代机器人学》课后习题的第二章通篇都在训练这种建模功夫从七自由度上肢、双手握方向盘到并联平台和手术机器人真正考的不是套公式而是你能不能一眼看清“这个机构到底被允许怎么动、又被哪些约束死死按住”。把这套本领练扎实第三章以后的运动学标定、动力学建模和运动规划才不至于在同一个地方反复翻车。2. 格里布勒公式N、J、fi 三个数字是怎么联合算出自由度的2.1 公式的另一种写法先假设全都自由再逐关节扣约束很多教材直接甩出空间格里布勒公式dof 6(N - 1 - J) Σfi然后让人把 N、J、fi 往里代。这样用久了很容易把公式当成一个黑匣子甚至觉得 N 和 J 数对了就行。但物理上更直觉的写法是这样的dof 6(N - 1) - Σ(6 - fi)意思很直白先假设除了固定基座之外的所有构件都完全自由每一个构件在空间里都有 6 个自由度然后逐个关节“扣钱”——每个关节允许 fi 个自由度就等于对两个相邻构件之间的相对运动施加了6 - fi个约束。全部扣完之后剩下还能动的方向数才是机构真实的自由度。展开整理就得到常见的6(N - 1 - J) Σfi。用习题 2.5 来验证这条思路机构有 7 个构件6 根连杆加 1 个固定基座N 75 个转动副加 2 个球副J 7Σfi 5×1 2×3 11。先给所有构件 6×6 36 个自由度再扣掉 5 个转动副各 5 个约束、2 个球副各 3 个约束一共扣掉 31剩下 5。这和直接套公式的结果完全一致。我一般会这么理解格里布勒公式本质上是一张“自由度收支表”每个关节都在消耗约束而不是在“产生”自由度。fi 看起来是加项实际上只是把该关节没被约束住的那部分自由度退回来。想明白这点前面那个“空间版算出 0、实际却能动”的怪异感就消除了一半——公式没问题问题多半出在你对约束的理解上。2.2 3 与 6 的分野平面、空间、球面是三种不同的运动空间格里布勒公式最容易被忽略的一个参数是那个打头的系数。平面机构用 3空间机构用 6这个系数不是凑出来的而是机构所在运动空间的维数平面刚体在 SE(2) 里只有 3 个自由度空间刚体在 SE(3) 里有 6 个自由度。习题 2.16 就是教科书级的教训。一个由四个转动副组成的球面四杆机构所有杆件都被约束在同一个球面上运动。如果照抄空间版公式dof 6(4 - 1 - 4) 4 -2这是一个荒谬的结果——机构直接“被算死”了。但球面机构里每个构件其实只允许在球面上滑动每个构件只有 2 个自由度转动副也只施加 1 个约束。正确做法是用二维版本的格里布勒公式dof 2(4 - 1 - 4) 4 1一个自由度的球面四杆机构答案一下就合理了。这提醒我拿到机构图先不要抢着数 N 和 J先问一句“这个机构被限定在哪个空间里运动”。关节轴线全部交于一点、构件只能绕球心转动那就是球面运动m 取 2机构始终贴着一个平面运动m 取 3一般的空间并联机构、机械臂m 取 6。很多初学者所有题目都拿 6 去套遇到球面机构或平面机构就算是栽了。2.3 关节打包与拆分为什么计数方式不影响结果习题 2.9 给出了一个特别有意思的对照组。(a) 问把转动副 R 和平移副 P 的组合看成一个圆柱副 C当作一个 2 自由度关节来计数(b) 问把所有 R 和 P 全部拆开一个一个地数。两种做法得到的自由度都是 3。为什么会这样因为格里布勒公式对关节自由度是线性求和的。把一个复合关节拆成 k 个独立关节时构件数 N 增加 k-1关节数 J 也增加 k-1Σfi 则保持不变公式里m(N - 1 - J)这一项和 Σfi 正好联动最终结果不变。这说明只要你对每个关节自由度的判断是对的打包还是拆分只是草稿纸上的策略区别不影响答案。但在实际做题时我仍然建议先用“拆开”的方式数一遍再用“打包”的方式复核。拆分能逼着你逐个关节确认类型——R 是 1、U 是 2、S 是 3、P 是 1不容易漏打包则能帮你看到结构层次比如把一条 7 自由度支链整体当成一个广义关节。两种方法互相印证基本能保证 N、J、fi 三列数据没硬伤。def grubler(m, N, J, f_list): m: 运动空间维数平面取3空间取6球面取2 N: 所有构件数务必把固定基座也算进去 J: 关节数量 f_list: 每个关节的自由度列表 if len(f_list) ! J: raise ValueError(关节数与自由度列表长度不一致) return m * (N - 1 - J) sum(f_list) # 习题 2.55 个转动副 2 个球副 print(grubler(6, 7, 7, [1, 1, 1, 1, 1, 3, 3])) # 输出 5上面这段代码当然只是把公式翻译成了函数但它强制你把“每个关节的自由度”写成一个一个的元素而不是一个总数。写f_list的过程其实就是逼自己把关节类型过一遍的过程。如果某天你把一个 U 关节想当然地填成 3结果会立刻偏离反过来如果结果对不上逐项检查f_list往往比重新数 N 更快定位到是哪个关节判断错了。3. 构型空间自由度数相同为什么拓扑决定了机器人能怎么走3.1 从 R² × T⁸ 看移动机械臂C-空间不是“维度一样的房间”习题 2.6(a) 计算了一个轮式移动基座加 6R 机械臂的构型空间。轮式基座在平面上可以自由平移和旋转其构型空间是 R² × T²6R 机械臂的每个转动关节对应一个圆 S¹六个关节就是 T⁶。两者合成得到 R² × T⁸。这里有意思的点在于这个系统一共 8 个自由度但它的构型空间不是一个 8 维欧氏空间 R⁸而是两个平面方向配上八个“圆”的乘积。维数相同拓扑不同运动规划的策略就完全不同。在 R⁸ 里你可以直接定义网格、做 A* 搜索在 T⁸ 里关节角 0 和 2π 是同一个点如果你简单地把角度边界当成障碍物路径搜索就会把一个明明连续的运动误判成撞墙。处理周期边界时常见的工程做法是把环面展开到它的覆盖空间让 θ 在 [0, 2π) 之外继续“绕圈”或者在建图时把边界的邻居关系显式指出来。总之自由度数只是一个维度标签真正决定搜索难易的是构型空间的拓扑形状——这就是为什么教材在第二章刚讲完自由度紧接着就要引入构型空间的概念。3.2 球面四杆机构的 C-空间一条躺在 T⁴ 里的曲线习题 2.16 还给出了一个更极端的拓扑例子。四杆球面机构算出来只有 1 个自由度所以它的构型空间不是四维而是四维环面 T⁴ 里的一条一维曲线。这根曲线可能是封闭的也可能在某个自交点和自己交叉。我记得第一次读到这个结论时觉得有点反直觉明明有四个关节角 θ₁ 到 θ₄凭什么说整个机构只有一条线的自由度原因在于闭链约束把四个角绑死了给定一个角其余三个角最多只能取有限个离散值。如果把闭链方程求出来C-空间就是由几条曲线段拼接而成机构运动时状态只能沿这条曲线走。这给运动规划提了一个很实际的要求处理这类闭链机构时不能在关节空间里随便采样然后期望 IK 能解出有效位形而要先求出 C-空间曲线的参数化沿着曲线做一维规划遇到自交点时再分支。这也是为什么很多并联机构的规划器比串联机械臂复杂得多——不是自由度大而是构型空间被约束“揉”成了低维曲面低维不一定简单。3.3 把支链打包成广义关节构型空间建模的常用套路习题 2.7(b) 展示了另一个重要思路n 条七自由度的开链手臂共同抓着一个物体可以把每一条手臂整体看成一个“广义关节”物体和地面看成两个构件。这样 N 2J n每条手臂贡献 7 个自由度空间格里布勒公式给出dof 6(2 - 1 - n) 7n n 6如果每条手臂换成 6 自由度结果会变成dof 6(2 - 1 - n) 6n 6不管有多少条手臂物体都只有 6 个自由度。这个结论很漂亮你用多少条 6 自由度手臂去抓一个刚体也改变不了刚体在空间里的自由度上限。我一般会这么理解这个套路格里布勒公式的 N、J 本来就可以是抽象层级的产物。你先在一个层级上把复杂支链的内部关节“消化”掉得到一条支链的等效自由度再拿这个等效值去套整个机构的公式。这种递归建模方式在并联机构和多机器人协作场景里几乎是必须的否则 N 和 J 会多得没法数。提示广义关节法只能用来算自由度。做运动学仿真时每条支链内部的关节角仍然要显式建模你不能真的把一个七自由度手臂画成一根“棍子”去解 IK。4. 并联机构与球面机构格里布勒公式看得见约束看不见几何4.1 并联支链的计数套路从 Stewart 平台到三腿并联机构习题 2.13 的 Stewart 平台是个经典例子下平台固定在地面上平台通过六条腿连接。计数如下N 6 条腿 上平台 地面 8每条腿两端各有一个球副共 12 个球副Σfi 12 × 3 36。套空间公式dof 6(8 - 1 - 12) 36 6上平台刚好获得空间六自由度。这类并联机构的自由度来源很直接每条腿是一个 S-S 链每个球副提供 3 个自由度中间的腿长变化则来自驱动。工程上更多是 UPS 或 SPS 构型腿中间加一个移动副但计数逻辑完全一样。习题 2.11 和 2.12 还出现了一批带 U 副和 P 副的并联机构比如三腿机构、六腿 Stewart 变体。它们的共同特点是支链内部自由度多但被上下平台的闭链约束锁掉不少最后平台只剩 3 到 6 个自由度。每次算这种机构我都习惯先把每条腿的关节自由度和算出来再数有几条腿然后一次性代进公式而不是逐个数所有关节——出错的概率会小很多。4.2 过约束与尺寸巧合格里布勒公式的盲区习题 2.15 是个让人印象深刻的例子。五个同样大小的正方形用转动副连成一串再闭环平面版格里布勒公式算出 3空间版算出 0——但实物模型却能动而且只有一个自由度。问题出在哪出在“五个正方形全等”这个尺寸条件上。普通格里布勒公式只统计构件数和关节类型它默认所有约束都是独立的一旦出现等长杆、平行轴、共球心这种特殊几何约束方程之间会产生线性相关公式就会低估自由度。习题 2.14 也一样。一个三腿并联机构如果把三个 P 关节全部锁死按公式应该变成 0 自由度的结构但实际机构仍然能运动。原因是锁死三个移动副之后机构里还藏着一条被动运动链几何上的特殊布置让这条链没有被完整约束住。这说明一个重要的边界格里布勒公式是拓扑级的计数器它看不见尺寸关系。你可以把公式当成第一遍筛选但凡是遇到平行四边形、等长杆、对称布置都要警惕过约束机构最好再用雅可比矩阵的零空间或者数值自由度算法验证一遍。工程上很多机构的“额外自由度”都是这种几何巧合带来的。4.3 手术机器人定点约束把任务约束编码进公式习题 2.17 是我觉得第二章里建模味道最浓的一道题。题目背景是手术机器人的工具要从一个固定的穿刺点进入体内。(a) 问工具在基座孔里自由移动时机构有 4 个自由度(b) 问加了一个硬约束——“工具必须始终经过空间中的定点 A”自由度直接降到 2。妙就妙在第二个约束的建模方式它把“工具必须经过 A 点”这个运动学约束等价成一个四自由度的虚拟关节一端连着基座、一端连着工具。球副负责把工具的姿态限制住移动副负责允许工具沿自身轴线进退。这么一替换本来需要靠闭链方程描述的条件就变成了格里布勒公式里的一个关节项计数立刻变得清爽。这个做法背后是一类通用的思想任务级的约束不一定非得放在动力学或规划层处理你可以把它降维成机构级的等效关节。做微创手术器械、遥操作主手以及任何带“远端运动中心”的机构时这个建模技巧能省掉大量后续麻烦。反过来如果忽略这类约束仅按机械结构本身数出的 4 个自由度去设计控制器等真机一跑就会发现工具乱晃因为控制目标里漏掉了那个看不见的穿刺点约束。5. 避坑指南格里布勒公式的五个典型翻车现场5.1 现象N 忘加地面自由度整体偏小原因很多人数 N 时只数“能动的杆”把固定基座漏了但 J 里却照常包含固定在基座上的那些关节。这样6(N - 1 - J)这一项会被多扣结果往往比正确值小 6 或者更多。解决强制把基座算成第 0 号构件。每一次列 N 的时候先写“地面 1”再数活动杆件。例如习题 2.5 的 N 7 是“6 根连杆 1 个地面”不是 6。5.2 现象球面机构用空间公式算出负自由度原因把格里布勒公式当成了固定模板拿到任何机构都套m 6。球面四杆机构、所有转动副轴线交于一点的机构其实是在二维球面上运动每个构件的自由度只有 2。解决动手前先判断运动空间。构件绕公共球心转动取 m 2平面机构取 m 3一般空间机构取 m 6。判断依据很简单看所有关节轴的几何关系而不是看机构长得像不像机械臂。5.3 现象并联机构把整条支腿当成一个关节数原因有人数并联机构时把每条腿的上下两端各算一个关节却忽略了腿中间可能还藏着 U 副、P 副甚至球副。比如一条腿明明是 UPS 构型实际关节自由度远超 1按一个单关节去数Σfi 就少了一大截。解决先把每条支链内部关节逐个拆开数一遍算清这条支链的等效自由度再把整条腿当成一个广义关节。参考习题 2.7(b) 的写法把支链“消化”成终端之间的一个自由度连接再套公式。5.4 现象尺寸对称的机构算出来 0实物却还能动原因格里布勒公式假设所有约束相互独立。等长杆、全等构件、平行轴、共球心这些特殊尺寸会让约束方程线性相关公式的结果不再可靠。习题 2.15 的全等正方形闭链就是典型。解决遇到过约束嫌疑时别急着接受公式结果。用符号方法求雅可比矩阵的零空间或者直接搭个简单仿真模型验证一下。公式负责给你一个候选答案几何负责裁决。5.5 现象三个驱动全锁死机构却还在暗地里动原因把“驱动的数量”当成“机构的自由度”。很多并联机构存在被动自由度执行器锁死只锁住了驱动方向被动关节还能让机构产生微小运动。习题 2.14 里三个 P 关节锁死、公式给出 0实际机构仍能移动原因就在这里。解决把“驱动自由度”和“机构自由度”分开记。锁死所有执行器后再去数剩下的被动关节能提供多少自由度如果结果不为 0说明这个机构在驱动层面是欠约束的做位置控制时必须额外考虑被动自由度的运动学补偿。常见错误典型后果快速检查法N 漏算地面结果偏小 6 的倍数数一遍“可动杆 1”m 选错球面机构算出负值检查关节轴是否共点支链关节漏数自由度偏低先拆支链再打包忽略尺寸特例公式 0 实际能动用雅可比零空间复核驱动数当自由度控制模型缺被动项锁死后重数被动关节6. 把习题答案当成实验台从答案反推建模习惯这套习题集真正的价值不在于你对答案时看到那个数字是 5 还是 6而在于每一道题都逼你把“图纸上的机构”翻译成“公式里的参数”。我做完第二章之后给自己定了一条强制流程拿到任何机构先判断运动空间再列 N 和 J逐个关节填 fi然后专门检查有没有过约束或尺寸巧合最后把公式结果和物理直觉对一遍。以前我总觉得这一步是多余的直到有一次仿真一个带平行四边形闭环的并联平台式子怎么算自由度都合理真机一动就卡死。后来老老实实画了一遍约束分析才发现平行四边形那个闭环里存在一个冗余约束格里布勒公式给的自由度比实际高了一个控制器按照偏高的自由度去规划轨迹自然走不动。从那次之后我再也不敢跳过“几何复核”这一步。这也是我想对你说的话第二章的这几十道题表面上是练自由度计算实际练的是约束建模的思维方式。C-空间拓扑、闭链处理、任务约束的关节化这些能力到了运动规划、动力学控制和奇异分析阶段全都要复用。你把这些习题真正消化掉后面读第三到第十三章时会顺畅很多因为每章都在同一个地基上盖楼。如果这份答案能发挥最大作用建议你别直接查题号对结果而是先自己做做完了再对照答案里的 N、J、fi 三列数据看差异出在哪个环节。一次一次地矫正自己的计数习惯比记住任何一道题的答案都更有用。这也是从这份资料里我能提炼出的最实在的教训。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑