CBF应用
推导过程代码实现import numpy as np import random import matplotlib.pyplot as plt from cvxopt import matrix, solvers # Simulation parameters dt 0.02 # 采样间隔 T 30 # 总时间 length int(np.ceil(T / dt)) # 总步长 print(---------------------------) print(length) print(---------------------------) # System initialization p np.zeros( (length 1, 1) ) # 定义全的一个一维数组存储每一个步长运行后的位置 p代表后车距离坐标原点的距离 print(p) v np.zeros((length 1, 1)) # 后车速度 print(v) z np.zeros((length 1, 1)) # 前车后车距离 u np.zeros((length, 1)) # wheel force sys { m: 1650, # 小车的质量 g: 9.81, # 加速度 v0: 14, # 初始速度 vd: 24, # 目标速度 f0: 0.1, # f1: 5, # f2: 0.25, # ca: 0.3, # 输入上限系数 cd: 0.3, # 输入下限系数 T: 1.8, # 前瞻时间反应时间 clf_rate: 5, # clf超参数 cbf_rate: 5, # cbf超参数 weight_input: 2 / 1650**2, # weight_slack: 2e-2, # 松弛变量 } sys[u_max] sys[ca] * sys[m] * sys[g] # 输入上限 sys[u_min] -sys[cd] * sys[m] * sys[g] # 输入下线 # Initial conditions p[0] 0 v[0] 10 z[0] 100 # Simulation loop for i in range(length): current_p p[i, 0] current_v v[i, 0] current_z z[i, 0] x np.array( [current_p, current_v, current_z] ) # 系统的状态量后车位置后车速度距离前车速度 F_r sys[f0] sys[f1] * current_v sys[f2] * current_v**2 # 动力学方程f(x) f np.array( [current_v, -F_r / sys[m], sys[v0] - current_v] ) # 仿射函数中的动力学部分 g np.array([0, 1 / sys[m], 0]) # 仿射函数中的控制向量场部分g(x) # clf V (current_v - sys[vd]) ** 2 # 平方,能量函数Vx dV np.array([0, 2 * (current_v - sys[vd]), 0]) # 对能量函数求梯度 LfV np.dot(dV, f) # 利用李导算子化简dVfLfV np.dot做点积 LgV np.dot(dV, g) # dVgLgV # cbf B ( current_z - sys[T] * current_v - 0.5 * (current_v - sys[v0]) ** 2 / (sys[cd] * sys[g]) ) dB np.array([0, -sys[T] - (current_v - sys[v0]) / (sys[cd] * sys[g]), 0]) LfB np.dot(dB, f) LgB np.dot(dB, g) # Quadratic program H_ np.array([[sys[weight_input], 0], [0, sys[weight_slack]]]) # 转化2×2 f_ np.array([-sys[weight_input] * F_r, 0]) # 滚动摩擦 A_ np.array([[LgV, -1], [-LgB, 0], [1, 0], [-1, 0]]) # -LgB考虑实际意义此项为正 b_ np.array( [ -LfV - sys[clf_rate] * V, LfB sys[cbf_rate] * B, sys[u_max], -sys[u_min], ] ) # Convert to cvxopt format P matrix(H_) # 将数组转换成矩阵 q matrix(f_) G matrix(A_) h matrix(b_) # Solve QP problem using cvxopt sol solvers.qp(P, q, G, h) print(----------) print(sol) print(----------) u_opt sol[x][0] # Second term is the slack variable dx f g * u_opt x_n x dx * dt print(---------------------------) print(x_n) print(---------------------------) # Save data u[i, 0] u_opt if i length: p[i 1, 0] x_n[0] v[i 1, 0] x_n[1] z[i 1, 0] x_n[2] # Plotting time np.arange(0, T dt, dt) plt.figure(figsize(10, 8)) plt.subplot(4, 1, 1) plt.plot(time, p) plt.ylabel(p) plt.subplot(4, 1, 2) plt.plot(time, v) plt.ylabel(v) plt.subplot(4, 1, 3) plt.plot(time, z) plt.ylabel(z) plt.subplot(4, 1, 4) plt.plot(time[:-1], u) plt.ylabel(u) plt.xlabel(Time (s)) plt.tight_layout() plt.show()仿真结果

相关新闻

MobaXterm中文版技术架构解析:集成化远程开发工作流配置指南

