根据自适应巡航系统(ACC)来理解CBF(Control Barrier Function)-入门知识

本文摘要:

介绍为什么要CBF?介绍CLF和CBF相关知识,介绍如何使用CLF和CBF构建QP问题优化,通过例子ACC介绍如何设计CLF-CBF-QP 优化问题。

CLF和CBF作用的范围 源自[4]

1 前言:

最近在看safety control 的paper,感觉很有意思,这里总结一下CBF的入门知识,这个方向Prof. Koushil 和Prof. Aaron组做的非常好,而且这个方向对控制来说也相对来说比较火,值得研究。对这个方向感兴趣的可以去他们官网(https://hybrid-robotics.berkeley.edu/) 和(http://www.bipedalrobotics.com/)搜他们paper,尤其参考第6个引文。Prof Aaron把整个CBF理论到实践讲了一遍。

2 为什么要有CBF?

从应用的角度来思考,目前自动驾驶自动巡航等的火爆,把机器人安全问题提上很重要的位置。以前只靠设计稳定控制器并不能满足安全需求,比如你让车达到一定速度的时候,还要去保证和前车车距,同时还要保证方向盘不能偏离,而传统的控制器都是为了达到一个稳定态即(Equilibrium Point),但是如果这个平衡点只是相对控制器来说稳定,但不安全呢?这个时候就需要引入安全概念。

从控制器角度引入的话,据Prof Aaron的原话 "we wish to do so in a minimally invasive fashion, i.e., modify an existing controller in a minimal way so as to guarantees safety",我们得知,用最小的代价保证控制器稳定的同时保证安全性。 同时,我们需要能被证明的安全控制器。

这里给一个控制小球避障的小例子:

最右边的是Barrier Function,蓝色代表CBF激活的程度(只是可视化如此,不要和最后结论分析搞混),粉色代表safety set (源自:[7])

3 CLF和CBF的基础知识?

上面介绍了为什么需要CBF,这里从CLF开始总结一下,有些地方可能不会涉及的太细,可以去参考Prof. Khalil教授的Nonlinear systems Third Edition.

3.1 系统的Affine定义(Dynamics Control Affine System):

对于控制系统 dot{x}=F(t, x, u) ,其中 系统状态x in mathbb{R}^n, 系统输入u in mathbb{R}^m ,如果F 对于x和u 是Lipschitz 连续的,同时时间t 是piecewise 连续,而且u 在时间t下也是piecewise连续的,那么在给定的初始条件 x_0 下,轨迹 x(t) 是存在并且unique的。然后我们一般把他写成如下形式:

dot{x}=f(x)+g(x) u

其中 f: mathbb{R}^n rightarrow mathbb{R}^n,g: mathbb{R}^n rightarrow mathbb{R}^{n times m} ,x 是Lipschitz连续, 我们为了不是一般性假设,x_e equiv mathbf{0}

3.2 CLF(Control Lyapunov Function)简介:

一个控制系统要稳定,我们有多种方式来证明,而其中Lyapunov是最广泛应用的证明方式之一。而Lyapunov的来源,对于控制科学的来说应该很熟,motivation源于系统能量,可以参考Prof. Khalil的书。这里直接给出Lyapunov Function的数学定义如下:

begin{array}{c} V(x) / text { s.t. } Vleft(x_eright)=0, V(x)>0 text { for } x neq x_e / dot{V}(x)=frac{partial V}{partial x} f(x)<0 text { for } x neq x_e end{array} (1)

V(x)是我们定义的Lyapunov函数,下面的是约束条件,当满足上述两个约束,那么我们可以认为x是asymptotically stable.

一个控制系统,如何使得系统逐渐趋于Equilibrium Point?一个典型的Lyapunov function的例子,其中在某个域里面,任意一点出发都能回到Xe,那么就是系统的吸引域[1]

我们既然考虑控制系统,那么肯定会考虑输入,我们把输入u引入到Lyapunov 函数里(注意这里先不考虑带扰动的系统),我们得到如下新的Lyapunov方程。

使 V(x): mathbb{R}^n rightarrow mathbb{R} 是连续Differential 函数如果存在一个常数 c>0 使得V(x)满足如下条件,那么 V(x) 就是一个关于x 的(local)的Control Lyapunov Function.

1) Omega_c:=left{x in mathbb{R}^n: V(x) leq cright},这里V(x)是有界的bounded的

