26
26
import os , time , sys , traceback
27
27
from serial .serialutil import SerialException , SerialTimeoutException
28
28
from serial import Serial
29
+ import rospy
29
30
30
31
SERVO_MAX = 180
31
32
SERVO_MIN = 0
@@ -47,7 +48,7 @@ def __init__(self, port="/dev/ttyUSB0", baudrate=57600, timeout=0.5):
47
48
self .encoder_count = 0
48
49
self .writeTimeout = timeout
49
50
self .interCharTimeout = timeout / 30.
50
-
51
+ self . motors_reversed = rospy . get_param ( "~motors_reversed" , False )
51
52
# Keep things thread safe
52
53
self .mutex = thread .allocate_lock ()
53
54
@@ -268,6 +269,8 @@ def get_encoder_counts(self):
268
269
raise SerialException
269
270
return None
270
271
else :
272
+ if self .motors_reversed :
273
+ values [0 ], values [1 ] = - values [0 ], - values [1 ]
271
274
return values
272
275
273
276
def reset_encoders (self ):
@@ -278,6 +281,8 @@ def reset_encoders(self):
278
281
def drive (self , right , left ):
279
282
''' Speeds are given in encoder ticks per PID interval
280
283
'''
284
+ if self .motors_reversed :
285
+ left , right = - left , - right
281
286
return self .execute_ack ('m %d %d' % (right , left ))
282
287
283
288
def drive_m_per_s (self , right , left ):
0 commit comments