mirror of
https://github.com/OSURoboticsClub/Rover_2017_2018.git
synced 2025-11-08 18:21:15 +00:00
Merge branch 'master' of https://github.com/OSURoboticsClub/Rover_2017_2018
This commit is contained in:
@@ -12,11 +12,11 @@ Breaks out the required pins for three IONI motor controllers. Has a USB to UART
|
|||||||
|
|
||||||
### Bill of Materials
|
### Bill of Materials
|
||||||
|
|
||||||
BOM link.
|
[BOM](https://docs.google.com/spreadsheets/d/1gDx0AlCHqHsaTh7cWj4YosPhcUce1aw0WUB4wSzndNo/edit?usp=sharing)
|
||||||
|
|
||||||
#### Design files
|
#### Design files
|
||||||
|
|
||||||
Circuitmaker link.
|
[Circuitmaker](https://workspace.circuitmaker.com/Projects/Details/Dylan-Thrush-2/MR1718-Arm-1)
|
||||||
|
|
||||||
### Downloads
|
### Downloads
|
||||||
Schematic placeholder.
|
Schematic placeholder.
|
||||||
@@ -10,6 +10,8 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
def __init__(self, shared_objects):
|
def __init__(self, shared_objects):
|
||||||
super(WaypointsCoordinator, self).__init__()
|
super(WaypointsCoordinator, self).__init__()
|
||||||
self.run_thread_flag = True
|
self.run_thread_flag = True
|
||||||
|
self.navigation_table_cur_click = None
|
||||||
|
self.landmark_table_cur_click = None
|
||||||
|
|
||||||
self.shared_objects = shared_objects
|
self.shared_objects = shared_objects
|
||||||
self.left_screen = self.shared_objects["screens"]["left_screen"]
|
self.left_screen = self.shared_objects["screens"]["left_screen"]
|
||||||
@@ -26,15 +28,28 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
manual_waypoint_decimal_longitude_spin_box)
|
manual_waypoint_decimal_longitude_spin_box)
|
||||||
|
|
||||||
# Nav Table Buttons
|
# Nav Table Buttons
|
||||||
self.nav_set_label = (self.left_screen.
|
self.nav_set_button_label = (self.left_screen.
|
||||||
navigation_waypoints_set_button)
|
navigation_waypoints_set_button)
|
||||||
self.nav_add_manual_label = (self.left_screen.
|
self.nav_add_manual_button_label = (
|
||||||
navigation_waypoints_add_manual_button)
|
self.left_screen.navigation_waypoints_add_manual_button)
|
||||||
self.nav_add_gps_label = (self.left_screen.
|
self.nav_add_gps_button_label = (self.left_screen.
|
||||||
navigation_waypoints_add_gps_button)
|
navigation_waypoints_add_gps_button)
|
||||||
self.nav_delete_label = (self.left_screen.
|
self.nav_delete_button_label = (self.left_screen.
|
||||||
navigation_waypoints_delete_button)
|
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.settings = QtCore.QSettings()
|
||||||
|
|
||||||
self.logger = logging.getLogger("groundstation")
|
self.logger = logging.getLogger("groundstation")
|
||||||
@@ -46,8 +61,18 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
def connect_signals_and_slots(self):
|
def connect_signals_and_slots(self):
|
||||||
self.new_manual_waypoint_entry.connect(self.update_manual_entry)
|
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_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)
|
||||||
|
|
||||||
|
# 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.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)
|
||||||
@@ -60,13 +85,115 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
table.setItem(count, 2, QtWidgets.QTableWidgetItem(lng))
|
table.setItem(count, 2, QtWidgets.QTableWidgetItem(lng))
|
||||||
table.setItem(count, 3, QtWidgets.QTableWidgetItem(dist))
|
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 _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):
|
def _nav_add_gps(self):
|
||||||
# request GPS data
|
# request GPS data
|
||||||
name = self.navigation_label.rowCount()
|
name = self.navigation_label.rowCount()
|
||||||
lat = 44.567200
|
lat = 44.567200
|
||||||
lng = -123.27860
|
lng = -123.27860
|
||||||
distance = 200
|
distance = 200
|
||||||
self._add_to_table(name, lat, lng, distance, self.navigation_label)
|
self._add_to_table(str(name+1), str(lat),
|
||||||
|
str(lng), str(distance),
|
||||||
|
self.navigation_label)
|
||||||
|
self._clear_inputs()
|
||||||
|
|
||||||
|
def _nav_save(self):
|
||||||
|
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
|
||||||
|
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:
|
||||||
|
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+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):
|
||||||
|
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)
|
||||||
|
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):
|
||||||
|
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, 2,
|
||||||
|
QtWidgets.QTableWidgetItem(lng))
|
||||||
|
|
||||||
|
self._clear_inputs()
|
||||||
|
|
||||||
def setup_signals(self, start_signal,
|
def setup_signals(self, start_signal,
|
||||||
signals_and_slots_signal, kill_signal):
|
signals_and_slots_signal, kill_signal):
|
||||||
@@ -78,13 +205,14 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
self.run_thread_flag = False
|
self.run_thread_flag = False
|
||||||
|
|
||||||
def update_manual_entry(self, name, lat, lng, table):
|
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.setEnabled(bool(table))
|
||||||
self.name_edit_label.setText(name)
|
self.name_edit_label.setText(name)
|
||||||
self.latitude_label.setValue(lat)
|
self.latitude_label.setValue(lat)
|
||||||
self.longitude_label.setValue(lng)
|
self.longitude_label.setValue(lng)
|
||||||
|
|
||||||
def _on_nav_clicked(self, row, col):
|
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.new_manual_waypoint_entry.emit(
|
||||||
self.navigation_label.item(row, 0).text(),
|
self.navigation_label.item(row, 0).text(),
|
||||||
float(self.navigation_label.item(row, 1).text()),
|
float(self.navigation_label.item(row, 1).text()),
|
||||||
@@ -93,6 +221,8 @@ class WaypointsCoordinator(QtCore.QThread):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _on_land_clicked(self, row, col):
|
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.new_manual_waypoint_entry.emit(
|
||||||
self.landmark_label.item(row, 0).text(),
|
self.landmark_label.item(row, 0).text(),
|
||||||
float(self.landmark_label.item(row, 1).text()),
|
float(self.landmark_label.item(row, 1).text()),
|
||||||
|
|||||||
Reference in New Issue
Block a user