Practice the ROS2 QoS - Reliable vs Best Effort coding problem in Topics. Browser-based execution with automated grading — no local ROS install required. 52% of engineers pass this challenge.
QoS controls how messages are delivered between publishers and subscribers. Two critical settings:
Reliability:
RELIABLE — guarantees delivery (retransmits lost messages). Use for: commands, goals, service calls.BEST_EFFORT — faster, no retransmission. Use for: sensor streams (camera, LiDAR) where old data is useless anyway.History / Durability:
VOLATILE (default) — subscribers only get messages published after they subscribe.TRANSIENT_LOCAL — subscribers get the last N messages even if they subscribed late. Use for: robot_description, map.Mismatch = silent failure: If a publisher uses RELIABLE and a subscriber uses BEST_EFFORT, they won't communicate. ROS2 silently drops the connection.
from rclpy.qos import QoSProfile, ReliabilityPolicy
qos = QoSProfile(depth=10, reliability=ReliabilityPolicy.BEST_EFFORT)
self.sub = self.create_subscription(LaserScan, '/scan', self.cb, qos)
Understand Quality of Service (QoS) policies. Create a publisher with Reliable QoS and one with Best Effort.
qos_test/reliable_topic, QoS: Reliable/best_effort_topic, QoS: Best Effortstd_msgs/StringOutput:
It is a hands-on Topics challenge on SimuCode where you implement and run ROS2 code in the browser with runtime-verified tests.
Open this page, sign in, and solve the problem in the built-in IDE. Your solution is graded against real ROS2 execution checks.
This Hard problem focuses on qos, reliability, topics skills used in robotics interviews and production systems.