SMoRes (Searching while Modeling the Environment for Time-critical Rescues) [WEBSITE]
A First Response drone system designed for emergency responders to operate in perceptually degraded environments such as smoke and fire, while providing critical situational awareness through real-time mapping, human detection, and environmental reconstruction.

SMoRes is an advanced autonomous drone system that combines cutting-edge computer vision, simultaneous localization and mapping (SLAM), and multi-modal sensor fusion to enable safe and effective operations in challenging environments where visibility is severely compromised. The system is specifically designed for emergency response scenarios where traditional visual navigation fails.
- π₯ Smoke & Fire Navigation: Operates reliably in environments with heavy smoke, fire, and poor visibility
- π₯ Human Detection & Tracking: Advanced thermal and RGB-based human detection and re-identification
- πΊοΈ Real-time Mapping: Simultaneous mapping and reconstruction of degraded environments
- π‘οΈ Multi-modal Sensing: Integration of thermal cameras, RGB cameras, IMU, and depth sensors
- π‘ Robust Communication: Reliable data streaming and communication in challenging conditions
- π₯ First Responder Focused: Designed specifically for emergency response and rescue operations
The SMoRes system consists of several integrated components:
- SMoRes Basestation: Ground control station with visualization and mission control capabilities
- SMoRes Drone: Autonomous drone with multi-modal sensors and onboard processing
- HumanFlow: Advanced human detection, tracking, and re-identification system
- SLAM Workspace: Simultaneous localization and mapping algorithms
- Foxglove Extensions: Custom visualization tools and panels
- ROS2 Humble: Robot Operating System for distributed computing
- Docker: Containerized deployment for consistent environments
- NVIDIA Jetson: Edge computing platform for onboard processing
- Thermal Imaging: Advanced thermal camera integration
- Computer Vision: YOLO-based detection and tracking algorithms
- SLAM: Real-time mapping and localization
smores_ws/
βββ config/ # Configuration files for all components
β βββ foxglove/ # Foxglove visualization layouts
β βββ logging/ # Data logging configurations
β βββ pings/ # Network ping configurations
β βββ ros_domain/ # ROS domain configurations
βββ foxglove_extensions/ # Custom Foxglove visualization tools
β βββ bag_record_foxglove_panel/
β βββ cloudini_foxglove/
β βββ foxglove-battery-extension/
βββ HumanFlow_ws/ # Human detection and tracking system
βββ launch/ # Launch configurations for all components
β βββ smores_basestation/ # Basestation launch files
β βββ smores_drone_drivers/ # Drone driver configurations
β βββ smores_drone_isaac/ # Isaac simulation configurations
βββ scripts/ # Utility scripts for system management
βββ smores_basestation_ws/ # Basestation ROS2 workspace
βββ slam_ws/ # SLAM algorithms workspace
-
Docker Engine: Install Docker Engine using the official Docker documentation.
-
NVIDIA Container Toolkit:(Can be ignored for basestation without GPU) Install the NVIDIA Container Toolkit according to the official NVIDIA documentation. This also requires the CUDA Toolkit and NVIDIA Driver, which can be found here.
-
Foxglove : Install Foxglove using the official Foxglove documentation.
-
Other Dependencies: Install the following dependencies using
apt:sudo apt-get update sudo apt-get install -y curl dpkg-dev git lsb-release openssh-server python3-pip rsync sshpass tmux tmuxp
-
Clone the repository:
cd ~ git clone git@github.com:castacks/smores_ws.git cd smores_ws git submodule update --init --recursive
-
Update environment variables: Update the SMORES_PATH and NDDS_QOS_PROFILES variables in "config/smores_basestation.env" based on the current root location of smores_ws code. eg:- "/home/user_name/smores_ws". Also update BASESTATION_IP to an available ip address on your system where foxglove can start bridge.
-
Set up environment variables:
cd scripts source set_env_basestation.sh # For basestation source ~/.bashrc
-
Setup docker containers:
# Pull docker images cd $SMORES_PATH/launch/smores_basestation ./pull.sh # Build and launch the docker container docker compose up --build basestation-drivers -d #Build with GPU support docker compose up --build basestation-drivers-no-gpu -d #CPU only build
-
Access tmux terminals:
# Enter the running docker container docker exec -it smores-basestation_ros2 bash #GPU build docker exec -it smores-basestation-no-gpu_ros2 bash #CPU only build # view running tmux containers tmux a
-
Foxglove setup: For foxglove panel layout can be found in "$SMORES_PATH/config/foxglove" and the code for custom extensions can be found in "$SMORES_PATH/foxglove_extensions"
Key environment variables that need to be configured:
SMORES_PATH: Path to the SMoRes workspaceBASESTATION_IP: IP address of the basestationROBOT_NAME: Name identifier for the robot/droneROS_DOMAIN_ID: ROS2 domain ID for network isolation
The system supports multiple sensor configurations:
- Thermal Cameras: Dual thermal camera setup for stereo vision
- RGB Cameras: High-resolution color cameras for visual navigation
- IMU: High-precision inertial measurement unit
- Depth Sensors: RealSense cameras for depth perception
The system includes custom Foxglove extensions for advanced visualization:
- Bag Recording Panel: Automated data recording with configurable topics
- Cloudini Integration: Point cloud visualization and compression
- Battery Monitoring: Real-time battery status visualization
Key ROS2 topics for system monitoring:
/thermal_left/preprocd_image- Left thermal camera feed/thermal_right/preprocd_image- Right thermal camera feed/drone/poi_detection- Human detection results/nvblox_node/pessimistic_static_esdf_pointcloud- SLAM point cloud
- ROS2 Packages: Add new packages to the appropriate workspace (
smores_basestation_wsorsmores_drone_drivers) - Launch Files: Create launch configurations in the
launch/directory - Foxglove Extensions: Develop custom panels in
foxglove_extensions/
The system includes comprehensive health monitoring:
- System Health: CPU, memory, and network monitoring
- Algorithm Health: SLAM, detection, and tracking performance
- Sensor Health: Camera, IMU, and GPS status monitoring
- Communication Health: Network connectivity and data streaming
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- AirLab Stacks: Core development team
- CMU's DTC Team Chiron: Core development team
- Carnegie Mellon University: Research and development support
- First Responder Community: Requirements and feedback