首页 / 资讯中心 / 文章详情

机器人建模与控制习题考点地图:从位姿到稳定性证明

机器人建模与控制习题考点地图:从位姿到稳定性证明 ★ FEATURED ARTICLE
简介《机器人建模和控制》习题答案以PDF文档形式整理面向学习机器人运动学、动力学与控制理论的高校学生、研究生及工程技术人员可用于课后对照、复习自测与考前查漏补缺。压缩包内共1个PDF文件大小约6.46MB结构简洁适合在电脑或平板上直接查阅、标注与打印。已有3106人学习下载在机器人学基础训练中具有一定参考价值。内容围绕教材各章习题展开涉及坐标变换、正向与逆向运动学、牛顿—欧拉和拉格朗日动力学建模、轨迹规划、基于Lyapunov理论的稳定性分析以及传感器数据处理等典型题目答案可用于核对推导过程、理解建模思路、发现计算盲点并帮助读者把课堂理论、习题训练与工程应用衔接起来。1. 知识地图机器人建模和控制这门课的习题考点其实高度收敛机器人建模和控制这门课的课后题翻开目录会以为要啃下一整本书真做下来会发现考点高度收敛位姿描述、正向与逆向运动学、雅可比、动力学方程、控制律设计与稳定性证明五层依次递进每一层都在前一层的输出上继续算。这也是我建议先看知识地图、再翻习题答案的原因——地图不清楚答案每一步都看得懂连起来就断片。这张地图大概长这样坐标系与齐次变换是所有题的地基运动学负责“关节角变末端位姿”逆解负责反着来雅可比把速度、静力接到同一套矩阵上动力学给出力矩与运动的关系控制在动力学之上设计误差收敛的律。适合两类人正在跟课、想把零散作业串成体系的人以及期末或考研复习、需要快速定位薄弱环节的人。习题答案的价值不在于抄而在于每一步都能对上地图上的某个节点。2. 位姿与运动学齐次变换、DH 参数与正逆解的完整解题链2.1 坐标系与齐次变换把一句文字题翻译成一个矩阵这一层的题九成错误不是算错而是坐标系没对齐。习题里常出现四种坐标系世界基座坐标系、关节坐标系、工具末端坐标系、任务工件坐标系。读题时先在草稿上画三个箭头标清“谁相对谁”再动笔列矩阵比直接套公式稳得多。齐次变换矩阵是 4×4 结构左上 3×3 是旋转矩阵 R右上 3×1 是平移向量 p最后一行是 [0 0 0 1]。R 必须满足正交性 RᵀR I 且 det R 1这两条是后面所有验算的抓手。复合变换的乘法顺序有个口诀左乘是绕基座系固定系变换右乘是绕当前动系变换。写错顺序是这一节最常见的翻车点。import numpy as np def rot_z(t): c, s np.cos(t), np.sin(t) return np.array([[c, -s, 0], [s, c, 0], [0, 0, 1]]) def make_T(Rnp.eye(3), pnp.zeros(3)): T np.eye(4) T[:3, :3] R # 旋转块 T[:3, 3] p # 平移块 return T def inv_T(T): R, p T[:3, :3], T[:3, 3] # 刚体变换的逆有解析形式不用调 np.linalg.inv return make_T(R.T, -R.T p) T make_T(rot_z(np.pi / 2), np.array([1.0, 2.0, 0.0])) assert np.allclose(T inv_T(T), np.eye(4))这段代码里rot_z只处理绕 z 轴旋转其余轴同理换基向量即可inv_T用的是 Rᵀ 和 -Rᵀp 的解析逆前提是 R 严格正交、没有缩放。习题里凡是要求“求逆变换”先检查 R 是否正交再决定用解析式还是数值求逆。用np.linalg.inv算出来的结果如果和解析式差在 1e-12 量级说明矩阵构造没问题差得多基本是 R 里混进了缩放或者行列式为 -1。还有一个容易忽略的点齐次矩阵的最后一行的前三个元素必须严格为 0第四个数为 1。有些手写推导会把透视项写成非零后面再乘就会把平移“放大”结果越算越离谱。2.2 旋转的三种参数化轴角、欧拉角与四元数怎么互转不翻车习题里同一个姿态会换三种问法给矩阵求轴角、给欧拉角求矩阵、给四元数判断等价性。理清各自的自由度和退化条件比背公式重要。参数化参数个数退化/奇异常见考法易错点旋转矩阵96 个约束无奇异变换链相乘、验算忘记检查 det R 1轴角4实际 3 自由度θ 0 时轴不唯一罗德里格斯公式轴未归一化就代入欧拉角 ZYZ3β 0 或 π 时退化腕部姿态反解与 RPY 顺序混用RPYxyz3β ±π/2 时万向节死锁移动平台姿态内外旋顺序写反四元数4单位约束q 与 -q 表示同一旋转插值、数值迭代忘记归一化ZYZ 和 RPY 是最容易混的一对前者常用于关节型机械臂的腕部后者常用于飞行器或移动平台。考试里给了“绕 z、再绕 y、再绕 x”这种文字描述一定按字面顺序写成矩阵连乘别凭记忆套现成公式。互转之后的验算有个笨但有效的办法把结果再转回去看是否复现原矩阵。四元数要记住双覆盖q 和 -q 是同一个旋转判断“是否相等”时应当比较旋转效果而不是逐个分量比较。万向节死锁的判断也别只背结论直接看反解公式里是否出现除以 cos β 或 sin β 的项β 接近 ±90° 时分母趋零这就是死锁的数学来源。2.3 DH 参数表四个参数怎么读、表怎么建DH 参数是运动学题的“字典”。标准 DH 约定下相邻两连杆的变换由四个参数决定θ绕 z 轴的关节角、d沿 z 轴的连杆偏距、a沿 x 轴的连杆长度、α绕 x 轴的连杆扭转角。单个变换写成A Rot(z, θ) · Trans(z, d) · Trans(x, a) · Rot(x, α)建表步骤梳理下来是四步先定每个关节的 z 轴沿关节转轴或移动方向再找相邻 z 轴的公垂线把 x 轴放在公垂线上然后读 a两 z 轴公垂线距离和 α两 z 轴夹角最后读 d 和 θ。转动关节的 θ 是变量、d 是常数移动关节反过来。def dh_transform(theta, d, a, alpha): ct, st np.cos(theta), np.sin(theta) ca, sa np.cos(alpha), np.sin(alpha) # 标准 DHRot(z,theta)·Trans(z,d)·Trans(x,a)·Rot(x,alpha) return np.array([ [ct, -st * ca, st * sa, a * ct], [st, ct * ca, -ct * sa, a * st], [0, sa, ca, d], [0, 0, 0, 1] ]) # 平面二连杆l1 l2 1全部绕 z 轴转动 def fk_2r(q, l11.0, l21.0): A1 dh_transform(q[0], 0, l1, 0) # 连杆 1 A2 dh_transform(q[1], 0, l2, 0) # 连杆 2 return A1 A2 print(fk_2r([0.0, 0.0])[:3, 3]) # 应为 [2, 0, 0]dh_transform里四个参数顺序不要换alpha的余弦落在第三行第三列a只影响平移块。用平面二连杆自测两关节都为 0 时末端应在 [l1l2, 0, 0]关节 2 转 90° 时应在 [l1, l2, 0]这两个数对不上说明表建错了。改进 DHCraig 约定和标准 DH 的差别在于改进型的 x 轴沿 z_{i-1} 与 z_i 的公垂线变换顺序变成 Rot(x, α) · Trans(x, a) · Rot(z, θ) · Trans(z, d)。两种约定不能混用一道题里从头到尾只用一种。有些习题答案不写约定直接给矩阵这时候对照它 q 0 时的矩阵是否与你的一致就能反推它用的是哪种。2.4 正向运动学乘积链与三个验算习惯正向运动学在形式上很简单T_0^n A_1 · A_2 · … · A_n。难的是乘完以后自己不确定对不对。三个验算习惯能挡掉大部分错误第一令所有关节角为 0把结果和机构简图上量出来的尺寸对比第二只让某一个关节转动看末端轨迹是不是该关节对应的圆弧第三看平移向量各分量的量级如果出现比连杆总长还大的数多半是某个 a 或 d 填错了位置。还有一类题会问“末端在基座系下的位姿”但图里给的是工具坐标系。这时要右乘一个固定的工具变换 T_tool位置是 T_0^n · T_tool。很多人把工具变换左乘到最前面结果整个机械臂像被平移了一样这种错误在数值上很难一眼看出来只能靠验算习惯拦。2.5 逆向运动学解析解、几何解与数值解的取舍逆解的题面通常很客气“求所有解”或“判断是否可达”。解析解存在性有个经典判据三个相邻关节轴交于一点或者三个相邻轴互相平行就存在封闭解。六自由度关节型机械臂大多按“前三轴定位置、后三轴定姿态”拆开解位置部分用几何法姿态部分用欧拉角反解。平面二连杆是最小可解例子用余弦定理直接写cos θ₂ (x² y² - l₁² - l₂²) / (2 l₁ l₂)θ₂ 取正负得到肘上、肘下两组解再代回求 θ₁。这一步最容易漏的是解的个数题目问“所有解”时只写一组扣分很冤。数值解适合没有封闭解的结构牛顿-拉夫逊迭代是标配但雅可比在奇异位形附近会病态工程上更常用阻尼最小二乘def ik_dls(fk, jac, q0, x_target, iters300, tol1e-8, lam1e-3): q np.array(q0, dtypefloat) for k in range(iters): e np.asarray(x_target) - fk(q) if np.linalg.norm(e) tol: break J jac(q) # (JᵀJ λ²I)⁻¹Jᵀ 的等价写法避免直接求 JᵀJ 的逆 dq J.T np.linalg.solve(J J.T lam**2 * np.eye(J.shape[0]), e) q q dq return q, np.linalg.norm(e)lam是阻尼系数取 1e-3 到 1e-2 之间比较稳iters给大一点不影响收敛速度只影响失败时的耗时tol按任务精度取位置量级是米时 1e-8 已经足够。这个写法比np.linalg.pinv(J)更稳因为它在奇异附近自动退化成梯度下降不会因为 J 不满秩直接报错。解出多组解之后还有筛选关节限位、避障、解的连续性。习题里常给限位表别忘了逐组检查很多人算出四组解就直接写“共四组”实际只有两组落在限位内。2.6 雅可比与奇异位形速度题和力题共用一套矩阵雅可比描述关节速度到末端速度的线性映射v J(q) q̇。构造上有几何法和微分法两条路几何法更直观第 i 列由 z_i × (p_e - p_i) 和 z_i 组成转动关节如此移动关节只取 z_i。写的时候一定要在矩阵右上角标注参考系因为同一机械臂在基座系和末端系下的雅可比不一样静力题用错参考系力矩会差一个旋转变换。奇异位形是 det J(q) 0 的位形物理上意味着某些方向末端动不了。可操作度 w sqrt(det(J Jᵀ)) 常被用来量化“离奇异有多远”。习题里让判断奇异位形最稳的做法是先把 J 写出来再解行列式为零的方程别只凭机构简图猜“手臂伸直”这种结论。静力映射 τ Jᵀ F 和速度映射共用同一个 J这一点值得单独记末端施加力 F各关节需要提供的力矩就是 JᵀF。很多题把这两个公式的方向搞反写成 F Jᵀ τ量纲上立刻能看出来不对但考试紧张时容易漏检查。3. 动力学与控制拉格朗日方程、惯量矩阵与 Lyapunov 证明3.1 拉格朗日建模四步法从能量到方程动力学题的标准流程四步选广义坐标、写动能 K、写势能 P、代入 d/dt(∂L/∂q̇) - ∂L/∂q τ其中 L K - P。看着机械但每一步都有具体的坑。动能要算平动加转动K ½ m vᵀv ½ ωᵀIω其中 v 和 ω 都要用雅可比表示成 q̇ 的函数最后整理成 ½ q̇ᵀM(q)q̇ 的形式。质量惯性矩 I 是对质心写的如果题里给的是对关节轴的惯量直接替换即可但要是要求从质心平移到关节必须补上平行轴定理的 md² 项。势能只有重力时最简P Σ m_i g ᵀ p_cip_ci 是各连杆质心位置。很多人动能算得很仔细势能却漏掉某个连杆最后重力项少一项整道题的结果都偏。整理出来的标准形式是 M(q)q̈ C(q,q̇)q̇ g(q) τ。这里的 C 矩阵不唯一但 C q̇ 唯一所以习题里给不同的 C 写法不要慌代进去算出来的广义力是一样的。3.2 牛顿-欧拉迭代什么时候用它怎么和拉格朗日互验拉格朗日法适合推导闭式方程牛顿-欧拉法适合数值计算两段式先从基座向末端外推各连杆的速度和加速度再从末端向基座内推力和力矩。手算题里牛顿-欧拉的优势是每一步物理意义清楚链式结构不会因为项数多而崩。互验的办法很实用随便取一组 (q, q̇, q̈)分别用拉格朗日得到的闭式方程和牛顿-欧拉递推算 τ两边的数值应该一致到小数点后若干位。手算时不可能取很多组取一组 q̇ 0、q̈ 0此时 τ 应该只剩重力项 g(q)这一步能快速定位是重力项写错还是惯性项写错。3.3 惯量矩阵的三条性质对称正定、斜对称、线性参数化性质一M(q) 对称正定。对称来自动能是二次型正定来自动能非负且只有零速度时为零。习题里经常让你“证明 M 对称正定”标准答法是写出 K ½ q̇ᵀM q̇ ≥ 0再说明等号仅在 q̇ 0 时成立。性质二Ṁ - 2C 斜对称即对任意向量 xxᵀ(Ṁ - 2C)x 0。这条性质是后面 Lyapunov 证明能化简的关键考试里如果题目让你“利用斜对称性质”指的就是它。手推容易漏掉 Christoffel 符号里的系数 ½下面这段数值检查可以当自测工具def christoffel(M, q, dq, eps1e-6): n len(q) dM np.zeros((n, n, n)) # dM[k,i,j] ∂M_ij/∂q_k for k in range(n): dqk np.zeros(n); dqk[k] eps dM[k] (M(q dqk) - M(q - dqk)) / (2 * eps) C np.zeros((n, n)) for i in range(n): for j in range(n): for k in range(n): # c_ijk ½(∂M_ij/∂q_k ∂M_ik/∂q_j - ∂M_jk/∂q_i) C[i, j] 0.5 * (dM[k, i, j] dM[j, i, k] - dM[i, j, k]) * dq[k] return C def check_skew(M, q, dq, dt1e-6): Md (M(q dt * dq) - M(q - dt * dq)) / (2 * dt) # 沿轨迹的 Ṁ N Md - 2 * christoffel(M, q, dq) return np.allclose(N, -N.T, atol1e-4) # 反对称检查eps和dt是数值微分步长太大会截断误差明显太小会放大浮点噪声1e-6 附近比较平衡atol放到 1e-4 是因为数值微分本身有误差不必强求 1e-12。这个检查跑通说明你的 M 和 C 是配套的跑不通通常是 C 的符号或 ½ 系数错了。性质三动力学方程对惯性参数是线性的τ Y(q, q̇, q̈)θY 是回归矩阵θ 是参数向量。这条性质在自适应控制题里会用到属于“知道有这回事”就够的层次不必手推完整回归矩阵。3.4 独立关节 PID 与计算力矩重力补偿不是可选项最基础的控制律是独立关节 PD 加重力补偿τ K_p(q_d - q) - K_d q̇ g(q)。很多人问为什么不能只用 PD答案藏在重力项里没有 g(q) 补偿稳态误差会稳定在 K_p⁻¹g(q) 上关节越多、负载越重偏差越明显。习题里让“分析稳态误差”把 q̈ q̇ 0 代入方程就能直接看出这一项。计算力矩法逆动力学控制的思路是先用期望加速度把非线性项抵消掉τ M(q)(q̈_d K_d ė K_p e) C(q, q̇)q̇ g(q)其中 e q_d - q。代回动力学方程非线性项全部消掉误差方程化为 ė̈ K_d ė K_p e 0一个线性二阶系统。取 K_d、K_p 正定对角误差指数收敛。这一步是整章最值得背下来的推导因为考试里“证明闭环稳定”几乎都是这个套路。参数怎么选把 K_p 看成 ω_n²K_d 看成 2ζω_n按想要的带宽和阻尼比反推。ζ 取 0.7 到 1.0 之间响应快又不过冲ω_n 受采样频率和未建模动态限制经验上不超过采样角频率的十分之一。3.5 Lyapunov 稳定性答题骨架与三个常见断点稳定性题的答题骨架固定选候选函数、求导、化简、下结论。机电系统里最常用的候选函数是能量型V ½ q̇ᵀM(q)q̇ ½ eᵀK_p e第一项是动能第二项是“虚拟弹簧”的势能正定性由 M 正定、K_p 正定保证。求导时把 M 的导数项和 C 矩阵的项凑在一起利用 Ṁ - 2C 斜对称交叉项正好消掉剩下 V̇ -q̇ᵀK_d q̇ ≤ 0。三个常见断点第一V̇ 只是半负定不能直接说渐近稳定要补 LaSalle 不变集或者 Barbalat 引理第二候选函数必须径向无界否则只能得到局部结论第三K_p、K_d 的正定性要写出来光说“取正定矩阵”不够最好指出对角元为正。完整的收尾逻辑是V̇ ≤ 0 说明一致稳定再由 LaSalle 说明系统最大不变集里只有 q̇ 0、e 0 的平衡点于是渐近稳定。这一步写不写往往是满分和扣分的分界线。3.6 自适应与鲁棒控制习题边界在哪自适应控制的题通常只要求两件事写出误差方程选参数自适应律并给 Lyapunov 函数。典型形式是 τ Y(q, q̇, q̇_r, q̈_r)θ̂ - K_d s自适应律 θ̂̇ -Γ Yᵀ sLyapunov 函数在 3.5 的基础上再加一项 ½ θ̃ᵀΓ⁻¹θ̃。推导里参数误差 θ̃ 的导数会与自适应律里的 Yᵀs 抵消剩下的 V̇ 仍是半负定。滑模控制则要注意抖振的定性描述sign 函数换成饱和函数或边界层稳态误差有界。这两类题一般不会要求完整数值仿真把稳定性结论和参数含义说清楚即可别在符号推导上耗太久。4. 易漏点清单位姿、运动学、动力学与控制里最容易翻车的五个地方4.1 位姿与运动学里的三个漏项易漏点一复合变换的乘法顺序。为什么漏——题目用文字描述“先绕基座 z 轴转再沿当前 x 轴平移”两种操作恰好一个左乘一个右乘凭语感容易写反。怎么补——在草稿上给每个变换标“固定系”还是“动系”固定系一律左乘动系一律右乘写完用 q 0 时的结果验一次。易漏点二DH 参数表里 θ 的偏置。为什么漏——很多机构在零位时关节并不在 DH 定义的零位表里要写 θ q offset。怎么补——建完表先令 q 0看正解结果是否与机构简图的零位一致不一致就把偏差折算进 offset再重算一遍。易漏点三雅可比的参考系。为什么漏——速度题和静力题分开做各自套公式没人提醒两者必须用同一个参考系的 J。怎么补——在 J 旁边永远标注上标如 ᴮJ做 τ JᵀF 之前先确认 F 是在哪个系下表示的不在同一系就先乘旋转矩阵换过去。4.2 动力学与控制里的两个错法易错点一惯量矩阵漏掉电机转子惯量和减速比。为什么漏——习题图里只画连杆电机藏在关节里题干不写就容易当不存在。怎么补——读题时专门找“转子惯量”“减速比”这类词关节等效惯量按 J_m 加 i²J_motor 的形式并入 M(q) 的对角项量级上差一个 i²漏了会差出好几倍。易错点二Lyapunov 只证到 V̇ ≤ 0 就下“渐近稳定”的结论。为什么漏——课堂上讲能量函数时常常停在半负定后面的 LaSalle 一笔带过做题时记忆就断在这里。怎么补——养成固定句式“V̇ ≤ 0 得稳定再由 LaSalle或 Barbalat说明最大不变集仅含平衡点得渐近稳定。”两句都写比只写一句稳。另外还有一个隐藏的易错点值得单列计算力矩法里 C 项写成 Cᵀq̇。为什么漏——斜对称性质里 Ṁ - 2C 的 C 和方程里的 C 容易混符号一乱就写成转置。怎么补——记住标准形式是 C(q,q̇)q̇C 的选取不唯一但 C q̇ 唯一用 3.3 的数值检查跑一遍斜对称通过就说明 C 没错。5. 复习清单用错题反查知识地图的三周走法复习最怕的是“题都做过一考就懵”。我的做法是把错题按地图上的五层归类而不是按章节顺序重刷。具体走法分三段每段一周。第一周只做位姿与运动学目标是“手算不出错”。每天挑五道变换题、三道正解、两道逆解做完立刻用三个验算习惯过一遍q 0 对简图、单关节转动看圆弧、量级是否合理。这一周不碰动力学避免注意力分散。第二周攻动力学与控制重点是推导而不是计算。每天手推一遍计算力矩的误差方程再挑一道 Lyapunov 题完整写到“由 LaSalle 得渐近稳定”为止。推完对照下面这张自查表打分检查项合格标准不合格时的补法动能是否含转动项每根连杆都有 ½ωᵀIω回看 3.1 的 K 表达式M 是否对称正定手动验证对角元为正检查是否有负质量或漏项C 与 M 是否配套Ṁ - 2C 斜对称通过用 3.3 的数值检查脚本重力项符号q̇ q̈ 0 时 τ g(q)检查势能求导的符号稳定性结论写全“稳定 不变集”两句补 LaSalle 或 Barbalat第三周做整卷限时训练只做两类题一类是跨层的综合题比如“给轨迹求逆解再设计控制律”另一类是过去错过的原题。限时训练的意义是暴露“会但慢”的问题很多人栽在时间上而不是不会。查漏补缺的具体技巧把每次卡住的地方写成一句话比如“逆解多解没筛限位”“雅可比参考系没标”攒到十句左右回头对照第 4 章的易漏点清单重合的部分就是你的真短板。这套习题答案的用法也在这里——先自己写写完再逐行对照卡住的那一步才是要复盘的地方而不是整页抄一遍。说个血泪经验我曾经连续三道逆解题都只写了一组解对照答案才发现每组都少了肘下的分支问题出在开方后忘了取负号。从那以后我每做完一道逆解题都强制把解代回正解验一遍并且数一遍解的个数是否和机构自由度匹配。这个习惯后来帮我拦下了不少低级错误也希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站