Coder Social home page Coder Social logo

jasmeet0915 / garuda Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 72.4 MB

G.A.R.U.D.A (Geospatial Animal Reconnaissance User DAshboard): Project for NetworkOptix Hackathon 2024

CMake 9.63% C++ 59.72% Shell 4.77% HTML 3.25% CSS 2.04% JavaScript 17.29% Python 3.29%

garuda's Introduction

GARUDA-Nx-Evos-Hackathon

GARUD: Geo-spatial Animal Reckon User Dashboard

Problem

Tourism in national parks offers a chance to observe wildlife and nature up close. However, there are many challenges faced by rangers, tourists, and researchers.

  1. Tourists: Need to know the last known location of the animals they’ve traveled to see.
  2. Researchers: Require data for locating animals and tracking their daily habits.
  3. Rangers: Need alerts about injured animals or poachers hunting illegally.

Solution

GARUD relies on drones and cameras across the national park for camera streams. RTSP streams from these cameras are accessed on the Nx Meta Desktop Client. This desktop client has a plugin developed with the Nx Metadata SDK, which enables:

  • Wildlife Detection: Utilizing YOLO v8 and OpenCV.
  • Poaching Alerts: Triggered by event metadata when a poacher is detected.

The object metadata and event metadata are exposed to the Nx Server, which is finally shown on the Nx Desktop client.

Nx Desktop client is also powered by a React frontend that displays a national park map showing the last known locations of different animals. Location data from cameras is sent to the server, which then updates the React frontend. The locations can be inferred using GPS coordinates. Animal-type data is sent from Nx Data Metadata SDK Plugin.

Highlights for users

Nx Desktop Client addresses challenges for three types of users: rangers, tourists, and researchers. It offers the following features:

  • Locating Wildlife on the National Park Map: View the last known locations of various animals on an interactive map.
  • Real-Time Stream for Detected Wildlife: Watch live streams of wildlife detected by cameras and drones.
  • Poacher Alerts: Receive real-time notifications about detected poachers.

Future Enhancements:

  • Water Tracking and Analytics: Monitor water sources like ponds and lakes to track animal activity and water levels.
  • Feeder Control: An automated feeder system controlled via Nx Event metadata to assist in feeding animals.

Interface Overview

  • Map View: Shows a map of the national park with icons representing the last known locations of different animals.
  • Live Stream: Displays real-time footage from drones and cameras.
  • Notification Window: Alerts for poachers or other significant events appear here.
  1. For Tourists
  • Finding Animals: Use the map to locate the last known position of the animals you are interested in. Click on the animal icons for more details.
  • Watching Live Feeds: Switch to the live stream window to watch real-time footage of animals in their natural habitat.
  1. For Rangers
  • Monitoring Wildlife: Keep track of animal locations and movements using the map view which can be used in case of injured animals.
  • Poacher Alerts: Receive real-time notifications about potential poachers.

Demo Screenshots

Screenshot from 2024-05-21 00-27-53

Screenshot from 2024-05-23 01-27-22

Screenshot from 2024-05-23 01-28-32

Screenshot from 2024-05-23 01-29-40

Technologies used

  1. Nx Meta Desktop Client
  2. Nx Metadata SDK
  3. Nx Meta MVS Media Server
  4. YOLOv8
  5. OpenCV: C++
  6. RTSP server
  7. FFMPEG
  8. React Frontend

Build & Run

The project relies on the source build of OpenCV version >= 4.7. Instructions for the same can be found here.

Note: Make sure to use flags: WITH_ONNX, WITH_CUDA while configuring the build with cmake and set the CMAKE_INSTALL_PREFIX to the install location of nx-meta mediaserver (it is generally /opt/networkoptix-metavms/mediaserver). This would allow Nx Mediaserver to find OpenCV's shared libraries. After building & installing OpenCV, you can start building the projects with following instructions:

  • Clone the project:
    git clone https://github.com/jasmeet0915/GARUDA.git
  • Navigate to the directory and create a build directory:
    cd GARUDA && mkdir build
  • Configure the build using cmake:
    cmake -DmetadataSdkDir=$NX_METADATA_SDK -B ./build

    Note: Here $NX_METADATA_SDK is an environment variable with the path where the metadata sdk is installed.

  • Finally build the project:
    sudo cmake --build ./build --target install --config Release -- -j
    This command will build the required plugin shared library and install it in the /bin/plugins/ directory of the mediaserver automatically.
  • After this, restart the mediaserver systemctl service:
    sudo systemctl restart networkoptix-metavms-mediaserver.service
  • Start the frontend and video streams by executing the provided script:
    cd GARUDA/scripts && ./start_garuda.bash

    Note: This command would require videos to be installed in resources/videos path and the $PROJECT_MEDIA_PATH environment variable to be set. Update the names of the videos accordingly in the script.

  • Start the NX Meta Desktop Client and enjoy!

Video

Watch the video

garuda's People

Contributors

jasmeet0915 avatar amanjeetsingh150 avatar

Stargazers

Naman Malik avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.