페이지에서 파이썬 스크립트를 실행하기위한 특별한 프레임이었던 온라인 코스를 하나하고있었습니다. 이 연습의 내 과제는 주행 거리계를 계산하는 것이고 속도는 주어졌습니다.초보자 python 스크립트, odometry
페이지에서이 스크립트는 외모 : 나는 ROS 사용하여 동일한 작업을 수행하고자하는 http://snag.gy/NTJGz.jpg 이제
:
명확한 코드는 같습니다 : https://github.com/tum-vision/autonavx_ardrone/blob/master/ardrone_python/src/example1_odometry.py
거의 같은 운동을하지만 ROS에있다 이 online_course 버전의 코드를 함수 콜백에 추가해야한다는 정보가 있지만 시도했지만 작동하지 않습니다.
내 코드 :
#!/usr/bin/env python
#ROS
import rospy
import roslib; roslib.load_manifest('ardrone_python')
from ardrone_autonomy.msg import Navdata
import numpy as np
def __init__(self):
self.position = np.array([[0], [0]])
def rotation_to_world(self, yaw):
from math import cos, sin
return np.array([[cos(yaw), -sin(yaw)], [sin(yaw), cos(yaw)]])
def callback(self, t, dt, navdata):
self.position = self.position + dt * np.dot(self.rotation_to_world(navdata.rotZ), np.array([[navdata.vx], [navdata.vy]]))
print("received odometry message: vx=%f vy=%f z=%f yaw=%f"%(navdata.vx,navdata.vy,navdata.altd,navdata.rotZ))
print(self.position)
if __name__ == '__main__':
rospy.init_node('example_node', anonymous=True)
# subscribe to navdata (receive from quadrotor)
rospy.Subscriber("/ardrone/navdata", Navdata, callback(self, t, dt, navdata))
rospy.spin()
는 제발 올바른, 난 완전히 파이썬에 초보자입니다. 때문에 라인에서
Traceback (most recent call last): File "./example1_odometry.py", line 28, in rospy.Subscriber("/ardrone/navdata", Navdata, callback(self, t, dt, navdata)) NameError: name 'self' is not defined
은 다음과 같습니다 :
Traceback (most recent call last): File "./example1_odometry.py", line 28, in rospy.Subscriber("/ardrone/navdata", Navdata, callback(self, t, dt, navdata)) NameError: name 'self' is not defined
당신이 쓰고있는 수업입니까 (제 생각 엔)? 그렇다면, 모든 코드를'def myclass :'섹션에 넣으십시오. – ha9u63ar
@hagubear 당신은'class MyClass :'를 의미합니까? – jonrsharpe
@jonrsharpe 예 그래요! 그 점을 지적 해 주셔서 감사합니다. 내 언어를 한 언어에서 다른 언어로 전환하는 것을 유감스럽게 생각합니다. – ha9u63ar