Ken fixed statuses. Chris got map indicator working.

This commit is contained in:
2018-03-15 15:31:30 -07:00
parent b52407a527
commit 566b436735
4 changed files with 62 additions and 68 deletions

View File

@@ -360,6 +360,7 @@ class OverlayImage(object):
self.upper_y = (self.center_y - (self.height/2))
self.generate_image_files()
self.write_once = True
def generate_image_files(self):
"""
@@ -372,6 +373,7 @@ class OverlayImage(object):
self.display_image = self.helper.new_image(self.width, self.height,
True)
self.generate_dot_and_hat()
self.indicator.save("location.png")
def _get_cartesian(self, lat, lon):
"""
@@ -389,11 +391,8 @@ class OverlayImage(object):
# print viewport_lon_diff, viewport_lat_diff
bigimage_width = self.width
bigimage_height = self.height
pixel_per_lat = bigimage_height / viewport_lat_diff
pixel_per_lon = bigimage_width / viewport_lon_diff
pixel_per_lat = self.big_height / viewport_lat_diff
pixel_per_lon = self.big_width / viewport_lon_diff
# print "Pixel per:", pixel_per_lat, pixel_per_lon
new_lat_gps_range_percentage = (viewport_lat_nw - lat)
@@ -410,12 +409,12 @@ class OverlayImage(object):
size = 5
draw = PIL.ImageDraw.Draw(self.big_image)
for element in navigation_list:
x, y = self._get_cartesian(float(element[1]), float(element[2]))
draw.ellipsis((x-size, y-size, x+size, y+size), fill="red")
x, y = self._get_cartesian(float(element[2]), float(element[1]))
draw.ellipse((x-size, y-size, x+size, y+size), fill="red")
# for element in landmark_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._draw_rover(longitude, latitude, compass)
self.update()
return self.display_image
@@ -429,14 +428,21 @@ class OverlayImage(object):
def _draw_rover(self, lat, lon, angle=0):
x, y = self._get_cartesian(lat, lon)
print x,y
# Center of the circle on the indicator is (12.5, 37.5)
x = x - 50
y = y - 50
rotated = self.indicator.copy()
rotated = rotated.rotate(angle, expand=True)
self.display_image.paste(self.indicator, (x, y))
# self.display_image.save("Something.png")
rotated.save("rotated.png")
self.big_image.paste(rotated, (x, y), rotated)
if self.write_once:
self.display_image.save("Something.png")
self.write_once = False
def update(self):
self.display_image.paste(self.big_image, (-self.left_x, -self.upper_y))
def connect_signals_and_slots(self):
pass

View File

