Video modifications and last changes

This commit is contained in:
2018-01-25 15:46:31 -08:00
parent b85319665e
commit 6297a2af44
6 changed files with 266 additions and 62 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,15 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="dict.exit_requested_signal" />
<option value="dict.primary_video_label" />
<option value="dict.secondary_video_label" />
<option value="dict.tertiary_video_label" />
</list>
</option>
</inspection_tool>
</profile>
</component>

View File

@@ -0,0 +1,7 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</component>

View File

@@ -20,25 +20,15 @@
<window id="1"> <window id="1">
<content type="file-editors"> <content type="file-editors">
<state> <state>
<leaf> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="RoverVideoReceiverOld.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-433">
<caret line="54" column="43" selection-start-line="54" selection-start-column="39" selection-end-line="54" selection-end-column="43" />
<folding>
<element signature="e#0#10#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RoverVideoReceiver.py" pinned="false" current-in-tab="true"> <file leaf-file-name="RoverVideoReceiver.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiver.py"> <entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiver.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="720"> <state relative-caret-position="-1219">
<caret line="100" column="92" selection-start-line="100" selection-start-column="92" selection-end-line="100" selection-end-column="92" /> <caret line="74" column="33" selection-start-line="74" selection-start-column="33" selection-end-line="74" selection-end-column="33" />
<folding /> <folding>
<element signature="e#110#152#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
@@ -57,7 +47,7 @@
<file leaf-file-name="Logger.py" pinned="false" current-in-tab="false"> <file leaf-file-name="Logger.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py"> <entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-162"> <state relative-caret-position="288">
<caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" /> <caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" />
<folding> <folding>
<element signature="e#110#134#0" expanded="true" /> <element signature="e#110#134#0" expanded="true" />
@@ -69,10 +59,11 @@
<file leaf-file-name="RoverVideoCoordinator.py" pinned="false" current-in-tab="true"> <file leaf-file-name="RoverVideoCoordinator.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py"> <entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="138"> <state relative-caret-position="359">
<caret line="62" column="48" selection-start-line="62" selection-start-column="48" selection-end-line="62" selection-end-column="48" /> <caret line="77" column="12" selection-start-line="77" selection-start-column="12" selection-end-line="77" selection-end-column="12" />
<folding> <folding>
<element signature="e#110#152#0" expanded="true" /> <element signature="e#110#145#0" expanded="true" />
<marker date="1516923718211" expanded="false" signature="2739:4048" ph="..." />
</folding> </folding>
</state> </state>
</provider> </provider>
@@ -81,7 +72,7 @@
<file leaf-file-name="RoverGroundStation.py" pinned="false" current-in-tab="false"> <file leaf-file-name="RoverGroundStation.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/RoverGroundStation.py"> <entry file="file://$PROJECT_DIR$/RoverGroundStation.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1434"> <state relative-caret-position="2826">
<caret line="167" column="43" selection-start-line="167" selection-start-column="43" selection-end-line="167" selection-end-column="43" /> <caret line="167" column="43" selection-start-line="167" selection-start-column="43" selection-end-line="167" selection-end-column="43" />
<folding> <folding>
<element signature="e#132#142#0" expanded="true" /> <element signature="e#132#142#0" expanded="true" />
@@ -90,6 +81,18 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="RoverVideoReceiverOld.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1134">
<caret line="74" column="18" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="142" />
<folding>
<element signature="e#0#10#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
@@ -117,6 +120,7 @@
<sorting>DEFINITION_ORDER</sorting> <sorting>DEFINITION_ORDER</sorting>
</component> </component>
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="y" value="16" />
<option name="width" value="1920" /> <option name="width" value="1920" />
<option name="height" value="1044" /> <option name="height" value="1044" />
</component> </component>
@@ -145,7 +149,6 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scratches" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<PATH> <PATH>
@@ -217,6 +220,7 @@
</subPane> </subPane>
</pane> </pane>
<pane id="Scope" /> <pane id="Scope" />
<pane id="Scratches" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
@@ -453,28 +457,28 @@
<servers /> <servers />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="0" width="1920" height="1044" extended-state="6" /> <frame x="0" y="16" width="1920" height="1044" extended-state="6" />
<editor active="true" /> <editor active="true" />
<layout> <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.134375" 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="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.32916668" sideWeight="0.50192416" order="7" side_tool="true" 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.32916668" sideWeight="0.50192416" order="7" side_tool="true" content_ui="tabs" />
<window_info id="File Transfer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32908705" sideWeight="0.5" order="7" side_tool="false" 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="File Transfer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22399151" sideWeight="0.5" order="7" 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="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.32908705" 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.32908705" 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="false" show_stripe_button="true" weight="0.32960325" sideWeight="0.5" order="2" 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.18259023" sideWeight="0.49807587" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.134375" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<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="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32908705" sideWeight="0.5" order="1" 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="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.18259023" sideWeight="0.49807587" 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="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="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="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="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="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="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="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32960325" sideWeight="0.5" order="2" 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="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="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32908705" 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" /> <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" />
<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" />
</layout> </layout>
<layout-to-restore> <layout-to-restore>
<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="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" />
@@ -513,10 +517,94 @@
<option name="myLimit" value="2678400000" /> <option name="myLimit" value="2678400000" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager /> <breakpoint-manager>
<option name="time" value="1" />
</breakpoint-manager>
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" />
<folding>
<element signature="e#110#134#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="15" column="9" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="31" />
<folding>
<element signature="e#110#145#0" expanded="true" />
<marker date="1516923718211" expanded="false" signature="2739:4048" ph="..." />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/RoverGroundStation.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2826">
<caret line="167" column="43" selection-start-line="167" selection-start-column="43" selection-end-line="167" selection-end-column="43" />
<folding>
<element signature="e#132#142#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1134">
<caret line="74" column="18" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="142" />
<folding>
<element signature="e#0#10#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="378">
<caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" />
<folding>
<element signature="e#110#134#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="72">
<caret line="4" column="25" selection-start-line="4" selection-start-column="25" selection-end-line="4" selection-end-column="25" />
<folding>
<element signature="e#110#145#0" expanded="true" />
<marker date="1516923718211" expanded="false" signature="2739:4048" ph="..." />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/RoverGroundStation.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#132#142#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1134">
<caret line="74" column="18" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="142" />
<folding>
<element signature="e#0#10#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/RoverGroundStation.py"> <entry file="file://$PROJECT_DIR$/RoverGroundStation.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@@ -543,13 +631,12 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196"> <state relative-caret-position="196">
<caret line="349" column="4" selection-start-line="349" selection-start-column="4" selection-end-line="349" selection-end-column="4" /> <caret line="349" column="4" selection-start-line="349" selection-start-column="4" selection-end-line="349" selection-end-column="4" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py"> <entry file="file://$PROJECT_DIR$/Framework/LoggingSystems/Logger.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-162"> <state relative-caret-position="288">
<caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" /> <caret line="21" column="37" selection-start-line="21" selection-start-column="23" selection-end-line="21" selection-end-column="37" />
<folding> <folding>
<element signature="e#110#134#0" expanded="true" /> <element signature="e#110#134#0" expanded="true" />
@@ -561,15 +648,12 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="774"> <state relative-caret-position="774">
<caret line="43" column="38" selection-start-line="43" selection-start-column="38" selection-end-line="43" selection-end-column="38" /> <caret line="43" column="38" selection-start-line="43" selection-start-column="38" selection-end-line="43" selection-end-column="38" />
<folding>
<element signature="e#110#152#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/RoverGroundStation.py"> <entry file="file://$PROJECT_DIR$/RoverGroundStation.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1434"> <state relative-caret-position="2826">
<caret line="167" column="43" selection-start-line="167" selection-start-column="43" selection-end-line="167" selection-end-column="43" /> <caret line="167" column="43" selection-start-line="167" selection-start-column="43" selection-end-line="167" selection-end-column="43" />
<folding> <folding>
<element signature="e#132#142#0" expanded="true" /> <element signature="e#132#142#0" expanded="true" />
@@ -579,26 +663,29 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py"> <entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiverOld.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-433"> <state relative-caret-position="1134">
<caret line="54" column="43" selection-start-line="54" selection-start-column="39" selection-end-line="54" selection-end-column="43" /> <caret line="74" column="18" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="142" />
<folding> <folding>
<element signature="e#0#10#0" expanded="true" /> <element signature="e#0#10#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiver.py"> <entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="720"> <state relative-caret-position="359">
<caret line="100" column="92" selection-start-line="100" selection-start-column="92" selection-end-line="100" selection-end-column="92" /> <caret line="77" column="12" selection-start-line="77" selection-start-column="12" selection-end-line="77" selection-end-column="12" />
<folding /> <folding>
<element signature="e#110#145#0" expanded="true" />
<marker date="1516923718211" expanded="false" signature="2739:4048" ph="..." />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoCoordinator.py"> <entry file="file://$PROJECT_DIR$/Framework/VideoSystems/RoverVideoReceiver.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="138"> <state relative-caret-position="-1219">
<caret line="62" column="48" selection-start-line="62" selection-start-column="48" selection-end-line="62" selection-end-column="48" /> <caret line="74" column="33" selection-start-line="74" selection-start-column="33" selection-end-line="74" selection-end-column="33" />
<folding> <folding>
<element signature="e#110#152#0" expanded="true" /> <element signature="e#110#152#0" expanded="true" />
</folding> </folding>
@@ -607,6 +694,6 @@
</entry> </entry>
</component> </component>
<component name="webServersAuthStorage"> <component name="webServersAuthStorage">
<data>AAAAsC92Kuu3oLrABnhEDJd2fqLpSLKMDnz1RoGljcqcyx6rWWvT/BV+wcLNHGnvYk97nqnk/pKm4cGIiar9MRU3nZkNwyjJxPVtt3haC8iDCZdLJZ6CmktPYqrohRIav09rau96cPFO/I//1EIneIP/1ljcNiibrP6ukAATwUH19NLQaGz1/EYXXVq+qowSGeFE7dAFp107pLkmub5CsKj/8zF+PCqHoF8AEDn937Vn/JpXGWVGlieBMxMrucAQD8JqIA==</data> <data>AAAAsNHwc2N+8Zbshoe1tr2XDVkf8aGU/l0YnN7t0gOfSXYMOeQZo2dVv+GbvgrFH5EF+uviJzRPHArF3uX1Vb0CuhmnSE0NSLdGfSjyMrpWsoZyS3WBI979X8Y/8lSe/g2O65pafrceXlU4ySEbA9w/JNU42PtXijURL7sXfaZ8kxhE5bYQlRppUyBo5g/qgzvj275mbp6uuZ5w9ssFsOzrJGsGulioJmZ9L9P6O6PVj2sPT2AEw+jC8eGiiappc0lWOA==</data>
</component> </component>
</project> </project>

