news 2026/2/12 14:37:50

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/2/11 4:37:35

趋势科技:速修复这个严重的 Apex Central RCE漏洞

聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士趋势科技修复了位于 Apex Central 本地版中的一个严重漏洞CVE-2025-69258,可导致攻击者以系统权限执行任意代码。Apex Central 是一款基于 web 的管理面板,帮助管理员…

作者头像 李华
网站建设 2026/2/7 0:30:05

PCBA再流焊温度曲线优化操作指南

PCBA再流焊温度曲线优化实战全解:从原理到缺陷控制 你有没有遇到过这样的情况? 贴片机精度拉满,钢网开孔也合规,锡膏印刷看起来完美无瑕——可一进回流炉,问题就来了:QFN底下空洞超标、0402电阻“立碑”成…

作者头像 李华
网站建设 2026/2/6 3:25:14

快速理解LVGL组件在家居场景的布局技巧

用LVGL打造智能家居界面:从布局原理到实战技巧你有没有遇到过这样的情况?在开发一款智能温控面板时,明明代码逻辑没问题,设备状态也能正常读取,可一到屏幕上——按钮歪斜、文字重叠、换行错乱……整个界面看起来像“车…

作者头像 李华
网站建设 2026/2/10 10:00:15

互补投影哈希(CPH)算法实现详解

互补投影哈希(Complementary Projection Hashing,简称 CPH)是一种高效的二进制哈希方法,它通过学习互补的投影方向来生成紧凑的哈希码,能够在保持数据相似性的同时最大化各比特位的独立性和信息量。相比传统哈希算法,CPH 强调比特间互补性,避免冗余投影,从而在图像检索…

作者头像 李华
网站建设 2026/1/29 23:07:38

救命神器9个AI论文平台,本科生轻松搞定毕业论文!

救命神器9个AI论文平台,本科生轻松搞定毕业论文! AI 工具正在改变论文写作的规则 在当前高校教育中,毕业论文已成为本科生不得不面对的一项重要任务。从选题到开题,从撰写到降重,每一个环节都充满了挑战。而随着 AI 技…

作者头像 李华
网站建设 2026/2/5 17:59:32

CANFD差分信号传输机制图解说明

深入理解CAN FD差分信号传输:为何它能扛住汽车电子的“电磁风暴”?在一辆现代智能汽车中,从发动机控制到自动驾驶感知系统,成百上千个电子控制单元(ECU)需要实时、可靠地“对话”。而支撑这场复杂通信的骨干…

作者头像 李华