我有一个由alpha1,a1 ...... theta4表示的常量列表。
我可以正确打印并读取各个矩阵,但是当我尝试矩阵乘法时,我会收到错误;
print T1 * T2 * T3 * T4
TypeError: can't multiply sequence by non-int of type 'list'
我认为这与浮动倍增有关。
from numpy import matrix
import math
def getTransformationMatrix( alpha, a, d, theta ):
transformationMatrix = matrix([[math.cos(theta),math.cos(alpha)*math.sin(theta),math.sin(alpha)*math.sin(theta) ,a*math.cos(theta)], [math.sin(theta),math.cos(alpha)*math.sin(alpha) ,-math.sin(alpha)*math.cos(theta),a*math.sin(theta)],[0,math.sin(alpha),math.cos(alpha),d],[0,0,0,1]])
return[transformationMatrix];
T1 = getTransformationMatrix( alpha1, a1, d1, theta1)
T2 = getTransformationMatrix( alpha2, a2, d2, theta2)
T3 = getTransformationMatrix( alpha3, a3, d3, theta3)
T4 = getTransformationMatrix( alpha4, a4, d4, theta4)
print T1 * T2 * T3 * T4
答案 0 :(得分:1)
您的getTransformationMatrix
函数会返回一个列表,而您希望它返回一个矩阵。
我怀疑你错误地添加了这些方括号。
def getTransformationMatrix( alpha, a, d, theta ):
transformationMatrix = matrix([[math.cos(theta),math.cos(alpha)*math.sin(theta),math.sin(alpha)*math.sin(theta) ,a*math.cos(theta)], [math.sin(theta),math.cos(alpha)*math.sin(alpha) ,-math.sin(alpha)*math.cos(theta),a*math.sin(theta)],[0,math.sin(alpha),math.cos(alpha),d],[0,0,0,1]])
return [transformationMatrix];
试试这个:
def getTransformationMatrix( alpha, a, d, theta ):
transformationMatrix = matrix([[math.cos(theta),math.cos(alpha)*math.sin(theta),math.sin(alpha)*math.sin(theta) ,a*math.cos(theta)], [math.sin(theta),math.cos(alpha)*math.sin(alpha) ,-math.sin(alpha)*math.cos(theta),a*math.sin(theta)],[0,math.sin(alpha),math.cos(alpha),d],[0,0,0,1]])
return transformationMatrix
看到此错误
TypeError: can't multiply sequence by non-int of type 'list'
要做的第一件事就是不仅打印T1
,T2
等,还打印type(T1)
等。
你会发现它不是你所期望的。