Skip to content

swastikmhptr/smores_ws

Repository files navigation

SMoRes (Searching while Modeling the Environment for Time-critical Rescues) [WEBSITE]

License: BSD3-clause ROS2 Humble Docker

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. Poster Presentation for Project

🚁 Overview

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.

Key Capabilities

  • πŸ”₯ 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

πŸ—οΈ System Architecture

The SMoRes system consists of several integrated components:

Core 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

Technology Stack

  • 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

πŸ“ Repository Structure

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

πŸš€ Quick Start

Prerequisites

  1. Docker Engine: Install Docker Engine using the official Docker documentation.

  2. 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.

  3. Foxglove : Install Foxglove using the official Foxglove documentation.

  4. 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

Basestation Setup

  1. Clone the repository:

    cd ~
    git clone git@github.com:castacks/smores_ws.git
    cd smores_ws
    git submodule update --init --recursive
  2. 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.

  3. Set up environment variables:

    cd scripts
    source set_env_basestation.sh  # For basestation
    source ~/.bashrc
  4. 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
  5. 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
  6. 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"

πŸ”§ Configuration

Environment Variables

Key environment variables that need to be configured:

  • SMORES_PATH: Path to the SMoRes workspace
  • BASESTATION_IP: IP address of the basestation
  • ROBOT_NAME: Name identifier for the robot/drone
  • ROS_DOMAIN_ID: ROS2 domain ID for network isolation

Sensor Configuration

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

πŸ“Š Data Streaming & Visualization

Foxglove Integration

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

Data Topics

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

πŸ› οΈ Development

Adding Custom Components

  1. ROS2 Packages: Add new packages to the appropriate workspace (smores_basestation_ws or smores_drone_drivers)
  2. Launch Files: Create launch configurations in the launch/ directory
  3. Foxglove Extensions: Develop custom panels in foxglove_extensions/

πŸ“ˆ Performance Monitoring

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

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

About

Searching while Modeling the Environment for Time-critical Rescues. Parent repository for all codes belonging to project SMoRes

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors