diff --git a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py index 7942cac..eca806f 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py @@ -358,6 +358,8 @@ class OverlayImage(object): self.left_x = (self.center_x - (self.width/2)) self.upper_y = (self.center_y - (self.height/2)) + self.generate_image_files() + def generate_image_files(self): """ Creates big_image and display image sizes @@ -410,17 +412,21 @@ class OverlayImage(object): def _draw_rover(self, lat, lon, size, scaler): x, y = self._get_cartesian(lat, lon) draw = PIL.ImageDraw.Draw(self.big_image) - draw.ellipsis((x-size, y-size, x+size, y+size), (255, 255, 255, 0)) + draw.ellipse((x-size, y-size, x+size, y+size), fill="red") + point_1 = tuple((math.cos(x-2*size * scaler), math.sin(y * scaler))) + point_2 = tuple((math.cos(x * scaler), math.sin(y+2*size * scaler))) + point_3 = (math.cos(x+2*size * scaler), math.sin(y * scaler)) + draw.line( + (point_1, + point_2), + fill="red", + width=600) draw.line( - math.cos(x-2*size * scaler), - math.sin(y * scaler), - math.cos(x * scaler), - math.sin(y+2*size * scaler), (255, 255, 255, 0), 25) - draw.line( - math.cos(x+2*size * scaler), - math.sin(y * scaler), - math.cos(x * scaler), - math.sin(y+2*size * scaler), (255, 255, 255, 0), 25) + (point_2, + point_3), + fill="red", + width=600) + self.display_image.save("Something.png") def update(self): self.display_image.paste(self.big_image, (-self.left_x, -self.upper_y)) diff --git a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py index bd63b19..bd43307 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py @@ -4,6 +4,7 @@ # Python native imports from PyQt5 import QtCore, QtWidgets, QtGui from PIL.ImageQt import ImageQt +from PIL import Image import logging @@ -81,8 +82,11 @@ class RoverMapCoordinator(QtCore.QThread): 1280, 720)) def _get_map_image(self): - self.map_image = self.google_maps_object.display_image - # self.map_image.paste(self.overlay_image_object.display_image) + while self.map_image is None: + self.map_image = self.google_maps_object.display_image + self.overlay_image_object.update_new_location(44.567161,-123.278432, .7) + self.map_image.paste(self.overlay_image_object.display_image, (0,0), self.overlay_image_object.display_image) + # self.map_image = Image.alpha_composite(self.google_maps_object.display_image, self.overlay_image_object.display_image) # get overlay here qim = ImageQt(self.map_image) self.map_pixmap = QtGui.QPixmap.fromImage(qim) diff --git a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapHelper.py b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapHelper.py index c854e6e..5eaf437 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapHelper.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapHelper.py @@ -12,7 +12,7 @@ class MapHelper(object): returns PIL.IMAGE OBJECT """ if alpha is True: - return PIL.Image.new('RGBA', (width, height), (0, 0, 0, 255)) + return PIL.Image.new('RGBA', (width, height), (0, 0, 0, 0)) else: return PIL.Image.new('RGBA', (width, height)) diff --git a/software/ros_packages/ground_station/src/Framework/VideoSystems/RoverVideoCoordinator.py b/software/ros_packages/ground_station/src/Framework/VideoSystems/RoverVideoCoordinator.py index bfb3a3d..fe874f9 100644 --- a/software/ros_packages/ground_station/src/Framework/VideoSystems/RoverVideoCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/VideoSystems/RoverVideoCoordinator.py @@ -70,7 +70,7 @@ class RoverVideoCoordinator(QtCore.QThread): rospy.Publisher("/cameras/main_navigation/camera_control", CameraControlMessage, queue_size=1).publish(reset_camera_message) rospy.Publisher("/cameras/end_effector/camera_control", CameraControlMessage, queue_size=1).publish(reset_camera_message) - # self.msleep(3000) + self.msleep(3000) # Setup cameras self.__get_cameras() @@ -81,9 +81,9 @@ class RoverVideoCoordinator(QtCore.QThread): self.tertiary_label_current_setting = min(self.secondary_label_current_setting + 1, len(self.valid_cameras)) self.index_to_label_current_setting = { - 0, self.primary_label_current_setting, - 1, self.secondary_label_current_setting, - 2, self.tertiary_label_current_setting + 0: self.primary_label_current_setting, + 1: self.secondary_label_current_setting, + 2: self.tertiary_label_current_setting } self.current_label_for_joystick_adjust = 0 @@ -130,11 +130,11 @@ class RoverVideoCoordinator(QtCore.QThread): def __update_gui_element_selection(self): if self.gui_selection_update_needed: - elements_to_reset = range(len(self.valid_cameras)) + elements_to_reset = range(len(self.index_to_label_element)) elements_to_reset.remove(self.current_label_for_joystick_adjust) for index in elements_to_reset: - self.index_to_label_element[index].setStyleSheet("background-color: transparent;") + self.index_to_label_element[index].setStyleSheet("") self.index_to_label_element[self.current_label_for_joystick_adjust].setStyleSheet("border: 2px solid orange") @@ -242,11 +242,11 @@ class RoverVideoCoordinator(QtCore.QThread): pass def on_camera_gui_element_selection_changed(self, direction): - new_selection = self.current_label_for_joystick_adjust + direction + new_selection = self.current_label_for_joystick_adjust - direction if new_selection < 0: - self.current_label_for_joystick_adjust = len(self.valid_cameras) - elif new_selection > len(self.valid_cameras): + self.current_label_for_joystick_adjust = len(self.index_to_label_element) - 1 + elif new_selection == len(self.index_to_label_element): self.current_label_for_joystick_adjust = 0 else: self.current_label_for_joystick_adjust = new_selection @@ -257,8 +257,8 @@ class RoverVideoCoordinator(QtCore.QThread): new_label_setting = self.index_to_label_current_setting[self.current_label_for_joystick_adjust] + direction if new_label_setting < 0: - self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = len(self.valid_cameras) - elif new_label_setting > len(self.valid_cameras): + self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = len(self.valid_cameras) - 1 + elif new_label_setting == len(self.valid_cameras): self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = 0 else: self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = new_label_setting diff --git a/software/ros_packages/ground_station/src/ground_station.py b/software/ros_packages/ground_station/src/ground_station.py index bde6fb2..1a8cc2a 100644 --- a/software/ros_packages/ground_station/src/ground_station.py +++ b/software/ros_packages/ground_station/src/ground_station.py @@ -98,7 +98,7 @@ class GroundStation(QtCore.QObject): # ##### Instantiate Threaded Classes ###### self.__add_thread("Video Coordinator", RoverVideoCoordinator.RoverVideoCoordinator(self.shared_objects)) - # self.__add_thread("Map Coordinator", RoverMapCoordinator.RoverMapCoordinator(self.shared_objects)) + self.__add_thread("Map Coordinator", RoverMapCoordinator.RoverMapCoordinator(self.shared_objects)) self.__add_thread("Joystick Sender", JoystickControlSender.JoystickControlSender(self.shared_objects)) self.connect_signals_and_slots_signal.emit() self.__connect_signals_to_slots()