2)V(x)>0 ,对于所有的 s in mathbb{R}^n backslashleft{x_eright}, quad Vleft(x_eright)=0

3) inf_{u in U} dot{V}(x, u)<0 ,对于所有的 x in Omega_c backslashleft{x_eright},

其中 Omega_c 是吸引域(RoA),吸引域的定义如下(一句话就是任意从这个set出发的点都将回到E.p点):

forall x_0 in Omega_c, text { for } x(t) text { with } x(0)=x_0, quad exists u:[0, t] rightarrow U text { s.t. } lim _{t rightarrow infty} x(t)=x_e ,然后为了更简单表示 dot{V}(x,u) ,一般用Lie 括号描述如下:

begin{aligned} dot{V}(x, u) &=nabla V(x) cdot dot{x} / &=nabla V(x) cdot f(x)+nabla V(x) cdot g(x) u / &=boldsymbol{L}_{boldsymbol{f}} boldsymbol{V}(boldsymbol{x})+boldsymbol{L}_{boldsymbol{g}} boldsymbol{V}(boldsymbol{x}) boldsymbol{u}left(L_p q(x):=nabla q(x) cdot p(x),Lie 括号right). end{aligned}

介绍完CLF,我们知道CLF如何来,但是对于系统来说,我们需要知道到底多块才能趋于稳定,这个时候,我们需要引入Exponentially Stabilizing Control Lyapunov Function(即指数稳定CLF,ESCLF)。这里我也不写如何证明或者推导,感兴趣的依然可以从Prof. Khalil教授哪里获取。定义如下:

如果 V(x): mathbb{R}^n rightarrow mathbb{R} 是连续可微并且是正定的(P.D)也是radially unbounded的如果存在一些常数 lambda>0 使得 inf _{u in U} dot{V}(x, u)+lambda V(x) leq 0 满足那么 V(x) 就是ECSLF。而且这是一个具有上界的函数,其中上界为以lambda为衰减率的 V(x(t)) 。图像如下:

所有点都只会取红色以下非0的部分[1]

3.3 CLF+QP

上面两小节已经总结了CLF,这一节把CLF转换为QP问题,搜寻满足CLF-QP问题的最小control input. underset{substack{u: text { : cortrol input } / deltatext { : slack variable }}}{operatorname{argmin}}left(u-u_{r e f}right)^T Hleft(u-u_{r ef}right)+p delta^2/ begin{array}{cc}text { subject to: } L_f V(x)+L_g V(x) u+lambda V(x) leq delta & text { CLF Constraint } / u in U & text { Input Constraints }end{array}

注意这里 delta 是松弛变量,主要是为了防止某些特殊情况,如果设置为0那么系统就会E.S到 x_e 点,其实我认为可以这么理解,在松弛变量为0的时候,条件比较严格,控制器严格执行趋于E.p点,那么QP不一定会放开CLF从而有一个解给CBF。

3.4 CBF的基础主要来自Nagumo's invariance Principle

可以想象成CLF变了一个符号反过来,也就是上面哪个大碗倒扣过来,注意不一定是碗。类似如下图所示:

CBF Nagumo's Principle ([1])

这里的核心思想就是,当x 属于如下的集合内时,并且 dot{h}(x)geq0 ,那么h(x)就可以认为满足CBF的条件。

begin{aligned} mathcal{C} &=left{x in D subset mathbb{R}^n: h(x) geq 0right} / partial mathcal{C} &=left{x in D subset mathbb{R}^n: h(x)=0right},边界 / operatorname{Int}(mathcal{C}) &=left{x in D subset mathbb{R}^n: h(x)>0right} .内部点 end{aligned} ,还可以参考如下图:

定义红色为安全区域,蓝色为非安全区域[4]

用和CLF一样的方式来分析,那么一样可以获取如下式子:

