控制障碍函数(Control Barrier Function,CBF) 二、示例

二、示例

2.1、系统模型

这里我们举一个CBF作者给出的经典示例

请添加图片描述

我们定义控制输入 u u u 为蓝色车的推力。 p p p 为蓝色车的位置, v v v 为蓝色车的速度, z z z 为蓝色车与黄色车之间的距离, v 0 v_0 v0 为黄色车的速度。我们定义系统的状态为
x = [ p v z ] ∈ R 3 x = \begin{bmatrix} p \\ v \\ z \end{bmatrix} \in \mathbb{R}^3 x= pvz R3
对其求导为
x ˙ = [ v − 1 m F r ( v ) v 0 − v ] + [ 0 1 m 0 ] u \dot x = \begin{bmatrix} v \\ -\frac{1}{m} F_r(v) \\ v_0 - v \end{bmatrix} + \begin{bmatrix} 0 \\ \frac{1}{m} \\ 0 \end{bmatrix} u x˙= vm1Fr(v)v0v + 0m10 u
其中 F r ( v ) = f 0 + f 1 v + f 2 v 2 F_r(v) = f_0 + f_1 v + f_2 v^2 Fr(v)=f0+f1v+f2v2 为滚动阻力

为了保证系统安全,对这个系统做出一些约束

输入约束
− m c d g ≤ u ≤ m c a g -m c_d g \le u \le m c_a g mcdgumcag
稳定性目标,其中 v d v_d vd 为期望速度
v → v d v \to v_d vvd
安全目标,其中 T h T_h Th 为时间前瞻量
z ≥ T h v z \ge T_h v zThv

2.2、设计CLF

系统的稳定目标为 v → v d v \to v_d vvd ,因此系统的原点 x e = [ ⋅ , v d , ⋅ ] T x_e = [\cdot,v_d,\cdot]^T xe=[,vd,]T 。设计李雅普诺夫函数为
V ( x ) = ( v − v d ) 2 V(x) = (v - v_d)^2 V(x)=(vvd)2
对其求梯度
∇ V ( x ) = [ 0 2 ( v − v d ) 0 ] \nabla V(x) = \begin{bmatrix} 0 \\ 2(v-v_d) \\ 0 \end{bmatrix} V(x)= 02(vvd)0
那么
L f V ( x ) = − 2 m F r ( v ) ( v − v d ) L g V ( x ) = − 2 m ( v − v d ) \begin{aligned} L_f V(x) &= -\frac{2}{m} F_r(v) (v-v_d) \\ L_g V(x) &= -\frac{2}{m} (v-v_d) \\ \end{aligned} LfV(x)LgV(x)=m2Fr(v)(vvd)=m2(vvd)
所以CLF约束可以表示为
V ˙ ( x , u ) + λ V ( x ) = L f V ( x ) + L g V ( x ) u + λ V ( x ) = ( v − v d ) { 2 m ( u − F r ) + λ ( v − v d ) } ≤ 0 \dot V(x,u) + \lambda V(x) = L_f V(x) + L_g V(x) u + \lambda V(x) = (v - v_d) \left\{ \frac{2}{m}(u - F_r) + \lambda(v-v_d) \right\} \le 0 V˙(x,u)+λV(x)=LfV(x)+LgV(x)u+λV(x)=(vvd){m2(uFr)+λ(vvd)}0

2.3、设计CBF

安全目标为 z ≥ T h v z \ge T_h v zThv ,即两车间距大于一定值

先以直观的方式定义CBF函数 B ( x ) = z − T h v B(x) = z - T_h v B(x)=zThv

对其求梯度 ∇ B ( x ) = [ 0 − T h 1 ] \nabla B(x) = \begin{bmatrix} 0 & -T_h & 1 \end{bmatrix} B(x)=[0Th1]

