Skip to content

CSE-ICE-21/Warehouse-Management-System

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warehouse Management System

This project is part of my Embedded Systems Project course module in Semester 5. It combines three key areas of my computer science and engineering curriculum: label segmentation using a U-Net architecture (Data Science part), a line-following robot (Embedded Systems part), and a web application for warehouse management (Software Engineering part).

You can watch this video to know how this works .

Table of contents

Introduction

This project is organized into four main components:

  1. Backend (for the web application)
  2. Frontend (for the web application)
  3. Line-Following Robot
  4. Inventory Analyzer

The backend and frontend is related with the Warehouse Management System(WMS). The line following robot consist with an IP-camera to capture images of inventory boxes. The inventory analyzer runs on my laptop. The following image describes copnnections between those entitites.

The Block diagram of main 4 entities
The Block diagram of main 4 entities

Prerequisites

Before running this project, ensure the necessary tools are installed:

  • For Backend & Frontend: Node.js, Git, MongoDB
  • For Inventory Analyzer: Python, OpenCV, NumPy, PyTorch
  • For Line-Following Robot: Arduino IDE, QTRSensors Library, EEPROMex Library, Encoder Library

After installation, run npm install in the backend and frontend directories to install the required npm modules. Set up your .env files based on the provided .env.example files in each directory.

1. Backend

The backend, built with Node.js and Express, manages all server-side operations. The backend is using four models:

  • productModel: for properties of inventory box.
  • tokenModel: for tokens.
  • userModel: for user information.
  • warehouseModel: for rack unit capacities.

Images are stored on Cloudinary; configurations are set in backend/utils/cloudinaryConfig.js file. Remember to place your Cloudinary credentials in the backend .env file. Local uploads are temporarily stored in backend/uploads.

Starting the Backend

First, Set up a MongoDB server and remember to save its URI into backend/.env file. Then Start the backend using:

npm start

2. Frontend

The frontend is developed in React, with all required files in frontend/src.

After run the frontend user will be move into Home page. Users can Login or sigup from there.

Homepage

After login, user can have the access to the WMS and move into dashboard. This includes an interactive Warehouse Map and a dashboard summarizing warehouse data.

Dashboard

Users can view the labels and the position of any inventory box from the Warehouse Map section.

Warehouse Map

Users can configure a rack in Warehouse section in menu bar at the right side. In this page, you can configure the number of units in a single rack.

Warehouse

Note

Here users can configure pnly upto 5 units and I considered only a single rack having one shelf.(That was for my ease😁)

The neccesory setting and details can be seen from the Robot section from the menu bar(didn't completed it yet 😢)

Users can view their account and edit their user information using Account section in the menu bar. Also report any bug via Report Bug section.

Starting the Frontend

Ensure the backend is running first, then start the frontend with:

npm start

3. Line-Following Robot

The robot, built with Arduino Mega2560, navigates racks to inspect inventory boxes using an IR sensor array to follow lines. A camera on the robot captures images of each box when an Aruco marker is detected. After that, the robot stops, captures the image, and sends the position and image data to the inventory analyzer.

Building the Line-Following Robot

Components:

  • Arduino Mega2560
  • QTR-8RC IR Sensor Array
  • HC-06 Bluetooth Module
  • L298N Motor Driver
  • 2 Gear Motors
  • Side Camera for box detection

The following image shows the block diagram of how these components wired.

Block diagram of the robot

Workflow

The following diagram shows the workflow of the robot process as a flow chart.

Workflow of the robot

4. Inventory Analyzer

The Inventory Analyzer Python script performs Aruco marker detection, sends commands to the robot, and processes images using a U-Net model for label segmentation. After processing, it sends the data, including positions and segmented images, to the backend.

Workflow

I use two threads for read receiving messages and detect Aruco markers. this image shows flow chart of this process.

Workflow of the inventory analyzer

Creating Your Own Dataset

First you need to collect some images (at least 100 for reliable results) and annotate them using tools like ImgLab. Use pc_handle/label_segmentation/. jupyter notebook codes to prepare the dataset for training.

  • To clean your dataset from unwanted data you can use Cleaning_images.ipynb file.
  • To split your data set into train, test and valid, you can use Data_Processing.ipynb file.
  • To verify your annotations manually, you can use Visualize_Dataset.ipynb file.

Every jupyter notebook incluedes neccesory details.

Training the Model

Use train.py with your training dataset to train the custom U-Net model. The trained model will be saved as a .h5 file for label segmentation tasks.

Running the Inventory Analyzer

Once all libraries are installed, run the analyzer. you can use

python main_code.py

Note

Ensure Bluetooth is enabled on your PC, and set up a Wi-Fi webcam for image capture.

References

You can refer these things and might be helpful to change things.

  • I followed the ZinoTrust Academy Inventory Management tutorial to build this WMS web application.
  • If you don't know how to segment using U-Net, You can learn from this video series.
  • I implemented the U-Net architecture using this github repo.

About

A warehouse inventory management system using autonomous line-following robots equipped with sensors and cameras. The robots navigate paths, detect Aruco markers, capture images of products, and send encoder data to a backend system for real-time inventory tracking and data processing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 86.7%
  • JavaScript 7.8%
  • Python 2.0%
  • SCSS 1.5%
  • C++ 1.2%
  • CSS 0.6%
  • HTML 0.2%