def _drive_direct(self,data):
     logger.debug("Drive Direct")
     if not(len(data)==5):
         logger.warning("Direct Drive command should have 5 bytes, recieved %d"%len(data))
     else:
         self.vel_right = pici.bytes2val(data[1],data[2])
         self.vel_left = pici.bytes2val(data[3],data[4])
 def _drive(self,data):
     logger.debug("Drive")
     if not(len(data)==5):
         logger.warning("Drive command should have 5 bytes, received %d"%len(data))
     else:
         # Math for driving in a circle
         vel = pici.bytes2val(data[1],data[2])
         radius = pici.bytes2val(data[3],data[4])
         if radius==32678 or radius==32767:
             # Straight
             self.vel_right = vel
             self.vel_left = vel
         elif radius==-1:
             # turn in place clockwise
             self.vel_right = vel
             self.vel_left = -vel
         elif radius==1 or abs(radius)<1:
             # turn in place counter-clockwise
             self.vel_right = -vel
             self.vel_left = vel
         else:
             # radius = v/omega
             omega = float(vel)/float(radius)  # rad/s
             L = self.L  # distance between wheels in mm
             #R = 65.0/2  # Radius of the wheels
             self.vel_right = vel+omega*L/2  # in mm/s
             self.vel_left =  vel-omega*L/2
Example #3
0
 def _drive(self, data):
     logger.debug("Drive")
     if not (len(data) == 5):
         logger.warning("Drive command should have 5 bytes, received %d" %
                        len(data))
     else:
         # Math for driving in a circle
         vel = pici.bytes2val(data[1], data[2])
         radius = pici.bytes2val(data[3], data[4])
         if radius == 32678 or radius == 32767:
             # Straight
             self.vel_right = vel
             self.vel_left = vel
         elif radius == -1:
             # turn in place clockwise
             self.vel_right = vel
             self.vel_left = -vel
         elif radius == 1 or abs(radius) < 1:
             # turn in place counter-clockwise
             self.vel_right = -vel
             self.vel_left = vel
         else:
             # radius = v/omega
             omega = float(vel) / float(radius)  # rad/s
             L = self.L  # distance between wheels in mm
             #R = 65.0/2  # Radius of the wheels
             self.vel_right = vel + omega * L / 2  # in mm/s
             self.vel_left = vel - omega * L / 2
Example #4
0
 def _drive_direct(self, data):
     logger.debug("Drive Direct")
     if not (len(data) == 5):
         logger.warning(
             "Direct Drive command should have 5 bytes, recieved %d" %
             len(data))
     else:
         self.vel_right = pici.bytes2val(data[1], data[2])
         self.vel_left = pici.bytes2val(data[3], data[4])