3 import rospy, oculusprimesocket, math, re, thread, time
4 from geometry_msgs.msg
import Twist
16 linear = data.linear.x
17 angular = data.angular.z
19 twistid = rospy.Time.now()
20 thread.start_new_thread(waitifnecessary, (linear, angular, twistid) )
26 if linear == 0
and angular == 0:
30 while twistid == threadid
and smoothingdelay - (rospy.Time.now()-lastmove).to_sec() > 0:
33 if twistid == threadid:
38 global lastlinear, lastangular, lastmove
40 lastmove = rospy.Time.now()
43 if linear == lastlinear
and angular == lastangular
and linear == 0
and angular == 0:
55 if linear == 0
and angular == 0:
58 elif linear > 0
and angular == 0:
61 elif linear < 0
and angular == 0:
64 elif linear == 0
and angular > 0:
67 elif linear == 0
and angular < 0:
70 elif linear > 0
and not angular == 0:
71 angle = str(int(math.degrees(angular))/arcmult)
72 cmd =
"arcmove "+d+
" "+angle
74 elif linear < 0
and not angular == 0:
75 angle = str(int(math.degrees(angular))/arcmult)
76 cmd =
"arcmove -"+d+
" "+angle
91 rospy.init_node(
'cmd_vel_listener', anonymous=
False)
92 rospy.on_shutdown(cleanup)
93 lastmove = rospy.Time.now()
101 rospy.Subscriber(
"cmd_vel", Twist, twistCallback)
def move(linear, angular)
def waitifnecessary(linear, angular, threadid)