当前位置: 首页 > article >正文

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB 代码复现文献代码协同控制 规划 无人机 研究了基于二次规划的安全关键型多智能体系统的控制问题。 每个被控智能体被建模为一个积分器和一个不确定非线性驱动系统的级联连接。 其中积分器表示位置-速度关系驱动系统描述实际速度对速度参考信号的动态响应。 采用输入输出稳定性的概念来表征驱动系统的基本速度跟踪能力。 由于致动器动力学的不确定性标准的QP避碰算法可能不可行。 即使可行由于可能违反活动约束的满秩条件解也可能是非lipschitz的。 此外控制积分器与不确定作动器动力学之间的相互作用可能导致显著的非鲁棒性问题。 基于当前非线性控制理论和数值优化方法的发展本文首先提出了一种新的可行集重构技术和一种改进的QP算法用于可行性、鲁棒性和局部Lipschitz连续性。 然后为了保证闭环多智能体系统的安全我们提出了一种非线性小增益分析来处理固有的相互作用。 最后用数值方法进行了验证当无人机群开始玩碰碰车QP安全控制实战笔记实验室最近搞了个大新闻——四台无人机在3x3米的空间里群魔乱舞还不撞机。这背后其实是基于二次规划QP的避碰算法在撑腰。不过说真的复现那篇IEEE论文时差点被可行性问题搞崩心态今天就带大家看看怎么用MATLAB调教这群铁鸟。先看个刺激的% 紧急避让场景模拟 drones QuadcopterSwarm(4); drones.setTrajectory((t) [sin(t), cos(t)]); % 作死设定交叉航线 safety_controller SafetyQP(drones); sim_result simulate(safety_controller, 0:0.1:10); animateCollisionNearMiss(sim_result); % 这个动画看得手心冒汗运行后你会看到四架无人机在即将相撞的瞬间突然像被无形大手拨开——这就是重构可行集的魔法。但别急着爽先看看我们踩过的坑。核心问题1约束打架怎么办传统QP处理动态障碍容易翻车特别是当无人机群突然改变队形时。论文里那个可行集重构用MATLAB写出来长这样function [A,b] rebuildConstraints(agents, alpha) % alpha是安全系数 n numel(agents); A []; b []; for i 1:n-1 for j i1:n rij agents(i).position - agents(j).position; dij norm(rij) - (agents(i).radius agents(j).radius); A_ij [rij/norm(rij), -rij/norm(rij)]; b_ij dij - alpha*dij^2; % 关键在这非线性安全边界 A [A; A_ij]; b [b; b_ij]; end end end注意第9行的二次项alpha*dij²这个骚操作把原本线性的安全边界变成了弹性区域。实测当alpha0.3时就算两个铁头娃对向冲刺约束也不会突然消失。控制律里的猫腻2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB 代码复现文献代码协同控制 规划 无人机 研究了基于二次规划的安全关键型多智能体系统的控制问题。 每个被控智能体被建模为一个积分器和一个不确定非线性驱动系统的级联连接。 其中积分器表示位置-速度关系驱动系统描述实际速度对速度参考信号的动态响应。 采用输入输出稳定性的概念来表征驱动系统的基本速度跟踪能力。 由于致动器动力学的不确定性标准的QP避碰算法可能不可行。 即使可行由于可能违反活动约束的满秩条件解也可能是非lipschitz的。 此外控制积分器与不确定作动器动力学之间的相互作用可能导致显著的非鲁棒性问题。 基于当前非线性控制理论和数值优化方法的发展本文首先提出了一种新的可行集重构技术和一种改进的QP算法用于可行性、鲁棒性和局部Lipschitz连续性。 然后为了保证闭环多智能体系统的安全我们提出了一种非线性小增益分析来处理固有的相互作用。 最后用数值方法进行了验证速度跟踪环节藏着魔鬼细节。论文把动力学拆成了积分器驱动系统对应到代码里classdef SafetyQP handle properties kp 1.2; % 别乱改这个血泪教训 safe_dist 0.5; Q diag([10,10,1]); % 代价函数权重 end methods function u solveQP(obj, states) % 构造H矩阵时要注意物理单位 H blkdiag(obj.Q, obj.Q, obj.Q, obj.Q); % 后面省略20行约束构造... [u,~,exitflag] quadprog(H,f,A,b,Aeq,beq); if exitflag 0 error(翻车警告QP无解); end end end end重点在Q矩阵的第三个元素设为1——因为高度方向机动性差权重太大容易导致姿态失稳。有个师弟不信邪改成10结果无人机直接表演海豚跳。非线性小增益的工程实现理论部分看着头疼其实代码里就一个while循环while max(gain_ratios) 1 % 动态调整安全距离 safe_dist safe_dist * 0.95; updateAllConstraints(); % 重新计算增益比 gain_ratios computeInteractionGains(); end这个增益比监控循环像极了老司机踩刹车系统开始震荡就稍微放松安全距离直到整个机群达成微妙平衡。不过注意别降得太猛0.95这个衰减系数是试了三十多组参数才确定的。效果验证的骚操作论文里的漂亮曲线都是怎么来的分享个压箱底的画图技巧figure(Position,[100,100,800,600]) subplot(2,2,1); plotCollisionSpheres(sim_result); % 三维轨迹球 view(135,30) % 这个视角最能唬人 subplot(2,2,2); animateControlInputs(sim_result); % 控制量动图 % 灵魂拷问最接近距离统计 min_dists computeMinPairwiseDistances(sim_result); disp([最近距离,num2str(min(min_dists)),米])运行完记得检查控制台输出——如果最近距离小于无人机直径赶紧检查是不是约束矩阵构造时把正负号搞反了别问我是怎么知道的。后记真正部署时发现个魔幻现象有时候QP求解器会突然抽风报无解但加上随机扰动又好了。后来发现是雅可比矩阵在某些奇异位形下秩亏解决方法居然是在约束里加了个微小旋转A_ij [rij/norm(rij), -rij/norm(rij)] 1e-6*randn(1,8);这1e-6的噪声让数值稳定性直接起飞。所以说啊理论再完美到了代码层还是得有点engineering hack精神。

相关文章:

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB 代码复现(文献代码)协同控制 规划 无人机 研究了基于二次规划的安全关键型多智能体系统的控制问题。 每个被控智能体被建模为一个积分器和一个不确定非线性驱动系统的级联…...

基于Comsol的钢筋混凝土腐蚀开裂力学-化学耦合相场模型

基于Comsol的钢筋混凝土腐蚀开裂的力学-化学耦合相场模型 钢筋混凝土腐蚀开裂的力学-化学耦合相场模型,采用多场耦合有限元软件Comsol建模,方便易懂。 相场模型能够准确模拟钢筋混凝土的腐蚀诱导开裂行为。 (附源文件和参考论文)钢…...

BES-XGBoost多变量时间序列预测的‘秃鹰搜索优化算法‘与交叉验证抑制过拟合问题的Mat...

基于秃鹰搜索优化算法优化XGBoost(BES-XGBoost)的多变量时间序列预测 BES-XGBoost多变量时间序列 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码,注:暂无Matlab版本要求 -- 推荐 2016B 版本及以上 注:采用 XG…...

nlp_gte_sentence-embedding_chinese-large模型在嵌入式Linux系统上的优化部署

nlp_gte_sentence-embedding_chinese-large模型在嵌入式Linux系统上的优化部署 1. 引言 在智能硬件和边缘计算快速发展的今天,越来越多的设备需要在本地运行AI模型。对于嵌入式Linux系统来说,如何在资源受限的环境下高效部署大型文本表示模型&#xff…...

Pixel Aurora Engine应用场景:复古游戏机主题网站AI生成视觉系统集成

Pixel Aurora Engine应用场景:复古游戏机主题网站AI生成视觉系统集成 1. 项目背景与核心价值 Pixel Aurora Engine(像素极光引擎)是一款专为复古游戏风格设计的AI视觉生成系统。它巧妙地将现代AI技术与怀旧像素美学相结合,为网站…...

AI辅助开发:让快马AI理解并生成ccswitch工具的核心逻辑与UI管理代码

AI辅助开发:让快马AI理解并生成ccswitch工具的核心逻辑与UI管理代码 最近在开发一个网络切换工具ccswitch时,发现AI辅助开发能大幅提升效率。通过InsCode(快马)平台集成的AI模型,可以用自然语言描述需求,就能自动生成核心功能代码…...

OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题

OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS 你是否正在为复杂的质谱数据分析而烦恼?面对海量的LC-MS数据&#xf…...

FIFA 23 Live Editor终极指南:10分钟掌握实时游戏修改技巧

FIFA 23 Live Editor终极指南:10分钟掌握实时游戏修改技巧 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor FIFA 23 Live Editor 是一款专为FIFA 23玩家设计的革命性实时编辑工…...

操作系统与数据库系统的核心知识点,属于计算机科学与技术专业(尤其是考研408统考或相关课程)的重点复习提纲

操作系统与数据库系统的核心知识点,属于计算机科学与技术专业(尤其是考研408统考或相关课程)的重点复习提纲。以下是对各部分的简明梳理与关键点说明: ✅ 死锁处理 预防:破坏死锁四个必要条件之一(互斥、占…...

Redis Sentinel 高可用方案在WMS仓储管理系统的应用

Redis Sentinel 高可用方案在WMS仓储管理系统的应用 一、仓储场景的特殊挑战 在WMS(Warehouse Management System)系统中,Redis承载着高频且关键的业务数据:业务模块Redis用途可用性要求库存实时缓存SKU库存量、库位占用状态99.99…...

kprobe函数入口时的汇编跳板执行流程与栈帧机制

kprobe函数入口汇编跳板执行流程与栈帧机制 文章目录kprobe函数入口汇编跳板执行流程与栈帧机制前言环境准备ftrace跳板创建跳板执行流程与栈帧逐行拆解初始状态与安全校验双层栈帧构建(CONFIG_FRAME_POINTER)通用寄存器保存与C函数参数准备剩余寄存器保…...

全国霸王餐 API 接口聚合平台,Java 后端多数据源路由策略设计

全国霸王餐 API 接口聚合平台,Java 后端多数据源路由策略设计 在构建全国性的霸王餐(Free Meal)与外卖CPS聚合平台时,单一的数据源架构往往无法支撑海量的并发请求与复杂的业务隔离需求。随着业务规模的扩张,系统通常面…...

高可用外卖返利 CPS 平台:Java 后端异步回调处理机制深度解析

高可用外卖返利 CPS 平台:Java 后端异步回调处理机制深度解析 在构建外卖返利(CPS)系统时,异步回调(Callback)机制是连接用户授权、订单同步与佣金结算的神经中枢。美团、饿了么等平台的用户授权与订单状态…...

测试计划详细说明

一份高质量的测试计划本质上是质量风险的防御蓝图,它要在有限资源和无限质量诉求之间找到平衡点。我将从结构、内容、决策逻辑三个维度展开,并提供一个可直接落地的框架。一、测试计划的核心定位测试计划的本质回答三个问题:测什么&#xff1…...

当 95% 泳池拒绝轮椅人群时,“泳池升降机” 正在创造包容性蓝海​

在一座城市的游泳馆里,坐在轮椅上的小李望着眼前的泳池,眼神中满是渴望却又带着一丝无奈。以往,他只能看着别人在水中畅游,因为大部分泳池没有适合他这样行动不便者入水的设施。但最近,这家游泳馆引入了一款便携式泳池…...

嵌入式系统高可靠存储模块(Store)设计与实现

在嵌入式系统开发中,数据持久化是保障设备稳定性、连续性运行的核心支撑,尤其对于物联网网关、工业控制器、智能家居终端等设备,需长期存储设备配置、运行参数、网络信息等关键数据,且要求掉电不丢失、读写高效、容错性强。基于此…...

CPU与操作系统【简单的认识理解】

在日常开发过程中,我们都是正常写完代码去执行即可,不用了解计算机运行的底层逻辑。但是了解计算机运行的底层逻辑,对于我们以后理解撰写代码以及理解错误原理有着重要地位,因此,我们特意写上一篇文章跟大家介绍。在计…...

Agno 多 Agent 实战(二):搭建完整内容创作流水线

前情回顾 上一篇我们用路由模式做了一个智能问答系统,路由模式适合单步任务,一次分配。今天分享的是更复杂的场景:多步骤协作。 很多任务不是一步能做完的,比如写一篇文章:得先找资料,再写初稿,再审核修改,最后排版。这就需要多个 Agent 一步步协作,我们可以用协调模…...

2025_NIPS_G1: Teaching LLMs to Reason on Graphs with Reinforcement Learning

文章核心总结与创新点 核心内容 本文针对大型语言模型(LLMs)在图推理任务中表现有限的问题,提出了一种基于强化学习(RL)的方法G1。通过在大规模合成图论任务数据集Erdős上训练,G1显著提升了LLMs的图推理能力,且在未见过的任务、领域和图编码方案中表现出强泛化性,同…...

MySql(简单处理查询结果--查询结果去重)

3. 现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。示例:user_profileiddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijing42315female23浙江大学ZheJiang55432mal…...

AllCells细胞原料解析:Leukopak与PBMC在CGT中的应用【曼博生物供应人原代细胞】

AllCells细胞原料体系解析:Leukopak与PBMC在CGT中的应用 摘要: AllCells作为DLS体系中的重要品牌,提供GMP与RUO级人源细胞原料,包括Leukopak与PBMC等产品类型,广泛应用于细胞与基因治疗研发及生产流程。 关键词&#x…...

02-LangChain简单介绍、RAG开发

一、LangCain1、介绍LangChain由Harrison Chase创建于2022年10月,它是围绕LLMs(大语言模型)建立的一个框架。LangChain自身并不开发LLMs,它的核心理念是为各种LLMs实现通用的接口,把LLMs相关的组件“链接”在一起&…...

软考高项-第六章-项目管理概论

项目和项目集重点在于正确的做事,项目组合在于做正确的事组织过程资产:过程资产,治理文件,数据资产,知识资产,安保和安全事业环境因素:市场条件,社会和文化影响因素,监管…...

惯性导航解算及误差分析

目录 1.连续时间下三维运动的微分性质 1.1 旋转矩阵的微分方程 1.2 四元数的微分方程 1.3 旋转向量的微分方程 2.惯性导航解算 2.1 姿态更新 2.2 速度更新 2.3 位置更新 3.惯性导航误差分析 3.1 姿态误差微分方程 3.2 速度误差微分方程 3.3 位置误差方程 3.4 bias…...

手把手教程:快速设置远程开机,看完就会

今天就给大家带来一份完整、可直接照着操作的远程开机教程,即可实现无需公网 IP、一键远程唤醒,随时随地让设备为你待命。设备支持检查确认主板支持WAKE-ON-LAN(网络唤醒)功能,局域网内需具备两台设备:目标…...

资深大模型工程师详细讲解:RAG召回率优化三重微调实战

✅ 一、核心策略再解构:从“三层次”到“五维协同链路”原有“数据-索引-查询”三层结构非常精准,但为了更贴近企业级复杂场景,我们进一步抽象为 五维协同链路:维度关键目标是否可微调微调切入点1. 数据生成质量构建高质量正负样本…...

关系型数据库星型模型聚合表生成

在关系型数据库(MySQL、Oracle、SQL Server等)中,通过星型模型模拟多维分析结构,高效生成聚合表,解决报表查询慢、多维分析繁琐、实时计算压力大等核心痛点。 一、前置基础 星型模型是关系型数据库模拟多维结构的最优方…...

GNSS导航信号模拟器 卫星导航定位模拟器 GNSS卫星导航定位信号模拟器行业应用解决方案 GNSS模拟器

随着全球卫星导航系统的全面建设与深度应用,各类卫星导航定位授时终端已广泛渗透到交通、物联网、通信、测绘、消费电子等众多领域。但在终端产品的研发、测试、量产全流程中,行业长期面临诸多核心痛点:传统外场实地测试模式需投入大量人力物…...

Java 基础核心知识

文章目录1. 谈谈对AQS的理解2. fail-safe机制与fail-fast机制分别有什么作用3. new String("abc")到底创建了几个对象4. 对序列化和反序列化的理解5. 谈谈对Java中SPI的理解6. String、StringBuffer、StringBuilder区别7. Integer 的判断8. 深拷贝和浅拷贝9. 强引用、…...

csp预习day2

set#include<bits/stdc.h> using namespace std;int main(){// ios::sync_with_stdio(0);// cin.tie(0);// cout.tie(0);int n,m; //值域、询问个数scanf("%d%d",&n,&m);int set[n1]; //大小为n的随机序列for (int i 1; i < n; i){scanf(&qu…...