def Wdesired(x):
''' x is the augmented variable represented in the network
it obeys \tau_s x_\alpha = -x_\alpha + Wdesired_\alpha(x)
x is related to the original augmented variable \tilde{x} by x_\alpha = varFactors_\alpha \tilde{x}_\alpha
where varFactors_alpha = angleFactor | velocityFactor | torqueFactor
now, original augmented variable obeys \dot{\tilde{x}}=f(\tilde{x})
so, we have Wdesired_\alpha(x) = \tau_s * varFactor_alpha * f_\alpha(\tilde{x}) + x
'''
# \tilde{x} (two zeroes at x[N:N+N//2] are ignored
xtilde = x/varFactors
if XY: angles = armAngles(xtilde[:N])
else: angles = xtilde[:N//2]
# f(\tilde{x}), \dot{u} part is not needed
qdot,dqdot = evolveFns(angles,xtilde[Nobs-N//2:Nobs],xtilde[Nobs:],XY,dt)
# returns deltaposn if XY else deltaangles
# \tau_s * varFactors_alpha * f_\alpha(\tilde{x}) + x
return np.append(np.append(qdot,dqdot),np.zeros(N//2))*varFactors*tau + x
# integral on torque u also
# VERY IMP to compensate for synaptic decay on torque
#return np.append( np.append(qdot,dqdot)*tau*varFactors[:Nobs] + x[:Nobs], np.zeros(N//2) )
# normal synaptic decay on torque u
##### For the reference, choose EITHER robot simulation rateEvolveProbe above
##### OR evolve Wdesired inverted / evolveFns using odeint as below -- both should be exactly same
input_ff_rec_robot_nengo_directu_ocl.py 文件源码
python
阅读 21
收藏 0
点赞 0
评论 0
评论列表
文章目录