那么
L f V ( x ) = T h m F r ( v ) + ( v 0 − v ) L g V ( x ) = − T h m \begin{aligned} L_f V(x) &= \frac{T_h}{m} F_r(v) + (v_0 - v) \\ L_g V(x) &= -\frac{T_h}{m} \\ \end{aligned} LfV(x)LgV(x)=mThFr(v)+(v0v)=mTh
所以有CBF函数的导数
B ˙ ( x , u ) + γ B ( x ) = T h m ( F r ( v ) − u ) + ( v 0 − v ) − T h m + γ ( z − T h v ) ≥ 0 \dot B(x,u) + \gamma B(x) = \frac{T_h}{m} (F_r(v)-u) + (v_0 - v) - \frac{T_h}{m} + \gamma(z - T_h v) \ge 0 B˙(x,u)+γB(x)=mTh(Fr(v)u)+(v0v)mTh+γ(zThv)0
如果忽视滚动阻力的影响,并采用最大的控制量 u = − c d m g u = -c_d mg u=cdmg
B ˙ ( x , u ) + γ B ( x ) = T h c d g + v 0 + γ z − ( 1 + T h γ ) v \dot B(x,u) + \gamma B(x) =T_h c_d g + v_0 + \gamma z - (1+T_h \gamma) v B˙(x,u)+γB(x)=Thcdg+v0+γz(1+Thγ)v
v v v 相对于 T h c d g + v 0 T_h c_d g + v_0 Thcdg+v0 比较大时,那么约束可能不会被满足,即 B ˙ ( x , u ) ≤ 0 \dot B(x,u) \le 0 B˙(x,u)0 v v v 比较大时。

为了解决这个问题,我们多加一项,多加的这一项其实我们看等式的话,相当于将安全区域范围缩小了,但是能消除一部分 B ( x ) B(x) B(x) 中的多项式
B ( x ) = z − T h v − 1 2 ( v − v 0 ) 2 c d g B(x) = z - T_h v - \frac{1}{2} \frac{(v - v_0)^2}{c_d g} B(x)=zThv21cdg(vv0)2
对其求导
B ˙ ( x , u ) = 1 m ( T h + v − v 0 c d g ) ( F r ( v ) − u ) + ( v 0 − v ) \dot B(x,u) = \frac{1}{m} (T_h + \frac{v - v_0}{c_d g}) (F_r(v) - u) + (v_0 - v) B˙(x,u)=m1(Th+cdgvv0)(Fr(v)u)+(v0v)
当 $u = -c_d m g $ 时
B ˙ ( x , u ) = 1 m T h F r ( v ) + T h c d g > 0 \dot B(x,u) = \frac{1}{m} T_h F_r(v) + T_h c_d g > 0 B˙(x,u)=m1ThFr(v)+Thcdg>0
所以CBF可以表示为
B ˙ ( x , u ) + γ B ( x ) = 1 m ( T h + v − v 0 c d g ) ( F r ( v ) − u ) + ( v 0 − v ) + γ ( z − T h v ) ≥ 0 \dot B(x,u) + \gamma B(x) = \frac{1}{m} (T_h + \frac{v - v_0}{c_d g}) (F_r(v) - u) + (v_0 - v) + \gamma (z - T_h v) \ge 0 B˙(x,u)+γB(x)=m1(Th+cdgvv0)(Fr(v)u)+(v0v)+γ(zThv)0

2.4、规划目标

最终,我们得到的是这样一个规划问题
argmin   u T H u subject to   ( v − v d ) { 2 m ( u − F r ) + λ ( v − v d ) } ≤ 0 1 m ( T h + v − v 0 c d g ) ( F r ( v ) − u ) + ( v 0 − v ) + γ ( z − T h v ) ≥ 0 − m c d g ≤ u ≤ m c a g \begin{aligned} \text{argmin} \ \ &u^T H u \\ \text{subject to} \ \ & (v - v_d) \left\{ \frac{2}{m}(u - F_r) + \lambda(v-v_d) \right\} \le 0 \\ & \frac{1}{m} (T_h + \frac{v - v_0}{c_d g}) (F_r(v) - u) + (v_0 - v) + \gamma (z - T_h v) \ge 0 \\ & -m c_d g \le u \le m c_a g \\ \end{aligned} argmin  subject to  uTHu(vvd){m2(uFr)+λ(vvd)}0m1(Th+cdgvv0)(Fr(v)u)+(v0v)+γ(zThv)0mcdgumcag
从上到下分别为CLF约束,CBF约束,控制输入约束。

下一部分我们讲解这里推导的公式怎么用代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/291690.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

功能介绍 | 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!

​​0x01 前言 ​我们从只会点鼠标的猴子到CtrlC,CtrlV来回切换的工具人,但有时候遇到大量需要复制的url界面,真的希望能有一个可以一键整理、一键扫描URL的功能来拯救! 好消息是,Goby从客户端版本2.8.6起,官方引入了…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展,对车辆安全和性能的要求也越来越高。在新能源车中,液位传感器是必不可少的零部件之一,用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据,从而分析是否有…

web自动化测试从入门到持续集成

在很多刚学习自动化的可能会认为我只需要会运用selenium,我只需要在一个编辑器中实用selenium java编写了一些脚本那么就会自动化了,是真的吗?答案肯定是假的。自动化肯定是需要做到真的完全自动化,那如何实现呢?接着往…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源:Gee 项目目录结构: router/gee/trie.go 实现动态路由最常用的数据结构,被称为前缀树(Trie树) 关…

