💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心,探索未知可能性🌟
文章目录
- 引言
- 一、参考书籍推荐
- 二、数值优化的定义与组成
- 2.1 数值优化组成部分
- (1) 优化变量
- (2) 目标函数
- (3) 不等式约束
- (4) 等式约束
- 2.2 数值优化前提假设
- 三、数值优化在机器人中的应用
- 3.1 平滑与映射:非线性最小二乘法
- 3.2 轨迹规划: 非线性问题
- 3.3 点云配置:半定规划
- 3.4 时间最优路径参数化:二阶锥规划
- 四、数值优化基础
- 4.1 数学基础
- 4.2 数值分析
- 4.3 机器人学基础
- 4.4 编程技能
- 4.5 软件工具
- 五、无约束优化
- 5.1 优化问题的数学表述
- 5.2 优化算法
- 5.3 最优性条件
- 六、约束优化
- 6.1 优化问题的数学表述
- 6.2 约束优化算法
- 6.3 最优性条件
- 七、对称锥规划
- 7.1 对称锥定义
- 7.2 对称锥应用
- 7.3 对称锥问题解决方法
- 八、提出和解决问题的技巧
- 8.1 平滑技术
- 8.2 自由度和伴随法
- 8.3 线性求解器的类别和功能
- 8.4 项目实战:实现密集障碍环境中的安全导航
- 九、总结
- 参考资料
引言
在当今机器人技术迅速发展的背景下,优化问题求解成为了该领域的关键技能之一。为了帮助那些对机器人方向感兴趣,却苦于不知如何解决优化问题的同学,博主开设了系列专栏——《机器人数值优化》。本系列专栏旨在让大家迅速掌握解决一般非凸、光滑、非光滑、有约束、无约束,以及具有特殊结构的凸问题和非凸问题的方法。
希望通过专栏,能够帮助各位读者在机器人数值优化领域迈出坚实的第一步。让共同探索这片充满挑战和机遇的领域!
一、参考书籍推荐
首先给出以下四本书作为参考:
- 《最优化:建模、算法与理论》
第一本是北大的文再文团队编著的书籍,这本书是中文版的,给了很多算法的理论和具体流程,可以作为比较好的入门书籍,对国内的学者来说是比较不错的选择。 - 《数值优化》
Numerical Optimization
第二本除了理论方面很全之外,也关注了很多程序中的问题,因为程序代码是用浮点数表示的,所以会引发一系列的关于程序稳健性数值的问题,怎么样去规避。因为浮点数表示会存在舍入误差的数值问题。这也是这本书比较有特色地方,给了很多工程实践上比较有用的技巧,让理论的算法在转化到对应的程序时更加鲁棒、更加稳定。 - 《凸优化教程》
Lectures on Convex Optimization
第三本主要聚焦在凸优化理论,从光滑到非光滑到结构优化,涵盖了很多理论上的知识点,这本书的思路也比较清晰,建议大家如果对理论方面感兴趣,也可以看第三本书。 - 《现代凸优化分析、算法和工程应用教程》
LECTURES ON MODERN CONVEX OPTIMIZATION ANALYSIS, ALGORITHMS, AND ENGINEERING APPLICATIONS
第四本书针对一类特殊的凸优化——锥优化,对锥规划以及多项式时间复杂度的内敛算法都有比较好的整体分析和应用。
一般查阅这四本书比较多,这四本书并不是互相独立的,可以重点看第一本、第二本还有第三本书。
二、数值优化的定义与组成
数值优化是机器人技术中一种重要的算法,它通过数学模型和算法来找到使机器人系统性能最优的参数值。这种优化通常涉及最小化目标函数,该函数反映了机器人性能的某些度量,如能耗、轨迹精度、响应时间等。优化问题可以非常复杂,涉及多个变量和约束条件。
2.1 数值优化组成部分
数学优化一般由几个部分组成:
min
f
(
x
)
s
.
t
.
g
(
x
)
≤
0
h
(
x
)
=
0
\begin{matrix} \min f ( x ) \\ s . t . \quad g ( x ) \leq 0 \\ \quad \quad h ( x ) = 0 \end{matrix}
minf(x)s.t.g(x)≤0h(x)=0
(1) 优化变量
x
=
(
x
1
,
⋯
,
x
n
)
∈
R
n
x = ( x _ { 1 } , \cdots , x _ { n } ) \in R ^ { n }
x=(x1,⋯,xn)∈Rn
x
x
x 是
n
n
n 维的向量,称为优化变量(Optimization Variables
)
(2) 目标函数
f
:
R
n
→
R
f : R ^ { n } \rightarrow R
f:Rn→R 评价
x
x
x 是否更优,是否更好,要看目标函数(objective function
)
f
f
f 为
x
x
x 赋予了值,值是越小越好的。
(3) 不等式约束
g
:
R
n
→
R
m
g
g : R ^ { n } \rightarrow R ^ { m _ { g } }
g:Rn→Rmg比如
g
(
x
)
=
(
x
1
−
1
)
2
+
x
2
2
−
1
≤
0
g ( x ) = ( x_1 - 1 ) ^ { 2 } + x ^ { 2 } _ { 2 } - 1 \leq 0
g(x)=(x1−1)2+x22−1≤0 描述的就是以
(
1
,
0
)
(1,0)
(1,0) 为圆心,
1
1
1 为半径的圆形区域,就要在圆形里面找到
f
(
x
)
f(x)
f(x) 的最小值,所以
x
x
x 除了圆形区就是不感兴趣的区域,就不要了。
(4) 等式约束
h
:
R
n
→
R
m
h
h : R ^ { n } \rightarrow R ^ { m _ { h } }
h:Rn→Rmh 比如在三维空间的曲面上,所寻找的
x
x
x 要在曲面上滑动,它不应该在曲面之外,所以曲面可以用等式
h
h
h 表述,如
x
1
2
+
x
2
2
+
x
3
2
=
0
x _ { 1 } ^ { 2 } + x _ { 2 } ^ { 2 } + x _ { 3 } ^ { 2 } = 0
x12+x22+x32=0 表示的是球面的一部分,它其实是整个球面,
h
h
h 也可以是多个等式。比如
{
x
1
2
+
x
2
2
+
x
3
2
=
0
−
x
1
+
x
2
+
x
3
=
0
\left\{ \begin{array}{l} x_{1}^{2}+x_{2}^{2}+x_{3}^{2}=0\\ -x_1+x_2+x_3=0\\ \end{array} \right.
{x12+x22+x32=0−x1+x2+x3=0 表示的是曲面和平面相交的曲线。
定义最优值
x
∗
x^*
x∗,要满足所有约束,在感兴趣的区域内,所有满足约束的
x
x
x ,称作 可行解(Feasible Solution
)。
最优解是可行解中具有最低目标函数 f ( x ) f(x) f(x) 值的解的集合,这里有几层意思,就是说最优解 x x x 一定属于该解集。因为最优解可能不止一个,也可能没有,也可能有多个的情况。
2.2 数值优化前提假设
另一方面需要对所考虑的等式和不等式约束要有假设,在机器人数值优化中,假设目标函数一定满足以下两点:
- 假设1:目标函数具有下界,即
f
(
x
)
≥
α
f(x)\ge\alpha
f(x)≥α 。
目标函数的最小值可以很小但必须有界 ,因此,目标函数不能存在负无穷的值,若存在负无穷的值会使得最小值无法在计算机中用浮点数表示。 - 假设2:目标函数具有有界子级集,即当目标函数
f
(
x
)
≤
β
f(x)\le\beta
f(x)≤β 时,
x
x
x 有界,保证最优解在
x
x
x 的有限范围内取到。
目标函数不能存在当 x x x 趋于无穷时函数趋于某个值即下水平集无界,这同样会导致最小值无法用浮点数表示。
如下图中的
f
(
x
)
f ( x )
f(x) 分别不满足假设
1
1
1、假设
2
2
2:
可以看看刚刚所说的一系列的
f
(
x
)
、
g
(
x
)
、
h
(
x
)
f(x)、g(x)、 h(x)
f(x)、g(x)、h(x) 都是连续的,对应的称为连续优化,很多优化问题其实也可以表示一系列的离散变量的决策问题,不处理离散性的问题,只处理连续优化,所以
f
(
x
)
、
g
(
x
)
f(x)、g(x)
f(x)、g(x) 至少都得是连续的,可以非光滑,但必须得是连续的。
在本系列的所有情况中,都会假设无约束优化里的目标函数必须得满足这两个假设条件,存在下界且具有有界子级集。
对于有约束优化的情况,即
g
(
x
)
g(x)
g(x) 和
h
(
x
)
h(x)
h(x) 存在时,定义
f
~
(
x
)
=
{
f
(
x
)
满足约束时
+
∞
不满足约束时
\tilde{f}\left( x \right) =\left\{ \begin{array}{l} f\left( x \right) \ \text{满足约束时}\\ +\infty \ \ \ \text{不满足约束时}\\ \end{array} \right.
f~(x)={f(x) 满足约束时+∞ 不满足约束时 则在有约束优化或无约束优化时,
f
~
(
x
)
\tilde{f}(x)
f~(x) 作为目标函数是有下界且具有有界子级集,这是最基本的假设条件。
三、数值优化在机器人中的应用
在机器人领域中,数据优化有哪些应用呢?
3.1 平滑与映射:非线性最小二乘法
很多时候 SLAM
同步定位与地图构建里面的很多问题。
要恢复出整个位置的轨迹,都可以写为非线性函数
min
∑
f
i
2
(
x
)
\min \sum f _ { i } ^ { 2 } ( x )
min∑fi2(x)其中,约束条件为
l
x
≤
x
≤
u
x
lx\le x\le ux
lx≤x≤ux
目标函数为关于优化变量的平方和最小化残差,满足一系列边界约束。每个 x x x 元素都有上界和下界,因为 f ( x ) f(x) f(x) 是非线性函数,所以称为非线性最小二乘法。
3.2 轨迹规划: 非线性问题
在轨迹规划或者运动规划里通常会解非线性问题。
只要 f ( x ) , g ( x ) , h ( x ) f(x), g(x), h(x) f(x),g(x),h(x) 都是非性的,它就是非线性问题,需要把火箭的一系列的状态 x x x 随着时间变化的轨迹优化出来,让轨迹尽可能光滑,让推力不要太高,不要太低,并且满足安全约束,它也可以变成非线性规划的问题,这是比较通用的。
3.3 点云配置:半定规划
在点云配置领域,要找最优的
R
R
R 和
T
T
T ,其中,
R
R
R 为旋转(rotation
) ,
T
T
T 为平移( translating
),使得两帧点云中间的距离度量尽可能的最小,这样就把点云配准。
因为
R
R
R 、
T
T
T 有特殊的性质,可以通过牺牲精度来把对应的问题变成半定规划(SDP
),这是一类锥优化, SDP
问题求解出来的最优解跟只用优化
R
R
R 、
T
T
T 的全局最优解之间的间隙很小。这一类问题称为 半定规划(Semidefinite Programming,SDP
)。
凸问题是非凸优化的松弛,所以很多非凸优化问题,可以把凸问题或者凸松弛描述出来,就可以用凸优化的方法求解。
3.4 时间最优路径参数化:二阶锥规划
在多关节机器人、无人车、无人机、无人船里都有时间最优路径参数化的问题。
给定连续可导的路径 A A A 到 B B B ,一定要严格按照路径走,路径可以是三维,可以是二维,关节里的多维,因为电机驱动还有马达发动机都有力矩特性,所以要在满足机器人驱动限制的前提下,使其最快地从 A A A 到 B B B 沿这条路径完成路径跟踪。
有了轨迹其实就有了形状,如何分配时间?怎样得到具体什么时候该到哪个位置?
A
A
A 到
B
B
B 的时间尽可能短,称为 时间最优路径参数化(TOPP
) 问题。 TOPP
问题就是给弧度重新以真正的时间做参数化,所以叫参数化。这样的问题可以变成一类 二阶锥规划(SOCP
) 问题, SOCP
也是凸问题,约束结构很特殊,也是一类锥规划问题。
所以在机器人领域里,不管是非线性的非凸的优化还是凸优化,还是有一定结构的凸优化,研究领域还是挺广的,所以针对相应的问题怎样有效求解感兴趣的全局最优解,是很关键的问题。
四、数值优化基础
在机器人学领域,数值优化方法的应用至关重要,它们是解决设计、控制、路径规划等问题的关键工具。本系列博客将深入探讨数值优化在机器人学中的应用,并掌握解决实际问题的有效方法。要掌握这一领域的数值优化,需要以下基础知识:
4.1 数学基础
- 线性代数:矩阵运算、向量空间、特征值和特征向量等。
- 微积分:偏导数、梯度、雅可比矩阵、海森矩阵等。
- 最优化理论:凸分析、凸优化、非凸优化、最优性条件等。
4.2 数值分析
- 数值逼近:插值、拟合、数值微分和积分等。
- 数值线性代数:线性方程组的求解、矩阵分解、迭代方法等。
- 数值优化算法:梯度下降法、牛顿法、拟牛顿法、共轭梯度法等。
4.3 机器人学基础
- 机器人运动学:位置、速度、加速度的表示,运动方程的建立。
- 机器人动力学:质量矩阵、惯性矩阵、动力学方程等。
- 控制理论:
PID
控制、反馈控制、最优控制等。 - 机器人学具体应用:路径规划、姿态控制、力矩分配等。
4.4 编程技能
- 掌握至少一种编程语言,如
Python
、C++
或MATLAB
,用于实现和测试优化算法。 - 熟悉数据结构和算法,能够高效处理数据。
4.5 软件工具
- 熟悉优化软件包,如
IPOPT
、MATLAB
的Optimization
Toolbox
等。 - 了解仿真环境,如
ROS
(Robot Operating System
)、Gazebo
等。
首先,我们将研究非凸优化问题,其中涉及到的凸非凸优化其实也要研究凸性质,因为很多算法都依赖于局部凸性质的假设,特别是那些在局部区域可以近似为凸函数的问题,所以凸性质是不可避免的部分。这类问题在机器人学中普遍存在,例如在路径规划和控制策略中。研究非凸优化也可以通过利用凸性质,来设计出更快速、更稳定的算法。
后续博客会讲对非凸优化的一般无约束优化的算法比如带线性搜索的最速梯度下降法、修正阻尼牛顿法等。
五、无约束优化
在机器人数值优化中,无约束优化是指寻找一个函数的极值点,而不受任何额外条件的限制。这类问题在机器人学中非常常见,例如在路径规划、姿态控制、参数调整等方面。无约束优化包含以下几个主要内容:
5.1 优化问题的数学表述
- 目标函数:通常表示为机器人系统的某种性能指标,如路径长度、能量消耗、执行时间等。
- 决策变量:需要优化的参数,如机器人的位置、速度、加速度或控制参数。
5.2 优化算法
- 梯度下降法:通过目标函数的梯度来更新决策变量,逐步逼近最优解。
- 牛顿法和拟牛顿法:利用目标函数的一阶和二阶导数信息,加速收敛速度。
- 共轭梯度法:结合了梯度下降法和牛顿法的优点,适用于大规模问题。
- 启发式算法:如模拟退火、遗传算法、蚁群算法等,适用于解决复杂或非凸问题。
5.3 最优性条件
- 一阶必要条件:目标函数的梯度为零。
- 二阶充分条件:目标函数的海森矩阵正定。
本系列博客会介绍一类工程上比较有效的无约束优化的算法,包括准牛顿方法、 BFGS
更新、线性共轭梯度下降等。这些方法在工程实践中非常有效,尤其是在处理非光滑问题和高维数据时。通过实际案例,如平滑导航路径生成,来展示无约束优化算法的应用。
上述都是对无约束优化问题的算法。
六、约束优化
在机器人数值优化中,约束优化是指寻找一个函数的极值点,同时满足一定的约束条件。这类问题在机器人学中非常普遍,例如在路径规划、姿态控制、资源分配等方面。约束优化包含以下几个主要内容:
6.1 优化问题的数学表述
- 目标函数:表示为机器人系统的某种性能指标,如路径长度、能量消耗、执行时间等。
- 决策变量:需要优化的参数,如机器人的位置、速度、加速度或控制参数。
- 约束条件:包括等式约束和不等式约束,如机器人运动的动力学约束、物理限制、工作空间限制等。
6.2 约束优化算法
- 拉格朗日乘子法:通过引入拉格朗日乘子将约束优化问题转化为无约束优化问题。
- 序列二次规划法(
SQP
):结合了二次规划和一个线搜索过程,适用于解决非线性约束问题。 - 内点法:通过迭代方法在可行域内部寻找最优解,适用于大规模问题。
- 启发式算法:如模拟退火、遗传算法、蚁群算法等,适用于解决复杂或非凸问题。
6.3 最优性条件
- KKT(
Karush-Kuhn-Tucker
)条件:是约束优化问题的一阶必要条件,包括目标函数的梯度、约束条件的拉格朗日乘子和互补松弛条件。
通过低维线性规划、严格凸二次规划等方法,我们可以高效地解决具有约束的优化问题。此外,还将介绍增广拉格朗日法,这是一种简洁高效的算法,尤其适用于控制分配问题和碰撞距离计算等实际应用。
对于一般的约束优化,也是对于非凸问题来讲的,我们将讨论不同类型的约束优化问题及其复杂性,为了让大家明白优化算法并不是一定要用通用的算法,需要逐个挑选。对于通用的工程问题,什么样的问题适合什么样的求解,所以并不是所有的问题都需要用数值算法去迭代,还有低维度的精确算法,他们在导航规划问题里面都比较有效,也能够很快的计算出精确解,而不是数值近似解。
通过一系列无约束优化的方法解约束优化的算法,会讲约束优化的一系列的最优性条件,增广拉格朗日算法或者 PHR
,增广拉格朗日算法的特点就是简洁有效,它的算法效率会比一阶算法或者不利用高阶信息的算法收敛要快,并且计算效率会比 SQP
、内点法要更为轻量级,而且收敛性也可以做到很快,尤其适用于控制分配问题、碰撞距离计算和非线性模型预测控制等实际应用。
七、对称锥规划
7.1 对称锥定义
对称锥规划( Symmetric
Cone
Programming
, SCP
)是一类特殊的凸优化问题,它能够表达某些非凸函数,并转化为可以获得全局最优解的锥规划问题。对称锥规划是线性规划、二次规划和半定规划等优化问题的推广。
我们将讨论对称锥与欧几里得约旦代数的关系,以及如何使用增广拉格朗日法求解大规模锥规划问题,并以时间最优路径参数化( TOPP
) 问题。
7.2 对称锥应用
对称锥规划在机器人学中的应用包括但不限于:
- 控制理论:用于设计最优控制器,特别是在处理多变量系统和不确定性时。
- 机器学习:在支持向量机(
SVM
)和其它统计学习模型中,对称锥规划可以帮助解决大规模的分类和回归问题。 - 传感器网络:在优化传感器布局和数据处理时,对称锥规划可以提供有效的解决方案。
7.3 对称锥问题解决方法
对称锥规划问题通常通过内点法( Interior
Point
Method
, IPM
)来解决,这是一种高效的数值方法,适用于解决大规模的凸优化问题。内点法通过迭代地在可行域内部移动,逐步逼近最优解,避免了在边界上的复杂计算。
对称锥规划是机器人学中数值优化的一种高级形式,它提供了一种强大的工具来处理复杂的优化问题。
八、提出和解决问题的技巧
最后,我们将讨论优化算法中的工程技巧,如平滑技术、自由度和伴随法的权衡,以及线性求解器的选择。这些技巧对于提高算法效率和稳定性至关重要。
8.1 平滑技术
在数值优化中存在一种不可避免的问题——非光滑,就是不可能有效的求解。对于这种问题可以牺牲一系列的精度,把对应的非光滑问题磨光,获得很快的求解方案。
8.2 自由度和伴随法
很多问题并不是自由度越高越好的,工程里面关注的是质量和效率的权衡,所以怎样有效地把实际的约束个数和自由度解耦,工程里有比较实用的方法叫 伴随法。
8.3 线性求解器的类别和功能
在数值优化中都会涉及到求解线性方程组, A x = b Ax=b Ax=b 并不是简单的问题。
比如 A A A 是对称时, A A A 是镇定时, A A A 是非满秩时,怎样稳定地解出对应的 x x x ?
或者并不需要精确求解,需要迭代近似求解对应的 x x x ,此时怎样能够更快、更稳定,怎样挑选对应的线性求解器也是很重要的部分,对于优化算法来说是关乎性能最重要的一方面。
8.4 项目实战:实现密集障碍环境中的安全导航
在自主移动机器人的研究领域,安全导航是一个极具挑战性的任务,尤其是在障碍物密集的环境中。为了实现这一功能,我们需要运用数值优化方法来处理非光滑优化问题、低维度优化以及锥规划等问题。在本系列博客中,我们将探讨如何将这些优化方法应用于自主移动机器人的安全导航。通过实际案例,我们将分析影响算法效率的各个方面,以及数值稳定性在整个工作流程中的重要性。
九、总结
本系列博客《机器人数值优化》专栏的核心是通过理论与实践相结合,帮助读者快速掌握机器人领域的数值优化技术。无论是无约束优化、约束优化、凸优化还是非凸优化,每一个部分都有其独特的应用和解决方法。同时,所提及的数值优化算法和工具在机器人学中的广泛应用,如同步定位与地图构建( SLAM
)、轨迹规划、点云配置等,展示了这些技术的实际价值和重要性。
通过该系列的学习,读者不仅可以掌握基本的数值优化理论,还可以应用这些优化技术来解决实际机器人中的各种复杂问题。这将为机器人的智能设计、路径规划和控制系统提供强大的理论支持,推动机器人技术的发展。
希望本系列专栏能够帮助大家在机器人领域的数值优化之路上迈出坚实的一步!
参考资料
1、机器人中的数值优化
2、机器人中的数值优化(一)—— 数学优化、凸集合与凸函数
后记:
🌟 感谢您耐心阅读这篇关于 机器人数值优化从理论到实战全方位指南 的技术博客。 📚
🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢
🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀
🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡
🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