Advertisement
Advanced Time: 6–8 weeks Robotics

Search and Rescue Robot

Build a teleoperated search and rescue robot with thermal imaging, gas detection, and victim localization capability.

SARThermal CameraROSTeleoperationGas SensorSLAM
DifficultyAdvanced
Duration6–8 weeks
Components10 items
Steps4 steps

Introduction

Build a teleoperated search and rescue robot with thermal imaging, gas detection, and victim localization capability. This comprehensive guide covers everything from design through implementation, testing, and deployment.

Theory & Background

Tracked robots are ideal for SAR due to superior obstacle climbing (can surmount obstacles 60–80% of track height), better traction on debris, rubble, and wet surfaces, lower ground pressure distribution, and stability on slopes up to 45°. Configure encoder-based odometry for each track. Drive via skid steering: both tracks forward = straight, one faster = curve, opposite directions = pivot turn.

Advertisement

Components & Requirements

10 components required for this project.

#ComponentPurposeQty
1Tracked Robot Platform (heavy duty)Rough terrain mobilityx1
2FLIR Lepton 3.5 Thermal CameraHuman body heat detectionx1
3MQ-2 Gas Sensor ArrayCO, LPG, smoke detectionx3
4Raspberry Pi 4 (8GB)Main processing unitx1
54G LTE Module (SIM7600)Long-range communicationx1
6RPLidar A23D environment mappingx1
7Pan-Tilt Camera (HD IP)Operator view and victim identificationx1
8IMU (BNO055)Attitude and heading referencex1
9CO2 Monitor (MH-Z19)Air quality for victim survivabilityx1
10LED Floodlight (12V, 20W)Illumination in dark rescue environmentsx2

Step-by-Step Implementation

Follow these 4 steps carefully.

1
Tracked Platform Assembly for Rough Terrain

Tracked robots are ideal for SAR due to superior obstacle climbing (can surmount obstacles 60–80% of track height), better traction on debris, rubble, and wet surfaces, lower ground pressure distribution, and stability on slopes up to 45°. Configure encoder-based odometry for each track. Drive via skid steering: both tracks forward = straight, one faster = curve, opposite directions = pivot turn.

2
Thermal Camera Integration for Victim Detection

FLIR Lepton 3.5 provides 80×60 pixel thermal image at 8.7Hz via SPI. Each pixel is a temperature reading. Human body temperature (36–37°C) appears significantly warmer than structural wreckage (< 25°C). Implement a threshold detector: find all pixels > 33°C in an otherwise cool scene. Cluster adjacent hot pixels — clusters > 20×20 pixels likely indicate a person. Alert operator with audio alarm and highlight on display.

3
4G Teleoperation System

Stream compressed H.264 video (main camera + thermal overlay) via 4G link. Implement control via UDP socket: joystick commands sent from operator station at up to 50Hz. H.264 video at 720p: 1–3 Mbps, acceptable latency < 200ms on 4G. Use WebRTC for browser-based operator station. Implement control input smoothing to compensate for network latency jitter. Add automatic re-connection on link loss with teleoperation lock (safe stop) on signal loss > 2 seconds.

4
Gas Sensor Fusion for Hazard Assessment

Mount MQ-2 (CO/smoke), MQ-7 (CO only), and MH-Z19 (CO2) sensors. Read every 5 seconds. Display readings: CO < 50ppm (safe), 50–200ppm (caution), >200ppm (evacuate). CO2 > 5000ppm indicates poor ventilation — victim may be unconscious from oxygen depletion. LPG/methane > 1% LEL indicates explosion risk. Log all readings with GPS coordinates to map hazard zones.

Code & Implementation

Core code for sar_robot.py:

sar_robot.py Python
import socket, cv2, numpy as np, struct, threading

class SARRobot:
    def __init__(self):
        self.cmd_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.video_cap = cv2.VideoCapture(0)

    def process_thermal(self, thermal_array):
        """Detect potential victims in thermal image"""
        mask = (thermal_array > 33) & (thermal_array < 40)
        contours, _ = cv2.findContours(mask.astype(np.uint8), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        victims = []
        for cnt in contours:
            if cv2.contourArea(cnt) > 100:  # Min area threshold
                x,y,w,h = cv2.boundingRect(cnt)
                victims.append({"bbox": (x,y,w,h), "temp": np.max(thermal_array[y:y+h, x:x+w])})
        return victims

    def send_motor_command(self, left_speed, right_speed, server_ip):
        cmd = struct.pack('ff', left_speed, right_speed)
        self.cmd_sock.sendto(cmd, (server_ip, 9999))

Testing & Troubleshooting

Test Search and Rescue Robot by verifying each subsystem individually before full integration.

!
Troubleshooting Tips

Verify power voltages, check ground connections, use serial monitor for debug.

Real-World Applications

*Post-earthquake victim search
*Building collapse rescue assistance
*Mine accident rescue support
*Hazardous material incident response
*Flood rescue scouting
*Nuclear facility emergency response
*Forest fire survivor search
*Terrorist incident tactical support

Extensions & Next Steps

  • Add acoustic sensor for voice/heartbeat detection through rubble
  • Implement autonomous victim mapping using SLAM + thermal fusion
  • Add a manipulator arm for light debris removal
  • Build communication relay capability for trapped survivor communication
  • Integrate with incident command system software for multi-agency coordination

Interactive Playground

Coming Soon

An interactive simulator will be available here — simulate circuits and run code in-browser without hardware.

Frequently Asked Questions

How does the thermal camera detect victims under rubble?
Thermal cameras detect infrared radiation, which can penetrate thin layers of dust and fabric but not solid concrete or thick rubble. A person under debris: if rubble layer is < 30cm wood/plasterboard, body heat may warm the surface slightly (0.5–1°C above ambient) — detectable with sensitive thermal cameras. Through thick concrete walls: thermal cameras cannot detect. In these cases, acoustic vibration sensors, CO2 sensors (elevated CO2 near trapped victims), or specialized ground-penetrating radar are used.
Advertisement