✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
“13 自由度摩托车模型”一个可以模拟摩托车行为的多体系统的实现。因此,假设摩托车由 6 个由关节连接的独立刚体组成。(它的属性由与 Yamaha FJR 1300 匹配的 56 个参数描述)。摩托车零件有后轮、后摇臂、主体、转向头、前叉和前轮。利用经典力学的欧拉-拉格朗日形式推导了13个二阶非线性常微分运动方程。这个包含 13 个二阶 ODE 的系统将摩托车的运动描述为骑手施加的力(发动机扭矩、转向扭矩、前/后制动力)的函数。线性化为 26 个耦合的一阶 ODE 这个方程组可以作为 RightHandSide 函数提供给 matlab 内置 ODEsolver 之一,计算时间 t 的 13 个广义坐标(q_i's)中的每一个的二阶导数(广义加速度)。通过这种方式,我计算了两种场景的模拟,一个特技和一个 stoppie。
⛄ 部分代码
function [] = createUIcontrols
figure_handle = findobj('Tag','figure_handle');
data = figure_handle.UserData;
data.Play = 1;
figure_handle.UserData = data;
btnPause = uicontrol(figure_handle,'Style','pushbutton','String','Pause','Callback',@ PauseCallback,'OuterPosition',[38.8000 686.4000 34.0000 31.0000]);
btnPlay = uicontrol(figure_handle,'Style','pushbutton','String','Play','Callback',@ PlayCallback,'OuterPosition',[5.0000 686.4000 34.0000 31.0000]);
btnStop = uicontrol(figure_handle,'Style','pushbutton','String','Stop','Callback',@ StopCallback,'OuterPosition',[73.0000 686.4000 34.0000 31.0000]);
%%
function [] = PauseCallback(source,~)
dat = figure_handle.UserData;
dat.Play = 0;
figure_handle.UserData = dat;
end
function [] = StopCallback(source,~)
dat = figure_handle.UserData;
dat.Play = 0;
dat.Index = 1;
figure_handle.UserData = dat;
% load('stoppie_3.mat','q','qd','t'); q(1),qd(1),t(1)
animateFram1_1();
end
function [] = PlayCallback(source,~)
Dat = figure_handle.UserData;
Dat.Play = 1;
figure_handle.UserData = Dat;
i = figure_handle.UserData.Index;
load('stoppie_3.mat','q','qd','t');
animateFram1_1(q,qd,t); % q(i:length(q)),qd(i:length(q)),t(i:length(q))
end
end
%%
⛄ 运行结果
⛄ 参考文献
[1]张梦娇, 李瑞歌, 李辉,等. 基于MATLAB的仿真模拟在大学物理教学及实验中的应用[J]. 农业网络信息, 2016(11):3.