【使用高斯原理推导缆绳-拖曳伞系统的动态模型】使用拖缆系统进行微型空中飞行器的空中回收研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、Simulink仿真实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

牵引车辆(母舰)被指令按照一个圆形轨道飞行,从而使被拖曳体(拖曳伞)形成一个具有较小半径和较低速度的圆形轨道,相对于母舰而言。待回收的微型空中飞行器(MAV)调控为跟随拖曳伞的轨道,并以相对较低的空速接近拖曳伞。当MAV对接到拖曳伞时,被拖曳的缆绳和两者(拖曳伞和MAV)被卷回母舰,以完成空中回收。

在本次演示中,使用高斯原理推导缆绳-拖曳伞系统的动态模型。MAV采用导弹导引策略来拦截拖曳伞。

参考文献1:

本文提出了一种使用大型母舰和回收伞旗对微型空中车辆(ARMAVs)进行空中回收的新概念。母舰拖拽着一根附加在电缆上的伞旗,该伞旗的控制与微型空中车辆的飞行模式相匹配。本文利用高斯原理推导了电缆-伞旗系统的动态模型。在多风条件下,可控的伞旗在回收微型空中车辆中发挥了关键作用。我们开发了一种基于伞旗阻力系数的控制方法。基于多链路电缆-伞旗系统的仿真结果展示了空中回收概念的可行性以及伞旗的可控性。

参考文献2:

本文提出了一种利用母船和拖曳伞在飞行中恢复微型空中飞行器(MAVs)的方法。介绍了一种基于高斯原理的母船-缆绳-拖曳伞系统动力学建模方法。利用系统的微分平坦性特性,根据所需的拖曳伞轨道计算母船轨迹,提出了一种基于李雅普诺夫的控制器,以实现母船轨迹的精确跟踪。 

📚2 运行结果

运行视频:

通过百度网盘分享的文件:运行视频.mp4
链接:https://pan.baidu.com/s/1eI0VPXmjQx7fzYED32fUVA 
提取码:tpqr 
--来自百度网盘超级会员V5的分享

部分代码:

% MAV performance parameters
P.mav.Vbar_up = 17;                   % (m/s) upper limit on velocity
P.mav.Vbar_low = 10;                  % (m/s) lower limit on velocity
P.mav.Vdotbar = 1;                    % (m/s^2) limit on velocity increase
P.mav.phibar = 45*(pi/180);           % (rad) roll angle constraint
P.mav.phidotbar = 100*(pi/180);       % (rad/sec) roll rate constraint
P.mav.R = P.mav.V^2/P.g/tan(P.mav.phibar)+5; % (m) min turn radius
P.mav.gambar = 20*(pi/180);           % (rad) flight path constraint
P.mav.gamdotbar = 60*(pi/180);        % (rad/sec) flight path rate constraint
% MAV gimbal parameters
P.mav.gim.elbar = 60*(pi/180);      % maximum gimbal elevation angle
P.mav.gim.eldotbar = 660*(pi/180);  % maximum rate of change of the gimbal elevation angle
P.mav.gim.azbar = 60*(pi/180);      % maximum gimbal azimuth angle
P.mav.gim.azdotbar = 330*(pi/180);  % maximum rate of change of the gimbal azimuth angle
P.mav.gim.az    = 0*(pi/180);       % strapdown azimuth angle
P.mav.gim.el    = 0*(pi/180);       % strapdown elevation angle
% size for display
P.mav.size = 0.1;

%=========================================================================
% camera parameters (on MAV)
P.cam.pix = 480;                                  % size of (square) pixel array
P.cam.fov   = 70*(pi/180);                        % field of view of camera
P.cam.f = (P.cam.pix/2)/tan(P.cam.fov/2);         % focal range
P.cam.pixelnoise = 0;                             % (pixels) - variance of the pixel noise
%
%=========================================================================
% MAV autopilot parameters
P.mav.T_guidance = P.ts;       % sample rate for guidance algorithm
P.mav.T_cam = 1*P.mav.T_guidance;  % sample rate for camera (needs to be integer value of T_guidance in current implimentation)
P.mav.k_V    = 10;             % proportional constant for airspeed
P.mav.k_roll = 10;             % roll attitude hold proportional gain
P.mav.k_pitch = 10;             % pitch gain used in direct pursuit algorithm
P.mav.k_yaw   = 1;             % yaw gain used in direct pursuit algorithm
P.mav.k_az   = 1;              % proportional constant for azimuth angle
P.mav.k_el   = 1;              % proportional constant for elevation angle
P.mav.navigation_ratio = 3.5;  % PRONAV navigation constants
P.mav.sigmoid_gain = 0.2;      % sigmoid gain for roll control
P.mav.tau = 1/1;               % bandwidth of differentiator for line of sight rate and distance rate

