def execute(self, userdata): """DriveBackward state Driving backwards for a given time. """ return_state = "locate" Utils.drive(Twist(linear=Vector3(x = -userdata.in_drive_speed, y = 0.0 , z = 0.0))) rospy.sleep(userdata.in_drive_time) Utils.drive(Utils.STOP) return return_state
def execute(self, userdata): """TurnRight state Turning to the right for a given time. """ return_state = "locate" Utils.drive(Twist(angular=Vector3(x = 0.0, y = 0.0 , z = -userdata.in_turn_speed))) print "###Driving for:", userdata.in_drive_time print "###Driving with:", userdata.in_turn_speed rospy.sleep(userdata.in_drive_time) Utils.drive(Utils.STOP) return return_state
def execute(self, userdata): """DriveLeft state Driving to the left for a given time. """ return_state = "locate" Utils.drive(Twist(linear=Vector3(x = 0.0, y = userdata.in_drive_speed , z = 0.0))) print "###Driving for:", userdata.in_drive_time print "###Driving with:", userdata.in_turn_speed rospy.sleep(userdata.in_drive_time) Utils.drive(Utils.STOP) return return_state
def get_turn_params(self): """Returns a tupel of: (rotation_state, rotation_speed, driving_time) """ angle = Utils.get_wall_angle(SmachGlobalData.msg_line) #angle = math.copysign(angle, self.get_x_dif_fl_fr()) (return_speed, return_time) = self.get_speed_and_time(angle, ROTATION_MAX) return_state = self.get_return_state(angle, "turnLeft", "turnRight") return (return_state, return_speed, return_time)
def get_front_average_point(self, left_border, right_border): array = Utils.get_carts_in_range(left_border, right_border, self.get_msg_laser(), Utils.FRONT) return Utils.array_average_point(array)
def get_side_average_point(self, back_border, front_border): array = Utils.get_carts_in_range(back_border, front_border, self.get_msg_laser(), Utils.SIDE) if DEBUG: #rospy.logdebug("side_array: =%s", array) pass return Utils.array_average_point(array)
def get_msg_laser(self): if self.msg_laser == None: self.wait_for_laser_msgs(Utils.BUFFERSIZE) self.msg_laser = Utils.laser_average() return self.msg_laser
def is_not_collimated(self): angle = Utils.get_wall_angle(SmachGlobalData.msg_line) print "wall_angle", angle return abs(angle) > GOAL_ANGLE_TOLERANCE