이 가이드는 인류와 AI가 함께 만드는 지식입니다.
이 콘텐츠는 Human + AI Partnership 철학 아래 모든 사람이 로봇·AI를 배울 수 있도록 무료로 제공됩니다. 당신의 질문과 기여가 다음 학생의 미래를 바꿉니다.
ROS 2 Disaster Response Robotics Guide 2026
Search-and-rescue robots go where humans can't — collapsed buildings, mines, flooded tunnels. This guide covers the ROS 2 stack for disaster response: SLAM in degraded environments, victim detection, resilient teleoperation, and the multi-robot exploration proven in the DARPA Subterranean Challenge.
1. The SAR Robot Stack
sudo apt-get install -y ros-humble-slam-toolbox ros-humble-nav2-bringup ros-humble-rmw-cyclonedds-cpp # robust DDS for lossy links
# Layers:
# 1. Degraded-env SLAM (LiDAR+thermal+IMU, no GPS)
# 2. Autonomous explore (frontier-based coverage)
# 3. Victim detection (thermal + CO2 + audio + vision)
# 4. Resilient comms (mesh + store-and-forward)
# 5. Operator interface (supervised autonomy)2. SLAM in Degraded Environments
Smoke, dust, and darkness defeat cameras. Fuse LiDAR + IMU + thermal for robust odometry:
# LIO (LiDAR-inertial odometry) is the backbone in GPS-denied,
# visually-degraded spaces (the DARPA SubT winning approach).
ros2 launch lidar_slam lio.launch.py lidar_topic:=/points imu_topic:=/imu/data # thermal + radar fuse in when dust blinds the LiDAR
# Config priorities:
# - degeneracy detection (long featureless tunnels)
# - loop closure across multi-level structures
# - drift-bounded odometry when features vanish3. Frontier-Based Autonomous Exploration
def choose_frontier(frontiers, robot_pose, comms_range):
"""Pick the next unknown-boundary to explore, balancing
information gain, travel cost, and staying in comms."""
best, best_score = None, -1e9
for f in frontiers:
gain = f.unknown_cells # new area revealed
cost = path_length(robot_pose, f.centroid)
comms = comms_penalty(f.centroid, comms_range)
score = gain - 0.5 * cost - comms
if score > best_score:
best, best_score = f, score
return best # drop a comms 'breadcrumb' node if going out of range4. Victim Detection (Multi-Modal)
No single sensor is reliable in rubble. Fuse thermal, CO2, audio, and vision:
def detect_victim(self, sensors):
signals = {
'thermal': body_temp_blob(sensors.thermal), # 30-37C shape
'co2': sensors.co2 > BASELINE_CO2 + 200, # exhaled CO2
'audio': detect_human_sound(sensors.mic), # voice/tapping
'visual': self.person_model(sensors.rgb),
}
confidence = weighted_fusion(signals)
if confidence > VICTIM_THRESHOLD:
loc = tf_transform(sensors.point, 'sensor', 'map')
self.report_victim(loc, confidence, signals) # geotag + evidence5. Resilient Communications
- Mesh networking: robots relay for each other deep inside structures.
- Breadcrumb nodes: drop radio repeaters to extend range.
- Store-and-forward: map/victim data syncs when a link is regained.
- Cyclone DDS: tune QoS for high-loss, high-latency links.
- Bandwidth budgeting: send compressed maps + thumbnails, full data on request.
6. Supervised Autonomy & Teleop
# Sliding autonomy: robot handles low-level nav, operator sets intent
def command_cycle(self):
if self.comms_ok():
goal = self.operator_goal() # human picks direction
else:
goal = self.autonomous_frontier() # explore on its own
self.nav.goToPose(goal)
# On link loss the robot never freezes — it keeps mapping and
# returns toward the last comms point if it can't proceed.7. Traversing Rubble
- Tracked/legged/snake robots: match morphology to the terrain.
- Traversability estimation: classify safe vs unsafe from geometry.
- Self-righting: recover from tip-overs autonomously.
- Tether option: for retrieval and power in the worst spaces.
8. Multi-Robot Coordination
# Partition exploration so robots don't cover the same ground
def assign_regions(robots, frontiers):
# Auction: each robot bids its cost to reach each frontier
assignment = {}
for f in frontiers:
bids = {r.id: path_length(r.pose, f.centroid) for r in robots}
winner = min(bids, key=bids.get)
assignment.setdefault(winner, []).append(f)
return assignment # merge each robot's submap into a shared map9. Lessons from DARPA SubT
- Heterogeneous teams: ground robots + drones cover more, faster.
- LiDAR-inertial odometry: beat vision in dust/dark, repeatedly.
- Comms is the bottleneck: autonomy must survive total link loss.
- Human-on-the-loop: one operator supervising many robots scales best.
- Artifact reporting: precise geolocation matters more than raw detection count.
10. Deployment Realities
- Ruggedization: water, dust, heat, impact resistance are non-negotiable.
- Battery + swap: long missions need hot-swap or return-to-charge.
- Rapid setup: responders need it running in minutes, not hours.
- Interoperability: feed victim locations into incident command systems.
Key Takeaways
Disaster-response robotics is autonomy under the worst conditions: LiDAR-inertial SLAM when cameras are blind, frontier exploration that respects comms range, and multi-modal victim detection fusing thermal, CO2, audio, and vision. Communications is the true bottleneck — build mesh relays, breadcrumbs, and store-and-forward so autonomy survives total link loss. The DARPA SubT Challenge proved the recipe: heterogeneous teams, LIO odometry, and one human supervising many robots.