• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

虚拟刚体模型的四旋翼无人机群复杂障碍物的环境航行控制附Matlab 实现

武飞扬头像
matlab科研助手
帮助2

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

基于虚拟刚体模型的四旋翼无人机群在复杂障碍物环境中航行控制的主要步骤如下:

1使用传感器(如摄像头、激光雷达等)对周围环境进行感知,检测和识别障碍物,获取环境信息。

路径规划:基于感知到的环境信息,采用适当的路径规划算法(如A*算法、RRT算法等)计算无碰撞的路径。此路径应避开障碍物,并满足任务需求。

群控制策略:根据路径规划结果,设计合适的群控制策略,使无人机群能够有效协作并保持安全距离,在给定的航线上运动。

位置估计和导航控制:使用传感器来进行位置估计,获得无人机的当前状态信息。然后,通过导航控制算法(如PID控制器、模型预测控制器等)计算适当的控制指令,以维持无人机的期望轨迹。

障碍物回避:在航行过程中,如果无人机接近障碍物,使用避障算法(如局部避障、动态路径规划等)进行实时避障决策。根据环境感知信息,调整无人机的航迹,以避免碰撞。

群通信与协调:为实现群体智能和协作,在无人机之间通过无线通信建立一个群体通信网络,共享位置信息、航迹计划和传感器数据。这有助于无人机之间的协同工作和决策。

需要注意的是,基于虚拟刚体模型的四旋翼无人机群在复杂障碍物环境中航行控制是一项相对复杂的任务。它需要综合考虑感知、路径规划、群控制、避障、通信和导航等多个方面因素,并结合适当的算法和技术来实现。此外,系统的安全性和鲁棒性也是重要的考虑因素,在设计和实施过程中需加以关注。

本文提出了不确定性影响下四旋翼无人机(UAV)的非线性跟踪控制系统。假设平移动力学和姿态动力学中存在非结构化扰动,直接在特殊欧几里德群上开发几何非线性自适应控制器。特别是,提出了一种新形式的自适应控制项,以保证稳定性,同时补偿四旋翼动力学中不确定性的影响。给出了严格的数学稳定性证明。通过激进动作的数值示例和实验结果说明了所需的特征。

⛄ 部分代码

function UAVs_formation = set_formation(n_uavs, formation)

%% Line

    if formation == "line"

        if n_uavs == 4

            r1 = [0; -1.5; 0];
            r2 = [0; -0.5; 0];
            r3 = [0; 0.5; 0];
            r4 = [0; 1.5; 0];
            UAVs_formation = [r1 r2 r3 r4];

        end 

        if n_uavs == 8

            r1 = [0; -3.5; 0];
            r2 = [0; -2.5; 0];
            r3 = [0; -1.5; 0];
            r4 = [0; -0.5; 0];
            r5 = [0;  0.5; 0];
            r6 = [0;  1.5; 0];
            r7 = [0;  2.5; 0];
            r8 = [0;  3.5; 0];

            UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8];

        end 

        if n_uavs == 16

            r1 = [0; -7.5; 0];
            r2 = [0; -6.5; 0];
            r3 = [0; -5.5; 0];
            r4 = [0; -4.5; 0];
            r5 = [0; -3.5; 0];
            r6 = [0; -2.5; 0];
            r7 = [0; -1.5; 0];
            r8 = [0; -0.5; 0];
            r9 = [0;  0.5; 0];
            r10= [0;  1.5; 0];
            r11= [0;  2.5; 0];
            r12= [0;  3.5; 0];
            r13= [0;  4.5; 0];
            r14= [0;  5.5; 0];
            r15= [0;  6.5; 0];
            r16= [0;  7.5; 0];

            UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16];

        end 

        if n_uavs == 32

            r1 = [0; -15.5; 0];
            r2 = [0; -14.5; 0];
            r3 = [0; -13.5; 0];
            r4 = [0; -12.5; 0];
            r5 = [0; -11.5; 0];
            r6 = [0; -10.5; 0];
            r7 = [0; -9.5; 0];
            r8 = [0; -8.5; 0];
            r9 = [0; -7.5; 0];
            r10= [0; -6.5; 0];
            r11= [0; -5.5; 0];
            r12= [0; -4.5; 0];
            r13= [0; -3.5; 0];
            r14= [0; -2.5; 0];
            r15= [0; -1.5; 0];
            r16= [0; -0.5; 0];
            r17= [0;  0.5; 0];
            r18= [0;  1.5; 0];
            r19= [0;  2.5; 0];
            r20= [0;  3.5; 0];
            r21= [0;  4.5; 0];
            r22= [0;  5.5; 0];
            r23= [0;  6.5; 0];
            r24= [0;  7.5; 0];
            r25= [0;  8.5; 0];
            r26= [0;  9.5; 0];
            r27= [0;  10.5; 0];
            r28= [0;  11.5; 0];
            r29= [0;  12.5; 0];
            r30= [0;  13.5; 0];
            r31= [0;  14.5; 0];
            r32= [0;  15.5; 0];

            UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 r32];

        end 
    end

%% Square

