gsmfxsmy 发表于 2017-2-23 15:00:54

堵车仿真(智能点+传感器+if函数+派生函数)

本帖最后由 gsmfxsmy 于 2017-2-23 15:11 编辑


看到了网上的一个小堵车的gif,突发奇想用NX来模拟一下。前车一直往前走,速度为标准余弦函数。后车跟在前车后面,车距近了之后开始减速。
本附件为模拟的第三版。
第一版用到了智能点+传感器+电机+信号,测量两车(智能点)之间的间距,间距小于设定值,(信号设置为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
)
http://www.anyv.net/index.php/article-787198


plus,在第一版中由于电机不能添加在直线副上,需要添加第3辆车绕轴转动,用齿轮齿条副转换成前车的直线运动。
第二第三版中需要使用派生函数,保留了第3辆车。







天光阿宣 发表于 2017-10-8 08:11:33

这个好像很厉害啊!

我最正经 发表于 2017-2-23 15:40:48

这个好像很厉害啊!

water5666 发表于 2017-3-1 18:19:01

好,不错。。。

water5666 发表于 2017-3-1 18:19:34

好,不错。。。

lollby 发表于 2017-3-14 12:01:45

厉害了我的哥!学习学习!

ug给了我奋斗 发表于 2017-8-22 09:22:41

成功就像怀孕 大家都会恭喜你 但是没人知道你被搞了   多少遍才成功

葛永平* 发表于 2017-9-16 09:13:40

楼主好强大

魔剧 发表于 2018-9-11 08:52:17

{:smile:}非常厉害

NXP* 发表于 2021-5-16 08:42:54

很棒,加油
页: [1] 2
查看完整版本: 堵车仿真(智能点+传感器+if函数+派生函数)