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 fcda2f8..d3b4975 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMap.py @@ -405,7 +405,16 @@ class OverlayImage(object): return int(x), int(y) - def update_new_location(self, latitude, longitude, compass): + def update_new_location(self, latitude, longitude, + compass, navigation_list, landmark_list): + size = 5 + draw = PIL.ImageDraw.Draw(self.big_image) + for element in navigation_list: + x, y = self._get_cartesian(element[1], element[2]) + draw.ellipsis((x-size, y-size, x+size, y+size), fill="red") + for element in navigation_list: + x, y = self._get_cartesian(element[1], element[2]) + draw.ellipsis((x-size, y-size, x+size, y+size), fill="blue") self._draw_rover(latitude, longitude, compass) self.update() @@ -430,3 +439,4 @@ class OverlayImage(object): 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 19ac524..1ad197b 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py @@ -21,6 +21,7 @@ import RoverMap class RoverMapCoordinator(QtCore.QThread): pixmap_ready_signal = QtCore.pyqtSignal() + change_waypoint_signal = QtCore.pyqtSignal() def __init__(self, shared_objects): super(RoverMapCoordinator, self).__init__() @@ -28,6 +29,8 @@ class RoverMapCoordinator(QtCore.QThread): self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] self.mapping_label = self.left_screen.mapping_label + self.navigation_label = self.left_screen.tableWidget + self.landmark_label = self.left_screen.tableWidget_2 self.setings = QtCore.QSettings() @@ -84,9 +87,12 @@ class RoverMapCoordinator(QtCore.QThread): def _get_map_image(self): 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.overlay_image_object.update_new_location(44.567161, + # -123.278432, + # .7, + # [], + # []) + self.update_overlay() self.map_image.paste(self.overlay_image_object.display_image, (0, 0), self.overlay_image_object.display_image) @@ -100,6 +106,7 @@ class RoverMapCoordinator(QtCore.QThread): def connect_signals_and_slots(self): self.pixmap_ready_signal.connect(self.pixmap_ready__slot) + self.change_waypoint_signal.connect(self.update_waypoints) def on_kill_threads_requested_slot(self): self.run_thread_flag = False @@ -112,3 +119,23 @@ class RoverMapCoordinator(QtCore.QThread): def pixmap_ready__slot(self): self.mapping_label.setPixmap(self.map_pixmap) + + def _get_table_elements(self, UI_element): + temp_list = [] + count = UI_element.rowCount() + for row in range(0, count): + num = UI_element.item(row, 0) + lat = UI_element.cellWidget(row, 1) + lng = UI_element.cellWidget(row, 2) + temp_tuple = (num, lat, lng) + temp_list.append(temp_tuple) + return temp_list + + def update_overlay(self): + navigation_list = self._get_table_elements(self.navigation_label) + landmark_list = self._get_table_elements(self.landmark_label) + self.overlay_image_object.update_new_location(self.latitude, + self.longitude, + 70, + navigation_list, + landmark_list)