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

基于simulink的双摆运动系统建模与仿真.使用simulink建立一个双摆的运动模型

基于simulink的双摆运动系统建模与仿真.使用simulink建立一个双摆的运动模型,然后通过matlab调用该模型,并显示运动效果和运动轨迹。 使用版本matlab2022a

打开Simulink新建空白模型,先别急着拉模块——双摆这玩意儿动力学方程写起来能要人命。咱先把问题简化:假设两个摆杆质量均匀,关节无摩擦,直接上牛顿力学推导(具体方程网上能搜到,这里直接给结论)。模型核心是四个微分方程,对应两个摆杆的角度和角速度。

从Library Browser拖出四个Integrator模块,分别代表θ₁、ω₁、θ₂、ω₂。这时候别傻乎乎手动连线,直接上Function模块暴力破解动力学方程。双击Function模块输入:

function [dtheta1, domega1, dtheta2, domega2] = double_pendulum(theta1, omega1, theta2, omega2) m1 = 1; m2 = 1; L1 = 1; L2 = 1; g = 9.8; % 魔鬼就在分母里 denominator = (m1 + m2)*L1 - m2*L1*cos(theta1 - theta2)^2; dtheta1 = omega1; domega1 = (m2*L2*omega2^2*sin(theta1 - theta2)... - (m1 + m2)*g*sin(theta1))... / (L1*denominator); dtheta2 = omega2; domega2 = ((m1 + m2)*(L1*omega1^2*sin(theta1 - theta2)... - g*sin(theta2))... + m2*L2*omega2^2*sin(theta1 - theta2)*cos(theta1 - theta2))... / (L2*denominator); end

这坨代码看着头疼?其实就四个微分方程在互相伤害。注意分母里那个cos平方项,仿真发散多半是它归零导致的——后面调参时给初始角度别设太大。

接上Scope模块看波形前,建议先插个XY Graph模块。设置两个摆杆末端坐标:

x1 = L1*sin(theta1); y1 = -L1*cos(theta1); x2 = x1 + L2*sin(theta2); y2 = y1 - L2*cos(theta2);

这时候点运行大概率会报错——别慌,把求解器换成ode45,最大步长改到0.01。初始角度设个温和值比如θ₁=π/3,θ₂=π/4,速度都设零。跑起来看到波形开始鬼畜?把最大步长再砍半试试。

模型存为double_pendulum.slx,切到MATLAB命令行:

simOut = sim('double_pendulum', 'StopTime', '10'); x2 = simOut.logsout.getElement('x2').Values.Data; y2 = simOut.logsout.getElement('y2').Values.Data; % 画个骚气的轨迹动画 figure; hold on; plot(x2, y2, 'Color', [0.5 0.5 0.5 0.3]); h = plot(nan, nan, 'ro-'); axis equal; for k = 1:10:length(x2) set(h, 'XData', [0, x1(k), x2(k)], 'YData', [0, y1(k), y2(k)]); drawnow pause(0.01); end

跑完这段能看到摆锤划出的混沌轨迹——像不像量子物理学家喝醉后的涂鸦?试着把m2调成3公斤,轨迹立马变得像被猫挠过的毛线团。这种非线性系统对初始条件敏感得要命,把θ₁初始值从π/3改成π/3+0.001,运行十秒后轨迹完全亲妈不认。

遇到仿真卡住别急着砸键盘,检查下有没有出现除以零的情况。实在不行在分母里加个eps保命:

denominator = (m1 + m2)*L1 - m2*L1*cos(theta1 - theta2)^2 + eps;

最后留个坑:把下方摆杆换成弹簧连接,Simulink模型会复杂到让你想转行卖煎饼——不过那又是另一个故事了。

http://www.cnnetsun.cn/news/39885.html

相关文章:

  • 5个实用技巧彻底解决PhpSpreadsheet内存不足问题
  • JMeter接口测试之文件上传
  • 从零开始:5步搞定BDD100K数据集训练,新手也能轻松上手![特殊字符]
  • java计算机毕业设计陕西理工大学返校管理系统 高校学生返校审批与宿舍信息一体化平台 基于Vue+SpringBoot的校园返校及住宿服务系统
  • 36亿参数撬动韩国AI生态:Kakao Kanana-1.5-v-3b-instruct多模态模型深度解析
  • 如何用AI快速修复老旧视频?SeedVR2-7B让1080P修复仅需0.8秒
  • 轻量级AI新范式:重新定义企业智能部署的终极方案
  • OpenMower测试实战:从零到一的智能割草机器人验证指南
  • MotionGPT终极指南:用语言模型生成人类运动的完整方法
  • TL494 BUCK电路完整指南:从原理到PCB制作的实战教程
  • ZVT量化框架模块化设计终极指南:5步快速上手智能交易系统
  • 10、深入理解SELinux类型规则与Apol工具的使用
  • 视频生成技术革命:LightVAE如何重塑创作效率边界
  • WordPress 专业建筑行业公司网站主题模板 – Constructo v5.0.0
  • noVNC剪贴板同步完全指南:解决远程复制粘贴难题
  • FusionSpec投机推理:让大模型推理速度飙升的优化策略
  • WPS VBA 7.1插件技术实现与自动化办公解决方案深度解析
  • Qwen3-VL-4B-Instruct-FP8:如何用40亿参数重塑企业级多模态AI生态?
  • Logto身份认证系统入门指南:从零构建安全登录体系
  • 【Java毕设全套源码+文档】基于Java的教学评价管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于Java的教务管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 7、自定义报告处理器:Puppet 中的数据处理与监控
  • 8、Puppet 报告处理与 PuppetDB 探索
  • 14、创建自定义仪表盘:从基础到趋势分析
  • 人工智能专利投资机遇:2024年关键趋势与战略布局
  • 终极指南:如何利用FlatBuffers构建高性能数据交换系统
  • 基于springboot + vueOA校务管理系统(源码+数据库+文档)
  • Notepad4 文本编辑器:从零开始搭建高效编程环境
  • 打卡信奥刷题(2531)用C++实现信奥 P2024 [NOI2001] 食物链
  • 如何快速掌握Step1X-3D:新手入门完整指南