From 9dc8bf4b7aa86e2a5ca4c67578a67006fa9262b5 Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 14:22:00 -0700 Subject: [PATCH 1/5] click handers for qtable --- .../NavigationSystems/WaypointsCoordinator.py | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index d4f6553..3a2fa4c 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -1,12 +1,46 @@ from PyQt5 import QtCore, QtWidgets, QtGui - import logging - import rospy -class WaypointsCoordinator(QtCore.QThread): - +class WaypointsCoordinator(QtCore.QThread): + new_manual_waypoint_entry = QtCore.pyqtSignal(str, str, str, int) + update_waypoint_entry = QtCore.pyqtSignal(str, str, int) + + def __init__(self, shared_objects): + super(WaypointsCoordinator, self).init() + + self.shared_objects = shared_objects + self.left_screen = self.shared_objects["screens"]["left_screen"] + + self.navigation_label = self.left_screen.tableWidget + self.landmark_label = self.left_screen.tableWidget_2 + + # to get access to the values, iteration is needed. + self.lat_long_grid = self.left_screen.gridLayout_7 + + self.settings = QtCore.QSettings() + + self.logger = logging.getLogger("groundstation") def connect_signals_and_slots(self): - self. + self.new_manual_waypoint_entry.connect(self.update_manual_entry) + + self.navigation_label.cellClicked.connect(self._on_nav_clicked) + self.landmark_label.cellClicked.connect(self.__on_land_clicked) + + def _on_nav_clicked(self, row, col): + self.update_waypoint_entry.emit( + self.navigation_label.item(row, 0), + self.navigation_label.item(row, 1), + self.navigation_label.item(row, 2), + 0 + ) + + def _on_land_clicked(self, row, col): + self.update_waypoint_entry.emit( + self.landmark_label.item(row, 0), + self.landmark_label.item(row, 1), + self.landmark_label.item(row, 2), + 1 + ) From 4b31146d0efdf53785ae06c9e0a7f9aa52dfa9c0 Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 14:25:38 -0700 Subject: [PATCH 2/5] Start settingup buttons --- .../Framework/NavigationSystems/WaypointsCoordinator.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index 3a2fa4c..34290ed 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -26,9 +26,15 @@ class WaypointsCoordinator(QtCore.QThread): def connect_signals_and_slots(self): self.new_manual_waypoint_entry.connect(self.update_manual_entry) + # setting up signals to save for Navigation Table + self. + self.navigation_label.cellClicked.connect(self._on_nav_clicked) self.landmark_label.cellClicked.connect(self.__on_land_clicked) + def update_manual_entry(self, name, lat, lng, table): + print "write things" + def _on_nav_clicked(self, row, col): self.update_waypoint_entry.emit( self.navigation_label.item(row, 0), @@ -44,3 +50,4 @@ class WaypointsCoordinator(QtCore.QThread): self.landmark_label.item(row, 2), 1 ) + From 3575fd7869be6dfb87bfeed8b0f4cbc9c66e5bc5 Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 14:33:38 -0700 Subject: [PATCH 3/5] On click, should change input values now --- .../NavigationSystems/WaypointsCoordinator.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index 34290ed..d66306c 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -16,8 +16,12 @@ class WaypointsCoordinator(QtCore.QThread): self.navigation_label = self.left_screen.tableWidget self.landmark_label = self.left_screen.tableWidget_2 - # to get access to the values, iteration is needed. - self.lat_long_grid = self.left_screen.gridLayout_7 + self.name_edit_label = (self.left_screen. + manual_waypoint_landmark_name_line_edit) + self.latitude_label = (self.left_screen. + manual_waypoint_decimal_lattitude_spin_box) + self.longitude_label = (self.left_screen. + manual_waypoint_decimal_longitude_spin_box) self.settings = QtCore.QSettings() @@ -27,13 +31,16 @@ class WaypointsCoordinator(QtCore.QThread): self.new_manual_waypoint_entry.connect(self.update_manual_entry) # setting up signals to save for Navigation Table - self. + # self. self.navigation_label.cellClicked.connect(self._on_nav_clicked) self.landmark_label.cellClicked.connect(self.__on_land_clicked) def update_manual_entry(self, name, lat, lng, table): - print "write things" + if table == 1: + self.name_edit_label.setText(name) + self.latitude_label.setText(lat) + self.longitude_label.set(lng) def _on_nav_clicked(self, row, col): self.update_waypoint_entry.emit( @@ -50,4 +57,3 @@ class WaypointsCoordinator(QtCore.QThread): self.landmark_label.item(row, 2), 1 ) - From 87bffcff0bcdd8ec6226c1f07948b2a324ef1fea Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 14:36:23 -0700 Subject: [PATCH 4/5] Changed UI label references --- .../src/Framework/MapSystems/RoverMapCoordinator.py | 4 ++-- .../src/Framework/NavigationSystems/WaypointsCoordinator.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py index 40cb109..fdde76d 100644 --- a/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/MapSystems/RoverMapCoordinator.py @@ -29,8 +29,8 @@ class RoverMapCoordinator(QtCore.QThread): self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] self.mapping_label = self.left_screen.mapping_label - self.navigation_label = self.left_screen.tableWidget - self.landmark_label = self.left_screen.tableWidget_2 + self.navigation_label = self.left_screen.navigation_waypoints_table_widget + self.landmark_label = self.left_screen.landmark_waypoints_table_widget self.setings = QtCore.QSettings() diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index d66306c..e074ed0 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -13,8 +13,8 @@ class WaypointsCoordinator(QtCore.QThread): self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] - self.navigation_label = self.left_screen.tableWidget - self.landmark_label = self.left_screen.tableWidget_2 + self.navigation_label = self.left_screen.navigation_waypoints_table_widget + self.landmark_label = self.left_screen.landmark_waypoints_table_widget self.name_edit_label = (self.left_screen. manual_waypoint_landmark_name_line_edit) From a8e12d184b0968c8dc9ae4678a9f6a1bea8b338b Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 14:48:03 -0700 Subject: [PATCH 5/5] Starting qthread for WaypointCoordinator and disables --- .../NavigationSystems/WaypointsCoordinator.py | 23 +++++++++++++++---- .../ground_station/src/ground_station.py | 2 ++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py index e074ed0..4b5a425 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -9,11 +9,13 @@ class WaypointsCoordinator(QtCore.QThread): def __init__(self, shared_objects): super(WaypointsCoordinator, self).init() + self.run_thread_flag = True self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] - self.navigation_label = self.left_screen.navigation_waypoints_table_widget + self.navigation_label = (self.left_screen. + navigation_waypoints_table_widget) self.landmark_label = self.left_screen.landmark_waypoints_table_widget self.name_edit_label = (self.left_screen. @@ -27,6 +29,10 @@ class WaypointsCoordinator(QtCore.QThread): self.logger = logging.getLogger("groundstation") + def run(self): + while self.run_thread_flag: + self.msleep(3) + def connect_signals_and_slots(self): self.new_manual_waypoint_entry.connect(self.update_manual_entry) @@ -34,11 +40,20 @@ class WaypointsCoordinator(QtCore.QThread): # self. self.navigation_label.cellClicked.connect(self._on_nav_clicked) - self.landmark_label.cellClicked.connect(self.__on_land_clicked) + self.landmark_label.cellClicked.connect(self._on_land_clicked) + + def setup_signals(self, start_signal, + signals_and_slots_signal, kill_signal): + start_signal.connect(self.start) + signals_and_slots_signal.connect(self.connect_signals_and_slots) + kill_signal.connect(self.on_kill_threads_requested_slot) + + def on_kill_threads_requested__slot(self): + self.run_thread_flag = False def update_manual_entry(self, name, lat, lng, table): - if table == 1: - self.name_edit_label.setText(name) + self.name_edit_label.readOnly(table % 2) + self.name_edit_label.setText(name) self.latitude_label.setText(lat) self.longitude_label.set(lng) diff --git a/software/ros_packages/ground_station/src/ground_station.py b/software/ros_packages/ground_station/src/ground_station.py index b14d8ee..4acf527 100644 --- a/software/ros_packages/ground_station/src/ground_station.py +++ b/software/ros_packages/ground_station/src/ground_station.py @@ -17,6 +17,7 @@ import Framework.VideoSystems.RoverVideoCoordinator as RoverVideoCoordinator import Framework.MapSystems.RoverMapCoordinator as RoverMapCoordinator import Framework.JoystickControlSystems.JoystickControlSender as JoystickControlSender import Framework.NavigationSystems.SpeedAndHeadingIndication as SpeedAndHeading +import Framework.NavigationSystems.WaypointsCoordinator as WaypointsCoordinator import Framework.ArmSystems.ArmIndication as ArmIndication import Framework.StatusSystems.StatusCore as StatusCore import Framework.SettingsSystems.UbiquitiRadioSettings as UbiquitiRadioSettings @@ -107,6 +108,7 @@ class GroundStation(QtCore.QObject): self.__add_thread("Arm Indication", ArmIndication.ArmIndication(self.shared_objects)) self.__add_thread("Rover Status", StatusCore.SensorCore(self.shared_objects)) self.__add_thread("Ubiquiti Radio Settings", UbiquitiRadioSettings.UbiquitiRadioSettings(self.shared_objects)) + self.__add_thread("Waypoints Coordinator", WaypointsCoordinator.WaypointsCoordinator(self.shared_objects)) self.connect_signals_and_slots_signal.emit() self.__connect_signals_to_slots()