View File

@@ -13,9 +13,13 @@ import RoverVideoReceiver
##################################### #####################################
# Global Variables # Global Variables
##################################### #####################################
CAMERA_TOPIC_PATH = "/cameras" CAMERA_TOPIC_PATH = "/cameras/"
EXCLUDED_CAMERAS = ["zed"] EXCLUDED_CAMERAS = ["zed"]
PRIMARY_LABEL_MAX = (640, 360)
SECONDARY_LABEL_MAX = (256, 144)
TERTIARY_LABEL_MAX = (256, 144)
##################################### #####################################
# RoverVideoCoordinator Class Definition # RoverVideoCoordinator Class Definition
@@ -48,6 +52,7 @@ class RoverVideoCoordinator(QtCore.QThread):
# Camera variables # Camera variables
self.camera_threads = {} self.camera_threads = {}
self.valid_cameras = [] self.valid_cameras = []
self.disabled_cameras = []
# Setup cameras # Setup cameras
self.__get_cameras() self.__get_cameras()
@@ -57,17 +62,57 @@ class RoverVideoCoordinator(QtCore.QThread):
self.secondary_label_current_setting = 0 self.secondary_label_current_setting = 0
self.tertiary_label_current_setting = 0 self.tertiary_label_current_setting = 0
self.primary_label_max_resolution = -1
self.secondary_label_max_resolution = -1
self.tertiary_label_max_resolution = -1
def run(self): def run(self):
self.logger.debug("Starting Video Coordinator Thread") self.logger.debug("Starting Video Coordinator Thread")
while self.run_thread_flag: self.__set_max_resolutions() # Do this initially so we don't try to disable cameras before they're set up
self.msleep(500)
self.msleep(100) while self.run_thread_flag:
self.__set_max_resolutions()
# self.__toggle_background_cameras_if_needed()
self.msleep(10)
self.__wait_for_camera_threads() self.__wait_for_camera_threads()
self.logger.debug("Stopping Video Coordinator Thread") self.logger.debug("Stopping Video Coordinator Thread")
def __set_max_resolutions(self):
self.primary_label_max_resolution = self.camera_threads[
self.valid_cameras[self.primary_label_current_setting]].current_max_resolution
self.secondary_label_max_resolution = self.camera_threads[
self.valid_cameras[self.secondary_label_current_setting]].current_max_resolution
self.tertiary_label_max_resolution = self.camera_threads[
self.valid_cameras[self.tertiary_label_current_setting]].current_max_resolution
if self.primary_label_max_resolution != PRIMARY_LABEL_MAX:
self.camera_threads[self.valid_cameras[self.primary_label_current_setting]].change_max_resolution_setting(
PRIMARY_LABEL_MAX)
if self.secondary_label_max_resolution != SECONDARY_LABEL_MAX and self.secondary_label_current_setting != self.primary_label_current_setting:
self.camera_threads[self.valid_cameras[self.secondary_label_current_setting]].change_max_resolution_setting(
SECONDARY_LABEL_MAX)
if self.tertiary_label_max_resolution != TERTIARY_LABEL_MAX and self.tertiary_label_current_setting != self.primary_label_current_setting:
self.camera_threads[self.valid_cameras[self.tertiary_label_current_setting]].change_max_resolution_setting(
TERTIARY_LABEL_MAX)
def __toggle_background_cameras_if_needed(self):
enabled = list({self.primary_label_current_setting, self.secondary_label_current_setting,
self.tertiary_label_current_setting})
for camera_index, camera_name in enumerate(self.valid_cameras):
if camera_index not in enabled:
self.camera_threads[camera_name].toggle_video_display()
self.disabled_cameras.append(camera_index)
elif camera_index in self.disabled_cameras:
self.camera_threads[camera_name].toggle_video_display()
self.disabled_cameras.remove(camera_index)
def __get_cameras(self): def __get_cameras(self):
topics = rospy.get_published_topics(CAMERA_TOPIC_PATH) topics = rospy.get_published_topics(CAMERA_TOPIC_PATH)
@@ -140,4 +185,3 @@ class RoverVideoCoordinator(QtCore.QThread):
def on_kill_threads_requested__slot(self): def on_kill_threads_requested__slot(self):
self.run_thread_flag = False self.run_thread_flag = False

View File

@@ -17,7 +17,7 @@ from sensor_msgs.msg import CompressedImage
##################################### #####################################
# Global Variables # Global Variables
##################################### #####################################
FONT = cv2.FONT_HERSHEY_TRIPLEX CAMERA_TOPIC_PATH = "/cameras/"
##################################### #####################################
@@ -44,11 +44,23 @@ class RoverVideoReceiver(QtCore.QThread):
# ########## Class Variables ########## # ########## Class Variables ##########
self.camera_title_name = self.camera_name.replace("_", " ").title() self.camera_title_name = self.camera_name.replace("_", " ").title()
self.topic_path = "/cameras/" + self.camera_name + "/image_640x360/compressed" self.topic_base_path = CAMERA_TOPIC_PATH + self.camera_name
self.camera_topics = {}
self.current_max_resolution = None
self.current_camera_settings = {
"resolution": None,
"quality_setting": 80,
}
self.previous_camera_settings = self.current_camera_settings.copy()
self.temp_topic_path = CAMERA_TOPIC_PATH + self.camera_name + "/image_640x360/compressed"
# Subscription variables # Subscription variables
self.video_subscriber = rospy.Subscriber(self.topic_path, CompressedImage, self.video_subscriber = None # type: rospy.Subscriber
self.__image_data_received_callback) # type: rospy.Subscriber
# Image variables # Image variables
self.raw_image = None self.raw_image = None
@@ -72,6 +84,7 @@ class RoverVideoReceiver(QtCore.QThread):
self.camera_name_opencv_640x360_image = None self.camera_name_opencv_640x360_image = None
self.__create_camera_name_opencv_images() self.__create_camera_name_opencv_images()
self.__get_camera_available_resolutions()
def run(self): def run(self):
self.logger.debug("Starting \"%s\" Camera Thread" % self.camera_title_name) self.logger.debug("Starting \"%s\" Camera Thread" % self.camera_title_name)
@@ -82,12 +95,45 @@ class RoverVideoReceiver(QtCore.QThread):
else: else:
self.__show_video_disabled() self.__show_video_disabled()
self.msleep(18) self.msleep(10)
self.logger.debug("Stopping \"%s\" Camera Thread" % self.camera_title_name) self.logger.debug("Stopping \"%s\" Camera Thread" % self.camera_title_name)
def __get_camera_available_resolutions(self):
topics = rospy.get_published_topics(self.topic_base_path)
resolution_options = []
for topics_group in topics:
main_topic = topics_group[0]
camera_name = main_topic.split("/")[3]
resolution_options.append(camera_name)
resolution_options = list(set(resolution_options))
for resolution in resolution_options:
# Creates a tuple in (width, height) format that we can use as the key
group = int(resolution.split("image_")[1].split("x")[0]), int(resolution.split("image_")[1].split("x")[1])
self.camera_topics[group] = self.topic_base_path + "/" + resolution + "/compressed"
def __update_camera_subscription_and_settings(self):
if self.current_camera_settings["resolution"] != self.previous_camera_settings["resolution"]:
if self.video_subscriber:
self.video_subscriber.unregister()
new_topic = self.camera_topics[self.current_camera_settings["resolution"]]
self.video_subscriber = rospy.Subscriber(new_topic, CompressedImage, self.__image_data_received_callback)
self.new_frame = False
while not self.new_frame:
self.msleep(10)
self.previous_camera_settings["resolution"] = self.current_camera_settings["resolution"]
def __show_video_enabled(self): def __show_video_enabled(self):
if self.new_frame: self.__update_camera_subscription_and_settings()
if self.new_frame and self.current_camera_settings["resolution"]:
# if self.raw_image:
opencv_image = self.bridge.compressed_imgmsg_to_cv2(self.raw_image, "rgb8") opencv_image = self.bridge.compressed_imgmsg_to_cv2(self.raw_image, "rgb8")
self.__create_final_pixmaps(opencv_image) self.__create_final_pixmaps(opencv_image)
@@ -103,8 +149,6 @@ class RoverVideoReceiver(QtCore.QThread):
self.image_ready_signal.emit(self.camera_name) self.image_ready_signal.emit(self.camera_name)
def __create_final_pixmaps(self, opencv_image): def __create_final_pixmaps(self, opencv_image):
height, width, _ = opencv_image.shape height, width, _ = opencv_image.shape
if width != 1280 and height != 720: if width != 1280 and height != 720:
@@ -155,14 +199,21 @@ class RoverVideoReceiver(QtCore.QThread):
self.camera_name_opencv_640x360_image = \ self.camera_name_opencv_640x360_image = \
cv2.resize(camera_name_opencv_image, (camera_name_width_buffered / 2, camera_name_height_buffered / 2)) cv2.resize(camera_name_opencv_image, (camera_name_width_buffered / 2, camera_name_height_buffered / 2))
def change_max_resolution_setting(self, resolution_max):
self.current_max_resolution = resolution_max
self.current_camera_settings["resolution"] = resolution_max
def toggle_video_display(self): def toggle_video_display(self):
if self.video_enabled: if self.video_enabled:
if self.video_subscriber:
self.video_subscriber.unregister() self.video_subscriber.unregister()
self.new_frame = True self.new_frame = True
self.video_enabled = False self.video_enabled = False
else: else:
self.video_subscriber = rospy.Subscriber(self.topic_path, CompressedImage, new_topic = self.camera_topics[self.current_camera_settings["resolution"]]
self.__image_data_received_callback) self.video_subscriber = rospy.Subscriber(new_topic, CompressedImage, self.__image_data_received_callback)
# self.video_subscriber = rospy.Subscriber(self.temp_topic_path, CompressedImage,
# self.__image_data_received_callback)
self.video_enabled = True self.video_enabled = True
def connect_signals_and_slots(self): def connect_signals_and_slots(self):