私はpythonで使用されていません。基本的なことだけを知っている。 私はpythonで1行にスーパーロング文字を持つ逆jacobianの計算にmath演算を使用しています。 私の質問は 'pythonは1行に制限文字を持っていますか? 、またはPythonで正しいモジュールを作る方法は? またはPython用の演算で許可されていない演算はありますか?SyntaxError:数式のためのPython構文が無効
私のPythonプログラムが 、ROS platformのために設計されており、これは私のプログラムの一部です:
class Skelplot():
def __init__(self):
....
self.q_raw =[0,0,0]
self.dq_ref =[0,0,0]
....
while not rospy.is_shutdown():
...
dx = x_now - right_hand.x()
dy = y_now - right_hand.y()
dz = z_now - right_hand.z()
self.inverse_jacobian(dx,dy,dz)
self.q_raw[0] = self.dq_ref[0] + self.q_raw[0]
self.q_raw[1] = self.dq_ref[1] + self.q_raw[1]
self.q_raw[2] = self.dq_ref[2] + self.q_raw[2]
...
def inverse_jacobian(self, dx, dy, dz):
self.dq_ref[0] = (-(5*sin(self.q_raw[0] + 2*self.q_raw[1]) - 5*sin(self.q_raw[0] - self.q_raw[2]) + 5*sin(q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) + 10*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 5*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) - 15*sin(self.q_raw[0]) + 10*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((5*cos(self.q_raw[0] + 2*self.q_raw[1]) - 5*cos(self.q_raw[0] - self.q_raw[2]) + 5*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) + 10*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 5*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) - 15*cos(self.q_raw[0]) + 10*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
self.dq_ref[1] = (-(5*sin(self.q_raw[0] - self.q_raw[1]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1]) + 5*sin(self.q_raw[0] - self.q_raw[2]) - 5*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 5*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 10*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1]) + 5*sin(self.q_raw[0] + self.q_raw[2]) + 10*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((5*cos(self.q_raw[0] - self.q_raw[1]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1]) + 5*cos(self.q_raw[0] - self.q_raw[2]) - 5*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 5*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 10*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1]) + 5*cos(self.q_raw[0] + self.q_raw[2]) + 10*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
これは応答です:
Traceback (most recent call last):
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 40, in <module>
class Skelplot():
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 203, in Skelplot
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
NameError: name 'self' is not defined
私も例外では次のようにハンドリングしてみました:
....
def inverse_jacobian(self, dx, dy, dz):
try:
self.dq_ref[0] : ..
self.dq_ref[1] : ..
self.dq_ref[2] : ..
except KeyError:
pass
...
であり、応答は
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 204
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
^
SyntaxError: invalid syntax
あなたはどちらが間違っていますか?よろしくお願いいたします。
'NameError'は字下げの問題のようです。 'self.dq_ref [2]'で2番目のエラーが発生しているので、問題はあなたの '..'のどこかにある可能性が高いです2番目のスニペット。 –
あなたの迅速な対応のためにおめでとう:)。私は正しいと確信しています。私はちょうどその行(self.dq_ref [2] ...)の最後の行を '#'でコメントしようとしています。私は私のプログラムのためにself.dq_ref [2]データが必要です。まだ私にとっては解決されていません。 – adelleodel