이 가이드는 인류와 AI가 함께 만드는 지식입니다.
이 콘텐츠는 Human + AI Partnership 철학 아래 모든 사람이 로봇·AI를 배울 수 있도록 무료로 제공됩니다. 당신의 질문과 기여가 다음 학생의 미래를 바꿉니다.
ROS 2 Inspection & Maintenance Robotics Guide 2026
Inspection is the highest-ROI commercial robotics use case today — robots checking pipes, power lines, turbines, and bridges that are dangerous or tedious for humans. This guide covers the ROS 2 stack for repeatable autonomous inspection and anomaly detection.
1. The Inspection Robot Stack
Inspection value comes from repeatability: the same route, the same viewpoints, every time:
sudo apt-get install -y ros-humble-nav2-bringup ros-humble-robot-localization ros-humble-image-pipeline
# Layers:
# 1. Localization (map-based, sub-meter repeatable)
# 2. Mission executor (fixed waypoints + inspection actions)
# 3. Data capture (RGB, thermal, acoustic, gas)
# 4. Anomaly analytics (compare vs baseline, flag defects)
# 5. Reporting (geolocated findings -> CMMS)2. Repeatable Inspection Missions
Define named inspection points with the sensor action to perform at each:
INSPECTION_MISSION = [
{'id': 'gauge_A1', 'pose': (12.4, 3.1, 1.57), 'action': 'read_gauge'},
{'id': 'valve_B2', 'pose': (18.0, 5.2, 0.0), 'action': 'thermal'},
{'id': 'pipe_C3', 'pose': (22.5, 5.2, 3.14), 'action': 'visual+acoustic'},
]
def run_mission(self, mission):
results = []
for pt in mission:
self.nav.goToPose(to_pose(pt['pose']))
self.nav.waitUntilNavComplete()
self.settle() # damp motion for a sharp capture
results.append(self.capture(pt['id'], pt['action']))
return results # identical viewpoints enable time-series comparison3. Reading Analog Gauges
Many facilities still have analog gauges. Read them with vision:
import cv2, numpy as np
def read_gauge(image, center, min_angle, max_angle, min_val, max_val):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150)
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 80,
minLineLength=40, maxLineGap=5)
needle = longest_line_through(lines, center) # the pointer
angle = line_angle(needle, center)
frac = (angle - min_angle) / (max_angle - min_angle)
return min_val + frac * (max_val - min_val) # gauge reading4. Thermal Anomaly Detection
Overheating is an early failure signal. Flag hotspots against a baseline:
def detect_hotspots(thermal_frame, baseline, threshold_c=15.0):
delta = thermal_frame - baseline # rise vs healthy baseline
hotspots = np.argwhere(delta > threshold_c)
findings = []
for (v, u) in cluster(hotspots):
findings.append({
'pixel': (u, v),
'temp_rise_c': float(delta[v, u]),
'severity': 'critical' if delta[v, u] > 30 else 'warning'
})
return findings # a bearing running 30C hot = schedule maintenance5. Visual Defect Detection
Detect corrosion, cracks, and leaks with a trained model, then localize in 3D:
def detect_defects(self, rgb, depth, camera_info):
dets = self.defect_model(rgb) # corrosion/crack/leak classes
findings = []
for d in dets:
p3d = pixel_to_3d(d.u, d.v, depth, camera_info)
world = tf_transform(p3d, 'camera', 'map')
findings.append({'type': d.label, 'conf': d.conf,
'location': world}) # geolocated defect
return findings6. Change Detection Over Time
The real power: compare today's capture to the last run at the exact same viewpoint:
def compare_runs(current, previous):
# Same pose => aligned images; diff reveals new/growing defects
aligned = register(current.image, previous.image)
diff = structural_diff(aligned, previous.image)
growth = [r for r in diff.regions if r.area > MIN_CHANGE]
return {'new_defects': growth,
'trend': 'worsening' if growth else 'stable'}
# Corrosion that grew 20% since last month -> prioritize repair7. Confined & Hazardous Spaces
- Gas detection: carry gas sensors; abort and alert on dangerous readings.
- Tethered comms: RF fails in pipes/tanks — use tethers or store-and-forward.
- Intrinsically safe: ATEX/IECEx-rated hardware in explosive atmospheres.
- Self-recovery: plan egress so the robot never strands where a human can't reach.
8. Docking & Autonomous Recharge
# Scheduled autonomous inspection with self-charging
def daily_cycle(self):
while True:
wait_until(next_scheduled_run())
self.undock()
results = self.run_mission(INSPECTION_MISSION)
self.publish_report(results)
self.return_to_dock()
self.charge_until(0.95)
# Unattended 24/7 inspection is the commercial payoff9. Reporting & CMMS Integration
- Geolocated findings: every defect carries a map/world coordinate.
- Severity triage: critical hotspots page on-call; minor ones queue.
- Work orders: push findings into the CMMS (Maximo, SAP PM) automatically.
- Audit trail: timestamped imagery per asset for compliance.
10. Real Platforms & ROI
- Spot + payloads: substation, plant, and site inspection.
- ANYmal: offshore and industrial autonomous inspection.
- Crawlers: pipe and tank internal inspection.
- ROI: removes humans from confined-space/height risk and enables continuous monitoring vs periodic manual checks.
Key Takeaways
Inspection robotics turns repeatability into value: fixed missions, identical viewpoints, and time-series comparison that catches problems while they are cheap to fix. Combine gauge reading, thermal hotspot detection, and vision-based defect localization, then compare each run to the last to spot growth. Autonomous docking enables unattended 24/7 coverage, and CMMS integration turns findings into work orders — which is exactly why inspection is one of the strongest commercial cases in robotics today.