Added in Chris' working mapping code. Fixed some joystick camera selection code.

This commit is contained in:
2018-03-08 21:29:28 -08:00
parent c9c2d29942
commit a98bb79b97
5 changed files with 35 additions and 25 deletions

View File

@@ -358,6 +358,8 @@ class OverlayImage(object):
self.left_x = (self.center_x - (self.width/2)) self.left_x = (self.center_x - (self.width/2))
self.upper_y = (self.center_y - (self.height/2)) self.upper_y = (self.center_y - (self.height/2))
self.generate_image_files()
def generate_image_files(self): def generate_image_files(self):
""" """
Creates big_image and display image sizes Creates big_image and display image sizes
@@ -410,17 +412,21 @@ class OverlayImage(object):
def _draw_rover(self, lat, lon, size, scaler): def _draw_rover(self, lat, lon, size, scaler):
x, y = self._get_cartesian(lat, lon) x, y = self._get_cartesian(lat, lon)
draw = PIL.ImageDraw.Draw(self.big_image) 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( draw.line(
math.cos(x-2*size * scaler), (point_1,
math.sin(y * scaler), point_2),
math.cos(x * scaler), fill="red",
math.sin(y+2*size * scaler), (255, 255, 255, 0), 25) width=600)
draw.line( draw.line(
math.cos(x+2*size * scaler), (point_2,
math.sin(y * scaler), point_3),
math.cos(x * scaler), fill="red",
math.sin(y+2*size * scaler), (255, 255, 255, 0), 25) width=600)
self.display_image.save("Something.png")
def update(self): def update(self):
self.display_image.paste(self.big_image, (-self.left_x, -self.upper_y)) self.display_image.paste(self.big_image, (-self.left_x, -self.upper_y))

View File

@@ -4,6 +4,7 @@
# Python native imports # Python native imports
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from PIL.ImageQt import ImageQt from PIL.ImageQt import ImageQt
from PIL import Image
import logging import logging
@@ -81,8 +82,11 @@ class RoverMapCoordinator(QtCore.QThread):
1280, 720)) 1280, 720))
def _get_map_image(self): def _get_map_image(self):
self.map_image = self.google_maps_object.display_image while self.map_image is None:
# self.map_image.paste(self.overlay_image_object.display_image) 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 # get overlay here
qim = ImageQt(self.map_image) qim = ImageQt(self.map_image)
self.map_pixmap = QtGui.QPixmap.fromImage(qim) self.map_pixmap = QtGui.QPixmap.fromImage(qim)

View File

@@ -12,7 +12,7 @@ class MapHelper(object):
returns PIL.IMAGE OBJECT returns PIL.IMAGE OBJECT
""" """
if alpha is True: 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: else:
return PIL.Image.new('RGBA', (width, height)) return PIL.Image.new('RGBA', (width, height))

View File

@@ -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/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) rospy.Publisher("/cameras/end_effector/camera_control", CameraControlMessage, queue_size=1).publish(reset_camera_message)
# self.msleep(3000) self.msleep(3000)
# Setup cameras # Setup cameras
self.__get_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.tertiary_label_current_setting = min(self.secondary_label_current_setting + 1, len(self.valid_cameras))
self.index_to_label_current_setting = { self.index_to_label_current_setting = {
0, self.primary_label_current_setting, 0: self.primary_label_current_setting,
1, self.secondary_label_current_setting, 1: self.secondary_label_current_setting,
2, self.tertiary_label_current_setting 2: self.tertiary_label_current_setting
} }
self.current_label_for_joystick_adjust = 0 self.current_label_for_joystick_adjust = 0
@@ -130,11 +130,11 @@ class RoverVideoCoordinator(QtCore.QThread):
def __update_gui_element_selection(self): def __update_gui_element_selection(self):
if self.gui_selection_update_needed: 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) elements_to_reset.remove(self.current_label_for_joystick_adjust)
for index in elements_to_reset: 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") 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 pass
def on_camera_gui_element_selection_changed(self, direction): 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: if new_selection < 0:
self.current_label_for_joystick_adjust = len(self.valid_cameras) self.current_label_for_joystick_adjust = len(self.index_to_label_element) - 1
elif new_selection > len(self.valid_cameras): elif new_selection == len(self.index_to_label_element):
self.current_label_for_joystick_adjust = 0 self.current_label_for_joystick_adjust = 0
else: else:
self.current_label_for_joystick_adjust = new_selection 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 new_label_setting = self.index_to_label_current_setting[self.current_label_for_joystick_adjust] + direction
if new_label_setting < 0: if new_label_setting < 0:
self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = 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): elif new_label_setting == len(self.valid_cameras):
self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = 0 self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = 0
else: else:
self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = new_label_setting self.index_to_label_current_setting[self.current_label_for_joystick_adjust] = new_label_setting

View File

@@ -98,7 +98,7 @@ class GroundStation(QtCore.QObject):
# ##### Instantiate Threaded Classes ###### # ##### Instantiate Threaded Classes ######
self.__add_thread("Video Coordinator", RoverVideoCoordinator.RoverVideoCoordinator(self.shared_objects)) 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.__add_thread("Joystick Sender", JoystickControlSender.JoystickControlSender(self.shared_objects))
self.connect_signals_and_slots_signal.emit() self.connect_signals_and_slots_signal.emit()
self.__connect_signals_to_slots() self.__connect_signals_to_slots()