# About QoS of Images

**URL:** <https://discourse.openrobotics.org/t/about-qos-of-images/18744>\
**Category:** ROS General\
**Created:** [January 31, 2021, 8:09pm UTC](https://discourse.openrobotics.org/t/about-qos-of-images/18744 "2021-01-31T20:09:14Z")\
**Posts on this page:** 1\
**Showing post:** 16

<div class="post-metadata">

**Author:** ![BrettRD](https://avatars.discourse-cdn.com/v4/letter/b/e47c2d/32.png) [@BrettRD](https://discourse.openrobotics.org/u/BrettRD)\
**Post date:** [February 2, 2021, 3:22am UTC](https://discourse.openrobotics.org/t/about-qos-of-images/18744/16 "2021-02-02T03:22:30Z")

</div>

> [@wjwwood](#):
>
> We want it to be reliable and volatile by default (matching ROS 1’s style).

That clarifies a lot!

> [@wjwwood](#):
>
> This is because when the publisher is reliable and the subscription is best effort the data goes best effort.

I didn’t realise DDS convention was to use the lower resource transport, so many design decisions make sense now.

I also didn’t realise that the DDS XML was expressive enough to set publisher and subscriber defaults separately.

So if I wanted to break ROS1 style, leave configuration hell, and enter network reliability hell, I should change my DDS defaults at the DDS level and hope that the problem nodes are using `rclcpp::SystemDefaultsQoS`

`ros2_ws/DEFAULT_FASTRTPS_PROFILES.xml`:

```auto
<?xml version="1.0" encoding="UTF-8" ?>
<!-- This deviates from ROS1 behaviour in favour of not dealing with QoS issues -->
<dds>
    <profiles>
        <publisher profile_name="test_publisher_profile" is_default_profile="true">
            <qos>
                <reliability>
                    <kind>RELIABLE</kind>
                </reliability>
            </qos>
        </publisher>
        <subscriber profile_name="test_subscription_profile" is_default_profile="true">
            <qos>
                <reliability>
                    <kind>BEST_EFFORT</kind>
                </reliability>
            </qos>
        </subscriber>
    </profiles>
</dds>

```

This works, for nodes that use `rclcpp::SystemDefaultsQoS`, but so few of them do that it’s hard to tell if it this XML does anything (it does, on FastRTPS). Most nodes use `rclcpp::QoS(N)` This XML does not affect rqt, should I send a pull request?

Probably about time this question got an answer:

> **[ROS2: set reliability qos from XML profile - ROS Answers archive](https://answers.ros.org/question/316609/)**

---

_[View the full topic](https://discourse.openrobotics.org/t/about-qos-of-images/18744)._
