|
@@ -66,70 +66,70 @@ speedBindings={
|
|
|
}
|
|
|
|
|
|
def getKey():
|
|
|
- tty.setraw(sys.stdin.fileno())
|
|
|
- select.select([sys.stdin], [], [], 0)
|
|
|
- key = sys.stdin.read(1)
|
|
|
- termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
|
|
|
- return key
|
|
|
+ tty.setraw(sys.stdin.fileno())
|
|
|
+ select.select([sys.stdin], [], [], 0)
|
|
|
+ key = sys.stdin.read(1)
|
|
|
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
|
|
|
+ return key
|
|
|
|
|
|
|
|
|
def vels(speed,turn):
|
|
|
- return "currently:\tspeed %s\tturn %s " % (speed,turn)
|
|
|
+ return "currently:\tspeed %s\tturn %s " % (speed,turn)
|
|
|
|
|
|
if __name__=="__main__":
|
|
|
- settings = termios.tcgetattr(sys.stdin)
|
|
|
-
|
|
|
- pub = rospy.Publisher('/robot0/cmd_vel', Twist, queue_size = 2)
|
|
|
- rospy.init_node('teleop_twist_keyboard')
|
|
|
-
|
|
|
- speed = rospy.get_param("~speed", 0.25)
|
|
|
- turn = rospy.get_param("~turn", 0.4)
|
|
|
- x = 0
|
|
|
- y = 0
|
|
|
- z = 0
|
|
|
- th = 0
|
|
|
- status = 0
|
|
|
-
|
|
|
- try:
|
|
|
- print(msg)
|
|
|
- print(vels(speed,turn))
|
|
|
- while(1):
|
|
|
- key = getKey()
|
|
|
- if key in moveBindings.keys():
|
|
|
- x = moveBindings[key][0]
|
|
|
- y = moveBindings[key][1]
|
|
|
- z = moveBindings[key][2]
|
|
|
- th = moveBindings[key][3]
|
|
|
- elif key in speedBindings.keys():
|
|
|
- speed = speed * speedBindings[key][0]
|
|
|
- turn = turn * speedBindings[key][1]
|
|
|
-
|
|
|
- print(vels(speed,turn))
|
|
|
- if (status == 14):
|
|
|
- print(msg)
|
|
|
- status = (status + 1) % 15
|
|
|
- else:
|
|
|
- x = 0
|
|
|
- y = 0
|
|
|
- z = 0
|
|
|
- th = 0
|
|
|
- if (key == '\x03'):
|
|
|
- break
|
|
|
-
|
|
|
- twist = Twist()
|
|
|
- twist.linear.x = x*speed; twist.linear.y = y*speed; twist.linear.z = z*speed;
|
|
|
- twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = th*turn
|
|
|
- pub.publish(twist)
|
|
|
-
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
-
|
|
|
- finally:
|
|
|
- twist = Twist()
|
|
|
- twist.linear.x = 0; twist.linear.y = 0; twist.linear.z = 0
|
|
|
- twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0
|
|
|
- pub.publish(twist)
|
|
|
-
|
|
|
- termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
|
|
|
+ settings = termios.tcgetattr(sys.stdin)
|
|
|
+
|
|
|
+ pub = rospy.Publisher('/robot0/cmd_vel', Twist, queue_size = 2)
|
|
|
+ rospy.init_node('teleop_twist_keyboard')
|
|
|
+
|
|
|
+ speed = rospy.get_param("~speed", 0.25)
|
|
|
+ turn = rospy.get_param("~turn", 0.4)
|
|
|
+ x = 0
|
|
|
+ y = 0
|
|
|
+ z = 0
|
|
|
+ th = 0
|
|
|
+ status = 0
|
|
|
+
|
|
|
+ try:
|
|
|
+ print(msg)
|
|
|
+ print(vels(speed,turn))
|
|
|
+ while(1):
|
|
|
+ key = getKey()
|
|
|
+ if key in moveBindings.keys():
|
|
|
+ x = moveBindings[key][0]
|
|
|
+ y = moveBindings[key][1]
|
|
|
+ z = moveBindings[key][2]
|
|
|
+ th = moveBindings[key][3]
|
|
|
+ elif key in speedBindings.keys():
|
|
|
+ speed = speed * speedBindings[key][0]
|
|
|
+ turn = turn * speedBindings[key][1]
|
|
|
+
|
|
|
+ print(vels(speed,turn))
|
|
|
+ if (status == 14):
|
|
|
+ print(msg)
|
|
|
+ status = (status + 1) % 15
|
|
|
+ else:
|
|
|
+ x = 0
|
|
|
+ y = 0
|
|
|
+ z = 0
|
|
|
+ th = 0
|
|
|
+ if (key == '\x03'):
|
|
|
+ break
|
|
|
+
|
|
|
+ twist = Twist()
|
|
|
+ twist.linear.x = x*speed; twist.linear.y = y*speed; twist.linear.z = z*speed;
|
|
|
+ twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = th*turn
|
|
|
+ pub.publish(twist)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+ finally:
|
|
|
+ twist = Twist()
|
|
|
+ twist.linear.x = 0; twist.linear.y = 0; twist.linear.z = 0
|
|
|
+ twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0
|
|
|
+ pub.publish(twist)
|
|
|
+
|
|
|
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
|
|
|
|
|
|
|