xiaoshidejia 发表于 2013-4-3 16:31:30

求教AKISPL函数,能否循环执行(已解决)

本帖最后由 xiaoshidejia 于 2013-4-10 14:55 编辑

一个关节驱动角位移函数是,1d*AKISPL( (MOD(time, 5)) , 0 , SPLINE_9, 0),想用MOD( time , 5 )实现( 0 ,5 )循环执行, 不知道为什么仿真时间超过5s后总是报错,请高手赐教啊!
附上adams中mod函数的定义:MOD(a1, a2) = a1 - INT(a1/a2) * a2

经过修改,加的函数1d*AKISPL( (MOD(time, 5)) , 0 , SPLINE_9, 0)是正确的,可以实现循环执行。出错是因为输入的数据不是封闭的曲线。把spline中的数据Y第一组和最后一组设置成相同的就好了。另外,若将MOD(time, 5)直接替换为time - INT(time/5) * 5不会被Adams识别INT函数会被报错,不知道是我自己设置的原因还是Adams的原因。

wuhanoubao 发表于 2013-4-3 19:28:33

我也碰到过这样的情况,我的函数比你的简单还,我是直接用time不用MOD求余数,那样也不行,后来我直接用MATLAB把 SPLINE的表达式拟合了直接加到驱动上的

myh051305 发表于 2013-4-3 19:35:15

感觉应该是5s以后 你的曲线可能不连续造成的

xiaoshidejia 发表于 2013-4-4 15:06:34

本帖最后由 xiaoshidejia 于 2013-4-4 15:27 编辑

myh051305 发表于 2013-4-3 19:35 static/image/common/back.gif
感觉应该是5s以后 你的曲线可能不连续造成的
现在有个疑惑就是求余的余数是不是只有整数没有小数,那样的话5s之后只有离散的几个点了。
曲线只在(0,5)之间有定义,写这个函数 MOD(time, 5)的目的是让它的自变量在(0,5)之间一直循环,从而使动作重复执行。
matlab中的mod函数是有小数的,理论上1d*AKISPL( (MOD(time, 5)) , 0 , SPLINE_9, 0)应该是对着的吧,不知道为什么超过5s就不行了。
PS:谢谢版主~

xiaoshidejia 发表于 2013-4-4 15:09:25

wuhanoubao 发表于 2013-4-3 19:28 static/image/common/back.gif
我也碰到过这样的情况,我的函数比你的简单还,我是直接用time不用MOD求余数,那样也不行,后来我直接用MAT ...

因为spline是在(0 , 5)之间定义的,直接用time没法让spline这个曲线循环执行,5s之后就不动了。

xiaoshidejia 发表于 2013-4-9 21:59:54

wuhanoubao 发表于 2013-4-3 19:28 static/image/common/back.gif
我也碰到过这样的情况,我的函数比你的简单还,我是直接用time不用MOD求余数,那样也不行,后来我直接用MAT ...

求指教,怎么用matlab把spline表达式拟合,我得到的都是分段多项表达式,这样情况太复杂就没办法加在驱动上了。
页: [1]
查看完整版本: 求教AKISPL函数,能否循环执行(已解决)