MobaXterm中文版技术架构解析:集成化远程开发工作流配置指南

MobaXterm中文版技术架构解析:集成化远程开发工作流配置指南 【免费下载链接】Mobaxterm-Chinese Mobaxterm simplified Chinese version. Mobaxterm 的简体中文版. 项目地址: https://gitcode.com/gh_mirrors/mo/Mobaxterm-Chinese MobaXterm中文版作为一款…

2026/10/17 9:50:47 阅读更多 →
Fusion框架完全指南:5个核心优势让你轻松构建响应式Luau应用

Fusion框架完全指南:5个核心优势让你轻松构建响应式Luau应用

Fusion框架完全指南:5个核心优势让你轻松构建响应式Luau应用 【免费下载链接】Fusion Futuristic Luau for every universe. 项目地址: https://gitcode.com/gh_mirrors/fusion4/Fusion 想要在Roblox或其他Luau环境中构建响应式、可维护的应用程序吗&#xf…

2026/10/17 9:50:49 阅读更多 →
怎样高效处理PDF文档:PDF补丁丁专业实战方案

怎样高效处理PDF文档:PDF补丁丁专业实战方案

怎样高效处理PDF文档:PDF补丁丁专业实战方案 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitcode.com…

2026/10/16 19:24:25 阅读更多 →

最新新闻

机器人路径规划实战:从栅格地图到A*与RRT*的算法选型指南

机器人路径规划实战:从栅格地图到A*与RRT*的算法选型指南

简介:这是一篇基于快速行进法(FMM)的火星探测车路径规划研究论文,面向机器人路径规划、行星探索及未知环境自主导航领域的研究者和工程师。论文系统论述了复杂火星地形下的安全高效路径生成问题:通过构建综合地形坡度、…

2026/10/18 16:00:19 阅读更多 →
OpenCV隔行降采样手写实现:从Mat指针到像素级缩放原理

OpenCV隔行降采样手写实现:从Mat指针到像素级缩放原理

简介:图像降采样是图像处理中的重要操作,用于减少数据量、降低计算开销,同时尽量保持视觉质量。这份面向C与OpenCV开发者的工程资源,围绕隔行降采样和高斯金字塔降采样两种方案展开,源码基于VS2015编写,并对…

2026/10/18 16:00:19 阅读更多 →
X-AnyLabeling 自动标注环境搭建:yolox-s-onnx 模型安装与版本对齐指南

X-AnyLabeling 自动标注环境搭建:yolox-s-onnx 模型安装与版本对齐指南

简介:这份资源面向计算机视觉方向的目标检测开发者与数据标注人员,提供X-AnyLabeling可直接加载的YOLOX-S自动标注模型,用于在新图像上快速生成初步检测框,缓解人工标注耗时耗力的问题。压缩包共2个文件,包含1个yaml配…

2026/10/18 16:00:19 阅读更多 →
纯Python SMTP邮件客户端:跨平台、轻量、可审计的发信解决方案

纯Python SMTP邮件客户端:跨平台、轻量、可审计的发信解决方案

简介:这是一款基于Python从零开发的桌面级邮件发送客户端,面向Python初学者与桌面应用开发者,解决日常办公中邮件撰写、附件管理、定时投递等高频需求。资源包共7个文件,含2个核心Python源码(Email.py与Email-UI.py&am…

2026/10/18 16:00:19 阅读更多 →
抢票脚本技术拆解:高精度定时任务与状态机实现

抢票脚本技术拆解:高精度定时任务与状态机实现

简介:这是一份基于Python实现的票星球自动抢票脚本资源,面向有编程基础、希望自动化完成票务抢购的开发者与活动爱好者。资源将核心流程封装为PXQ类,涵盖token、show_id、session_id等属性初始化,以及获取场次信息、查询座位余票、…

2026/10/18 16:00:19 阅读更多 →
SpringBoot RabbitMQ点对点模式动态队列实战与避坑指南

SpringBoot RabbitMQ点对点模式动态队列实战与避坑指南

1. 为什么点对点模式值得单独拎出来讲做后端开发的朋友对消息队列应该都不陌生,但真正在项目里落地的时候,很多人第一反应就是“发个消息、收个消息”,觉得没什么技术含量。我刚开始接触 RabbitMQ 的时候也是这个心态,直到在一个订…

2026/10/18 15:59:18 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →