news 2026/2/7 3:59:51

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于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模型会复杂到让你想转行卖煎饼——不过那又是另一个故事了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 13:22:19

5个实用技巧彻底解决PhpSpreadsheet内存不足问题

5个实用技巧彻底解决PhpSpreadsheet内存不足问题 【免费下载链接】PhpSpreadsheet A pure PHP library for reading and writing spreadsheet files 项目地址: https://gitcode.com/gh_mirrors/ph/PhpSpreadsheet PhpSpreadsheet是PHP开发者处理Excel文件的强大工具&…

作者头像 李华
网站建设 2026/2/7 16:42:23

JMeter接口测试之文件上传

最近用JMeter做接口测试,频繁遇到了文件上传的接口,与其他一般接口的处理方式不一样,想着分享下,希望能给测试同学一点启发。 文章将围绕三个部分进行展开: 一、用户场景 二、接口请求参数 三、JMeter脚本编写步骤…

作者头像 李华
网站建设 2026/2/4 19:33:30

java计算机毕业设计陕西理工大学返校管理系统 高校学生返校审批与宿舍信息一体化平台 基于Vue+SpringBoot的校园返校及住宿服务系统

计算机毕业设计陕西理工大学返校管理系统i54bu9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。陕西理工大学每学期开学都要统计上万名学生的返程车次、健康状态、宿舍安排&#…

作者头像 李华
网站建设 2026/2/4 21:10:43

如何用AI快速修复老旧视频?SeedVR2-7B让1080P修复仅需0.8秒

当你翻出多年前的家庭录像,发现画面模糊、色彩失真时,是否曾想过用AI技术一键恢复其原始光彩?字节跳动开源的SeedVR2-7B视频修复模型正以惊人的效率重新定义视频修复的标准——仅需0.8秒即可完成1080P视频的专业级修复,让珍贵的影…

作者头像 李华