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