A(1) 是一个矩阵但不取值。它只是一个简单的正向运动学矩阵
from sympy import *
nlinks = 5
a = symbols('a1:%d' % nlinks)
alpha = symbols('alpha1:%d' % nlinks)
d = symbols('d1:%d' % nlinks)
theta = symbols('theta1:%d' % nlinks)
def A(index):
index = index-1 #decreasing for indexing
atemp =a[index]
alphatemp = alpha[index]
dtemp = d[index]
thetatemp = theta[index]
print(atemp, alphatemp, dtemp, thetatemp)
R = Matrix(
[[cos(thetatemp), -sin(thetatemp) * cos(alphatemp), sin(thetatemp) * cos(alphatemp), atemp * cos(thetatemp)],
[sin(thetatemp), cos(thetatemp) * cos(alphatemp), -cos(thetatemp) * sin(alphatemp), atemp * sin(thetatemp)],
[0, sin(alphatemp), cos(alphatemp), dtemp],
[0, 0, 0, 1]])
return R
print(A(1))
A(1).subs((a1, 0))
请提供任何解决方案
答案 0 :(得分:1)
In [38]: R=A(1)
In [39]: R
Out[39]:
⎡cos(θ₁) -sin(θ₁)⋅cos(α₁) sin(θ₁)⋅cos(α₁) a₁⋅cos(θ₁)⎤
⎢ ⎥
⎢sin(θ₁) cos(α₁)⋅cos(θ₁) -sin(α₁)⋅cos(θ₁) a₁⋅sin(θ₁)⎥
⎢ ⎥
⎢ 0 sin(α₁) cos(α₁) d₁ ⎥
⎢ ⎥
⎣ 0 0 0 1 ⎦
查看定义的变量
In [51]: a1
....
NameError: name 'a1' is not defined
In [52]: a
Out[52]: (a₁, a₂, a₃, a₄)
In [53]: theta
Out[53]: (θ₁, θ₂, θ₃, θ₄)
In [54]: alpha
Out[54]: (α₁, α₂, α₃, α₄)
subs
带有几个变量:
In [55]: R.subs({theta[0]:10, alpha[0]:pi})
Out[55]:
⎡cos(10) sin(10) -sin(10) a₁⋅cos(10)⎤
⎢ ⎥
⎢sin(10) -cos(10) 0 a₁⋅sin(10)⎥
⎢ ⎥
⎢ 0 0 -1 d₁ ⎥
⎢ ⎥
⎣ 0 0 0 1 ⎦