simple_drive.py
Go to the documentation of this file.
1 #!/usr/bin/python
2 
3 import rospy
4 import serial
5 import struct
6 
7 from geometry_msgs.msg import Twist
8 from std_msgs.msg import Float32
9 
10 cmd_byte_map = {
11  'twist': b"\x00",
12  'servo': b"\x02"
13 }
14 
15 def main():
16  rospy.init_node("simple_drive")
17 
18  baudrate = rospy.get_param('~baudrate', 9600)
19  Serial = serial.Serial(baudrate=baudrate)
20  Serial.port = rospy.get_param("~serial_dev")
21  Serial.open()
22 
23  def on_new_twist(data):
24  serial_msg = cmd_byte_map['twist'] + struct.pack("<ff", data.linear.x, data.angular.z)
25  Serial.write(serial_msg)
26 
27  def on_new_servo(data):
28  serial_msg = cmd_byte_map['servo'] + struct.pack("<f", data.data)
29  Serial.write(serial_msg)
30 
31 
32  subscriber_twist = rospy.Subscriber("cmd_vel", Twist, on_new_twist, queue_size=10)
33  subscriber_servo = rospy.Subscriber("servo_pos", Float32, on_new_servo, queue_size=10)
34 
35  rospy.spin()


simple_drive
Author(s): Daniel Snider , Matthew Mirvish
autogenerated on Mon Jun 10 2019 15:05:01