In [1]:
from general_wheel import*
from mobile_ss import*
from tools import*
In [2]:
f1 = general_wheel(v_alpha = -pi/2, v_beta = 0, v_gamma = pi/2, d = 0)
f1.exp
Out[2]:
In [3]:
f2 = general_wheel(v_alpha = pi/2, v_beta = 0, v_gamma = -pi/2, d = 0)
f2.exp
Out[3]:
In [4]:
b3 = Symbol('\\beta _{3c}')
a = Symbol('a')
c3 = general_wheel(v_alpha = pi, v_beta = b3 , v_gamma = 0, L=a)
c3.exp
Out[4]:
In [5]:
mob = mobile_ss();
S = mob.conf_kinematic_model([f1,f2,c3],['f','f','c'])
S
Out[5]:
In [6]:
mob.C1_star
Out[6]:
In [26]:
#q vector
p1 = Symbol('phi_1')
p2 = Symbol('phi_2')
p3 = Symbol('phi_3')
q = [x,y,theta,b3,p1,p2,p3]
#involutive span of S
span = bracket_span([S[0:,0],S[0:,1]],q)
In [30]:
spanMatrix = list2matrix(span)
In [31]:
def is_reducible(span_z,vector_z):
dimz,m = vector_z.shape
if span_z.rank() < dimz:
print "Reducible system, dim(span_z) < dim(z)"
return True
else:
print "Non Reducible system dim(span_z) => dim(z)"
return False
In [32]:
is_reducible(spanMatrix,Matrix(q))
Out[32]: