2 from nav_msgs.msg
import Odometry
3 from sensor_msgs.msg
import Imu, MagneticField, NavSatFix
6 from microstrain_inertial_msgs.msg
import HumanReadableStatus, MipGnssFixInfo, MipGnssCorrectionsRtkCorrectionsStatus, MipFilterGnssDualAntennaStatus, MipFilterGnssPositionAidingStatus, MipFilterAidingMeasurementSummary
8 from .constants
import _DEFAULT_VAL, _DEFAULT_STR
9 from .constants
import _UNIT_DEGREES, _UNIT_GS, _UNIT_GUASSIAN, _UNIT_METERS, _UNIT_RADIANS, _UNIT_METERS_PER_SEC, _UNIT_RADIANS_PER_SEC
10 from .constants
import _ICON_GREY_UNCHECKED_MEDIUM, _ICON_YELLOW_UNCHECKED_MEDIUM, _ICON_YELLOW_CHECKED_MEDIUM, _ICON_GREEN_UNCHECKED_MEDIUM,_ICON_GREEN_CHECKED_MEDIUM, _ICON_TEAL_UNCHECKED_MEDIUM, _ICON_TEAL_CHECKED_MEDIUM, _ICON_BLUE_UNCHECKED_MEDIUM, _ICON_BLUE_CHECKED_MEDIUM, _ICON_RED_UNCHECKED_MEDIUM, _ICON_RED_CHECKED_MEDIUM
11 from .common
import SubscriberMonitor
16 def __init__(self, node, node_name, topic_name):
17 super(GNSSAidingStatusMonitor, self).
__init__(node, node_name, topic_name, MipFilterGnssPositionAidingStatus)
54 def __init__(self, node, node_name, topic_name):
55 super(GNSSFixInfoMonitor, self).
__init__(node, node_name, topic_name, MipGnssFixInfo)
68 if fix_type
is not _DEFAULT_VAL:
69 if fix_type == MipGnssFixInfo.FIX_TYPE_FIX_3D:
70 return "3D Fix (%d)" % fix_type
71 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_2D:
72 return "2D Fix (%d)" % fix_type
73 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_TIME_ONLY:
74 return "Time Only (%d)" % fix_type
75 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_NONE:
76 return "None (%d)" % fix_type
77 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_INVALID:
78 return "Invalid Fix (%d)" % fix_type
79 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_RTK_FLOAT:
80 return "RTK Float (%d)" % fix_type
81 elif fix_type == MipGnssFixInfo.FIX_TYPE_FIX_RTK_FIXED:
82 return "RTK Fixed (%d)" % fix_type
84 return "Invalid (%d)" % fix_type
94 def __init__(self, node, node_name, topic_name, device_report_monitor):
95 super(FilterStatusMonitor, self).
__init__(node, node_name, topic_name, HumanReadableStatus)
110 _MIN_COVARIANCE_SIZE = 36
112 def __init__(self, node, node_name, topic_name, llh=True):
113 super(OdomMonitor, self).
__init__(node, node_name, topic_name, Odometry, callback=self.
_callback)
306 super(GNSSDualAntennaStatusMonitor, self).
__init__(node, node_name, topic_name, MipFilterGnssDualAntennaStatus)
335 if fix_type
is not _DEFAULT_VAL:
336 if fix_type == MipFilterGnssDualAntennaStatus.FIX_TYPE_FIX_NONE:
337 return "None (%d)" % fix_type
338 elif fix_type == MipFilterGnssDualAntennaStatus.FIX_TYPE_FIX_DA_FLOAT:
339 return "Float (%d)" % fix_type
340 elif fix_type == MipFilterGnssDualAntennaStatus.FIX_TYPE_FIX_DA_FIXED:
341 return "Fixed (%d)" % fix_type
371 super(ImuMonitor, self).
__init__(node, node_name, topic_name, Imu)
425 super(MagMonitor, self).
__init__(node, node_name, topic_name, MagneticField)
454 _MIN_COVARIANCE_SIZE = 9
457 super(NavSatFixMonitor, self).
__init__(node, node_name, topic_name, NavSatFix)
474 def __init__(self, node, node_name, topic_name, message_type):
475 super(RTKMonitorBase, self).
__init__(node, node_name, topic_name, message_type)
538 class RTKMonitor(RTKMonitorBase):
541 super(RTKMonitor, self).
__init__(node, node_name, topic_name, MipGnssCorrectionsRtkCorrectionsStatus)
554 if rssi
is not _DEFAULT_VAL:
586 if modem_state
is not _DEFAULT_VAL:
588 return "Off (%d)" % modem_state
589 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_NO_NETWORK:
590 return "No Network (%d)" % modem_state
591 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_NETWORK_CONNECTED:
592 return "Connected (%d)" % modem_state
593 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONFIGURING_DATA_CONTEXT:
594 return "Configuring Data Context (%d)" % modem_state
595 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_ACTIVATING_DATA_CONTEXT:
596 return "Activating Data Context (%d)" % modem_state
597 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONFIGURING_SOCKET:
598 return "Configuring Socket (%d)" % modem_state
599 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_WAITING_ON_SERVER_HANDSHAKE:
600 return "Waiting on Server Handshake (%d)" % modem_state
601 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONNECTED_AND_IDLE:
602 return "Connected & Idle (%d)" % modem_state
603 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONNECTED_AND_STREAMING:
604 return "Connected & Streaming (%d)" % modem_state
606 return "Invalid (%d)" % modem_state
613 if connection_type
is not _DEFAULT_VAL:
614 if connection_type == self.
_current_message.dongle_status.CONNECTION_TYPE_NO_CONNECTION:
615 return "No Connection (%d)" % connection_type
616 elif connection_type == self.
_current_message.dongle_status.CONNECTION_TYPE_CONNECTION_2G:
617 return "2G (%d)" % connection_type
618 elif connection_type == self.
_current_message.dongle_status.CONNECTION_TYPE_CONNECTION_3G:
619 return "3G (%d)" % connection_type
620 elif connection_type == self.
_current_message.dongle_status.CONNECTION_TYPE_CONNECTION_4G:
621 return "4G (%d)" % connection_type
622 elif connection_type == self.
_current_message.dongle_status.CONNECTION_TYPE_CONNECTION_5G:
623 return "5G (%d)" % connection_type
625 return "Invalid (%d)" % connection_type
660 if modem_state
is not _DEFAULT_VAL:
661 if modem_state == self.
_current_message.dongle_status.MODEM_STATE_NO_NETWORK:
662 return _ICON_YELLOW_UNCHECKED_MEDIUM
663 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_NETWORK_CONNECTED:
664 return _ICON_GREEN_CHECKED_MEDIUM
665 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONFIGURING_DATA_CONTEXT:
666 return _ICON_GREEN_CHECKED_MEDIUM
667 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_ACTIVATING_DATA_CONTEXT:
668 return _ICON_GREEN_CHECKED_MEDIUM
669 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONFIGURING_SOCKET:
670 return _ICON_GREEN_CHECKED_MEDIUM
671 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_WAITING_ON_SERVER_HANDSHAKE:
672 return _ICON_GREEN_CHECKED_MEDIUM
673 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONNECTED_AND_IDLE:
674 return _ICON_BLUE_CHECKED_MEDIUM
675 elif modem_state == self.
_current_message.dongle_status.MODEM_STATE_CONNECTED_AND_STREAMING:
676 return _ICON_BLUE_CHECKED_MEDIUM
678 return _ICON_GREY_UNCHECKED_MEDIUM
682 super(FilterAidingMeasurementSummaryIndicatorMonitor, self).
__init__(node, node_name, topic_name, MipFilterAidingMeasurementSummary)
719 super(FilterAidingMeasurementSummaryMonitor, self).
__init__(node, node_name, topic_name, MipFilterAidingMeasurementSummary, callback=self.
_on_message)
838 def __init__(self, filter_status_monitor, gnss_1_aiding_status_monitor, gnss_2_aiding_status_monitor):
847 if filter_state
is not _DEFAULT_VAL:
848 if filter_state == HumanReadableStatus.FILTER_STATE_GQ7_INIT:
849 return _ICON_YELLOW_CHECKED_MEDIUM
850 elif filter_state == HumanReadableStatus.FILTER_STATE_GQ7_VERT_GYRO
or filter_state == HumanReadableStatus.FILTER_STATE_GQ7_AHRS:
851 return _ICON_YELLOW_UNCHECKED_MEDIUM
852 elif filter_state == HumanReadableStatus.FILTER_STATE_GQ7_FULL_NAV:
855 if (gnss_1_differential
is not _DEFAULT_VAL
and gnss_1_differential)
or (gnss_2_differential
is not _DEFAULT_VAL
and gnss_2_differential):
856 return _ICON_BLUE_CHECKED_MEDIUM
858 return _ICON_GREEN_CHECKED_MEDIUM
860 return _ICON_GREY_UNCHECKED_MEDIUM