4. 轨迹优化问题建模

轨迹优化不是“把一条曲线画得好看”,而是把一个连续时间上的运动规划问题,写成计算机可以求解的数学优化问题。建模质量直接决定求解器能否收敛、解是否物理可行、以及实时性是否达标。本节围绕三个核心环节展开:目标函数设计、约束条件建模、问题转化与归一化。

建模三要素:目标函数决定“什么算好”,约束条件决定“什么算可行”,问题转化与归一化决定“求解器能不能稳定、快速地算出来”。三者缺一不可,且相互耦合。

一、目标函数设计:把工程偏好写成代价

目标函数是优化问题的“指挥棒”。在轨迹优化中,常见的目标函数包括时间最优、能量最优、平滑性最优,以及它们的加权组合。

  • 时间最优:最小化总运动时间 \(T\),或最小化各段轨迹时间之和。适合抓取、避障穿越等对节拍敏感的场景。缺点是容易产生 bang-bang 控制,加速度不连续,对执行器冲击大。
  • 能量最优:最小化控制输入平方积分 \(\int u^2 dt\),或最小化关节力矩平方和。适合续航敏感、发热受限的机器人系统。缺点是可能产生“慢而软”的轨迹,节拍不理想。
  • 平滑性最优:最小化加加速度(jerk)平方积分 \(\int \dddot{q}^2 dt\),或最小化加速度变化率。适合人机协作、视觉跟踪、精密装配等对振动敏感的场景。
  • 加权组合:实际工程中通常写成 \(J = w_1 T + w_2 \int u^2 dt + w_3 \int \dddot{q}^2 dt\),通过权重调节偏好。

目标函数设计的关键不是“选哪个”,而是“权重怎么定”。权重过大或过小都会导致求解器在时间、能量、平滑之间失衡。建议先用归一化后的量纲做初值,再根据仿真结果微调。

二、约束条件:可行域的边界

约束条件定义了轨迹必须满足的物理与任务边界。轨迹优化中常见的约束可分为四类:

约束类型数学形式典型场景
动力学约束\(\dot{x}=f(x,u)\)机械臂、无人机、移动机器人
避障约束\(g(x) \ge 0\) 或距离函数狭窄通道、多障碍环境
边界条件\(x(0)=x_0,\ x(T)=x_f\)起点终点固定、速度连续
执行器限制\(u_{\min} \le u \le u_{\max}\)力矩、速度、加速度饱和

动力学约束是轨迹优化的“骨架”。对于机械臂,通常写成 \(M(q)\ddot{q}+C(q,\dot{q})\dot{q}+G(q)=\tau\);对于无人机,写成位置、速度、加速度与推力、姿态的耦合关系。避障约束常用符号距离函数或凸多边形分离条件表达,边界条件则决定轨迹是否“接得上”。执行器限制是最容易被忽略但最致命的一类约束:如果优化出的轨迹要求力矩超过电机峰值,再漂亮的曲线也无法执行。

常见误区:只写动力学约束和边界条件,忽略执行器限制与避障约束的连续性。结果求解器给出“数学上可行、物理上不可行”的轨迹,实机运行时出现饱和、抖动甚至失控。

三、问题转化与归一化:让求解器“吃得下”

原始轨迹优化问题通常是连续时间、非线性、非凸的,直接求解非常困难。工程上通常做三步转化:

  1. 离散化:把连续时间 \([0,T]\) 分成 \(N\) 段,用配点法、打靶法或直接转录法,把微分方程转化为代数约束。
  2. 归一化:对时间、位置、速度、控制量做尺度变换,使各变量量级接近 1。例如时间除以 \(T\),位置除以工作空间尺度,力矩除以峰值力矩。
  3. 凸化或松弛:对非凸避障约束做凸近似,或引入松弛变量,把问题转化为二次规划或序列凸规划。

归一化的意义常被低估。如果时间变量在 \(10^{-3}\) 量级、位置在 \(10^0\) 量级、力矩在 \(10^2\) 量级,求解器的数值条件会非常差,收敛速度急剧下降。归一化后,各变量在同一量级,求解器迭代更稳定。

# 归一化示例(伪代码)
T_norm = T / T_ref          # 时间归一化
q_norm = (q - q_min) / (q_max - q_min)   # 位置归一化
u_norm = u / u_max          # 控制量归一化
J = w1 * T_norm + w2 * sum(u_norm**2) + w3 * sum(jerk_norm**2)

四、案例:机械臂抓取轨迹建模

以六轴机械臂从 A 点抓取物体到 B 点为例。目标函数选为时间与平滑性的加权组合:\(J = 0.6T + 0.4\int \dddot{q}^2 dt\)。约束包括:关节角度限位、关节速度限位、关节力矩限位、末端执行器与桌面及障碍物的距离约束、起点和终点的位姿约束。离散化采用 50 个配点,时间归一化到 \([0,1]\),力矩除以峰值力矩。求解后得到一条平滑、无碰撞、力矩不饱和的轨迹。

如果去掉平滑性项,轨迹会出现明显抖动;如果去掉力矩约束,轨迹在加速段要求力矩超过峰值 30%,实机无法执行。这说明目标函数与约束必须同时考虑,不能只追求某一项指标。

建模检查清单:目标函数是否覆盖时间、能量、平滑三个维度?约束是否包含动力学、避障、边界、执行器四类?变量是否归一化?离散化点数是否足够?求解器是否能在预期时间内收敛?
轨迹优化问题建模结构图 目标函数 J 时间最优:min T 能量最优:min ∫u²dt 平滑性:min ∫q⃛²dt 约束条件 动力学:ẋ = f(x,u) 避障:g(x) ≥ 0 边界 + 执行器限制 转化与归一化 离散化:配点/打靶 归一化:量级统一 凸化/松弛:QP/SCP 数值求解器 QP / SQP / 内点法 / SCP 可行轨迹 q(t), u(t) 满足约束、目标最优 迭代 目标函数决定“什么算好”,约束决定“什么可行”,转化与归一化决定“能否稳定求解”

建模完成后,建议先用小规模离散点做快速验证,确认目标函数与约束的量级合理,再逐步增加配点数和约束复杂度。实时求解工程中,建模阶段多花十分钟做归一化和约束检查,往往能节省现场调试数小时。