Sympy 潜艇没有价值

时间:2021-02-18 02:36:22

标签: python sympy

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))

请提供任何解决方案

1 个答案:

答案 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     ⎦
相关问题