news 2026/4/17 23:45:16

基于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/4/18 9:43:37

VideoPose3D:从2D视频中高效重建3D人体姿态的深度学习框架

VideoPose3D:从2D视频中高效重建3D人体姿态的深度学习框架 【免费下载链接】VideoPose3D Efficient 3D human pose estimation in video using 2D keypoint trajectories 项目地址: https://gitcode.com/gh_mirrors/vi/VideoPose3D 在计算机视觉领域&#xf…

作者头像 李华
网站建设 2026/4/18 8:37:35

Headplane完整使用指南:5分钟快速搭建Headscale管理界面

Headplane完整使用指南:5分钟快速搭建Headscale管理界面 【免费下载链接】headplane A feature-complete Web UI for Headscale 项目地址: https://gitcode.com/gh_mirrors/he/headplane Headplane是一个功能完备的Headscale Web UI管理工具,为Ta…

作者头像 李华
网站建设 2026/4/17 12:29:06

CMATH终极指南:如何评估语言模型的中文数学能力

CMATH终极指南:如何评估语言模型的中文数学能力 【免费下载链接】cmath CMATH: Can your language model pass Chinese elementary school math test? 项目地址: https://gitcode.com/gh_mirrors/cm/cmath CMATH项目是一个专门用于评估语言模型在中文小学数…

作者头像 李华
网站建设 2026/4/18 5:40:12

SeedVR2-7B:0.8秒重塑1080P视频,AI修复效率提升18倍

SeedVR2-7B:0.8秒重塑1080P视频,AI修复效率提升18倍 【免费下载链接】SeedVR2-7B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR2-7B 还在为视频修复耗时长、成本高而头疼吗?🤔 传统视频修复方法处…

作者头像 李华
网站建设 2026/4/5 12:28:52

K-Diffusion 完全指南:3步掌握PyTorch扩散模型实战

K-Diffusion 完全指南:3步掌握PyTorch扩散模型实战 【免费下载链接】k-diffusion Karras et al. (2022) diffusion models for PyTorch 项目地址: https://gitcode.com/gh_mirrors/kd/k-diffusion K-Diffusion 是一个基于 PyTorch 实现的先进扩散模型库&…

作者头像 李华
网站建设 2026/4/18 5:31:54

Tone.js音频插件开发实战:从架构设计到WAM标准完整指南

Tone.js音频插件开发实战:从架构设计到WAM标准完整指南 【免费下载链接】Tone.js A Web Audio framework for making interactive music in the browser. 项目地址: https://gitcode.com/gh_mirrors/to/Tone.js 作为一名Web音频开发者,你是否曾为…

作者头像 李华