From 886058fa9bea1438798633009c4b535b9fad8563 Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 16:36:13 -0700 Subject: [PATCH 1/5] add str conversion --- .../Framework/NavigationSystems/WaypointsCoordinator.py | 8 ++++---- 1 file changed, 4 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 d77bbaa..9639959 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -56,9 +56,9 @@ class WaypointsCoordinator(QtCore.QThread): count = table.rowCount() table.insertRow(count) table.setItem(count, 0, QtWidgets.QTableWidgetItem(name)) - table.setItem(count, 1, QtWidgets.QTableWidgetItem(lat)) - table.setItem(count, 2, QtWidgets.QTableWidgetItem(lng)) - table.setItem(count, 3, QtWidgets.QTableWidgetItem(dist)) + table.setItem(count, 1, QtWidgets.QTableWidgetItem(str(lat))) + table.setItem(count, 2, QtWidgets.QTableWidgetItem(str(lng))) + table.setItem(count, 3, QtWidgets.QTableWidgetItem(str(dist))) def _nav_add_gps(self): # request GPS data @@ -66,7 +66,7 @@ class WaypointsCoordinator(QtCore.QThread): lat = 44.567200 lng = -123.27860 distance = 200 - self._add_to_table(name, lat, lng, distance, self.navigation_label) + self._add_to_table(str(name), lat, lng, distance, self.navigation_label) def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal): From f024b32acca769a2a8e3d506b3c76f486233cfc6 Mon Sep 17 00:00:00 2001 From: Dylan Thrush Date: Sat, 17 Mar 2018 18:09:52 -0700 Subject: [PATCH 2/5] Update and rename arm_breakout_1 to arm_breakout_1.md --- .../documents/nodes/{arm_breakout_1 => arm_breakout_1.md} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename electrical/documents/nodes/{arm_breakout_1 => arm_breakout_1.md} (71%) diff --git a/electrical/documents/nodes/arm_breakout_1 b/electrical/documents/nodes/arm_breakout_1.md similarity index 71% rename from electrical/documents/nodes/arm_breakout_1 rename to electrical/documents/nodes/arm_breakout_1.md index 7db2086..05a6f2c 100644 --- a/electrical/documents/nodes/arm_breakout_1 +++ b/electrical/documents/nodes/arm_breakout_1.md @@ -12,11 +12,11 @@ Breaks out the required pins for three IONI motor controllers. Has a USB to UART ### Bill of Materials -BOM link. +[BOM](https://docs.google.com/spreadsheets/d/1gDx0AlCHqHsaTh7cWj4YosPhcUce1aw0WUB4wSzndNo/edit?usp=sharing) #### Design files -Circuitmaker link. +[Circuitmaker](https://workspace.circuitmaker.com/Projects/Details/Dylan-Thrush-2/MR1718-Arm-1) ### Downloads Schematic placeholder. From 790b84b140ba1b2957ae8ab019d1ba9e97e81ef6 Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 19:44:12 -0700 Subject: [PATCH 3/5] Supposed nav list buttons working --- .../NavigationSystems/WaypointsCoordinator.py | 77 +++++++++++++++---- 1 file changed, 63 insertions(+), 14 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 9639959..0342777 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -10,6 +10,8 @@ class WaypointsCoordinator(QtCore.QThread): def __init__(self, shared_objects): super(WaypointsCoordinator, self).__init__() self.run_thread_flag = True + self.navigation_table_cur_click = None + self.landmark_table_cur_click = None self.shared_objects = shared_objects self.left_screen = self.shared_objects["screens"]["left_screen"] @@ -26,14 +28,14 @@ class WaypointsCoordinator(QtCore.QThread): manual_waypoint_decimal_longitude_spin_box) # Nav Table Buttons - self.nav_set_label = (self.left_screen. - navigation_waypoints_set_button) - self.nav_add_manual_label = (self.left_screen. - navigation_waypoints_add_manual_button) - self.nav_add_gps_label = (self.left_screen. - navigation_waypoints_add_gps_button) - self.nav_delete_label = (self.left_screen. - navigation_waypoints_delete_button) + self.nav_set_button_label = (self.left_screen. + navigation_waypoints_set_button) + self.nav_add_manual_button_label = ( + self.left_screen.navigation_waypoints_add_manual_button) + self.nav_add_gps_button_label = (self.left_screen. + navigation_waypoints_add_gps_button) + self.nav_delete_button_label = (self.left_screen. + navigation_waypoints_delete_button) self.settings = QtCore.QSettings() @@ -47,7 +49,10 @@ class WaypointsCoordinator(QtCore.QThread): self.new_manual_waypoint_entry.connect(self.update_manual_entry) # setting up signals to save for Navigation Table - self.nav_add_gps_label.clicked.connect(self._nav_add_gps) + self.nav_add_gps_button_label.clicked.connect(self._nav_add_gps) + self.nav_delete_button_label.clicked.connect(self._nav_del) + self.nav_add_manual_button_label.clicked.connect(self._nav_add_manual) + self.nav_set_button_label.clicked.connect(self._nav_save) self.navigation_label.cellClicked.connect(self._on_nav_clicked) self.landmark_label.cellClicked.connect(self._on_land_clicked) @@ -56,9 +61,14 @@ class WaypointsCoordinator(QtCore.QThread): count = table.rowCount() table.insertRow(count) table.setItem(count, 0, QtWidgets.QTableWidgetItem(name)) - table.setItem(count, 1, QtWidgets.QTableWidgetItem(str(lat))) - table.setItem(count, 2, QtWidgets.QTableWidgetItem(str(lng))) - table.setItem(count, 3, QtWidgets.QTableWidgetItem(str(dist))) + table.setItem(count, 1, QtWidgets.QTableWidgetItem(lat)) + table.setItem(count, 2, QtWidgets.QTableWidgetItem(lng)) + table.setItem(count, 3, QtWidgets.QTableWidgetItem(dist)) + + def _clear_inputs(self): + self.name_edit_label.clear() + self.latitude_label.clear() + self.longitude_label.clear() def _nav_add_gps(self): # request GPS data @@ -66,7 +76,43 @@ class WaypointsCoordinator(QtCore.QThread): lat = 44.567200 lng = -123.27860 distance = 200 - self._add_to_table(str(name), lat, lng, distance, self.navigation_label) + self._add_to_table(str(name), str(lat), + str(lng), str(distance), + self.navigation_label) + self._clear_inputs() + + def _nav_save(self): + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + self.navigation_label.setItem(self.navigation_table_cur_click, + 1, + QtWidgets.QTableWidgetItem(lat)) + self.navigation_label.setItem(self.navigation_label, + 2, + QtWidgets.QTableWidgetItem(lng)) + self._clear_inputs() + + def _nav_add_manual(self): + # request GPS data + name = self.navigation_label.rowCount() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + distance = 200 + self._add_to_table(str(name), lat, + lng, str(distance), + self.navigation_label) + self._clear_inputs + + def _nav_del(self): + if self.navigation_table_cur_click is not None: + self.navigation_label.removeRow(self.navigation_table_cur_click) + count = self.navigation_label.rowCount() + for x in range(self.navigation_table_cur_click, count): + self.navigation_label.setItem(x, + 0, + QtWidgets. + QTableWidgetItem(str(x))) + self._clear_inputs def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal): @@ -78,13 +124,14 @@ class WaypointsCoordinator(QtCore.QThread): self.run_thread_flag = False def update_manual_entry(self, name, lat, lng, table): - print name, lat, lng, table self.name_edit_label.setEnabled(bool(table)) self.name_edit_label.setText(name) self.latitude_label.setValue(lat) self.longitude_label.setValue(lng) def _on_nav_clicked(self, row, col): + self.navigation_table_cur_click = row + self.landmark_table_cur_click = None self.new_manual_waypoint_entry.emit( self.navigation_label.item(row, 0).text(), float(self.navigation_label.item(row, 1).text()), @@ -93,6 +140,8 @@ class WaypointsCoordinator(QtCore.QThread): ) def _on_land_clicked(self, row, col): + self.landmark_table_cur_click = row + self.navigation_table_cur_click = None self.new_manual_waypoint_entry.emit( self.landmark_label.item(row, 0).text(), float(self.landmark_label.item(row, 1).text()), From 8ccd4c7d21e9dfdc4c8f3077ff6f5219fc87dbde Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 20:10:57 -0700 Subject: [PATCH 4/5] Applied Landmark Buttons --- .../NavigationSystems/WaypointsCoordinator.py | 77 +++++++++++++++++-- 1 file changed, 72 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 0342777..6e34f5e 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -37,6 +37,19 @@ class WaypointsCoordinator(QtCore.QThread): self.nav_delete_button_label = (self.left_screen. navigation_waypoints_delete_button) + # Land Table Buttons + self.land_set_button_label = (self.left_screen. + landmark_waypoints_set_button) + + self.land_add_manual_button_label = ( + self.left_screen.landmark_waypoints_add_manual_button) + + self.land_add_gps_button_label = (self.left_screen. + landmark_waypoints_add_gps_button) + + self.land_delete_button_label = (self.left_screen. + landmark_waypoint_delete_button) + self.settings = QtCore.QSettings() self.logger = logging.getLogger("groundstation") @@ -48,12 +61,19 @@ 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 + # setting up signals for Navigation Table self.nav_add_gps_button_label.clicked.connect(self._nav_add_gps) self.nav_delete_button_label.clicked.connect(self._nav_del) self.nav_add_manual_button_label.clicked.connect(self._nav_add_manual) self.nav_set_button_label.clicked.connect(self._nav_save) + # setting up signals for Landmark Table + self.land_add_gps_button_label.clicked.connect(self._land_add_gps) + self.land_delete_button_label.clicked.connect(self._land_del) + self.land_add_manual_button_label.clicked.connect(self. + _land_add_manual) + self.land_set_button_label.clicked.connect(self._land_save) + self.navigation_label.cellClicked.connect(self._on_nav_clicked) self.landmark_label.cellClicked.connect(self._on_land_clicked) @@ -76,7 +96,7 @@ class WaypointsCoordinator(QtCore.QThread): lat = 44.567200 lng = -123.27860 distance = 200 - self._add_to_table(str(name), str(lat), + self._add_to_table(str(name+1), str(lat), str(lng), str(distance), self.navigation_label) self._clear_inputs() @@ -98,7 +118,7 @@ class WaypointsCoordinator(QtCore.QThread): lat = self.latitude_label.getText() lng = self.longitude_label.getText() distance = 200 - self._add_to_table(str(name), lat, + self._add_to_table(str(name+1), lat, lng, str(distance), self.navigation_label) self._clear_inputs @@ -111,8 +131,55 @@ class WaypointsCoordinator(QtCore.QThread): self.navigation_label.setItem(x, 0, QtWidgets. - QTableWidgetItem(str(x))) - self._clear_inputs + QTableWidgetItem(str(x+1))) + self._clear_inputs() + + def _land_add_gps(self): + name = self.name_edit_label.getText() + lat = 44.19223 + lng = -123.12394 + distance = 200 + self._add_to_table(name, str(lat), + str(lng), str(distance), + self.landmark_label) + self._clear_inputs() + + def _land_add_manual(self): + name = self.name_edit_label.getText() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + distance = 200 + self._add_to_table(name, lat, + lng, str(distance), + self.landmark_label) + self._clear_inputs() + + def _land_del(self): + if self.landmark_table_cur_click is not None: + self.landmark_label.removeRow(self.landmark_table_cur_click) + count = self.landmark_label.rowCount() + for x in range(self.landmark_table_cur_click, count): + self.navigation_label.setItem(x, + 0, + QtWidgets. + QTableWidgetItem(str(x+1))) + self._clear_inputs() + + def _land_save(self): + name = self.name_edit_label.getText() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + + self.landmark_label.setItem(self.landmark_table_cur_click, 0, + QtWidgets.QTableWidgetItem(name)) + + self.landmark_label.setItem(self.landmark_table_cur_click, 1, + QtWidgets.QTableWidgetItem(lat)) + + self.landmark_label.setItem(self.landmark_table_cur_click, 2, + QtWidgets.QTableWidgetItem(lng)) + + self._clear_inputs() def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal): From 70eba06a4bb2f996f98534b00c9880c489d7a09a Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 17 Mar 2018 20:28:17 -0700 Subject: [PATCH 5/5] Included a checker to prevent any inputs if the fields are empty --- .../NavigationSystems/WaypointsCoordinator.py | 88 +++++++++++-------- 1 file changed, 51 insertions(+), 37 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 6e34f5e..7d43e31 100644 --- a/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py +++ b/software/ros_packages/ground_station/src/Framework/NavigationSystems/WaypointsCoordinator.py @@ -90,6 +90,15 @@ class WaypointsCoordinator(QtCore.QThread): self.latitude_label.clear() self.longitude_label.clear() + def _is_empty_inputs(self): + if self.name_edit_label.text().isEmpty(): + return True + if self.latitude_label.text().isEmpty(): + return True + if self.longitude_label.text().isEmpty(): + return True + return False + def _nav_add_gps(self): # request GPS data name = self.navigation_label.rowCount() @@ -102,26 +111,30 @@ class WaypointsCoordinator(QtCore.QThread): self._clear_inputs() def _nav_save(self): - lat = self.latitude_label.getText() - lng = self.longitude_label.getText() - self.navigation_label.setItem(self.navigation_table_cur_click, - 1, - QtWidgets.QTableWidgetItem(lat)) - self.navigation_label.setItem(self.navigation_label, - 2, - QtWidgets.QTableWidgetItem(lng)) - self._clear_inputs() + if not self._is_empty_inputs(): + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + self.navigation_label.setItem( + self.navigation_table_cur_click, + 1, + QtWidgets.QTableWidgetItem(lat)) + self.navigation_label.setItem( + self.navigation_label, + 2, + QtWidgets.QTableWidgetItem(lng)) + self._clear_inputs() def _nav_add_manual(self): # request GPS data - name = self.navigation_label.rowCount() - lat = self.latitude_label.getText() - lng = self.longitude_label.getText() - distance = 200 - self._add_to_table(str(name+1), lat, - lng, str(distance), - self.navigation_label) - self._clear_inputs + if not self._is_empty_inputs(): + name = self.navigation_label.rowCount() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + distance = 200 + self._add_to_table(str(name+1), lat, + lng, str(distance), + self.navigation_label) + self._clear_inputs def _nav_del(self): if self.navigation_table_cur_click is not None: @@ -145,15 +158,16 @@ class WaypointsCoordinator(QtCore.QThread): self._clear_inputs() def _land_add_manual(self): - name = self.name_edit_label.getText() - lat = self.latitude_label.getText() - lng = self.longitude_label.getText() - distance = 200 - self._add_to_table(name, lat, - lng, str(distance), - self.landmark_label) - self._clear_inputs() - + if not self._is_empty_inputs(): + name = self.name_edit_label.getText() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + distance = 200 + self._add_to_table(name, lat, + lng, str(distance), + self.landmark_label) + self._clear_inputs() + def _land_del(self): if self.landmark_table_cur_click is not None: self.landmark_label.removeRow(self.landmark_table_cur_click) @@ -166,20 +180,20 @@ class WaypointsCoordinator(QtCore.QThread): self._clear_inputs() def _land_save(self): - name = self.name_edit_label.getText() - lat = self.latitude_label.getText() - lng = self.longitude_label.getText() - - self.landmark_label.setItem(self.landmark_table_cur_click, 0, - QtWidgets.QTableWidgetItem(name)) + if not self._is_empty_inputs(): + name = self.name_edit_label.getText() + lat = self.latitude_label.getText() + lng = self.longitude_label.getText() + self.landmark_label.setItem(self.landmark_table_cur_click, 0, + QtWidgets.QTableWidgetItem(name)) - self.landmark_label.setItem(self.landmark_table_cur_click, 1, - QtWidgets.QTableWidgetItem(lat)) + self.landmark_label.setItem(self.landmark_table_cur_click, 1, + QtWidgets.QTableWidgetItem(lat)) - self.landmark_label.setItem(self.landmark_table_cur_click, 2, - QtWidgets.QTableWidgetItem(lng)) + self.landmark_label.setItem(self.landmark_table_cur_click, 2, + QtWidgets.QTableWidgetItem(lng)) - self._clear_inputs() + self._clear_inputs() def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal):