恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

CBF应用

  • 首页
  • 资讯中心
  • /
  • CBF应用

相关资讯

PDF补丁丁:5个简单步骤掌握免费开源PDF工具箱的完整使用指南 2026/8/13 17:48:34
Embabel Agent框架:JVM智能代理系统的架构演进与实践指南 2026/8/13 17:38:16
PDF补丁丁:重新定义免费PDF编辑体验的开源利器 2026/8/13 17:38:16

最新资讯

3步搭建EMANet:如何用期望最大化注意力机制实现高效语义分割
从0到1理解WebStorageCache:解决localStorage痛点的最佳实践
终极美化指南:用foobox-cn打造你的专属音乐播放器
Qwen3-VL-8B-Instruct-FP8:如何用FP8量化技术让多模态大模型在普通GPU上运行?
Flipper Zero BadUSB脚本深度解析:从入门到实战的完整指南
PDF智能解析与分类:如何用开源工具实现文档自动化处理

今日推荐

VSCode插件精选:从AI补全到代码规范,打造高效开发环境
如何快速完成文件批量重命名:FreeReNamer终极指南
2026年横评:宁波3大学科小升初机构全面对比

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

CBF应用

发布时间:2026/8/13 17:48:34
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()仿真结果

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号