💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
四旋翼无人机具有成本较低、设备简单、飞行时间灵活等特点,近些年被广泛应用于军事和民用领域,如目标侦察、应急救援、农业植保、无人机灯光表演。随着任务复杂度的增加,单架无人机往往难以满足任务需求,因此无人机集群控制及其应用由此成为目前的研究热点,多无人机集群能够提高执行任务效率和灵活度。无人机队形变换控制方法是实现多无人机编队飞行的前提,集群无人机队形重构问题是我们要考虑的一个重要问题,让每架无人机都能从初始位置无碰撞的到达最终位置,进而保证队形重构过程中代价最小或能耗最优。其中目标分配问题最多利用匈牙利算法进行解决,但是在多无人机轨迹规划时普遍存在计算难度大、规划时间增长、规划效率难以满足实际需求的问题。因此,探索计算简便、效率高的多无人机路径规划算法是目前迫切需要的。
无人机集群控制及其应用——无人机编队仿真研究
一、引言
无人机集群控制是指通过先进的通信、导航和控制算法,实现多架无人机之间的协同、协调和高效的任务执行。随着无人机技术的不断发展,无人机编队飞行得到了越来越多的关注。与单架无人机相比,无人机编队可以显著提高其完成作战任务的效率,如执行侦查、打击、通信中继、环境监测、灾害救援、交通监管等多种任务。
二、无人机集群控制技术
无人机集群的控制技术包括通信技术、路径规划技术、碰撞避免技术、分布式控制技术、集中式控制结构、混合式控制结构、任务与资源分配以及实时数据处理等方面。
- 通信技术:实现无人机之间的实时数据传输和共享,确保集群控制的准确性和稳定性。这通常采用无线通信技术,如Wi-Fi、LoRa、Zigbee或定制的无人机专用通信协议。
- 路径规划技术:通过对任务区域进行建模和分析,确定最优的路径规划方案,使无人机能够高效地完成任务。常用的路径规划算法有A*算法、Dijkstra算法和遗传算法等。
- 碰撞避免技术:利用无人机之间的通信和传感器技术,感知周围环境和其他无人机的状态,避免碰撞事件的发生。常用的碰撞避免算法有最近邻算法、虚拟势场算法和避障路径规划算法等。
- 控制结构:
- 集中式控制结构:有一个主控单元负责全局信息和任务分配,但存在计算复杂度高、反应速度慢等问题。
- 分布式控制结构:更加灵活,适用于动态环境,但协调合作难度较大。
- 混合式控制结构:结合了两者的优点,既包含统一全局的中央管理模块,也采用分布式结构中每个成员无人机之间的通信方式。
三、无人机编队仿真研究
无人机编队飞行可以大幅提高作战效率,但也面临多机任务协同分配、传感器数据融合等问题。无人机编队仿真研究旨在通过模拟无人机编队的飞行过程,验证和优化编队控制算法。
- 编队运动模型:
- 采用长机-僚机结构,建立以僚机速度方向为X轴且建立固连于僚机的旋转坐标系。
- 根据两机相对运动关系建立编队运动数学模型,设计控制器进行仿真验证。
- 控制器设计:
- 设计一种小脑模型神经网络(CMAC)与PID并行控制器,利用PID构成反馈控制,CMAC构成前馈控制。
- 以双机编队为基础对控制器进行仿真验证,仿真结果表明该控制器能够实现编队队形保持与重构,并且与传统PID控制器相比,在受到指令扰动及控制器参数变动时,长机与僚机间距变化较小,调节过程明显加快,具有更强的鲁棒性。
四、无人机编队应用
无人机编队的应用领域十分广泛,主要包括以下几个方面:
- 侦察:无人机集群可以在不同区域进行搜索和侦查,及时发现和评估威胁。在军事领域,这可以提高作战效率和准确性;在民用领域,则可用于环境监测、交通监管等任务。
- 打击:通过搭载武器和感应设备,无人机集群可以对打击目标进行反应和打击。这在军事领域具有显著优势,能够快速响应并摧毁敌方目标。
- 通信中继:无人机集群可以作为临时的通信中继节点,提高通信覆盖范围和可靠性。在自然灾害发生时,这种应用尤为重要,可以确保救援行动的通信畅通。
- 环境监测:无人机集群可以快速巡查各个区域,获取空气质量、水质、土壤等信息,为环境保护和研究提供支撑。
- 灾害救援:在地震、洪水等自然灾害发生时,无人机集群可以快速定位受困人员并提供实时数据支持救援行动。
五、结论
无人机集群控制及应用技术是一项复杂而富有挑战性的领域,涉及多个学科和技术。随着技术的不断发展和进步,无人机集群控制技术将在更多领域发挥重要作用。未来的无人机集群将具备更高的智能化水平和自主决策能力,能够应对更加复杂和多变的任务场景。同时,随着技术的不断进步和应用领域的不断拓展,无人机集群的成本也将逐渐降低,推动其在民用和商用领域的广泛应用。
📚2 运行结果
主函数部分代码:
% 该程序用到 % main.m : % 主函数 % calc.m : % 位置计算函数,实际上是将矩阵的点绘制到固定坐标位置 % 例如矩阵 array_f 中第一行第二列中的1 表示一架无人机。在模型场景中 % 他的位置实际上是(90, 30),这个计算过程就是通过这个函数计算得到,知道他的功能就行。 % % move.m : % 位置移动函数,该函数主要功能是做点的位置移动,不需要理会。 % % my_function.m : % 算法函数,需要完成的算法函数,具体要完成什么在函数中有说明 % clc clear all symbol = 'bo'; % 打点颜色符号(b. 蓝点; bo蓝圈) symbol1 = 'wo'; % 打点颜色符号(w. 白点; wo白圈) dt = 1; % 采样步距 v = 1; % 速度 % 设置两点之间距离 width = 10; % 做 8*8 矩阵 19 个点 字符:F 初始矩阵 array_f = [0 1 1 1 1 1 1 0; 0 0 1 0 0 0 0 0; 0 0 1 0 0 1 0 0; 0 0 1 1 1 1 0 0; 0 0 0 0 0 1 0 0; 0 0 1 0 0 0 0 0; 0 0 1 0 0 0 0 0; 0 1 1 1 0 0 0 0]; % 做 8*8 矩阵 19 个点 字符:Z 目标矩阵 array_z = [0 1 1 1 1 1 1 0; 0 1 0 0 0 1 0 0; 0 0 0 0 1 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 0 0 1 0 0; 1 1 1 1 1 1 0 0]; %场景的范围 xmin = 0;xmax = width * 8 + 20;ymin = 0;ymax = width * 8 + 20; % 创建一个空的坐标图 axis([xmin xmax ymin ymax]); %设定坐标范围 figure(1); hold on ; %保留绘图内容 % 初始化矩阵 % 该矩阵用于保存开始坐标位置 实际上是一个二维矩阵,矩阵的索引号就是 ID 号 第一位元素为 x 轴坐标,第二位元素为 y 轴坐标 % 例如: id_sta_addr(7, 1) 表示 ID7 的无人机 X 轴坐标位置; 同理 id_sta_addr(7, 2)表示 ID7 的无人机 Y 轴坐标位置 id_sta_addr = zeros(19,2); % 该矩阵用于保存结束坐标位置 id_sto_addr = zeros(19,2); % 该矩阵用于无人机在飞行过程中的临时坐标信息 id_cur_addr = zeros(19,2); % 该矩阵用于保存所有无人机的最终要飞行的时间 是一个一维数组, 同上索引和就是ID号 % 例如 id_tm(1) 表示 ID1的无人机 飞行的时间 id_tm = zeros(19, 1); % 临时变量 index = 1; % 给飞机实时编号,行扫描 安置无人机初始位置 实际上就是按比例显示F 这个函数不需要关心 % 他的工作就是 扫描 8*8 的矩阵,然后将矩阵中为 1 元素的位置按比例在图纸上用圆圈描绘出来 % 其中 两无人机的 位置宽带设置由 width 决定,如果 width = 10 ,则表示两无人机位置宽度为10个单位宽度 % 在该循环中 calc(i, j, width) 函数 是将 'F' 按比例放大并安置无人机到模型当中 % 其中 ID 的扫描顺序为: 第一行从左边第一列开始,到最后一列依次定义。 % 例如:array_f 中第一行第二列的 定义为 ID1; array_f 中第一行第七列的 定义为 ID6; 以此类推 for i = 1: 8 for j = 1: 8 % start 坐标 if array_f(i, j) == 1 % 做矩阵点位置应该实际场景 [id_sta_addr(index, 1), id_sta_addr(index, 2)] = calc(i, j, width); % 安置飞机 plot(id_sta_addr(index, 1), id_sta_addr(index, 2), 'bo'); index = index + 1; end end end % 临时变量 保存ID 变化的位置信息 temp_info = zeros(19, 2); % 算法部分 完成 my_function 函数即可 % temp_info 保存着各个ID的变化信息 temp_info = my_function(array_f, array_z); % 将矩阵中各个 ID 的位置信息映射到 实际的位置上 % 其中 temp_info(id, 1) 表示的 id n 的 x 轴坐标; temp_info(id, 2)表示的 id n 的 y 轴坐标 for id=1:19 [id_sto_addr(id, 1) , id_sto_addr(id, 2)] = calc(temp_info(id, 1), temp_info(id, 2), width); end pause(2); % % 测试部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % id_sto_addr = id_sta_addr; % % % calc(2, 2, width); 中(2,2)表示无人机终止位置坐标,width表示位宽 % %id_sto_addr(7, 1); 中(8,1)表示8 表示 ID, 1 表示 X坐标, 2 表示Y坐标 % % 表示 ID 7的点 移动到(2,2) 的位置 % [id_sto_addr(7, 1) , id_sto_addr( 7, 2)] = calc(2, 2, width); % [id_sto_addr(8, 1) , id_sto_addr( 8, 2)] = calc(3, 5, width); % [id_sto_addr(9, 1) , id_sto_addr( 9, 2)] = calc(2, 6, width); % [id_sto_addr(10, 1), id_sto_addr(10, 2)] = calc(4, 4, width); % [id_sto_addr(11, 1), id_sto_addr(11, 2)] = calc(5, 4, width); % [id_sto_addr(12, 1), id_sto_addr(12, 2)] = calc(8, 5, width); % [id_sto_addr(13, 1), id_sto_addr(13, 2)] = calc(7, 6, width); % [id_sto_addr(14, 1), id_sto_addr(14, 2)] = calc(8, 6, width); % [id_sto_addr(16, 1), id_sto_addr(16, 2)] = calc(8, 1, width); % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %计算 各个无人机运行时间 % 假设无人机 开始位置设置为(x1, y1),终止位置设置为(x2,y2) 则他们运行时间为: % t = sqrt((x1 - x2)^2 + (y1 - y2)^2) / v (时间 = 路程 / 速度) % 其中 sqrt 表示开根号 % 这里 使用一个循环则表示计算各个无人机 改变位置需要消耗的时间 for i=1:19 id_tm(i)=sqrt((id_sto_addr(i, 1)-id_sta_addr(i, 1))^2 + (id_sto_addr(i, 2)-id_sta_addr(i, 2))^2) / v; %计算这个 Step 的移动时间 end % 前面使用的 for 循环已经 计算出所有飞机飞行或改变位置的消耗时间 % 由于无人机的时间有长有短,所以要得到最后变化的队形,肯定是按照最长时间计算变化时间 %这里就是获取最大的变化时间 max_tm = max(id_tm); % 该部分有两重循环, 第一重循环是表示 时间 扫描表示的是时间更新 其中 dt 表示无人机飞行过程中的更新时间 默认dt = 1 % 如果 dt = 1则表示 1s 更新一次飞行状态 % 可以不用理会 这个 写算法用不到 for t=0:dt:max_tm % 扫描19个点 for index = 1:19 % 单点移动 [id_cur_addr(index, 1), id_cur_addr(index, 2)] = move(index, ... id_sta_addr, ... id_sto_addr, ... id_cur_addr, ... t, ... id_tm, ... v); end % 停顿一段时间显示 pause(0.1);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]张思宇.多无人机协同航迹规划及其控制方法研究[D].北京理工大学,2016.
[2]卢燕梅,宗群,张秀云,鲁瀚辰,张睿隆.集群无人机队形重构及虚拟仿真验证[J].航空学报,2020,41(04):248-259.
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取