Recommended Free Tools
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Use reliable QoS when every message matters; use best-effort when the newest reading matters more than recovering every lost sample. Reliable delivery can retry samples, but retries consume bandwidth, memory and time on a congested link. Best-effort delivery avoids that backlog, although packets can disappear. For many robots, that means reliable QoS for commands, configuration and mission state, and best effort for high-rate camera, lidar or IMU streams.
That rule is only the starting point. A ROS 2 publisher and subscription must also be compatible on durability, deadline, liveliness, history and depth. A reliable subscription will not connect to a best-effort publisher, while a best-effort subscription can receive from a reliable publisher. The practical way to choose a profile is therefore to decide how harmful loss or staleness would be, then verify the complete profile at both endpoints.
What is the difference between reliable and best-effort QoS in ROS 2?
Reliability is one policy in a larger ROS 2 Quality of Service (QoS) profile. It controls what the middleware does when a data sample is not delivered successfully.
Reliable reliability
A reliable publisher attempts to ensure that subscribed endpoints receive each sample. The underlying DDS middleware can acknowledge and retransmit data. This protects commands and state updates from silent loss, but retries add traffic and can increase buffering, latency and jitter when the network is lossy or congested. A slow or disconnected subscriber may also create a backlog that consumes memory.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Best-effort reliability
A best-effort publisher sends samples without attempting to recover every lost packet. A sample can therefore disappear on an unreliable wireless or overloaded network. The advantage is timeliness: the publisher can continue sending newer data instead of waiting for old data to be retransmitted. For a sensor stream, a fresh reading often makes an older reading useless, so losing an occasional sample may be preferable to delivering a stale one late.
| Property | Reliable | Best effort |
|---|---|---|
| Primary goal | Protect delivery of each sample | Keep current data moving with minimal recovery traffic |
| Loss tolerance | Low; middleware attempts retries | Higher; samples may be lost |
| Congested-link behavior | More retransmission, buffering and possible delay | Less recovery overhead, but gaps in data are possible |
| Typical fit | Commands, configuration, mission state and lifecycle transitions | High-rate camera, lidar, IMU and similar sensor streams |
| Main risk | Backlog and latency when a reader or link is slow | Missing samples and incomplete sequences |
Neither option is universally safer. A navigation node that receives an old command late may be less safe than one that notices a missing sensor frame, while a control loop that requires every state transition should not silently skip one. Treat reliability as a decision about the cost of loss versus the cost of delay.
Why does a ROS 2 publisher and subscriber fail to connect?
Most “topic is not receiving” incidents are QoS incompatibilities rather than a missing topic name. A publisher offers a QoS policy, while a subscription requests a minimum level. The offered profile must satisfy the subscription’s request.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteThe critical reliability rule
| Publisher offers | Subscription requests | Compatible? | Result |
|---|---|---|---|
| Reliable | Reliable | Yes | Samples can be delivered with reliability attempts |
| Reliable | Best effort | Yes | The subscription accepts the publisher’s reliable stream |
| Best effort | Best effort | Yes | Samples are delivered without recovery guarantees |
| Best effort | Reliable | No | The subscription’s minimum cannot be satisfied; no communication occurs |
This asymmetry explains a common surprise: changing only a subscriber to reliable can make a previously visible topic appear silent when the existing publisher is best effort. Making the subscriber best effort can restore compatibility, provided the other policies are compatible.
Check both endpoints before changing code
- List the topic and identify its publisher and subscriber nodes with
ros2 topic info /topic_name --verbose. - Record each endpoint’s offered or requested reliability, durability, deadline, liveliness, history and depth.
- Compare the publisher’s offer with the subscriber’s minimum request. Start with reliability because it is the most frequent mismatch.
- After changing a profile, restart the affected nodes and run the verbose topic inspection again. Confirm that the endpoints now report compatible policies.
Container boundaries, namespaces and discovery settings can also prevent an endpoint from appearing at all. If verbose topic information shows no publisher or subscriber, solve discovery or naming first; if both endpoints are present but incompatible, solve QoS.
Which ROS 2 topics should use reliable QoS?
Choose reliable QoS when losing one sample could cause an incorrect decision, an unsafe action or an unrecoverable state transition.
Commands and actuation requests
Velocity commands, gripper requests, docking commands and other discrete actions generally need reliable delivery. A lost command can leave an actuator in the wrong state. You still need an application-level timeout or watchdog: reliable QoS cannot deliver a message to a node that is powered off, and retries can delay a command on a severely degraded link.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Mission state and configuration
Mission goals, parameter changes, map-selection messages and configuration updates are usually low-rate and consequential. Reliable delivery avoids silently skipping a change. If a late update is dangerous, combine reliable transport with an explicit sequence number, validity interval or cancellation command in the application protocol.
Lifecycle and coordination events
Lifecycle transitions, handshakes and coordination signals often represent a state machine rather than a continuous stream. Reliable QoS helps every participant observe the transition, but all nodes should still handle duplicates, restarts and a peer that disappears.
When reliable can be the wrong choice
A reliable profile is not automatically better for a control loop. If retransmissions cause a stale command or state sample to arrive after newer data, the application may need a freshness check, a short lifespan or a different topic design. Test the worst network condition your robot must tolerate instead of assuming a wired development network represents deployment.
Should camera, lidar and IMU topics use best effort?
Usually, yes, when the stream is high rate and a newer sample supersedes an older one. ROS 2’s predefined sensor-data profile uses best effort because timely sensor readings are preferred over ensuring that every reading arrives.
Camera and image streams
Images can consume substantial bandwidth and memory. Retransmitting an old frame while the camera is producing new ones can increase latency without improving perception. Best effort lets consumers process the most recent frames that arrive, while the application can detect gaps through timestamps or sequence numbers when needed.
Lidar and point-cloud streams
A missed scan is often less harmful than a scan delivered after the robot has moved. Best effort reduces the chance that recovery traffic fills queues. Consumers should be designed to handle an absent scan and continue with the next complete one.
IMU and other fast sensors
For an IMU, a current measurement is normally more useful than a delayed measurement from several cycles earlier. Best effort is a strong default when the estimator can tolerate occasional gaps. If an algorithm requires an uninterrupted sequence, use reliable QoS only after measuring whether the link and queues can sustain the resulting traffic.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
When a sensor should be reliable
Reliability may be justified for a low-rate sensor event that triggers a safety action, for a calibration result that must not be skipped, or for data being logged as an authoritative record. Separate such events from the high-rate stream when possible, so one reliability choice does not impose unnecessary overhead on every sample.
How do the other QoS policies affect compatibility?
Matching reliability is necessary but not sufficient. ROS 2 profiles also include history, depth, durability, deadline, lifespan and liveliness. An incompatible value in any of these can prevent communication or produce behavior that looks like a reliability problem.
| Policy | What it controls | Questions to ask | Typical failure or trade-off |
|---|---|---|---|
| History | Which samples are retained | Keep the last samples, or keep all available samples? | An unexpected history mode can reject an endpoint or change memory use |
| Depth | How many samples a queue stores | How much burst or scheduling delay must the reader absorb? | Too shallow drops data; too deep increases memory and stale backlog |
| Durability | Whether previously published samples are made available to late-joining readers | Must a new node receive the last configuration or only future data? | An endpoint requesting retained data cannot be served by a publisher that does not offer it |
| Deadline | Expected maximum interval between samples | What absence interval should be reported as a missed deadline? | A deadline that is tighter than the publisher can meet creates status events and false alarms |
| Lifespan | How long a sample remains valid | Should delayed data be discarded after a freshness window? | A short lifespan prevents stale actions but may make late delivery look like loss |
| Liveliness | How the system determines that a publisher is still alive | Which participant or node must assert activity, and how often? | Inconsistent lease expectations can mark a healthy node as not alive |
History and depth are particularly important with reliability. A reliable stream needs enough queue capacity for expected bursts, but increasing depth does not solve an indefinitely slow link. Durability, lifespan and deadline express different concepts: retaining old data, rejecting old data and detecting missing data. Do not use one as a substitute for another.
How can I choose a QoS profile for a robot?
Use a repeatable decision process instead of copying a profile from an unrelated topic.
- Classify the message. Mark it as a discrete command/state event, a configuration or lifecycle update, a high-rate stream, or a record that must be complete.
- Define the failure that matters. Decide whether a missing sample, a late sample, a burst of samples or a late-joining reader is the most damaging outcome.
- Choose reliability. Select reliable when loss is unacceptable; select best effort when freshness dominates and the consumer can tolerate gaps.
- Set history and depth from traffic. Estimate burst size, callback scheduling delay and the maximum time a subscriber can be busy. Keep the queue large enough for that interval but not so large that stale data accumulates.
- Set durability deliberately. Use a retained-data behavior only when a late joiner genuinely needs the last value, such as a configuration or state snapshot.
- Set deadline and lifespan from system timing. A deadline should represent a meaningful expected period. A lifespan should be shorter than the time after which the data is unsafe or useless.
- Set liveliness and monitor it. Choose the assertion method and lease period that match how the node actually runs, then react to lost-liveliness events in the application.
- Verify the peer’s profile. Inspect the existing endpoint before deployment. Your chosen settings must be compatible with every intended publisher or subscriber.
- Test the degraded case. Add loss, delay, bandwidth limits or a disconnected subscriber to the test plan. Observe latency, queue growth, missed deadlines and recovery behavior.
Keep profiles explicit at interface boundaries. A topic consumed by several nodes may need a common contract, while a bridge or recorder can use a separate subscription profile if it has different loss and latency requirements.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →How do I set reliable or best-effort QoS in a node?
Use the QoS API of your client library and make the choice visible in code or configuration. The exact constructor names vary by language and ROS 2 distribution, so verify them against the API for the distribution you deploy.
Illustrative C++ pattern
rclcpp::QoS command_qos(rclcpp::KeepLast(10));
command_qos.reliable();
rclcpp::QoS sensor_qos(rclcpp::KeepLast(10));
sensor_qos.best_effort();
The queue depth in this example is illustrative, not a universal recommendation. Choose it from the producer rate, callback latency and link behavior, then set durability, deadline, lifespan and liveliness explicitly when the interface depends on them.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Illustrative Python pattern
from rclpy.qos import QoSProfile, ReliabilityPolicy, HistoryPolicy
command_qos = QoSProfile(
history=HistoryPolicy.KEEP_LAST,
depth=10,
reliability=ReliabilityPolicy.RELIABLE,
)
sensor_qos = QoSProfile(
history=HistoryPolicy.KEEP_LAST,
depth=10,
reliability=ReliabilityPolicy.BEST_EFFORT,
)
Do not assume that a library’s default profile matches the endpoint you are joining. For sensor topics, use the distribution’s sensor-data profile when it is appropriate, or reproduce its policies explicitly so the choice is clear during review.
What should I do when a topic works on Ethernet but not over Wi-Fi?
Treat the network path as part of the QoS design. A profile that is stable on a quiet wired network may build retransmission queues or miss deadlines over a lossy wireless link.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- Check whether a reliable subscriber is paired with a best-effort publisher; this is an immediate compatibility failure.
- For a reliable stream, watch for growing queue depth, increasing callback age and retransmission-related delay. Reduce message rate or payload size, add a freshness policy, or move the stream to best effort if occasional loss is acceptable.
- For a best-effort stream, verify that the consumer handles gaps and does not block waiting for a sequence that may never arrive.
- Separate critical commands from bulk sensors so reliable retries for one cannot consume the bandwidth needed by the other.
- Measure the actual deployment path, including wireless roaming, interference and intermediate links. ROS 2 QoS is intended to support both lossy environments and real-time deadline requirements, but the profile cannot overcome a link whose capacity is persistently below the offered traffic.
Middleware and DDS implementation details also matter. Different implementations can expose different defaults and diagnostics, so record the ROS 2 distribution, client library and DDS vendor when reproducing an incompatibility.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.What is the safest way to debug a QoS mismatch?
Change one policy at a time and preserve a record of the endpoint settings.
- Confirm the exact topic name, namespace and message type.
- Use verbose topic inspection to list every publisher and subscription, not only the topic’s existence.
- Compare reliability, then durability, deadline, liveliness, history and depth in that order.
- Temporarily connect a known-compatible diagnostic subscriber to distinguish a publisher problem from a consumer mismatch.
- After each change, restart the node if required by its launch setup and repeat the inspection.
- Once communication works, test loss and delay rather than stopping at a successful local connection.
A successful connection does not prove that the profile is suitable. A reliable link can still deliver stale data, and a best-effort link can still hide unacceptable loss unless the application reports timestamps, sequence gaps and deadline status.
Does reliable QoS guarantee that a robot will receive a command?
No. Reliable QoS is a delivery attempt between compatible, discovered endpoints; it is not an end-to-end safety guarantee. Power loss, process crashes, discovery failure, a broken route or an application that stops taking callbacks can still prevent action.
Safety-critical commands should therefore include an acknowledgement or state confirmation, a timeout, an emergency-stop path and a defined behavior when the sender or receiver disappears. QoS protects the transport contract, while the application protocol defines what the robot does when that contract cannot be fulfilled.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
How do ROS 2 QoS profiles relate to DDS?
ROS 2 maps its QoS settings onto the DDS middleware used by the chosen implementation. DDS performs discovery, matching and transport behavior, while ROS 2 exposes the policies through its client libraries and command-line tools.
This abstraction lets one interface target wired, wireless and real-time systems, but it does not erase implementation or network differences. When a problem appears only with one middleware, distribution or transport, capture that environment as part of the diagnosis rather than changing reliability blindly.
What is the practical rule for reliable versus best effort?
Protect irreplaceable decisions with reliable QoS, and protect freshness for replaceable high-rate data with best effort. Then check the complete profile and the real network: reliability alone cannot compensate for incompatible durability, deadlines, liveliness, history or depth, nor can it make an undersized link deliver every sample on time.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Open Robotics summarizes the purpose of these settings plainly: “QoS settings are used to configure the behavior of communication between nodes.” Use that behavior as an explicit interface contract, inspect both sides before deployment, and test the failure mode your robot must survive.
Frequently Asked Questions
Can a reliable ROS 2 subscriber read from a best-effort publisher if the topic names match?
No. The reliable subscription requests a delivery guarantee that the best-effort publisher does not offer, so the endpoints are incompatible. Change the subscription to best effort or change the publisher, then verify the other QoS policies as well.
Can I change a topic’s QoS while nodes are running?
QoS is established when endpoints are created, so changing source code or parameters normally requires recreating or restarting the publisher or subscription. Plan profile changes as interface changes and check every node that uses the topic.
How can an application tell that best-effort samples were lost?
Include timestamps or monotonically increasing sequence numbers in the message or an accompanying status stream. The consumer can then detect gaps and decide whether to continue, request a new snapshot or enter a degraded mode.
Free tools Windows power users keep installed
One-click scans. No signup required.
Should a rosbag recorder always use reliable QoS?
Not necessarily. Reliability can preserve every sample only if the recorder, queues and network can keep up; otherwise it may create delay or memory pressure. Choose a profile based on whether the recording is intended to be a complete archive or a timely operational trace, and test under the expected data rate.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