%---------------------------------------------------------------------
% MAV Kalman filter parameters
P.mav.ekf.paz0 = .1;  % initial estimate of estimation error of eta_az in radians
P.mav.ekf.pel0 = .1;  % initial estimate of estimation error of eta_el in radians
P.mav.ekf.q_az = .01;  % process noise on eta_az
P.mav.ekf.q_el = .01;  % process noise on eta_el
P.mav.ekf.r_eps_x = 1; % measurement noise on x-pixel
P.mav.ekf.r_eps_y = 1; % measurement noise on y-pixel

%=========================================================================
% parameters for drawing UAVs
P.drawuav.scale = 0.2; % plot scale for UAV

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]Sun, L., Beard, R. W., and Colton, M. B., McLain, T. W., “Dynamics and Control of Cable-drogue System in Aerial Recovery of Micro Air Vehicles Based on Gauss’s Principle.” St. Louis, MO, USA: American Control Conference, June 2009, pp. 4729–4734.

[2]Colton, M. B., Sun, L., Carlson, D. C., and Beard, R. W., "Multi-vehicle Dynamics and Control for Aerial Recovery of Micro Air Vehicles", Int. J. Vehicle Autonomous Systems, Vol. 9, 2011, pp. 78-107.

🌈4 Matlab代码、Simulink仿真实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用高斯混合模型实现视频背景建模和显示运动前景的示例MATLAB代码: ```matlab % 读入视频文件 v = VideoReader('example_video.mp4'); % 初始化模型参数 numGaussians = 3; % 高斯分量数 alpha = 0.1; % 学习速率 threshold = 0.3; % 前景/背景阈值 frameIdx = 1; % 帧计数器 foregroundMasks = []; % 存储前景掩码序列 % 处理每一帧 while hasFrame(v) % 读入帧并转换为灰度图像 frame = readFrame(v); grayFrame = rgb2gray(frame); % 首次处理时,初始化背景模型 if frameIdx == 1 [height, width] = size(grayFrame); backgroundModel = zeros(height, width, numGaussians); foregroundMasks = false(height, width); end % 更新背景模型 for i = 1:height for j = 1:width pixelValue = double(grayFrame(i, j)); matchedComponent = false; for k = 1:numGaussians % 检查该像素点是否属于第k个高斯分量 if abs(pixelValue - backgroundModel(i, j, k)) < 2.5 * sqrt(backgroundModel(i, j, k, 3)) % 更新第k个高斯分量参数 backgroundModel(i, j, k, 1) = (1 - alpha) * backgroundModel(i, j, k, 1) + alpha * pixelValue; backgroundModel(i, j, k, 2) = (1 - alpha) * backgroundModel(i, j, k, 2) + alpha * pixelValue^2; backgroundModel(i, j, k, 3) = (1 - alpha) * backgroundModel(i, j, k, 3) + alpha; matchedComponent = true; break; end end % 如果不属于任何高斯分量,则将其加入新的高斯分量 if ~matchedComponent [~, minIdx] = min(backgroundModel(i, j, :, 3)); backgroundModel(i, j, minIdx, 1) = pixelValue; backgroundModel(i, j, minIdx, 2) = pixelValue^2; backgroundModel(i, j, minIdx, 3) = 1; end end end % 计算每个像素点的背景/前景分类 for i = 1:height for j = 1:width pixelValue = double(grayFrame(i, j)); bgProb = 0; for k = 1:numGaussians % 计算像素点属于第k个高斯分量的概率 bgProb = bgProb + backgroundModel(i, j, k, 1) * normpdf(pixelValue, backgroundModel(i, j, k, 1), sqrt(backgroundModel(i, j, k, 2))); end % 如果背景概率小于阈值,则将该像素点标记为前景 if bgProb < threshold foregroundMasks(i, j) = true; else foregroundMasks(i, j) = false; end end end % 显示原始帧和前景掩码 subplot(1, 2, 1); imshow(frame); title(sprintf('Original Frame (Frame %d)', frameIdx)); subplot(1, 2, 2); imshow(foregroundMasks); title(sprintf('Foreground Mask (Frame %d)', frameIdx)); % 更新帧计数器 frameIdx = frameIdx + 1; end ``` 该代码将读入名为“ example_video.mp4”的视频文件,并使用高斯混合模型计算每个像素点的背景/前景分类。对于每个像素点,该算法将计算像素点属于每个高斯分量的概率,并根据这些概率计算像素点属于背景的概率。如果像素点的背景概率小于阈值,则将该像素点标记为前景。 在处理每个帧时,该代码还将显示原始帧和前景掩码。您可以使用此掩码来提取运动前景并对其进行进一步处理。请注意,此示例代码中的参数可能需要针对您的特定应用进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值