def __init__(self):
        super().__init__("simple_publisher")
        logger = self.get_logger()

        self._num = 0

        period = self.declare_parameter("period", 1.0)
        depth = self.declare_parameter("qos_depth", 5)

        logger.info("param period={}"
            .format(period.get_parameter_value().double_value))
        logger.info("param qos_depth={}"
            .format(depth.get_parameter_value().integer_value))
        
        profile = QoSProfile(depth=depth.get_parameter_value().integer_value)
        profile.reliability = QoSReliabilityPolicy.BEST_EFFORT
        profile.durability = QoSDurabilityPolicy.TRANSIENT_LOCAL
        profile.liveliness = QoSLivelinessPolicy.AUTOMATIC

        self._pub = self.create_publisher(SimpleMsg, "sample_topic", profile)

        self.create_timer(
            period.get_parameter_value().double_value,
            self.on_timer_callback)
        
        logger.info("publisher start!")
Exemple #2
0
    def __init__(self):

        super().__init__('sonar2', namespace='')
        # Params
        #____________________________________________

        # Publishers
        #____________________________________________
        # toCpu2
        # Qos profile
        qos_profile_toCpu2 = QoSProfile(
            history=QoSHistoryPolicy.KEEP_LAST,
            durability=QoSDurabilityPolicy.SYSTEM_DEFAULT,
            reliability=QoSReliabilityPolicy.SYSTEM_DEFAULT,
            depth=15)
        # Additional qos settings
        qos_profile_toCpu2.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
        qos_profile_toCpu2.deadline.sec = 0
        qos_profile_toCpu2.deadline.nsec = 0
        qos_profile_toCpu2.lifespan.sec = 0
        qos_profile_toCpu2.lifespan.nsec = 0
        qos_profile_toCpu2.liveliness_lease_duration.sec = 0
        qos_profile_toCpu2.liveliness_lease_duration.nsec = 0
        qos_profile_toCpu2.avoid_ros_namespace_conventions = False

        self.publisher_toCpu2 = self.create_publisher(
            Distance, 'topic/path/s2', qos_profile=qos_profile_toCpu2)
        self.timer_toCpu2 = self.create_timer(0.0, self.publisher_call_toCpu2)
        self.i = 0
Exemple #3
0
 def _getQoSProfile(self):
     profile = QoSProfile(depth=10)
     profile.reliability = QoSReliabilityPolicy.RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT
     profile.durability = QoSDurabilityPolicy.RMW_QOS_POLICY_DURABILITY_VOLATILE
     profile.liveliness = QoSLivelinessPolicy.RMW_QOS_POLICY_LIVELINESS_AUTOMATIC
     profile.deadline = Duration()
     profile.lifespan = Duration()
     return profile
Exemple #4
0
 def _getQoSProfile(self):
     profile = QoSProfile(
         history=QoSHistoryPolicy.RMW_QOS_POLICY_HISTORY_KEEP_ALL)
     profile.reliability = QoSReliabilityPolicy.RMW_QOS_POLICY_RELIABILITY_RELIABLE
     profile.durability = QoSDurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL
     profile.liveliness = QoSLivelinessPolicy.RMW_QOS_POLICY_LIVELINESS_AUTOMATIC
     profile.deadline = Duration()
     profile.lifespan = Duration()
     return profile
Exemple #5
0
    def __init__(self):

        super().__init__('node3', namespace='name/space3')
        # Params
        #____________________________________________

        # Publishers
        #____________________________________________

        # Subscribers
        #____________________________________________
        # sub1
        # Qos profile
        qos_profile_sub1 = QoSPresetProfiles.SYSTEM_DEFAULT.value

        self.subscriber_sub1 = self.create_subscription(
            M1,
            'topic/path1',
            self.subscriber_call_sub1,
            qos_profile=qos_profile_sub1)
        self.subscriber_sub1
        #_____

        # Servers
        #____________________________________________

        # Clients
        #____________________________________________
        # c2
        # Qos profile
        qos_profile_c2 = QoSProfile(
            history=QoSHistoryPolicy.KEEP_ALL,
            durability=QoSDurabilityPolicy.SYSTEM_DEFAULT,
            reliability=QoSReliabilityPolicy.RELIABLE,
            depth=0)
        # Additional qos settings
        qos_profile_c2.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
        qos_profile_c2.deadline.sec = 0
        qos_profile_c2.deadline.nsec = 0
        qos_profile_c2.lifespan.sec = 0
        qos_profile_c2.lifespan.nsec = 0
        qos_profile_c2.liveliness_lease_duration.sec = 0
        qos_profile_c2.liveliness_lease_duration.nsec = 0
        qos_profile_c2.avoid_ros_namespace_conventions = False

        self.client_c2 = self.create_client(Addtwo,
                                            'service2',
                                            qos_profile=qos_profile_c2)
    def __init__(self):
        super().__init__("simple_subscription")
        logger = self.get_logger()

        self._num = 0

        depth = self.declare_parameter("qos_depth", 5)

        logger.info("param qos_depth={}".format(
            depth.get_parameter_value().integer_value))

        profile = QoSProfile(depth=depth.get_parameter_value().integer_value)
        profile.reliability = QoSReliabilityPolicy.BEST_EFFORT
        profile.durability = QoSDurabilityPolicy.TRANSIENT_LOCAL
        profile.liveliness = QoSLivelinessPolicy.AUTOMATIC

        self.create_subscription(SimpleMsg, "sample_topic",
                                 self.on_message_callback, profile)

        logger.info("subscription start!")
