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.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(
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_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)
(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))

View File

@@ -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):
while self.map_image is None:
self.map_image = self.google_maps_object.display_image
# self.map_image.paste(self.overlay_image_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)

View File

@@ -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))

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/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

View File

@@ -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()