Skip to content

Qos configurability#1408

Merged
ivanpauno merged 38 commits intomasterfrom
ivanpauno/qos-configurability
Nov 16, 2020
Merged

Qos configurability#1408
ivanpauno merged 38 commits intomasterfrom
ivanpauno/qos-configurability

Conversation

@ivanpauno
Copy link
Member

@ivanpauno ivanpauno commented Oct 15, 2020

Prototype of ros2/design#300.

Depends on #1410.
Diff omitting #1410: https://github.com/ros2/rclcpp/pull/1408/files/ec90cb53091e355dcf194c944fcaf239c5fa6699..9197a8f2bfe9da6e54f3e30779b3b1c0236339f2.


Not quite ready yet.
Things to solve before merging:

  1. Get the final topic name before creating a publisher/subscription

    • rcl support for expand and remap.
    • Wrap the rcl function in an rclcpp method for Node (PR).
  2. create_subscription and create_publisher can be called without a parameters interface

    I'm not quite sure what to do about this.
    If the user wants to only provide a topics interface (without using qos overrides), that should be ok.
    Maybe fail when qos overrides are enabled and a parameters interface isn't provided?

    • Add create_publisher/create_subscription overload taking both a topics interface and a parameters interface (4d6ad65).
    • Handle error when qos overrides are enabled and a parameters interface isn't provided: A warning is being logged in this case.
    • See places that need special handling in rclcpp code in create_publisher.hpp/create_subscription.hpp comments.
      Added notes, this can be resolved in a follow-up.
  3. Improve QosOverridingOptions API

    Not a blocker for merging this, but we should have minimal API that won't be deprecated.
    Maybe QosOverridingOptions could use the builder pattern or the parameter idiom to make things easier.
    I definitely also want either builder pattern/parameters idiom in PublisherOptions/SubscriptionOptions, but that can be done in a follow up.

  4. Test coverage

    • Improve test coverage (note: this can still be improved)
  5. Move things that can be shared between rclcpp/rclpy to rcl/rmw

    • Conversions between policy values and strings (PR).
    • Extend rmw_qos_policy_kind_t to cover all possible policies (and move that to a more appropriate header). Define rclcpp::QosPolicyKind values based on that. Conversions to/from strings can be implemented there (PR).
    • Use the new rmw functions in this PR (77eec6d).
  6. Support in other client libraries

    • Support in rclpy (PR)

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants