gsmfxsmy 发表于 2017-2-21 18:10:44

其实是拿8.5做高速路堵车的模拟视频啦

看到了网上的一个小堵车的gif,突发奇想用nx来模拟一下。前车一直往前走,速度为标准余弦函数,具体设置详见附图(前车速度.jpg)。
后车跟在前车后面,车距近了之后开始减速。
本附件为第三版。
第一版用到了智能点+传感器+电机+信号,测量两车(智能点)之间的间距,间距小于设定值,(信号设置为0,电机不提供驱动)开始减速,间距大于设定值,(信号设置为1,电机开始驱动)开始加速。
思路比较简单,可以设置后车加减速的延迟时间(模拟人的反应时间)。
缺点比较多:1、是只能实现一次不撞车;2、电机参数和传感器参数不好设置;3、加速度减速度不可知。

第二版和第三版用到了智能点+传感器+(派生+if)函数;通过派生函数获取智能点之间的间距,当间距小于设定值,加速度为负值,当间距大于设定值,加速度为正值。
优点:设定参数较少,操作较少,通过直接设定加速度减速度来控制两车间距,可以实现两车次的加速减速不撞车。
缺点:1、后车减速为0后,会出现倒车;2、后车加减速无延迟。

第三版增加了速度上限和下限。控制参数如下:
缺点:1、后车加减速无延迟;2、函数比较复杂。
函数1
IF( Se001-10:                                    如果间距小于10

      IF( VX(108,1,1): 0, 0, -10),                      成立,如果速度小于0,加速度为0 ,如果速度大于0,加速度为-10
      0,
      IF( VX(108,1,1)-15: 8, 0, 0)                     不成立, 如果速度小于15,加速度为8 ,如果速度大于等于15,加速度为0
)
函数2
IF( Se001-10:                                 如果间距小于10
   IF( Se001-5:                                           (间距小于10)成立,如果间距小于5
      IF( VX(108,1,1): 0, 0, -10),                                                      (间距小于5)成立,如果速度小于0,加速度为0 ,如果速度大于0,加速度为-10
      0,
      IF( VX(108,1,1)-15: -5, 0, 0)),                                                (间距小于5)不成立,如果速度小于0,加速度为0 ,如果速度大于0,加速度为-5
   0,
   IF( VX(108,1,1)-15: 5, 0, 0)                   (间距小于10)不成立, 如果速度小于15,加速度为5 ,如果速度大于等于15,加速度为0
)



plus,由于电机不能添加在直线副上,需要添加第3辆车绕轴转动,用齿轮齿条副转换成前车的直线运动。




admin 发表于 2017-2-28 09:13:56

感谢分享如果能够贴个图就更好了
页: [1]
查看完整版本: 其实是拿8.5做高速路堵车的模拟视频啦