有空再写
首先我们先确定广义坐标,并同时计算出来摆杆的转动惯量

接着列拉格朗日方程

计算动能(转动动能)

计算势能(取铰链处为零势能高度):

计算L

计算拉格朗日方程中的中间量

将上述的中间量带入拉格朗日方程,得到动力学模型:

变换一下形式:

我们可以假设角度比较小,因为控制一般都是在平衡点附近。
这时,
然后得出下面的状态空间方程。
经常情况下角度没有那么小,这个时候我们就不能假设
,所以就得到非线性的控制系统。
所以这个时候我们这样操作,将这个二阶微分方程转化成一阶微分方程组,这样就可以用matlab的ode45微分方程求解器求取数值解,求得的数值解即为系统状态 y。然后得到系统状态之后,控制器基于当前状态计算输入,再施加给执行器进行控制。

我们先把微分方程求解器做出来:
直接把g=9.8,l=1和u=0带入式子;
[t,y] = ode45(@odeBai,[0 10],[1;0]);
plot(t,y(:,1),'-o',t,y(:,2),'-o');
function dy = odeBai(t,y)
dy = zeros(2,1);
dy(1) = y(2);
dy(2) = -3 * 9.8 / ( 2 * 1 )*sin(y(1))+0;
end
从图片也可能看出规律:

这下,我们就求出来了位置(角度)时间曲线和速度(角速度)时间曲线。
然后,我们做一个控制器,把输入加上去。
控制器代码:

总程序代码:
clear all;
clc;
[t,y] = ode45(@odeBai,[0 10],[1;0]);
plot(t,y(:,1),'-o',t,y(:,2),'-o');
function dy = odeBai(t,y)
dy = zeros(2,1);
tau = PIDController(t,y);
dy(1) = y(2);
dy(2) = -3 * 9.8 / ( 2 * 1 )*sin(y(1)) + 3 * tau /(1*1*1);
end
function tau=PIDController(t,y)
% 目标状态
y1_desire = pi/4;
y2_desire = 0;
% 控制增益
Kp = 1000;
Kd = 500;
% 控制力矩
tau = Kp*(y1_desire-y(1))+Kd*(y2_desire-y(2));
end
仿真图像如下:可以弹道蓝线逐渐逼近pi/4即45度的位置,而橙线从较大的值趋于0,即速度最终为0.