当 B(x): mathbb{R}^n rightarrow mathbb{R} 是连续可微,然后zero-superlevel 集合是 mathcal{C} ,并且 (mathcal{C}={x mid B(x) geq 0})并且 nabla B(x) neq 0 对于所有 x in partial mathcal{C}. 如果存在一个扩展的Class mathcal{K}_{infty} 函数 alpha (注意这里,我们工程中一般使用正常数和B(x)的线性组合获取,如: gamma B(x),gamma>0 ),然后存在一个集合 mathcal{D} subset mathbb{R}^n ,使得当 mathcal{C} subset mathcal{D} 满足如下公式:

sup _{u in U}left[L_f B(x)+L_g B(x) uright]+alpha(B(x)) geq 0 ,那么对于所有 x in mathcal{D}B(x) 就是一个CBF,然后任意一个满足Lipschitz连续的控制率满足suplevel的约束的情况下,都可以趋于安全集合内(这里又叫Control Invariant)。图像如下:

可以看到和CLF的区别 [1]

3.5最后获取基于CBF+CLF的QP问题

上述四个小节,基本就推完了CLF和CBF约束的所有过程。CLF保证控制器稳定,后者保证满足某些安全要求。 但是CBF这里我没有详细阐述,参照CLF的分析方法即可,同时也可以参照引文6,里面有关于CBF所有证明和理论分析,非常详细。这里直接展示把CLF和CBF作为安全约束构建的QP安全问题,剩下的直接用QP库解就可以。

underset{substack{u=text { control input } / text { s: slack variable }}}{operatorname{argmin}}left(u-u_{r e f}right)^T Hleft(u-u_{r e f}right)+p delta^2/ s.t. : L_f V(x)+L_g V(x) u+lambda V(x) leq delta quad CLFquad Constraint/ L_f B(x)+L_g B(x) u+gamma B(x) geq 0 quad text { CBF Constraint } / u in U quad text { Input Constraint }

4 根据ACC来理解CBF的作用

这里主要根据参考引文[5]和参考仓库[1],来构建,Prof. Koushil 教授的学生Jason写的toy example,写的非常通俗易懂,这是我认为目前最简单的理解CBF的例子。

如何根据自己的系统构建属于自己的CBF,一般分为四步,第一步写动力学方程,找安全边界或者条件。第二步,构建可以用的CLF。第三步,构建可以用的CBF,需要把最大值代入把CBF建立的鲁棒性强一些。第四步,使用线性库优化。这里根据ACC来建立。

第一步 构建动力学方程和找安全条件。

这里目标是小黄车前面跑,后面车以一个目标速度去追,追上后还要保证一个安全距离不能追尾,参数和详细问题可以具体参考引文[5]。注意这里详细参数如下表:

这里例子的详细参数ACC问题动力学分析, 源自引文[1]

第二步 构建CLF

这一步主要构件满足stablility 的CLF,即 vrightarrow v_d ,这里我们只关心稳定态速度要达到目标速度,所以对于这个问题来说。Lyapunov函数的0点为 x_e=[cdot quad v_d quadcdot]^T 。那我们可以直接用最简单的LF, V(x)=(v-v_d)^2 ,然后我们来验证到底是不是这个系统的Lyapunov Function(LF).首先我们要求出 dot{V}(x,u) ,

nabla V(x)=left[begin{array}{lll} 0 & 2left(v-v_dright) & 0 end{array}right] 求梯度,参考前面求Affine quad system./ L_f V(x)=-frac{2}{m} F_r(v)left(v-v_dright), L_g V(x)=frac{2}{m}left(v-v_dright) Lie括号表示,求Affline的f 和g函数/ Constraint: / dot{V}(x, u)+lambda V(x)=L_f V(x)+L_g V(x) u+lambda V(x)=left(v-v_dright)left{frac{2}{m}left(u-F_rright)+lambdaleft(v-v_dright)right} leq 0

验证,忽略滚动粘滞阻力:

v>v_d ,那么当刹车(反向加速度相当于u反向增到足够大)足够重的时候,可以看到约束 left{frac{2}{m}left(u-F_rright)+lambdaleft(v-v_dright)right} 小于0,同理当 v<v_d ,加速度(油门够大)的时候,约束也是小于0,说明这是可以用的李亚普诺夫函数,但是注意这里的 lambda 不能取太大,不然上述选好的李雅普诺夫函数就不对了。