if formation == "square"
    
    if n_uavs == 4
        
        r1 = [-3; -3; 0];
        r2 = [ 3; -3; 0];
        r3 = [ 3;  3; 0];
        r4 = [-3;  3; 0];
        
        UAVs_formation = [r1 r2 r3 r4];
        
    end 
    
    if n_uavs == 8
        
        r1 = [-3; -3; 0];
        r2 = [ 0; -3; 0];
        r3 = [ 3; -3; 0];
        r4 = [ 3;  0; 0];
        r5 = [ 3;  3; 0];
        r6 = [ 0;  3; 0];
        r7 = [-3;  3; 0];
        r8 = [-3;  0; 0];
        
        UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8];
        
    end 
    
    if n_uavs == 16
        
        r1 = [-4; -4; 0];
        r2 = [ 0; -4; 0];
        r3 = [ 4; -4; 0];
        r4 = [ 4;  0; 0];
        r5 = [ 4;  4; 0];
        r6 = [ 0;  4; 0];
        r7 = [-4;  4; 0];
        r8 = [-4;  0; 0];
        
        r9 = [-2; -2; 0];
        r10= [ 0; -2; 0];
        r11= [ 2; -2; 0];
        r12= [ 2;  0; 0];
        r13= [ 2;  2; 0];
        r14= [ 0;  2; 0];
        r15= [-2;  2; 0];
        r16= [-2;  0; 0];
        
       
        
        UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16];
        
    end 
    
    if n_uavs == 32
        
        r1 = [-4; -4; 0];
        r2 = [ 0; -4; 0];
        r3 = [ 4; -4; 0];
        r4 = [ 4;  0; 0];
        r5 = [ 4;  4; 0];
        r6 = [ 0;  4; 0];
        r7 = [-4;  4; 0];
        r8 = [-4;  0; 0];
        
        r9 = [-2; -2; 0];
        r10= [ 0; -2; 0];
        r11= [ 2; -2; 0];
        r12= [ 2;  0; 0];
        r13= [ 2;  2; 0];
        r14= [ 0;  2; 0];
        r15= [-2;  2; 0];
        r16= [-2;  0; 0];
        
        r17 = [-6; -6; 0];
        r18 = [ 0; -6; 0];
        r19 = [ 6; -6; 0];
        r20 = [ 6;  0; 0];
        r21 = [ 6;  6; 0];
        r22 = [ 0;  6; 0];
        r23 = [-6;  6; 0];
        r24 = [-6;  0; 0];
        
        r25 = [-5;  5; 0];
        r26 = [-5;    0; 0];
        r27 = [-5; -5; 0];
        r28 = [   0; -5; 0];
        r29 = [ 5; -5; 0];
        r30 = [ 5;    0; 0];
        r31 = [ 5;  5; 0];
        r32 = [   0;  5; 0];
       
        UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 r32];
        
    end 
end 
    
%% M-shape

    if formation == "M-shape"

        if n_uavs == 5

            r1 = [-3.5;  -4; 0];
            r2 = [-3.5;   3; 0];
            r3 = [   0;   0; 0];
            r4 = [ 3.5;   3; 0];
            r5 = [ 3.5;  -4; 0];
            
            UAVs_formation = [r1 r2 r3 r4 r5];

        end 

        if n_uavs == 12

            r1 = [  -8; 5.5; 0];
            r2 = [  -8;  -5; 0];
            r3 = [-3.5;  -5; 0];
            r4 = [-3.5; 1.5; 0];
            r5 = [   0;   0; 0];
            
            r6 = [ 3.5; 1.5; 0];
            r7 = [ 3.5;  -5; 0];
            r8 = [   8;  -5; 0];
            r9 = [   8; 5.5; 0];
            r10= [ 3.5; 5.5; 0];
            r11= [   0;   4; 0];
            r12= [-3.5; 5.5; 0];

            UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12];

        end 

        if n_uavs == 30

            r1 = [  -8; 5.5; 0];
            r2 = [  -8;  -5; 0];
            r3 = [-3.5;  -5; 0];
            r4 = [-3.5; 1.5; 0];
            r5 = [   0;   0; 0];
            
            r6 = [ 3.5; 1.5; 0];
            r7 = [ 3.5;  -5; 0];
            r8 = [   8;  -5; 0];
            r9 = [   8; 5.5; 0];
            r10= [ 3.5; 5.5; 0];
            r11= [   0;   4; 0];
            r12= [-3.5; 5.5; 0];
            
            r13= [   -8;  1.5; 0];
            r14= [   -8; -2.5; 0];
            r15= [ -6.5;   -5; 0];
            r16= [ -4.5;   -5; 0];
            r17= [ -3.5; -2.5; 0];
            r18= [   -2;    1; 0];
            r19= [    2;    1; 0];
            r20= [  4.5;   -5; 0];
            r21= [  6.5;   -5; 0];
            r22= [  3.5; -2.5; 0];
            r23= [    8; -2.5; 0];
            r24= [    8;  1.5; 0];
            r25= [  6.5;  5.5; 0];
            r26= [  4.5;  5.5; 0];
            r27= [    2;  4.5; 0];
            r28= [   -2;  4.5; 0];
            r29= [ -4.5;  5.5; 0];
            r30= [ -6.5;  5.5; 0];
            
            UAVs_formation = [r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30];
        end 
        
        
    end
end

⛄ 运行结果

学新通

学新通

学新通

学新通

学新通

学新通

⛄ 参考文献

学新通

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiafabi
系列文章
更多 icon
同类精品
更多 icon
继续加载