Skip to content

A C++ project that detects and tracks humans and returns their position in the robot's frame of reference.

License

Notifications You must be signed in to change notification settings

z-Ash-z/Human_detection_and_tracking

Repository files navigation

Human Dectection and Tracking Module for Acme Robotics

A C++ Module for new robotics-based product of ACME Robotics using high-quality engineering practices to detect and track Humans and return their position in the robot's reference frame.

Build Status Coverage Status License: MIT

Authors

Table of Contents

  1. Introduction
  2. Deliverables
  3. Proposal Documentation
  4. Development Process
  5. UML Diagrams
  6. Dependencies
  7. Tools

Introduction

Object detection and tracking is a computer vision task that has become essential for many robot applications. The object detection and tracking is the base for autonomous robots in specific. Suppose there is a autonomous delivery robot that is on a mission, it has to identify objects, track them, convert their coordinates to the robot's frame of reference and then try to avoid it. This project is foucussed on solving this problem using existing state-of-art object detection algorithms.

As per Acme Robotic's requirement, we will use the input from a monocular camera to detect and track an object. This object is then converted to the robot's frame of reference. This package is then used by Acme in their robotics-based product that will be lauched next year.

Our system uses YOLOv3 model that is trained using COCO dataset and is built using C++. COCO dataset is a large-scale object detection, segmentation, and captioning dataset. Our system takes an image from a monocular camera, pre-processes the image, passes this image to the trained model, filters out the human object with the highest confidence and then outputs the location of the object in the robot's frame of reference.

Deliverables

  1. Proposal Documentation
  2. UML Diagrams
  3. Project Package with demonstrated OOPs concepts
  4. CI using GitHub
  5. Code Coverage using Coveralls
  6. Unit Tests using Google Test Framework
  7. Developer Level Documentation
  8. Static code analysis with cppcheck
  9. Google C++ Style guide with cpplint validation

Project proposal

  • The project proposal document can be found here.
  • The proposal video can be found here.
  • The quadchart can be found here.

Sample Output

Sample Output

System Design

Development methodology

Agile software development model will be used for the development process where tasks will be tracked using a backlog table. The software is designed in a Test-Driven Development fashion and implemented using Pair programming technique. The tasks will be outlined for every sprint and after each sprint, the roles of the pair-programming group will be interchanged.

Development process

  • Using the Software Engineering Practices, all design and development work was followed Agile Iterative Process (AIP) where product backlog, iteration backlog, and work log were maintained usign appropriate measure. The Sheet can be accessed here
  • Each sprint's notes and reviews have been documented here
  • The project video

System architecture

  • The class diagram can be found here.

  • The flow of our system is as follows:

Activity Diagram

Dependencies

Name Version License
Ubuntu 20.04(LTS) FSF Licenses
C++ 14 Creative Commons Attribution-ShareAlike 3.0 Unported License
OpenCV 4.6.0 Apache License 2.0
Cmake 3.16.3 BSD 3-clause License

Tools used

Usage/Type Tool name License
IDE Visual Studio Code MIT License
CI pipeline Github CI Creative Commons Attribution 4.0
Code coverage Coveralls Coveralls, LLC
Running tests Gtests BSD 3-Clause "New" or "Revised" License

Installing Dependencies

# Install minimal prerequisites (Ubuntu 18.04 as reference)
sudo apt update && sudo apt install -y cmake g++ wget unzip

# Download and unpack sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
unzip opencv.zip

# Create build directory
mkdir -p build && cd build

# Configure
cmake  ../opencv-4.x

# Build
cmake --build .

# install
sudo make install

Running the project

Build the model

git clone https://github.com/z-Ash-z/Human_detection_and_tracking.git
cd <repository path>
mkdir build
cd build
cmake ..
make

Running the model

cd <repository path>/build
./app/human_detect_and_track_app

Running the tests

cd <repository path>/build
./test/cpp-test

Generating doxygen documentation

To install doxygen run the following command:

sudo apt-get install doxygen

To generate the doxygen documents:

doxygen doxygen.config

The documents generated are store in ./docs/doxygen folder.

Known issues/bugs

  1. Depends on lighting conditions
  2. Low fps
  3. Identified human is highly sensitive to threhold

About

A C++ project that detects and tracks humans and returns their position in the robot's frame of reference.

Resources

License

Stars

Watchers

Forks

Packages

No packages published