第三步 构建CBF

首先明白我们的安全条件是啥,这里是 z geq T_h v quadleft(T_h: text { lookahead time }right) ,那么可以按照最简单的方式选择Barrier function B(x)=z-T_h v

然后我们一样来求 B(x) 梯度和 dot{B}(x,u) ,得到如下: nabla B(x)=left[begin{array}{lll} 0 & -T_h & 1 end{array}right]/ Lie括号表达如下:/ L_f B(x)=frac{T_h}{m} F_r(v)+left(v_0-vright), L_g B(x)=-frac{T_h}{m} / constraint: / dot{B}(x, u)+gamma B(x)=frac{T_h}{m}left(F_r(v)-uright)+left(v_0-vright)+gammaleft(z-T_h vright) geq 0

分析是否满足要求,取极端条件来测试,当 u=-c_d m g ,我们得到式子如下

dot{B}(x, u)+gamma B(x)=T_h c_d g+v_0+gamma z-left(1+T_h gammaright) v 很明显当我们速度足够大时,上述约束很明显有可能不满足,这个时候可以想办法把这个极端条件凑到B(x)方程里,参考引文[5]和[1],这里为:

改B(x)为B(x)=z-T_h v-frac{1}{2} frac{left(v-v_0right)^2}{c_d g}

然后再算一遍Affine f 和g 函数得:

dot{B}(x, u)=frac{1}{m}left(T_h+frac{v-v_0}{c_d g}right)left(F_r(v)-uright)+left(v_0-vright)

把最大加速度加上,u=-c_d m g/ dot{B}(x, u)=frac{1}{m} T_h F_r(v)+T_h c_d g>0

这样CBF也设计生效了,就可以进行编程验证了。Qp问题这里用quadprog来解。

5 实验结果分析

5.1只用CLF约束条件的仿真结果

只有CLF的实验结果已经分析到图里了

5.2 只用CBF的结果

只有CBF的结果

5.3 同时用CBF-CLF-QP的结果

CLF+CBF+QP的结果

6 结语

本文只是入门介绍,可能有哪里我没理解的地方,欢迎大家指出,safety control能做的太多了,随着机器人的发展,各种与人交互,机器人Low-level的安全问题,都是很有必要研究的。欢迎大家留言交流。

reference:

[1]GitHub – HybridRobotics/CBF-CLF-Helper: Matlab Interface for Control Barrier Function (CBF) and Control Lyapunov Function (CLF) based control methods.

[2]https://www.youtube.com/watch?v=_Tkn_Hzo4AA&list=PLndg610QE25A-7vodCO8jIXyc4JDJrjWq&index=1

[3]https://www.youtube.com/watch?v=JbXyQaQj9jo&t=2037s

[4]https://www.youtube.com/watch?v=45e11ylB0Ww&t=2941s

[5]http://ames.caltech.edu/CLF_QP_ACC_final.pdf

[6]Control Barrier Functions: Theory and Applications

[7]Lyapunov Stability (to desired orbit) + Control Barrier Function (avoiding obstacle)

发表回复

相关推荐

第二十三屆全國大學生機器人大賽ROBOCON主題與規則發佈

顆粒歸倉第二十三屆全國大學生機器人大賽ROBOCON主題與規則 糧食安全與國傢安全緊密相連,不但在戰爭時期具有重大意義,對...

· 12秒前

工商管理專業考研指南

工商管理這個一級學科一直都是考研最熱門的專業之一,許多工科跨考管理學首選工商管理這個一級學科,今天學姐就和大傢聊聊工...

· 1分钟前

優惠券機器人大比拼,哪傢更省錢?

測評目的:找到一個返利高且穩定的機器人文章略長,嫌麻煩的同學可以直接點擊 這個鏈接測評背景:本人作為一名非常腐敗的當...

· 1分钟前

九五裹药是真的治病吗?九五裹药骗局揭秘

“九五裹药”—源于民间、传于民间、用于民间。

· 2分钟前

消杀公司报价表

四害消杀方案报价表 消杀报价单 消杀服务多少钱一平方 四害消杀报价清单 四害消杀价格 四害消杀多少钱一平方 灭虫报价单 家 ...

· 3分钟前