Exemple #7
0
    def __init__(self):

        super().__init__('node2', namespace='name/space2')
        # Params
        #____________________________________________

        # Publishers
        #____________________________________________
        # pub1
        # Qos profile
        qos_profile_pub1 = QoSPresetProfiles.SYSTEM_DEFAULT.value

        self.publisher_pub1 = self.create_publisher(
            M1, 'topic/path1', qos_profile=qos_profile_pub1)
        self.timer_pub1 = self.create_timer(10.0, self.publisher_call_pub1)
        self.i = 0
        #_____

        # Subscribers
        #____________________________________________

        # Servers
        #____________________________________________

        # Clients
        #____________________________________________
        # c1
        # Qos profile
        qos_profile_c1 = QoSProfile(
            history=QoSHistoryPolicy.KEEP_ALL,
            durability=QoSDurabilityPolicy.SYSTEM_DEFAULT,
            reliability=QoSReliabilityPolicy.RELIABLE,
            depth=0)
        # Additional qos settings
        qos_profile_c1.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
        qos_profile_c1.deadline.sec = 0
        qos_profile_c1.deadline.nsec = 0
        qos_profile_c1.lifespan.sec = 0
        qos_profile_c1.lifespan.nsec = 0
        qos_profile_c1.liveliness_lease_duration.sec = 0
        qos_profile_c1.liveliness_lease_duration.nsec = 0
        qos_profile_c1.avoid_ros_namespace_conventions = False

        self.client_c1 = self.create_client(Addtwo,
                                            'service1',
                                            qos_profile=qos_profile_c1)
        #_____

        # Action Servers
        #____________________________________________
        # as2
        self.action_server_as2 = ActionServer(
            self,
            Dec,
            'as2',
            execute_callback=self.action_execute_call_as2,
            goal_callback=self.action_goal_call_as2,
            cancel_callback=self.action_cancel_call_as2)
        #_____

        # Action Clients
        #____________________________________________
        # ac1
        self.action_client_ac1 = ActionClient(self, Increase, 'ac1')
