From c94ab2b647516e00d712f121636764f8a5352c84 Mon Sep 17 00:00:00 2001 From: minibot-01 <paddy-hofmann@web.de> Date: Tue, 6 Jun 2023 11:52:41 +0000 Subject: [PATCH] added rvr led status --- minibot_vision/scripts/SignDetector.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/minibot_vision/scripts/SignDetector.py b/minibot_vision/scripts/SignDetector.py index 9c813fd..73df60c 100755 --- a/minibot_vision/scripts/SignDetector.py +++ b/minibot_vision/scripts/SignDetector.py @@ -16,6 +16,7 @@ from vision_msgs.msg import Detection2D, ObjectHypothesisWithPose from minibot_msgs.srv import set_url import time from threading import Thread +from sphero_rvr_msgs.srv import TriggerLedEvent, TriggerLedEventRequest # *** CONSTANTS *** @@ -168,9 +169,34 @@ def detect_sign(img_rgb_stream, image_timestamp): pub_result_img.publish(cmprsmsg) +def call_rvr_color_event(event_id: TriggerLedEventRequest, stop_current_event: bool): + # start rvr color event + service = "rvr/trigger_led_event" + + try: + rospy.wait_for_service(service, timeout=0.5) + + call = rospy.ServiceProxy(service, TriggerLedEvent) + response = call.call(TriggerLedEventRequest(stop_current_event=stop_current_event, event_id=event_id)) + if not response.success: + raise rospy.ServiceException("Failed to set rvr status lights") + except rospy.ROSException as e: + # if the service is not available we just ignore this + pass + except rospy.ServiceException as e: + rospy.logerr("Service call failed: %s" % e) + + def set_model_callback(req): + call_rvr_color_event(event_id=TriggerLedEventRequest.DOWNLOAD_MODEL, stop_current_event=False) + success = sign_classifier.setNewModel(req.url) + call_rvr_color_event(stop_current_event=True, event_id=-1) + + if not success: + call_rvr_color_event(stop_current_event=False, event_id=TriggerLedEventRequest.ERROR) + return success -- GitLab