Skip to content

[Draft] ContentFilteredTopic Support #241

@fujitatomoya

Description

@fujitatomoya

Feature request

Feature description

Draft overview and background is ros2/design#282,

Introduce dds contentfiltertopic to ROS, dds specification is DDS v1.4 2.2.2.3.3 ContentFilteredTopic Class. ContentFilteredTopic can be created on parent topic and DataReader only receives the messages that matches with filtering expression and expression parameters. If implementation does not support this feature, it returns not support.

  • rmw implementation support.
Implementation Supported Comment
RTI Connext Yes https://community.rti.com/examples/content-filtered-topic, Not sure if filtering is done on writer or reader side.
eProsima Fast-DDS No
ADLINK cyclonedds No
ADLINK OpenSplice Yes E.O.L foxy or newer
  • expected user for this feature.

    • action feedback / status topics.
    • parameter_events topic.
    • user defined topics.

Implementation considerations

  • rmw and rcl implementation
    • ContentFilteredTopic requires parent topic, returning capability for ContentFilteredTopic with rmw_create_subscriotion rmw_subscription_t. So that rclcpp/rcl can tell if the implementation supports it or not.
    • Based on parent topic and subscription, it can create ContentFilteredTopic with subtopic name, filtering expression and expression parameters. Then implementation creates ContentFilteredTopic and replace the DataReader.
    • Expression parameter can be changed via setter dynamically, also getter should be provided. but filtering expression cannot be changed unless re-creating ContentFilteringTopic.
    • Test must be added to make sure ContentFIlteredTopic supported and functions.
  • rcl and rclcpp
    • Action feedback and status to use ContentFilteredTopic.
    • Introduce new class for parameter_events filtering which calls ContentFilteredTopic.
    • Filtering in rcl based when rmw does not support ContentFilteredTopic.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions