【论文】基于DMPC的路径规划

DMPC

论文:《Trajectory Generation for Multiagent Point-To-Point

Transitions via Distributed Model Predictive Control》

DMPC

摘要

  • 介绍了 一种基于分布式模型预测控制(DMPC)的多智能体offline轨迹生成算法。
  • 通过预测未来状态并与附近的agents共享此消息,agent 能够在朝着目标前进的同时检测并进行避障。
  • 提出的算法以分布式(distributed)方式实现,与基于顺序凸规划(sequential convex programming)SCP的优化方法相比计算时间减少了85%,同时对最优性的影响最小

介绍

  • Multiagent point-to-point transition:多智能体点对点的转换有两个变量

    • the labelled agent problem:每一个agent都有一个固定的不能与另外一个agent交换的固定的最终位置。(本文着重讨论的)
    • the unlabelled agent problem:算法可以自由的将goals分配给agents,以减轻转换问题的复杂度。
  • the labelled agent problem的解决方法:

    1. 将他看做一个优化问题,比如混合整数线性规划MILP(Mixed Integer Linear Programming),使用二进制变量(0和1)构建碰撞约束。有一个致命的缺点就是计算复杂度太大,导致不适用于多agents。
    2. 顺序凸规划SCP比MILP的计算时间少,而且SCP是用于计算四旋翼集群的最佳能量轨迹;但是缺点也很明显,就是算法不能随着agent的数量增加而扩展,但是好像最近提出了一种decoupled版本的SCP,但是随着agent的增加,成功率也下降了。
    3. 分布式优化方法与集中式方法相比减少了计算时间。ORCA利用速度障碍(velocity obstacles)来雀儿包完整性agent和非完整性agent的无碰撞轨迹。因为他假设在一段时间内具有恒定的速度,所以该方法比较保守(conservative)
    4. 关于本文介绍的DMPC。

问题陈述

the agents

\[p_i[k+1]=p_i[k]+hv_i[k]+\frac{h^2}{2}a_i[k] \]

\[v_i[k+1]=v_i[k]+ha_i[k] \]

第i个agent在k时刻的position、velocity、acceleration。其中\(a_i[k]\)是输入,h是离散化步骤h(discretization step h)。

Constraints

首先约束驱动约束:

  • 加速度有一个最大和最小的约束
  • 因为是在室内(indoor)进行试验,位置会有一个范围约束

Collision Avoidance

agent i和agent j之间的碰撞约束为:

\[\Vert\Theta^{-1}(p_i[k]-p_j[k]) \Vert_n \geq r_{min} \]

n一般取2,rmin就是agent之间的最小距离,\(\Theta\)是缩放矩阵(scaling matrix),定义为\(\Theta=diag(a,b,c)\),a=b=1,c>1,这样的话就会要求竖直轴(z轴)方向上的最小距离为rz,min=crmin

DMPC

在问题陈述部分提出的问题,可以看做一个优化问题,在每个时间步进解决一个问题,该问题基于描述agent动力学模型在给定的预测范围内找到最佳输入序列该序列的第一个输入应用于真实系统并且测量结果状态(resulting state),这是下一个优化问题的起点(starting point)。但是这篇文章在输入之后不测量agents的状态,因为还没有布置实际的agent,而是将输入直接应用于模型用来计算生成下一步的轨迹。重复上一步直到生成全部的轨迹。

所以我们以分布式方式应用,就是让每个agent执行上述的迭代的优化问题去生成轨迹,并且和临近的agent分享信息。

Synchronous Algorithm

计算新的输入序列步骤:

  • 使用在k~i~-1步计算的临近的agent的最新预测状态检查未来是否会发生碰撞。

  • 构建包括状态(state)、动力(actuation)以及碰撞(collision)在内的约束优化问题。

  • 在获得下一个最优序列之后,将序列的第一个元素应用于模型,agent向前移动一步。

The Agent Prediction Model

数学公式太难打了,大致的思想就是自己定义了一个算数运算符\([k\vert k_t]\),然后代到上面(1)(2)式子中去,formula

后面的东西就看不懂了。

Objective Function

目标函数主要有三个组成部分:

  • 轨迹误差(trajectory error)

    这一部分主要是驱使agent到达goal,定义误差和为$$e_i=\sum^K_{k=K-j}\Vert p_i[k\vert k_t]-p_{d,i}\Vert_2$$

    其中j为最后的time step,\(p_{d,i}\)是desired final position。

    j越大,会导致agent的行为比较激进,agent会更快的朝着目标移动,但是也可能会导致目标位置超调(overshoot)

    我在这里盲猜一手激进的j选取会导致collision constraint很难满足。

  • 控制作用(control effort)

  • 输入变化(input variation)

    用于最小化加速度的变化,从而生成平滑的输入轨迹formula another

    其中u是输入,只能写到这了,后面是能力有限。

  • 物理限制(Physical Limits)

    就是前面驱动约束:提到的constraint

  • 凸优化问题,无碰撞(Convex Optimization Problem)

    把上面所有目标函数和约束结合起来可以看成一个3K决策变量和12K个不等式约束的二次规划问题。凸优化问题


On-demand Collision Avoidance with Soft Constraints

posted @ 2023-06-03 23:19  cccopy  阅读(181)  评论(0编辑  收藏  举报