mirror of
https://github.com/OSURoboticsClub/Rover_2017_2018.git
synced 2025-11-08 18:21:15 +00:00
Added in Chris' working mapping code. Fixed some joystick camera selection code.
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user