MySQL之CRUD,函数与union使用

目录 一.CRUD 1.1.SELECT(查询) 1.2.INSERT(新增) 1.3.UPDATE(修改) 1.4.DELETE(删除) 二.函数 2.1.常见函数 2.1.1.字符函数 2.1.2.数字函数 2.1.3.日期函数 2.2.流程控制函数 2.3.聚合函数 三.union与union all 四…

物流实时数仓:数仓搭建(DWS)一

系列文章目录 物流实时数仓:采集通道搭建 物流实时数仓:数仓搭建 物流实时数仓:数仓搭建(DIM) 物流实时数仓:数仓搭建(DWD)一 物流实时数仓:数仓搭建(DWD&am…

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中,参数化是非常重要的,参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先,我们需要创建一个逗号分隔的值(CSV)文件,其中…

创建企业邮箱帐户指南:常见问题与解决方法分享

专业的电子邮件地址可以帮助客户识别商务人士,并了解公司给他们发邮件的目的。如果你从事管理、信息技术或人力资源工作,你可能会负责为一个企业建立一个企业邮箱帐户。了解如何为新员工和现有员工设置电子邮件帐户可以帮助您简化公司内部的沟通。 在这篇…

python小工具之弱密码检测工具

一、引用的python模块 Crypto: Python中一个强大的加密模块,提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上,为Python程序员提供了简单易用的API,使其可以轻松地实现各种加密功能。 commands…

牵绳遛狗你我他文明家园每一天,助力共建文明社区,基于YOLOv5开发构建公共场景下未牵绳遛狗检测识别系统

遛狗是每天要打卡的事情,狗狗生性活泼爱动,一天不遛就浑身难受,遛狗最重要的就是要拴绳了,牵紧文明绳是养犬人的必修课。外出遛狗时,主人手上的牵引绳更多是狗狗生命健康的一道重要屏障。每天的社区生活中,…

秋招复习之数据结构

目录 前言 1 数据结构分类 2 基本数据类型 3 数字编码 4 字符编码 总结 前言 秋招复习之数据结构,数据结构分类、基本数据类型、字符编码、数字编码等基础知识。 1 数据结构分类 数据结构分为逻辑结构和物理结构。 逻辑结构分为线性数据结构(数组链表…

在word文档中自制代码段样式

附: 在word中插入高亮代码的网站 HighlightCode:https://highlightcode.com/ CodeInWord:http://codeinword.com/ 一、新建代码段样式 点击下拉按钮,选择创建样式,命名为代码段,然后点击修改 点击格式&a…

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element:transitionrun 事件Element:transitionstart 事件Element:transitionend 事件Element:transit…

数据表示和进制转换

输入计算机的数字、字符、符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算。能够进行算术运算并且得到明确的数值的数据概念的信息叫数值数据,其余的信息成为非数值数据。 权:每位数的数值。 基数:指该进位制中允…

【C初阶——指针2】鹏哥C语言系列文章,基本语法知识全面讲解——指针(2)

崩刃的剑,依旧致命,锈蚀的盾,屹立如初(王者荣耀李信) 本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步&#xff0…

Elasticsearch:结合 ELSER 和 BM25 文本查询的相关搜索

Elastic Learned Spare EncodeR (ELSER) 允许你执行语义搜索以获得更相关的搜索结果。 然而,有时,将语义搜索结果与常规关键字搜索结果相结合以获得最佳结果会更有用。 问题是,如何结合文本和语义搜索结果? 首先,让我…

揭秘Linux软链接:如何轻松创建、删除和修改

揭秘Linux软链接:如何轻松创建、删除和修改 一、简介二、创建软链接三、删除软链接四、修改软链接五、Linux软链接的高级用法六、总结 一、简介 在Linux中,软链接(Symbolic Link)是一种特殊的文件类型,它是一个指向另…

初识对抗生成网络(GAN)

在研究语义通信的时候,发现解码端很多都是用GAN或基于GAN来完成的。带着对GAN的好奇,对GAN进行了一个初步学习。这篇文章介绍一下和GAN相关的一些常识吧~   本文围绕以下几个内容展开:     1.什么是GAN?     2.为什么要…

03-微服务-Ribbon负载均衡

Ribbon负载均衡 1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 1.2.源码跟踪 为什么我们只输入…

FOURANDSIX:2.01

靶场下载 FourAndSix: 2.01 ~ VulnHub 信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-02 10:42 CST Nmap scan report for 192.168.1.1 Host is up (0.00030s latency). MAC Address: 00…