mirror of
https://github.com/OSURoboticsClub/Rover_2017_2018.git
synced 2025-11-08 10:11:14 +00:00
Ken fixed statuses. Chris got map indicator working.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user