Exemple #8
0
def main(args=None):
    # Argument parsing and usage
    parser = get_parser()
    parsed_args = parser.parse_args()

    # Configuration variables
    qos_policy_name = parsed_args.incompatible_qos_policy_name
    qos_profile_publisher = QoSProfile(depth=10)
    qos_profile_subscription = QoSProfile(depth=10)

    if qos_policy_name == 'durability':
        print('Durability incompatibility selected.\n'
              'Incompatibility condition: publisher durability kind <'
              'subscripition durability kind.\n'
              'Setting publisher durability to: VOLATILE\n'
              'Setting subscription durability to: TRANSIENT_LOCAL\n')
        qos_profile_publisher.durability = \
            QoSDurabilityPolicy.RMW_QOS_POLICY_DURABILITY_VOLATILE
        qos_profile_subscription.durability = \
            QoSDurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL
    elif qos_policy_name == 'deadline':
        print(
            'Deadline incompatibility selected.\n'
            'Incompatibility condition: publisher deadline > subscription deadline.\n'
            'Setting publisher durability to: 2 seconds\n'
            'Setting subscription durability to: 1 second\n')
        qos_profile_publisher.deadline = Duration(seconds=2)
        qos_profile_subscription.deadline = Duration(seconds=1)
    elif qos_policy_name == 'liveliness_policy':
        print('Liveliness Policy incompatibility selected.\n'
              'Incompatibility condition: publisher liveliness policy <'
              'subscripition liveliness policy.\n'
              'Setting publisher liveliness policy to: AUTOMATIC\n'
              'Setting subscription liveliness policy to: MANUAL_BY_TOPIC\n')
        qos_profile_publisher.liveliness = \
            QoSLivelinessPolicy.RMW_QOS_POLICY_LIVELINESS_AUTOMATIC
        qos_profile_subscription.liveliness = \
            QoSLivelinessPolicy.RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_TOPIC
    elif qos_policy_name == 'liveliness_lease_duration':
        print(
            'Liveliness lease duration incompatibility selected.\n'
            'Incompatibility condition: publisher liveliness lease duration >'
            'subscription liveliness lease duration.\n'
            'Setting publisher liveliness lease duration to: 2 seconds\n'
            'Setting subscription liveliness lease duration to: 1 second\n')
        qos_profile_publisher.liveliness_lease_duration = Duration(seconds=2)
        qos_profile_subscription.liveliness_lease_duration = Duration(
            seconds=1)
    elif qos_policy_name == 'reliability':
        print(
            'Reliability incompatibility selected.\n'
            'Incompatibility condition: publisher reliability < subscripition reliability.\n'
            'Setting publisher reliability to: BEST_EFFORT\n'
            'Setting subscription reliability to: RELIABLE\n')
        qos_profile_publisher.reliability = \
            QoSReliabilityPolicy.RMW_QOS_POLICY_RELIABILITY_BEST_EFFORT
        qos_profile_subscription.reliability = \
            QoSReliabilityPolicy.RMW_QOS_POLICY_RELIABILITY_RELIABLE
    else:
        print('{name} not recognised.'.format(name=qos_policy_name))
        parser.print_help()
        return 0

    # Initialization and configuration
    rclpy.init(args=args)
    topic = 'incompatible_qos_chatter'
    num_msgs = 5

    publisher_callbacks = PublisherEventCallbacks(
        incompatible_qos=lambda event: get_logger('Talker').info(str(event)))
    subscription_callbacks = SubscriptionEventCallbacks(
        incompatible_qos=lambda event: get_logger('Listener').info(str(event)))

    try:
        talker = Talker(topic,
                        qos_profile_publisher,
                        event_callbacks=publisher_callbacks,
                        publish_count=num_msgs)
        listener = Listener(topic,
                            qos_profile_subscription,
                            event_callbacks=subscription_callbacks)
    except UnsupportedEventTypeError as exc:
        print()
        print(exc, end='\n\n')
        print('Please try this demo using a different RMW implementation')
        return -1

    executor = SingleThreadedExecutor()
    executor.add_node(listener)
    executor.add_node(talker)

    try:
        while talker.publish_count < num_msgs:
            executor.spin_once()
    except KeyboardInterrupt:
        pass

    rclpy.shutdown()

    return 0
Exemple #9
0
    def __init__(self):

        super().__init__('cpu', namespace='')
        # Params
        #____________________________________________

        # Publishers
        #____________________________________________
        # toActuators
        # Qos profile
        qos_profile_toActuators = QoSPresetProfiles.SYSTEM_DEFAULT.value

        self.publisher_toActuators = self.create_publisher(
            Twist, 'topic/path/act', qos_profile=qos_profile_toActuators)
        self.timer_toActuators = self.create_timer(
            0.0, self.publisher_call_toActuators)
        self.i = 0
        #_____

        # Subscribers
        #____________________________________________
        # fromSonar1
        # Qos profile
        qos_profile_fromSonar1 = QoSProfile(
            history=QoSHistoryPolicy.KEEP_LAST,
            durability=QoSDurabilityPolicy.SYSTEM_DEFAULT,
            reliability=QoSReliabilityPolicy.SYSTEM_DEFAULT,
            depth=15)
        # Additional qos settings
        qos_profile_fromSonar1.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
        qos_profile_fromSonar1.deadline.sec = 0
        qos_profile_fromSonar1.deadline.nsec = 0
        qos_profile_fromSonar1.lifespan.sec = 0
        qos_profile_fromSonar1.lifespan.nsec = 0
        qos_profile_fromSonar1.liveliness_lease_duration.sec = 0
        qos_profile_fromSonar1.liveliness_lease_duration.nsec = 0
        qos_profile_fromSonar1.avoid_ros_namespace_conventions = False

        self.subscriber_fromSonar1 = self.create_subscription(
            Distance,
            'topic/path/s1',
            self.subscriber_call_fromSonar1,
            qos_profile=qos_profile_fromSonar1)
        self.subscriber_fromSonar1
        #_____
        # fromSonar2
        # Qos profile
        qos_profile_fromSonar2 = QoSProfile(
            history=QoSHistoryPolicy.KEEP_LAST,
            durability=QoSDurabilityPolicy.SYSTEM_DEFAULT,
            reliability=QoSReliabilityPolicy.SYSTEM_DEFAULT,
            depth=15)
        # Additional qos settings
        qos_profile_fromSonar2.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
        qos_profile_fromSonar2.deadline.sec = 0
        qos_profile_fromSonar2.deadline.nsec = 0
        qos_profile_fromSonar2.lifespan.sec = 0
        qos_profile_fromSonar2.lifespan.nsec = 0
        qos_profile_fromSonar2.liveliness_lease_duration.sec = 0
        qos_profile_fromSonar2.liveliness_lease_duration.nsec = 0
        qos_profile_fromSonar2.avoid_ros_namespace_conventions = False

        self.subscriber_fromSonar2 = self.create_subscription(
            Distance,
            'topic/path/s2',
            self.subscriber_call_fromSonar2,
            qos_profile=qos_profile_fromSonar2)
        self.subscriber_fromSonar2
