From d0475df75ffc4cfa97651575fe55607759c81a1d Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Fri, 1 May 2020 14:06:38 +0900 Subject: [PATCH 01/17] Content Filtering Proposal 1st Draft. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 320 ++++++++++++++++++ .../action_architecture_overview.png | Bin 0 -> 74554 bytes .../contents_filter_overview.png | Bin 0 -> 136417 bytes .../parameter_event_overview.png | Bin 0 -> 109795 bytes img/content_filter/responsibility.png | Bin 0 -> 44870 bytes 5 files changed, 320 insertions(+) create mode 100755 articles/content_filtering.md create mode 100755 img/content_filter/action_architecture_overview.png create mode 100755 img/content_filter/contents_filter_overview.png create mode 100755 img/content_filter/parameter_event_overview.png create mode 100755 img/content_filter/responsibility.png diff --git a/articles/content_filtering.md b/articles/content_filtering.md new file mode 100755 index 000000000..1c2800e41 --- /dev/null +++ b/articles/content_filtering.md @@ -0,0 +1,320 @@ +--- +layout: default +title: ContentFilteringTopic in ROS2 +permalink: articles/content_filtering.html +abstract: Description draft of the current problem for /parameter_events and action feedback/status topics. Design proposal using ContentFilteringTopic. +author: '[Tomoya Fujita](https://github.com/fujitatomoya)' +published: true +--- + +{:toc} + +# {{ page.title }} + +
+{{ page.abstract }} +
+ +Original Author: {{ page.author }} + +# ContentFilteredTopic Feasibility for ROS2 + +This is a note to consider DDS ContentFilteredTopic optimization for ros2 parameter event topic and action topics. The goal of this note is to see if it is suitable and feasible to use DDS ContentFilteredTopic against the problems that we have ros2 as described below. And describe the consideration in detail and basic design how actually we could integrate ContentFilteredTopic in ros2 core system such as rmw, rcl and rclcpp. + + + + + +- [{{ page.title }}](#pagetitle) +- [ContentFilteredTopic Feasibility for ROS2](#contentfilteredtopic-feasibility-for-ros2) + - [Author](#author) + - [Problems](#problems) + - [Parameter Event Topic](#parameter-event-topic) + - [Action Topics](#action-topics) + - [ContentFilteredTopic](#contentfilteredtopic) + - [Requirement](#requirement) + - [Spec Description](#spec-description) + - [DDS](#dds) + - [DDSI-RTPS](#ddsi-rtps) + - [Reference](#reference) + - [ROS2 Consideration](#ros2-consideration) + - [Requirement](#requirement-1) + - [Design](#design) + - [Namespace](#namespace) + - [Action](#action) + - [Parameter Events](#parameter-events) + - [Interfaces](#interfaces) + - [rcl](#rcl) + - [rmw](#rmw) + - [rclcpp(rclpy)](#rclcpprclpy) + - [Implementation](#implementation) + - [Action](#action-1) + - [Parameter Event](#parameter-event) + - [Questions](#questions) + - [Responsibility](#responsibility) + - [Related Works](#related-works) + + + +## Author + +- + +## Problems + +Here describes the current problems that we have in ros2 system, they are already well-known issues. issues are not related to functionalities but efficiency like cpu consumption and network transmission. These efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. +Currently, at least there are following two main problems exist in ros2, the one is /parameter_events topic transmission and the other is action topics feedback and status message transmission. the detail is described as following. + +### Parameter Event Topic + +Each node will publish and subscribe parameter events topic (this is configurable via node option). This topic is to support monitoring parameters for change. It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. there will be an internal subscription for each node for /parameter_evetns topic to handle the TimeSource via "use_sim_time" parameter. rclcpp::ParameterEventsFilter is used to filter the parameter with specific names such as "use_sim_time". As user interface, AsyncParametersClient::on_parameter_event is provided to handle parameter events. + + + +The problem can be broken down into the following two parts, + +- Network activity on /parameter_events topic + Since nobody cares who needs to receive which messages, there will be all of the parameter activity, everyone publishes and subscribes all of the events with this giant topic /parameter_events. This leads to a lot of unnecessary message transmission over the network. +- Subscriber needs to filter unnecessary (not interesting) messages + Subscriber does not know if the message is something interesting or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. In expectation, most likely parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. + +as described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire ros2 system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. + +### Action Topics + +Each action server will provide two topics named feedback and status as followings, + + + +feedback and status are single topic each mapped to action name and published by action server, and action clients subscribe those topics to get feedback and status. When there are many goals from many clients, the choice to have a single feedback (and status) topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) + +## ContentFilteredTopic + +ContentFilteredTopic describes a more sophisticated subscription that indicates the subscriber does not want to necessarily see all values of each instance published under the Topic. Rather, it wants to see only the values whose contents satisfy certain criteria. This class therefore can be used to request content-based subscriptions. + +### Requirement + +- ContentFilteredTopicDataWriter does filtering for each ContentFilteredTopicDataReader endpoint. + OpenSplice community version supports reader side filtering, but with this, transmission does happen anyway to subscription. Filtering is integrated in the implementation but not well efficiency enough. + +- Multiple ContentFilteredTopicDataReader exist and filtering is dependent on each ContentFilteredTopicDataReader's logical filtering expression and parameters. +- Subscriber is responsible to create ContentFilteredTopic. +- The filtering is done by means of evaluating a logical expression that involves the values f some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. +- Multiple filter_expression and expression_parameters can be supported on single ContentFilteredTopic. + ``` + [parameter use cases] + "node = %0 OR node = %1" spinal_node attention_node : subscribe all parameter events from spinal and attention nodes + "node = %0 OR name = %1" audio_node attention_level : subscribe all parameter events from audio_node and parameter named attention_level of all nodes. + "(node = %0 AND name = %1) OR (node = %2 AND name = %3)" eye_node brightness ear_node loudness : subscribe brightness parameter of eye_node and loudness parameter of ear_node only. + [action use case] + "uuid = %0 OR uuid = %1" DEADBEEF CAFEFEED : subscribe only interest goal ids which client handlers possess. + ``` +- Multiple filter_expression and expression_parameters can be modified dynamically at runtime. + This is because of use cases for ros2 parameter and action, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. + +### Spec Description + +#### DDS + +the following create/delete API's are defined, + +- create_contentfilteredtopic() +- delete_contentfilteredtopic() + +**[T.B.D] ContentFilteredTopic is also defined to do a more sophisticated subscription, but according to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_expression at runtime.** + +#### DDSI-RTPS + +The ContentFilterProperty_t field provides all the required information to enable content filtering on the Writer side. DDS allows the user to modify the filter expression parameters at run-time. Each time the parameters are modified, the updated information is exchanged using the Endpoint discovery protocol. This is identical to updating a mutable QoS value. + +### Reference + +[DDS v1.4 Specification](https://www.omg.org/spec/DDS/1.4/PDF) +[DDSI-RTPS v2.3 Specification](https://www.omg.org/spec/DDSI-RTPS/2.3/PDF) + +## ROS2 Consideration + +This part is ros2 related consideration how to integrate and port the ContentFilteredTopic into rclcpp, rcl and rmw layer along current implementation. at 1st step, requirement needs to be clarified and discussed very well. This is just a draft feasibility and design ideas so that this needs to be discussed with Open Robotics and ROS2 Community in public space. + +### Requirement + +- Do not break user space. + Current application must be able to run without any change on ros2 supported rmw implementation such as rmw_cyclonedds, rmw_fastrtps, rmw_opensplice, rmw_connext and rmw_iceoryx. (But might require rebuilding since some built-in message needs to be modified.) +- Frontend interfaces are compatible. (parameter client) + [T.B.D] If rmw implementation does not support ContentFilteredTopic interfaces, filtering should be done internally on subscriber side? or it can leave it for user application responsibility. +- Parameter subscription interface, method or class will be provided as frontend. + This is to set/get the filter_expression and expression_parameters on each parameter client. +- Filtering expression and expression parameters can be set and get at runtime. + - [T.B.D] According to DDS specification filtering expression may not be changed dynamically, in that case, recreating ContentFilteredTopic would be required to change filtering expression, or with specific filtering expression such as node name and parameter name for parameter events and goal id for action, there would be no need to reset filtering expression. +- Filtering goal id for action feedback and status will be perfectly concealed for user. +- User can specify node name and parameter name for parameter event. + [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. + +### Design + +#### Namespace + +Since ContentFilteredTopic is based on related parent topic (more like base topic), it will create ContentFilteredTopic internally. + +#### Action + +There will be no need to expose ContentFilter concept for user. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to get more transport efficiency. + +| ContentFilterTopic Name | Description | +| :--- | :--- | +| action_name/_action/feedback_ActionClient_ID | feedback ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with status id for the same client) | +| action_name/_action/status_ActionClient_ID | status ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with feedback id for the same client) | + +(*) These ContentFilteredTopic should not show up to user. (e.g ros2 topic list) + +feedback topic is user defined message type dependent on action name but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and client issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. status topic is constructed with [GoalStatus](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalStatus.msg), this can be also taken care with feedback mostly same design. + +```sequence +ActionServer->ActionClient: server ready +ActionClient->ActionServer: subscribe feedback & status topic +ActionClient-->ActionServer: ask if ContentFilteredTopic supported +ActionClient-->ActionServer: set filter expression and parameter based on goal id +ActionServer->ActionClient: publish feedback & status +Note over ActionClient: Filtering Process(if not filtered) +``` + +#### Parameter Events + +There are two types of parameter events subscription, one is for system(TimeSource) which is controlled and taken care by rclcpp and rclpy internally. And the other is user application to register user callback to be fired when parameter events come in. + +It would be good to create ContentFilteredTopic for each of them. This can make responsibility clear and simple, can avoid the complication about filtering expression merge between user filtering and system filtering. + +| ContentFilterTopic | Description | +| :--- | :--- | +| /parameter_events_system_Node_ID | parameter events ContentFilteredTopic for system internal usage, Node ID would be uuid to identify this NodeBase. (same with user uuid) | +| /parameter_events_user_Node_ID | parameter events ContentFilteredTopic for user callback usage, Node ID would be uuid to identify this NodeBase. (same with system uuid) | + +(*) These ContentFilteredTopic should not show up to user. (e.g ros2 topic list) + +- TimeSource + **use_sim_time** event on self-node_base is subscribed internally to check if **use_sim_time** parameter is changed or not. so internally this **use_sim_time** AND self node name always must be in filter_expression and expression_parameters via ContentFilteredTopic if it is supported. see [here](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp/src/rclcpp/time_source.cpp#L123-L125). + **use_sim_time** parameter event must be guaranteed by system to keep that in the filter and parameter expression when using ContentFilteredTopic. + +- User frontend (rclcpp/rclpy) + User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. + **[T.B.D] Filtering should be compatible for user even if rmw_implementation does not support ContentFilteredTopic, this can be done with using ParameterEventsFilter. But the problem here is ParameterEventsFilter only filters parameter name and event type such as NEW, DELETED, CHANGED. there is a huge gap of the flexibility that dds filtering expression and parameter expression possesses. This is what we need to discuss.** + +```sequence +ParameterEventSubscription->ParameterEventPublication: subscribe /parameter_events +ParameterEventSubscription-->ParameterEventPublication: ask if ContentFilteredTopic is supported +ParameterEventSubscription-->ParameterEventPublication: set filter expression on /parameter_events +ParameterEventPublication->ParameterEventSubscription: publish /parameter_events +Note over ParameterEventSubscription: Internal Filtering Process(if not filtered) +Note over ParameterEventSubscription: user callback fired(via on_parameter_event) +``` + +### Interfaces + +#### rcl + +Since ContentFilteredTopic is dds specification and rmw_implementation, rcl will be basically just a bridge to connect interfaces between rclcpp/rclpy and rmw. So far, it is not expected to take care of specific implementation in rcl but interface glue. + +#### rmw + +- rmw_ret_t rmw_publisher_content_aware(const char *related_topic_name) + Ask if rmw_implementation on the publisher supports ContentsFilteredTopic or not. + return RMW_RET_OK if publication is contents aware, or + return RMW_RET_UNSUPPORTED if publication is NOT contents aware. + + Or we should add the api negotiation interface for other extension to avoid redundant code? + ``` + #define RMW_EXT_PUBLICATION_CONTENTS_AWARE 0x00000001 + + rmw_ret_t rmw_ext_supported(uint64_t *flag) + + uint64_t flag; + flag = flag | RMW_EXT_PUBLICATION_CONTENTS_AWARE; + rmw_ret_t rmw_ext_supported(&flag); + if (flag & RMW_EXT_PUBLICATION_CONTENTS_AWARE) { + // rmw_implementation supports RMW_EXT_PUBLICATION_CONTENTS_AWARE + } + ``` + +- rmw_ret_t rmw_set_contentfilter_expression(const char *topic_name, char *filter_expression, char **expression_parameters) + IN: content filtered topic name that's been subscribed. + IN: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. + IN: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). + +- rmw_ret_t rmw_get_contentfilter_expression(const char *topic_name, char *filter_expression, char **expression_parameters) + IN: content filtered topic name that's been subscribed. + OUT: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. + OUT: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). + +- rmw_ret_t rmw_create/delete_contentfilteredtopic(const char *name, const char *related_topic) + According to dds specification, ContentFilteredTopic needs to be constructed based on related_topic which is parent topic. + +#### rclcpp(rclpy) + +The following methods will be provided as user interfaces, so that user application can filter the parameter events with their own filter_expression and expression_parameters. rclcpp and rclpy should have the compatible class and method. + +User should be aware of parameter event filtering, but no need to aware of ContentFilteredTopic. So providing filtering setter and getter interfaces based on Parameter Client. (Also this should be discussed in community, but we do not see any requirement to expose ContentFilteredTopic to user application.) + +- AsyncParametersClient::set_parameter_event_filter(string filter_expression, StringSeq expression_parameters) + **[T.B.D] maybe node names and paramter names are good enough for user interface, this needs to be discussed in community.** + IN: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. + IN: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). +- AsyncParametersClient::get_parameter_event_filter + **[T.B.D] maybe node names and paramter names are good enough for user interface, this needs to be discussed in community.** + OUT: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. + OUT: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). + +### Implementation + +#### Action + +- Action Server + Nothing needs to be changed, even with ContentFilteredTopic it should not be aware of that, just publishes feedback and status message, the rest will be taken care by rmw_implementation. if rmw_implementation does not support ContentFilteredTopic, filtering process is done by subscriber side which is Action Client. + +- Action Client + User interface(rclcpp and rclpy) should not be changed, everything can be integrated into internal implementation. + - rclcpp/rclpy + Needs to check if ContentFilter is done by rmw_implementation internally. If ContentFilter is supported by by rmw_implementation, it will create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id.(saying there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay put since there would be unnecessary message from publisher. + at [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id, again the goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the finalization is also needed when goal id is being unregistered from goal handler.) + - rcl + most likely, it will provide bridge interface between rclcpp/rclpy and rmw_implementation. one thing to consider is that rcl possibly calls create/delete_contentfilteredtopic internally because currently feedback/status subscription initialization will be done by rcl internally via rcl_action_client_init. + +#### Parameter Event + +- Publication + +Nothing will be required to change or modify on publication side. It will publish parameter events always, filtering should be done in rmw_implementation dds writer side transparently. + +- Subscription + +At 1st call set_parameter_event_filter from user application, if rmw_implementation supports ContentFilteredTopic, it will make ContentFilteredTopic internally and also call rcl/rmw to set the filter expression and parameter expressions. user callback via on_parameter_event will be registered on ContentFilteredTopic if filtering is requested. +[T.B.D] on_parameter_event needs to be extended to call filter_callback internally, then call user callback after filtering is done. with this filter_callback, it can internally filter the parameter event even if ContentFilteredTopic is not supported. (if ContentFilteredTopic is supported, only filtered parameter events are delivered.) + +If user application wants to change filter expression and parameter expressions, it will need to get them via get_parameter_event_filter, then modify or append the expression, and set via set_parameter_event_filter. + +without setting filtering, it will subscribe related topic which is /parameter_events and user callback will be fired once any event comes in. Clearing filter is to call set_parameter_event_filter with both arguments NULL. + +### Questions + +- what if different rmw_implementation is used on remote node? + As long as it is dds, this is responsibility for dds implementation and it has to be able to know if remote nodes support ContentFilteredTopic or not. DDS is sets of API and specification to support and include this requirement. Once it comes to the non-dds implementation, this is not only problem for ContentFilteredTopic but also message transport cannot be supported. + +- how much flexibility of filtering expression for user? + dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. but thinking of ros2 frontend interface rclcpp and rclpy, maybe node name and parameter name would be good enough? + +- ParameterEventSubscription + Kinda off topic, this should be integrated into rcl layer? so that all frontend rclpy can take advantage of that, also we can reduce the redundancy for maintenance. (I believe this is the main focus on rcl implementation.) + +- Side effect for making bunch of ContentFilteredTopic + There will be always trading-off, with user aspect, making ContentFilteredTopic is really good not to filter the event. But thinking about dds responsibility, this will increase the complexity and complication for ContentFilteredTopic writer to comprehend which reader needs to receive what events. this needs to be discussed with dds vendor, to try to get to the sweetest spot for ros2 use cases. + +- User interface for ContentFilteredTopic + It should provide ContentFilteredTopic in general interfaces for topic? not only for action and parameter events? this could be discussed in community. (this is not a focus on this task, but it can be extended if requested.) + +## Responsibility + + + +## Related Works + +- [Parameter Subscription Class](https://github.com/ros2/rclcpp/pull/829) + User friendly interfaces to handle parameters with node and parameter identification. PR is really old and suspended for monthes. This might be discarded. diff --git a/img/content_filter/action_architecture_overview.png b/img/content_filter/action_architecture_overview.png new file mode 100755 index 0000000000000000000000000000000000000000..3c15bcd36186e26e762496f85d05cb3bdb5b9abd GIT binary patch literal 74554 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𝔟9plb2B(5+0e@)bPyD!SjbMea@s+n5d)Xuq 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

O(sIhaPA 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

yCKXUV11B4QPb;1pZl=?gws8x9k%GbN3{E<;0 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 z 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 literal 0 HcmV?d00001 diff --git a/img/content_filter/parameter_event_overview.png b/img/content_filter/parameter_event_overview.png new file mode 100755 index 0000000000000000000000000000000000000000..ff4e84a54ad43bd3a4502ff972a1e17adbdd12f4 GIT binary patch literal 109795 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 Y+8os7Y+<(tlmm4B%%wjHPut%6KUuRLegFUf literal 0 HcmV?d00001 diff --git a/img/content_filter/responsibility.png b/img/content_filter/responsibility.png new file mode 100755 index 0000000000000000000000000000000000000000..6f8f783dfeca2d7dcb5da572bab36e34db702c57 GIT binary patch literal 44870 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 JfomU-{9my4$%+5~ literal 0 HcmV?d00001 From 9d7db4c50e482d82dea063d336adce832a9a8579 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Fri, 1 May 2020 14:58:11 +0900 Subject: [PATCH 02/17] fix sequence diagrams. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 18 ++---------------- .../action_sequence_with_filter.png | Bin 0 -> 18279 bytes .../parameter_event_sequence_with_filter.png | Bin 0 -> 21676 bytes 3 files changed, 2 insertions(+), 16 deletions(-) create mode 100755 img/content_filter/action_sequence_with_filter.png create mode 100755 img/content_filter/parameter_event_sequence_with_filter.png diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 1c2800e41..980066666 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -169,14 +169,7 @@ There will be no need to expose ContentFilter concept for user. ContentFilteredT feedback topic is user defined message type dependent on action name but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and client issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. status topic is constructed with [GoalStatus](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalStatus.msg), this can be also taken care with feedback mostly same design. -```sequence -ActionServer->ActionClient: server ready -ActionClient->ActionServer: subscribe feedback & status topic -ActionClient-->ActionServer: ask if ContentFilteredTopic supported -ActionClient-->ActionServer: set filter expression and parameter based on goal id -ActionServer->ActionClient: publish feedback & status -Note over ActionClient: Filtering Process(if not filtered) -``` + #### Parameter Events @@ -199,14 +192,7 @@ It would be good to create ContentFilteredTopic for each of them. This can make User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. **[T.B.D] Filtering should be compatible for user even if rmw_implementation does not support ContentFilteredTopic, this can be done with using ParameterEventsFilter. But the problem here is ParameterEventsFilter only filters parameter name and event type such as NEW, DELETED, CHANGED. there is a huge gap of the flexibility that dds filtering expression and parameter expression possesses. This is what we need to discuss.** -```sequence -ParameterEventSubscription->ParameterEventPublication: subscribe /parameter_events -ParameterEventSubscription-->ParameterEventPublication: ask if ContentFilteredTopic is supported -ParameterEventSubscription-->ParameterEventPublication: set filter expression on /parameter_events -ParameterEventPublication->ParameterEventSubscription: publish /parameter_events -Note over ParameterEventSubscription: Internal Filtering Process(if not filtered) -Note over ParameterEventSubscription: user callback fired(via on_parameter_event) -``` + ### Interfaces diff --git a/img/content_filter/action_sequence_with_filter.png b/img/content_filter/action_sequence_with_filter.png new file mode 100755 index 0000000000000000000000000000000000000000..a8e359c9ea133eeadc0f40ae4e22bbb3e2b50b57 GIT binary patch literal 18279 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 OaYIe(YLTk-U;hIVEnE8l literal 0 HcmV?d00001 diff --git a/img/content_filter/parameter_event_sequence_with_filter.png b/img/content_filter/parameter_event_sequence_with_filter.png new file mode 100755 index 0000000000000000000000000000000000000000..50c25d15bd7406be9fb0d6c7fe9cedbad453cf62 GIT binary patch literal 21676 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 Date: Wed, 8 Jul 2020 15:01:47 +0900 Subject: [PATCH 03/17] Proposal design update. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 178 +++++++++------------------------- 1 file changed, 47 insertions(+), 131 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 980066666..aa60d3813 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -17,53 +17,10 @@ published: true Original Author: {{ page.author }} -# ContentFilteredTopic Feasibility for ROS2 - -This is a note to consider DDS ContentFilteredTopic optimization for ros2 parameter event topic and action topics. The goal of this note is to see if it is suitable and feasible to use DDS ContentFilteredTopic against the problems that we have ros2 as described below. And describe the consideration in detail and basic design how actually we could integrate ContentFilteredTopic in ros2 core system such as rmw, rcl and rclcpp. - - - - - -- [{{ page.title }}](#pagetitle) -- [ContentFilteredTopic Feasibility for ROS2](#contentfilteredtopic-feasibility-for-ros2) - - [Author](#author) - - [Problems](#problems) - - [Parameter Event Topic](#parameter-event-topic) - - [Action Topics](#action-topics) - - [ContentFilteredTopic](#contentfilteredtopic) - - [Requirement](#requirement) - - [Spec Description](#spec-description) - - [DDS](#dds) - - [DDSI-RTPS](#ddsi-rtps) - - [Reference](#reference) - - [ROS2 Consideration](#ros2-consideration) - - [Requirement](#requirement-1) - - [Design](#design) - - [Namespace](#namespace) - - [Action](#action) - - [Parameter Events](#parameter-events) - - [Interfaces](#interfaces) - - [rcl](#rcl) - - [rmw](#rmw) - - [rclcpp(rclpy)](#rclcpprclpy) - - [Implementation](#implementation) - - [Action](#action-1) - - [Parameter Event](#parameter-event) - - [Questions](#questions) - - [Responsibility](#responsibility) - - [Related Works](#related-works) - - - -## Author - -- - ## Problems -Here describes the current problems that we have in ros2 system, they are already well-known issues. issues are not related to functionalities but efficiency like cpu consumption and network transmission. These efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. -Currently, at least there are following two main problems exist in ros2, the one is /parameter_events topic transmission and the other is action topics feedback and status message transmission. the detail is described as following. +Here describes the current problems that we have, they are already well-known issues. issues are not related to functionalities but efficiency like cpu consumption and network transmission. The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. +Currently, at least there are following two main problems exist in ROS2, the one is /parameter_events topic transmission and the other is action topics feedback and status message transmission. the detail is described as following. ### Parameter Event Topic @@ -78,7 +35,7 @@ The problem can be broken down into the following two parts, - Subscriber needs to filter unnecessary (not interesting) messages Subscriber does not know if the message is something interesting or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. In expectation, most likely parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. -as described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire ros2 system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. +as described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. ### Action Topics @@ -112,7 +69,7 @@ ContentFilteredTopic describes a more sophisticated subscription that indicates - Multiple filter_expression and expression_parameters can be modified dynamically at runtime. This is because of use cases for ros2 parameter and action, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. -### Spec Description +### Specification #### DDS @@ -121,7 +78,7 @@ the following create/delete API's are defined, - create_contentfilteredtopic() - delete_contentfilteredtopic() -**[T.B.D] ContentFilteredTopic is also defined to do a more sophisticated subscription, but according to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_expression at runtime.** +**According to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_expression at runtime.** #### DDSI-RTPS @@ -132,33 +89,29 @@ The ContentFilterProperty_t field provides all the required information to enabl [DDS v1.4 Specification](https://www.omg.org/spec/DDS/1.4/PDF) [DDSI-RTPS v2.3 Specification](https://www.omg.org/spec/DDSI-RTPS/2.3/PDF) -## ROS2 Consideration - -This part is ros2 related consideration how to integrate and port the ContentFilteredTopic into rclcpp, rcl and rmw layer along current implementation. at 1st step, requirement needs to be clarified and discussed very well. This is just a draft feasibility and design ideas so that this needs to be discussed with Open Robotics and ROS2 Community in public space. +## Design ### Requirement -- Do not break user space. - Current application must be able to run without any change on ros2 supported rmw implementation such as rmw_cyclonedds, rmw_fastrtps, rmw_opensplice, rmw_connext and rmw_iceoryx. (But might require rebuilding since some built-in message needs to be modified.) -- Frontend interfaces are compatible. (parameter client) - [T.B.D] If rmw implementation does not support ContentFilteredTopic interfaces, filtering should be done internally on subscriber side? or it can leave it for user application responsibility. -- Parameter subscription interface, method or class will be provided as frontend. - This is to set/get the filter_expression and expression_parameters on each parameter client. +- ContentFilteredTopic interfaces can be used only if implementation supports. + - [T.B.D] If rmw implementation does not support ContentFilteredTopic interfaces, filtering should be done internally on subscriber side? or it can leave it for user application responsibility. +- User can create/destroy ContentFilteredTopic based on parent topic. +- User can set/get the filter_expression and expression_parameters for ContentFilteredTopic. - Filtering expression and expression parameters can be set and get at runtime. - [T.B.D] According to DDS specification filtering expression may not be changed dynamically, in that case, recreating ContentFilteredTopic would be required to change filtering expression, or with specific filtering expression such as node name and parameter name for parameter events and goal id for action, there would be no need to reset filtering expression. - Filtering goal id for action feedback and status will be perfectly concealed for user. -- User can specify node name and parameter name for parameter event. - [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. +- User can specify node name and parameter name for parameter event to filter the parameter evetns. + - [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. -### Design +### Proposal #### Namespace -Since ContentFilteredTopic is based on related parent topic (more like base topic), it will create ContentFilteredTopic internally. +Since ContentFilteredTopic is based on parent topic (more like base topic), it will create ContentFilteredTopic internally, not exposed as generic topic. #### Action -There will be no need to expose ContentFilter concept for user. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to get more transport efficiency. +There will be no need to expose ContentFilter concept for user. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to have more transport efficiency. | ContentFilterTopic Name | Description | | :--- | :--- | @@ -198,58 +151,40 @@ It would be good to create ContentFilteredTopic for each of them. This can make #### rcl -Since ContentFilteredTopic is dds specification and rmw_implementation, rcl will be basically just a bridge to connect interfaces between rclcpp/rclpy and rmw. So far, it is not expected to take care of specific implementation in rcl but interface glue. +- add API `is_cft_supported` to allow frontend(rclcpp/rclpy) can know CFT is supported or not. + e.g) `rcl_subscription_is_cft_supported` to access `is_cft_supported`. +- add `rcl_create_cft_subscription` to call `rmw_create_cft_subscription`. +- add `rcl_cft_set/get_expression_parameters` to call `rmw_cft_set/get_expression_parameters`. #### rmw -- rmw_ret_t rmw_publisher_content_aware(const char *related_topic_name) - Ask if rmw_implementation on the publisher supports ContentsFilteredTopic or not. - return RMW_RET_OK if publication is contents aware, or - return RMW_RET_UNSUPPORTED if publication is NOT contents aware. - - Or we should add the api negotiation interface for other extension to avoid redundant code? - ``` - #define RMW_EXT_PUBLICATION_CONTENTS_AWARE 0x00000001 - - rmw_ret_t rmw_ext_supported(uint64_t *flag) - - uint64_t flag; - flag = flag | RMW_EXT_PUBLICATION_CONTENTS_AWARE; - rmw_ret_t rmw_ext_supported(&flag); - if (flag & RMW_EXT_PUBLICATION_CONTENTS_AWARE) { - // rmw_implementation supports RMW_EXT_PUBLICATION_CONTENTS_AWARE - } - ``` - -- rmw_ret_t rmw_set_contentfilter_expression(const char *topic_name, char *filter_expression, char **expression_parameters) - IN: content filtered topic name that's been subscribed. - IN: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. - IN: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). +- add new member `is_cft_supported` into `rmw_subscription_t` which indicates if CTF is supported by rmw_implementation or not. + e.g) see `can_loan_masseges` member as reference. + support status will be set when parent subscription is created. then support status can be used to notify the upper layer if CFT is supported or not. -- rmw_ret_t rmw_get_contentfilter_expression(const char *topic_name, char *filter_expression, char **expression_parameters) - IN: content filtered topic name that's been subscribed. - OUT: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. - OUT: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). +| Implementation | `is_cft_supported` | +| :--: | :--: | +| rmw_connext | true | +| rmw_fastrtps | false | +| rmw_cyclonedds | false | -- rmw_ret_t rmw_create/delete_contentfilteredtopic(const char *name, const char *related_topic) - According to dds specification, ContentFilteredTopic needs to be constructed based on related_topic which is parent topic. +- new `DDSContentFilteredTopic` object needs to be managed in implementation. +- parent topic information should be cached so that we can create CFT based on that parent topic. +- `rmw_create_cft_subscription` interface. + - input: rmw_subscription_t, rmw_node_t, parent topic information. + - output: rmw_subscription_t (with new data reader) +- `rmw_cft_set/get_expression_parameters` interface. + - input: `DDSContentFilteredTopic`, (string sequence) expression parameters. #### rclcpp(rclpy) -The following methods will be provided as user interfaces, so that user application can filter the parameter events with their own filter_expression and expression_parameters. rclcpp and rclpy should have the compatible class and method. - -User should be aware of parameter event filtering, but no need to aware of ContentFilteredTopic. So providing filtering setter and getter interfaces based on Parameter Client. (Also this should be discussed in community, but we do not see any requirement to expose ContentFilteredTopic to user application.) - -- AsyncParametersClient::set_parameter_event_filter(string filter_expression, StringSeq expression_parameters) - **[T.B.D] maybe node names and paramter names are good enough for user interface, this needs to be discussed in community.** - IN: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. - IN: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). -- AsyncParametersClient::get_parameter_event_filter - **[T.B.D] maybe node names and paramter names are good enough for user interface, this needs to be discussed in community.** - OUT: filter_expression attribute is a string that specifies the criteria to select the data samples of interest. It is similar to the WHERE part of an SQL clause. - OUT: expression_parameters attribute is a sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) in the filter_expression. The number of supplied parameters must fit with the requested values in the filter_expression(i.e., the number of %n tokens). +- `create_cft_subscription` method in `Node` & `Subscription` class to allow user application to user CFT feature based on parent topics and subscription. + - if the platform does not support CFT, the return NOT_SUPPORTED. + - this will override the subscription (datareader in dds), so that we can have single datareader in dds. this means that subscription can only subscribe content filtered data. +- `set_cft_set/get_expression_parameters` method in `Node` class to set and get expression parameters. (Not possible set filtering expression at runtime this is specification of DDS.) +- Deletion/Destruction of CFT subscription is exactly same with current subscription routine. -### Implementation +### Components #### Action @@ -258,43 +193,24 @@ User should be aware of parameter event filtering, but no need to aware of Conte - Action Client User interface(rclcpp and rclpy) should not be changed, everything can be integrated into internal implementation. - - rclcpp/rclpy - Needs to check if ContentFilter is done by rmw_implementation internally. If ContentFilter is supported by by rmw_implementation, it will create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id.(saying there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay put since there would be unnecessary message from publisher. - at [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id, again the goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the finalization is also needed when goal id is being unregistered from goal handler.) - - rcl - most likely, it will provide bridge interface between rclcpp/rclpy and rmw_implementation. one thing to consider is that rcl possibly calls create/delete_contentfilteredtopic internally because currently feedback/status subscription initialization will be done by rcl internally via rcl_action_client_init. + It will check if ContentFilter is supported by rmw_implementation internally. If ContentFilter is supported by rmw_implementation, create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id. (saying there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay since there would be unnecessary message from publisher.At [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id. The goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the finalization is also needed when goal id is being unregistered from goal handler.) #### Parameter Event - Publication - -Nothing will be required to change or modify on publication side. It will publish parameter events always, filtering should be done in rmw_implementation dds writer side transparently. + Nothing will be required to change or modify on publication side. It will publish parameter events as it does, filtering should be done in rmw_implementation dds writer side transparently. - Subscription - -At 1st call set_parameter_event_filter from user application, if rmw_implementation supports ContentFilteredTopic, it will make ContentFilteredTopic internally and also call rcl/rmw to set the filter expression and parameter expressions. user callback via on_parameter_event will be registered on ContentFilteredTopic if filtering is requested. -[T.B.D] on_parameter_event needs to be extended to call filter_callback internally, then call user callback after filtering is done. with this filter_callback, it can internally filter the parameter event even if ContentFilteredTopic is not supported. (if ContentFilteredTopic is supported, only filtered parameter events are delivered.) - -If user application wants to change filter expression and parameter expressions, it will need to get them via get_parameter_event_filter, then modify or append the expression, and set via set_parameter_event_filter. - -without setting filtering, it will subscribe related topic which is /parameter_events and user callback will be fired once any event comes in. Clearing filter is to call set_parameter_event_filter with both arguments NULL. + It will check if ContentFilteredTopic is supported by rmw_implementation. If rmw_implementation supports ContentFilteredTopic, it will create ContentFilteredTopic internally and also set the filter expression and parameter expressions. user callback will be registered on ContentFilteredTopic. + If user application wants to change filter expression and parameter expressions, it will need to get the current filter setting, then modify or append the expression, and set. ### Questions -- what if different rmw_implementation is used on remote node? - As long as it is dds, this is responsibility for dds implementation and it has to be able to know if remote nodes support ContentFilteredTopic or not. DDS is sets of API and specification to support and include this requirement. Once it comes to the non-dds implementation, this is not only problem for ContentFilteredTopic but also message transport cannot be supported. - -- how much flexibility of filtering expression for user? - dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. but thinking of ros2 frontend interface rclcpp and rclpy, maybe node name and parameter name would be good enough? - -- ParameterEventSubscription - Kinda off topic, this should be integrated into rcl layer? so that all frontend rclpy can take advantage of that, also we can reduce the redundancy for maintenance. (I believe this is the main focus on rcl implementation.) +- How much flexibility of filtering expression for /parameter_events? + dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. but thinking of /parameter_events, maybe node name and parameter name would be good enough? - Side effect for making bunch of ContentFilteredTopic - There will be always trading-off, with user aspect, making ContentFilteredTopic is really good not to filter the event. But thinking about dds responsibility, this will increase the complexity and complication for ContentFilteredTopic writer to comprehend which reader needs to receive what events. this needs to be discussed with dds vendor, to try to get to the sweetest spot for ros2 use cases. - -- User interface for ContentFilteredTopic - It should provide ContentFilteredTopic in general interfaces for topic? not only for action and parameter events? this could be discussed in community. (this is not a focus on this task, but it can be extended if requested.) + There will be always trading-off, with user aspect, making ContentFilteredTopic is really good not to filter the event. But thinking about dds responsibility, this will increase the complexity and complication for ContentFilteredTopic writer to comprehend which reader needs to receive what events. ## Responsibility From 8fa668ba3dce0fd4ad5a994cb3973d61dd91258f Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Mon, 27 Jul 2020 10:47:59 +0900 Subject: [PATCH 04/17] types in rmw should not be DDS types. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index aa60d3813..e21980b12 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -174,7 +174,7 @@ It would be good to create ContentFilteredTopic for each of them. This can make - input: rmw_subscription_t, rmw_node_t, parent topic information. - output: rmw_subscription_t (with new data reader) - `rmw_cft_set/get_expression_parameters` interface. - - input: `DDSContentFilteredTopic`, (string sequence) expression parameters. + - input: rmw_subscription_t, (string sequence) expression parameters. #### rclcpp(rclpy) From eeba915f6ccdf5242b0feacbc0b0305a67b43c81 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Tue, 18 Aug 2020 15:14:57 +0900 Subject: [PATCH 05/17] update design based on the previous comments. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 68 +++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index e21980b12..9408ebc29 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -19,31 +19,31 @@ Original Author: {{ page.author }} ## Problems -Here describes the current problems that we have, they are already well-known issues. issues are not related to functionalities but efficiency like cpu consumption and network transmission. The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. -Currently, at least there are following two main problems exist in ROS2, the one is /parameter_events topic transmission and the other is action topics feedback and status message transmission. the detail is described as following. +Here describes the current problems that we have, these are already well-known issues. issues are not related to functionalities but efficiency like CPU consumption and network resource. The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. +Currently, at least there are following two main problems exist in ROS2, the one is `/parameter_events` topic and the other is action topics `feedback` and `status`. the detail is described as following. ### Parameter Event Topic -Each node will publish and subscribe parameter events topic (this is configurable via node option). This topic is to support monitoring parameters for change. It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. there will be an internal subscription for each node for /parameter_evetns topic to handle the TimeSource via "use_sim_time" parameter. rclcpp::ParameterEventsFilter is used to filter the parameter with specific names such as "use_sim_time". As user interface, AsyncParametersClient::on_parameter_event is provided to handle parameter events. +Each node will publish and subscribe parameter events topic (this is configurable via node option). This topic is to support monitoring parameters for change. It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. there is an internal subscription for each node for /parameter_evetns topic to handle the TimeSource via "use_sim_time" parameter. `rclcpp::ParameterEventsFilter` is used to filter the parameter with specific names such as "use_sim_time". As user interface, `AsyncParametersClient::on_parameter_event` is provided to handle parameter events. -The problem can be broken down into the following two parts, +The problem can be broken into the following two parts, -- Network activity on /parameter_events topic - Since nobody cares who needs to receive which messages, there will be all of the parameter activity, everyone publishes and subscribes all of the events with this giant topic /parameter_events. This leads to a lot of unnecessary message transmission over the network. -- Subscriber needs to filter unnecessary (not interesting) messages - Subscriber does not know if the message is something interesting or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. In expectation, most likely parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. +- Network activity on `/parameter_events` topic + Since nobody cares who needs to receive which messages, there will be all of the parameter activity. That said everyone publishes and subscribes all of the events with this giant topic `/parameter_events`. This leads to a lot of unnecessary message transmission over the network. +- Subscriber needs to filter unnecessary (not interested) messages + Subscriber does not know if the message is something it needs or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. In expectation, it is likely that parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. as described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. ### Action Topics -Each action server will provide two topics named feedback and status as followings, +Each action server will provide two topics named `feedback` and `status` as followings, -feedback and status are single topic each mapped to action name and published by action server, and action clients subscribe those topics to get feedback and status. When there are many goals from many clients, the choice to have a single feedback (and status) topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) +`feedback` and `status` are topics each mapped with action name and published by action server, and action clients subscribe those topics to get feedback and status. When there are many goals from many clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) ## ContentFilteredTopic @@ -56,7 +56,7 @@ ContentFilteredTopic describes a more sophisticated subscription that indicates - Multiple ContentFilteredTopicDataReader exist and filtering is dependent on each ContentFilteredTopicDataReader's logical filtering expression and parameters. - Subscriber is responsible to create ContentFilteredTopic. -- The filtering is done by means of evaluating a logical expression that involves the values f some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. +- The filtering is done by means of evaluating a logical expression that involves the values some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. - Multiple filter_expression and expression_parameters can be supported on single ContentFilteredTopic. ``` [parameter use cases] @@ -67,7 +67,7 @@ ContentFilteredTopic describes a more sophisticated subscription that indicates "uuid = %0 OR uuid = %1" DEADBEEF CAFEFEED : subscribe only interest goal ids which client handlers possess. ``` - Multiple filter_expression and expression_parameters can be modified dynamically at runtime. - This is because of use cases for ros2 parameter and action, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. + This is because of use cases for `/parameter_events` and action `feedback` and `status` topics, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. ### Specification @@ -78,11 +78,11 @@ the following create/delete API's are defined, - create_contentfilteredtopic() - delete_contentfilteredtopic() -**According to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_expression at runtime.** +**According to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_exThis needs to be discussed to see if we have our specific requirement for expression syntax. but that will make conversion overhead.ed at runtime. [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement.** #### DDSI-RTPS -The ContentFilterProperty_t field provides all the required information to enable content filtering on the Writer side. DDS allows the user to modify the filter expression parameters at run-time. Each time the parameters are modified, the updated information is exchanged using the Endpoint discovery protocol. This is identical to updating a mutable QoS value. +The ContentFilterProperty_t field provides all the required information to enable content filtering on the Writer side. DDS allows the user to modify the filter expression parameter at runtime. Each time the parameters are modified, the updated information is exchanged using the Endpoint discovery protocol. This is identical to updating a mutable QoS value. ### Reference @@ -94,33 +94,33 @@ The ContentFilterProperty_t field provides all the required information to enabl ### Requirement - ContentFilteredTopic interfaces can be used only if implementation supports. - - [T.B.D] If rmw implementation does not support ContentFilteredTopic interfaces, filtering should be done internally on subscriber side? or it can leave it for user application responsibility. -- User can create/destroy ContentFilteredTopic based on parent topic. -- User can set/get the filter_expression and expression_parameters for ContentFilteredTopic. +- If rmw implementation does not support ContentFilteredTopic interfaces, filtering will be done internally on subscriber side in `rcl`. +- It can create/destroy ContentFilteredTopic based on parent topic. +- It can set/get the filter_expression and expression_parameters for ContentFilteredTopic. - Filtering expression and expression parameters can be set and get at runtime. - - [T.B.D] According to DDS specification filtering expression may not be changed dynamically, in that case, recreating ContentFilteredTopic would be required to change filtering expression, or with specific filtering expression such as node name and parameter name for parameter events and goal id for action, there would be no need to reset filtering expression. -- Filtering goal id for action feedback and status will be perfectly concealed for user. -- User can specify node name and parameter name for parameter event to filter the parameter evetns. - - [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. + - As decribed above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. But to support requirements in ROS2, it must support dynamic reconfiguration for filtering expression and paramter. +- Filtering goal id for action `feedback` and `status` will be done ROS2 system. +- User can specify node name and parameter name to filter the parameter evetns. +- Filtering expression and parameter grammer will be the same with DDS standard between `rcl` and `rmw`. ### Proposal #### Namespace -Since ContentFilteredTopic is based on parent topic (more like base topic), it will create ContentFilteredTopic internally, not exposed as generic topic. +Since ContentFilteredTopic is based on parent topic (more like base topic), it will create ContentFilteredTopic internally, not exposed as ordinary topic. #### Action -There will be no need to expose ContentFilter concept for user. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to have more transport efficiency. +Each action client id to ContentFilteredTopic based on `action_name/_action/feedback_or_status`. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to have more transport efficiency. | ContentFilterTopic Name | Description | | :--- | :--- | | action_name/_action/feedback_ActionClient_ID | feedback ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with status id for the same client) | | action_name/_action/status_ActionClient_ID | status ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with feedback id for the same client) | -(*) These ContentFilteredTopic should not show up to user. (e.g ros2 topic list) +(*) These ContentFilteredTopic should not show up to user. (e.g `ros2 topic list`) -feedback topic is user defined message type dependent on action name but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and client issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. status topic is constructed with [GoalStatus](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalStatus.msg), this can be also taken care with feedback mostly same design. +`feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and client issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. `st- [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. if to support any expression and parameter, it means that `rcl` needs to have DDS standard expression and parameter filtering function. new goal id will be applied to ContentFilteredTopic object based on action client ID. @@ -132,18 +132,24 @@ It would be good to create ContentFilteredTopic for each of them. This can make | ContentFilterTopic | Description | | :--- | :--- | -| /parameter_events_system_Node_ID | parameter events ContentFilteredTopic for system internal usage, Node ID would be uuid to identify this NodeBase. (same with user uuid) | -| /parameter_events_user_Node_ID | parameter events ContentFilteredTopic for user callback usage, Node ID would be uuid to identify this NodeBase. (same with system uuid) | +| /parameter_events_system_Node_ID | parameter events ContentFilteredTopic for system internal usage, Node ID would be uuid to identify this NodeBase. | +| /parameter_events_user_Node_ID | parameter events ContentFilteredTopic for user callback usage, Node ID would be uuid to identify this NodeBase. | -(*) These ContentFilteredTopic should not show up to user. (e.g ros2 topic list) +(*) These ContentFilteredTopic should not show up to user. (e.g `ros2 topic list`) - TimeSource **use_sim_time** event on self-node_base is subscribed internally to check if **use_sim_time** parameter is changed or not. so internally this **use_sim_time** AND self node name always must be in filter_expression and expression_parameters via ContentFilteredTopic if it is supported. see [here](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp/src/rclcpp/time_source.cpp#L123-L125). **use_sim_time** parameter event must be guaranteed by system to keep that in the filter and parameter expression when using ContentFilteredTopic. + (Off topic from ContentFilteredTopic) + This `use_sim_time` can be supported local callbacks, it does not have to use `/parameter_events` at all. + - User frontend (rclcpp/rclpy) - User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. - **[T.B.D] Filtering should be compatible for user even if rmw_implementation does not support ContentFilteredTopic, this can be done with using ParameterEventsFilter. But the problem here is ParameterEventsFilter only filters parameter name and event type such as NEW, DELETED, CHANGED. there is a huge gap of the flexibility that dds filtering expression and parameter expression possesses. This is what we need to discuss.** + User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. If rmw_impelementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on fitlering expression and parameters. + +- Filtering Expression and Parameters + User can specify node name and parameter name to filter the parameter evetns. + - [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. if to support any expression and parameter, it means that `rcl` needs to have DDS standard expression and parameter filtering function. @@ -178,6 +184,8 @@ It would be good to create ContentFilteredTopic for each of them. This can make #### rclcpp(rclpy) +**[T.B.D] Do we need to expose ContentFilteredTopic for user classes?** + - `create_cft_subscription` method in `Node` & `Subscription` class to allow user application to user CFT feature based on parent topics and subscription. - if the platform does not support CFT, the return NOT_SUPPORTED. - this will override the subscription (datareader in dds), so that we can have single datareader in dds. this means that subscription can only subscribe content filtered data. From 036527ab4e20b8a9e5aae4831d40a0ab070a968c Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Wed, 21 Oct 2020 14:07:45 +0900 Subject: [PATCH 06/17] add typical improvement result via ContentFilteredTopic. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 52 ++++++++++++++++++++++ img/content_filter/improvement_cpu.png | Bin 0 -> 22632 bytes img/content_filter/improvement_memory.png | Bin 0 -> 22936 bytes img/content_filter/improvement_tx.png | Bin 0 -> 22935 bytes 4 files changed, 52 insertions(+) create mode 100755 img/content_filter/improvement_cpu.png create mode 100755 img/content_filter/improvement_memory.png create mode 100755 img/content_filter/improvement_tx.png diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 9408ebc29..4160f55a4 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -69,6 +69,58 @@ ContentFilteredTopic describes a more sophisticated subscription that indicates - Multiple filter_expression and expression_parameters can be modified dynamically at runtime. This is because of use cases for `/parameter_events` and action `feedback` and `status` topics, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. +### Improvement Result + +This result indicates if ContentFilteredTopic provides the improvement for CPU consumption and network traffic as we described above. Using single writer and multiple readers up to 10 with filtering expression and expression parameters. + +#### Environment + +- Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz / 8GB memory +- Ubuntu 18.04.5 LTS +- docker 19.03.6 +- ubuntu:20.04 container +- ros2:rolling, rti-connext-dds-5.3.1 + +#### IDL + +``` +struct cft { + long count; + string flag; + string cmd; + long data_size; + string<8 * 1024 * 1024> data; +}; +``` + +#### Result + +`flag` means how many **readers** setup with filtering parameter `yes`. (means that receive will receive the message) `no filter` means in `normal topic` w/o content filtering. `improvement rate` means how much network traffic bytes to be saved compare to `no filter` mode, below is the formula: + +$$improvement\_rate = \frac{no\_filter\_transfer\_rate - reader\_transfer\_rate}{no\_filter\_transfer\_rate}$$ + +- Publication Frequency: 10Hz, Data Size: 1KByte, Count: 3000 times + +| flags | cpu | memory | tx (Network load) | improvement | +| -- | -- | -- | -- | -- | -- | +| 1/10 'yes' | 0.40% | 0.2% | 11.49 KByte/s | 90% | +| 2/10 'yes' | 0.46% | 0.2% | 22.9 KByte/s | 80% | +| 3/10 'yes' | 0.48% | 0.2% | 34.28 KByte/s | 70% | +| 4/10 'yes' | 0.55% | 0.2% | 45.69 KByte/s | 60% | +| 5/10 'yes' | 0.60% | 0.2% | 57.09 KByte/s | 50% | +| 6/10 'yes' | 0.69% | 0.2% | 68.49 KByte/s | 40% | +| 7/10 'yes' | 0.73% | 0.2% | 79.89 KByte/s | 30% | +| 8/10 'yes' | 0.79% | 0.2% | 91.29 KByte/s | 20% | +| 9/10 'yes' | 0.84% | 0.2% | 102.69 KByte/s | 10% | +| 10/10 'yes' | 0.85% | 0.2% | 114.09 KByte/s | 0% | +| no filter | 0.85% | 0.2% | 114.05 KByte/s | Baseline | + +![improvement_cpu](../img/content_filter/improvement_cpu.png) +![improvement_memory](../img/content_filter/improvement_memory.png) +![improvement_tx](../img/content_filter/improvement_tx.png) + +**The bigger data it handles, the more improvement we can have.** + ### Specification #### DDS diff --git a/img/content_filter/improvement_cpu.png b/img/content_filter/improvement_cpu.png new file mode 100755 index 0000000000000000000000000000000000000000..426a0e0e64701ffca4f73f906e142266f14cd085 GIT binary patch literal 22632 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 KtoZiOPk#c7>%S%d literal 0 HcmV?d00001 diff --git a/img/content_filter/improvement_memory.png b/img/content_filter/improvement_memory.png new file mode 100755 index 0000000000000000000000000000000000000000..fd9e9693d374e1d3e991e754aa7c85c48d170a8a GIT binary patch literal 22936 zcmdtK1z1*Xx;DH31w~LW009BT4nirBQb|EUL_j)Jx&)*{kx)bw1C^UahfrsZ=&${pXy3V@Rb(K?c^t7zB1VPX% z$V;md1f@4YP;{=M#!m!mTfgCdR@fg?P+Nt6xvx4Ofd9YRR{oqlL98<*|3i@=8E=Lk zia5wlP8=wNGU<6voK#C7??C3`a)>q9*JJO}r4nL0Swit_UQ{r5aJ zmrQtf1V*1A2rfcF`ly<7_)wdRj@sm+G?FhNJf zMgAhvkl4O$+qTb#=)9%zFIPW`+xV?~4Ii-{zy7hAS_;42CSFd+S`rjO^?{ zayr-DxA?d1Xy?(OpI5m`zkc0(@DZI&(WLr@l#Cx0m6gYK-tDRkVw<$~nrzUhP1lz+ zW0sLtTZfzCy6sXPdzi3IBTGk#mt>k=5$%QzcXw)TVq_Fwz5Ht*nst>gty)xcbyJ0k zUB)juySlzAD~rCaKGk$DG*ozUeL%o=@~$dx-@SX4uuZ$Py7~hV^|NPv(@PdvjVo^^ zIz=@%Yi-}LBU&+(=l1*W896ys-`?J}o13!AcH!aSaUM*~xg8d^hL@N3;p4|K7ENhy zK7L$D41LL@(k-~`tHa|TAHVC?mLqX?DMfD6G0IUAe8R$V*hOLdGu(r zrKM%(_wTWn{U$%hDn1l-+$(x{Xw{iBXR=IdDMyN?Ie7F66HX6?>U$pTDE2TkH@_id z)of69b!E53@9}v~&zYk`cVlCB_|a{?x?$HT)5&bc+82S?a*+Xnfot5|-7_w{XR;ge z=kzR%IO4>>!lF4Mad($;<%dUyx&{XWzrPRV77*BIW@d)t>U|csuc&xjT6zVR&ObL-WPYl}hDFePqq&7eg~y8*FBlmZym7y_3JEdY zxpPOvp`XFs!()(MiM;;3d-slhHHq4~e?J|!+^uVgiF-bO{w&ZN7aJR`U*c)nmOpvs z@~OJVf)=A){+zEqexz4WP{6hO`1{kW<&@Z8eb{wk_u4I@*GfyJQZzFuz2;gvZr{D@ z~_u|4_&+F?O0&d(mhHJ#zXSmN^3hJ?L&RTukkM4@E?@FcvTG#UI z`?|5-{cQzKMIPH?m~Tr-*RL9EN@pfk$pv$4Qcu;|p{b=syJ^#=t6ZyIxs4Rj7sY@$SZySlb!nKzusbs3KnnTlGPm*eB(W4P+$Q<3@bAq#~!!^Vxz z#zcLtUR|+k*RJTeI9c}hH8r>>T$I^%q}7G`rWMsPU{MsMk+^2mTuu53C~Q8;JD#+^pcX2 zt+{r`-N_U8>J{bO)Xy_vBfY)UoSd9vc{w@4MCV80j@OF3MbG#>7w26Fsne$!Z*fZA z8tbVlZ){W#?;9Roi}!F}T9{_F!1^u5@iVcr-+cAzShizqY;0M5{YGxto6eRtkXX(bmw!HP9``@aL1=1gQxV}25rbRO3vP|#WD?#u`sVCU z?fa^~yf9h!?)`g1Yipic1^M~rA124geV#t$#>V3_C?)C}8;#ySIKU!g$+G{zfk6*? zWfZ;ZlK3FDuV26RHzYHQI`k7>US8xeD=seX4tJX#-YOx%fd!X4dX!?tQHGqhJbStM zS$wQ{S>7pp_4>#taW|$?A1PhVefyH*-3+BCbkJvF;tyW@z;eykH##?$#fO^y7;fKS zgod_uAa-+uo9>oTE+vT%pFU-@yU+(ovIj)gmzy+kNK~UhWnBEoIzJw@^m=J=WGN;i zgQ2G~$jwqbPiJlCQPX5)85v&@8fONjn()Iu*bLm<+*B<&HdT^Kv&zzPa@;&TYY9GV zxD@>ojzbqecn1fsOG!=LdiO0VOv2>_W8;ROFU;!VTt~iGH{M*@&+vn4Q8FSR^4*b< zLZ7#HclE?ac^-3hb@dr<&anv|8nT@E{kxGZH!Btgits*UQf+E^#N)TX(9lqQ^`iI* zTU)*dJi0efg;63rrEqgma7LvqX2v(azj1?BC-2hA#l=PQp5ESG7I9Yr*2q)2z5=In({!HKlEeu`MZsGhsCGeu3oa=hb5n#jZragk z6|pHn#@fK^O~m@zGnp9~QkO0rG%_|GL&*~sv8hiuosgJVHa|Nq`0}iVhQ*3U@!$LV zS79q!e#tnR+UvD6r+@z9MWfNqvY@o@*!NCOPAR$tOt^V+1_lOCt8db?@DY`jmGY-f zHHsXW{vN6ylb_FuwOdaf+C-tMFJD-!t*udZ3Xe2@`lQmczwh1seW%Zyc`C%jz(B;R zUhk<24m8fOZu=}U&WfMx+qchs>Z=K>lL1xfK`eYYO>3ut01o@~_ql4Z65@7;wOf-i*iN3%Qj^UI5i zA77O$PV&yo&Kmxn_<{CX)tqfH_F0j)t1(r(JKJAfT^;wWa&Dv~m_yu^3uW|x_RH63 zVqX`vfzaV>@H|D#|&j#&>%yvOE;k_neLG{PANCdOPid2M>-l zrRn;fdvS5Kudi=#8?!f`RkJ{LCRr_sYZZaa$w4M2CTnmyuO=oY8eF)rgKUDYuyq@H z#fE#da7J(3xUu5+@#9_hHS}D*4W`zR7v7cKq_^P%P{W1|8=}v|pE{6tvaBU#h|35bZzQq%NlI-jl->Z+|_v=b1xZKS@(YV`gJuE6Vov%DR0}~6K2sk z4#(u>1GI`z;#Pb7o?s;Z68(SG*x1;s8=Lm6AdaDwH@9N52I}t6%BoUVR+UztXX%l3qkqbepIsD@vKwz<06i&4(^_2J#k{;+(S; z-th~VSeH(*eOpqMhQ5dIm`Hld4Pq^n^ z`cB)NWmZ@J-gG^kx7X1&Cr3Th66`Xq)Kt~P+m9aY@wD0dgL-a1{nRyVa{aWlK*IFmMQR+y#VfU2|MuF9n$NdmYJR)VKJY9aJ4wR* zs=vO+e~T+@U+tZ&k?sdz_wCZ*!lEL(Z*T5U_obbCL5;m}B`Am{q~r zrvb1dn90kXxcS+IP*PTwJAZz=k&)5usHkA;w*0MJTm%kJvXdtoAn z94YVU;9R+KWq0_mUza9^+t>n`4w#STg7tjKwqQoJ@mrXieu`EzQaqQITND>Z4Rm(& z?Ac8uyrX9m>P${AKIY(%HKiwpzo~s8|0z?i$aQsH+{q15P4)GwPMtb+42bsWRC-z( z6I!b;{>Id@z_#luAtiEo=wY+7nOUL%uGO;TIDz{|qIvZ|t@ zqC5QCxASH1-knHDNwKVNCeI(ifd8&bm{pERN;>f+&puw|?Ah4K<_VhrxRRePL^;lm zOpnJr;wis?i~jZN7sIAaJ8o@eVUdbfkxEn(N|Ke4S*f;nlckjvn@4M5p;&_2-rXB% z?NU$)oPWfIK2h5{)@+e}G*OKt7oZ=^eJfV1FnD)wkBD9OihQS$w9`4ypRd1v|9Aj|YE0K@MO0@|{K}9-X3k5)rWlI8AW4_`se$SA2ZRxu4A{DD*Dg8sWHq3$eEH^7Au}_tnVB%2F2= z7DmqGMn*>R9XzOdWcbk`6WiHe7shfWBqU}48XAUWtKYr5djI~W*4Ea@nTI$R(lu)$ zN>;LO-hBP`Z3br-muQW2J^2$Sj=8uTK6d;#1yNR323{kGj!Qw{3}878Vvt5BVs-qB63xeet1j%28`kNeic% zEeH}c=H}&fElhXF85wQ65g5pCQq8UuCY0L#!kxS>UfKwn(%PqTJ-;Uh18&`twX@?F z6BE0A=g!u4TRVIy7M6LtZ3hn@-hB4#S-{_CS`lC%uPZAliQ06D zbU(_#uw@IqoSYnh%du#c&Y`a_x~E!Ob>5tR?#c<`x{}Z-bk1!5DY-Cl*ZQ#(cEQBW zPyfBL{ra^uNwN3r*(2gU!v`EgF8$o}2o<5{wcxmM)22l6ou|TAX=rF*(J#s|b zDl$Gke)#cG@?+`nu{tj;H-jSr%+Lx83qO1IjBG4`P?Oclii+j+iD$aHx~`mx5HQ*5XIXaDtf^^Y`mP?Lpm@mXWz`j18=^dn4+9P}1qsrz!5ASgEb8 zO_chsVOG)6q4PbqwL0_VOF!KCdna~KQc($-yU+d10Y~47BP{rmev9bF>5-1Aed&c) zff5Y?a_Q4z|6_HAT5|P7ta<&QSxUZZbDH7+zyTV*K~!v+gyQi~kKU0}RTQHTOu!ee z6crUU=N1)-pNf)bOJIFrQsZ~`?p>A{oZt#pue5VHKWj*QHvZHuQx&OMV>WCw3bXS1S#QSA*XVN?`n$AiXyKso4*gY9K?CTK^O zFJI;p5Rg_-xZdmx*oUR#$QudSp?LfDZEpbm+=7C@9>=-+_wJR})}Bs{^Y{0cjR0+V zDig>Q>~4{BD<@}~dr7hU_3ITockX2Ek(HGdo#TG;{-2w%Ow_Df-PlPkFsadriH$a$ z1Xuf~uAZK{PS5MtuRoOZl7L7cFx>3u=;-U?Nv4V7KOUGr%i*DB2tPjL_$w#oMr zp7Xg{2_&L)W&AOJpcB39+O=z?@87Q}a-BS;s=6LDzk=-`UR;~+Xz{wLii#kWr2c+W z%l5*}&}t-AgO7)I^vSwjFob4Nfk1~#@e#6v*~CR{MT+2`%|9z2L~8fky?=FO+vQ?_mS zj?N2{O|^+<;$54BycXSc@*P%xd@Oi8{#3;6$jCH19o&H!=AiAuSFZW{bBl=;wp(GV znAh;?70!Hdg@TJBUtZ`k&T-fV|3q)SX7%c$^73ztgJsBbAJgSTvEhHTw*4R5l57Z( z>pE$ko0}`e6I$NV!X|f%-OP3v0_LZ9WzH{OzLZv0Qq%e#GcM*@g&yn&VF;>Vw90PV zsiAY(hp}lO2%87vL}ni@ng6v0M3)Mx3+U$dojc7(WXL-y{uFzluC9&|5Ca_=qSsUH z9BW9lrP&ru0})YSVS!Jca1FKOtUD3AzPh@4bb1=f(G`(hKsEc+Q>0FupoMlyXK!y0 zfY}M;Z=T)zG0ZCWn}PO^YbHBSu_Q({Nv{4=0)Rm5V{-()SR82p8(oo>mGm*eCO_6s?M^nCC{F1 z2Z^95_oMeIC^#Zy-5LO$Z>TlzOzH#Z)MP35$KGnT1F*aO`0))M-F%YAL&)Cx;DB~q z!Nujzr+WP3x%2-DWK$5#JUUXqIOvliRn5(;?d|QT_p9jWHdbv|zn%{py>Q~QBFmwR zbXdSoDPMg;Qvkui!g2aE!#UC1P<6V%meFr(H5I|~0e33;!0!kG{o?+KhJ>a%O~=VB z-O&2Xze+o5tRK(ZhmMF_RGmR=!YXIZPyu&m+x;{6<{#a}%p54VsPn>_jc}jo^6#&G zN&{+O*Z*lN8dP*bg1lI{23ir?X%H(Q`5N#46SY0d1}$;s1#bP#pdfyiU*}P^P))xj zHg4FoDONovB}J)Fw)Wk-fkbm5=~&gR`}VEz^z;Pu{cQfv5c+wI<4EU^LlM+cM~)m} zVP%bZ_DtHU@Y%B!YuBy~ZgqMavO`{8Uh48?q1Lvxin08K6DLk|_V*{K*Oiw)Epx?U zB&4NPLQAR5G?s%JR9}$hA3SD)vOei2_n*V|oeY1#_8Y>s1cOcg=-8NG=TU)!E zhsO^N2%6YyHXd+vIw~K@OQw(_acuZ5eUr}?<>%+epAKfTq=tA3ih~Y)r*#WU#SybanCNqnU;wyWM&8=sLvNvbwqr=+>xFmCqFJIM1MmA;InBjbj_LWucZRqtTP@&JMSsILKPe# zM>c|O|9>`uj~t$t2I}{au!d$Wdnp_dmD8uMpoYXiPA5xc03)}7k?OSNpaa;rRyZGVZmD%w=W2_Iu3W}wfD#=cCY!roPNL7hVqy{3boVb}F z)e?wxubcF}f>20>Mb0Iv8O{Fsu9@$!M`B^(%v&Y}@}9m;IU)7*RY!TGg9O%sQTzyN;hNlpgjKM`q@igWT37_;ba=A$)kK9}vLfH_ z85MBYI*Az~z4-UusgaIg_>QmI+c{un-udelM#Oyo(_j@nJsxWjr(t%I`2%>PGjH+oAYCYUf?ShTr6is>V(9fT>&o3wf4O7P}N6DI-?**A=+_>=?uy_~5>63ZtcPRTc#7_-DuuQU5aiJUTvbWf;L*ef3Ec0OzbIz#zhQ1}AFS2|Q5@U3o`Hq8p zD7L_SG%!+*tE#G=Ned*uvx799H$dt`2@g^AbiE*jyE~)t9fF%juBYe~v65)u{rAzS zsmeRta;)J6Fl8ow)X@kD36T`=SoEidysIc*X{Z1ILGxOs$cS1t0LdR9>afaEod+*-$oY-(dp3D2WhMS6T zh6za0N=Vy@9-O1)ry|9!le+KEmK-@fJ-w&vGAzFygrl_;JP$sIyn+I0lA{g}MnpY$ z;0Fl%s=S;kLe%jUtbx;Ty28WRiFMVB5Hk&{!w-|L8`@E(U5_kDW%{Zk2=6OYG)C~@ zNsv@<`6r)4zl!_(Sk+|v>(4PVYtWbi)^T$`l`Rp%V#f5HKGb8cJ-6)w>Zs(fpa8}mrv_}YVq4%GsV$!d^o0wtGleNBbi@wiE%N1Hi0D6wld}bLOBA1A?T}DPVt(}a zJXS-*d6Ww~^%_cIG!P{Aqtw#k!XUj$@Fn;F_4W0o?d^J2t*9wDX4Yy!UtgG%zkRDf z=ML6k6eQV{(lTX&dsq$&D)ao?^>!a%|H47@O;6{gqod34n7d5JDZvi^)RJ#SWmOe? z!BfU!hYoGHc=2M8tGF`Y)PE)^=GK*iYGKt+W-`&QUcLHDzT>`2_V!yt-$y0M!U?5b z%N{V@?zYa*(6Bofa^W^^?utHfw<&2u!>vrbdaVY;%^NpVTjKwYX&Rdt?w{~YN!bqz zY0S!Oi_tP0|C1K$PUQ`65%Y*E()JiMG%=xpdvovJy@a4pkkPWTt~+x)=bo>?WxT1b z_A4kT5YfxgCmHOPEe+<2vtcKoNYs{ic@-}H9-R60o|m&g&&Fm%ZZXvF`t{ZDWdtgN zZr*g5l9LL}{;}>4uiy_kAUaTDe0u6rRcZfKXc=PS;uUNnM1Ziv%*>2Hu0C|U-kPZ3 zn>Xo#UfjWXwzaiYNj|5p?gz@B+^~Q5ZYj7V@U5<+K$Vwvj`2>;jP;mDhhQoDWuDa? z@+KJmJ33^(#2-2&inC$m&CQw_1{8Xpvlnvn^NpZ|W5d6~QKy(^Tx@=66^J69;E}4^ zw)yqHVXkS~2wq6nKl{&_YeRMQj$ON+CMD6LzV!hPCrVS!y+HrEMV3Z*H|TL_ zpMK5}2I}fe&^-KMQ$?Q)6Eb&%>E;y)W>0SDiyt482AjOHa+3%TnrUrd?;VO!Fdb!& z@rrVk2u2PLy^)vD$+G*HdG*{a#ev&g#(NFh3tc9yIVC;CDuX$f-mq@nx^>m+)hKT8U@`}gm+CG!lWDC?QlZK7|P$;_5?b1WmlykFBBU6~eL5b`=x z75d{@JCRmG}N5E2E~^w)KH!ww)w(2FRQ6Z-_y8!{aR`xeZYxRKpwL$;`L>S#AQ=MDv#~*cN6=_uigIbAs|kg?q*88Opo-3jKki)#tlj`LYO@ zGPq6-tRzG(eOm>bN*bs-xwaH%;*^d$ItoGr+^)a;o(qDk6o42$)Wj-{49gIrLSIQhjm;xu^ z3z;dk!c_vHq96c&;ri7t43M{1eo&yDG7{JwGWAu!5E%I|5;t~uEs3Km6U%g9yoZ9(2OHWNBgKa~gTv0S`cidhgywIEhpQ061(UUo5tNHXH&|gzxrgq!9$RCHzo=xXSeexvJ&{^4jk- znuSxiPq#VolieL!9jWLB|^UhlR1>f(#4|DF|Si zSKy3M16==mUhJBy-p~tSxxYfp3AYQ$i?d<&gN+BUdQ8|crtO7?cPc&fM)WG_<1F$Z zq>S|D`z723Zhro;L_JPibnUn_H^I7jb5~EWWaY2#?`w3u8O1o2NJnAW$S8%_f zi?Sd(LvkiSkcz_y8&m)+lD8icWlt5S*J}{O*FQnDNetEU(&|oVs6U83H!2@u72h|M z$YS|o`mSTcqVlWi-Y^>u?H<_6AQDHwH_|vHbRlcp>biJk;iO8qOAxKMw+HFKD{h>z|CnzDC#%6s}CPiPN&E7@3rujbyrw}J-fyR zsy82hz4b?gw0<(VuNB;Tfjn?fjY@OvdRVu#W}*F30GG-jN$~B`&$y*{#=jipw#`!D zAE}GX*SJTNA%(_P2%T}V^aJ;lxCyk5@+&@tv zq3HcLAI8xGT&~d-ZbkAg!V?aYdCkhBWIhu7bfvz2$F9BBmX>tN%F5rqeG6zJ8XFs7 zRntI#p&t%?_%Hx&l@WSi_epj~kn66_PH)g1{!tk1UBG9gZndm*VJE(M|K11rWN(`I z+whPpYz{$8ER$RuTL=AN%xl#@i(qI$<-!&OY>VTN9>%cMjDCEMRd)COmlj9?9FTu& zfe5<&FD#JlX+^+rEF!jC00p;0LMQ>zM@MZ}P*cBp`*t-!vMg*O!&lcx)Q=(qn&Am8L@@X z3v6yI-@rReg3j~?$joJc$AcGd+qsjP#2naKq#s*fuZE29chTjxr^q_bWr`JAnvGg2 zLyq7M+CY<@8~uizN~Q4b$9}{|Z98&gE|W9s4@AZhL_9<=2=v4lI|LVjh(DFif?vYo_-or1S`jVWqPs|nA0l&v-q69HA zDoAk?JenBb$6t(50SzTGulF;k?nU}OIAMvWr56E4q<{I5YjHA;dCcc9Dm`U zczgu%6gSc4dd6!ctI$ns(fs#ozoa8258Q||DR;=L$&&A(GeCSDU-zHw!$W>5Qq2DLrzTaq%3E@2{)N^Il{dDwA@l+$;vo)pz)(z=8 zd6bHZiV94mQ74`MlyTWvM8cB`I*>-1PTBo^8f2nJDO`jRFyUk-*~qtj-UgTzy8j#{ zI1~D^nuZ1yfnvvZ;oZjV+qcUXOD(^M2T&aS7M3J8!pkKKQ*6W&;BB>EfnOw{t0kQjU+s`zW!C8*;Z2OH-LC2?Uf%nxM=7@T_`g$6;Z zF#GwhfLbIJcx282Cf6V#hxma&@BHH22!hen0M~1vwUO{2f_y?V`y(aw5o35{-QoGh zV)LDHZP*L7fdJF4E-qc5oFwK(91Z$y@|3eGbp3#vH>H)7=zfil*QRO$l~ zgaj$zc{t$&4UNBRA9>SJm&q`!=fb20lC#I7Rh~R~A{Bl{P3_qfpaS+}Ib`g5bJP=M zt9D3(f3JvX6m+z-$Doo(%ncp-($cc@JxmJf_n(#>B>}QC`VWXJQrs;DCy`JYnSvZ- zh;2=x7c!Je5C}MDS~T&1ju^w(Af7OCl+5hSPi&h04z z1t3OErh5&s!Lc=@UR<2?5;OXL+i;U=>G50tjSZ(OPLTm2AlGRmQvF6pt{oMU{fO3S zuz?a(p%z9ZVbWv=GGC+}=rG*68G+<4&o8V28V1%^8IfQUvh>C)+C8Rqv&Ys+&NGO+ zPIyDKBSVSEKp^#E`1SdP$;Ru!!E%W6Rytq27*}1qXUBgoZLRW#kTiojQf${ zvKDK6x3Ar-&&}#~x{sF8kQxK37y?`CFt@Okmp8qA7Fht6BbQSu&mpBPKV||(#lpsB z{OjA>fZ$+%AP?Dyzk(S6f}}*7IxX`z8;`Yw>NCeb>4M9_3>>P?(kp~FICVnMnyaLV z_4x5)S>~J1b_b2NlWnm=i*q@PXwQbQskYec0q_nwgmAya@K# zCouJr!ezPE=7@|-mwr}1g!SO)>966>tl54-$&He-)NgG}sNC}3l( zCD0S47*^m*Fp@$iI4)umyD~3E;L9UNN{2lPvwb+kyz()yrg<8~bZNYEwn9 zIK=0*WceT`bClh0V+p7`exBoHb1Q$;<&7(bLPaACbeKot+Kg`9pM2<|ZN!+sn@T1^J)T)_$6mr4}MX z7V|s9(7RyZh97Y{W!w#oXK>-+CbF@(7MrdpMex9VqE-&ZE+6VMq}MwT|AQqLS-@V* z{sJ{-tt);(q9B9cRMd1*aDCdHd*~lNeAr3SWK_#AqagCjKa*jlP{H6K=h6(##p>|u zK%-r_%Mg8he0^okq>%Z;fUJ~uC>9*(|FOVD| zD+=xunTZA;=f~s~NSD9K3KD(kahXR^nPMFg?>K+qLKiu&_BnP<+^Gm!q({;FauWa4 z@Scqw{nSlOMfK+VLGWh8^!GH8UsYQ48521Yl1YwY%+8Y231ygnyn*p15)sU^lf65J z`I_^FHxMy0(fXk?^x!*|;<^n?Oq%Zf-G{@9>bd^dkp;;JAwaSy47M3U91A({=gQJ~ zgXbg7ax#yJT(}VLW}2hR_aZR8tiYT6KK&K1|392_4Ou}V((;Oml`!#;Hvj~d_pw(F z7rDa7EnA8oBe{fWLRNdvr3EJvM1g7hVgQj$Gh)I_&8ix>8AD6;95}dY|3;KC@B810 zDApGHO`SrPs)f_BP zyYAPkvDk*w!)-GdvLW+ZKMQTibuzhEP1X7Q!g~fLCO^o?$o_8Kv12842w;O$Cr`ll zOy@Bpl1QOa8qYyGCoLJ|h`NJ>+odo!hFn-68X4E&!{@Bh;8QHeZ&0*ye`58K4l4yP z!K7ReIjZ{o-F?!4!CA|0S+V@-@`rSp{-wDUpL9-FHwc>!I#sqEz!JNdvx?PzXibe%KDux)zMYw|;&rH1x=hy(; zt-HJ1HF(QE=Hta123^8oD@D}raQr84M?+1`w5WGnHl9L71EV?DNWUIc*bi;hb)x?Y z4l*KE*X==XDx!e?XwlKLY&tkV9$7FgcxH?6-o3PNWS1lVIE&;A1yn)hrK9hy0Yw z7>gk^=!WLDR%AX$FVqyY?1dy{e#%L&zbR#8ieGo)QHk)Djul3KS1pV&b@b-#+bhAr zHTr2bP`Z&-hP=h*HZ@e1VOY)@?uLQR)I~F;7_(%Q$vbvs>?W3>-9?JDx5QQy&8u2ZR{*i$j zVLzSX`K9K9xrE*C=YxAVBR4au3CQv>)~oK@#PIFO7Axkf=1mQ+7+!pI$X>in`?dAF zVyt_q&ZWbT6|A&d^0j`xjcifd#`$^GrdJ1|J_{W`T6*fo?ip`PkM;8{?BrK`v^ipK zLDb*=;b3uY+KBrkUzB}^{h_nJrWU)T&x5c6!T$_iLrbfsqVfb;0(0c=LY_f@+#@Wk zfkL2aYMKDqT@WC6ZjUY&VPU#tsev5XMGj-{wr$7I;2s}wN-N*d3T8(7wr}6Q{WUeE z?&_NVVE?)9p$B+oL+*V=Ys$Cp-l<}PhE-`D*G&c%-Rw7Zcksgb^SimZdkU)#FaAIEWBSoEU-jKAWnu;Jsx4Sd(5rp?!27-bhl>7+XYlDL;r0|w^w-S^D@sN&!fgnoH zukyx^b{;2I5Cq?5O0NIg{-g)dPoxuMWMua6@u>ieHzPpd(g(xz3|Joq0z*PWLs36# z9@%5k@`8y890I-Pn)_KXvJEHXqGWr0{WCcZ7iqHHsHogVk#(pMpH7I2t2B&g6kl9w zLQbG%x6BZImLcmum*ESl1L+!oc zd(OlqF69-ay0ih zBY@`OHH?ml*(+6`^(~dKvJ!B>_kvtGwK;}jScXTx<7LYw#55u#Jen83TzsMMdojfR z%$YhF@u+b#-Sna+U+&*StP@`a`(IdmGHJ5C7&V(?e~Fj}7p`w@-Jjerz-OJUl?|pG zsC7t0L=ymlJQxrOxsn@_VCtTOhB$zE-Y`jf+f#? zoIB7~kW*gRI694qsX=7G3Jv5Hm6Ym{Cvog7rGPj%65fLeRV(V_7z~SFSZ~|gJVWuv zH~wQOM4r~n7aX4DF#x5d-+WLSd7i1v2M?GqDFEI6M@Z8;T3S_S=iK7C;UlTK1?nhU zFF7sfy&z-ML2`SNrdyzATLhoP#m#Ns{{2HC7C1$@I*0L5r%v4>bN8TtnCei2BVcZ7 zn$fYzojiIVGw*6@LMIl2xX~7$d+B5N5pUv%1lS@+3F1BP_~>x;$^gJk$oJQS0nR;! zpuq}`jwf483>Sj423k-P%gob;c42A=z>~}-DXDq}soLF;2yz?=P-Vm$EY?8AQ zh0Y3xyDEq+9yth8@Z6--)U!%TH$e)FOZcB*2C={$0Jm0{ zG5REX&e7d8@ah)I)@_;;^81Ohtt0JWHi=TIiiS(GdK`IhGDvpkMyD zt1L15_AtsrWIzoip7is7V{!g3bq$^MWV}5N?Q119^B% ztAPo$gdc+3iU_$y#f?qB@${H`j~^$&ti?kITKe{DWyvc(*pKVH10w(-J*dzE$i%&q zFoAa3j0sju7ENMrn#07%2lQ>uL9Hc1H^U>1^AFf59zNCf_I?eb-A z4v)Hh`$@_Cciwj&KB!4al^(8AjucA-#j-#gnw8(^8XiEBjQOg`pDh{~UBs#RS_0@L zKJ~?z6%XuyiT;cn6iiA?tVLznqtFb#N@@aqQC@oJmidU@XFL2*EkdLYud&lRj%#ZD z(DW!U3IYL;>bs90vxCX=yJLq8iY#+>FYa+eYikNHn7>_MMGRz6#gJlUhVZDLv*}e{_Q+e#B$`5r-PZ z$qZeemCwK%zaxWFIOa*vYC@jj5kqqllI=N@nlP;3cd_4^`~7>bfIz)OUll}`NyIUt z4izIz%uuc~-7fOYZgMKqr5!GEr{ zFKSXXMn8N=q{zU||1~y-q3?)tXI?ABAR$=RKNLU9H zrm_bI1~zhV3}@J&VtG^t+ejaFn@Yj>Xv=sb9#HYAcW(W{{CxP7V(BA`9-6a(ozF&LAF#;PjdHed3@Gy?Axr%Ked85#I-^;ZrPFw zspiO##fz_Sz%O63l6n`&P-a&@wYY9fl)e*78GnY)gf;+&5FR=Kb zbjBkHVS!xSKu1Z5$4O)k0Ol+Z9n0^1Y(ZWUSi>HGW-^Gq9S`)7%4xk62$3cU_7e2x zJ*cUV9zD7d5MX;*o804-KPYU`BtC`n4%0u%_4qfQi2STqwW(2Ba1b z$ZFb_FOdXAr~(jVC)yY<#>0?5(x&4oeg9l8IO$L|LMcj7Va$ zDLie_m|~af<_s#2x}bXL(sMi|;65h2ASH@m&Yd8JzlVfLL70FE*3g^TsM3TccEZna z{u}u~qjzuK%)C7ep6=Rxeb>b64a(t8r@$LvRZrd>#2-7eN~~e|Z{l>FUkY52Ns}8C zErqlT(%XPtQ15^r{DX6k&;8@(pURtboI4gJ*86sqcPN?V2ziE+m!G#DElY8Wq^Axl z-6f~Z)?F7K9$wUo0Z3@5uip)*hAaP>|MKI-GZ01`@dz^CYuB>=#m@IL?8lp8b#CY6 z9PXg6+FYvGiKhjjG&d)@Vg7G)P36jeCAV^P5!e3)5bT z8u2@Mv$<7Rq^xz2;h(v;?NHAa#d?yMP14J02ypA zs0v9vo{dP_!BL4r!e97 z?A$2}usF=~{^^JC!)LT#TGnEs;T!IGvyIoB_PJE`1&q(;1mi@$H_GhSU-})&wr`x2 zxmtEYtyx znBvET1?*p}k6w88 zkKHZ;+<6$^QUi|)Bn`k+{SrMq^(MRE{g?>wNK$$_2K2)5EW7W6gUM)!=Gbt*CMVAV z6BH;;u;8%d59bfESArZq0ksuA`|S}%ilV`1_Z~WQhCGWSUQ2E#qa<|Egok-P8fOQTxSvwaohN(RgM`UgEZz`Y&I0+t^fvp2RKB&dSQgkC^{#riDDsmO`+I z#`2x7=dN&n1gWPMOGR!cXkkei87eqwBtXRaumC~U!El>s)VA3pBJyQXA_R%zw?>({ zd7?Fp?Cf|r=3YFzu0GpBquu6fH5hoBVY#0fTx4{UPY~=TTkUIp=I?b)_DcWA$Eemx9#0icQ?Ts4`_t7YZ!b>ioxWo210nIVhp zS`f~AJ!V|83KR=sus4c7cDzO4Qh=_U54hzfK)`18qY-={?SkYcVRqge`g0QIyq?S|H2O)M3VPcg=RL4Um6ZKMGnV7BLiYY`rG;@bPj1gvNzW5jpr&NC8>kunpu z%-M725+PYx%+HKH7IS%yNKY!#1pT*;3^Q<6tt~x3N90ll;ZYhGd(4(x#AMt}+>RcY z9c#w{YK_I_hFt*iJERLe-K$N+dDNZM00R@*!V6&CkxL_`cl%7Y3zS0TqGI-gy;v-UoM{irHIN; z@!|dZIy^-(9+x`^hffs0TA=F$m_;!e%&^8BP6MPX{jA{aB)Qbkb-ceYMoN6);VH0) z_8vHJ5-f$(8S))|d|rz=CVdE}oi{dZ+<1Oz5yzEw-MS`}`sznbteqU5Glt-b$-s^9 z*zZ>u)j}onsy)dnX%fZRv{M1JVJ{C)Bci-12+Eit>gNh~^{l#jTz`LmRFNc+MMKF& z1T!!*#{-UtVwP*;QO~O}*(N*Yj*aDvswShk_x&`A72xnz- zcubtO>L}I?arh|M^u^{KuHPTEl?SEkOH+SSdX#nEccwP4r3Em$GcGQ9NcV3GtoRi; zWd`};5z~InCkQSiLpy=nnNRk1L>)xZ_Yk%m(3v^P-oIB|nyv97Rmzi(1r!iyOGN{o zgj)69Jo`ilB)SxU5YsOihOC0-_rS?P%la~^@mREkfPhulQL0X@cK%={5`Y8?F&@o0 zNimp8`SG&Fx(-Jqxr)P0Nm+dIo;99z+b6Js@VpvoI4X=1Kzz7{A)WtYvUcwh;hEbe V8%@tzj5j3|WKKz^9W%K4{{Y~`7#!0VPEwlu}UmB1kG-3J8*lN;lHo9g4yx1nCBm78MYX4y7AJ1f(0J z8>HU#Y=7sR-+AwO@3`ZR``2X*hXbCypZLUDbIm!|6ZlY3nh5_2J_>~*dLSdIj6z}i zqEJ{9=WyXKcX~%=;J>pD_Z~bs2S1+Yo}uCQ^R_bT4k#3fKJpJMM=aY6{>bkrrRMn9 z#@NwC-`)sirSE8KY2#>VW^mQn$lk%s#+rwni=CV8s;Q%+tsn=-e;sGHu{Ytk5u7HA zLS02Yki7fEHEDU&#q*NW)ak}R7Ntzic`WSfmn4YN(D=>_FBtw|SRuB=vlssdFX-Gq zXoI_%?{k=6NQ<*D+{DIu6drng`(`rLRdM&><*qf7nmKl{hoqm2T2~JbT-RL-cq)0; zJn!+^%<&W%auL>xOTy2He?ZY0H1bpa1SN(1Aq4*|@@wKFtV^V%q;@ zINH#eg9?J9WtYjt;V3CzI`%(sbjtYuH(w4{?lvgY>Pua#JxvJ{{c|q3@!LqbL;he_ zmO|qC`nujsOE__Nl|duEj{D+`fHi5!8Fw|pdd?);dy+F@NAqH*EW55_Rc_a>UteF$ zPNmSKqo$UVkvZowVuy!EOfymU{LGV2T9;9I{j$Lnw^~|S^u}wv&f?+<-rkz{>KA{< zg2FwRJp6l0`w*6-rmT)uKF(9Q<>}>ho`l3?e|>Uh zZjQp^_=9?p?^NGFZQ<~We6nD4(`)MK`FUwm(|^w35>9;2l)E8(k%2)qo6(nHDxxWr zw*A{Hg3FwGs1l2TruO#W#lCFattA2ig2kS+Gb_JJ4BMhu&YnGsDlqM3u(!9T;PN`rDQW_e0OG~!g+*~Oi zjW3oDV2ssDtw(jcSQs`{&G6MEwIVu=(|t})p5*H!fB3*QH8mw8BU3gv;Nj->sK~gJ zH6~TqEn;K3xybWileKF|PD$ysZ-q|OGj4m^@!q|ApDIpZO%5bIg2k5$`%x}|*Xjyf zolWyg2#-k@r)kgCsp;v((aOC$)nfw#r3(v_HkQ29g@uJ$Rj%RlDITFYIsagvIV0dO zM;In{!tY#ptW;`II(+{8dHs{4166I^67znGHf9EUM%dR4vq^$ZL6o|l;q2NKJ(+Tp z%g#a$^Ib*_Xj0+zx-)0-@N@^9UDn1r(AP7jE-u0=x6!aoHutB)`YN23YO7Y@xqtus*bdtVdG@<^@3N_Xo_U`-KJeK{ z4h7S&01GoEC1rbgC{k#xDiZ4qE~ne(vxta@vbCDS_1)dM^~riRjbb$1*v3M7n9eB* zjn+CdimxcymNZ`3siC4mK}5})AscgEo#j~7Wic@^I`4gbToO8YN5|U^a~+c#&GdNesT};C`?eJ9 zS~BM5H~sZ5wI5Cf&~rl=*j*V8h>fLm`u!u#usM{Fnm44Npn#g@8fmy#*1v+XBk}*6 zQ0~b5hFY(5_<^Eg7A(J7k8vdk^eozh^;da#B7gViO;1jyG=F=7vVmP`U#O`Nh(^l{ z+5P^(V*c~P;xd(D8n)}1wpb1ltrNUUmo7bdH~dB8;|HDUiUrZMDXJ?b4yH++X?DB; zO+z%HH1i=Lgx~7xgT2El8OiIY*N2O39zJ{{fv+bnj)K{7_p`hDx=7%5*IW;OqQtZ% zF;CM_veLMHcc2X>`~1g){(qN!qGbIim(PBZ!(=QIWSw<9$_gVNmos7V zrCr5JGsnf!tKl=-!k$&aRDByvHMhw|A!_ zeTscBm0H?6KWEEEVUq2jEr^+1MZ0UPsidiEGXWCwSPS2)1oMSQqU>vQ)IO>(XFFJ7 zlD0v`EoqJmrJUhKmk;*c-8d)Hnzl`8L!|GG52o3;4p`{y0M z`(EUj-|Y&WQ^5>r!=-udEvggsi`1c7sJEKI2~{H{Tv(#-8IAkU!2kp5t@tC_dR{%q zFrJ-WTWM|APFy!_Pv{Dr{qpzg`j*aqW)>to)0Op9xFeS|QsS!(bLch3hI&U5FffC^ zVJJj+isJg`*+D6k`xoN*#;(^JdmE1S+!*)~esQlpZ7XD-Es$Uc=j!`vo=~E$_~UTpxe$gwZ5I%TKjOd)ISXm4S$V@PnP-QAa;T$~ z7>y9Gx1`=<37fa9F!wm)@8vSV#wa@eKqE972C(YqM-~#^ywzp3O`*RZs8F|Z9@BDq zL*gxrFWz_MYsWIJ#7f(9MMWkbNz5|&)V?SuKp3iYeeuZ^RM@ymz`T&udv*4}ZKEl@cVs*x0UqLxG6J%~En;*{r%P-|I8Ey9Q19wlIg3;Y zC!?{GsO3*CVjiNLiJ4=D^B-@#%I=Ia>tVx;RQ=cR={ZQ4nImgu|6b!q&}i-E$dvZ8 zIZEYgb%`ut_xoxd<-j$Z{$67|+N5NojqmWlaqB!v%5Zn0nK#1R!mn;~^e?&X1 z%wuUflSMc7FN$P4IJj*XyK-&7JY7~mH*42avGUK;Bw9Hd%=sH$&tAI3ebQddc5-kV zRoeft<3~#8d6s+@T~$mNn93qf?tIpBL`x$Y`zip(zr?2QZROJBqQ0H;Z97iPF!C8v z;ilS%H3qluMVOS3DUZdPi5QlZSR0v0lSN{HZCUt-qkB!>g^5NFT2UjtZ*SU&Q7FK& zfXOz-jH4adVFV8qO|4&g?vSgy+WvqSk?UM&g{x`Xz{=k<@IzXwoxM(0J0^WMExABX zENd?)%_&*7E0js`9WoA6-?+Cv2-iCD>8|}D_w{&p&o$5EHu)K^q$K&I2gqbLNUew_ zcTM03@!MU);~*jE9`hknDh>V-mH+n&SKtbj8~pj7_{E=hD!#@)=~$qZ2-YA^rd5zV zk9knah!l(2^2SQFay}g2!z-^g=hA!6;<*Y5#78k1ZO(a%o$NCv3%O*u@BCI{qlmes zsbX2JPZdHhmQql_d31biHeMqVKtj*Hn-omR@jY9K{>6(IISVH3dI0SL2=rQ z3Ez{DQ2%0iS;S-a+3Csg2d(l503p5apR%F=XWY$JOpfC=!tc*h%;s%c0MW+Z`}M1JmzmvCVk>#|Rn{nO`fO&m&5+iK zMMT&iWDNB5^cb{DNJs?#%*@ERaPgwDWi{mW=$lV(x_9-@%+E)rrs{6e*XX*t`PdJlOO2^CdWS`V(+;_~ev9W1BcfWjjHo#IfsPAu*g;OTo=~7qO?GXU zw&tX|1zc9O3J1t3DC{?;8s81*c5Zcxb)!icgXm12J-a|h*X6Z0D*f=`!w24%A!%K_ zcoF^jb>pyRz$UHKe?FG&9KVf-cetw9c;`@ur)RY=)v5TUQO%#Wtpp-80$sJ86XiUy ztiCXNPx4e=LzO{6UIU2Yi{;QaD73K3c7AF;kdvF9PxZ+%YL7vA?v1((t~mcHHruKk z-rd=092nROnjIS(BlaM(o%u3b`)@#_dB~X0)n$})Ox@vJC6-ejE_a?1!Mpd-%U=V& zw~$VMNDbrGKox!d%x^y<(>slG{O{pmg)RG6YFdC_0}@cN2Ol(ezf7#K3!4mv#jePSAvq?NH2e!gSk zaIup2Rf<0%XU~+3KN=|VI&@yGIb40$T&vK&yEG7{Bzo}DB-JYhcH5u5H6;y=D@a*2 z+ZMfla6n#d3}Bv+PB_kEt(uaAgajaP)AnMY!l?#S^4{G|jJbrzY=K+x2m2l#oAv`t z!oNOe6&VH+{1b_@{;6{H8)wM4woRd09KRg{8METi==_uSPXhP%U8NhyV7px7t^8VC z5)i*Js!w?4%F7r-SlK^FZmlhwPBFASL-Ly4Qxl#|stV5VPH7J8o+2lH4rl9-+OX`% z$Us(1_GY=^E$o;wnR>(STBWZzy^@Ys28(vWfUPr|-CYcVQB;BK?hM)e_s5i4hk#63t?4JoNpWts# zt~9?ZU&^{*(tNS}1%l98h}w#N#jW>?Qdo+duj?d@jvM3gH~;Dl3DMpO^9XzsE#+*u z&1)0lvP={Ngf*3P5^EpBV2m;^Jw{eRxuTp)lJW9qk(o<_Im%tJxgrUDpS;Q83I~rd zC-8YxLv-J#FyMwz1XkHcYon}POGOzsg#+24w@A9&q@)o|Y#go>dC;oRRF5sOW>q)g z@%wLH54XTPq&*P?|K8oc5Z#&p;k;LGHf!XUF4uo_VigifXwk)dWRv;x7J=Jj@F<&H zh43sjx#fJMiFKMrqdoE|P{oHvDz!hc*d>`MG$u2$E;P_N{t#7~bX z;bHJG+5N2c_-I}456f>aj@1TFDR4(fpDXS~epZx5D6|u?csG?4-HOC~mt*`okw@3$ z7wHr-#pyq&EmLL2L3j%JY-D=b*Y2r^o@x|Fu92kRO{6XSuKFYM zxb5Kgz}qtB<8~PG*e|mSI8zi%_PmVrx*Q}r?m1i{ngOuI|CSJC*DFUSM%TjDAxtde zN~#b&gE(}Xkig#gHfc6y0meFr@<6G?TzF!86BX9*V`BD`!Z`p_=P=8Q-FQ0uiNAMD z14Q1VDiPOmIkJjUd>3c7aAheZglN6!wC40$(a-X6p{n=AO`DDDuf*ArXosaGlZ(Nv zMq}kj4a4;LU;%2FV*L5cfGg8$(~C3D7&0S~iHb54qZ902?~W*Yqb=?m#+)xY67`Ae z4j|i%C&(R!bLaLL&nMpraNRr9EE&%huvV$znjE(~cbZG<;gYHM0 zQ8uZ(B~*KQj7L>>W?AiTVLl+Q?lM8cD5^B2j45N}y)#&n)ANLcVr1emsMF|0zp+W% zd%up8jek%I=4ZKzR0)1RIS-Xq_-9P4l&$_h#5$=@0hp&S&)du5G~ZzV?(i{cZ)>Vk zI?>K2k`wkZOCRPAp4|MWcDpQ!8cYMet~$IAbN=lwRIXU_9Q8PAH*ZXokXHW{j_UYy@ zW;QlLA0MAzr8eD@^#RFoki}|7k6Dwm@=fL!9bX(*9~9WI!U~j`RmwP9zD!y-pzD*o zH|7xrWasxXJHszF<6UG*!gp3p=Bab+hmlUeCKfucXb{s1o~`Rj7CHbPd10`S5!D<@%Xs6)DT_#ST2|Zp8f@#y+^fH`5C3G zjb<3;Mp~VEUO4ad16JbAq1`@I@q6v(rImb)Y=ikve29#!lG<-dhZfbiuxp{jPLCYs zx>J=rJ%wLW^D(io1nSrOKdN?j`m?j-qCK1>?8Z&TBwuE50IbsabG9AL7lAhCe^#lS z1mqAfMNzNpL=y=dh}||VLU9Oi3-1uFlE~e#t9Q9BC^T~CCc*SFJ`GowfPlb_n$FKn z21jc~h3wabg_C;IrFl$y-o7)6WKx(CJ3SylnD>R=bYx96G)Mx0uCtwl@OyKei9A-n zidnz7l`#5FPEG;`c@d$k4nC@|LPgTh)HJoSqWx|-=JY!T8i#)7?rM*SaNEc`MzR^r zLVaQw@8qsKRH;h|(b0D7OMpsYpr7O_zuMm3zIb}9tx^UnF)4{gSU4zEYzjty)Ee(9 z1H%jR{`WA+zusZTg@=EI#R25^#M9EnrKRBf{5A6S>gsCRU8ac^t9GA%jk+1_eA0`1 zI!E>#!QM5(vmO@DjIwqhQ$8Fz`tjeeyUoQ3e=DFHA<=&9e&g|b8dE@% zmd<>}v26;u974?(>T|M{nk3{B3bV$eSBGi}qu1R|`X5o~A3|}`@QVgixWV3{o%s{9>tQYNJ%~k3PKoByU7pNKhPvPB z@zXKy4+7EHNKGzz;)B2x`}*Ca2PUv-Lv>re_SJtYqP3o)FO@cLQ_YCt{)n2JpD!|M zr%+7dzpJQ7{4`JH1{0G%fd3)}U<}Xm5c(DcOv3MzM@0KDs9UxP~D!xj9vA_K(PRj|2!Eeu7TF3!usa61v=W5*ySV zCT8Y<`T!Ch=Vi5@pS0ybCvnu3f(&FZpL?4wsW8Q6FJofGOn=1h^?rekT(np?_qQ}@ z6us*NRt%f^W@V{XU`WVyZte*0<3EKq+X-NeX4YMCPq{oMQe5^3CS^=p_S`5~A8BD(0 zZ)|MqE&CB29NsD^RCA2Zmr49Je5WE#yY8_=Dc8a9nM=Qj=qxFk1|)vxU3tD~yFx%q`dCuyrI|E}n$No9aILl* zqT~Y^nF**D@vZ`)*%r;3NG<{R(s$IF(_)m=-K#7(47aBV6KyIJVUqETT)v3OaV~&?{f8_C`(Tjpq+SOA+ORu zsO(C>>67`HnF|*#)M>knN`c;hgt8C&r%GQIF#(;=vgJ0SIp>qH%vpyNUv6zqyn$b!m3lwY-pU+J>uy!}Z^ za)u}@rp#Yp)k;KC5@{0T3AgZ0AivCD?k;Crj1Bi@HA zlK1a(TMlwU-7I9uo0y&slXt4_voDMwhiMMVbL$&3Q1-YLdECYl6&zP;ppA1T=M)E+ zQ0=~BF!}9Ol9*4*P?3pY(U9v@AajmJ$<3|#Za$t+Gw_y|EMKUrLHa15U8i2L25h>CmFC@Rv)t(d2 zPqf%Dn1{;MLr~ze9}Uibcmd+kah*S~%e;@>jk{AiLEic{)fk-nC>=M|`wt7S9>o>| zT^$ett&K*%Ivg!+C2MuCU+rm*Y#mM5c5!%L?DMHR6WjLJt<8C%A*w?ryxR zA|lDEx?cSssNlxhUAb}Z9}V)yL*{KaX}8>j5mOD~hl<)+MwUZ?Q49;FMcQwr{v~Rs2szlF5INg(KJ0FtzZ<0nN-1z_w4Pt z6M3x+K&ppy)rH(C`_hk0nyj^*8Ofisn|sfO&)s(k0qFTd>F8oOcU>_yzx%c+$eMr_ zIRH+K*frDc|M|lW)DEmD0~JD;u44P{{1A<*;0|GeyWTob(sg>h&Jz%dK}RWPk&8pp zBH*a1%XyRze9$?dNFm6fK}C)yzbn}=J45-)btmz-W7P2=M>p9XH2*Kxqj z8O1ywQIPLrM@B|iW9H}PxPkY?eB))l%Z;sxkkmm3Cchx8G0!7c)|90llv464Gs8gL zp7geZ4zg_OK9!v1XKrUiphdNU`wwlOEwtIPz<`7 z9q5P-d*l0RGO%)eG$Bm8>+Q2C3#I^*UsYd4_D1SKI__wVWbXWxiI$0X-nV4ZHa>1J z8CKFStn2Yu;yGQ^d~zZ=;~%er0)n~?3=K%SNcML-#mnricNRZ6lgN@`eXqo;$2 zMleyTf3v2;=RHxqA@#&!n))TuaywX!fUtlJZ20+6(`>NdnuI^$H8!>op!tdnn~9OR zi83ELconiQ9EdPS7A3u(bjVd2M!T$b-t!A3pvx}wanM@yzQY0k12cquM0f`y3K~w= zSLNm)da`c_eiNYx5F%}_-tY@BK56()YqDNY*K&A;bFDQoS7QtzEE*c)oLS4pfm*HE zpCXv+h?lr`54&{4o&e$S0SEvE&IN7`f8g_g^F#B$)~8|{aSn=&S-Vl&qiFhuqtBzM zhw1ZYNM`6@0643Ig?^x!7wCP(78Vv>7%t^ltJ)%d^yraPx7+??fZ1q8iF&xCWD+}T z?HevRmm*ISZj=jeP8-NXkIR!n{{*6^<5W;kA1Qz{Vy$|QPP@{%ad`MJXdcMO9w0!A z7~n4YQ+O7U3UPx#0Mr$#{z;}k<8*-m?AsSe@nEIXiMU7oDzP}7bO84PDEpxg0^ySN zoP;Mu2WL5aic*1Y>-Rg3>lN~kDPcW62$qtR^)z;2IFlT5XJJ+qx8Xv3nr-B_*@8|1O z=jhgob|&0OhoDF!<~@R}^(5{To4O=rx9^+y46N8%oU!yJPniwL3D6rF2ik+gV2xpJ@H+EM@PIoj=z5dN(2y-l9M;`jeAN!Rfu)&{CT9D!<^{SqJYZ% zTVt)iy-cvmYVGdm_!M9MdZMaxj+w!LB7m}PX66|PGgwd`Vb#>s{K!+yH}wJ-DD&Wf zog)Ogz7>AAz-t?UNe|i^oBRAI=}cwDH7%BMQqla$_1V5wyqbk!o*SE+-}?HtYO#cc zX`J`Mz;m)*T6_E&5X$u0ni3${p&BobUiW%VDluN_CmfS-aN}7PREx=IB!opR9 z^Z55AB`+P1auQ}KCbtb18ZLg%BtUJ=bu!+*9R;Go;+b5j8IED+BL+Kyi$KzlfGn%C zJc1tM8~6^8h{cIU6vwi3IDb*;fo6@Tz(+qe?*RNlT&HDTm5_zLt=}7Igoh!e7aFSj)_-gE}(9QT+_GiURV@)bLN|9I$ zy9_}1l{@C!0o`s}oqU(?m_G?z-GfpWS#%*(Trao`n+mLkdBNJU4iOf>pcG}wOMia~ z4{cM^g*BZhh-ymS-rl{_Ae&5Vn$T)|{CTnSba+?R{cjciNw|yh^XBD}XCzBuU;&VG zq#_gKyWTUrwYIM{Ibie$o~~7$eyC0Nl(Aoe;;IVN-}cc=T@6jDuvw8Y;|dIr!#=Tny^r zM~yqEt`rf?52zH-vw$7YbxQ0OI~8WUAM%fTQh4}XS66<}kaPo2&p>}co!CaHC;EJ~7O#H)Tz-vI;kd_Mv2)gZT1x{8`NAWPvJ_ z_n*aVB)S02vwplcPD!5WGUgV5P#3U#1GH>=VN{6egw-sEz*iNt`T#KFT^LriN@uG_ zlkH#}Y>&A`NW;JWet7$TR z&LrCI=U(T_VDYM|Dzyqn7GU0l_b2>jW@ovaem}YY`buMxfWyLQWvRrj5crUIZN@sF zNNo#eltzbz&HIsv>h-+6i-H^s1KgDHAW{w1IKcHRoADaN-1bSkQt)~tI?9SVG~>J3 zFC|NU`{yWnr7>@|1inh?*!P>@F}o%2Hn6$3XVMr%KH@f?Tx>ZM0pX3yq>Bd3kF^4p zsUI~<=YlzECJyFPO{N+k;!AQuL19pu?6Es!(%RLP1x~t*%*Ce;j5acsQvlb zgWg6e+j2C}nbOiw^T^eRxrQQE9Rp{q=b|a{t3N{m-XY8^h${}RSdI+=!og^M<+RQ& z&GP}SYlpfh1cJj2UwCw*2QZ$btbdml1?d6(zZqG!t4nwd1@8chjV`+spo3EdlB`kWq)BQ8uZp)v>w z9lq}#Dz%}9eUWB8T5)u=)g2nb$YB2z=an;)S9MtSoHg^UW?9Ehy_&$vWJQJglcPok z2BS9;*}i)#!_6QsHY0&?w33hL%I&vcDu8%vxA^@AF%7>sIO0gejyNIBWI;KHIqj>* zln#if2IeZ1@DT5dUfT5a4g3A(j39s^5(ICdWCDV=p|P+e=6< znuLUYz>EUi{^*vcAAco&%aIalZDG9*0vyX|dU?Lx9i;BD;|B`Ctp7bZL|kqQ7Y2q} z*4mz?8FIY+XVZ2l1M{bP_w%XDRR}?gBPESoxCw??R%Z5RJp7{JqbA?6sBERLGYXBo zEX~gHlxpxo^pxR!>VK^|Glinz>tN|__47jC0vV%UPmTd z4^SEdxh>lu_Td~NbTQfiIf0yzyJ+y;jlkv8J7`fB7^2EuR4eVh&E46jbmC1m9<00@r{G=ri zN+*I}2W<5IUhSzB6f1UT%5iv8G^>Ks2qIh93+&{c-B2N{)}B?8oH+#y#;lOgz?|y& zjoPN_d03cI?81>zy5NK&!&@NrbpQ_NntBu3JB~l#DM{c)o5Sdp zYQ2y7!R8601x&pC`ovv`=*^%CUQZBBU$fP)h#scyaI6ZGC-Nby|sA=e+<05Kao4Y{=7+Wxq>sWSI#9;*L1!M_o+Im zOC>K9prDP74Sca))24bB`EnEZbwKHkKU(qr!0VSlejGnkiPKrnij*}n@$>80rlrGJ zU>nqf+z%9aV{hf9aBg;y=C+(hA@%AtHWclZfK716ojvrx>>3MBm<7;L;!9XbS?Vt; z=@{60{)_LMc!hW6J1`Cjo8+V{ceA_+<(-{*#g5j`Fe{~GynXw2u%fJtpC=tH!(v!U z{T~|VD`&r7(P!d-J5aE|Jw>X684j+GC|FS6b00HqtE=n8;^G5uZ&6qZ zh&BZy90uh=!-szul<`4ET{~VUuwkb8X3U5FaIpoEQJ;vkK%pn8m12g|GdxU964s7K z163Zs+vaufnOq0T1z2@tSIa&J&hNfwO(Z=@GTvK@t>5zQWh}Fv3L>}EB^#{bcde-b zi+-^hM#>uiA{)Il=L5$cCfzQ58{Wzz0M#AyOVC@vWf99Tbsd~63&*__ zpaPd4?U+9GBUP~aLBKMLSXgGLyoP-t=W^DdMd`xAZS?3xh#t zoR+^G-R%+)^Kagl_XzGlA7OzBp`2YMF_}-5cE*oB47(@e{)Hm<(zk!zF9079Y1?NA zF}A9|k(p|}jiRglNZjob^ld;6nE|8cur-cu{GTLY((u~4N#Ju=N6N*#x?uEafm5=6 z2!_b>Ai|txi$#KCroxz$bqXOGA!tEdO1y1`(3|-c>`|k(*eRcoZ9xc0rBYg zcne~paec3SHaMmH^|~xp7ZDSHxkjLa%I8zk0dQ{r?hgjVmHZZzIU-O&8G#S#gJx+L zl<6~qA4j(SuTt?jdX7Hp>({}{*fF^_ar$SVcCf}vNIH}z&2GAhO{XdjptpUu$X*YG z2j|t12N1Vt6DCUrbm|QXIic(1ospZH8`5O}mG5K7#E8QRm}1%li3~PGJl<#*5#CCr zeKtq_{hbO9B;n-2`)P>k#K6}Q6)X<63Zk=XY7yl`~9u^Bgs=rL8Md`1e&;b6&8L6z~b0@x^kv&%Ifb zxW0?<@uaGHZI$Ky=0+oBc5K=eQ9z$etgLh*03NPMTQLs3Cx5mVkup>U(06c5c6RpG zn$Kxs>9}{I$7*>1=#t!k!+EVoTHrou6CPv~ADWwRlXUF|R<~Y$Lbz_+HT}`8#!v#; zYm`&#F54Ly*ENbwze3-SdWktXY=-5rYHB4Vr39GV+S6m3fE5oY7?8e^VwkbP%~YS0 z%X$48mTpg;T!QMx0JsC4x-v_G2G;@!VYmeZTtabU6BNE|)=QXMh&=~A{`%`)hU{@!0A&zKYy zs7=HVGomZA*>zIrZgBJdS2qJ=v--FY8UDm)qju2hr=Jdp9B=ml>%Y0(rxd#&s+26) z*pns!a!y@$cYebcA?PY$l8>`(+ynuZ?7~D`SUq$A*|s=m^1IN@ugu@_bpGLoUHQsh z2iGUxhPll>u0M}BcE4uCEvYl(U(FN$>A^&r`D|y1nG};+ps|Hk<;^GKq0dIb(DUW$ zezN!F32!2FIlTx7z{^wl_zt>rv??5P2Ore|k;VhEh(8IvcmImc$~iqKZlPuAEDlce z!hl|h2HfmbUS0}lthzY*sVD9z20sBYGjYXOX;j+O&_)%XD{-t3U?X* zmB@*uLmlql$9?+#$u$v?>INU5SaK-C`Srh@O>vvM{Fq>(dT*>9y32xZd4QOL4hour z-OC6(5?~2Lk%T@e6u;~GRmkHrKQ(QRM_2y*`7^b&4xsk_SCCEaDj zZR*W{*KG_GGYHi@+hc!#Go-1|b)hyf0bT;>7m*Grsr-|{rSES%`X93d9QEIddB}O z60ll&YKMSuu5gyrGp2?7yE)%>Tw%XL!_ixyHo-a3mnMNX=C!8{C5T5XrrL6V3&x>(M2Rc=^zL#v-nIFD~VGd8yF+wWm(A+VAMTpjxSBuj>vhZ zB_kfVHS+pffAOqjQcD!}Adsy0?rrOTW-xAR<9N1AS*acqMOa5m^nP>Ku=fdz%j_$8 zaHs1)D3+T(@L~95t!t0#H|=73`wq1d3BhSaK34b0BT5o5f1%H@yOS57E4c~%4m1_H zHhcIh;?CM;ib}hE8(vx$KE2JN@ z^fV*IZALNIER8s+-3Jkq@0Tyt`a!GB`ewoU@-g3rW2Fpot(K?IcN3-Wug_`IcV6ef zSPX|(2y8e!=`Mt~%%3`90zxA=klJ$o%@0>>L)8|w+L?3VEsHK>PD7CJje5Esn-S_1 z_(A!(0ZeU$p+t(MrnKs4FyM9Y+_6Xy)=x|mHM^}0AFEm6PDURgDpT(yc@k6vl5H2r z#lyK7Ze{z12Rj!UpQ@t-d2^dAMiWSv*H*yl#i0BXYP={cvDC7bH~W$ieOv1r+y9PI z!lVr}^ix+J313XtkSIs<&Koe3U3hv6gB2TI zA)mPTZ(ThT;S_fe(;K$ej^Ry6gmSg&fEQDVv$>axt}7R9ZtU&OfML$H*hm2>t4S#{ zvHzKpe8nr&_mj?eu7dGzUyr(%K@O!d^z}gZ!Yi0A{s*$|ban(}L+;BAsA}uKeLY*d z;5GvV8u5)P7OYMPoa`JZvKv!gSeS0j3%i{uw{-=&NkEXihx4#O62J*d9trnhKsxF+ zK7oNsDupD*t_CMyh7&LeM8>qg*{5CRkH-}UhMFhqu>`VO(2KAXwHNHG8mZ*f?^Vu1Z&(iMW_<*w*RwHyKg*@h^ z65x9%k>l$|-!C_@jVd@le=Yl5wCY&xw#(?HDTHlcP=z_LKVwf|Syk-Gk!mG|Bc6z~ z+mK6`zDY#@Ao@rY&amVN`W9j_U9hA8V{Uo2C}Pab4roMXN%G_k{@bJ4-BpqI?*-SU z_Y;M3d|zNkyp5x*VsMplfFzSFLdl7N2-hs>sy8ZE*c(_HeJjHNM-a+p@Ww4CCkMS6OJos%Ne(fg-{;0Y&C z@T`_cM&5oJ=GM9=eCyzP#xvW^d!(P(-`svnblRU!{z(H0!Eiz7QlFuu^1s`b($}Hm z68G6&=$iK!8x6Ta7#f9ud-Mo2RE7Jbzinvx(T}Hoy5olO?)!2cn&)2m{z+j%W~Urk zo?_EIL&6u8x%W>33`VrI_t)-PxlO6wDw$zrU~o#of7?>aN$BTNBiNYK9jdINKOgEZ z%65fTLEe=SbCo9q$W4)sos9$q@x5ym`3Pm-FycgiDTFR&|pG%U#SkrXWFwwU& zzYAR*Zzm_-xee7dTIMzQapevR%R*{toMzW&4N)V*XPT#sUK=k$dG}4}SL(2x42LrI zW#~-!2~MgQ`@({#3=-mkok1Mb>e@(@+8R%>#cvB_QbpVPX~!2_>%R$QZ^S*_uS0EYE3sZrJf4zH0BXXL0SsS z6KLONb%3M|AYpoGN$%mp3&7FdU}eo~GnAE;1(wE-2p(~%8ozx*+y_@Uj5U;=O~d=KF+ptLtA8bUhFrKF^y!{Tq7U4(Y? z>3R~eXHc>ut~UL8|M)nK_kE#cl;!g!E6e;FXGH0&tGF40+!){G%;%DgGcXufDIUu1 z10Stge!M$uLw4zsB&ZHvf3~l2aD;&<7a0|G3HmgwQ6Nj*t#n=)EU}<;8Fh-iT$p*~ z$sm!AoKV+0jxa;29^S#&8F2KIXB2tEzMg0>L7hI;(V;_OVX1QLgr}s0b{aFXvwzy; z0#e{*KtPehyy9c-ww3l)j>%p==R(dE^8@N3k&rMl1B4TjJPGVe!8$Sl!V4PxFT$G# z5OEMlji$c7NPnU{?@?87wLs7Mz^Ia$8B1nnW_0P+))rR5kY)dg{)^PzY!a4{GAm|w zZnyrs?Bqi^Yl}^(t2W)oj})+kcoUB+x_gsoB^;ayJBPS#n>6RN3M`qJgk#6Oc~b|4 z5|mDdRx2h@@^z$$944%QjVVK?+P$=7Ej2PBL4)zoiHRK7)43^{qf195%}ZLuuh2@? zPOLJuyKA*J&C9eaG)+Lre{PuyIwOBHB!Nbh=auU8x{tCB6w{yiy4{GN{_}(S?CzU4 z7uwp|$~+J3qlcdZo7O=v)P3VX8 z;sXr`@`pSObMzt1X%GNvAnSmUrtyV33L4oIKq3BAsl>s-0b?oB5v)3{U@v%;9HuXCQ$d2=!2=e9*3>(A6Dp z+uJ!fJe;1M_5({G(yR|93%oO7Vt&4Pe`9*FKQC4kORIh8=5oiOCPluD$a(Q*p(7bO zT8XW?KbUxyOP%xu1ytrGU!V@24%L9i1K!L)PzP0DP+lG@m;tkki=)5>02R~JM20<2 zmrl*M{U}0iMP2Pp+Tlu^$7_KN?Z-_q05BvQ0tw#gQ`PQM0Tu_z4tm6$#Tm-Aa|0aW zjwZ1-KMk($IL~*JI2k`|&N4>eLaqZ`J!tD6*3zx-^U`h(hb}0|J6k3j3sm2*&F3Nq zVAXd)J~c1li4A(-=^}>LrKP>;b)-sq)csaQc=VP7kps93%>fvd{G1Qy+Uj_p&+-pT z^LVo#>_(~{(Lqc?L_+cp!OU6mj)U!UYs*J;z6+WwCKC%An8#) z-}E)8xTuNK{ZXu=Z8RHeVeB0#fwWZLkMU*%{4sPv=cc^V=Dlm@;R5z2zxTLLRBMGE zT1uxPfggb**cVk+nOU<@l$2CHE*4DNHm?)&f-xDL4V


NC#cLO^4Mq|!xg>{vZq3*!jIT)JK^kS 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 literal 0 HcmV?d00001 From bbe573d6e4c9cb2a80de4ddd00196b15596795cb Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Wed, 21 Oct 2020 14:18:15 +0900 Subject: [PATCH 07/17] fix visual for formula and table. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 4 ++-- img/content_filter/formula.png | Bin 0 -> 10604 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100755 img/content_filter/formula.png diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 4160f55a4..3483db26f 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -97,12 +97,12 @@ struct cft { `flag` means how many **readers** setup with filtering parameter `yes`. (means that receive will receive the message) `no filter` means in `normal topic` w/o content filtering. `improvement rate` means how much network traffic bytes to be saved compare to `no filter` mode, below is the formula: -$$improvement\_rate = \frac{no\_filter\_transfer\_rate - reader\_transfer\_rate}{no\_filter\_transfer\_rate}$$ +![formula](../img/content_filter/formula.png) - Publication Frequency: 10Hz, Data Size: 1KByte, Count: 3000 times | flags | cpu | memory | tx (Network load) | improvement | -| -- | -- | -- | -- | -- | -- | +| --- | --- | --- | --- | --- | | 1/10 'yes' | 0.40% | 0.2% | 11.49 KByte/s | 90% | | 2/10 'yes' | 0.46% | 0.2% | 22.9 KByte/s | 80% | | 3/10 'yes' | 0.48% | 0.2% | 34.28 KByte/s | 70% | diff --git a/img/content_filter/formula.png b/img/content_filter/formula.png new file mode 100755 index 0000000000000000000000000000000000000000..dc3ac99e2e12967f2d21f48a66eacf9772d5b410 GIT binary patch literal 10604 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 literal 0 HcmV?d00001 From 81b780815c49b30a5424f6145a82d762705eae9d Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Thu, 5 Nov 2020 18:50:17 +0900 Subject: [PATCH 08/17] minor update for interface and design. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 57 +++++++++++++++++------------------ 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 3483db26f..26a736533 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -130,7 +130,7 @@ the following create/delete API's are defined, - create_contentfilteredtopic() - delete_contentfilteredtopic() -**According to the specification, filter_expression can be only initialized at constructor and it is read_only. so not possible to change the filter_exThis needs to be discussed to see if we have our specific requirement for expression syntax. but that will make conversion overhead.ed at runtime. [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement.** +**According to the specification, filter_expression can be only initialized at constructor and it is read_only. probably it is not possible to change the filter_expression at runtime based on the specification but [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement. After all, it seems that it is dependent on implementation.** #### DDSI-RTPS @@ -145,22 +145,18 @@ The ContentFilterProperty_t field provides all the required information to enabl ### Requirement -- ContentFilteredTopic interfaces can be used only if implementation supports. +- ContentFilteredTopic interfaces can be used only if rmw implementation supports. - If rmw implementation does not support ContentFilteredTopic interfaces, filtering will be done internally on subscriber side in `rcl`. - It can create/destroy ContentFilteredTopic based on parent topic. - It can set/get the filter_expression and expression_parameters for ContentFilteredTopic. - Filtering expression and expression parameters can be set and get at runtime. - - As decribed above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. But to support requirements in ROS2, it must support dynamic reconfiguration for filtering expression and paramter. + - As described above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. But to support requirements in ROS2, it should be able to support dynamic reconfiguration for filtering expression and parameter. - Filtering goal id for action `feedback` and `status` will be done ROS2 system. -- User can specify node name and parameter name to filter the parameter evetns. -- Filtering expression and parameter grammer will be the same with DDS standard between `rcl` and `rmw`. +- User can specify node name and parameter name to filter the parameter events. +- Filtering expression and parameter grammar will be the same with DDS standard. ### Proposal -#### Namespace - -Since ContentFilteredTopic is based on parent topic (more like base topic), it will create ContentFilteredTopic internally, not exposed as ordinary topic. - #### Action Each action client id to ContentFilteredTopic based on `action_name/_action/feedback_or_status`. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to have more transport efficiency. @@ -170,9 +166,9 @@ Each action client id to ContentFilteredTopic based on `action_name/_action/feed | action_name/_action/feedback_ActionClient_ID | feedback ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with status id for the same client) | | action_name/_action/status_ActionClient_ID | status ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with feedback id for the same client) | -(*) These ContentFilteredTopic should not show up to user. (e.g `ros2 topic list`) +(*) These ContentFilteredTopic should not show up to user but parent topic. (e.g `ros2 topic list`) -`feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and client issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. `st- [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. if to support any expression and parameter, it means that `rcl` needs to have DDS standard expression and parameter filtering function. new goal id will be applied to ContentFilteredTopic object based on action client ID. +`feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and action client internally issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. Once new goal id is generated, that will be applied to ContentFilteredTopic object based on action client ID at runtime. In action use case, it does not need to change filtering expression at runtime. instead of that it can use `MATCH` syntax with goal ids in expression parameters. @@ -180,14 +176,14 @@ Each action client id to ContentFilteredTopic based on `action_name/_action/feed There are two types of parameter events subscription, one is for system(TimeSource) which is controlled and taken care by rclcpp and rclpy internally. And the other is user application to register user callback to be fired when parameter events come in. -It would be good to create ContentFilteredTopic for each of them. This can make responsibility clear and simple, can avoid the complication about filtering expression merge between user filtering and system filtering. +It would be good to create ContentFilteredTopic for each of them. This can make responsibility clear and simple, it also can avoid the complication about filtering expression merge between user filtering and system filtering. | ContentFilterTopic | Description | | :--- | :--- | | /parameter_events_system_Node_ID | parameter events ContentFilteredTopic for system internal usage, Node ID would be uuid to identify this NodeBase. | | /parameter_events_user_Node_ID | parameter events ContentFilteredTopic for user callback usage, Node ID would be uuid to identify this NodeBase. | -(*) These ContentFilteredTopic should not show up to user. (e.g `ros2 topic list`) +(*) These ContentFilteredTopic should not show up to user but ordinary topic. (e.g `ros2 topic list`) - TimeSource **use_sim_time** event on self-node_base is subscribed internally to check if **use_sim_time** parameter is changed or not. so internally this **use_sim_time** AND self node name always must be in filter_expression and expression_parameters via ContentFilteredTopic if it is supported. see [here](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp/src/rclcpp/time_source.cpp#L123-L125). @@ -197,11 +193,11 @@ It would be good to create ContentFilteredTopic for each of them. This can make This `use_sim_time` can be supported local callbacks, it does not have to use `/parameter_events` at all. - User frontend (rclcpp/rclpy) - User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. If rmw_impelementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on fitlering expression and parameters. + User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. If rmw_implementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on filtering expression and parameters. - Filtering Expression and Parameters - User can specify node name and parameter name to filter the parameter evetns. - - [T.B.D] This needs to be discussed more, if user should be able to filter arbitrary parameter or not. if to support any expression and parameter, it means that `rcl` needs to have DDS standard expression and parameter filtering function. + User can specify node name and parameter name to filter the parameter events. + - ***This needs to be discussed more, if user should be able to filter arbitrary parameter or not.*** @@ -211,14 +207,16 @@ It would be good to create ContentFilteredTopic for each of them. This can make - add API `is_cft_supported` to allow frontend(rclcpp/rclpy) can know CFT is supported or not. e.g) `rcl_subscription_is_cft_supported` to access `is_cft_supported`. -- add `rcl_create_cft_subscription` to call `rmw_create_cft_subscription`. -- add `rcl_cft_set/get_expression_parameters` to call `rmw_cft_set/get_expression_parameters`. +- extend `rcl_create_subscription` with optional filtering expression and parameter expressions. +- add `rcl__expression_parameters` to call `rmw__expression_parameters`. #### rmw - add new member `is_cft_supported` into `rmw_subscription_t` which indicates if CTF is supported by rmw_implementation or not. e.g) see `can_loan_masseges` member as reference. - support status will be set when parent subscription is created. then support status can be used to notify the upper layer if CFT is supported or not. + support status will be set when parent subscription is created. then support status can be read from upper layer to know if CFT is supported or not. + +- current support status | Implementation | `is_cft_supported` | | :--: | :--: | @@ -228,20 +226,20 @@ It would be good to create ContentFilteredTopic for each of them. This can make - new `DDSContentFilteredTopic` object needs to be managed in implementation. - parent topic information should be cached so that we can create CFT based on that parent topic. -- `rmw_create_cft_subscription` interface. - - input: rmw_subscription_t, rmw_node_t, parent topic information. - - output: rmw_subscription_t (with new data reader) -- `rmw_cft_set/get_expression_parameters` interface. +- extemd `rmw_create_subscription` with optional fileds. + - const char * filter_expression + - const rcutils_string_array_t * expression_parameters +- `rmw__expression_parameters` interface. - input: rmw_subscription_t, (string sequence) expression parameters. -#### rclcpp(rclpy) +#### rclcpp (rclpy) **[T.B.D] Do we need to expose ContentFilteredTopic for user classes?** -- `create_cft_subscription` method in `Node` & `Subscription` class to allow user application to user CFT feature based on parent topics and subscription. +- extend `create_subscription` method with optional fields in `Node` & `Subscription` class to allow user application to user CFT feature based on parent topics and subscription. - if the platform does not support CFT, the return NOT_SUPPORTED. - - this will override the subscription (datareader in dds), so that we can have single datareader in dds. this means that subscription can only subscribe content filtered data. -- `set_cft_set/get_expression_parameters` method in `Node` class to set and get expression parameters. (Not possible set filtering expression at runtime this is specification of DDS.) + - if optional fields are specified, ContentFilteredTopic and corresponding subscription (datareader in dds) this means that subscription can only subscribe content filtered data. +- `set__expression_parameters` method in `Node` class to set and get expression parameters. - Deletion/Destruction of CFT subscription is exactly same with current subscription routine. ### Components @@ -249,11 +247,10 @@ It would be good to create ContentFilteredTopic for each of them. This can make #### Action - Action Server - Nothing needs to be changed, even with ContentFilteredTopic it should not be aware of that, just publishes feedback and status message, the rest will be taken care by rmw_implementation. if rmw_implementation does not support ContentFilteredTopic, filtering process is done by subscriber side which is Action Client. + Nothing needs to be changed, even with ContentFilteredTopic it should not be aware of that, just publishes feedback and status message, the rest will be taken care by rmw_implementation. if rmw_implementation does not support ContentFilteredTopic, filtering process is done by subscriber side which is Action Client as it does now. - Action Client - User interface(rclcpp and rclpy) should not be changed, everything can be integrated into internal implementation. - It will check if ContentFilter is supported by rmw_implementation internally. If ContentFilter is supported by rmw_implementation, create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id. (saying there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay since there would be unnecessary message from publisher.At [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id. The goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the finalization is also needed when goal id is being unregistered from goal handler.) + User interface(rclcpp and rclpy) should not be changed, everything can be integrated into internal implementation. It will check if ContentFilter is supported by rmw_implementation internally. If ContentFilter is supported by rmw_implementation, create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id. (technically there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay just in case, there would be unnecessary message from publisher or different rmw_implementation which does not support ContentFilteredTopic is used on Action Server side. At [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id. The goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the un-registration is also needed when goal id is being unregistered from goal handler.) #### Parameter Event From 5e69b82056c42084034c24e9f001061dab17a84c Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Thu, 5 Nov 2020 19:25:15 +0900 Subject: [PATCH 09/17] fix typo. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 26a736533..969aa63be 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -226,7 +226,7 @@ It would be good to create ContentFilteredTopic for each of them. This can make - new `DDSContentFilteredTopic` object needs to be managed in implementation. - parent topic information should be cached so that we can create CFT based on that parent topic. -- extemd `rmw_create_subscription` with optional fileds. +- extemd `rmw_create_subscription` with optional fields. - const char * filter_expression - const rcutils_string_array_t * expression_parameters - `rmw__expression_parameters` interface. From c4502c4141ed69802107b431b8cbcbe8a8cc4ed6 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Mon, 7 Dec 2020 11:14:03 +0900 Subject: [PATCH 10/17] fix typo. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 969aa63be..486c03999 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -226,7 +226,7 @@ It would be good to create ContentFilteredTopic for each of them. This can make - new `DDSContentFilteredTopic` object needs to be managed in implementation. - parent topic information should be cached so that we can create CFT based on that parent topic. -- extemd `rmw_create_subscription` with optional fields. +- extend `rmw_create_subscription` with optional fields. - const char * filter_expression - const rcutils_string_array_t * expression_parameters - `rmw__expression_parameters` interface. From b861af317d0051206f0e33ffc3af98f6644acb76 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Fri, 12 Mar 2021 15:29:06 +0900 Subject: [PATCH 11/17] update design along with implementation. Signed-off-by: Tomoya Fujita --- articles/content_filtering.md | 153 +++++++++++++++++++++------------- 1 file changed, 94 insertions(+), 59 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 486c03999..0ead4ca7c 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -19,23 +19,35 @@ Original Author: {{ page.author }} ## Problems -Here describes the current problems that we have, these are already well-known issues. issues are not related to functionalities but efficiency like CPU consumption and network resource. The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. +Here describes the current problems that we have, these are already well-known issues. +Issues are not related to functionalities but efficiency like CPU consumption and network resource. +The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. Currently, at least there are following two main problems exist in ROS2, the one is `/parameter_events` topic and the other is action topics `feedback` and `status`. the detail is described as following. ### Parameter Event Topic -Each node will publish and subscribe parameter events topic (this is configurable via node option). This topic is to support monitoring parameters for change. It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. there is an internal subscription for each node for /parameter_evetns topic to handle the TimeSource via "use_sim_time" parameter. `rclcpp::ParameterEventsFilter` is used to filter the parameter with specific names such as "use_sim_time". As user interface, `AsyncParametersClient::on_parameter_event` is provided to handle parameter events. +Each node will publish (this is configurable via `NodeOptions`) and subscribe parameter events topic with `AsyncParametersClient` or `ParameterEventHandler`. +This topic is to support monitoring parameters for change. +It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. +And there is an internal subscription for each node for `/parameter_events` topic to handle the TimeSource via "use_sim_time" parameter. +`rclcpp::ParameterEventsFilter` is used to filter the parameter with specific name "use_sim_time". +As user interface, `AsyncParametersClient::on_parameter_event` is provided to handle parameter events. The problem can be broken into the following two parts, -- Network activity on `/parameter_events` topic - Since nobody cares who needs to receive which messages, there will be all of the parameter activity. That said everyone publishes and subscribes all of the events with this giant topic `/parameter_events`. This leads to a lot of unnecessary message transmission over the network. +- Network resource consumption on `/parameter_events` topic + Since nobody cares who needs to receive which messages, all of the parameter activity will be published and subscribed. + That said everyone publishes and subscribes all of the events with this giant topic `/parameter_events`. + This leads to a lot of unnecessary message transmission over the network. - Subscriber needs to filter unnecessary (not interested) messages - Subscriber does not know if the message is something it needs or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. In expectation, it is likely that parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. + Subscriber does not know if the message is something it needs or not without checking the contents of the message via user callback. + This filtering needs to be done every single time the message comes in. + In expectation, it is likely that parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. -as described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. +As described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. +This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. ### Action Topics @@ -43,20 +55,31 @@ Each action server will provide two topics named `feedback` and `status` as foll -`feedback` and `status` are topics each mapped with action name and published by action server, and action clients subscribe those topics to get feedback and status. When there are many goals from many clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) +`feedback` and `status` are topics mapped with action name and published by action server, and action clients subscribe those topics to get feedback and status. +When there are many goals from many clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. +It is up to clients to filter out feedback/status messages that are not pertinent to them. +In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. +Especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) ## ContentFilteredTopic -ContentFilteredTopic describes a more sophisticated subscription that indicates the subscriber does not want to necessarily see all values of each instance published under the Topic. Rather, it wants to see only the values whose contents satisfy certain criteria. This class therefore can be used to request content-based subscriptions. +ContentFilteredTopic describes a more sophisticated subscription that indicates the subscriber does not want to necessarily see all values of each instance published under the Topic. +Rather, it wants to see only the values whose contents satisfy certain criteria. +This class therefore can be used to request content-based subscriptions. -### Requirement +### Specification -- ContentFilteredTopicDataWriter does filtering for each ContentFilteredTopicDataReader endpoint. - OpenSplice community version supports reader side filtering, but with this, transmission does happen anyway to subscription. Filtering is integrated in the implementation but not well efficiency enough. - - Multiple ContentFilteredTopicDataReader exist and filtering is dependent on each ContentFilteredTopicDataReader's logical filtering expression and parameters. - Subscriber is responsible to create ContentFilteredTopic. -- The filtering is done by means of evaluating a logical expression that involves the values some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. +- ContentFilteredTopicDataWriter does filtering for each ContentFilteredTopicDataReader endpoint. + Basically it is likely that ContentFilteredTopicDataWriter does filtering on writer side, so that it can provide the improvement and efficiency. + But it is dependent on imnplementation if always ContentFilteredTopicDataWriter does filtering. + This is because if there is a lot of ContentFilteredTopicDataReader with complicated filtering expression and parameter, it would be probably more efficient just to send the messages to all ContentFilteredTopicDataReader. + And ContentFilteredTopicDataReader can filter out the message if not necessary based on filtering expression and parameter. + This is also said that ContentFilteredTopicDataReader does need to do filtering always just in case ContentFilteredTopicDataWriter ends up sending w/o filitering. + +- The filtering is done by means of evaluating a logical expression that involves the values some of the data-fields in the sample. + The logical expression is derived from the filter_expression and expression_parameters arguments. - Multiple filter_expression and expression_parameters can be supported on single ContentFilteredTopic. ``` [parameter use cases] @@ -130,11 +153,16 @@ the following create/delete API's are defined, - create_contentfilteredtopic() - delete_contentfilteredtopic() -**According to the specification, filter_expression can be only initialized at constructor and it is read_only. probably it is not possible to change the filter_expression at runtime based on the specification but [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement. After all, it seems that it is dependent on implementation.** +**According to the specification, filter_expression can be only initialized at constructor and it is read_only. +Probably it is not possible to change the filter_expression at runtime based on the specification but [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement. +After all, it seems that it is dependent on implementation.** #### DDSI-RTPS -The ContentFilterProperty_t field provides all the required information to enable content filtering on the Writer side. DDS allows the user to modify the filter expression parameter at runtime. Each time the parameters are modified, the updated information is exchanged using the Endpoint discovery protocol. This is identical to updating a mutable QoS value. +`ContentFilterProperty_t` field provides all the required information to enable content filtering on the Writer side. +DDS allows the user to modify the filter expression parameter at runtime. +Each time the parameters are modified, the updated information is exchanged using the endpoint discovery protocol. +This is identical to updating a mutable QoS value. ### Reference @@ -146,20 +174,25 @@ The ContentFilterProperty_t field provides all the required information to enabl ### Requirement - ContentFilteredTopic interfaces can be used only if rmw implementation supports. -- If rmw implementation does not support ContentFilteredTopic interfaces, filtering will be done internally on subscriber side in `rcl`. -- It can create/destroy ContentFilteredTopic based on parent topic. -- It can set/get the filter_expression and expression_parameters for ContentFilteredTopic. +- If rmw implementation does not support ContentFilteredTopic interfaces, filtering will be done internally on subscriber side in `rcl` before callback is fired. +- User can specify filtering expression and expression parameters for subscription. + - Simply, application can set/get the filter_expression and expression_parameters for subscription. - Filtering expression and expression parameters can be set and get at runtime. - - As described above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. But to support requirements in ROS2, it should be able to support dynamic reconfiguration for filtering expression and parameter. + - As described above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. + But to support requirements in ROS2, it should be able to support dynamic reconfiguration for filtering expression and parameter. - Filtering goal id for action `feedback` and `status` will be done ROS2 system. -- User can specify node name and parameter name to filter the parameter events. -- Filtering expression and parameter grammar will be the same with DDS standard. +- Filtering expression and parameter grammar will be compatible with DDS standard. ### Proposal #### Action -Each action client id to ContentFilteredTopic based on `action_name/_action/feedback_or_status`. ContentFilteredTopic name would be action_name/_action/feedback_or_status_ActionClient_ID then ActionClient always get feedback events related to goal handler. This granularity is mandatory for action feedback and status topic to have more transport efficiency. +Each action client id to ContentFilteredTopic based on `action_name/_action/feedback_or_status`. +ContentFilteredTopic name would be decided by implementation such as action_name/_action/feedback_or_status_ActionClient_ID. +And filtering expression and parameters are constructed by UUID then ActionClient always get feedback events related to goal handler. +Filtering based on UUID is mandatory for action feedback and status topic to have more transport efficiency. + +e.g) | ContentFilterTopic Name | Description | | :--- | :--- | @@ -168,15 +201,22 @@ Each action client id to ContentFilteredTopic based on `action_name/_action/feed (*) These ContentFilteredTopic should not show up to user but parent topic. (e.g `ros2 topic list`) -`feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). Goal id will be internally handled and action client internally issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. Once new goal id is generated, that will be applied to ContentFilteredTopic object based on action client ID at runtime. In action use case, it does not need to change filtering expression at runtime. instead of that it can use `MATCH` syntax with goal ids in expression parameters. +`feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). +Goal id will be internally handled and action client internally issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. +Once new goal id is generated, that will be applied to ContentFilteredTopic object based on action client ID at runtime. +In action use case, it does not need to change filtering expression at runtime. +Instead of that it can use `MATCH` syntax with goal ids in expression parameters. #### Parameter Events -There are two types of parameter events subscription, one is for system(TimeSource) which is controlled and taken care by rclcpp and rclpy internally. And the other is user application to register user callback to be fired when parameter events come in. +There are two types of parameter events subscription, one is for system(TimeSource) which is controlled and taken care by rclcpp and rclpy internally. +And the other is user application to register user callback to be fired when parameter events come in. -It would be good to create ContentFilteredTopic for each of them. This can make responsibility clear and simple, it also can avoid the complication about filtering expression merge between user filtering and system filtering. +ContentFilterTopic name would be decided by implementation internally based on parent topic name. + +e.g) | ContentFilterTopic | Description | | :--- | :--- | @@ -186,18 +226,18 @@ It would be good to create ContentFilteredTopic for each of them. This can make (*) These ContentFilteredTopic should not show up to user but ordinary topic. (e.g `ros2 topic list`) - TimeSource - **use_sim_time** event on self-node_base is subscribed internally to check if **use_sim_time** parameter is changed or not. so internally this **use_sim_time** AND self node name always must be in filter_expression and expression_parameters via ContentFilteredTopic if it is supported. see [here](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp/src/rclcpp/time_source.cpp#L123-L125). + **use_sim_time** event is subscribed internally to check if **use_sim_time** parameter is enabled or disabled.S + So internally this **use_sim_time** AND self node name always must be in filter_expression and expression_parameters via ContentFilteredTopic if it is supported. see [here](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp/src/rclcpp/time_source.cpp#L123-L125). **use_sim_time** parameter event must be guaranteed by system to keep that in the filter and parameter expression when using ContentFilteredTopic. - (Off topic from ContentFilteredTopic) - This `use_sim_time` can be supported local callbacks, it does not have to use `/parameter_events` at all. - - User frontend (rclcpp/rclpy) - User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters. Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. If rmw_implementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on filtering expression and parameters. + User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters for subscription. + Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. + It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. + If rmw_implementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on filtering expression and parameters. - Filtering Expression and Parameters - User can specify node name and parameter name to filter the parameter events. - - ***This needs to be discussed more, if user should be able to filter arbitrary parameter or not.*** + User can specify filtering expression and expression parameters. @@ -205,13 +245,15 @@ It would be good to create ContentFilteredTopic for each of them. This can make #### rcl -- add API `is_cft_supported` to allow frontend(rclcpp/rclpy) can know CFT is supported or not. - e.g) `rcl_subscription_is_cft_supported` to access `is_cft_supported`. -- extend `rcl_create_subscription` with optional filtering expression and parameter expressions. -- add `rcl__expression_parameters` to call `rmw__expression_parameters`. +- `rcl_subscription_is_cft_supported` to see if ContentFilteredTopic is supported or not. +- extend node option with filtering expression and parameter expressions so that it can allow user to create ContentFilteredTopic during `rcl_create_subscription`. +- `rcl_subscription_set_cft_expression_parameters` to set filitering expression and parameter expressions to subscription. +- `rcl_subscription_get_cft_expression_parameters` to get filitering expression and parameter expressions from subscription. #### rmw +- `rmw_subscription_set_cft_expression_parameters` to set filitering expression and parameter expressions to subscription. +- `rmw_subscription_get_cft_expression_parameters` to get filitering expression and parameter expressions from subscription. - add new member `is_cft_supported` into `rmw_subscription_t` which indicates if CTF is supported by rmw_implementation or not. e.g) see `can_loan_masseges` member as reference. support status will be set when parent subscription is created. then support status can be read from upper layer to know if CFT is supported or not. @@ -221,31 +263,26 @@ It would be good to create ContentFilteredTopic for each of them. This can make | Implementation | `is_cft_supported` | | :--: | :--: | | rmw_connext | true | +| rmw_connextdds | true | | rmw_fastrtps | false | | rmw_cyclonedds | false | -- new `DDSContentFilteredTopic` object needs to be managed in implementation. -- parent topic information should be cached so that we can create CFT based on that parent topic. -- extend `rmw_create_subscription` with optional fields. - - const char * filter_expression - - const rcutils_string_array_t * expression_parameters -- `rmw__expression_parameters` interface. - - input: rmw_subscription_t, (string sequence) expression parameters. #### rclcpp (rclpy) -**[T.B.D] Do we need to expose ContentFilteredTopic for user classes?** - -- extend `create_subscription` method with optional fields in `Node` & `Subscription` class to allow user application to user CFT feature based on parent topics and subscription. - - if the platform does not support CFT, the return NOT_SUPPORTED. - - if optional fields are specified, ContentFilteredTopic and corresponding subscription (datareader in dds) this means that subscription can only subscribe content filtered data. -- `set__expression_parameters` method in `Node` class to set and get expression parameters. -- Deletion/Destruction of CFT subscription is exactly same with current subscription routine. +- `ContentFilterOptions` is added to `SubscriptionOptionsBase`. + This option will be used during subscription construction. + If `ContentFilterOptions` is specified with filtering expression and parameter expression parameters, it will create ContentFilteredTopic at the same with parent topic. +- `is_cft_supported` method to `SubscriptionBase` to see if the subscription can support ContentFilteredTopic. +- `set_cft_expression_parameters` method to `SubscriptionBase` to set filitering expression and parameter expressions to subscription. +- `get_cft_expression_parameters` method to `SubscriptionBase` to get filitering expression and parameter expressions from subscription. ### Components #### Action +***W.I.P*** + - Action Server Nothing needs to be changed, even with ContentFilteredTopic it should not be aware of that, just publishes feedback and status message, the rest will be taken care by rmw_implementation. if rmw_implementation does not support ContentFilteredTopic, filtering process is done by subscriber side which is Action Client as it does now. @@ -255,16 +292,19 @@ It would be good to create ContentFilteredTopic for each of them. This can make #### Parameter Event - Publication - Nothing will be required to change or modify on publication side. It will publish parameter events as it does, filtering should be done in rmw_implementation dds writer side transparently. + Nothing will be required to change or modify on publication side. + It will publish parameter events as it does, filtering should be done in rmw_implementation dds writer side transparently. - Subscription - It will check if ContentFilteredTopic is supported by rmw_implementation. If rmw_implementation supports ContentFilteredTopic, it will create ContentFilteredTopic internally and also set the filter expression and parameter expressions. user callback will be registered on ContentFilteredTopic. + It will check if ContentFilteredTopic is supported by rmw_implementation. + If rmw_implementation supports ContentFilteredTopic, it will create ContentFilteredTopic internally and also set the filter expression and parameter expressions. + User callback will be registered on ContentFilteredTopic. If user application wants to change filter expression and parameter expressions, it will need to get the current filter setting, then modify or append the expression, and set. -### Questions +### Notes - How much flexibility of filtering expression for /parameter_events? - dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. but thinking of /parameter_events, maybe node name and parameter name would be good enough? + dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. - Side effect for making bunch of ContentFilteredTopic There will be always trading-off, with user aspect, making ContentFilteredTopic is really good not to filter the event. But thinking about dds responsibility, this will increase the complexity and complication for ContentFilteredTopic writer to comprehend which reader needs to receive what events. @@ -272,8 +312,3 @@ It would be good to create ContentFilteredTopic for each of them. This can make ## Responsibility - -## Related Works - -- [Parameter Subscription Class](https://github.com/ros2/rclcpp/pull/829) - User friendly interfaces to handle parameters with node and parameter identification. PR is really old and suspended for monthes. This might be discarded. From 4c02b46d5c5e39a2dac8528dfe135b6b66fd93f7 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Fri, 12 Mar 2021 16:01:05 +0900 Subject: [PATCH 12/17] add sequence diagram for action and parameter event. Signed-off-by: Tomoya Fujita --- articles/content_filtering.md | 36 +++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 0ead4ca7c..1771691ef 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -174,7 +174,6 @@ This is identical to updating a mutable QoS value. ### Requirement - ContentFilteredTopic interfaces can be used only if rmw implementation supports. -- If rmw implementation does not support ContentFilteredTopic interfaces, filtering will be done internally on subscriber side in `rcl` before callback is fired. - User can specify filtering expression and expression parameters for subscription. - Simply, application can set/get the filter_expression and expression_parameters for subscription. - Filtering expression and expression parameters can be set and get at runtime. @@ -207,7 +206,19 @@ Once new goal id is generated, that will be applied to ContentFilteredTopic obje In action use case, it does not need to change filtering expression at runtime. Instead of that it can use `MATCH` syntax with goal ids in expression parameters. + + +```sequence +ActionServer->ActionClient: server ready +ActionClient->ActionServer: subscribe feedback & status topic +ActionClient-->ActionClient: ask if ContentFilteredTopic supported +ActionClient-->ActionClient: set filter expression and parameter based on goal id +ActionClient-->ActionServer: set filter expression and parameter based on goal id +ActionServer->ActionClient: publish feedback & status +Note over ActionClient: Filtering Process(if not filtered) +``` #### Parameter Events @@ -231,15 +242,29 @@ e.g) **use_sim_time** parameter event must be guaranteed by system to keep that in the filter and parameter expression when using ContentFilteredTopic. - User frontend (rclcpp/rclpy) - User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters for subscription. - Also using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. - It should be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. - If rmw_implementation does not support ContentFilteredTopic, `rcl` will take care of filtering instead based on filtering expression and parameters. + - User can use ContentFilteredTopic only if it is supported by implementaion. + It could be compatible interface for user application even if rmw_implementation does not support ContentFilteredTopic. + But providing compatible interface increases comlication in `rcl` such as adding callback before user callback and dealing with filtering expression / parameters. + Which will increse the maintenance cost in system. + Besides, there are already user friendly classes are ready for user application such as `ParameterEventHandler` and `ParameterEventsFilter`. + - User API will be added to manage filtering configuration, so that user application can set its own filter_expression and expression_parameters for subscription. + - using AsyncParametersClient::on_parameter_event, user can take care of the parameter event with user callback only for filtered parameter events. - Filtering Expression and Parameters User can specify filtering expression and expression parameters. + + +```sequence +ParameterEventSubscription->ParameterEventPublication: subscribe /parameter_events +ParameterEventSubscription-->ParameterEventSubscription: ask if ContentFilteredTopic is supported +ParameterEventSubscription-->ParameterEventSubscription: set filter expression on /parameter_events +ParameterEventSubscription-->ParameterEventPublication: set filter expression on /parameter_events +ParameterEventPublication->ParameterEventSubscription: publish /parameter_events +Note over ParameterEventSubscription: user callback fired(via on_parameter_event) +``` ### Interfaces @@ -267,7 +292,6 @@ e.g) | rmw_fastrtps | false | | rmw_cyclonedds | false | - #### rclcpp (rclpy) - `ContentFilterOptions` is added to `SubscriptionOptionsBase`. From 3379c8ac046d554c62214e102d7b55a224303a2d Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Fri, 12 Mar 2021 16:08:36 +0900 Subject: [PATCH 13/17] add images instead of sequence diagram. Signed-off-by: Tomoya Fujita --- articles/content_filtering.md | 23 ------------------ .../action_sequence_with_filter.png | Bin 18279 -> 7365 bytes .../parameter_event_sequence_with_filter.png | Bin 21676 -> 7100 bytes 3 files changed, 23 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 1771691ef..915a60102 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -206,19 +206,7 @@ Once new goal id is generated, that will be applied to ContentFilteredTopic obje In action use case, it does not need to change filtering expression at runtime. Instead of that it can use `MATCH` syntax with goal ids in expression parameters. - - -```sequence -ActionServer->ActionClient: server ready -ActionClient->ActionServer: subscribe feedback & status topic -ActionClient-->ActionClient: ask if ContentFilteredTopic supported -ActionClient-->ActionClient: set filter expression and parameter based on goal id -ActionClient-->ActionServer: set filter expression and parameter based on goal id -ActionServer->ActionClient: publish feedback & status -Note over ActionClient: Filtering Process(if not filtered) -``` #### Parameter Events @@ -253,18 +241,7 @@ e.g) - Filtering Expression and Parameters User can specify filtering expression and expression parameters. - - -```sequence -ParameterEventSubscription->ParameterEventPublication: subscribe /parameter_events -ParameterEventSubscription-->ParameterEventSubscription: ask if ContentFilteredTopic is supported -ParameterEventSubscription-->ParameterEventSubscription: set filter expression on /parameter_events -ParameterEventSubscription-->ParameterEventPublication: set filter expression on /parameter_events -ParameterEventPublication->ParameterEventSubscription: publish /parameter_events -Note over ParameterEventSubscription: user callback fired(via on_parameter_event) -``` ### Interfaces diff --git a/img/content_filter/action_sequence_with_filter.png b/img/content_filter/action_sequence_with_filter.png index a8e359c9ea133eeadc0f40ae4e22bbb3e2b50b57..6f2cadc6c686f53fb405f7e62233eeac2123f259 100755 GIT binary patch literal 7365 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 literal 18279 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 OaYIe(YLTk-U;hIVEnE8l diff --git a/img/content_filter/parameter_event_sequence_with_filter.png b/img/content_filter/parameter_event_sequence_with_filter.png index 50c25d15bd7406be9fb0d6c7fe9cedbad453cf62..556c0c32b0cb22319f47be39748d7bba32cd5af7 100755 GIT binary patch literal 7100 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 x~unNp&XKi<$UN%klwn2U2XR%luV;y)l{Fjiq zS2`QZQ=v&3PpwY#G8mYRMIjm!A1@Zr5ex={nfG6$U-iI@ASV0q-TTUX+ zWz_DhuM09o^Ce10$jpS!I*`Ug2v~{m#hlO+!e@6cRtZGbz3}Er8WN7RkR;HgD-<0Z zTPkGZVR+;{RONbRDw!K2LqkTu0-J`HZZM=kvuN`}-@*zR&#^;FcDvrzu%ypQ!E%#t zv&k>sl-a=m<_GPl&R?$&p;D2PW4O;3nPy#0Nc`rWke~jA@S~`WW1QRSS zHXvVhzBAMc3o3$Ot{nu+O+=CzVx>55Spd*vqP{uQ(ouENF!y{yq%7h9EZ_C&7uKYB z=Z~`cMQaaZgSI%iImKq8EO;I348` z@D+eb{A~dsaH8M&*_Q>v>N1h!-J`n@>B4wPwptk_GDTznT1Kv02B)gJ~O*M45O)_}pdKAu? zlX*W>y?wbIowe@iqgdI0!$}A`oH?}giv4{f5S&Oe8KJJsHfED}mFG;rEDsg`N;?Rg z7UR(4f6BijiUG~snWbSFnm%(&8uCbHZ^-y%zvS0aipyI`&ZG`Jx;fse z)Mz$w9l{#CMGb3JwPj^fpSgbZ@*DGZMh`1KRGqvNgtFbLj4L97JbprDHhYXu<=NwI z`hm7O_Ex!fGp?pIHfazpknDoK86pPTy8U8B!C#f4jb*A{vh(^F*{OG#yDSnJ5?_Yr zWR{;*JAB$TQnxHBg~A%mX0hcQ=Bbevr>Menm8an$gi_J82JTO4qe)KxT}WOG8h{s{ ztBUg^rtx1=6e-ySq51m{Sy=9L-S=H0#13Yj@Jv2IlUzcY05Hb%G&>>t_#MExT10ZEuA6cIR8pNUVh+ z8zRQL!Z>VGH*>jyZ?WVtDZ`sG%cx5U03u#?b|lMAw|A`t!SP;L9@U0=MnPbFthLGD z=)iK^5#yqY{d8m!#z@{RB!qXqwr#noR*Jh%@Y+t~vG`yteCbJCj%HV0HJcafDPG6F zwWzN1B!MvrF3qJt3)X|@;kq{heXV0723)G3>S&?sy0YQO*`RvXa5iet-Ey65(o2eS zcj%fH7SoG@38C7ACJCI&UgGTBcj%K+u}t5Q{XXX9?Lc~l>B2f6mP7YAl(fC>dZ)BP z!y_u9(6`hwr{AUP6RuvUt1Fp9vo;w$sCL`pk&b%G!J=EJ{03j>=7?>t0v+=;qV{ey zhCFGI*plM4%_%1fCoFs6SzVhO75ny|3=A*)NYt5~tpv@%kghTexAfQFZYa>;zWS{U z#gQNfqe=7KgfIM5_Q6#&4^0Gb*3=tPDrS?vJbd2R3$UEmS^D`@{)_Gj6<*uN?O-#L zK>edh^uCM7ahIKN!q!FV?Qr1pa; zI#K>IZ=94>s$eyZK+|pL*l?^~Iw+1?@8|`@`PF(FO$-OJRN|nDxnELJh z*hp7LQOJ_T{4st1QnR2_1aPRXj2!)c|^uCi#-@_G3^sqx;bDs(Z|(#B!mMenkyt%-K>qB|x@CB4HTd|w zO6bP7m{~rODw`jqEr8u9{`j}cB7aQ$?!w?N=W}(=DziX@Q*0JRWp;6hQWukuWc!GM zP!Hf8u^Md^6QGL5?~tbK!16u!xPz%$R3QS8OcaFvnB$;UvweHA?9{PFkj7SjN_O1(~o~NxR(8D*AMD z5;IWdF!rWfu-2`nE07T@P4g_$vM#MVAj2@^)90HR>3B~xe2UVM2c-9-u5*Tbh5o5W zp!HM@6hGeRFd`lGAr3axwT{wRSXX^d4;h&kcY==0KHwn53%VP!gQ86GY}~cpbz7mPvl*C0HuuQG^J52w7r%-=n^z|3%=9)2`!NR)< S1ld#$V0X&?WYr1pTmJ!C1*DAt literal 21676 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 Date: Wed, 14 Jul 2021 14:09:19 -0700 Subject: [PATCH 14/17] fix DDS spec related descriptions. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 915a60102..ba097d732 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -80,7 +80,7 @@ This class therefore can be used to request content-based subscriptions. - The filtering is done by means of evaluating a logical expression that involves the values some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. -- Multiple filter_expression and expression_parameters can be supported on single ContentFilteredTopic. +- Each ContentFilteredTopic has a single filter_expression and a sequence of expression_parameters. ``` [parameter use cases] "node = %0 OR node = %1" spinal_node attention_node : subscribe all parameter events from spinal and attention nodes @@ -89,7 +89,7 @@ This class therefore can be used to request content-based subscriptions. [action use case] "uuid = %0 OR uuid = %1" DEADBEEF CAFEFEED : subscribe only interest goal ids which client handlers possess. ``` -- Multiple filter_expression and expression_parameters can be modified dynamically at runtime. +- A single filter_expression and a sequence of expression_parameters can be modified dynamically at runtime. This is because of use cases for `/parameter_events` and action `feedback` and `status` topics, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. ### Improvement Result @@ -153,9 +153,7 @@ the following create/delete API's are defined, - create_contentfilteredtopic() - delete_contentfilteredtopic() -**According to the specification, filter_expression can be only initialized at constructor and it is read_only. -Probably it is not possible to change the filter_expression at runtime based on the specification but [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement. -After all, it seems that it is dependent on implementation.** +**According to the specification, filter_expression can be changed at runtime. [RTI v5.3.0](https://community.rti.com/static/documentation/connext-dds/5.3.0/doc/api/connext_dds/api_cpp2/classdds_1_1topic_1_1ContentFilteredTopic.html#a76310bf0b7123dd89afbacf43dbabf4a) can support this requirement.** #### DDSI-RTPS @@ -310,6 +308,9 @@ e.g) - Side effect for making bunch of ContentFilteredTopic There will be always trading-off, with user aspect, making ContentFilteredTopic is really good not to filter the event. But thinking about dds responsibility, this will increase the complexity and complication for ContentFilteredTopic writer to comprehend which reader needs to receive what events. +- Possible difference for expression parameters, depends on vendor implementation. + see [encountered problem](https://issues.omg.org/issues/spec/DDS/1.4#issue-47484). + ## Responsibility From 3161960dfec16c4eb5d8a460787cb6a9d5eabeb5 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Wed, 2 Feb 2022 16:12:50 -0800 Subject: [PATCH 15/17] update design aligned with implementation. Signed-off-by: Tomoya Fujita --- articles/content_filtering.md | 112 ++++++++++++++++------------------ 1 file changed, 52 insertions(+), 60 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index ba097d732..9126f5d02 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -1,8 +1,8 @@ --- layout: default -title: ContentFilteringTopic in ROS2 +title: ContentFilteredTopic in ROS 2 permalink: articles/content_filtering.html -abstract: Description draft of the current problem for /parameter_events and action feedback/status topics. Design proposal using ContentFilteringTopic. +abstract: Description draft of the current problem for /parameter_events and action feedback/status topics. Design proposal using DDS ContentFilteredTopic. author: '[Tomoya Fujita](https://github.com/fujitatomoya)' published: true --- @@ -19,15 +19,14 @@ Original Author: {{ page.author }} ## Problems -Here describes the current problems that we have, these are already well-known issues. -Issues are not related to functionalities but efficiency like CPU consumption and network resource. -The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform, these problems could be a huge pain to consume resources. -Currently, at least there are following two main problems exist in ROS2, the one is `/parameter_events` topic and the other is action topics `feedback` and `status`. the detail is described as following. +Here describes the current problems that we have, these are already well-known issues related to efficiency for CPU consumption and network resource. +The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform such as microcontrollers, these problems could be a huge pain to consume resources. +Currently, at least there are following two main problems exist in ROS 2, the one is `/parameter_events` topic and the other is action topics `feedback` and `status`. the detail is described as following. ### Parameter Event Topic Each node will publish (this is configurable via `NodeOptions`) and subscribe parameter events topic with `AsyncParametersClient` or `ParameterEventHandler`. -This topic is to support monitoring parameters for change. +This topic is to support monitoring parameters for any parameter changes. It is expected that client libraries will implement the ability to register a callback for specific parameter changes using this topic. And there is an internal subscription for each node for `/parameter_events` topic to handle the TimeSource via "use_sim_time" parameter. `rclcpp::ParameterEventsFilter` is used to filter the parameter with specific name "use_sim_time". @@ -38,17 +37,19 @@ As user interface, `AsyncParametersClient::on_parameter_event` is provided to ha The problem can be broken into the following two parts, - Network resource consumption on `/parameter_events` topic - Since nobody cares who needs to receive which messages, all of the parameter activity will be published and subscribed. - That said everyone publishes and subscribes all of the events with this giant topic `/parameter_events`. + Since publisher does not know who needs to receive which messages, all of the parameter activity will be published and subscribed. + That said everyone publishes and subscribes all of the events within this giant topic `/parameter_events`. This leads to a lot of unnecessary message transmission over the network. - Subscriber needs to filter unnecessary (not interested) messages Subscriber does not know if the message is something it needs or not without checking the contents of the message via user callback. This filtering needs to be done every single time the message comes in. - In expectation, it is likely that parameter event callback is interested on specific parameter only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. + In expectation, it is likely that parameter event callback is interested on specific parameters only, so that there will be a lot of unnecessary message receives and filtering process needs to be done. As described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. +Besides, this problem can be applied to user defined topics. + ### Action Topics Each action server will provide two topics named `feedback` and `status` as followings, @@ -56,7 +57,7 @@ Each action server will provide two topics named `feedback` and `status` as foll `feedback` and `status` are topics mapped with action name and published by action server, and action clients subscribe those topics to get feedback and status. -When there are many goals from many clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. +When there are many goals from multiple clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. Especially in extreme cases where M and N are large. (each goal is identified by goal ID based on uuid, filtering out the goal id is done by client library so user application does not need to care.) @@ -70,13 +71,13 @@ This class therefore can be used to request content-based subscriptions. ### Specification - Multiple ContentFilteredTopicDataReader exist and filtering is dependent on each ContentFilteredTopicDataReader's logical filtering expression and parameters. -- Subscriber is responsible to create ContentFilteredTopic. +- Subscription is responsible to create ContentFilteredTopic. - ContentFilteredTopicDataWriter does filtering for each ContentFilteredTopicDataReader endpoint. - Basically it is likely that ContentFilteredTopicDataWriter does filtering on writer side, so that it can provide the improvement and efficiency. - But it is dependent on imnplementation if always ContentFilteredTopicDataWriter does filtering. - This is because if there is a lot of ContentFilteredTopicDataReader with complicated filtering expression and parameter, it would be probably more efficient just to send the messages to all ContentFilteredTopicDataReader. + Basically it is likely that ContentFilteredTopicDataWriter does filtering on writer side, so that it can provide the improvement and efficiency especially for network resource. + But it is dependent on implementation if always ContentFilteredTopicDataWriter does filtering. + This is because if there is a lot of ContentFilteredTopicDataReader with complicated filtering expression and parameter, it would be probably more efficient just to send the messages to all ContentFilteredTopicDataReader. (for example, if the message type includes sequence, DataWriter needs to recreate the message for each DataReader based on filtering expression and parameters.) And ContentFilteredTopicDataReader can filter out the message if not necessary based on filtering expression and parameter. - This is also said that ContentFilteredTopicDataReader does need to do filtering always just in case ContentFilteredTopicDataWriter ends up sending w/o filitering. + This is also said that ContentFilteredTopicDataReader does need to do filtering always just in case ContentFilteredTopicDataWriter ends up sending w/o filtering. - The filtering is done by means of evaluating a logical expression that involves the values some of the data-fields in the sample. The logical expression is derived from the filter_expression and expression_parameters arguments. @@ -171,56 +172,45 @@ This is identical to updating a mutable QoS value. ### Requirement +- ContentFilteredTopic will be managed in rmw implementation internally. - ContentFilteredTopic interfaces can be used only if rmw implementation supports. - User can specify filtering expression and expression parameters for subscription. - - Simply, application can set/get the filter_expression and expression_parameters for subscription. + - Simply, application can set/get the filter expression and expression parameters for subscription. - Filtering expression and expression parameters can be set and get at runtime. - As described above, according to DDS specification, it implies that filtering expression may not be able to be changed dynamically. - But to support requirements in ROS2, it should be able to support dynamic reconfiguration for filtering expression and parameter. -- Filtering goal id for action `feedback` and `status` will be done ROS2 system. + But to support requirements in ROS 2, it should be able to support dynamic reconfiguration for filtering expression and parameter. +- Filtering based on goal id for action `feedback` and `status` topics will be done ROS 2 system. - Filtering expression and parameter grammar will be compatible with DDS standard. +- ContentFilteredTopic should not show up to ROS 2 system. (for example, `ros2 topic list` does not include ContentFilteredTopics.) ### Proposal #### Action -Each action client id to ContentFilteredTopic based on `action_name/_action/feedback_or_status`. -ContentFilteredTopic name would be decided by implementation such as action_name/_action/feedback_or_status_ActionClient_ID. +ContentFilteredTopic for each action client topic will be created in rmw implementation internally. +So that ROS 2 system only set the filtering expression and expression parameters for the subscription object for the topic. And filtering expression and parameters are constructed by UUID then ActionClient always get feedback events related to goal handler. Filtering based on UUID is mandatory for action feedback and status topic to have more transport efficiency. -e.g) - -| ContentFilterTopic Name | Description | -| :--- | :--- | -| action_name/_action/feedback_ActionClient_ID | feedback ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with status id for the same client) | -| action_name/_action/status_ActionClient_ID | status ContentFilteredTopic for ActionClient ID, ActionClient_ID would be uuid (consistent with feedback id for the same client) | - -(*) These ContentFilteredTopic should not show up to user but parent topic. (e.g `ros2 topic list`) - `feedback` topic is user defined message type but it also includes goal id([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)). -Goal id will be internally handled and action client internally issues ContentFilteredTopic API to notify the publication(server) what subscription(client) is interested in. -Once new goal id is generated, that will be applied to ContentFilteredTopic object based on action client ID at runtime. -In action use case, it does not need to change filtering expression at runtime. +Goal id will be internally handled and action client internally issues ContentFilteredTopic API to set the filtering expression and expression parameters. +Once new goal id is generated, that will be applied to filtering expression and expression parameters based on action client ID at runtime. +In expectation, in action use case, it does not need to change filtering expression at runtime. Instead of that it can use `MATCH` syntax with goal ids in expression parameters. +`status` topic message type is [GoalStatusArray](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalStatusArray.msg) which includes goal ids([GoalInfo](https://github.com/ros2/rcl_interfaces/blob/master/action_msgs/msg/GoalInfo.msg)) as sequence. +ContentFilteredTopic for unbound array/sequence is not described in DDS Specification but nice to have as implementation extension. +So that ROS 2 cannot rely on it until it addresses in the spec for interoperability. +Besides, filtering and reconstructing array or sequence message for each subscription would be more cost for resource. +At this moment, because of all these reasons, we do not support ContentFilteredTopic on action `status` topic. (See discussion [here](https://github.com/ros2/rmw_connextdds/issues/11)) + #### Parameter Events There are two types of parameter events subscription, one is for system(TimeSource) which is controlled and taken care by rclcpp and rclpy internally. And the other is user application to register user callback to be fired when parameter events come in. - -ContentFilterTopic name would be decided by implementation internally based on parent topic name. - -e.g) - -| ContentFilterTopic | Description | -| :--- | :--- | -| /parameter_events_system_Node_ID | parameter events ContentFilteredTopic for system internal usage, Node ID would be uuid to identify this NodeBase. | -| /parameter_events_user_Node_ID | parameter events ContentFilteredTopic for user callback usage, Node ID would be uuid to identify this NodeBase. | - -(*) These ContentFilteredTopic should not show up to user but ordinary topic. (e.g `ros2 topic list`) +ContentFilterTopic will be managed by rmw implementation internally. - TimeSource **use_sim_time** event is subscribed internally to check if **use_sim_time** parameter is enabled or disabled.S @@ -245,16 +235,16 @@ e.g) #### rcl -- `rcl_subscription_is_cft_supported` to see if ContentFilteredTopic is supported or not. -- extend node option with filtering expression and parameter expressions so that it can allow user to create ContentFilteredTopic during `rcl_create_subscription`. -- `rcl_subscription_set_cft_expression_parameters` to set filitering expression and parameter expressions to subscription. -- `rcl_subscription_get_cft_expression_parameters` to get filitering expression and parameter expressions from subscription. +- `rcl_subscription_is_cft_enabled` to see if ContentFilteredTopic is enabled by rmw implementation. +- extend subscription option with filtering expression and parameter expressions. +- `rcl_subscription_set_content_filter` to set filtering expression and parameter expressions to subscription. +- `rcl_subscription_get_content_filter` to get filtering expression and parameter expressions from subscription. #### rmw -- `rmw_subscription_set_cft_expression_parameters` to set filitering expression and parameter expressions to subscription. -- `rmw_subscription_get_cft_expression_parameters` to get filitering expression and parameter expressions from subscription. -- add new member `is_cft_supported` into `rmw_subscription_t` which indicates if CTF is supported by rmw_implementation or not. +- `rmw_subscription_set_content_filter` to set filtering expression and parameter expressions to subscription. +- `rmw_subscription_get_content_filter` to get filtering expression and parameter expressions from subscription. +- add new member `is_cft_enabled` into `rmw_subscription_t` which indicates if CTF is enabled by rmw_implementation or not. e.g) see `can_loan_masseges` member as reference. support status will be set when parent subscription is created. then support status can be read from upper layer to know if CFT is supported or not. @@ -262,31 +252,28 @@ e.g) | Implementation | `is_cft_supported` | | :--: | :--: | -| rmw_connext | true | | rmw_connextdds | true | -| rmw_fastrtps | false | +| rmw_fastrtps | false (W.I.P) | | rmw_cyclonedds | false | -#### rclcpp (rclpy) +#### rclcpp - `ContentFilterOptions` is added to `SubscriptionOptionsBase`. This option will be used during subscription construction. If `ContentFilterOptions` is specified with filtering expression and parameter expression parameters, it will create ContentFilteredTopic at the same with parent topic. -- `is_cft_supported` method to `SubscriptionBase` to see if the subscription can support ContentFilteredTopic. -- `set_cft_expression_parameters` method to `SubscriptionBase` to set filitering expression and parameter expressions to subscription. -- `get_cft_expression_parameters` method to `SubscriptionBase` to get filitering expression and parameter expressions from subscription. +- `is_cft_enabled` method to `SubscriptionBase` to see if the subscription can support ContentFilteredTopic. +- `set_content_filter` method to `SubscriptionBase` to set filtering expression and parameter expressions to subscription. +- `get_content_filter` method to `SubscriptionBase` to get filtering expression and parameter expressions from subscription. ### Components #### Action -***W.I.P*** - - Action Server Nothing needs to be changed, even with ContentFilteredTopic it should not be aware of that, just publishes feedback and status message, the rest will be taken care by rmw_implementation. if rmw_implementation does not support ContentFilteredTopic, filtering process is done by subscriber side which is Action Client as it does now. - Action Client - User interface(rclcpp and rclpy) should not be changed, everything can be integrated into internal implementation. It will check if ContentFilter is supported by rmw_implementation internally. If ContentFilter is supported by rmw_implementation, create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id. (technically there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay just in case, there would be unnecessary message from publisher or different rmw_implementation which does not support ContentFilteredTopic is used on Action Server side. At [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id. The goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the un-registration is also needed when goal id is being unregistered from goal handler.) + User interface should not be changed, everything can be integrated into internal implementation. It will check if ContentFilter is supported by rmw_implementation internally. If ContentFilter is supported by rmw_implementation, create ContentFilteredTopic internally based on ActionClient ID (uuid) so that no need to filter goal id. (technically there will be no unknown goal id event.) But w/o ContentFilter [current filtering](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L536-L553) needs to stay just in case, there would be unnecessary message from publisher or different rmw_implementation which does not support ContentFilteredTopic is used on Action Server side. At [send_goal_request](https://github.com/ros2/rclcpp/blob/99286978f92c30fe171313bf0785d6b6272c3257/rclcpp_action/include/rclcpp_action/client.hpp#L352-L388), it will set the filter_expression and expression_parameters based on goal id. The goal handler might have multiple goal ids, so that get current filtering configuration, modify and set new filtering configuration. (the un-registration is also needed when goal id is being unregistered from goal handler.) #### Parameter Event @@ -314,3 +301,8 @@ e.g) ## Responsibility + +## Slides / Talks + +- [ROS WOrld 2021 ROS 2 Content Filtered Topics](https://vimeo.com/649654533/c8104829db) +- [ROS 2 Content Filtered Topic Slides](https://www.slideshare.net/FujitaTomoya/ros-2-content-filtered-topics) From f3049041f2e63f0fa846e46481c786cbee785e13 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Fri, 4 Mar 2022 09:22:51 -0800 Subject: [PATCH 16/17] fix comments and add DDS specification for expression and parameters. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/articles/content_filtering.md b/articles/content_filtering.md index 9126f5d02..d5bcd7e70 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -38,7 +38,7 @@ The problem can be broken into the following two parts, - Network resource consumption on `/parameter_events` topic Since publisher does not know who needs to receive which messages, all of the parameter activity will be published and subscribed. - That said everyone publishes and subscribes all of the events within this giant topic `/parameter_events`. + That said everyone publishes and subscribes all of the events in this high traffic `/parameter_events` topic. This leads to a lot of unnecessary message transmission over the network. - Subscriber needs to filter unnecessary (not interested) messages Subscriber does not know if the message is something it needs or not without checking the contents of the message via user callback. @@ -52,11 +52,11 @@ Besides, this problem can be applied to user defined topics. ### Action Topics -Each action server will provide two topics named `feedback` and `status` as followings, +Each action server provides two topics named `feedback` and `status` as followings, -`feedback` and `status` are topics mapped with action name and published by action server, and action clients subscribe those topics to get feedback and status. +`feedback` and `status` are topics mapped with action name and published by action server, and action clients subscribe to those topics to get feedback and status. When there are many goals from multiple clients, the choice to have a single `feedback` and `status` topic per action server is suboptimal in terms of processing and bandwidth resource. It is up to clients to filter out feedback/status messages that are not pertinent to them. In this scenario, M goals are sent to N clients there is an unnecessary use of bandwidth and processing. @@ -92,6 +92,7 @@ This class therefore can be used to request content-based subscriptions. ``` - A single filter_expression and a sequence of expression_parameters can be modified dynamically at runtime. This is because of use cases for `/parameter_events` and action `feedback` and `status` topics, parameter filtering expression is dependent on user application, and action client has multiple goal id to handle. +- You can see DDS Specification [Annex B - Syntax for Queries and Filters](https://www.omg.org/spec/DDS/1.4/PDF). ### Improvement Result From 918c09758ed4c0854aa128b9c8ed0051c21a6590 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Tue, 26 Apr 2022 17:41:24 -0700 Subject: [PATCH 17/17] add more description with current design. Signed-off-by: Tomoya.Fujita --- articles/content_filtering.md | 30 +++++++++++++++++--------- img/content_filter/responsibility.png | Bin 44870 -> 0 bytes 2 files changed, 20 insertions(+), 10 deletions(-) delete mode 100755 img/content_filter/responsibility.png diff --git a/articles/content_filtering.md b/articles/content_filtering.md index d5bcd7e70..612cebad9 100755 --- a/articles/content_filtering.md +++ b/articles/content_filtering.md @@ -20,7 +20,7 @@ Original Author: {{ page.author }} ## Problems Here describes the current problems that we have, these are already well-known issues related to efficiency for CPU consumption and network resource. -The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform such as microcontrollers, these problems could be a huge pain to consume resources. +The efficiency is dependent on the platform capability, but once it comes to embedded devices and IoT platform such as micro-controllers, these problems could be a huge pain to consume resources. Currently, at least there are following two main problems exist in ROS 2, the one is `/parameter_events` topic and the other is action topics `feedback` and `status`. the detail is described as following. ### Parameter Event Topic @@ -48,7 +48,7 @@ The problem can be broken into the following two parts, As described above, we could imagine that if the number of node are 10, 20 and 100 and so are the parameters for each nodes. This will be a huge burden and pain for entire system, passing unnecessary messages via limited bandwidth network with edge devices and filtering messages to drop is not something user application wants to do. -Besides, this problem can be applied to user defined topics. +Besides, these problems can be applied to user defined topics. ### Action Topics @@ -183,6 +183,7 @@ This is identical to updating a mutable QoS value. - Filtering based on goal id for action `feedback` and `status` topics will be done ROS 2 system. - Filtering expression and parameter grammar will be compatible with DDS standard. - ContentFilteredTopic should not show up to ROS 2 system. (for example, `ros2 topic list` does not include ContentFilteredTopics.) +- If rmw implementation does not support ContentFilteredTopic, ROS 2 fallback filtering will take care of the filtering process based on filtering expression and parameters. ### Proposal @@ -245,16 +246,16 @@ ContentFilterTopic will be managed by rmw implementation internally. - `rmw_subscription_set_content_filter` to set filtering expression and parameter expressions to subscription. - `rmw_subscription_get_content_filter` to get filtering expression and parameter expressions from subscription. -- add new member `is_cft_enabled` into `rmw_subscription_t` which indicates if CTF is enabled by rmw_implementation or not. - e.g) see `can_loan_masseges` member as reference. - support status will be set when parent subscription is created. then support status can be read from upper layer to know if CFT is supported or not. +- add new member `is_cft_enabled` into `rmw_subscription_t` which indicates if ContentFilteredTopic is enabled on subscription by rmw_implementation or not. + e.g) see `can_loan_messages` member as reference. + support status will be set when parent subscription is created. then support status can be read from upper layer to know if ContentFilteredTopic is supported or not. - current support status | Implementation | `is_cft_supported` | | :--: | :--: | | rmw_connextdds | true | -| rmw_fastrtps | false (W.I.P) | +| rmw_fastrtps | true | | rmw_cyclonedds | false | #### rclcpp @@ -268,6 +269,14 @@ ContentFilterTopic will be managed by rmw implementation internally. ### Components +#### Fallback filtering + +If rmw implementation does not support ContentFilteredTopic, ROS 2 internally process the filtering using the same filtering expression and parameters provided by user application. +Fallback filtering is required to provide the same behavior for user application even if rmw implementation does not support ContentFilteredTopic. +Basically fallback filtering will be integrated within `rcl`, so that it can be applied to any frontend libraries such as `rclcpp` and `rclpy`. +But it requires type support c/cpp to access the message field. For doing that, some methods will be implemented in c++ library such as `rmw_dds_common`, and then those methods can be issued by `rcl`. +See more details: https://github.com/ros2/design/pull/282#issuecomment-1062110693 + #### Action - Action Server @@ -290,6 +299,11 @@ ContentFilterTopic will be managed by rmw implementation internally. ### Notes +- Filtering expression and parameters race condition + When the filtering expression and/or the expression parameters are updated, there might be race condition and possibility that publisher might apply the old version of the filter only if filtering happens on publisher side. + This depends on rmw implementation. + [eProsima Fast-DDS](https://fast-dds.docs.eprosima.com/) provides the configuration to [disable filtering on publisher side](https://fast-dds.docs.eprosima.com/en/latest/fastdds/dds_layer/topic/contentFilteredTopic/writerFiltering.html#discovery-race-condition) for some mission critical application. + - How much flexibility of filtering expression for /parameter_events? dds filter_expression and expression_parameters are really flexible, it is designed to support arbitrary user filtering. @@ -299,10 +313,6 @@ ContentFilterTopic will be managed by rmw implementation internally. - Possible difference for expression parameters, depends on vendor implementation. see [encountered problem](https://issues.omg.org/issues/spec/DDS/1.4#issue-47484). -## Responsibility - - - ## Slides / Talks - [ROS WOrld 2021 ROS 2 Content Filtered Topics](https://vimeo.com/649654533/c8104829db) diff --git a/img/content_filter/responsibility.png b/img/content_filter/responsibility.png deleted file mode 100755 index 6f8f783dfeca2d7dcb5da572bab36e34db702c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44870 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 JfomU-{9my4$%+5~