第232篇 运动学约束规划——速度/加速度/加加速度限制的处理
前面几篇讲了轨迹表示方法(多项式、B样条)和时间参数化(TOPP)。这些方法都能处理运动学约束,但处理方式和效果差异很大。今天系统性地聊聊速度、加速度、加加速度这三个约束怎么在轨迹规划中处理。
运动学约束的物理意义很直接:电机有最大功率(限制速度和加速度),减速器有最大扭矩变化率(限制加加速度),结构有共振频率(限制加速度变化频率)。规划出来的轨迹如果违反这些约束,执行器跟不上,实际运动和规划运动就偏差大了。
一、三类约束的物理来源
速度约束:来源于电机最大转速和减速器传动比。比如伺服电机最大转速3000rpm,减速比100:1,关节最大转速就是30rpm ≈ 3.14 rad/s。AGV的速度约束更直接——最大行进速度由电机功率和轮径决定。
加速度约束:来源于电机最大扭矩和负载惯量。τ = J·α(力矩 = 转动惯量 × 角加速度),最大扭矩确定后,最大角加速度就确定了。注意:负载惯量随机械臂构型变化——手臂伸直时惯量大,收回时惯量小,所以最大角加速度是动态变化的。
加加速度(Jerk)约束:来源于减速器的齿轮间隙和传动柔性。jerk太大意味着力矩变化太快,齿轮间隙会导致冲击和振动。工业机械臂通常把jerk限制在最大加速度的2-5倍/T_ramp(加减速过渡时间)。
# 典型机械臂的运动学约束
constraints = {
'velocity_max': [2.0, 2.0, 3.0, 3.0, 3.5, 3.5], # rad/s, 6轴
'acceleration_max': [5.0, 5.0, 8.0, 8.0, 10.0, 10.0], # rad/s²
'jerk_max': [20.0, 20.0, 30.0, 30.0, 40.0, 40.0], # rad/s³
}
二、约束处理的四种策略
策略一:先规划后检查(Post-hoc Checking) 最简单的方法——先不管约束,规划出轨迹后再检查是否满足约束。不满足就调整参数重新规划。
优点:实现简单,规划算法不用修改。 缺点:可能需要多次迭代,不保证收敛。 适用场景:最小化Jerk轨迹——算完后检查速度/加速度峰值,超限就增大时间T重新算。
策略二:约束融入优化(Constraint in Optimization) 把运动学约束作为优化问题的约束条件。比如在B样条优化中,速度约束变成对控制点的线性不等式约束:|v_i| ≤ v_max。
优点:一次求解就满足约束,不需要迭代。 缺点:约束增加了优化问题的复杂度,可能使问题无解。 适用场景:QP/LP求解器能高效处理的线性约束。
# B样条优化中的速度约束
# 速度 = 控制点差分 / 节点间距
# |P_{i+1} - P_i| / (t_{i+1} - t_i) <= v_max
# 转化为: P_{i+1} - P_i <= v_max * dt_i
# P_i - P_{i+1} <= v_max * dt_i
策略三:TOPP(Time-Optimal Path Parameterization) 在给定路径上优化时间分配,保证路径上每一点的速度和加速度都在约束范围内。前面第229篇详细讲过。
优点:时间最优,约束严格满足。 缺点:不改变路径形状,如果路径本身曲率太大,速度必须很低。 适用场景:路径已确定,只需要分配速度。
策略四:采样时考虑约束(Constraint-aware Sampling) 在RRT/RRT*等采样算法中,扩展节点时检查新节点是否满足运动学约束。不满足则丢弃。
优点:规划出来的路径天然满足约束。 缺点:搜索效率降低——很多采样点被丢弃。 适用场景:移动机器人的DWA、Lattice Planner。
实际工程中的组合策略:大多数成熟的系统不是只用一种策略,而是组合使用。比如MoveIt2的标准流程:先用RRT-Connect做无约束路径搜索(策略四的简化版——只在碰撞检测层面考虑约束),再用TOTG做时间参数化(策略三),最后用最小化Jerk平滑(策略一的变体)。这种"先找路→再分配时间→再平滑"的三级流水线在工业界非常普遍。
三、加速度约束的特殊难点
速度约束和jerk约束相对好处理——它们是关于状态变量的简单不等式。加速度约束比较棘手,原因有三:
动态变化:机械臂的加速度上限随位姿变化——同一个关节,手臂伸直时和收回时的最大加速度不同。规划时如果用固定值,要么太保守(用最小值)要么冒险(用平均值)。
耦合效应:多轴机械臂的各轴加速度互相耦合——第1轴加速会产生科氏力影响第2轴的力矩需求。严格来说需要把动力学模型代入约束——这就变成了动力学约束而不是纯运动学约束了。
非凸性:加速度约束在关节空间中可能是非凸的——满足约束的关节加速度集合可能不是凸集。非凸约束在优化中很难处理——不能直接用QP/LP求解器。
工程上的折中方案:用各轴独立的最大加速度(取最保守的值),忽略耦合效应。这个方案虽然不是最优的,但实现简单、保证安全。ABB和FANUC的控制器就是这么做的。
四、Jerk约束的工程价值
很多人觉得jerk约束不重要——"反正控制器会平滑处理"。这个想法在低速场景下没问题,但在高速场景下会出事。
举个例子:一台AGV最大速度2m/s,加速度1m/s²。如果没有jerk约束,加速度从0瞬间跳到1m/s²(jerk无穷大),车轮会打滑——轮胎和地面的摩擦力无法提供瞬时的力矩跳变。加上jerk约束(比如4m/s³)后,加速度用0.25秒从0渐变到1m/s²,车轮不打滑了。
数控机床领域对jerk约束的重视程度远高于机器人领域——因为加工质量直接受jerk影响。jerk大意味着刀具力突变,加工表面会有纹路。
不同机器人的约束特点:工业机械臂的约束最严格——6个轴各有独立的速度/加速度/jerk限制,而且约束之间耦合。AGV的约束相对简单——只有速度和加速度两个约束,方向是固定的(前进/后退)。无人机的约束最特殊——四旋翼的推力有上下限但方向可变,加速度约束是一个锥形区域而不是简单的框式约束。做无人机规划时需要把推力锥约束转化为加速度约束——这是和其他机器人不同的地方。
五、面试实战
Q:速度、加速度、jerk约束分别怎么处理? A:速度约束最简单——作为线性不等式加入优化。加速度约束稍复杂——需要考虑动态变化和耦合效应,工程上通常取保守的固定值。Jerk约束通过最小化Jerk轨迹或者S曲线速度规划来处理。
Q:约束之间冲突了怎么办? A:优先级排序——安全约束(碰撞、关节限位)最优先,其次是物理约束(速度、加速度上限),最后是舒适度约束(jerk)。如果物理约束和路径约束冲突(比如在窄通道中必须高速通过但加速度不够),只能降低速度要求或者放宽路径。
Q:你在项目中怎么处理运动学约束? A:做AGV规划时,速度约束1.5m/s、加速度0.8m/s²、jerk 4m/s³。用TOPP做时间参数化——在路径上分配速度,保证每点都满足约束。TOPP输出的速度曲线在弯道处自动减速到0.3m/s,直线段加速到1.5m/s。全程时间比匀速方案短35%。
Q:约束太紧导致找不到可行轨迹怎么办? A:分两步处理。第一步:约束松弛——把约束放宽20-30%重新搜索,如果能找到解说明是约束太紧。第二步:和系统工程师沟通——确认约束值是否合理。有些约束是设计余量(比如标称最大速度的80%),可以适当放宽。如果约束是硬性的(比如电机物理极限),那只能换路径或者换机器人——别和物理规律较劲。
小结
运动学约束包括速度、加速度、jerk三类,分别来源于电机转速、扭矩和传动柔性。处理策略有四种:后检查、融入优化、TOPP、约束感知采样。加速度约束最难处理——动态变化、耦合效应、非凸性。工程上通常取保守的固定值。
面试中如果被问到约束处理,核心讲清楚四种策略的适用场景和优缺点。能举出加速度约束的难点(动态变化+耦合+非凸)是加分项。
下一篇讲多约束轨迹优化——CHOMP和TrajOpt框架。
如果这篇文章对你有帮助,欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。
「机器人软件开发面试·从入门到精通」连载系列
上一篇:第231篇 碰撞检测算法——GJK/EPA和包围盒方法
下一篇预告:第233篇 多约束轨迹优化——CHOMP和TrajOpt框架
有任何问题欢迎评论区留言,我会尽量回复。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)