Added ground station mockup
4
rover_base_station_mockup/.directory
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Dolphin]
|
||||||
|
Timestamp=2017,11,29,12,54,0
|
||||||
|
Version=3
|
||||||
|
ViewMode=1
|
||||||
11
rover_base_station_mockup/.idea/RoverBaseStationMockup.iml
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.6.1 (C:\Program Files\Python36\python.exe)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
<component name="TestRunnerService">
|
||||||
|
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
21
rover_base_station_mockup/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredErrors">
|
||||||
|
<list>
|
||||||
|
<option value="E402" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredIdentifiers">
|
||||||
|
<list>
|
||||||
|
<option value="Framework.MiniBoardIOCore.*" />
|
||||||
|
<option value="PyQt5.QtCore.pyqtSignal.pyqtSignal.emit" />
|
||||||
|
<option value="PyQt5.QtCore.pyqtSignal.pyqtSignal.connect" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
4
rover_base_station_mockup/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.1 (C:\Program Files\Python36\python.exe)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
8
rover_base_station_mockup/.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/RoverBaseStationMockup.iml" filepath="$PROJECT_DIR$/.idea/RoverBaseStationMockup.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
720
rover_base_station_mockup/.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,720 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="BookmarkManager">
|
||||||
|
<bookmark url="file://$PROJECT_DIR$/Framework/VideoCore.py" line="151" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="5ad562ed-81e4-4f9a-aac3-f3b24e4dd981" name="Default" comment="" />
|
||||||
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
|
<option name="TRACKING_ENABLED" value="true" />
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="CoverageDataManager">
|
||||||
|
<SUITE FILE_PATH="coverage/RoverBaseStationMockup$Local_Launch.coverage" NAME="Local Launch Coverage Results" MODIFIED="1508011114635" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="FileEditorManager">
|
||||||
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
|
<file leaf-file-name="RoverBaseStation.py" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="901">
|
||||||
|
<caret line="62" column="112" lean-forward="false" selection-start-line="60" selection-start-column="10" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="FlasherTestCore.py" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="VideoCore.py" pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="678">
|
||||||
|
<caret line="158" column="0" lean-forward="false" selection-start-line="158" selection-start-column="0" selection-end-line="161" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54298">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
</leaf>
|
||||||
|
</component>
|
||||||
|
<component name="FileTemplateManagerImpl">
|
||||||
|
<option name="RECENT_TEMPLATES">
|
||||||
|
<list>
|
||||||
|
<option value="Python Script" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="FindInProjectRecents">
|
||||||
|
<findStrings>
|
||||||
|
<find>camera</find>
|
||||||
|
</findStrings>
|
||||||
|
</component>
|
||||||
|
<component name="IdeDocumentHistory">
|
||||||
|
<option name="CHANGED_PATHS">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/Framework/FlasherTestCore.py" />
|
||||||
|
<option value="$PROJECT_DIR$/RoverBaseStation.py" />
|
||||||
|
<option value="$PROJECT_DIR$/Framework/VideoCore.py" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||||
|
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
|
||||||
|
<component name="JsGulpfileManager">
|
||||||
|
<detection-done>true</detection-done>
|
||||||
|
<sorting>DEFINITION_ORDER</sorting>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectFrameBounds" extendedState="6">
|
||||||
|
<option name="x" value="-7" />
|
||||||
|
<option name="width" value="974" />
|
||||||
|
<option name="height" value="1057" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectView">
|
||||||
|
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||||
|
<flattenPackages />
|
||||||
|
<showMembers />
|
||||||
|
<showModules />
|
||||||
|
<showLibraryContents />
|
||||||
|
<hideEmptyPackages />
|
||||||
|
<abbreviatePackageNames />
|
||||||
|
<autoscrollToSource />
|
||||||
|
<autoscrollFromSource />
|
||||||
|
<sortByType />
|
||||||
|
<manualOrder />
|
||||||
|
<foldersAlwaysOnTop value="true" />
|
||||||
|
</navigator>
|
||||||
|
<panes>
|
||||||
|
<pane id="ProjectPane">
|
||||||
|
<subPane>
|
||||||
|
<expand>
|
||||||
|
<path>
|
||||||
|
<item name="RoverBaseStationMockup" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="RoverBaseStationMockup" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="RoverBaseStationMockup" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="RoverBaseStationMockup" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="Framework" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="RoverBaseStationMockup" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="RoverBaseStationMockup" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="Resources" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="RoverBaseStationMockup" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="RoverBaseStationMockup" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="Resources" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="Images" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
</expand>
|
||||||
|
<select />
|
||||||
|
</subPane>
|
||||||
|
</pane>
|
||||||
|
<pane id="Scratches" />
|
||||||
|
<pane id="Scope" />
|
||||||
|
</panes>
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/RoverBaseStation.py" />
|
||||||
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
|
<property name="restartRequiresConfirmation" value="false" />
|
||||||
|
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
|
||||||
|
</component>
|
||||||
|
<component name="RecentsManager">
|
||||||
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\Users\Corwin Perren\PycharmProjects\RoverBaseStationMockup" />
|
||||||
|
</key>
|
||||||
|
</component>
|
||||||
|
<component name="RunDashboard">
|
||||||
|
<option name="ruleStates">
|
||||||
|
<list>
|
||||||
|
<RuleState>
|
||||||
|
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||||
|
</RuleState>
|
||||||
|
<RuleState>
|
||||||
|
<option name="name" value="StatusDashboardGroupingRule" />
|
||||||
|
</RuleState>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="RunManager" selected="Python.Local Launch">
|
||||||
|
<configuration name="Local Launch" type="PythonConfigurationType" factoryName="Python" singleton="true">
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="C:\Program Files\Python36\python.exe" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="false" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<module name="RoverBaseStationMockup" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/RoverBaseStation.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
<component name="ShelveChangesManager" show_recycled="false">
|
||||||
|
<option name="remove_strategy" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="SvnConfiguration">
|
||||||
|
<configuration />
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="5ad562ed-81e4-4f9a-aac3-f3b24e4dd981" name="Default" comment="" />
|
||||||
|
<created>1505485834792</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1505485834792</updated>
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="ToolWindowManager">
|
||||||
|
<frame x="-8" y="-8" width="1936" height="1066" extended-state="6" />
|
||||||
|
<editor active="true" />
|
||||||
|
<layout>
|
||||||
|
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.14605543" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||||
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||||
|
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.20645161" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21182796" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||||
|
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||||
|
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32903227" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
</layout>
|
||||||
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="1" />
|
||||||
|
</component>
|
||||||
|
<component name="VcsContentAnnotationSettings">
|
||||||
|
<option name="myLimit" value="2678400000" />
|
||||||
|
</component>
|
||||||
|
<component name="XDebuggerManager">
|
||||||
|
<breakpoint-manager>
|
||||||
|
<option name="time" value="1" />
|
||||||
|
</breakpoint-manager>
|
||||||
|
<watches-manager />
|
||||||
|
</component>
|
||||||
|
<component name="editorHistoryManager">
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="901">
|
||||||
|
<caret line="62" column="112" lean-forward="false" selection-start-line="60" selection-start-column="10" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="2584">
|
||||||
|
<caret line="157" column="8" lean-forward="false" selection-start-line="157" selection-start-column="8" selection-end-line="157" selection-end-column="8" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="901">
|
||||||
|
<caret line="62" column="112" lean-forward="false" selection-start-line="60" selection-start-column="10" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="2584">
|
||||||
|
<caret line="157" column="8" lean-forward="false" selection-start-line="157" selection-start-column="8" selection-end-line="157" selection-end-column="8" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="122" lean-forward="false" selection-start-line="60" selection-start-column="122" selection-end-line="60" selection-end-column="122" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="122" lean-forward="false" selection-start-line="60" selection-start-column="122" selection-end-line="60" selection-end-column="122" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="122" lean-forward="false" selection-start-line="60" selection-start-column="122" selection-end-line="60" selection-end-column="122" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="122" lean-forward="false" selection-start-line="60" selection-start-column="122" selection-end-line="60" selection-end-column="122" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="true" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="122" lean-forward="false" selection-start-line="60" selection-start-column="122" selection-end-line="60" selection-end-column="122" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="102">
|
||||||
|
<caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54451">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1445">
|
||||||
|
<caret line="86" column="43" lean-forward="true" selection-start-line="86" selection-start-column="43" selection-end-line="86" selection-end-column="43" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="34">
|
||||||
|
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="578">
|
||||||
|
<caret line="37" column="20" lean-forward="true" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="867">
|
||||||
|
<caret line="60" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="34">
|
||||||
|
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="816">
|
||||||
|
<caret line="51" column="42" lean-forward="false" selection-start-line="51" selection-start-column="42" selection-end-line="51" selection-end-column="42" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="2057">
|
||||||
|
<caret line="126" column="0" lean-forward="false" selection-start-line="126" selection-start-column="0" selection-end-line="126" selection-end-column="41" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="uml://Python/RoverBaseStation.ApplicationWindow">
|
||||||
|
<provider selected="true" editor-type-id="UmlEditorProvider">
|
||||||
|
<state>
|
||||||
|
<ID>Python</ID>
|
||||||
|
<OriginalElement>RoverBaseStation.ApplicationWindow</OriginalElement>
|
||||||
|
<nodes>
|
||||||
|
<node x="" y="">RoverBaseStation.ApplicationWindow</node>
|
||||||
|
<node x="" y="">PyQt5.QtWidgets.QWidget.QWidget</node>
|
||||||
|
<node x="" y="">PyQt5.QtWidgets.QMainWindow.QMainWindow</node>
|
||||||
|
</nodes>
|
||||||
|
<notes />
|
||||||
|
<edges />
|
||||||
|
<settings layout="Hierarchic Group" zoom="1.0" x="145.0" y="94.0" />
|
||||||
|
<SelectedNodes />
|
||||||
|
<Categories />
|
||||||
|
<SCOPE>All</SCOPE>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Resources/Images/mountain_closeup.JPG">
|
||||||
|
<provider selected="true" editor-type-id="images">
|
||||||
|
<state />
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Resources/Images/mountains_from_marys_peak.JPG">
|
||||||
|
<provider selected="true" editor-type-id="images">
|
||||||
|
<state />
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.1/system/python_stubs/-1120166012/cv2/videostab.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://C:/Program Files/Python36/Lib/urllib/request.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="100">
|
||||||
|
<caret line="1784" column="47" lean-forward="true" selection-start-line="1784" selection-start-column="47" selection-end-line="1784" selection-end-column="47" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.1/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="236">
|
||||||
|
<caret line="3443" column="4" lean-forward="false" selection-start-line="3443" selection-start-column="4" selection-end-line="3443" selection-end-column="4" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/.PyCharm2017.2/system/python_stubs/-1120166012/cv2/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="54298">
|
||||||
|
<caret line="3203" column="4" lean-forward="false" selection-start-line="3203" selection-start-column="4" selection-end-line="3203" selection-end-column="4" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://C:/Program Files/Python36/Lib/site-packages/PIL/Image.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="177">
|
||||||
|
<caret line="1672" column="0" lean-forward="false" selection-start-line="1672" selection-start-column="0" selection-end-line="1672" selection-end-column="0" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Resources/Images/compass.png">
|
||||||
|
<provider selected="true" editor-type-id="images">
|
||||||
|
<state />
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/FlasherTestCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1734">
|
||||||
|
<caret line="103" column="0" lean-forward="false" selection-start-line="103" selection-start-column="0" selection-end-line="103" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/RoverBaseStation.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="901">
|
||||||
|
<caret line="62" column="112" lean-forward="false" selection-start-line="60" selection-start-column="10" selection-end-line="62" selection-end-column="112" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#478#488#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/Framework/VideoCore.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="678">
|
||||||
|
<caret line="158" column="0" lean-forward="false" selection-start-line="158" selection-start-column="0" selection-end-line="161" selection-end-column="0" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#63#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
131
rover_base_station_mockup/Framework/FlasherTestCore.py
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
from PyQt5 import QtWidgets, QtCore, QtGui
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
class Flasher(QtCore.QThread):
|
||||||
|
THREAD_DELAY = 100
|
||||||
|
FLASH_PERIOD = 1 # Per Second
|
||||||
|
|
||||||
|
update_label_status__signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, label_gui_element, subject_text, good_text, warning_text, bad_text):
|
||||||
|
super(Flasher, self).__init__()
|
||||||
|
|
||||||
|
self.subject_text = subject_text
|
||||||
|
|
||||||
|
self.label = label_gui_element # type: QtWidgets.QLabel
|
||||||
|
|
||||||
|
self.not_abort = True
|
||||||
|
|
||||||
|
self.statuses = {
|
||||||
|
"GOOD": {
|
||||||
|
"style": "background-color: green;",
|
||||||
|
"text": good_text
|
||||||
|
},
|
||||||
|
"WARNING": {
|
||||||
|
"style": "background-color: yellow;",
|
||||||
|
"text": warning_text
|
||||||
|
},
|
||||||
|
"BAD": {
|
||||||
|
"style": "background-color: red;",
|
||||||
|
"text": bad_text
|
||||||
|
},
|
||||||
|
"NEUTRAL": {
|
||||||
|
"style": ""
|
||||||
|
},
|
||||||
|
"UNKNOWN": {
|
||||||
|
"style": "background-color: black;",
|
||||||
|
"text": "STATUS UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.label_status = "BAD"
|
||||||
|
|
||||||
|
self.current_label_status = self.label_status
|
||||||
|
self.last_label_status = self.current_label_status
|
||||||
|
|
||||||
|
self.connect_signals_to_slots()
|
||||||
|
|
||||||
|
self.last_time = time.time()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while self.not_abort:
|
||||||
|
if (time.time() - self.last_time) >= self.FLASH_PERIOD:
|
||||||
|
if self.current_label_status in ["BAD", "WARNING", "UNKNOWN"]:
|
||||||
|
self.current_label_status = "NEUTRAL"
|
||||||
|
elif self.current_label_status == "NEUTRAL":
|
||||||
|
self.current_label_status = self.label_status
|
||||||
|
|
||||||
|
self.update_label_status__signal.emit()
|
||||||
|
self.last_time = time.time()
|
||||||
|
|
||||||
|
self.msleep(self.THREAD_DELAY)
|
||||||
|
|
||||||
|
def connect_signals_to_slots(self):
|
||||||
|
self.update_label_status__signal.connect(self.set_style__slot)
|
||||||
|
|
||||||
|
def set_label_status__slot(self, status):
|
||||||
|
text = self.subject_text
|
||||||
|
|
||||||
|
if status in self.statuses:
|
||||||
|
self.label_status = status
|
||||||
|
text += "\n" + self.statuses[self.label_status]["text"]
|
||||||
|
else:
|
||||||
|
self.label_status = "UNKNOWN"
|
||||||
|
|
||||||
|
self.label.setText(text)
|
||||||
|
|
||||||
|
def set_style__slot(self):
|
||||||
|
self.label.setStyleSheet(self.statuses[self.current_label_status]["style"])
|
||||||
|
|
||||||
|
|
||||||
|
class FlasherTest(QtCore.QThread):
|
||||||
|
set_style_sheets_signal = QtCore.pyqtSignal()
|
||||||
|
start_flashers__signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, main_window):
|
||||||
|
super(FlasherTest, self).__init__()
|
||||||
|
|
||||||
|
self.main_window = main_window
|
||||||
|
|
||||||
|
self.not_abort = True
|
||||||
|
|
||||||
|
self.label = self.main_window.label # type: QtWidgets.QLabel
|
||||||
|
self.label_2 = self.main_window.label_3 # type: QtWidgets.QLabel
|
||||||
|
self.label_3 = self.main_window.label_4 # type: QtWidgets.QLabel
|
||||||
|
|
||||||
|
self.rover_connected_flasher = Flasher(self.label, "ROVER", "CONNECTED", "INTERMITTENT", "DISCONNECTED")
|
||||||
|
self.controller_connected_flasher = Flasher(self.label_2, "CONTROLLER", "CONNECTED", "INTERMITTENT", "DISCONNECTED")
|
||||||
|
self.frsky_controller_connected_flasher = Flasher(self.label_3, "FRSKY", "CONNECTED", "INTERMITTENT", "DISCONNECTED")
|
||||||
|
|
||||||
|
self.rover_connected_flasher.set_label_status__slot("GOOD")
|
||||||
|
self.controller_connected_flasher.set_label_status__slot("WARNING")
|
||||||
|
self.frsky_controller_connected_flasher.set_label_status__slot("BAD")
|
||||||
|
|
||||||
|
self.start_flashers__signal.connect(self.rover_connected_flasher.start)
|
||||||
|
self.start_flashers__signal.connect(self.controller_connected_flasher.start)
|
||||||
|
self.start_flashers__signal.connect(self.frsky_controller_connected_flasher.start)
|
||||||
|
|
||||||
|
self.start_flashers__signal.emit()
|
||||||
|
|
||||||
|
self.main_window.kill_threads_signal.connect(self.on_kill_threads__slot)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
start_time = time.time()
|
||||||
|
while self.not_abort:
|
||||||
|
if time.time() - start_time > 1:
|
||||||
|
self.set_style_sheets_signal.emit()
|
||||||
|
start_time = time.time()
|
||||||
|
self.msleep(100)
|
||||||
|
|
||||||
|
def set_style_sheets(self):
|
||||||
|
if not self.label_last_color:
|
||||||
|
self.label_2.setStyleSheet("background-color: yellow;")
|
||||||
|
self.label_last_color = "asdf"
|
||||||
|
else:
|
||||||
|
self.label_2.setStyleSheet("")
|
||||||
|
self.label_last_color = ""
|
||||||
|
|
||||||
|
def on_kill_threads__slot(self):
|
||||||
|
self.rover_connected_flasher.terminate()
|
||||||
|
self.not_abort = False
|
||||||
164
rover_base_station_mockup/Framework/VideoCore.py
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
from PyQt5 import QtWidgets, QtCore, QtGui, QtMultimediaWidgets
|
||||||
|
import time
|
||||||
|
import cv2
|
||||||
|
import qimage2ndarray
|
||||||
|
import PIL.Image
|
||||||
|
from PIL.ImageQt import ImageQt
|
||||||
|
|
||||||
|
CV_CAP_PROP_FRAME_WIDTH = 3
|
||||||
|
CV_CAP_PROP_FRAME_HEIGHT = 4
|
||||||
|
CV_CAP_PROP_FPS = 5
|
||||||
|
|
||||||
|
|
||||||
|
class Compass(QtCore.QThread):
|
||||||
|
compass_ready__signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, main_window):
|
||||||
|
super(Compass, self).__init__()
|
||||||
|
|
||||||
|
self.main_window = main_window
|
||||||
|
|
||||||
|
self.not_abort = True
|
||||||
|
|
||||||
|
self.image = PIL.Image.open("Resources/Images/compass.png").resize((300, 300)) # PIL.Image
|
||||||
|
self.compass_dir = 1
|
||||||
|
|
||||||
|
self.compass_label = self.main_window.compass_label # type: QtWidgets.QLabel
|
||||||
|
self.compass_frame = None
|
||||||
|
self.compass_current_degrees_rotation = 0
|
||||||
|
|
||||||
|
self.main_window.kill_threads_signal.connect(self.on_kill_threads__slot)
|
||||||
|
self.compass_ready__signal.connect(self.on_compass_ready__slot)
|
||||||
|
|
||||||
|
self.start()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while self.not_abort:
|
||||||
|
new = self.image.rotate(int(self.compass_current_degrees_rotation))
|
||||||
|
|
||||||
|
if self.compass_current_degrees_rotation == 90:
|
||||||
|
self.compass_dir = 0
|
||||||
|
elif self.compass_current_degrees_rotation == -90:
|
||||||
|
self.compass_dir = 1
|
||||||
|
|
||||||
|
if self.compass_dir:
|
||||||
|
self.compass_current_degrees_rotation += 1
|
||||||
|
else:
|
||||||
|
self.compass_current_degrees_rotation -= 1
|
||||||
|
|
||||||
|
self.compass_frame = QtGui.QPixmap.fromImage(ImageQt(new))
|
||||||
|
self.compass_ready__signal.emit()
|
||||||
|
|
||||||
|
self.msleep(50)
|
||||||
|
|
||||||
|
def on_compass_ready__slot(self):
|
||||||
|
self.compass_label.setPixmap(self.compass_frame)
|
||||||
|
|
||||||
|
def on_kill_threads__slot(self):
|
||||||
|
self.not_abort = False
|
||||||
|
|
||||||
|
|
||||||
|
class VideoReader(QtCore.QThread):
|
||||||
|
video_frame_ready__signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, main_window):
|
||||||
|
super(VideoReader, self).__init__()
|
||||||
|
|
||||||
|
self.main_window = main_window
|
||||||
|
|
||||||
|
self.not_abort = True
|
||||||
|
|
||||||
|
self.primary_display_label = self.main_window.primary_display_label # type: QtWidgets.QLabel
|
||||||
|
|
||||||
|
self.main_window.kill_threads_signal.connect(self.on_kill_threads__slot)
|
||||||
|
self.video_frame_ready__signal.connect(self.on_compass_ready__slot)
|
||||||
|
|
||||||
|
# self.video = cv2.imread("Resources/Videos/ROSS1.MOV")
|
||||||
|
|
||||||
|
self.video_frame = None
|
||||||
|
|
||||||
|
self.start()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while self.not_abort:
|
||||||
|
frame = self.video_camera.read()[1]
|
||||||
|
|
||||||
|
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||||
|
# frame = cv2.resize(frame, (1280, 720))
|
||||||
|
# self.video_frame = QtGui.QPixmap.fromImage(qimage2ndarray.array2qimage(frame))
|
||||||
|
|
||||||
|
self.video_frame_ready__signal.emit()
|
||||||
|
|
||||||
|
self.msleep(50)
|
||||||
|
|
||||||
|
def on_compass_ready__slot(self):
|
||||||
|
self.primary_display_label.setPixmap(self.video_frame)
|
||||||
|
|
||||||
|
def on_kill_threads__slot(self):
|
||||||
|
self.not_abort = False
|
||||||
|
|
||||||
|
|
||||||
|
class Video(QtCore.QThread):
|
||||||
|
image_ready_signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, main_window):
|
||||||
|
super(Video, self).__init__()
|
||||||
|
|
||||||
|
self.main_window = main_window
|
||||||
|
|
||||||
|
self.not_abort = True
|
||||||
|
|
||||||
|
self.primary_display_label = self.main_window.primary_display_label # type: QtWidgets.QLabel
|
||||||
|
self.secondary_display_label = self.main_window.secondary_display_label # type: QtWidgets.QLabel
|
||||||
|
self.tertiary_display_label = self.main_window.tertiary_display_label # type: QtWidgets.QLabel
|
||||||
|
|
||||||
|
self.video_camera = cv2.VideoCapture(0)
|
||||||
|
|
||||||
|
self.video_camera.set(CV_CAP_PROP_FRAME_WIDTH, 1280)
|
||||||
|
self.video_camera.set(CV_CAP_PROP_FRAME_HEIGHT, 720)
|
||||||
|
self.video_camera.set(CV_CAP_PROP_FPS, 15)
|
||||||
|
|
||||||
|
self.main_window.kill_threads_signal.connect(self.on_kill_threads__slot)
|
||||||
|
self.image_ready_signal.connect(self.on_image_ready__slot)
|
||||||
|
|
||||||
|
self.raw_frame = None
|
||||||
|
self.large_frame = None
|
||||||
|
self.small_frame = None
|
||||||
|
|
||||||
|
self.compass = Compass(self.main_window)
|
||||||
|
# self.video_reader = VideoReader(self.main_window)
|
||||||
|
|
||||||
|
self.start()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
frame_count = 0
|
||||||
|
start_time = time.time()
|
||||||
|
|
||||||
|
while self.not_abort:
|
||||||
|
frame = self.video_camera.read()[1]
|
||||||
|
|
||||||
|
self.raw_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||||
|
self.large_frame = self.raw_frame
|
||||||
|
self.small_frame = cv2.resize(self.raw_frame, (640, 360))
|
||||||
|
self.large_frame = QtGui.QPixmap.fromImage(qimage2ndarray.array2qimage(self.large_frame))
|
||||||
|
self.small_frame = QtGui.QPixmap.fromImage(qimage2ndarray.array2qimage(self.small_frame))
|
||||||
|
|
||||||
|
self.image_ready_signal.emit()
|
||||||
|
|
||||||
|
frame_count += 1
|
||||||
|
fps = frame_count / (time.time() - start_time)
|
||||||
|
# print("FPS:", fps)
|
||||||
|
|
||||||
|
self.msleep(1)
|
||||||
|
|
||||||
|
self.compass.wait()
|
||||||
|
#self.video_reader.wait()
|
||||||
|
|
||||||
|
def on_image_ready__slot(self):
|
||||||
|
pass
|
||||||
|
self.primary_display_label.setPixmap(self.large_frame)
|
||||||
|
self.secondary_display_label.setPixmap(self.small_frame)
|
||||||
|
self.tertiary_display_label.setPixmap(self.small_frame)
|
||||||
|
|
||||||
|
def on_kill_threads__slot(self):
|
||||||
|
self.not_abort = False
|
||||||
220
rover_base_station_mockup/Mockup.svg
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="1920"
|
||||||
|
height="1080"
|
||||||
|
viewBox="0 0 1920 1080"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="Mockup.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.35355339"
|
||||||
|
inkscape:cx="484.85899"
|
||||||
|
inkscape:cy="881.78948"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
units="px"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:window-width="958"
|
||||||
|
inkscape:window-height="1018"
|
||||||
|
inkscape:window-x="-7"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:snap-text-baseline="false"
|
||||||
|
showguides="false" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,27.63783)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#999999;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4136"
|
||||||
|
width="1036.4165"
|
||||||
|
height="678.82251"
|
||||||
|
x="882.87329"
|
||||||
|
y="-26.480753" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4138"
|
||||||
|
width="640"
|
||||||
|
height="360"
|
||||||
|
x="1280"
|
||||||
|
y="692.36218" />
|
||||||
|
<rect
|
||||||
|
y="-26.480753"
|
||||||
|
x="882.87329"
|
||||||
|
height="678.82251"
|
||||||
|
width="1036.4165"
|
||||||
|
id="rect4140"
|
||||||
|
style="opacity:1;fill:#999999;fill-opacity:1;stroke:none" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#999999;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4142"
|
||||||
|
width="1280"
|
||||||
|
height="720"
|
||||||
|
x="640"
|
||||||
|
y="-27.637831" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffb380;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4138-2"
|
||||||
|
width="640"
|
||||||
|
height="360"
|
||||||
|
x="640"
|
||||||
|
y="692.36218" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4159"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(775.65625,481.14733)"><flowRegion
|
||||||
|
id="flowRegion4161"><rect
|
||||||
|
id="rect4163"
|
||||||
|
width="434.28571"
|
||||||
|
height="88.571426"
|
||||||
|
x="28.571428"
|
||||||
|
y="368.57144"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4167">Secondary Display</flowPara><flowPara
|
||||||
|
id="flowPara4190" /></flowRoot> <flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4169"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(0,-27.63783)"><flowRegion
|
||||||
|
id="flowRegion4171"><rect
|
||||||
|
id="rect4173"
|
||||||
|
width="191.42857"
|
||||||
|
height="95.714287"
|
||||||
|
x="42.857143"
|
||||||
|
y="512.85712" /></flowRegion><flowPara
|
||||||
|
id="flowPara4175">Secondary </flowPara></flowRoot> <flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4177"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(1444.627,285.43444)"><flowRegion
|
||||||
|
id="flowRegion4179"><rect
|
||||||
|
id="rect4181"
|
||||||
|
width="585.71429"
|
||||||
|
height="165.71428"
|
||||||
|
x="21.428572"
|
||||||
|
y="564.28571"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4196">Tertiary Display</flowPara></flowRoot> <flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4189"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(1103.6821,-13.137841)"><flowRegion
|
||||||
|
id="flowRegion4191"><rect
|
||||||
|
id="rect4193"
|
||||||
|
width="490"
|
||||||
|
height="200"
|
||||||
|
x="41.42857"
|
||||||
|
y="322.85715"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4197">Primary Display</flowPara></flowRoot> <rect
|
||||||
|
style="opacity:1;fill:#de8787;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4201"
|
||||||
|
width="360"
|
||||||
|
height="360"
|
||||||
|
x="280"
|
||||||
|
y="692.36218" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4203"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(317.23486,645.15612)"><flowRegion
|
||||||
|
id="flowRegion4205"><rect
|
||||||
|
id="rect4207"
|
||||||
|
width="400"
|
||||||
|
height="251.42857"
|
||||||
|
x="67.14286"
|
||||||
|
y="204.28572"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4211">Compass</flowPara></flowRoot> <rect
|
||||||
|
style="opacity:1;fill:#ffe680;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4215"
|
||||||
|
width="280"
|
||||||
|
height="360"
|
||||||
|
x="0"
|
||||||
|
y="692.36218" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4217"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(-11.890625,699.71959)"><flowRegion
|
||||||
|
id="flowRegion4219"><rect
|
||||||
|
id="rect4221"
|
||||||
|
width="331.42856"
|
||||||
|
height="167.14285"
|
||||||
|
x="62.857143"
|
||||||
|
y="150"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4223">Waypoints</flowPara></flowRoot> <rect
|
||||||
|
style="opacity:1;fill:#ddff55;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4225"
|
||||||
|
width="640"
|
||||||
|
height="240"
|
||||||
|
x="0"
|
||||||
|
y="-27.637831" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4227"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(114.0542,2.2171395)"><flowRegion
|
||||||
|
id="flowRegion4229"><rect
|
||||||
|
id="rect4231"
|
||||||
|
width="327.14285"
|
||||||
|
height="92.85714"
|
||||||
|
x="132.85715"
|
||||||
|
y="70"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4235">Statuses</flowPara></flowRoot> <rect
|
||||||
|
style="opacity:1;fill:#80ffb3;fill-opacity:1;stroke:none"
|
||||||
|
id="rect4239"
|
||||||
|
width="640"
|
||||||
|
height="480"
|
||||||
|
x="0"
|
||||||
|
y="212.36217" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4241"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(-97.104004,9.719579)"><flowRegion
|
||||||
|
id="flowRegion4243"><rect
|
||||||
|
id="rect4245"
|
||||||
|
width="292.85715"
|
||||||
|
height="82.85714"
|
||||||
|
x="321.42856"
|
||||||
|
y="420"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
|
||||||
|
id="flowPara4247">Tab Groups</flowPara></flowRoot> </g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 11 KiB |
2
rover_base_station_mockup/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
This was an example project using python, opencv, and pyqt to show a potential design for the rover gui.
|
||||||
|
There's lots of useful example code here, hence me keeping it.
|
||||||
BIN
rover_base_station_mockup/Resources/Images/compass.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
rover_base_station_mockup/Resources/Images/mountain_closeup.JPG
Normal file
|
After Width: | Height: | Size: 297 KiB |
|
After Width: | Height: | Size: 2.5 MiB |
BIN
rover_base_station_mockup/Resources/Images/path4140.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 5.1 MiB |
910
rover_base_station_mockup/Resources/UI/RoverGui.ui
Normal file
@@ -0,0 +1,910 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainWindow</string>
|
||||||
|
</property>
|
||||||
|
<property name="windowOpacity">
|
||||||
|
<double>1.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: #201F1D;
|
||||||
|
color: #DCDCDC;</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralwidget">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QLabel{
|
||||||
|
color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Rover Connected</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QLabel{
|
||||||
|
color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Controller Connected</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>213</width>
|
||||||
|
<height>240</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="sizeIncrement">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QLabel{
|
||||||
|
color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>FrSky Connected</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTabWidget" name="tabs">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>480</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>480</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QTabWidget::pane{
|
||||||
|
border: 2px solid rgb(55,55,55);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTabBar::tab{
|
||||||
|
border: 2px solid rgb(55,55,55);
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
min-width: 8ex;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTabBar::tab:selected{
|
||||||
|
border-bottom-color:rgb(55,55,55);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTabBar::tab:!selected{
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSpinBox{
|
||||||
|
background-color:rgb(55,55,55);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton{
|
||||||
|
background-color:rgb(55,55,55);
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="Page1" native="true">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Video</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout" name="primary_display_form_layout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Primary Display</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Main</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Undercarriage</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Elbow</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Gripper / Nikon</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Mapping</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout" name="secondary_display_form_layout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Secondary Display</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_16">
|
||||||
|
<property name="text">
|
||||||
|
<string>Main</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_17">
|
||||||
|
<property name="text">
|
||||||
|
<string>Undercarriage</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_18">
|
||||||
|
<property name="text">
|
||||||
|
<string>Elbow</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_19">
|
||||||
|
<property name="text">
|
||||||
|
<string>Gripper / Nikon</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_20">
|
||||||
|
<property name="text">
|
||||||
|
<string>Mapping</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout" name="tertiary_display_form_layout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Tertiary Display</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Main</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>Undercarriage</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_8">
|
||||||
|
<property name="text">
|
||||||
|
<string>Elbow</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QRadioButton" name="radioButton_9">
|
||||||
|
<property name="text">
|
||||||
|
<string>Gripper / Nikon</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_2">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Autonomy</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_3">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Sensors</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Settings</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_4">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Logs</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Waypoints</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableWidget" name="tableWidget">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QTableView{
|
||||||
|
selection-background-color: #DE8D47;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableView QHeaderView{
|
||||||
|
background-color: #201F1D;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableView QHeaderView::section{
|
||||||
|
background-color: #201F1D;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableView QTableCornerButton::section{
|
||||||
|
background-color: #201F1D;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalScrollBarPolicy">
|
||||||
|
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||||
|
</property>
|
||||||
|
<property name="alternatingRowColors">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="cornerButtonEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="horizontalHeaderVisible">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="horizontalHeaderCascadingSectionResizes">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="horizontalHeaderDefaultSectionSize">
|
||||||
|
<number>59</number>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="horizontalHeaderMinimumSectionSize">
|
||||||
|
<number>53</number>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderCascadingSectionResizes">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderDefaultSectionSize">
|
||||||
|
<number>30</number>
|
||||||
|
</attribute>
|
||||||
|
<row>
|
||||||
|
<property name="text">
|
||||||
|
<string>1</string>
|
||||||
|
</property>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<property name="text">
|
||||||
|
<string>2</string>
|
||||||
|
</property>
|
||||||
|
</row>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>LAT</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>LON</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>DIST</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<property name="text">
|
||||||
|
<string>32.1665</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<property name="text">
|
||||||
|
<string>-112.1115</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<property name="text">
|
||||||
|
<string>2.4 KM</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<property name="text">
|
||||||
|
<string>33.1124</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<property name="text">
|
||||||
|
<string>-111.4334</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<property name="text">
|
||||||
|
<string>5.7 KM</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>65</width>
|
||||||
|
<height>35</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QPushButton{
|
||||||
|
color: #201F1D;
|
||||||
|
background-color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Set</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>65</width>
|
||||||
|
<height>35</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QPushButton{
|
||||||
|
color: #201F1D;
|
||||||
|
background-color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Add
|
||||||
|
Manual</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_4">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>65</width>
|
||||||
|
<height>35</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QPushButton{
|
||||||
|
color: #201F1D;
|
||||||
|
background-color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Add
|
||||||
|
GPS</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_3">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>65</width>
|
||||||
|
<height>35</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QPushButton{
|
||||||
|
color: #201F1D;
|
||||||
|
background-color: #868685;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Delete</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="compass_label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>360</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>360</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<stylestrategy>PreferAntialias</stylestrategy>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::DefaultContextMenu</enum>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: black;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="primary_display_label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>1280</width>
|
||||||
|
<height>720</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>1280</width>
|
||||||
|
<height>720</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: grey;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="secondary_display_label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: darkgrey;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="tertiary_display_label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>640</width>
|
||||||
|
<height>360</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: lightgrey;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
128
rover_base_station_mockup/RoverBaseStation.py
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
"""
|
||||||
|
Main file used to launch the Rover Base Station
|
||||||
|
No other files should be used for launching this application.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = "Corwin Perren"
|
||||||
|
__credits__ = [""]
|
||||||
|
__license__ = "GPL (GNU General Public License) 3.0"
|
||||||
|
__version__ = "0.1"
|
||||||
|
__maintainer__ = "Corwin Perren"
|
||||||
|
__email__ = "caperren@caperren.com"
|
||||||
|
__status__ = "Development"
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Imports
|
||||||
|
#####################################
|
||||||
|
# Python native imports
|
||||||
|
import sys
|
||||||
|
from PyQt5 import QtWidgets, QtCore, QtGui, uic
|
||||||
|
import signal
|
||||||
|
import ctypes
|
||||||
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Custom Imports
|
||||||
|
from Framework.FlasherTestCore import FlasherTest
|
||||||
|
from Framework.VideoCore import Video
|
||||||
|
# from Framework.SettingsCore import Settings
|
||||||
|
# from Framework.LoggingCore import Logger
|
||||||
|
# from Interface.InterfaceCore import Interface
|
||||||
|
# from Framework.GameControllerCore import GameController
|
||||||
|
# from Framework.RoverControllerCore import RoverController
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Global Variables
|
||||||
|
#####################################
|
||||||
|
UI_FILE_PATH = "Resources/UI/RoverGui.ui"
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Application Class Definition
|
||||||
|
#####################################
|
||||||
|
class ApplicationWindow(QtWidgets.QMainWindow):
|
||||||
|
kill_threads_signal = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
# noinspection PyArgumentList
|
||||||
|
super(ApplicationWindow, self).__init__(parent)
|
||||||
|
uic.loadUi(UI_FILE_PATH, self)
|
||||||
|
|
||||||
|
# ########## Class Variables ##########
|
||||||
|
self.num_threads_running = 0
|
||||||
|
self.threads = []
|
||||||
|
|
||||||
|
self.primary_display_label = self.primary_display_label # type: QtWidgets.QLabel
|
||||||
|
self.secondary_display_label = self.secondary_display_label # type: QtWidgets.QLabel
|
||||||
|
self.tertiary_display_label = self.tertiary_display_label # type: QtWidgets.QLabel
|
||||||
|
|
||||||
|
# self.primary_display_label.setPixmap(QtGui.QPixmap("Resources/Images/steller_at_terminus.png").scaledToHeight(1080))
|
||||||
|
# self.secondary_display_label.setPixmap(QtGui.QPixmap("Resources/Images/mountain_closeup.jpg"))
|
||||||
|
# self.tertiary_display_label.setPixmap(QtGui.QPixmap("Resources/Images/mountains_from_marys_peak.jpg"))
|
||||||
|
|
||||||
|
self.flasher = FlasherTest(self)
|
||||||
|
self.video = Video(self)
|
||||||
|
|
||||||
|
self.threads.append(self.flasher)
|
||||||
|
self.threads.append(self.video)
|
||||||
|
# self.gps_lock_button = self.gps_lock_button # type: QtWidgets.QPushButton
|
||||||
|
# self.gps_lock_button.setCheckable(True)
|
||||||
|
|
||||||
|
# ########## Instantiation of program classes ##########
|
||||||
|
# Settings class and version number set
|
||||||
|
# self.settings_class = Settings(self)
|
||||||
|
# self.settings = QtCore.QSettings()
|
||||||
|
# self.settings.setValue("miscellaneous/version", __version__)
|
||||||
|
|
||||||
|
# Uncomment these lines to completely reset settings and quit, then re-comment and rerun program
|
||||||
|
# self.settings.clear()
|
||||||
|
# self.close()
|
||||||
|
|
||||||
|
# Set up the global logger instance
|
||||||
|
# self.logger_class = Logger(console_output=True)
|
||||||
|
# self.logger = logging.getLogger("RoverBaseStation")
|
||||||
|
#
|
||||||
|
# # All interface elements
|
||||||
|
# self.controller_class = GameController(self)
|
||||||
|
# self.interface_class = Interface(self)
|
||||||
|
# self.rover_controller_class = RoverController(self)
|
||||||
|
#
|
||||||
|
# # ########## Add threads to list for easy access on program close ##########
|
||||||
|
# self.threads.append(self.interface_class.live_logs_class)
|
||||||
|
# self.threads.append(self.controller_class)
|
||||||
|
# self.threads.append(self.rover_controller_class)
|
||||||
|
|
||||||
|
# ########## Set up QT Application Window ##########
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
def closeEvent(self, event):
|
||||||
|
# Tell all threads to die
|
||||||
|
self.kill_threads_signal.emit()
|
||||||
|
|
||||||
|
# Wait for all the threads to end properly
|
||||||
|
for thread in self.threads:
|
||||||
|
thread.wait()
|
||||||
|
|
||||||
|
# Print final log noting shutdown and shutdown the logger to flush to disk
|
||||||
|
# self.logger.debug("########## Application Stopping ##########")
|
||||||
|
logging.shutdown()
|
||||||
|
|
||||||
|
# Accept the close event to properly close the program
|
||||||
|
event.accept()
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Main Definition
|
||||||
|
#####################################
|
||||||
|
if __name__ == "__main__":
|
||||||
|
signal.signal(signal.SIGINT, signal.SIG_DFL) # This allows the keyboard interrupt kill to work properly
|
||||||
|
application = QtWidgets.QApplication(sys.argv) # Create the base qt gui application
|
||||||
|
app_window = ApplicationWindow() # Make a window in this application
|
||||||
|
app_window.setWindowTitle("Rover Base Station") # Sets the window title
|
||||||
|
|
||||||
|
# app_window.setFixedSize(1920, 1080)
|
||||||
|
app_window.showFullScreen()
|
||||||
|
app_window.show() # Show the window in the application
|
||||||
|
application.exec_() # Execute launching of the application
|
||||||
150
rover_base_station_mockup/compass.svg
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 744.09448819 1052.3622047"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
inkscape:export-filename="C:\Users\Corwin Perren\PycharmProjects\RoverBaseStationMockup\Resources\Images\compass.png"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750"
|
||||||
|
sodipodi:docname="compass.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.979899"
|
||||||
|
inkscape:cx="367.83722"
|
||||||
|
inkscape:cy="536.84511"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1027"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none"
|
||||||
|
id="path4136"
|
||||||
|
cx="376.42859"
|
||||||
|
cy="511.64792"
|
||||||
|
r="207.85715"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.82261443px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 376.42859,338.32234 0,344.63086"
|
||||||
|
id="path4140"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.76764578px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 206.46343,511.64792 338.41509,0"
|
||||||
|
id="path4142"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.73459327px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 229.90347,365.1228 522.9537,658.17303"
|
||||||
|
id="path4144"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.70106518px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 523.39974,364.67677 228.95236,659.12415"
|
||||||
|
id="path4146"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="361.42859"
|
||||||
|
y="334.8728"
|
||||||
|
id="text4148"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4150"
|
||||||
|
x="361.42859"
|
||||||
|
y="334.8728">N</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-390.25671"
|
||||||
|
y="-687.89569"
|
||||||
|
id="text4152"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750"
|
||||||
|
transform="scale(-1,-1)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4154"
|
||||||
|
x="-390.25671"
|
||||||
|
y="-687.89569">S</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="-531.42334"
|
||||||
|
y="199.65347"
|
||||||
|
id="text4156"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750"
|
||||||
|
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4158"
|
||||||
|
x="-531.42334"
|
||||||
|
y="199.65347">W</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="498.16159"
|
||||||
|
y="-553.20374"
|
||||||
|
id="text4160"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
inkscape:export-xdpi="750"
|
||||||
|
inkscape:export-ydpi="750"
|
||||||
|
transform="matrix(0,1,-1,0,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4162"
|
||||||
|
x="498.16159"
|
||||||
|
y="-553.20374">E</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.7 KiB |