def test_frontcam(image): """ process the frontcam image """ # print("image is subscribed") if not SCHEDULER.is_frontcam_enable(): return if not SCHEDULER.is_frontcam_occupied(): state = SCHEDULER.get_state() if state == "traffic_light": signal = is_light_green(image) rospy.logdebug("[PROC] is_light_green: {}".format(signal)) if signal: SCHEDULER.set_state("to_intersection") TURTLE.enable() TURTLE.set_speed("fast") TURTLE.set_speed_smooth("normal") elif state == "to_intersection": signal = check_left_right_sign(image) rospy.logdebug("[PROC] left or right: {}".format(signal)) if signal == "right": SCHEDULER.set_state("intersection_right") elif signal == "left": SCHEDULER.set_state("intersection_left") if SCHEDULER.debug_option["show_center_slope"]: SCHEDULER.check_time("frontcam", min=0.5) info = EYE.see_front(image) if info is None: return # rospy.logdebug("[PROC] test_frontcam: state {} {}".format( # info["state"], info["horizon_position"])) # if (info["horizon_position"] < 150): # TURTLE.set_speed("fast") # TURTLE.set_speed_smooth("normal") # if (info["state"] == "turning") and (info["turning_to"] is not "None"): # rospy.logdebug( # "[PROC] turn off for 1.5s") # rospy.Timer(rospy.Duration(1.5), # SCHEDULER.release_frontcam_occupied, oneshot=True) # else: rospy.Timer(rospy.Duration(0.1), SCHEDULER.release_frontcam_occupied, oneshot=True)
def view_frontcam(image): """ process the frontcam """ # rospy.loginfo("[VIEW] frontcam image received.") if not SCHEDULER.is_frontcam_occupied(): if SCHEDULER.debug_option["show_center_slope"]: SCHEDULER.check_time("frontcam", min=0.4) info = EYE.see_front(image) if info is None: return # rospy.logdebug("info: {:s}".format(str(info))) if info["center"] is "-1000" or info["center"] is "1000" or info[ "center"] is "0": pass else: EYE.reset_state() rospy.Timer(rospy.Duration(0.1), SCHEDULER.release_frontcam_occupied, oneshot=True)