def run(self): """Run the thread.""" frequency = self.axis._state_publishing_frequency rate = rospy.Rate(frequency) state_publisher = DiagnosedPublisher( rospy.Publisher("camera/ptz", PTZ, queue_size=100), self._diagnostic_updater, FrequencyStatusParam({'min': frequency, 'max': frequency}, tolerance=0.2), TimeStampStatusParam() ) joint_states_publisher = DiagnosedPublisher( rospy.Publisher("camera/joint_states", JointState, queue_size=100), self._diagnostic_updater, FrequencyStatusParam({'min': frequency, 'max': frequency}, tolerance=0.2), TimeStampStatusParam() ) parameter_updates_publisher = rospy.Publisher("axis_ptz/parameter_updates", Config, queue_size=100) while not rospy.is_shutdown(): # publish position forever try: # get camera position from API camera_position = self.api.get_camera_position() # we use deprecated param values message_time = rospy.Time.now() # Create and publish the PTZ message message = self._create_camera_position_message(camera_position, message_time) state_publisher.publish(message) # Create and publish JointState joint_states_message = self._create_camera_joint_states_message(camera_position, message_time) joint_states_publisher.publish(joint_states_message) # Publish the parameter updates (because of backwards compatibility) parameter_updates_message = self._create_parameter_updates_message(camera_position) parameter_updates_publisher.publish(parameter_updates_message) # set the parameters (because of backwards compatibility) rospy.set_param("axis_ptz/pan", camera_position['pan']) rospy.set_param("axis_ptz/tilt", camera_position['tilt']) rospy.set_param("axis_ptz/zoom", camera_position['zoom']) # Create and publish the deprecated Axis message self.cameraPosition = camera_position # backwards compatibility self.publishCameraState() # backwards compatibility except (IOError, ValueError, RuntimeError) as e: rospy.logwarn("Could not determine current camera position. Waiting 1 s. Cause: %s" % repr(e.args)) rospy.sleep(1) self._diagnostic_updater.update() try: rate.sleep() except rospy.ROSTimeMovedBackwardsException: rospy.logwarn("Detected jump back in time.")
def run(self): """Run the thread.""" frequency = self.axis._state_publishing_frequency rate = rospy.Rate(frequency) state_publisher = DiagnosedPublisher( rospy.Publisher("camera/ptz", PTZ, queue_size=100), self._diagnostic_updater, FrequencyStatusParam({ 'min': frequency, 'max': frequency }, tolerance=0.2), TimeStampStatusParam()) joint_states_publisher = DiagnosedPublisher( rospy.Publisher("camera/joint_states", JointState, queue_size=100), self._diagnostic_updater, FrequencyStatusParam({ 'min': frequency, 'max': frequency }, tolerance=0.2), TimeStampStatusParam()) parameter_updates_publisher = rospy.Publisher( "axis_ptz/parameter_updates", Config, queue_size=100) while not rospy.is_shutdown(): # publish position forever try: # get camera position from API camera_position = self.api.get_camera_position( ) # we use deprecated param values message_time = rospy.Time.now() # Create and publish the PTZ message message = self._create_camera_position_message( camera_position, message_time) state_publisher.publish(message) # Create and publish JointState joint_states_message = self._create_camera_joint_states_message( camera_position, message_time) joint_states_publisher.publish(joint_states_message) # Publish the parameter updates (because of backwards compatibility) parameter_updates_message = self._create_parameter_updates_message( camera_position) parameter_updates_publisher.publish(parameter_updates_message) # set the parameters (because of backwards compatibility) rospy.set_param("axis_ptz/pan", camera_position['pan']) rospy.set_param("axis_ptz/tilt", camera_position['tilt']) rospy.set_param("axis_ptz/zoom", camera_position['zoom']) # Create and publish the deprecated Axis message self.cameraPosition = camera_position # backwards compatibility self.publishCameraState() # backwards compatibility except (IOError, ValueError, RuntimeError) as e: rospy.logwarn( "Could not determine current camera position. Waiting 1 s. Cause: %s" % repr(e.args)) rospy.sleep(1) self._diagnostic_updater.update() try: rate.sleep() except rospy.ROSTimeMovedBackwardsException: rospy.logwarn("Detected jump back in time.")
def run(self, stat): if self._axis._streaming_thread is None or self._axis._streaming_thread.is_paused(): stat.summary(DiagnosticStatusWrapper.OK, "Video not subscribed") else: stat = DiagnosedPublisher.run(self, stat) return stat
def __init__(self, axis, pub, diag, freq, stamp): DiagnosedPublisher.__init__(self, pub, diag, freq, stamp) self._axis = axis