Optimization-Based Trajectory Planning(基于优化的轨迹规划)是一种常用的方法,用于生成自动化系统(如自动驾驶车辆和机器人)的最优运动路径。该方法将轨迹规划问题描述为一个最优控制问题(OCP),通过优化方法来找到最优的运动轨迹。具体流程包括问题建模、约束建模、优化求解和轨迹生成。 下面将详细介绍Optimization-Based Trajectory Planning的流程,并提供一些实例以帮助理解。 1. 问题建模 首先,需要将轨迹规划问题建模为一个最优控制问题。这包括定义系统状态变量、控制变量和目标函数,以及约束条件。
2. 约束建模 在问题建模的基础上,需要将约束条件具体化,以便进行数值优化求解。约束条件可以分为硬约束和软约束。
3. 优化求解 在约束建模完成后,可以将轨迹规划问题转化为一个优化问题。常见的优化方法包括非线性规划(NLP)和数值优化算法。
优化求解的目标是找到一个最优解,使得目标函数达到最小或最大值,同时满足约束条件。 4. 轨迹生成 通过优化求解得到的最优解,可以生成最优的运动轨迹。根据系统模型和控制变量的设定,可以计算出每个时间点上的状态和控制量,从而得到连续的运动轨迹。
示例 下面是一些Optimization-Based Trajectory Planning的示例:
总之,Optimization-Based Trajectory Planning是一种常用的方法,可以通过建模、约束建模、优化求解和轨迹生成来实现自动化系统的最优运动轨迹规划。该方法可以适用于各种不同的应用场景,如自动驾驶车辆、机器人路径规划等。 为什么需要基于优化生成平滑轨迹: ? 在轨迹规划中的平滑性不是一个几何概念,许多高质量的轨迹具有非平滑的形状。一个平滑的轨迹至少应该:
之所以要生成平滑轨迹是因为: 移动机器人的能源是有限的,如何通过平滑轨迹来提高能源效率是很重要的;比如机器人在转弯时不应停止,这样可以极大节省能源消耗提高能力效率。 移动机器人执行器是受到限制的,速度/高阶动力学是不能立即改变的,所以在路径生成时候需要考虑到,生成平滑轨迹适配移动机器人执行器的需求。 在一些移动任务中,移动机器人需要在经过指定的轨迹点之行特定任务需求,所以轨迹生成时候需要经过这些轨迹点生成平滑轨迹,例如:无人机指定点电缆破损巡检。
? 边界条件:起始点,目标点的位置(朝向)
? 中间条件:路径点的位置(朝向)
? 路径点可以通过路径规划(A、RRT等)找到
? 在之前的三堂课中介绍过 ? 平滑性标准 ? 通常转化为最小化“输入”的变化率
是一种控制系统设计中的概念,它旨在简化非线性系统的控制问题。微分平坦性是一个概念,指在确定的条件下,可以用有限个变量及其导数来描述系统的所有状态变量以及控制变量,从而简化复杂的微分系统。利用微分平坦性,可以消除系统的微分约束条件,简化轨迹生成等过程。这种平坦性使得系统的非线性动态可以通过代数方程来描述,从而简化了控制器的设计和分析。可以通过操纵平坦输出来实现对系统的控制。 一个简单的例子是飞行器动力学系统。如果该系统是微分平坦的,那么通过适当的控制输入,可以使得飞行器的状态(例如位置、速度、姿态等)直接映射到期望的轨迹,而无需解决复杂的微分方程。 差分平坦度(Differential Flatness) 是一种在优化式轨迹规划中常用的技术,它利用系统的差分平坦输出来简化轨迹生成问题。一个系统在差分平坦度意义上是平坦的,意味着系统的状态和控制输入可以被一组平坦输出表达。这些平坦输出是可以通过积分得到的,从而使得轨迹规划问题的复杂性降低到一维问题。
微分平坦性可以消除微分系统中的微分约束条件。
差分平坦度的主要步骤:
2.状态变量的表示:
利用系统的平坦输出,将系统的状态表示为与这些平坦输出相关的变量。这可以通过坐标变换来实现。
3.轨迹参数化:
将轨迹参数化为一组未知参数。这些参数将在优化问题中被调整,以生成满足动力学和约束条件的轨迹。
4.目标函数的定义:
定义一个目标函数,该函数包括最小化轨迹与期望轨迹的差异,同时满足系统动力学方程和约束条件。这可能涉及到轨迹的平滑性、最小化能量消耗等方面的考虑。
5.约束的添加:
添加任何必要的约束,如初始和终端状态的约束、动力学约束等。这确保了生成的轨迹在实际系统中是可行的。
6.优化问题的求解:
将上述目标函数和约束构建为一个优化问题,然后使用数值优化方法求解该问题。常见的优化方法包括线性规划、非线性规划或拓扑优化方法。
轨迹执行:
将优化求解得到的参数值代入轨迹参数化的公式中,得到最优轨迹。这个轨迹可以被用作实际系统的控制输入。
示例:二次系统的差分平坦度轨迹规划
考虑一个简单的连续时间二次系统:
其中 (x) 是系统的位置, (u) 是控制输入。
其中, 是时间。
这个简单的例子展示了如何使用差分平坦度方法对一个系统进行轨迹规划。在实际中,系统的动力学可能更为复杂,但通过利用差分平坦度,可以将轨迹规划问题变得更易处理。这种方法常见于机器人、飞行器等控制系统的轨迹规划中。
是一种用于轨迹规划的优化方法。它旨在生成具有最小挠曲(snap)的轨迹,以实现飞行器或机器人的平滑运动。在此答案中,我将详细介绍Minimum Snap优化的流程,并提供一个例子来帮助您更好地理解。 Minimum Snap优化通常涉及光滑多段轨迹的生成。以下是Minimum Snap优化的详细流程:
这是Minimum Snap优化的一个简单例子,以飞行器的路径规划为例: 假设我们希望将无人机从起始位置飞到目标位置,并要求无人机在飞行过程中保持平滑的运动。
通过以上流程,我们可以生成满足约束条件的平滑轨迹,使无人机从起始位置飞行到目标位置。 希望这个例子能够帮助您理解Minimum Snap优化的流程。通过选择合适的多项式表示和设计适当的目标函数和约束条件,可以在路径规划和轨迹生成中实现更加平滑和高效的运动。
多旋翼飞行器的动力学建模经历了几次改进,改进点如下:
不考虑阻力的动力学模型精度较低。用欧拉角或投影定义的偏航存在奇异性。微分平坦的多旋翼飞行器动力学模型应当考虑阻力但减少奇异性。
多旋翼飞行器状态
位置、速度、姿态、体轴角速率
多旋翼飞行器控制输入(映射后)
总推力、扭矩
多旋翼飞行器非线性动力学
位置、偏航角
其中:
平坦化转化
上面的平坦转化是如何完成的。
显然,我们知道
飞行器的机体坐标系的X轴和Y轴进行了牛顿方程的点积:
得到的结果是
从几何角度来看,我们有
因为推力和机体Z轴共享相同的方向
对牛顿方程在机体坐标系的Z轴上进行点积:
得到
现在我们有偏航航向和机体Z轴都是已知的,偏航旋转四元数是
倾斜旋转四元数是
倾斜旋转没有惯性坐标系Z轴的分量,因为它是使用霍普夫纤维分解的。飞行器的姿态四元数因此是
展开它得到
因此,姿态旋转矩阵是唯一确定的
现在旋转是已知的
这意味着
等效地
代入倾斜旋转四元数和偏航旋转四元数给出
对机身Z轴进行微分得到
现在我们已经用平面输出的有限导数表示了体轴速率。 现在所有的状态和输入都已知,除了扭矩。我们通过对体轴速率进行微分来得到它的表达式,使用
因此,
最后,我们完成了平面输出变换的推导。规划高阶连续性的平面输出轨迹就足以满足动力学要求。
非线性动力学与反馈前馈控制中的微分平坦变换。
微分平坦输出
在微分平坦输出空间中的轨迹
对多旋翼飞行器控制动力学方程做了微分平坦化转变后,接下来就是通过样条曲线参数化生成行动轨迹,为什么要样条曲线参数化平面输出轨迹呢?优势如下:
? 易于确定平滑性标准
? 导数的简单闭式计算
? 在三个维度上解耦的轨迹生成
? 高数值稳定性
轨迹生成约束包括: 1.局部约束:必须要经过哪些点、到哪些点的状态如何(位置、位姿、速度、角速度) 2.全局约束:整体平滑(衡量平滑有轨迹的jerk、snap...值总和平均代价)、耗时、平均能耗... 然而不管是哪种约束都是和轨迹形态有关系,因为求解约束代价用的是离散化采样方式求解,对应的也就是轨迹上的采样点。相当于是轨迹函数可行的定义域空间。 那么就会涉及到我们如何用前面带动力学约束的采样点来如何构建轨迹,也就是说我们用什么函数来拟合轨迹。这个拟合函数会决定轨迹的采样点会影响到代价函数的求值,所以这部分我们需要先介绍下我们选取什么函数来拟合轨迹。 平滑的一维轨迹 5阶多项式轨迹:
? 边界条件 没有中间条件
位置 | 速度 | 加速度 | |
---|---|---|---|
t=0 | a | 0 | 0 |
t=T | b | 0 | 0 |
求解: =
平滑的多段一维轨迹
? 每个段都是一个多项式。
? 不需要固定阶数,但保持相同的阶数可以使问题更简单。
? 每个段的时间持续必须是已知的。
位置 | 速度 | 加速度 | |
---|---|---|---|
t=0 | a | v0 | 0 |
t=T | b | vT | 0 |
求解:
? 边界条件:起始点,目标位置(方向) ? 中间条件:途中位置(方向) ? 途中位置可以通过路径规划(A、RRT等)找到,在前面的三文章中介绍过 ? 平滑度标准,最小化“输入”变化率
约束条件:
? 导数约束:
? 连续性约束:
贝塞尔曲线通过控制点的选取来改变曲线的形 状,具有轨迹曲率连续可导、易于跟踪、满足移动机器人动力学约束且仅需少量控制点就可生成轨迹等优点 。 根据控制点的个数,贝塞尔曲线被分为一阶贝塞尔曲线(0个控制点)、二阶贝塞尔曲线(1个控制点)、三阶贝塞尔曲线(2个控制点)等等。 贝塞尔曲线特点:
至少需要三阶贝赛尔曲线(四个控制点)才能表示生成曲率连续的曲线.通常定义n+1个控制点组成n阶贝塞尔曲线,其表达式如下 :
式中, 与 t 分别是控制点的坐标值与参数, 为Bernstein多项式,其表达式如式:
式中, 为二次项系数。 3次贝塞尔曲线的参数方程表达式可以表述为式 :
式中, ; 和 分别代表控制点的横纵坐标。
曲线定义:起始点、终止点(也称锚点)、控制点
数据点: 指一条路径的起始点和终止点。
控制点:控制点决定了一条路径的弯曲轨迹
在平面输出空间中显式地最小化某些导数 ? 最小Jerk:最小化角速度,适用于视觉跟踪 ? 最小Snap:最小化差分推力,节省能量
导数 | 平移 | 旋转 | 推力 |
---|---|---|---|
0 | 位置 | ||
1 | 速度 | ||
2 | 加速度 | 旋转 | |
3 | 加加速度 | 角速度 | 推力 |
4 | 捏角 | 角加速度 | 差分推力 |
如何确定轨迹的阶数? ? 在某个阶数上保证平滑性。? 在某个阶数上保证连续性。? 在某个阶数上最小化控制输入。 平滑性意味着其导数是连续的。为确保单段轨迹的平滑性的最小次数多项式:
最小 jerk:N=2 * 3(jerk) - 1=5
最小 snap:N=2 * 4(snap) - 1=7
为确保 k 段轨迹的平滑性的最小次数多项式:
最小 jerk: 约束数量:3 + 3 + (k-1)=k + 5
未知数数量:(N+1) * k ( + 1) ?=+ 5=5/k
Minimum Snap Trajectory Generation算法旨在最小化轨迹的“snap”,即轨迹的第四阶导数,以确保在给定的约束条件下生成最平滑的轨迹。 成本函数
机器人等系统的轨迹,以最小化由加速度、角加速度和其相应的高阶导数("snap")所定义的多项式轨迹的总体运动代价。在这种情况下,一个多项式段的成本函数通常定义为最小化 snap 的总和。Snap 是轨迹的第四阶导数,表示对加速度的变化率。成本函数的形式可能是对 snap 的积分或 snap 的平方和。在最小 snap 的情况下,典型的成本函数形式可能如下所示:
这里, 是轨迹的位置。这个成本函数的目标是通过调整轨迹的系数,以使得轨迹的 snap 尽可能小。 对于多段轨迹的snap代价函数推导如下: 两个段之间的连续性约束:
? 在未给定特定导数的情况下,确保轨迹段之间的连续性 有约束的二次规划(QP)表达式:
这是一个典型的凸优化约束求解表达形式,用于最小化“Minimum Snap Trajectory Generation”。
其中多项式路径求导向量表示如下: ? 直接优化多项式轨迹在数值上是不稳定的。
? 更倾向于采用一种变量变换,优化分段端点导数。
? 我们有 ,其中 是将多项式系数映射到导数的映射矩阵。 其中, 是矩阵,包含了 到 的信息。 是将多项式系数映射到导数的映射矩阵, 是多项式系数向量, 是导数向量。
引入一个permutation matrix (置换矩阵)C来将连续性约束进行引入到代价函数中。C 矩阵本身是一个只包含0和1的矩阵,它的作用就是给所有 进行一个组合,将固定的变量放在头部,将需要就行优化的变量方位尾部,并且对于连续性约束的变量,由于他们的值是相等的,因此选择其中一个来表达连续性约束。说起来有一些抽象,用数学表达就会清晰很多。
根据之前的介绍,紫色框中变量的值都是我们事先已经设置好的,浅蓝色框中的变量就是代价函数在优化时分配的最优值,也就是需要优化的变量。 将C带入代价函数,则最终得到
? 使用选择矩阵 来分离自由变量 和受约束变量 。
? 自由变量:导数未指定,仅由连续性约束强制执行。
就是对应的受约束元素,下面的图描述的就是上面 j是指代第几段曲线中的第几个点,k是几阶导数,0是指代第几段生成曲线 固定导数:固定起始点、目标状态和中间位置的导数 自由导数:中间连接点的所有导数
选择矩阵直接包括了起点和终点的各阶导数、中间点位置的固定约束信息,也隐式的包括了中间点各阶导数连续的约束条件。该选择矩阵,直接将原问题(带约束的QP问题)转化为无约束的QP问题,可直接求导求出。 其中,上式表示选择矩阵 与包含自由变量 和受约束变量 的列向量组合的矩阵相乘。 其中,上述方程中包含了选择矩阵 和映射矩阵 ,用于分离自由变量和受约束变量。 最终将带约束的QP优化问题,转换成了一个无约束的QP问题,对于上式因为它是一个有全局最小值的凸函数,可以通过闭式求解所以对其求导取极值点就是它的全局最优值:
令
并对R矩阵根据dF 和dP 的尺寸进行分块,则得到如下变换:
对于上式J是一个标量,并且Q矩阵是对称矩阵,而 ,所以R也是对称矩阵,则 对于上式我们要求的变量是 ,因此将其对 求导, 并零导数为0时取极值点的值对应的就是最优的 求解出来了 之后,只需要将它带入C 和M就能求出最终的各个多项式的系数:
因为闭式解涉及到C、M矩阵求逆,当矩阵较大时,为了加快求解速度。可以用Hierarchical approach 层级式方法:path planning + trajectory generation路径规划+轨迹生成 path planning:低维的状态空间。 trajectory generation:天然包含导数,更高维。 在path planning时候求解出可行解,作为求解的选择空间,减少求解的搜索范围,加快解收敛速度。
轨迹生成属于back-end部分,前面经过前面几篇文章介绍的方法找到了路径点。以搜索到的路径为必经点做解搜索,并且以搜索到的路径点作为生成每段轨迹的起止点。然后轨迹的生成我们使用了多项式方式拟合出一条轨迹,有可能拟合的轨迹点会碰到障碍物。这就是为什么搜索完路径点生成轨迹还能碰到障碍物的原因所在。为了解决拟合出的轨迹碰到障碍物有两大思路: 1.对拟合出的轨迹做后判断是否碰到障碍物,如果碰到在碰到点附近增加采样点,让碰撞点拟合轨迹的范围更小,提高拟合的精度 2.以一定时间段范围为采样区间,在这个时间段内机器人可行驶的距离范围内+障碍物约束,得到这个时间段可通行的范围多边形;然后假设这个范围生成的轨迹端点生成下一个时间段的距离范围+障碍物约束得到下一个时间段的可通行范围多边形,如此一直下去得到一条可行的飞行走廊;因为前面有个假设就是一段一段的生成轨迹,以这样轨迹端点作为下一个可通行范围多边形的生成边界。但是这样生成轨迹很可能是不光滑不符合动力学特性最优的,所以我们需要对多段可通行方位组成的多边形重新规划可行的轨迹。 如此可见每一段的轨迹时间间隔是如何的是非常有讲究的,对生成轨迹质量、生成轨迹的速度都是有很大影响的。
? 分段轨迹取决于分段时间分配。 ? 时间分配显著影响最终轨迹。 ? 如何获得适当的时间分配? 要获得适当的时间分配,通常有以下几种方法:
总体来说,选择适当的时间分配方法取决于具体的问题和应用场景。一些情况下简单的方法就足够了,而在复杂的环境中可能需要更高级的技术。
? 瞬时线性约束: ? 起始点、目标状态约束 ? 过渡点约束 ? 连续性约束
? 区间线性约束:
? 边界约束 ? 动态约束
o 速度约束 o 加速度约束
如果发生碰撞,就在两个航迹点的中间再选一个航迹点,然后重新优化生成轨迹,重复这样的操作,直到生成安全的轨迹。如下图:
? 初始路径假设无碰撞。当计算时候路径上碰到障碍物,可以通过添加中间路径点重新生成这段的轨迹。完成的我们可以通过迭代将轨迹逼近到路径。
先生成一条轨迹,检查极值,若极值超出bounding box,则施加一个bounding box往下压。 缺点:迭代求解非常耗时,假如是一个没有可行解的问题,可能要迭代很多次才能确定无解。
在离散时间点添加大量约束。 ? 总是生成过于保守的轨迹。 ? 太多的约束,计算负担很重。
步骤 1. 检测障碍物 步骤 2. 搜索飞行走廊 步骤 3. 扩展飞行走廊 步骤 4. 生成完全位于飞行走廊内的动态可行轨迹
? 在单一片段中看起来可能不够智能。 ? 在基于走廊的轨迹生成中效果良好。 ? 走廊中的重叠区域提供了大的自动调整空间。 构建出可安全飞行的走廊,求解轨迹的方法和上面的一样。飞行走廊改变的是采样空间其实也就是对定义域层面做了优化来达到轨迹求解优化,在求解方程上没做什么变化。
文章开始从为什要轨迹优化这一问题视角切入,介绍了轨迹优化是什么、轨迹优化的求解流程和包括哪些模块。轨迹优化这个问题就是如何基于采样路径点来生成一条符合约束的轨迹,约束一般包括移动机器人动力学约束、路径可通行不能碰到障碍物、飞行轨迹光滑....所以可以看到轨迹生成其实是一个约束求解问题,代价函数包括: 1.局部约束:必须要经过哪些点、到哪些点的状态如何(位置、位姿、速度、角速度) 2.全局约束:整体平滑(衡量平滑有轨迹的jerk、snap...值总和平均代价)、耗时、平均能耗... 为了基于采样路径生成可行的轨迹空间,我们需要基于采样路径点做轨迹拟合(可以用多项式拟合、贝赛尔曲线拟合...),在文章分两个章节介绍了如何构建代价函数、常用的轨迹拟合函数。现在就存在两个方程代价函数、拟合曲线,如何把轨迹拟合函数融合到代价函数得到一个统一的求解方程呢,文章花了一个章节来介绍。 上面其实都是在对问题建立求解的数学模型,有了数学模型接下来要讨论的就是如何求解问题呢。文章在“优化求解”部分对如何把这个非凸问题转成凸问题做了详细介绍:包括推导、求解技巧。 求解完理论应该就可以生成移动轨迹了,然而实际上还是会存在很多问题,包括:求解速度、求解一些边界问题。其中很重要一个问题就是安全飞行(生成轨迹不要碰到障碍物),之所以生成轨迹可能会有碰到障碍物原因在于,轨迹生成其实是利用搜索的路径点拟合生成的,拟合过程是会带入不确定的碰到障碍物的概率进来。为了解决这个问题有两种思路,这部分在“轨迹生成”部分做了详细介绍。 了解决拟合出的轨迹碰到障碍物有两大思路: 1.对拟合出的轨迹做后判断是否碰到障碍物,如果碰到在碰到点附近增加采样点,让碰撞点拟合轨迹的范围更小,提高拟合的精度 2.以一定时间段范围为采样区间,在这个时间段内机器人可行驶的距离范围内+障碍物约束,得到这个时间段可通行的范围多边形;然后假设这个范围生成的轨迹端点生成下一个时间段的距离范围+障碍物约束得到下一个时间段的可通行范围多边形,如此一直下去得到一条可行的飞行走廊;因为前面有个假设就是一段一段的生成轨迹,以这样轨迹端点作为下一个可通行范围多边形的生成边界。但是这样生成轨迹很可能是不光滑不符合动力学特性最优的,所以我们需要对多段可通行方位组成的多边形重新规划可行的轨迹。
公司名称: 天富娱乐-天富医疗器械销售公司
手 机: 13800000000
电 话: 400-123-4567
邮 箱: admin@youweb.com
地 址: 广东省广州市天河区88号