Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functions for resolving 'best available' QoS policies #60

Merged
merged 4 commits into from
May 3, 2022

Conversation

jacobperron
Copy link
Member

Connects to ros2/rmw#320

Given a QoS profile and set of endpoints for the same topic, overwrite any policies set to
BEST_AVAILABLE with a policy such that it matches all endpoints while maintaining a high
level of service.

Add testable functions for updating BEST_AVAILABLE policies,

  • qos_profile_get_best_available_for_subscription
  • qos_profile_get_best_available_for_publisher

and add convenience functions that actual query the graph for RMW implementations to use,

  • qos_profile_get_best_available_for_topic_subscription
  • qos_profile_get_best_available_for_topic_publisher

Given a QoS profile and set of endpoints for the same topic, overwrite any policies set to
BEST_AVAILABLE with a policy such that it matches all endpoints while maintaining a high
level of service.

Add testable functions for updating BEST_AVAILABLE policies,

- qos_profile_get_best_available_for_subscription
- qos_profile_get_best_available_for_publisher

and add convenience functions that actual query the graph for RMW implementations to use,

- qos_profile_get_best_available_for_topic_subscription
- qos_profile_get_best_available_for_topic_publisher

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
jacobperron added a commit to ros2/rclcpp that referenced this pull request Apr 19, 2022
If users set a policy as 'best available', then the middleware will pick a policy
that is most compatible with the current set of discovered endpoints while maintaining
the highest level of service possible.

For details about the expected behavior, see connected changes:

- ros2/rmw#320
- ros2/rmw_dds_common#60

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Copy link
Member

@ivanpauno ivanpauno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link

@j-rivero j-rivero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found some minor questions but I can not find a single error in the logic. Test suite is great.

rmw_dds_common/src/qos.cpp Show resolved Hide resolved
rmw_dds_common/src/qos.cpp Show resolved Hide resolved
rmw_dds_common/include/rmw_dds_common/qos.hpp Show resolved Hide resolved
rmw_dds_common/include/rmw_dds_common/qos.hpp Outdated Show resolved Hide resolved
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Basically, ignore best available policies by overwriting them with the default policy used for services.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
@jacobperron
Copy link
Member Author

PTAL at the latest addition to handle services: ed492d9

@jacobperron jacobperron merged commit 14b0ce5 into master May 3, 2022
@delete-merged-branch delete-merged-branch bot deleted the jacob/qos_best_available branch May 3, 2022 17:34
jacobperron added a commit to ros2/rclcpp that referenced this pull request May 3, 2022
If users set a policy as 'best available', then the middleware will pick a policy
that is most compatible with the current set of discovered endpoints while maintaining
the highest level of service possible.

For details about the expected behavior, see connected changes:

- ros2/rmw#320
- ros2/rmw_dds_common#60

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants