Modified rover_statuses.py for subscriber example on how to pull data from system_statuses_node.py for ground control station -- very rough idea, I expect only the subscription calls really being used in actual implementation

This commit is contained in:
MatthewTaylor24
2018-01-22 20:03:13 -08:00
parent 299674b726
commit 86ad1f141a
2 changed files with 71 additions and 44 deletions

View File

@@ -14,8 +14,8 @@
<file leaf-file-name="system_statuses_node.py" pinned="false" current-in-tab="true"> <file leaf-file-name="system_statuses_node.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/system_statuses_node.py"> <entry file="file://$PROJECT_DIR$/system_statuses_node.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-648"> <state relative-caret-position="384">
<caret line="114" column="41" lean-forward="true" selection-start-line="114" selection-start-column="41" selection-end-line="114" selection-end-column="41" /> <caret line="16" column="9" lean-forward="false" selection-start-line="16" selection-start-column="9" selection-end-line="16" selection-end-column="9" />
<folding> <folding>
<element signature="e#22#34#0" expanded="true" /> <element signature="e#22#34#0" expanded="true" />
<element signature="e#4801#5092#0" expanded="false" /> <element signature="e#4801#5092#0" expanded="false" />
@@ -33,8 +33,8 @@
<file leaf-file-name="rover_statuses.py" pinned="false" current-in-tab="false"> <file leaf-file-name="rover_statuses.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/rover_statuses.py"> <entry file="file://$PROJECT_DIR$/rover_statuses.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168"> <state relative-caret-position="672">
<caret line="7" column="23" lean-forward="true" selection-start-line="7" selection-start-column="23" selection-end-line="7" selection-end-column="23" /> <caret line="28" column="17" lean-forward="false" selection-start-line="28" selection-start-column="17" selection-end-line="28" selection-end-column="17" />
<folding> <folding>
<element signature="e#22#34#0" expanded="true" /> <element signature="e#22#34#0" expanded="true" />
</folding> </folding>
@@ -57,8 +57,8 @@
<option value="$PROJECT_DIR$/system_statuses.py" /> <option value="$PROJECT_DIR$/system_statuses.py" />
<option value="$PROJECT_DIR$/node_statuses.py" /> <option value="$PROJECT_DIR$/node_statuses.py" />
<option value="$PROJECT_DIR$/camera_2_updater.py" /> <option value="$PROJECT_DIR$/camera_2_updater.py" />
<option value="$PROJECT_DIR$/rover_statuses.py" />
<option value="$PROJECT_DIR$/system_statuses_node.py" /> <option value="$PROJECT_DIR$/system_statuses_node.py" />
<option value="$PROJECT_DIR$/rover_statuses.py" />
</list> </list>
</option> </option>
</component> </component>
@@ -143,15 +143,15 @@
<layout> <layout>
<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.33" sideWeight="0.5" 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.33" sideWeight="0.5" order="7" side_tool="true" 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="11" 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.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.33" sideWeight="0.5" order="8" 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.33" sideWeight="0.5" order="2" 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.33" 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.33" sideWeight="0.5" order="7" 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="9" 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.116234995" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.116234995" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Docker" 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="Docker" 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="10" 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="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.3294347" sideWeight="0.5" order="1" 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.3294347" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="SciView" 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="SciView" 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="4" 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="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="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" />
@@ -195,8 +195,8 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/rover_statuses.py"> <entry file="file://$PROJECT_DIR$/rover_statuses.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168"> <state relative-caret-position="672">
<caret line="7" column="23" lean-forward="true" selection-start-line="7" selection-start-column="23" selection-end-line="7" selection-end-column="23" /> <caret line="28" column="17" lean-forward="false" selection-start-line="28" selection-start-column="17" selection-end-line="28" selection-end-column="17" />
<folding> <folding>
<element signature="e#22#34#0" expanded="true" /> <element signature="e#22#34#0" expanded="true" />
</folding> </folding>
@@ -205,8 +205,8 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/system_statuses_node.py"> <entry file="file://$PROJECT_DIR$/system_statuses_node.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-648"> <state relative-caret-position="384">
<caret line="114" column="41" lean-forward="true" selection-start-line="114" selection-start-column="41" selection-end-line="114" selection-end-column="41" /> <caret line="16" column="9" lean-forward="false" selection-start-line="16" selection-start-column="9" selection-end-line="16" selection-end-column="9" />
<folding> <folding>
<element signature="e#22#34#0" expanded="true" /> <element signature="e#22#34#0" expanded="true" />
<element signature="e#4801#5092#0" expanded="false" /> <element signature="e#4801#5092#0" expanded="false" />

View File

@@ -1,48 +1,75 @@
#!/usr/bin/env python #!/usr/bin/env python
import rospy import rospy
from system_statuses.msg import RoverSysStatus from system_statuses.msg import CameraStatuses, BogieStatuses, FrSkyStatus, GPSInfo, MiscStatuses, JetsonInfo
# THIS IS A SUPER ROUGH EXAMPLE OF HOW TO PULL THE DATA
# You can create your own message formats in the msg folder
# This is a simple example of pulling data from system_statuses_node.py
# and storing them into self values.
# The ground control code sounds like it'll be fairly different in format.
class RoverStatuses: class RoverStatuses:
def __init__(self): def __init__(self):
rospy.init_node('RoverStatuses') rospy.init_node('RoverStatuses')
self.pub = rospy.Publisher('rover_statuses_chatter', RoverSysStatus, queue_size=10) # self.pub = rospy.Publisher('rover_statuses_chatter', RoverSysStatus, queue_size=10)
# Test Subscription for updating camera_undercarriage # Subscription examples on pulling data from system_statuses_node.py
rospy.Subscriber('rover_system_status_chatter', RoverSysStatus, self.__sub_callback) rospy.Subscriber('camera_system_status_chatter', CameraStatuses, self.__camera_callback)
rospy.Subscriber('bogie_system_status_chatter', BogieStatuses, self.__camera_callback)
rospy.Subscriber('FrSky_system_status_chatter', FrSkyStatus, self.__camera_callback)
rospy.Subscriber('GPS_system_status_chatter', GPSInfo, self.__camera_callback)
rospy.Subscriber('jetson_system_status_chatter', JetsonInfo, self.__camera_callback)
rospy.Subscriber('misc_system_status_chatter', MiscStatuses, self.__camera_callback)
self.msg = RoverSysStatus() self.camera_msg = CameraStatuses()
self.bogie_msg = BogieStatuses()
self.FrSky_msg = FrSkyStatus()
self.GPS_msg = GPSInfo()
self.jetson_msg = JetsonInfo()
self.misc_msg = MiscStatuses()
def __sub_callback(self, data): def __camera_callback(self, data):
self.msg.UTC_GPS_time = data.UTC_GPS_time self.camera_msg.camera_zed = data.camera_zed
self.msg.bogie_connection_1 = data.bogie_connection_1 self.camera_msg.camera_undercarriage = data.camera_undercarriage
self.msg.bogie_connection_2 = data.bogie_connection_2 self.camera_msg.camera_chassis = data.camera_chassis
self.msg.bogie_connection_3 = data.bogie_connection_3 self.camera_msg.camera_main_navigation = data.camera_main_navigation
self.msg.arm_connection_status = data.arm_connection_status
self.msg.arm_end_effector_connection_statuses = data.arm_end_effector_connection_statuses def __frsky_callback(self, data):
self.msg.camera_zed = data.camera_zed self.FrSky_msg.FrSky_controller_connection_status = data.FrSky_controller_connection_status
self.msg.camera_undercarriage = data.camera_undercarriage
self.msg.camera_chassis = data.camera_chassis def __bogie_callback(self, data):
self.msg.camera_main_navigation = data.camera_main_navigation self.bogie_msg.bogie_connection_1 = data.bogie_connection_1
self.msg.sample_containment_connection_status = data.sample_containment_connection_status self.bogie_msg.bogie_connection_2 = data.bogie_connection_2
self.msg.tower_connection_status = data.tower_connection_status self.bogie_msg.bogie_connection_3 = data.bogie_connection_3
self.msg.chassis_pan_tilt_connection_status = data.chassis_pan_tilt_connection_status
self.msg.GPS_connection_status = data.GPS_connection_status def __jetson_callback(self, data):
self.msg.jetson_CPU = data.jetson_CPU self.jetson_msg.jetson_CPU = data.jetson_CPU
self.msg.jetson_RAM = data.jetson_RAM self.jetson_msg.jetson_RAM = data.jetson_RAM
self.msg.jetson_EMMC = data.jetson_EMMC self.jetson_msg.jetson_EMMC = data.jetson_EMMC
self.msg.jetson_NVME_SSD = data.jetson_NVME_SSD self.jetson_msg.jetson_NVME_SSD = data.jetson_NVME_SSD
self.msg.FrSky_controller_connection_status = data.FrSky_controller_connection_status
rospy.loginfo(self.msg) def __gps_callback(self, data):
self.GPS_msg.UTC_GPS_time = data.UTC_GPS_time
self.GPS_msg.GPS_connection_status = data.GPS_connection_status
def __misc_callback(self, data):
self.misc_msg.arm_connection_status = data.arm_connection_status
self.misc_msg.arm_end_effector_connection_statuses = data.arm_end_effector_connection_statuses
self.misc_msg.sample_containment_connection_status = data.sample_containment_connection_status
self.misc_msg.tower_connection_status = data.tower_connection_status
self.misc_msg.chassis_pan_tilt_connection_status = data.chassis_pan_tilt_connection_status
def run(self): def run(self):
rospy.Subscriber('rover_system_status_chatter', RoverSysStatus, self.__sub_callback) rospy.Subscriber('camera_system_status_chatter', CameraStatuses, self.__camera_callback)
rospy.Subscriber('bogie_system_status_chatter', BogieStatuses, self.__camera_callback)
# Update GUI Here? (Most likely) rospy.Subscriber('FrSky_system_status_chatter', FrSkyStatus, self.__camera_callback)
rospy.Subscriber('GPS_system_status_chatter', GPSInfo, self.__camera_callback)
rospy.Subscriber('jetson_system_status_chatter', JetsonInfo, self.__camera_callback)
rospy.Subscriber('misc_system_status_chatter', MiscStatuses, self.__camera_callback)
rospy.spin() rospy.spin()