代码:
clear all;
clc;
global m l g
m = 1;
l = 1;
g = 9.8;
[t,y] = ode45(@odeBai,[0 10],[-1;0]);
figure(1);
plot(t,y(:,1),'-o',t,y(:,2),'-o');
figure(2);
x0=0;
y0=0;
v = VideoWriter('Pen.avi');
open(v);
for k=1:200:size(t)
x1=l*cos(y(k,1));
y1=l*sin(y(k,1));
link1_x=[0,x1];
link1_y=[0,y1];
line(link1_x,link1_y,'linewidth',2,'color','b')
axis equal
axis([-1.55 1.55 -1.55 0.55])
grid on;
hold on;
plot(x0,y0,'o','linewidth',2,'color','r');
frame = getframe(gcf);
writeVideo(v,frame);
clf;
end
close(v);
function dy = odeBai(t,y)
dy = zeros(2,1);
tau = PIDController(t,y);
dy(1) = y(2);
dy(2) = -3 * 9.8 / ( 2 * 1 )*sin(y(1)) + 3 * tau /(1*1*1);
end
function tau=PIDController(t,y)
% 目标状态
y1_desire = -pi/4;
y2_desire = 0;
% 控制增益
Kp = 1000;
Kd = 500;
% 控制力矩
tau = Kp*(y1_desire-y(1))+Kd*(y2_desire-y(2));
end
1.matlab动力学建模与simscape验证(代码) - 哔哩哔哩
首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有, 也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加
matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标
一、机器人介绍 此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接
慢跑者与狗问题描述一个慢跑者在平面上沿椭圆以恒定的速率𝒗=𝟏跑步,设椭圆方程为:𝒙=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔(𝒕),𝒚=𝟐𝟎+𝟓𝒔𝒊𝒏(𝒕)。突然有一只狗攻击他,这只狗从原点出发,以恒定速率𝒘跑向慢跑者,狗的运动方向始终指向慢跑者。分别求出𝒘=𝟐𝟎,𝒘=𝟓时狗的运动轨迹。模型建立设时刻t慢跑者的坐标为(𝑿(𝒕),𝒀(𝒕)),狗的坐标为(𝒙(𝒕),𝒚(𝒕))。则𝑿=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔(𝒕),𝒀=𝟐𝟎+𝟏𝟓𝒔𝒊𝒏(𝒕),狗从(0,0)出发,建立狗的运动轨迹的参数方程:由于狗始终对准人,因而狗的速度方向平行于狗与人位置的差向量:消去𝝀,得由题意𝑿=𝟏𝟎+𝟐𝟎𝒄𝒐𝒔𝒕,𝒀=𝟐𝟎+1𝟓𝒔𝒊𝒏(𝒕),狗从(0,0)
在正常工作环境中往往是可以使用无线网络的,此时安装一个matlab也不是什么难事;但是也难免也会遇到一些工作电脑不允许链接无线网络,此时若安装一个matlab则是一件非常痛苦的事,因为其安装包就20多个G,当时我是用手机开热点下载的,仅仅下载安装包就浪费了一个下午+一个晚上; 下面就举一个例子,针对安装过matlab和未安装过matlab的情况去介绍C++调用matlab函数的操作流程:一、封装matlab函数首先把matlab代码封装成函数的形式,下面举一个简单的函数为例;functionc=myadd(a,b)c=a+b;end二、编译matlab函数具体的编译
matlab中矩阵点乘和乘的区别MATLAB中,一、矩阵相乘:表示两个矩阵相乘。二、矩阵点乘:表示矩阵中对应位置的元素分别相乘。三、举例3.1矩阵相乘3.2矩阵点乘MATLAB中,一、矩阵相乘:表示两个矩阵相乘。前提条件:满足矩阵相乘的规则,即前矩阵的列数等于后矩阵的行数。二、矩阵点乘:表示矩阵中对应位置的元素分别相乘。前提条件:满足矩阵点乘的规则,即前后矩阵维度相同。三、举例3.1矩阵相乘Example1:A=[123;456]A=123456>>B=[1;2;3]B=123>>C=A*BC=1432这时如果用点乘就会报错Example2:>>A=[123;456;789]A=1234567
目录1.GM(1,1)模型2. 组合预测模型3. GMDH进行时间序列预测4.运行结果5Matlab代码实现1.GM(1,1)模型灰色预测是一种对具有不确定因素的系统进行预测的方法,能有效解决数据少、序列的完整性及可靠性低的问题。GM(1,1)模型是一种较为常用的灰色模型,GM(1,1)预测模型的建立实质上就是对原始数据序列作一次累加生成,使生成数据序列呈显出一定规律,然后通过建立微分方程模型,求得拟合曲线,进而对系统进行预测。2. 组合预测模型灰色模型是通过对原始数据加工处理来弱化随机性的,若数据存在较大的波动性,预测出来的结果可能会存在较大误差。ARIMA模型对于预测的模型比较理想,要求时
🔗运行环境:Matlab🚩作者:左手の明天🥇精选专栏:《python》🔥推荐专栏:《算法研究》📚选自专栏:《数学建模》🧿优秀专栏:《Matlab神经网络案例分析》目前持续更新的专栏:🥇专栏:MatlabGUI编程技巧🔥专栏:Matlab从无到有系列大家好,我是左手の明天!今天和大家分享数学建模重要模型——马尔可夫链模型。在对数学建模之马尔可夫链模型进行介绍时,首先需要明确两个问题:马氏链模型用来干什么马尔可夫预测法是应用概率论中马尔可夫链(Markovchain)的理论和方法来研究分析时间序列的变化规律,并由此预测其未来变化趋势的一种预测技术。马氏链模型什么时候用应用马尔可夫链的计算方法进行马