@@ -55,7 +55,7 @@ class RoverMapCoordinator(QtCore.QThread):
self.setup_map_flag = False
else:
self._get_map_image()
self.msleep(3)
self.msleep(30)
self.logger.debug("Stopping Map Coordinator Thread")
@@ -73,7 +73,7 @@ class RoverMapCoordinator(QtCore.QThread):
720,
44.567161,
-123.278432,
14,
18,
'satellite',
None, 20)
self.overlay_image_object = (
@@ -124,23 +124,22 @@ class RoverMapCoordinator(QtCore.QThread):
temp_list = []
count = UI_element.rowCount()
for row in range(0, count):
num = UI_element.itemAt(row, 0).data
lat = UI_element.itemAt(row, 1).data
lng = UI_element.itemAt(row, 2).data
num = UI_element.item(row, 0).text()
lat = float(UI_element.item(row, 1).text())
lng = float(UI_element.item(row, 2).text())
temp_tuple = (num, lat, lng)
temp_list.append(temp_tuple)
return temp_list
def update_overlay(self):
longitude = 44.567161,
latitude = -123.278432,
longitude = 44.567161
latitude = -123.278432
navigation_list = self._get_table_elements(self.navigation_label)
for x in navigation_list:
self.logger.debug(str(x))
# landmark_list = self._get_table_elements(self.landmark_label)
landmark_list = []
self.overlay_image_object.update_new_location(latitude,
self.overlay_image = self.overlay_image_object.update_new_location(latitude,
longitude,
70,
navigation_list,
landmark_list)
# self.overlay_image.save("something.png")

View File

@@ -4,6 +4,7 @@ import rospy
from rover_status.msg import *
from PyQt5 import QtWidgets, QtCore, QtGui, uic
from std_msgs.msg import Empty
# import Timer
REQUEST_UPDATE_TOPIC = "/rover_status/update_requested"
@@ -40,7 +41,6 @@ class SensorCore(QtCore.QThread):
frsky_stylesheet_change_ready__signal = QtCore.pyqtSignal(str)
def __init__(self, shared_objects):
super(SensorCore, self).__init__()
@@ -87,7 +87,7 @@ class SensorCore(QtCore.QThread):
self.jetson_msg = JetsonInfo()
self.misc_msg = MiscStatuses()
rospy.Publisher(REQUEST_UPDATE_TOPIC, Empty, queue_size=1).publish(Empty())
self.update_requester = rospy.Publisher(REQUEST_UPDATE_TOPIC, Empty, queue_size=10)
def __camera_callback(self, data):
self.camera_msg.camera_zed = data.camera_zed
@@ -95,28 +95,28 @@ class SensorCore(QtCore.QThread):
self.camera_msg.camera_chassis = data.camera_chassis
self.camera_msg.camera_main_navigation = data.camera_main_navigation
if self.camera_msg.camera_zed is False:
if data.camera_zed is False:
# self.zed.setStyleSheet("background-color: red;")
self.camera_zed_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.zed.setStyleSheet("background-color: darkgreen;")
self.camera_zed_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
if self.camera_msg.camera_undercarriage is False:
if data.camera_undercarriage is False:
# self.under_cam.setStyleSheet("background-color: darkred;")
self.camera_under_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.under_cam.setStyleSheet("background-color: darkgreen;")
self.camera_under_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
if self.camera_msg.camera_chassis is False:
if data.camera_chassis is False:
# self.chassis_cam.setStyleSheet("background-color: darkred;")
self.camera_chassis_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.chassis_cam.setStyleSheet("background-color: darkgreen;")
self.camera_chassis_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
if self.camera_msg.camera_main_navigation is False:
if data.camera_main_navigation is False:
# self.main_cam.setStyleSheet("background-color: darkred;")
self.camera_main_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
@@ -136,21 +136,21 @@ class SensorCore(QtCore.QThread):
self.bogie_msg.bogie_connection_2 = data.bogie_connection_2
self.bogie_msg.bogie_connection_3 = data.bogie_connection_3
if self.bogie_msg.bogie_connection_1 is False:
if data.bogie_connection_1 is False:
# self.bogie_right.setStyleSheet("background-color: darkred;")
self.bogie_connection_1_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.bogie_right.setStyleSheet("background-color: darkgreen;")
self.bogie_connection_1_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
if self.bogie_msg.bogie_connection_2 is False:
if data.bogie_connection_2 is False:
# self.bogie_left.setStyleSheet("background-color: darkred;")
self.bogie_connection_2_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.bogie_left.setStyleSheet("background-color: darkgreen;")
self.bogie_connection_2_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
if self.bogie_msg.bogie_connection_3 is False:
if data.bogie_connection_3 is False:
# self.bogie_rear.setStyleSheet("background-color: darkred;")
self.bogie_connection_3_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
@@ -158,55 +158,48 @@ class SensorCore(QtCore.QThread):
self.bogie_connection_3_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
def __jetson_callback(self, data):
self.jetson_msg.jetson_CPU = data.jetson_CPU
self.jetson_cpu_update_ready__signal.emit(str(data.jetson_CPU))
# self.cpu_read.setText(str(self.jetson_msg.jetson_CPU))
# self.cpu.setText(str(self.jetson_msg.jetson_CPU))
self.jetson_cpu_update_ready__signal.emit(str(self.jetson_msg.jetson_CPU))
if self.jetson_msg.jetson_CPU > 79:
if data.jetson_CPU > 79:
self.jetson_cpu_stylesheet_change_ready__signal.emit("background-color: orange;")
elif self.jetson_msg.jetson_CPU > 89:
elif data.jetson_CPU > 89:
self.jetson_cpu_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
self.jetson_cpu_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
self.jetson_ram_update_ready__signal.emit(str(self.jetson_msg.jetson_RAM))
self.jetson_ram_update_ready__signal.emit(str(data.jetson_RAM))
if self.jetson_msg.jetson_RAM > 79:
if data.jetson_RAM > 79:
self.jetson_ram_stylesheet_change_ready__signal.emit("background-color: orange;")
elif self.jetson_msg.jetson_RAM > 89:
elif data.jetson_RAM > 89:
self.jetson_ram_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
self.jetson_ram_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
self.jetson_gpu_temp_update_ready__signal.emit(str(self.jetson_msg.jetson_GPU_temp))
self.jetson_gpu_temp_update_ready__signal.emit(str(data.jetson_GPU_temp))
if self.jetson_msg.jetson_GPU_temp > 64:
if data.jetson_GPU_temp > 64:
self.jetson_gpu_temp_stylesheet_change_ready__signal.emit("background-color: orange;")
elif self.jetson_msg.jetson_GPU_temp > 79:
elif data.jetson_GPU_temp > 79:
self.jetson_gpu_temp_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
self.jetson_gpu_temp_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
self.jetson_emmc_update_ready__signal.emit(str(self.jetson_msg.jetson_EMMC))
self.jetson_emmc_update_ready__signal.emit(str(data.jetson_EMMC))
if self.jetson_msg.jetson_EMMC > 79:
if data.jetson_EMMC > 79:
self.jetson_emmc_stylesheet_change_ready__signal.emit("background-color: orange;")
elif self.jetson_msg.jetson_EMMC > 89:
elif data.jetson_EMMC > 89:
self.jetson_emmc_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
self.jetson_emmc_stylesheet_change_ready__signal.emit("background-color: darkgreen")
def __gps_callback(self, data):
self.GPS_msg.UTC_GPS_time = data.UTC_GPS_time
self.GPS_msg.GPS_connection_status = data.GPS_connection_status
if self.GPS_msg.GPS_connection_status is False:
# self.gps.setStyleSheet("background-color: darkred")
if not data.GPS_connection_status:
self.gps_stylesheet_change_ready__signal.emit("background-color: darkred;")
else:
# self.gps.setStyleSheet("background-color: darkgreen;")
self.gps_stylesheet_change_ready__signal.emit("background-color: darkgreen;")
def __misc_callback(self, data):
@@ -218,12 +211,14 @@ class SensorCore(QtCore.QThread):
def __display_time(self):
time = QtCore.QTime.currentTime()
temp = time.toString('hh:mm:ss')
temp = time.toString('hh:mm')
self.clock.display(temp)
def run(self):
while self.run_thread_flag:
self.msleep(100)
self.update_requester.publish(Empty())
self.__display_time()
self.msleep(1000)
def connect_signals_and_slots(self):
self.jetson_cpu_update_ready__signal.connect(self.cpu.setText)

View File

@@ -10,11 +10,11 @@ TICK_TIME = 2**6
class Timer(Qt.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
def __init__(self):
super(Timer, self).__init__()
self.reset.clicked.connect(self.do_reset)
self.start.clicked.connect(self.do_start)
# self.reset.clicked.connect(self.do_reset)
# self.start.clicked.connect(self.do_start)
self.timer = Qt.QTimer()
self.timer.setInterval(TICK_TIME)
@@ -22,14 +22,8 @@ class Timer(Qt.QMainWindow):
self.do_reset()
def keyPressEvent(self, event):
if event.key() == Qt.Qt.Key_Escape:
self.close()
else:
super().keyPressEvent(event)
def display(self):
self.lcd.display("%d:%05.2f" % (self.time // 60, self.time % 60))
self.timer.display("%d:%05.2f" % (self.time // 60, self.time % 60))
@Qt.pyqtSlot()
def tick(self):
@@ -39,16 +33,16 @@ class Timer(Qt.QMainWindow):
@Qt.pyqtSlot()
def do_start(self):
self.timer.start()
self.start.setText("Pause")
self.start.clicked.disconnect()
self.start.clicked.connect(self.do_pause)
# self.start.setText("Pause")
# self.start.clicked.disconnect()
# self.start.clicked.connect(self.do_pause)
@Qt.pyqtSlot()
def do_pause(self):
self.timer.stop()
self.start.setText("Start")
self.start.clicked.disconnect()
self.start.clicked.connect(self.do_start)
# self.start.setText("Start")
# self.start.clicked.disconnect()
# self.start.clicked.connect(self.do_start)
@Qt.pyqtSlot()
def do_reset(self):