本周文件交换选择

我们最好的用户反馈

弹跳杆模拟器

汪东城 本周的选择是 弹跳杆模拟器 通过 马太辛
作为一名机械工程师,我喜欢模拟物理现象。当你有运动方程时,你可以很容易地在MATLAB中使用 解决歌唱 .当然,您也可以使用Simulink或我们的物理建模工具来模拟动态系统。使用ODE求解器,您可以检测事件来模拟 弹力球 .(顺便说一下,这里有一个例子 弹力球 使用Simulink进行模拟)。
当我看到Matthew设计的弹跳棒的模拟时,我笑了。这是一个很好的扩展弹球模拟器:
  • 杆子在二维空间中运动。位置状态包括$ \left[x, y, \dot{x}, \dot{y}\right] $
  • 杆也可以旋转。转动状态包括$ \left[\theta, \dot{\theta}\right] $
  • 与地面的碰撞(接触)可能发生在多种情况下:杆的顶部撞击地面,杆的底部撞击地面,或杆撞击地面(大多数情况下)与地面平行。在此基础上,计算出杆的新状态。
  • 有两种不同的操作模式:飞行和滑动。通常,杆处于飞行模式。当杆达到一定状态时,它最终会切换到滑动模式。
模拟完成后,将显示动态动画。
bouncing_rod_animation.gif
这是一个很好的示例,可以帮助您理解ODE求解器的概念和求解器的事件处理能力。这有助于教授这些概念。然而,还有一些额外的效果可以添加到这个模拟中,使其更加真实的物理。
  • 增加摩擦-你可以看到,特别是当杆进入滑动模式。杆子一直在滑动。加上摩擦力slidingPhase.m可以做到这一点。
  • 改进滑动切换逻辑-目前,杆切换到滑动模式时,它检测到质心(COM)是接近地面。这个逻辑表明,当COM接近于零时,杆几乎平行于地面。在大多数情况下,这可能是一个合理的逻辑。然而,它并不能准确地代表杆以垂直速度平落在地上的情况。在现实中,杆会因撞击而反弹,但在这种情况下,模拟切换到滑动。这是一个杆子与地面平行下落的例子。一种方法是,不仅要看COM,还要看杆的垂直速度。另一种方法是计算碰撞后的状态,只有在垂直速度低于阈值时才切换到滑模。
flat_fall.gif
这些都是改进的想法,但是对于那些想要用事件处理模拟动态系统的人来说,它们并没有剥夺这一条目所提供的任何价值。

评论

干得好,马修!试一试,让我们知道你的想法 在这里 或者留下 评论 马太福音。
|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。

Baidu
map