news 2026/6/15 13:13:19

cart-pole 建模

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cart-pole 建模

使用matlab symbolic toolbox进行拉格朗日建模,并转为LTI模型

%% Cart-Pole Lagrangian modeling + symbolic linearization (upright, theta=0) clear; clc; syms x dx ddx real syms th dth ddth real syms M m l g u real % --- Generalized coordinates q = [x; th]; dq = [dx; dth]; ddq = [ddx; ddth]; % --- Kinetic & Potential energy % Cart velocity: dx % Pole mass position: px = x + l*sin(th), pz = l*cos(th) % Velocities: vpx = dx + l*cos(th)*dth; vpz = -l*sin(th)*dth; v2 = vpx^2 + vpz^2; T_cart = 0.5*M*dx^2; T_pole = 0.5*m*v2; T = T_cart + T_pole; % Potential energy (zero at upright th=0 ⇒ V = m*g*l*(1 - cos(th))) V = m*g*l*(1 - cos(th)); % Lagrangian L = T - V; % --- Generalized forces (only x is actuated by force u) Q = [u; 0]; % --- Euler-Lagrange: d/dt(dL/ddq) - dL/dq = Q dLd_dq = jacobian(L, q).'; % ∂L/∂q dLd_ddq = jacobian(L, dq).'; % ∂L/∂dq % Time derivative of dLd_ddq (treat q,dq as functions of time) % Use total derivative: d/dt = (∂/∂q)*dq + (∂/∂dq)*ddq d_dt_dLd_ddq = jacobian(dLd_ddq, q)*dq + jacobian(dLd_ddq, dq)*ddq; EL = d_dt_dLd_ddq - dLd_dq - Q; % = 0 gives equations of motion % Solve for accelerations ddq = [ddx; ddth] sol = solve(EL == 0, ddq); ddx_expr = simplify(sol.ddx); ddth_expr = simplify(sol.ddth); % --- Build nonlinear state-space: X=[x;dx;th;dth] f = [ dx; ddx_expr; dth; ddth_expr ]; g_u = jacobian(f, u); % input channel (should be a 4x1) f0 = subs(f, u, 0); % drift when u=0 % --- Linearize around upright equilibrium: x=0, dx=0, th=0, dth=0, u=0 xeq = [0; 0; 0; 0]; ueq = 0; A = simplify( subs( jacobian(f, [x, dx, th, dth]), ... [x, dx, th, dth, u], [xeq.', ueq] ) ); B = simplify( subs( g_u, [x, dx, th, dth, u], [xeq.', ueq] ) ); % --- Optional: pretty-print A, B disp('A ='); pretty(A); disp('B ='); pretty(B); % --- 验证:将A,B化简到常见形式(象征参数不数值化) A_simplified = simplify(A); B_simplified = simplify(B); % --- 如果想代入具体参数,取消注释以下行: % Mv = 1.0; mv = 0.1; lv = 0.5; gv = 9.81; % A_num = double(subs(A_simplified, {M,m,l,g}, {Mv,mv,lv,gv})); % B_num = double(subs(B_simplified, {M,m,l}, {Mv,mv,lv}));
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:31:59

通信协议入门:rs232和rs485的区别全面讲解

从调试口到工业总线:RS232与RS485的本质差异与实战选型指南你有没有遇到过这样的场景?一台设备通过串口连不上PC,换根线就好了;或者在工厂里布了一圈RS485总线,结果数据乱跳、通信时断时续。更头疼的是,明明…

作者头像 李华
网站建设 2026/6/9 21:37:52

电车顶不住,涨价卖车,但外资油车降价狙击,进退失据!

2026刚开始部分电车企业的中低端车型已悄然涨价,显然他们无法承受补贴减少和购置税减半征收带来成本压力,而选择悄悄涨价,可是外资油车却不让他们喘息,率先降价反击,这让电车陷入两难境地。电车对于中低端车型悄然涨价…

作者头像 李华
网站建设 2026/5/20 3:36:49

4位全加器实验常见问题排查与数码管调试技巧

4位全加器联调实战:从电路搭建到数码管显示的完整排错指南 你有没有遇到过这种情况——逻辑设计明明无懈可击,Verilog代码仿真波形完美,结果一接到七段数码管上,显示出来的却是“8”变成“3”,或者“00”居然亮了两个数…

作者头像 李华
网站建设 2026/6/10 17:21:25

基于Java+SpringBoot+SSM动漫分享系统(源码+LW+调试文档+讲解等)/动漫交流平台/动漫资源分享/动漫社区系统/动漫分享网站/动漫共享平台

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/6/8 4:06:30

嵌入式—51单片机day1

嵌入式:以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统一.相关概念MCU(Micro Ctroller Unit):微控制器,集成度高,将所有功能集成到一块芯片中(CPU、 RAM、ROM、IO控制器、UART控制器、定时…

作者头像 李华