魏天昊,浙江大学本科毕业,CMU在职科研助理,导师为刘畅流教授。研究方向是自动驾驶、人机合作和机器人安全。
论文链接:
项目链接:
1.1 安全控制算法
其实安全控制算法在我们的生活中很常见,只是大家意识不到它的存在。比如现在的汽车很多都有防碰撞紧急制动系统或者自动巡航系统,当汽车具有碰撞趋势的时候,就会自动减速。这其实就是一个安全控制算法最为简单的应用。
这就是最早的基于能量函数的安全控制算法——势能场算法(Potential Field Method),因为该方法借鉴了重力势能。计算平面上每个点的“海拔高度”的函数,被称为势能函数,后来因为方法的扩展,人们将这一类计算“高度”的方法统称为能量函数,常用ϕ 表示。
1.3 基于能量函数的安全控制算法的分类
因为能量函数的设计主要取决于具体任务,而且不同方法对于能量函数没有依赖性,我们接下来都假设他们使用同样的能量函数,主要介绍他们策略的不同。这里给大家介绍比较有代表性的四种:
PF和SM给出的控制输入都是沿着能量函数的梯度方向,而BF和SS给出的控制输入则是根据能量函数对于时间的导数来决定的。简单来说,PF和SM给出的控制输入是沿梯度方向的输入,而BF和SS给出的控制输入是使得下一时刻的速度沿梯度方向的输入,因此BF和SS能够更快速地使系统回到安全状态中来。
BF每次给出的控制输入除了由对时间的导数决定以外,还由当前的能量值决定。如果当前比较能量值比较高(比较危险),则给出的控制输入就会比较大,能量值较低时输入就比较小。SS则类似SM,仅在能量值高于某常量时给出控制输入。
2.1 需要统一算法的原因
虽然有很多基于能量函数的安全控制算法,但是他们之间的联系和区别还是不太清晰。研究者提出算法时一般只说明自己算法的有效性,很少与其他算法进行比较。但现有算法之间具有明显的相似性,我们想能不能提出一个数学框架,把现有的算法都统一起来,把他们表示为同一框架应用不同超参数后的结果?
如果我们能把现有算法统一起来,则我们可以通过调整超参数得到不同的算法,对于发现新算法具有指导意义。
2.2 统一现有的算法
为了统一现有的算法,我们先把控制输入分解,分解为沿着梯度的方向和垂直于梯度的方向,Lgϕ 即能量函数的梯度。u0 是参考输入,如果安全控制算法觉得当前系统安全,则会直接采用参考输入。我们把平行于Lgϕ 的分量us 称为安全分量,因为系统的安全性完全由这个分量决定。而垂直于Lgϕ 的分量ue称为效率分量,因为在us 不变的情况下,我们可以通过调整ue 来提升系统的效率。
这样,我们就可以把不同的控制算法表示为两个超参数α,β。
我们这里省略四种方法的超参数以及证明,有兴趣的同学可以参见论文:
https://arxiv.org/abs/1908.01883
我们在实验过程中发现,SS在大部分时候都是表现最好的,但BF在安全阈值比较高的时候表现最好。我们就想能不能结合这两种方法的优点,提出一种更好的算法?
因此,我们提出了一种新的方法Sublevel Safe Set。我们微调了SS的超参数,让SS结合了BF的超参数,仅在危险状态下给出与能量函数值相关的控制输入。这种方法结合了这两种方法的优点,并在评测平台上证明了这一点。
虽然我们将现有的算法统一了起来,但我们很难根据他们的数学形式推测出他们在具体场景下的表现。这是因为数学模型仅仅描述了他们的应对策略,很难对多变的环境进行建模。因此我们需要搭建一个虚拟环境来评测各种算法在各种平台上的表现,比如球模型、汽车模型、机械臂模型等。
而且一个评测平台对于整个领域的发展具有正面意义,计算机视觉的发展很大程度上受益于各种评测平台的发展。
我们使用python里的panda3d包搭建了仿真环境,在环境中建模了各种测试平台,并实现了上述提到的几种算法。
整个平台已经开源,并且配备了详细的文档,感兴趣的同学可以参见:
https://github.com/intelligent-control-lab/BIS
(封面来源于网络)