机器人数值优化基础:从理论到实战指南
机器人数值优化通过数学模型寻找系统性能最优参数,涉及目标函数最小化及约束处理。内容包括优化定义组成、机器人应用场景如 SLAM 与轨迹规划、无约束与约束优化算法及最优性条件。文章提供参考书籍、基础数学知识、对称锥规划介绍及工程实践技巧,帮助读者掌握从理论到实战的优化方法,解决路径规划与控制分配等问题。

机器人数值优化通过数学模型寻找系统性能最优参数,涉及目标函数最小化及约束处理。内容包括优化定义组成、机器人应用场景如 SLAM 与轨迹规划、无约束与约束优化算法及最优性条件。文章提供参考书籍、基础数学知识、对称锥规划介绍及工程实践技巧,帮助读者掌握从理论到实战的优化方法,解决路径规划与控制分配等问题。

在当今机器人技术迅速发展的背景下,优化问题求解成为了该领域的关键技能之一。为了帮助那些对机器人方向感兴趣,却苦于不知如何解决优化问题的同学,本系列专栏旨在让大家迅速掌握解决一般非凸、光滑、非光滑、有约束、无约束,以及具有特殊结构的凸问题和非凸问题的方法。
希望本系列能够帮助各位读者在机器人数值优化领域迈出坚实的第一步。
首先给出以下四本书作为参考:
一般查阅这四本书比较多,这四本书并不是互相独立的,可以重点看第一本、第二本还有第三本书。
数值优化是机器人技术中一种重要的算法,它通过数学模型和算法来找到使机器人系统性能最优的参数值。这种优化通常涉及最小化目标函数,该函数反映了机器人性能的某些度量,如能耗、轨迹精度、响应时间等。优化问题可以非常复杂,涉及多个变量和约束条件。
数学优化一般由几个部分组成: $$\min f(x) \ \text{s.t.} \quad g(x) \leq 0 \ \quad \quad h(x) = 0$$
$x = (x_1, \cdots, x_n) \in R^n$ 是 $n$ 维的向量,称为优化变量 (Optimization Variables)。
$f : R^n \rightarrow R$ 评价 $x$ 是否更优,是否更好,要看目标函数 (objective function) $f$ 为 $x$ 赋予了值,值是越小越好的。
$g : R^n \rightarrow R^{m_g}$ 比如 $g(x) = (x_1 - 1)^2 + x_2^2 - 1 \leq 0$ 描述的就是以 $(1, 0)$ 为圆心,$1$ 为半径的圆形区域,就要在圆形里面找到 $f(x)$ 的最小值,所以 $x$ 除了圆形区就是不感兴趣的区域,就不要了。
$h : R^n \rightarrow R^{m_h}$ 比如在三维空间的曲面上,所寻找的 $x$ 要在曲面上滑动,它不应该在曲面之外,所以曲面可以用等式 $h$ 表述,如 $x_1^2 + x_2^2 + x_3^2 = 0$ 表示的是球面的一部分,它其实是整个球面,$h$ 也可以是多个等式。比如 $$\begin{cases} x_1^2 + x_2^2 + x_3^2 = 0 \ -x_1 + x_2 + x_3 = 0 \end{cases}$$ 表示的是曲面和平面相交的曲线。
定义最优值 $x^*$,要满足所有约束,在感兴趣的区域内,所有满足约束的 $x$,称作 可行解 (Feasible Solution)。
最优解是可行解中具有最低目标函数 $f(x)$ 值的解的集合,这里有几层意思,就是说最优解 $x$ 一定属于该解集。因为最优解可能不止一个,也可能没有,也可能有多个的情况。
另一方面需要对所考虑的等式和不等式约束要有假设,在机器人数值优化中,假设目标函数一定满足以下两点:
可以看看刚刚所说的一系列的 $f(x)、g(x)、h(x)$ 都是连续的,对应的称为连续优化,很多优化问题其实也可以表示一系列的离散变量的决策问题,不处理离散性的问题,只处理连续优化,所以 $f(x)、g(x)$ 至少都得是连续的,可以非光滑,但必须得是连续的。
在本系列的所有情况中,都会假设无约束优化里的目标函数必须得满足这两个假设条件,存在下界且具有有界子级集。
对于有约束优化的情况,即 $g(x)$ 和 $h(x)$ 存在时,定义 $$\tilde{f}(x) = \begin{cases} f(x) & \text{满足约束时} \ +\infty & \text{不满足约束时} \end{cases}$$ 则在有约束优化或无约束优化时,$\tilde{f}(x)$ 作为目标函数是有下界且具有有界子级集,这是最基本的假设条件。
在机器人领域中,数据优化有哪些应用呢?
很多时候 SLAM 同步定位与地图构建里面的很多问题。要恢复出整个位置的轨迹,都可以写为非线性函数
$$\min \sum f_i^2(x)$$
其中,约束条件为 $l_x \leq x \leq u_x$。目标函数为关于优化变量的平方和最小化残差,满足一系列边界约束。每个 $x$ 元素都有上界和下界,因为 $f(x)$ 是非线性函数,所以称为非线性最小二乘法。
在轨迹规划或者运动规划里通常会解非线性问题。只要 $f(x), g(x), h(x)$ 都是非线性的,它就是非线性问题,需要把火箭的一系列的状态 $x$ 随着时间变化的轨迹优化出来,让轨迹尽可能光滑,让推力不要太高,不要太低,并且满足安全约束,它也可以变成非线性规划的问题,这是比较通用的。
在点云配置领域,要找最优的 $R$ 和 $T$,其中,$R$ 为旋转 (rotation),$T$ 为平移 (translating),使得两帧点云中间的距离度量尽可能的最小,这样就把点云配准。因为 $R、T$ 有特殊的性质,可以通过牺牲精度来把对应的问题变成半定规划 (SDP),这是一类锥优化,SDP 问题求解出来的最优解跟只用优化 $R、T$ 的全局最优解之间的间隙很小。这一类问题称为 半定规划 (Semidefinite Programming, SDP)。
凸问题是非凸优化的松弛,所以很多非凸优化问题,可以把凸问题或者凸松弛描述出来,就可以用凸优化的方法求解。
在多关节机器人、无人车、无人机、无人船里都有时间最优路径参数化的问题。给定连续可导的路径 A 到 B,一定要严格按照路径走,路径可以是三维,可以是二维,关节里的多维,因为电机驱动还有马达发动机都有力矩特性,所以要在满足机器人驱动限制的前提下,使其最快地从 A 到 B 沿这条路径完成路径跟踪。
有了轨迹其实就有了形状,如何分配时间?怎样得到具体什么时候该到哪个位置?A 到 B 的时间尽可能短,称为 时间最优路径参数化 (TOPP) 问题。TOPP 问题就是给弧度重新以真正的时间做参数化,所以叫参数化。这样的问题可以变成一类 二阶锥规划 (SOCP) 问题,SOCP 也是凸问题,约束结构很特殊,也是一类锥规划问题。
所以在机器人领域里,不管是非线性的非凸的优化还是凸优化,还是有一定结构的凸优化,研究领域还是挺广的,所以针对相应的问题怎样有效求解感兴趣的全局最优解,是很关键的问题。
在机器人学领域,数值优化方法的应用至关重要,它们是解决设计、控制、路径规划等问题的关键工具。本系列博客将深入探讨数值优化在机器人学中的应用,并掌握解决实际问题的有效方法。要掌握这一领域的数值优化,需要以下基础知识:
PID 控制、反馈控制、最优控制等。Python、C++ 或 MATLAB,用于实现和测试优化算法。IPOPT、MATLAB 的 OptimizationToolbox 等。ROS (Robot Operating System)、Gazebo 等。首先,我们将研究非凸优化问题,其中涉及到的凸非凸优化其实也要研究凸性质,因为很多算法都依赖于局部凸性质的假设,特别是那些在局部区域可以近似为凸函数的问题,所以凸性质是不可避免的部分。这类问题在机器人学中普遍存在,例如在路径规划和控制策略中。研究非凸优化也可以通过利用凸性质,来设计出更快速、更稳定的算法。
后续博客会讲对非凸优化的一般无约束优化的算法比如带线性搜索的最速梯度下降法、修正阻尼牛顿法等。
在机器人数值优化中,无约束优化是指寻找一个函数的极值点,而不受任何额外条件的限制。这类问题在机器人学中非常常见,例如在路径规划、姿态控制、参数调整等方面。无约束优化包含以下几个主要内容:
本系列博客会介绍一类工程上比较有效的无约束优化的算法,包括准牛顿方法、BFGS 更新、线性共轭梯度下降等。这些方法在工程实践中非常有效,尤其是在处理非光滑问题和高维数据时。通过实际案例,如平滑导航路径生成,来展示无约束优化算法的应用。
上述都是对无约束优化问题的算法。
在机器人数值优化中,约束优化是指寻找一个函数的极值点,同时满足一定的约束条件。这类问题在机器人学中非常普遍,例如在路径规划、姿态控制、资源分配等方面。约束优化包含以下几个主要内容:
通过低维线性规划、严格凸二次规划等方法,我们可以高效地解决具有约束的优化问题。此外,还将介绍增广拉格朗日法,这是一种简洁高效的算法,尤其适用于控制分配问题和碰撞距离计算等实际应用。
对于一般的约束优化,也是对于非凸问题来讲的,我们将讨论不同类型的约束优化问题及其复杂性,为了让大家明白优化算法并不是一定要用通用的算法,需要逐个挑选。对于通用的工程问题,什么样的问题适合什么样的求解,所以并不是所有的问题都需要用数值算法去迭代,还有低维度的精确算法,他们在导航规划问题里面都比较有效,也能够很快的计算出精确解,而不是数值近似解。
通过一系列无约束优化的方法解约束优化的算法,会讲约束优化的一系列的最优性条件,增广拉格朗日算法或者 PHR,增广拉格朗日算法的特点就是简洁有效,它的算法效率会比一阶算法或者不利用高阶信息的算法收敛要快,并且计算效率会比 SQP、内点法要更为轻量级,而且收敛性也可以做到很快,尤其适用于控制分配问题、碰撞距离计算和非线性模型预测控制等实际应用。
对称锥规划 (Symmetric Cone Programming, SCP) 是一类特殊的凸优化问题,它能够表达某些非凸函数,并转化为可以获得全局最优解的锥规划问题。对称锥规划是线性规划、二次规划和半定规划等优化问题的推广。
我们将讨论对称锥与欧几里得约旦代数的关系,以及如何使用增广拉格朗日法求解大规模锥规划问题,并以时间最优路径参数化 (TOPP) 问题。
对称锥规划在机器人学中的应用包括但不限于:
对称锥规划问题通常通过内点法 (Interior Point Method, IPM) 来解决,这是一种高效的数值方法,适用于解决大规模的凸优化问题。内点法通过迭代地在可行域内部移动,逐步逼近最优解,避免了在边界上的复杂计算。
对称锥规划是机器人学中数值优化的一种高级形式,它提供了一种强大的工具来处理复杂的优化问题。
最后,我们将讨论优化算法中的工程技巧,如平滑技术、自由度和伴随法的权衡,以及线性求解器的选择。这些技巧对于提高算法效率和稳定性至关重要。
在数值优化中存在一种不可避免的问题——非光滑,就是不可能有效的求解。对于这种问题可以牺牲一系列的精度,把对应的非光滑问题磨光,获得很快的求解方案。
很多问题并不是自由度越高越好的,工程里面关注的是质量和效率的权衡,所以怎样有效地把实际的约束个数和自由度解耦,工程里有比较实用的方法叫 伴随法。
在数值优化中都会涉及到求解线性方程组,$Ax=b$ 并不是简单的问题。
比如 $A$ 是对称时,$A$ 是镇定时,$A$ 是非满秩时,怎样稳定地解出对应的 $x$?
或者并不需要精确求解,需要迭代近似求解对应的 $x$,此时怎样能够更快、更稳定,怎样挑选对应的线性求解器也是很重要的部分,对于优化算法来说是关乎性能最重要的一方面。
在自主移动机器人的研究领域,安全导航是一个极具挑战性的任务,尤其是在障碍物密集的环境中。为了实现这一功能,我们需要运用数值优化方法来处理非光滑优化问题、低维度优化以及锥规划等问题。在本系列博客中,我们将探讨如何将这些优化方法应用于自主移动机器人的安全导航。通过实际案例,我们将分析影响算法效率的各个方面,以及数值稳定性在整个工作流程中的重要性。
本系列博客《机器人数值优化》专栏的核心是通过理论与实践相结合,帮助读者快速掌握机器人领域的数值优化技术。无论是无约束优化、约束优化、凸优化还是非凸优化,每一个部分都有其独特的应用和解决方法。同时,所提及的数值优化算法和工具在机器人学中的广泛应用,如同步定位与地图构建 (SLAM)、轨迹规划、点云配置等,展示了这些技术的实际价值和重要性。
通过该系列的学习,读者不仅可以掌握基本的数值优化理论,还可以应用这些优化技术来解决实际机器人中的各种复杂问题。这将为机器人的智能设计、路径规划和控制系统提供强大的理论支持,推动机器人技术的发展。
希望本系列专栏能够帮助大家在机器人领域的数值优化之路上迈出坚实的一步!

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online