Simulin万博1manbetxk上的Guy

万博1manbetxSimulink &基于模型的设计

模拟奥运会跳台滑雪比赛

本周我很高兴地欢迎客座博主扎克•彼得斯来描述一下他是如何实现模拟滑雪跳台的,类似的男子高山个人事件平昌冬奥会这周五开始。

简介

如果你不熟悉奥运会跳台滑雪比赛,让我们先看一段视频来解释它包括什么:

为了保持跳楼者的一致性和安全性,有一套彻底的标准由国际滑雪联合会(FIS)关于滑雪跳台坡道的形状。这是一张从跳台山施工标准显示斜坡的所有规格的文档(通常称为在运行)及降落区。在这个文档中,你可以找到所有的数字和方程定义的形状,如图所示:

滑雪跳台坡道和着陆区域的规格

实现

可以想象,这个系统可以用多种方式建模。一种选择是为跳跃的每个阶段使用有条件启用的子系统,与我们的方法类似模拟上届夏季奥运会撑杆跳比赛.另一个选择是在statflow中使用新的Simulink States,就像我们过去所做的那万博1manbetx样模拟一个盒子在桌子上跳几个月前。

在这篇文章中,我决定使用Simscape语言实现滑雪跳跃动态。我认为这是一个很好的应用程序,可以利用R2017b中提供的一些新功能,例如modechartsSimscape功能

一些象征性的前期工作

首先,让我们画出一个物体沿In-run运动的自由体图:

自由体图

如上所述,FIS标准对山丘剖面给出了很好的描述(关系形式为y=f(x))。从这里,我需要斜率(θ)和曲率半径(R)来计算法向力(Fn).这可以通过对山剖面进行两次微分得到。为了帮助你,我用了符号数学工具箱.如果你还不知道,符号数学工具箱现在已经很好地集成到MATLAB桌面MATLAB实时脚本技术。

使用符号数学工具箱进行斜率推导

为了将最终结果转换成Simscape语言,我使用了simscapeEquation函数,也来自符号数学工具箱。

使用simscapeEquation

Modechart

在我的Simscape组件中,我定义了一个有3种模式的modechart: In-run, airborne和landing:

modechart

我定义了系统从一种模式切换到另一种模式的条件:

转换

Simscape功能

在查看上面的代码时,您可能想知道像“jumpPkg.jump”这样的函数是什么。坡度”等类似内容。这些都是Simscape功能,在R2017b中引入。

这些允许改进组件的可读性和实用程序组件的重用。我将它们打包在一个目录结构中,该目录结构将为in -run和着陆区域分解单独的方程,允许我为方程提供相同的名称,但路径不同。下面是我的包的样子:

我的包

在这些函数中,我使用了使用符号数学工具箱导出的方程。这是一个例子的斜率在运行。

斜坡模拟景观函数

如您所见,in -run有3个独立的部分,使用Simscape函数中的If/Else语句实现。

下面是模拟结果的动画:

跳台滑雪动画

现在轮到你了

有人想给跳线模型增加保真度吗?还有其他你感兴趣模拟的奥运项目吗?请在下面的评论中告诉我们。

|

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。