模拟奥林匹克跳台滑雪比赛
这周我很高兴地欢迎客座博主扎克•彼得斯来描述他是如何实现一个滑雪跳台的模拟,类似于男子高山个人赛事件的平昌冬季奥运会这周五开始。
介绍
如果你不熟悉奥林匹克跳台滑雪比赛,让我们以一个视频来解释它的内容:
为了保持跳跃者的一致性和安全性,有一套完整的标准由国际滑雪联合会关于滑雪跳板的形状/轮廓。这是一张从跳台施工标准显示斜坡的所有规格的文档(通常称为在运行)及降落区。在这个文档中,你可以找到定义图中所示形状的所有数字和方程:
实现
可以想象,这个系统可以以多种方式建模。一种选择是对跳转的每个阶段使用一个有条件启用的子系统,方法与我们的方法类似模拟了上届夏季奥运会的撑杆跳高比赛.另一个选择是在statflow中使用新的Simulink States,就像我们以前做的那样万博1manbetx模拟一个盒子在桌子上跳几个月前。
在这篇文章中,我决定使用Simscape语言来执行滑雪跳跃动态。我认为它将是一个很好的应用程序,利用一些新的功能,在R2017bmodecharts和Simscape功能
一些象征性的你
首先,让我们画一个物体沿着In-run移动的自由体图:
如上所述,FIS标准提供了一个很好的山的轮廓描述(关系形式为y=f(x))。从那里我需要坡度(θ)及曲率半径(R)计算法向力(Fn).这可以通过把山的剖面区分两次得到。为了解决这个问题,我用了符号数学工具箱.如果你还不知道,符号数学工具箱现在已经很好地集成到MATLAB桌面通过MATLAB脚本生活技术。
为了将最终结果引入Simscape语言,我使用了simscapeEquation函数,也来自符号数学工具箱。
Modechart
在我的Simscape组件中,我定义了一个具有3种模式的modechart: In-run, airborne和landing:
我定义了系统从一种模式切换到下一种模式的条件:
Simscape功能
在查看上面的代码时,您可能想知道这些函数像“jumpPkg.jump”。和其他类似的。这些都是Simscape功能,在R2017b中引入。
这样可以提高组件的可读性和实用组件的重用。我将它们打包在一个目录结构中,这个目录结构将为in -run和着陆区域分解不同的方程,允许我为方程提供相同的名称,但不同的路径。这是我的包看起来像:
在这些函数中,我使用了符号数学工具箱导出的方程。这里有一个关于进站坡度的例子。
可以看到,in -run有3个独立的部分,在Simscape函数中使用If/Else语句实现。
下面是模拟结果的动画:
现在轮到你了
有人想给我们的跳线模型增加保真度吗?还有其他你感兴趣模拟的奥运项目吗?请在下面的评论中告诉我们。
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。