Exemple #10
0
	def __init__(self):
				
		super().__init__('node1', namespace = '')		
		# Params
		#____________________________________________
		# p1  -  INTEGER_ARRAY
		# Description: 
		self.param_p1 = self.declare_parameter('p1', 32, descriptor=ParameterDescriptor(name='p1', type=7, description='', additional_constraints='', read_only=False, floating_point_range=[], integer_range=[]))
		# You can use your parameter p1 with type INTEGER_ARRAY
		# with 		self.get_parameter('p1')._value
		# You can also use your parameter from terminal or yaml file. 
		#_____
		
		
		# Publishers
		#____________________________________________
		
		# Subscribers
		#____________________________________________
		# sub1
		# Qos profile
		qos_profile_sub1 = QoSPresetProfiles.SYSTEM_DEFAULT.value
				
		self.subscriber_sub1 = self.create_subscription(M1, 'topic/path1', self.subscriber_call_sub1, qos_profile = qos_profile_sub1)
		self.subscriber_sub1
		#_____
		
		# Servers
		#____________________________________________
		# s1
		# Qos profile
		qos_profile_s1 = QoSProfile(history = QoSHistoryPolicy.KEEP_ALL, durability = QoSDurabilityPolicy.SYSTEM_DEFAULT, reliability = QoSReliabilityPolicy.RELIABLE, depth =0)
		# Additional qos settings
		qos_profile_s1.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
		qos_profile_s1.deadline.sec = 0
		qos_profile_s1.deadline.nsec = 0
		qos_profile_s1.lifespan.sec = 0
		qos_profile_s1.lifespan.nsec = 0
		qos_profile_s1.liveliness_lease_duration.sec = 0
		qos_profile_s1.liveliness_lease_duration.nsec = 0
		qos_profile_s1.avoid_ros_namespace_conventions = False
				
		self.server_s1 = self.create_service(Addtwo, 'service1', self.server_call_s1, qos_profile = qos_profile_s1)
		#_____
		# s2
		# Qos profile
		qos_profile_s2 = QoSProfile(history = QoSHistoryPolicy.KEEP_ALL, durability = QoSDurabilityPolicy.SYSTEM_DEFAULT, reliability = QoSReliabilityPolicy.RELIABLE, depth =0)
		# Additional qos settings
		qos_profile_s2.liveliness = QoSLivelinessPolicy.SYSTEM_DEFAULT
		qos_profile_s2.deadline.sec = 0
		qos_profile_s2.deadline.nsec = 0
		qos_profile_s2.lifespan.sec = 0
		qos_profile_s2.lifespan.nsec = 0
		qos_profile_s2.liveliness_lease_duration.sec = 0
		qos_profile_s2.liveliness_lease_duration.nsec = 0
		qos_profile_s2.avoid_ros_namespace_conventions = False
				
		self.server_s2 = self.create_service(SetBool, 'service2', self.server_call_s2, qos_profile = qos_profile_s2)
		#_____
		
		# Clients
		#____________________________________________
		
		# Action Servers
		#____________________________________________
		# as1
		self.action_server_as1 = ActionServer(self, Increase, 'as1', execute_callback=self.action_execute_call_as1, goal_callback=self.action_goal_call_as1, cancel_callback=self.action_cancel_call_as1)
		#_____
		
		# Action Clients
		#____________________________________________
		# ac2
		self.action_client_ac2 = ActionClient(self, Dec, 'ac2')