datetime:2025/10/09 14:53
author:nzb

机器人基础知识学习笔记---知识拓展

核心概念区分:控制器 vs. 求解器

首先需要明确:

  • 控制器:是一个更大的概念,它根据期望轨迹和传感器反馈,计算出使机器人达到目标所需的力或力矩。它负责“发号施令”。
  • 求解器:是控制器内部或与之紧密配合的计算工具,用于解决特定的数学问题。它负责“解出答案”。

在很多语境下,我们所说的“控制器求解器”指的是解决运动学动力学问题的核心算法模块。


1. 运动学求解器

主要负责机器人末端位姿与关节角度之间的转换。

a) 逆运动学求解器

这是最常被问及的“求解器”,因为从笛卡尔空间到关节空间的映射是复杂且多解的。

  1. 解析法

    • 原理:通过几何关系和代数变换,直接推导出关节角度的封闭数学表达式。
    • 优点:速度极快,精确,能获得所有可能解。
    • 缺点:只适用于特定结构的机器人(如6自由度、腕部正交的机器人)。通用性差。
    • 代表:PUMA、UR等机器人的逆运动学解析解。
  2. 数值迭代法

    • 原理:采用迭代算法逐步逼近解。最常见的是基于雅可比矩阵的方法。
      • 牛顿-拉夫森法
      • 雅可比转置法
      • 伪逆法:最常用,Δq = J⁺ * Δx,其中 J⁺ 是雅可比矩阵的伪逆。
      • 阻尼最小二乘法:为了解决奇异点问题,Δq = Jᵀ(JJᵀ + λ²I)⁻¹ * Δx。Levenberg-Marquardt算法是其中一种。
    • 优点:通用性强,适用于任何机器人构型。
    • 缺点:计算量较大,可能存在收敛性问题,且每次只能得到一个解。
    • 代表:几乎所有机器人软件库(如ROS MoveIt的TRAC-IK, KDL)都提供数值IK求解器。
  3. 优化方法

    • 原理:将逆运动学问题转化为一个优化问题(如最小化与目标位姿的误差,同时避免关节限位、障碍物等)。
    • 优点:可以方便地加入各种约束(关节角度、速度、避障、能量等),非常灵活。
    • 缺点:计算成本最高。
    • 代表:使用像IPOPTSNOPT等非线性优化求解器,或者基于二次规划的求解器。

2. 动力学与控制求解器

主要负责计算实现运动所需的力矩。

a) 递归牛顿-欧拉算法

  • 用途:主要用于计算逆动力学,即已知运动状态(位置、速度、加速度),求所需的关节力矩。
  • 特点:计算效率高,复杂度为 O(N),是实时控制的首选。

b) 计算扭矩控制中的求解器

在计算扭矩控制中,需要在线计算机器人的动力学模型(质量矩阵、科里奥利力、重力项)。这本身就是一个复杂的计算过程,但通常是通过预编译的高效代码(如基于Featherstone算法)或符号计算完成的,不常被称为一个独立的“求解器”。

c) 优化控制求解器

这是当前最前沿和强大的领域,尤其是在模型预测控制 中。控制器需要在一个时间窗口内求解一个带约束的优化问题。

  1. 二次规划求解器

    • 场景:当动力学模型被线性化,且代价函数为二次型时,问题可转化为QP。
    • 代表
      • OSQP:一个非常高效的开源QP求解器。
      • qpOASES:另一个著名的开源QP求解器,特别适用于模型预测控制。
      • 商用求解器:Gurobi, MOSEK, CPLEX(它们在处理大规模、复杂QP问题时性能卓越)。
  2. 非线性规划求解器

    • 场景:当使用完整的非线性动力学模型,或者代价函数/约束非常复杂时,需要求解NLP问题。
    • 代表
      • IPOPT:开源领域最著名的NLP求解器,功能强大。
      • ACADOCasADi:这两个是工具包,它们可以自动生成优化代码,并内部集成或调用像IPOPT、qpOASES等求解器,在机器人MPC研究中极为流行。
      • SCS:一种可求解锥规划的大规模凸优化求解器,也被用于一些机器人问题。
      • 商用求解器:SNOPT

3. 具体软件与库中的求解器

在实际的机器人软件开发中,您会直接接触到以下集成好的求解器:

  • ROS / MoveIt:

    • KDL:提供数值逆运动学求解器(牛顿-拉夫森法)。
    • TRAC-IK:比KDL更高效、更可靠的逆运动学求解器,结合了SQP优化和牛顿-拉夫森法。
    • IKFast:一个工具,可以为你的特定机器人模型生成解析的逆运动学C++代码。
  • MATLAB Robotics System Toolbox:

    • 提供了generalizedInverseKinematics对象,允许您用数值方法求解带约束的逆运动学问题。
  • Drake:

    • 一个用于机器人分析与控制的C++/Python库,深度集成了非线性优化模型预测控制。它使用如SNOPTIPOPTOSQP等作为后端求解器。
  • RaiSim / MuJoCo:

    • 这些是物理仿真引擎。它们内部包含极其高效的正向动力学接触动力学求解器(如MuJoCo的PGS和CG,RaiSim的专有算法),用于模拟机器人的运动。虽然不直接用于控制,但在仿真中验证控制器和进行强化学习训练时至关重要。
  • OROCOS:

    • 开源机器人控制软件,其KDL库是ROS中KDL的前身。

总结与选择建议

求解器类型 主要问题 代表方法/工具 特点
逆运动学 末端位姿 → 关节角度 解析法、数值法、优化法 追求速度用解析/数值,追求带约束能力用优化法
逆动力学 运动状态 → 关节力矩 牛顿-欧拉算法 高效,用于计算扭矩控制
优化控制 未来状态预测 → 最优控制序列 QP/NLP求解器 功能最强大,可处理约束,用于MPC

如何选择?

  1. 对于简单的轨迹跟踪:使用经典的PD/计算扭矩控制器,内部使用递归牛顿-欧拉算法计算动力学。
  2. 对于需要避障、关节限位的运动规划:使用MoveIt中的TRAC-IKKDL进行逆运动学求解。
  3. 对于人形机器人、四足机器人等复杂系统的平衡与控制:必须使用基于优化的控制器,如MPC、WBC,并选择高效的QP求解器NLP求解器
  4. 对于学术研究或算法原型开发CasADi + IPOPT/qpOASES 是一个非常流行和强大的组合。

results matching ""

    No results matching ""