💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
随着可再生能源技术的不断发展,水下航行器能量收集器在节能与环保方面具有重要意义。本文针对水下航行器能量收集器的动力学特性与控制策略展开研究,探讨了不同工作模式下能量收集器的性能优化方法,为提高水下航行器的能源效率和自主续航能力提供理论支持。
通过建立动力学模型、设计控制器以及开展实验验证,得出以下结论:
1)能量收集器在不同工作模式下具有明显的性能优势,可提高水下航行器的能源效率和自主续航能力。
2)所设计的基于状态依赖Riccati方程的非线性次优控制器具有较好的控制性能,可实现能量收集器的高效运行。
3)实验结果验证了能量收集器控制策略的有效性,为实际应用提供了理论支持。
未来研究可针对不同类型水下航行器能量收集器的特点,进一步优化控制策略,提高其在实际应用中的性能表现。
📚2 运行结果
主函数部分代码:
clear clc close all global Mmat Props X Y Z K M N inputs; global var1; var1 = 1; save_msg = 0; test_msg = 'PositiveB_1en5pcnt'; case_msg = 'RollStab'; x = 0; y = 0; z = 0; phi = 0; theta = 0; psi = 0; u = 0; v = 0; w = 0; p = 0; q = 0; r = 0; props = 0; delR = 0; delS = 0; Xprops = 4.0; inputs = [Xprops;delR;delS]; [Mmat,Props,X,Y,Z,K,M,N] = RemusAUV(); told = 0; tend = 500; tspan = told:1:tend; init = [u,v,w,p,q,r,x,y,z,phi,theta,psi]; StateVec = [init]; TVec = told; while (told <= tend) told tspan = told:0.1:told + 1; [t,states] = ode45('odefunc',tspan,init); u = states(end,1); v = states(end,2); w = states(end,3); p = states(end,4); q = states(end,5); r = states(end,6); x = states(end,7); y = states(end,8); z = states(end,9); phi = states(end,10); theta = states(end,11); psi = states(end,12); told = t(end); init = [u,v,w,p,q,r,x,y,z,phi,theta,psi]; StateVec = vertcat(StateVec,init); TVec = vertcat(TVec,told); end figure(1) plot(TVec,StateVec(:,1),'LineWidth',2); xlabel('time(s)') ylabel('velocity(m/s)') title('Surge Velocity'); grid on % if (max(abs(StateVec(:,1))) < 0.01) % ylim([-1 1]); % end set(gca, 'FontName', 'Calibri'); set(gca, 'FontSize', 17); set(gcf, 'Color', [1, 1, 1]) if (save_msg == 1) fpath = 'C:\Users\sdivi\Documents\AUV\Matlab\control test\Dynamic Model\Remus\Plots\'; filename = [test_msg,'_',case_msg,'_','SurgeVel']; saveas(gcf,fullfile(fpath,filename),'jpeg'); end figure(2) plot(TVec,StateVec(:,2),'LineWidth',2); xlabel('time(s)') ylabel('velocity(m/s)') title('Sway Velocity'); grid on % if (max(abs(StateVec(:,2))) < 0.01) % ylim([-1 1]); % end set(gca, 'FontName', 'Calibri'); set(gca, 'FontSize', 17); set(gcf, 'Color', [1, 1, 1]) if (save_msg == 1) fpath = 'C:\Users\sdivi\Documents\AUV\Matlab\control test\Dynamic Model\Remus\Plots\'; filename = [test_msg,'_',case_msg,'_','SwayVel']; saveas(gcf,fullfile(fpath,filename),'jpeg'); end figure(3) plot(TVec,StateVec(:,3),'LineWidth',2); xlabel('time(s)') ylabel('velocity(m/s)') title('Heave Velocity'); grid on % if (max(abs(StateVec(:,3))) < 0.01) % ylim([-1 1]); % end set(gca, 'FontName', 'Calibri'); set(gca, 'FontSize', 17); set(gcf, 'Color', [1, 1, 1]) if (save_msg == 1) fpath = 'C:\Users\sdivi\Documents\AUV\Matlab\control test\Dynamic Model\Remus\Plots\'; filename = [test_msg,'_',case_msg,'_','HeaveVel']; saveas(gcf,fullfile(fpath,filename),'jpeg'); end
🎉3 参考文献
[1]徐东,李晓斌,杨雪.欠驱动条件下自主水下航行器轨迹跟踪动态性能预设控制[J/OL].系统工程与电子技术,1-14[2023-12-12]
部分理论引用网络文献,若有侵权联系博主删除。