请想象一个再普通不过的动作:你用食指去按墙上的电灯开关。指尖碰到开关的那一刻,你的“任务”已经完成了——但请注意,你的手臂此时可以摆出无数种姿势:手肘高高抬起、胳膊肘紧贴身体、手腕外翻或内旋……指尖的位置一直没有变,变的只是手臂的姿势。机器人学家管这种“同一个末端位置,对应多种手臂姿态”的能力,叫做冗余自由度。 人类手臂天生就是冗余的:指尖在三维空间里的定位只需要 3 个数(上下、左右、前后),而你的肩、肘、腕合起来有 7 个可以转动的关节。多出来的 4 个“余量”,让你在完成按开关这个主任务的同时,还能顺带做很多事——比如避开旁边的花瓶、让胳膊保持舒服的姿势。机器人一旦拥有冗余自由度,也就获得了同样的“姿势选择权”:它不再只是一个“完成任务”的工具,而是一个“在完成任务之余还能讲究姿态”的灵巧好手。这篇文章,我们就从最贴近生活的角度,把冗余自由度的原理、数学工具和工程实践一步步讲清楚。
对 AI 从业者而言,理解冗余自由度是进入机器人运动规划与控制的基石:它决定了机械臂避障、姿态优化与安全作业的上限,也是智能体在物理世界中灵活行动的核心能力之一。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
冗余定义
你站在墙边,用手指按住电灯开关。指尖的任务在数学上只需要三个数字来描述:它在空间里的上下、左右、前后位置。可是你的手臂却拥有肩、肘、腕加在一起共七个可以转动的关节。七个“马达”去完成一个只需要三个数字描述的任务,多出来的四个就是“余地”。机器人学里,把这种“能独立运动的关节数超过了完成任务所需的最少数量”的性质,叫作冗余自由度。
机器人学中,自由度指机器人能够独立驱动的关节数。比如一个平面三连杆机械臂,有三个旋转关节,所以自由度数 n = 3;而它的末端在平面上定位只需要两个坐标(x 和 y),也就是任务维数 m = 2。当一个机器人的关节数 n 大于任务维数 m 时,我们就说它具有冗余自由度,冗余度定义为二者之差:
这里要特别澄清:冗余并不是“多余的浪费”,而是“完成任务的能力有富余”。拥有冗余的机器人,在末端位置不变的前提下,仍然能改变内部构型——这种“同一位置、多种姿势”的特性,正是后面所有巧妙应用的起点。回想你按开关时的身体感受:指尖压着开关纹丝不动,但你可以轻松地让手肘抬高些、放低些,甚至换个肩膀发力。这些“姿势的自由”全都来自冗余自由度。没有冗余的机械臂,就像一根被螺丝钉死的木棍——指到哪,就得是哪,毫无回旋的余地。
- 确定任务维数 m末端任务需要独立坐标的个数,平面定位取 2,三维空间定位取 3。
- 统计自由度数 n机器人所有可独立驱动的关节总数,平面 3R 机械臂取 3。
- 计算冗余度 r两者相减得到冗余度。
运动学基础
在厨房里照着菜谱做菜:配料表写清楚每种调料放几勺,你按顺序放下去,出锅的味道就确定了。机器人学中的正运动学正是如此——已知每个关节转了多少度(配料),通过几何关系算出末端执行器在哪里(出锅的菜)。反过来,如果菜已经端上桌,你想知道厨师当初放了哪几味料,就成了逆运动学。
设关节角度向量为 q(n×1 的列向量),末端位姿为 x(m×1),正运动学可以简洁地写成 x = f(q)。当我们把等式两边对时间求导,就得到了连接“关节速度”和“末端速度”的桥梁——雅可比矩阵 J(q)。雅可比矩阵是一个 m 行 n 列的矩阵,它的第 i 行第 j 列元素表示第 j 个关节单位速度对末端第 i 个方向速度的贡献。
对于冗余机器人,m < n 意味着雅可比矩阵是“矮胖”的:方程 J·q̇ = ẋ 中未知数(关节速度)的个数比方程数多,逆解并不唯一。这正是冗余机器人逆运动学不唯一的数学根源。如果把正运动学比作“按菜谱做菜”,那雅可比矩阵就是“火候与翻勺的配合表”——它告诉你锅铲动得快一点、菜料翻得慢一点,最后菜品的移动速度会变成什么样。而矮胖的雅可比,就像一锅同时用五只手在炒的菜:同样能让菜出锅,但每只手分到的功劳可以有无数种分法。
- 列写正运动学在关节角 q 已知时,由几何关系解出末端位姿 x。
- 对时间求导应用链式法则,把速度联系起来。
- 定义雅可比矩阵偏导矩阵就是雅可比矩阵 J(q)。
- 观察矩阵形状当 n > m 时,方程欠定,解有无穷多个。
零空间投影
按着开关、保持指尖不动,你的肘部却可以轻轻画圈。这画圈的运动会改变手臂的姿势,却不会挪动指尖一分一毫。机器人学家把这一类“不影响末端速度的关节运动”放到同一个篮子里,这个篮子就是雅可比矩阵的零空间,记作 N(J)。数学上,零空间是所有满足 J·v = 0 的向量 v 构成的集合——只要关节速度向量落在零空间里,末端速度就是零。
由于冗余机器人 m < n,雅可比矩阵的秩最多为 m,零空间的维度至少为 n - m = r,所以这个“篮子”永远有东西可装。有了零空间,逆速度就可以写成两大类运动的叠加:最小范数解保证末端以期望速度运动;零空间投影项不改变末端速度,只负责调整关节构型。它的完整形式是:
这里的投影矩阵 (I - J⁺J) 就像舞池里的引导员:你即兴发挥的舞步(任意速度 q̇₀)里,凡是会踩到舞伴脚尖(破坏末端位置)的动作,都被他拦下来;凡是舞伴脚下纹丝不动、你却能自由旋转的动作,都被放行进舞池。这正是“指尖不动、手臂独舞”的数学原理。有了零空间,机器人就拥有了“在完成任务的同时保持姿势灵活”的舞台,接下来的一切次任务规划、避障与姿态优化,都是在这个舞台上演出的节目。
- 最小范数解J⁺ 是摩尔-彭罗斯伪逆,它给出驱动末端所需的最小关节速度。
- 构造投影矩阵单位阵减去伪逆与雅可比之积,得到零空间投影算子。
- 投影任意速度任意关节速度经过 P 投影后,落入零空间。
- 验证不干扰末端投影后的速度与雅可比相乘结果恒为零。
次任务规划
你按住开关的同时,总担心抬肘时碰倒桌沿的玻璃杯——于是你一边稳稳地按着开关,一边悄悄把肘部往内收一点。这个“顺带做的小心愿”就是次任务。没有冗余的机器人,一心想完成主任务都顾不上;而冗余机器人因为有零空间这个“多余的运动空间”,可以一边干正事,一边照顾小心愿。
把次任务写成性能指标 H(q),比如“肘部到障碍物的距离越远越好”或“关节角不要逼近限位”。我们希望关节朝着 H(q) 改善的方向运动,但这个方向必须经过零空间投影,否则会破坏主任务。于是控制律变成:
读起来是:主任务照旧追踪,次任务在“不影响主任务”的前提下悄悄使劲。工程里常见的次任务包括:避障(让距障碍的势场值变小)、关节限位惩罚(让关节角远离极限)、姿态优化(让可操作度变大)等。这就像你一边用指尖按住开关,一边用肘部“心眼”规划着退路:开关按得稳稳的,是主任务;肘部给玻璃杯让出空间,是次任务。两者叠加在一起,才是一个自然、从容、让人放心的动作——这也是人类运动看似轻松的原因。
- 写出次任务指标H(q) 是衡量次任务好坏的标量函数,例如肘部与障碍物距离的平方。
- 求梯度方向梯度指向指标改善最快的方向。
- 投影到零空间确保次任务方向不干扰主任务。
- 调节增益k 控制次任务的强度大小。
奇异规避
当你把手臂完全伸直时,会发现一个尴尬的事实:你想让手指再往前探,或者往身体正侧方平移,都会觉得“力不从心”。明明肩、肘都在使劲,指尖却像被焊住了一样。这种让动作“卡壳”的特殊姿势,就是奇异位形。在奇异位形附近,雅可比矩阵的行向量之间出现线性相关,矩阵“退化”了:某些方向的末端运动,无论关节怎么配合都产生不出来。
数学上表现为 JJᵀ 的行列式趋近于零,伪逆解 J⁺ = Jᵀ(JJᵀ)⁻¹ 中的逆矩阵爆炸,导致关节速度飙到无穷大。为了在数值上守住阵地,工程师引入阻尼最小二乘:在 (JJᵀ) 上加上一个正定的小量 λ²I,让矩阵在奇异附近依然可逆,速度解被“削平”为有限值:
阻尼最小二乘不影响奇异位形的物理存在,但能让机械臂在“差一点点够到”的状态下不发抖、不抽搐,体面地回到安全姿态。λ 就像汽车减震器里的阻尼油:加得越多越平稳,但操控感(跟踪精度)会略微变钝。在冗余机器人的工程实践中,我们通常还会借助冗余自由度主动避开奇异构型——既然手臂有富余姿势,为什么不提前绕开那个“卡壳”的角度呢?
- 写出常规伪逆直接用 JJᵀ 的逆构造伪逆解。
- 叠加阻尼项在矩阵上加入 λ²I,相当于加了一层“软垫”。
- 重写速度解加阻尼后矩阵在奇异附近仍可逆。
- 理解参数作用λ 趋于 0 时退化为普通伪逆,λ 越大越稳定但偏差越大。
性能度量
同样是“指尖按住开关”,有的人手肘悬在半空僵成雕像,一分钟就酸了;有的人手肘自然下垂,站一上午也不累。同样是完成任务,姿态的“质量”天差地别。那么有没有一把尺子,能测量一个姿势有多灵活、多从容?机器人学家从雅可比矩阵出发,定义了多种“灵活度仪表”,其中最常用的是可操作度:
除了可操作度,还有条件数 κ = σ_max / σ_min(用奇异值分解求得),它表示末端运动在各方向上的均衡程度:条件数越接近 1,运动越各向同性;最小奇异值 σ_min 则直接告诉你“最弱方向”上的运动裕量。冗余机器人可以利用零空间,主动把构型推向这些指标更优的位置——这就是“姿态优化”的思想。可操作度像你投篮前的屈膝蓄力:膝盖微弯时(指标高),你可以向任意方向起跳;膝盖完全锁死(奇异),你只能原地站着。冗余自由度给了你“主动调整屈膝幅度”的能力,而性能度量指标就是告诉你:现在这个姿势,弹跳力还剩多少。
- 构造方阵JJᵀ 是一个 m×m 的对称方阵。
- 求行列式行列式大小反映末端可操作椭球的体积。
- 开方取标量得到可操作度这个标量指标。
- 奇异判据当 w 等于 0 时,机器人正处奇异位形。
应用场景
人类的手腕之所以能写字、绣花、拧螺丝,而不是像锤子一样只会砸,正是因为冗余自由度带来了灵巧。现代机器人正在“向人类看齐”,把冗余自由度装进自己的臂膀。最典型的例子是 7 自由度机械臂——它完成三维空间的任务(3 个位置坐标 + 3 个姿态角 = 6 维)时,冗余度为:
在工业产线里,KUKA iiwa 等 7 轴臂能在狭小工位保持末端不动的条件下,让肘部绕过障碍;在手术室里,达芬奇机器人用类似原理实现器械在体内的“拐弯”而不撕扯创口;在仿人机器人中,7 自由度臂配合全身冗余结构,使机器人能模仿人类完成倒水、开门等细腻动作。这些应用场景说的都是同一件事:机器人的手指尖触达目标,只是及格线;能否在触达的同时让“手臂”绕开障碍、保持省力、规避极限,才是从“能用”走向“好用”的分水岭——恰好,这是冗余自由度最擅长的领域。
- 确定任务维数三维空间末端位姿含 3 个位置量加上 3 个姿态量。
- 确定自由度数7 关节机械臂每个关节都可独立驱动。
- 相减得冗余度二者之差为 1。
工程实践
拿到驾照的人都知道,会开车和开好车之间还隔着十万八千里。冗余自由度的理论知识只是“交规”,真正上车之后,你还要学会处理路况、观察后视镜、预判前车——对应到工程上,就是设计流程、参数整定与实时实现。一个典型的冗余运动规划流程是这样的:先明确任务维数和机器人自由度,确定冗余度;再建立正运动学与雅可比矩阵;接着选定次任务性能指标,把指标梯度投影到零空间;最后在仿真里验证、在样机上整定参数。
工程实现中,控制周期通常只有 1~5 毫秒,每一步都要完成雅可比计算、伪逆求解和零空间投影。为了让计算可控,常用阻尼项防止数值爆炸;为了让次任务平滑,会给增益 k 加低通滤波;为了让行为可解释,还要记录每个控制周期的可操作度、条件数等指标。一种实时优化可操作度的控制律为:
仿真阶段推荐用 MuJoCo、Gazebo 配合 ROS,先在虚拟环境里跑通全套流程,再迁移到真实机械臂。正如老司机在复杂路况下依然从容,余量、预判、留一手——冗余自由度的工程实践核心就是这四个字。学会在“正事”之外留下调整空间,你的机器人系统才能真正在不确定的物理世界里站稳脚跟。
- 选择性能指标以可操作度 w(q) 作为姿态健康度的度量。
- 求梯度方向梯度指向提升可操作度最快的方向。
- 投影进零空间保证优化过程不干扰末端运动。
- 合成控制律每个控制周期执行一次,形成闭环优化。
AI 应用场景
工业 7 轴机械臂的狭小空间装配
阶段:运动规划与控制
解决的问题:传统 6 轴臂在紧凑产线中经常因为臂身碰撞返工,只能靠重新布置产线来解决。7 轴机械臂利用冗余自由度,让肘部在末端不动的情况下“绕行”,把碰撞问题转化为零空间路径规划问题。
具体案例:KUKA iiwa 7 轴臂在汽车底盘装配中,末端拧螺栓的同时,肘部利用冗余自由度在底盘狭缝中画出弧形轨迹,避开线束和管路。相比 6 轴臂需要额外加装传感器并大幅减速,7 轴臂依靠零空间次任务就让产线节拍提升了约 20%。
手术机器人的微创操作
阶段:操作规划
解决的问题:手术机器人进入人体后,器械末端只能通过一个小切口;若没有冗余自由度,调整器械姿态会牵拉伤口。冗余自由度让器械在保持切口处姿态不变的同时,通过零空间运动改变内部臂形。
具体案例:达芬奇手术机器人的腕部拥有 7 个自由度,在心脏搭桥手术中,器械末端稳定地进行缝合,而机械臂的“肘部”在胸腔内绕过心脏和主动脉,避免压迫重要组织。医生只需关注主手操作,冗余规划在后台自动完成避让。
仿人机器人的全身协调操作
阶段:全身运动规划
解决的问题:仿人机器人如果要模仿人类完成倒水、开门等动作,仅控制末端位置远远不够——还需要在运动过程中保持身体平衡、头部朝向、手臂姿态自然。冗余自由度让这些“次要需求”有了承载空间。
具体案例:Atlas 等仿人机器人利用双臂 7 自由度构型,在搬运箱体时让肘部自动避开胸前传感器,同时通过零空间调整躯干姿态维持重心稳定。其运动规划器在每 10 毫秒的控制周期内完成零空间投影计算。
Python 演示
import numpy as np L = np.array([1.0, 1.0, 1.0]) def forward(q): """3R平面机械臂正运动学, 返回末端位置.""" x = 0.0 y = 0.0 a = 0.0 for i in range(3): a += q[i] x += L[i] * np.cos(a) y += L[i] * np.sin(a) return np.array([x, y]) def elbow_pos(q): """第一连杆末端位置, 即肘部位置.""" return np.array([L[0] * np.cos(q[0]), L[0] * np.sin(q[0])]) def jacobian(q): """用中心差分计算 2x3 雅可比矩阵.""" eps = 1e-6 J = np.zeros((2, 3)) for j in range(3): qp = q.copy() qm = q.copy() qp[j] += eps qm[j] -= eps J[:, j] = (forward(qp) - forward(qm)) / (2.0 * eps) return J def null_gradient(q, obs): """避障指标 h = ||肘部 - 障碍||^2 的数值梯度.""" eps = 1e-6 grad = np.zeros(3) for j in range(3): qp = q.copy() qm = q.copy() qp[j] += eps qm[j] -= eps hp = np.linalg.norm(elbow_pos(qp) - obs) ** 2 hm = np.linalg.norm(elbow_pos(qm) - obs) ** 2 grad[j] = (hp - hm) / (2.0 * eps) return grad def simulate(q0, xd, obs, steps=600, dt=0.03, k=0.5): """主循环: 末端跟踪 + 零空间避障.""" q = q0.copy() trace = [] for _ in range(steps): J = jacobian(q) Jp = J.T @ np.linalg.inv(J @ J.T + 1e-4 * np.eye(2)) q_dot = Jp @ (xd - forward(q)) N = np.eye(3) - Jp @ J q_dot += k * N @ null_gradient(q, obs) q = q + q_dot * dt trace.append(q.copy()) return np.array(trace) if __name__ == "__main__": q0 = np.array([0.6, 0.9, -0.4]) xd = np.array([1.6, 0.5]) obs = np.array([0.7, 0.9]) d0 = np.linalg.norm(elbow_pos(q0) - obs) states = simulate(q0, xd, obs) d1 = np.linalg.norm(elbow_pos(states[-1]) - obs) print("末端误差:", np.linalg.norm(forward(states[-1]) - xd)) print("肘部到障碍距离: 初始%.3f -> 最终%.3f" % (d0, d1))
a += q[i]` 和 `x += L[i] * np.cos(a)正运动学:逐关节累加转角,把每段连杆的贡献合成末端位置。J[:, j] = (forward(qp) - forward(qm)) / (2.0 * eps)中心差分求雅可比矩阵第 j 列,避免手工推导偏导数。Jp = J.T @ np.linalg.inv(J @ J.T + 1e-4 * np.eye(2))带阻尼的右伪逆,保证矩阵在奇异附近依然可逆。q_dot = Jp @ (xd - forward(q))主任务速度:把末端位置误差经伪逆映射到关节空间。N = np.eye(3) - Jp @ J零空间投影矩阵,把任意速度投影到不改变末端运动的方向。q_dot += k * N @ null_gradient(q, obs)把避障梯度投影进零空间后叠加到控制律上,完成次任务。
常见误区
误区机械臂关节越少越好,关节多了又贵又容易坏,冗余就是浪费设计。省掉多余关节还能降低成本,何乐而不为?
正解冗余不是浪费,而是能力储备。就像你的手臂有 7 个关节而按开关只需要 3 个坐标,多出的自由度让你可以在不改变指尖位置的前提下变换臂形、避开障碍、规避奇异。工业上 7 轴臂确实比 6 轴臂贵,但在狭小空间里能完成 6 轴臂无法完成的避障动作,省下的产线改造成本远超电机成本。
为何常见:人们容易把“冗余”和“多余”画等号,因为日常语境里冗余常指重复无用的信息。
误区既然有多余自由度,那机械臂的每个关节都可以随便动,只要末端到位就行。
正解冗余自由度虽然给了关节活动的“余量”,但绝非毫无约束。末端到位的前提是:运动必须满足 J·q̇ = ẋ 这个线性关系;能够“随便动”的部分只能是零空间中的运动,即被 (I − J⁺J) 过滤后仍不改变末端速度的分量。就像你指尖按着开关时,肘部虽然能变换姿势,但手腕的活动范围仍然受肩膀位置的约束。
为何常见:只看到了“自由度的数量多”,忽略了运动学约束的链条。
误区给定机械臂末端的目标位置,逆运动学计算出来的关节角是唯一确定的,就像查字典一样。
正解对于非冗余机械臂,逆运动学通常也只有有限个解(如平面 2R 臂有正、反两组);一旦引入冗余,解的个数直接从有限变成无穷多。逆解不是“查表”,而是“在无穷多种姿势里选一种”——零空间投影正是在这无穷多解中筛选符合目标的方式。
为何常见:教材里最常见的例子都是从简单的非冗余臂开始,先入为主地以为答案唯一。
误区加了阻尼项 λ²I 之后,机械臂就永远不会遇到奇异位形了,数值上也不会再出任何问题。
正解阻尼最小二乘只是把奇异点附近的矩阵求逆变得数值稳定——它让解的“尖峰”被削平,代价是引入一点末端偏差。但机械臂的物理奇异仍然存在,在奇异位形附近它依然“使不上力”。正确做法是结合冗余度主动避开奇异构型,而不是指望滤波器。
为何常见:看到仿真里“不报错了”就以为问题解决,忽略了数值手段与物理特性的区别。
误区反正零空间不影响末端,那我随便给一个关节速度加上去就行,不用管什么投影不投影。
正解零空间项必须满足形式 (I − J⁺J)·q̇₀。直接加一个任意的 q̇₀ 而不经过投影矩阵,它会改变末端速度,破坏主任务。就好比你按开关时,如果盲目挥动手臂而不考虑关节之间的耦合,指尖很容易滑出开关。必须先投影,再叠加。
为何常见:忽略了“零空间”这个概念本身定义在雅可比矩阵的核上,叠加前必须经过投影算子。
面试题
Q1. 一台平面 3 关节机械臂被要求控制末端到达二维平面上的指定位置,其冗余度是?
- A.r = 1← 正确答案
- B.r = 2
- C.r = 3
- D.r = 0
答案:A。平面 3 关节机械臂自由度数 n = 3,平面定位任务维数 m = 2,冗余度 r = n − m = 1。就像按开关时手臂关节有 7 个而任务坐标只需 3 个一样,多出来的就是冗余。
Q2. 判断机器人是否具有冗余自由度的核心判据是?
- A.自由度数大于任务所需维数← 正确答案
- B.关节数量相对较多
- C.末端能转动的角度范围大
- D.机械臂可以绕过障碍物
答案:A。冗余判据的核心是 n 与 m 的数值比较:自由度数大于任务所需维数即冗余。末端转角大、能绕障都是冗余带来的表现,而非判据本身。
Q3. 冗余机械臂的自运动指的是?
- A.末端位姿不变关节持续运动← 正确答案
- B.关节锁死但末端移动
- C.末端跟随期望轨迹运动
- D.断电后关节惯性运动
答案:A。自运动是在保持末端位姿完全不变的前提下,关节仍然能够持续运动的现象,本质是零空间中的运动。好比手指按住开关不动,肘部却可以画圈。
Q4. 关于零空间 N(J),下列说法正确的是?
- A.零空间速度不引起末端运动← 正确答案
- B.零空间速度使末端加速
- C.零空间仅含零速度向量
- D.零空间与雅可比无关
答案:A。零空间定义为 N(J) = {v | Jv = 0},其中任意速度都不产生末端速度。C 错在忽略冗余时零空间含无穷多非零向量;D 错在零空间正是由 J 定义的。
Q5. 阻尼最小二乘中 λ²I 的作用是?
- A.抬升奇异值下界保证数值稳定← 正确答案
- B.扩大机械臂工作空间范围
- C.提高关节电机额定功率
- D.消除冗余自由度的存在
答案:A。λ²I 加到 JJᵀ 上抬升了矩阵的最小奇异值,使奇异位形附近逆矩阵依然可算。它不改变机器人物理结构,也不扩大工作空间,纯粹是数值稳定手段。
Q6. 可操作度 w = √det(JJᵀ) 在奇异位形处的取值是?
- A.奇异位形处取零← 正确答案
- B.奇异位形处取一
- C.奇异位形处无穷大
- D.奇异位形处取负数
答案:A。奇异位形下雅可比矩阵秩亏缺,JJᵀ 行列式为 0,故可操作度取零。就像手臂完全伸直时末端失去某些方向的运动能力,“灵活度”归零。
Q7. 一台 7 自由度空间机械臂完成 6 维空间任务(3 个位置 + 3 个姿态),其冗余度是?
- A.冗余度为一← 正确答案
- B.冗余度为二
- C.冗余度为六
- D.冗余度为七
答案:A。任务维数 m = 6,自由度数 n = 7,冗余度 r = 7 − 6 = 1。这 1 个冗余度可以让机械臂在末端位姿完全不变的同时,用一整条零空间曲线调整臂形。
Q8. 利用冗余自由度可以实现哪些次任务?
- A.改变末端轨迹跟踪精度
- B.避障要求下肘部绕行← 正确答案
- C.避免关节角度超限← 正确答案
- D.提升可操作度裕量← 正确答案
答案:BCD。避障、关节限位、姿态优化都是典型的零空间次任务。A 中“改变末端轨迹跟踪精度”属于主任务范畴;次任务的原则恰恰是不改变主任务效果,只利用富余自由度做锦上添花。
Q9. 雅可比矩阵出现奇异时,典型的现象有哪些?
- A.末端某方向失去移动能力← 正确答案
- B.关节速度需求趋于无穷大← 正确答案
- C.矩阵最小奇异值接近零← 正确答案
- D.冗余度自动变为零
答案:ABC。奇异时末端在某些方向无法运动,对应伪逆解中的 1/σ 项发散,关节速度需求爆炸;最小奇异值趋近于零是它的数值信号。冗余度由 n − m 决定,不会因奇异而改变,故 D 错。
Q10. 关于零空间投影方法求解逆速度,下列说法正确的有?
- A.通解是最小范数解加零空间项← 正确答案
- B.零空间项不影响末端速度← 正确答案
- C.零空间中禁止关节运动
- D.零空间项可承载次任务← 正确答案
答案:ABD。逆速度通解 = J⁺ẋ + (I − J⁺J)q̇₀,其中零空间项经投影后与 J 相乘为 0,不影响末端速度,因此可以安全地承载避障、限位等次任务。C 说反了——冗余时零空间包含无穷多非零向量。